Archiv der Kategorie: Sonstiges

Was ist ein IoT-Gateway

Ein IoT-Gateway ist ein Bauteil, dass zur Anbindung von Maschinen oder Gräten an das Internet der Dinge (IoT) geeignet ist und nicht-smarte Geräte überwachen und steuern kann.

Ein IoT-Gateway dient als Schnittstelle zwischen einem nicht-smarten Geräten und dem IoT-Netzwerk. Es ermöglicht die Erfassung und Übertragung von Daten dieser Geräte an die IoT-Plattform, ohne dass die Geräte selbst smart sein müssen.

Sie bieten meist eins oder mehrere der folgende Merkmale:

1. Konnektivität:
Das Bauteil kann verschiedene Konnektivitätsoptionen bieten um eine Verbindung zu den nicht-smarten Geräten herzustellen. Dazu gehören drahtlose Technologien wie Wi-Fi, Bluetooth, Zigbee, Z-Wave oder sogar kabelgebundene Schnittstellen wie Ethernet.

2. Datenprotokolle und -formatierung:
Das Bauteil sollte in der Lage sein, Daten von den nicht-smarten Geräten zu erfassen und in das geeignete Format für die Übertragung an die IoT-Plattform zu konvertieren. Dies kann bedeuten, dass Protokolle wie MQTT, CoAP oder REST verwendet werden, um die Daten zu übertragen.

3. Datenaufbereitung und Verarbeitung:
Das Bauteil kann grundlegende Aufgaben der Datenaufbereitung und Verarbeitung übernehmen, um die Daten vor der Übertragung zu filtern, aggregieren oder zu transformieren. Dies ermöglicht eine effiziente Nutzung des Netzwerks und reduziert die Datenübertragungsmenge.

4. Sicherheit:
Ein IoT-Gateway sollte Sicherheitsmechanismen implementieren, um die Kommunikation und die übertragenen Daten zu schützen. Dies kann die Verwendung von Verschlüsselung, Authentifizierung und Autorisierung umfassen, um sicherzustellen, dass nur autorisierte Geräte auf das Gateway zugreifen können und dass die Daten während der Übertragung geschützt sind.

5. Skalierbarkeit und Flexibilität:
Das Bauteil sollte skalierbar sein, um eine größere Anzahl von nicht-smarten Geräten zu unterstützen. Es sollte auch flexibel genug sein, um mit verschiedenen Arten von Geräten und Kommunikationsprotokollen zu arbeiten.

6. Cloud-Konnektivität:
Das Gateway sollte in der Lage sein, eine Verbindung zur IoT-Cloud-Plattform herzustellen, um die erfassten Daten an die Plattform zu senden. Dadurch können die Daten analysiert, visualisiert und weiterverarbeitet werden.

7. Lokale Verarbeitung:
Einige IoT-Gateways können auch über eingebettete Rechenleistung verfügen, um eine lokale Verarbeitung und Analyse der Daten zu ermöglichen. Dadurch können bestimmte Aufgaben direkt am Gateway ausgeführt werden, ohne dass alle Daten an die Cloud gesendet werden müssen.

Diese Merkmale können je nach den spezifischen Anforderungen und Anwendungsfällen variieren.

Wir bieten ein flexiebles IoT-Gateway dessen Firmware je nach Kundenanforderung angepasst werden kann.

Ee besitzt bis zu drei 24V Eingänge und einen Highside Schaltausgang. Weiterhin verfügt es über einen FRAM-Speicher (ferroelektrischer RAM). Diesr ermöglicht es dem Gerät, wichtige Informationen wie Zählerwerte oder Stückzahlen zu erfassen und zu speichern und selbst nach einem Stromausfall diese gespeicherten Daten zu behalten.

Darüber hinaus ist das Gerät in der Lage, die gespeicherten Daten oder Informationen per Messenger-Dienst zu versenden. Dies ermöglicht es, die erfassten Daten an andere Geräte oder an Benutzer zu übertragen, die über den Messenger-Dienst verbunden sind. Dadurch können wichtige Informationen schnell und effizient an einen bestimten Personenkreis übermittelt werden.

Um eine genaue Zeitreferenz für die Datenerfassung und die Kommunikation sicherzustellen, ist das Gerät mit einem NTP-Client (Network Time Protocol) ausgestattet. NTP ist ein Protokoll, das die Synchronisierung der Uhren in einem Computernetzwerk ermöglicht. Durch den NTP-Client kann das Gerät die genaue Zeitinformation von einem NTP-Server abrufen und diese zur Zeitsynchronisation verwenden. Dies gewährleistet die Konsistenz und Genauigkeit der Zeitstempel für die erfassten Daten.

Das IoT-Gateway verfügt zudem über eine WLAN-Anbindung, die ihm ermöglicht, drahtlos mit einem Netzwerk zu kommunizieren. Die WLAN-Verbindung erlaubt eine flexible Installation des Gateways, da es nicht an eine physische Verbindung wie Ethernet gebunden ist. Es kann drahtlos mit dem Internet und anderen Geräten innerhalb des WLAN-Netzwerks kommunizieren, was die Konnektivität und Integration erleichtert.

Die Kombination aus FRAM-Speicher, Messenger-Dienst, NTP-Client und WLAN-Anbindung erweitert die Funktionalität des IoT-Gateways. Es ermöglicht das zuverlässige Speichern von Daten, die Kommunikation über Messenger-Dienste, die präzise Zeitsynchronisation und die drahtlose Verbindung zu Netzwerken. Diese Eigenschaften tragen zur Leistungsfähigkeit des Gateways bei und eröffnen weitere Möglichkeiten für die Anwendung in verschiedenen IoT-Szenarien.

Hier finden Sie eine Auswahl der verfügbaren Produkte zu diesem Thema:

IOT-Gatway MessageBot

KR1204 12v RF 4-Kanal 433Mhz Funkfernbedienung und Schalter Modul

Technisch Daten:

  1. Arbeitsspannung: DC12V
  2. Ruhestrom: 5mA
  3. Arbeitsfrequenz: 433 MHz / 315 MHz
  4. Empfangsempfindlichkeit: -104 dBm
  5. Funktionsoption: Momentary / Toggle / Latching
  6. Modulationsmodus: ASK
  7. Matching-Modus: Intelligenter Lerncode
  8. Ausgangsmodus: potentialfreier Kontakt / Spannungsausgang
  9. Shell: Ja
  10. Arbeitstemperatur: -30 ~ + 80
  11. Leiterplattenabmessung: 68,2 x 48,2 (mm)

Programmietung der Betriebsmodi und Anlernen von Fernbedienungen:

An das KR2014 Modul können mehrere Fernbedienungen angelernt werden. Wichtig: Die Fernbedienung muss vor dem Anlernen frei von Code sein. Ein Überschreiben mit anderen Modi funktioniert nicht. Leider können meines Wissens nur alle Fernbedienungen gemeinsam gemäß Punkt 8 (s. u.) gelöscht werden.

Das Anlernen einer neuen Fernbedienung geschieht über den Programmiertaster (Learn Key) auf dem Empfängermodul. Eine Rückmeldung des aktuellen Status erfolgt über eine kleine LED im Empfängermodul.
Soll eine neue Fernbedienung angelernt werden, wird über die Anzahl der Tastendrücke auf den Programmiertaster (Learn Key) festgelegt, welcher Betriebsmodus für die Fernbedienung verwendet werden soll.
Drückt man z.B. einmal auf den Programmiertaster, wählt man den Taster-/Puls-Betrieb für diese Fernbedienung aus. (Mehrmaliges Drücken würde die entsprechenden Modi gemäß der unten aufgeführten Nummerierungen 1 bis 7 einleiten.)
Nach Drücken des Programmiertasters leuchtet die LED heller und ist bereit, eine neue Fernbedienung aufzunehmen. Nun kann eine beliebige Taste der Fernbedienung kurz gedrückt werden. Die Übernahme wird anschließend durch dreimaliges Blinken der LED im Empfängermodul angezeigt. Danach leuchtet die LED im Empfängermodul wieder schwächer.

  1. Taster-/Puls-Modus: Drücken Sie die Lerntaste auf der Empfängerplatine einmal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal. Der Empfänger zeigt an, dass der Pulsmodus erfolgreich gekoppelt wurde.

  2. Umschalt-/Toggle-Modus: Drücken Sie die Lerntaste auf der Empfängerplatine zweimal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal, und der Receiver zeigt an, dass der Toggle-Modus erfolgreich gekoppelt wurde.

  3. Verriegelungsmodus: Drücken Sie die Lerntaste auf der Empfängerplatine dreimal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann die erste Fernbedienungstaste. Die LED-Anzeige blinkt dreimal am Empfänger Verriegelungsmodus erfolgreich gekoppelt (Einschalten mit der ersten Taste, Ausschalten mit der zweiten Taste). Nachteil: Mit dieser Fernbedienung können nicht alle Relais ausgeschaltet werden. Es bleibt immer das letzte eingeschaltet.

  4. 2CH kurzzeitig + 2CH Umschalten: Drücken Sie die Lerntaste auf der Empfängerplatine viermal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich verbunden ist.

  5. 2CH Momentary + 2CH Latching: Drücken Sie die Lerntaste auf der Empfängerplatine fünfmal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich verbunden ist.

  6. 2CH Toggle + 2CH Latching: Drücken Sie die Lerntaste auf der Empfängerplatine sechsmal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich verbunden ist.

  7. 2-Kanal-Verriegelung + 2-Kanal-Verriegelung: Drücken Sie die Lerntaste auf der Empfängerplatine sieben Mal (die LED-Anzeige auf der Empfängerplatine blinkt). Drücken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich ist.

  8. Löschen vorhandener Daten auf den Fernbedienungen: Drücken Sie die Lerntaste auf der Empfängerplatine achtmal. Die LED-Anzeige auf der Empfängerplatine blinkt achtmal. Die vorhandenen Daten auf den Fernbedienungen werden erfolgreich gelöscht.

+ V – Pluspol-Eingang

GND – Negativer Poleingang

1 – KC1 Normal Relais geschlossen
2 – KC1 Relaisrelais
3 – KC1 Normales Öffnen des Relais

4 – KC3 Normal Relais geschlossen
5 – KC3 Relaisrelais
6 – KC3 Normales Öffnen des Relais

7 – KC2 Normal Relais geschlossen
8 – KC2 Relais gemeinsam
9 – KC2 Normales Öffnen des Relais

10 – KC4 Normal Relais geschlossen
11 – KC4 Relais allgemein
12 – KC4 Normales Öffnen des Relais

WARNUNG
Schalten Sie vor der Installation die Stromversorgung ab und überprüfen Sie die Spannungsfreiheit!

ANMERKUNGEN
Wechseln Sie die Batterie unverzüglich, wenn Reichweite stark abnimmt.

 

Mathe signifikante Stellen wie gehts …

Die erste signifikante Stelle einer Zahl ist die erste Zahl ungleich 0.

Wenn wir davon ausgehen, dass jede Zahl mit führenden und nachfolgenden Nullen geschrieben werden kann, wie hier in diesem Beispiel zu sehen ist,

…..000000000000000009732,34555000000000000000….

ist die erste Zahl, die NICHT Null ist, also die „9“ die ERSTE Signifikante Ziffer.

Danach wird einfach gezählt:
9732,345550000000000 ….
123456789 daraus folgt, neun signifikante Stellen!

So lautet die Zahl auf drei signifikante Stellen gerundet nun

9730

Würde zum Beispiel die Folgende Zahl da steht: 2100004, dann wären die ersten drei signifikanten Ziffern: 210.

Es werden also wie im Beispiel nur die ersten drei Stellen, die nicht Null sind abzählen und auf die n-te Stelle gerundet.

NMEA nach Dezimalgrad umrechenen und als KML-Datei für Google Earth zusammenbauen

Um die Daten eines GPS Empfängers z.B. in Google Earth anzuzeigen benötigt Google Earth die Daten als XML Datei. Die Dateiendung dieser XML Datei lautet „.KML “

In Folgenden finden Sie ein Beispiel für den Aufbau einer solchen Datei mit einer Track (Wegeanzeige), hierbei wird eine Textur 10 Meter über den Weg nach oben gezogen, um einen besseren Überblick zu erhalten:

<?xml version="1.0" encoding="UTF-8"?>
  <kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <name>KmlFile</name>
    <Style id="transPurpleLineGreenPoly">
    <LineStyle>
    <color>7fff00ff</color>
       <width>4</width>
       </LineStyle>
       <PolyStyle>
         <color>7f00ff00</color>
       </PolyStyle>
    </Style>
    <Placemark>
       <name>Absolute</name>
       <visibility>1</visibility>
       <description>Dillinger-Engineering</description>
       <styleUrl>#transPurpleLineGreenPoly</styleUrl>
       <LineString>
          <tessellate>1</tessellate>
          <altitudeMode>relativeToGround</altitudeMode>
          <coordinates>
            10.8665686666667,49.4601001666667,10
            10.8665698333333,49.4601003333333,10
            10.8665793333333,49.4601003333333,10
            10.8665775,49.4601003333333,10
            10.866586,49.460101,10 
            10.8665888333333,49.4601011666667,10
            10.8665971666667,49.4601015,10 
            10.8665971666667,49.4601015,10
         </coordinates>
       </LineString>
    </Placemark>
  </Document>
</kml>

Von einem GPS Empfänger werden die Daten meist im NMEA Format übertragen. Für eine reine Positionsbestimmung genügt der Daten String „Recommended Minimum Sentence C“ (RMC)
Jeder GNSS-Empfänger muss mindestens den Recommended Minimum Sentence C (empfohlener Mindestdatensatz C, RMC) Datensatz ausgeben können, maximal alle zwei Sekunden.
Er folgt folgendem Aufbau:
Seit NMEA In 2.3, wurden folgende Sätze um ein Feld erweitert (APB, BWC, BWR, GLL, RMA, RMB, RMC, VTG, WCV und XTE) das die Signalintegritätsinformation laut FAA darstellt. („F“ in untenstehender Tabelle)

$GPRMC,162614,A,5230.5900,N,01322.3900,E,10.0,90.0,131006,1.2,E,A*13
$GPRMC,HHMMSS,A,BBBB.BBBB,b,LLLLL.LLLL,l,GG.G,RR.R,DDMMYY,M.M,m,F*PP

Symbol
Bedeutung
HHMMSS
oder
HHMMSS.SSS
Zeit (UTC)
A Status (A für OK, V bei Warnungen)
BBBB.BBBB Breitengrad
b Ausrichtung (N für North, nördlich; S für South, südlich)
LLLLL.LLLL L ängengrad
l Ausrichtung (E für East, östlich; W für West, westlich)
GG.G Geschwindigkeit über Grund in Knoten
RR.R Kurs über Grund in Grad bezogen auf geogr. Nord
DDMMYY Datum (Tag Monat Jahr)
M.M magnetische Abweichung (Ortsmissweisung)
m Vorzeichen der Abweichung (E oder W)
F Signalintegrität :
A = Autonomous mode,
D = Differential Mode,
E = Estimated (dead-reckoning) mode
M = Manual Input Mode
S = Simulated Mode
N = Data Not Valid
PP Hexadezimale Darstellung der Prüfsumme
(Die Prüfsumme ergibt sich durch eine XOR-Verknüpfung aller Daten-Bytes zwischen (jeweils exklusive) dem Dollar-Zeichen ‚$‘ und dem Stern ‚*‘.)

Um aus den selektierten Lat und Lon Daten den Dezimalgrad zu extrahieren kann folgende Pascal Funktion verwendet werden.

function GMSToDC(Str, Direction : String): String;
{Convert NMEA latitude & longitude to decimal
Here's how you convert latitude & longitude obtained from NMEA's GPGGA to decimal:
N              NMEA             Decimal
latitude       0302.78469    03 + (02.78469/60) = 3.046412
longitude     10141.82531    101 + 41.82531/60) = 101.6971
Notice that for latitude of 0302.78469,
03 ==> degress. counted as is
02.78469 ==> minutes. divide by 60 before adding to degrees above
Hence, the decimal equivalent is:
03 + (02.78469/60) = 3.046412 }
Var Grad, MinSec , DC: Extended;
begin
   if Length(Str)=10 then //BBBB.BBBBB     Breitengrad
   Begin 
      Grad:= StrToInt(Copy(Str,1,2));
      delete(Str,1,2);
   end
   else                 // LLLLL.LLLLL     Längengrad
   Begin
      Grad:= StrToInt(Copy(Str,1,3));
      delete(Str,1,3);
   end;
   while Pos('.', Str) > 0 do      // Ersetze den Punkt durch ein komma
   Str[Pos('.', Str)] := ',';
   MinSec:= StrToFloat(Str)/60;
   DC:= Grad + MinSec;
   if (Direction='S') or (Direction='W') then
      DC := -DC;
   Result:= FloatToStr(DC);
   while Pos(',', Result) > 0 do
   Result[Pos(',', Result)] := '.';
end;

  Das Zusammenbauen der KML-Datei erfolgt hier:

Procedure NMEAToKML(VarStringList:TStringList;Name:String;NMEAArray:array of TNMEA);
Var I    : Integer;
Begin
  StringList.Add(''+#13#10+'<kml xmlns="http://www.opengis.net /kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2"xmlns:atom="http://www.w3.org/2005/Atom">'+#13#10+
  '<Document><name>'+Name+'</name>'+#13#10+
  '<Style id="sn_ylw-pushpin">'+#13#10+
  '<IconStyle><scale>1.1</scale><Icon>'+#13#10+ 
  '<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png'+#13#10+
  '<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>'+#13#10+
   '<LineStyle><color>7f0000ff</color><width>5</width>  </LineStyle>'+#13#10+
  '<PolyStyle><color>7f0000ff</color></PolyStyle></Style>'+#13#10+
  '<StyleMap id="msn_ylw-pushpin"><Pair><key>normal</key>  <styleUrl>#sn_ylw-pushpin</styleUrl></Pair>'+#13#10+
  '<Pair><key>highlight</key><styleUrl>#sh_ylw-pushpin</styleUrl></Pair></StyleMap>'+#13#10+
  '<Placemark><name>'+FStopWatch.VeranstaltungsInfo+'#msn_ylw-pushpin1'+#13#10+
  '<tessellate>1</tessellate><altitudeMode>relativeToGround</altitudeMode><coordinates>');
  For I:= Low(NMEAArray) to High(NMEAArray) do
  StringList.Add(GMSToDC(NMEAArray[I].Lon, NMEAArray[I].NS)+ ',' +
  GMSToDC(NMEAArray[I].Lat, NMEAArray[I].EW) + ',10');
  StringList.Add(''+#13#10+
  '</LineString>'+#13#10+
  '</Placemark>'+#13#10+
  '</Document>'+#13#10+
  '</kml>');
end;