habe ich so nicht zum laufen bekommen, nutze jetzt „TTN MQTT Device (V3)“ was super funktioniert.
Bekomme aber solche Fehlermeldungen, in unregelmäßigen abständen:
31.07.2021, 14:59:41 | FlowHandler | Kann Daten nicht zur Instanz #35161 weiterleiten:
Notice: Undefined property: stdClass::$snr in C:\ProgramData\Symcon\modules\.store\firebuster.thethingsnetwork\TtnMqttDevice\module.php on line 175
RESULT:
Dank MQTT und TLS im Symcon geht es in der Tat damit recht gut. Ich denke auch, dass ich mich zukünftig eher damit arbeiten werde. Leider muss man aber scheinbar weiterhin für jede Application einen eigenen MQTT-Client angelegt werden.
Bei der Fehlermeldung scheint kein SNR in der Nachricht enthalten zu sein. Kann sein, dass die Nachricht von einem Broker übermittelt wird. Auf Github und im Store auf BETA liegt eine aktualisierte Modulversion.
Gerne kannst du mit den Payload auch mal mit
print_r(TTN_GetData(12345);
auslesen und mir schicken wenn das Problem weiterhin besteht.
Doch, mal war eine SNR vorhanden mal nicht, warum auch immer.
Habe jetzt das Update vom Modul gemacht.
Wenn es wieder auftritt, melde ich mich.
Vielen Dank.
Hein09
Hallo Zusammen,
ich habe mir einen LGT92 (GPS-Tracker) gekauft.
Diesen habe ich per MQTT angebunden. Läuft auch fast fehlerfrei.
Nur das TTN MQTT Device legt longitude und altitude als intgr an, sollte aber eher ein float sein.
intgr hat man dann nur zwei vorkomme stellen. bei GPS sind natürlich die Nachkomma stellen recht interessant.
Hat jemand eine Idee wie ich das ändern kann?
Ja die Variable wird automatisch erstellt. Leider sieht man in den JSON daten nicht ob es sich um einen integer oder eine gerade Zahl mit Nachkommastelle handelt.
In deinem Fall einfach den Tracker laufen lassen und wenn Symcon eine Integer-Variable anlegt einfach die Variable entfernen. Wenn die Zahl danach eine Nachkomma-Stelle hat wird die Variable neu als Float erstellt.
Falls jemand eine bessere Idee für die automatische Erstellung von Variablen hat darf sich gerne äußern
Sicher, dass deine Daten nicht ein Problem haben?
Es ist sehr unwahrscheinlich, dass deine GPS-Koordinaten 20mal hintereinander eine gerade Zahl ist.
Zu deiner Frage:
Man versucht Variablen immer in die passende Interpretation zu „zwingen“
Ein Lichtschalter kann nur an oder aus sein.
Die Anzahl von Personen in einem Raum sollte auch gerade sein usw… Dies verhindert im allgemeinen, dass es zu Fehlern kommt.
Außerdem verbrauchen die Variablen unterschiedlich viel Speicher.
Leider wird bei einem geraden Float-Wert die .0 hier im JSON nicht angehängt wodurch die Variable somit als Int interpretiert wird.
Ggf gehst du einfach mal im TTN in den Decoder und schriebst einen festen Wert mit Komma rein und nimmst ihn danach wieder raus.
Wenn gar nichts hilft kannst du auf der Instanz beim Empfang auch ein TTN_GetData() aufrufen und sich durch das JSON selbst kämpfen.
Du hast recht. Mein Device sendet schrott, das verstehe ich nicht.
Dann hast du natürlich recht, dann wäre das Easy die Variable zu löschen und neu zu machen.
Moin, Du hast recht. Ich habe heute mit einem Freund raus gefunden das der Docoder im TTN Mapper falsch ist und nicht funkioniert. Nun haben wir ihn zum laufen bekommen und bekommen auch großteils korrekte daten. Vermutlich hat das mit der Umstellung von v2 auf v3 zu tun.
Einige Daten (Pitch, Roll Altitude) fehlen noch. Evlt. finde ich ja irgendwann einen korrekten Decoder
Offtopic: Fettes Danke für dieses Modul!
Es läuft richtig gut und ich bin total begeistert. Aktuell komme ich auf 10 Geräte die bei mir aktiv sind und da liegt noch von voller Karton mit Fenster Sensoren
Kann ich in IPS einen „Ping“ an ein Gerät schicken, damit es sich mal wieder meldet?
Hier geht es speziell um Tür und Wassereinbruchsensoren.
Die melden sich mal einen ganzen Tag nicht und ab 24h inaktivität meldet mein Watchdog Batterie leer.
Daher wäre ein von der Sache ein Skript cool, was startet wenn die Varible „Zeitpunkt der letzten Meldung“ sich Zeit x nicht mehr aktuallsiert hat, dann sendet kurz einen Ping/payload was auch immer an das Gerät damit er sich kurz wieder meldet.
Das geht seitens LoRaWAN nicht, da ein Gerät ja im Class-A Betrieb nur dann empfangen kann nachdem es gesendet hat.
Du kannst den Watchdog (Variable: Status) aus meiner Instanz verwenden und auf die Entsprechende Zeit einstellen oder du programmierst deinen Node so um, dass er sich öfters meldet. (Geht ggf. über einen Downlink)
ich bin über Dein Modul gestolpert als ich nach MQTT und TTN gesucht habe, und im Grunde hat es sofort geklappt.
Ich frage mich aber, wie geht man vor wenn man mehrere Applikationen hat. Ich hatte das jetzt erst mal über den TTN Configurator mit einem Gerät gemacht, das funktioniert soweit auch. Nur wie bekomme ich da dann 5 Geräte rein, die alle unterschiedliche Applikationen sind?
Oder ist der Weg falsch, und ich sollte besser einen Webhook anlegen und TTN mein Symcon kontaktieren lassen? Das habe ich aber bisher nicht geschafft.
Nein bleibe bei MQTT. Das ist die Variante die am besten und einfachsten funktioniert.
HTTP ist hauptsächlich drin, weil Symcon früher kein MQTT via TLS unterstützt hat.
Ich habe HTTP halt trotzdem weiter gepflegt. (Aber man kann hier nur Daten empfangen und nicht senden!)
Leider ist es so, dass jede Application im „The Things Stack“ einen eigenen MQTT Client braucht
Sprich jede Application braucht
Client Socket
-MQTT Client
(TTN Configurator)
TTN MQTT Device (beliebig oft)
Man kann aber im Gegensatz zu TTN V3 immerhin alles in eine Application packen, was logisch zusammen gehört und muss nicht für jeden Gerätetyp eine eigene Application verwenden um unterschiedliche Payload-Decoder nutzen zu können.
Tipp:
Client-Socket, MQTT-Client und Konfigurator nach der Instanz benennen vereinfacht später die Suche enorm