[Modul] TheThingsNetwork

1. Voraussetzungen

[ul]
[li]IP-Symcon ab Version 5.0
[/li][li]Account bei thethingsnetwork.org/
[/li][/ul]

2. Installation

[ul]
[li]Module Control:
[/li][/ul]

https://github.com/timo-u/Symcon_TheThingsNetwork

Hier gibt es immer die neusten Updates und Bugfixes.

[ul]
[li]Module Store: „The Things Network“
[/li][/ul]
Da die Module im Module-Store von Symcon geprüft werden, kann es sein, dass im Store nicht immer die neuste Version verfügbar ist.

3. Dokumentation
Github Dokumentation

4. Versionen

[ul]
[li]1.0 Erste öffentliche Version
[/li][li]1.1 Object Device hinzugefügt um direkt mit Objekten arbeiten zu können.
[/li][li]1.2 Vereinfachte inbetriebnahme
[/li][li]1.3 Downlink implementiert
[/li][/ul]

5. Feedback
Ich bin über jede Form von Feedback zu dem Modul dankbar.

[ul]
[li]welche Instanzen werden genutzt
[/li][li]welche Funktionen sind noch wünschenswert
[/li][li]was funktioniert nicht
[/li][/ul]

1 „Gefällt mir“

Hallo Firebuster,

in welchen Thema soll man denn jetzt eigentlich Fragen zu Deinen Modul stellen, in diesen oder hier Thema „LORAWAN / The Things Network TTN“ ?

Ich stelle die Frage diesmal hier, wenn nicht richtig bitte verschieben.

Ich habe gerade meine Sensoren und Gateway zum Stack V3 verschoben.

Und möchte jetzt wie in der Anleitung beschrieben, folgendes ausführen:

In der Application kann man unter „Integrations“ und „Add Integration“ eine „HTTP Integration“ hinzufügen.

Finde aber nicht mehr die „HTTP Integration“, wo finde ich das jetzt?

Wäre auch toll, wenn Du Deine Anleitung für das Stack V3 anpassen würdest?

Hein09

So eine Doku hängt immer etwas hinterher :see_no_evil:
Leider hatte ich die Doku gerade so schön angepasst und dann wurde der Stack auf V3 gezogen.

Bei V3 ist der Ablauf jedoch der gleiche wie bei V2.
In der TTN-Console auf die Application => Integrations => Webhooks

Dann musst du folgende Felder befüllen:

Achtung! Der Downlink funktioniert aktuell NICHT mit der HTTP Integration sondern nur mit MQTT

1 „Gefällt mir“

Moin @firebuster ,

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:

Muss ich noch was einstellen?

Hein09

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?

Löschen und neu anlegen geht schon mal nicht.

danke

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 :slight_smile:

HI, das habe ich sogar schon 20 mal versucht. Hat leider nur bei latitude geklappt.
Die anderen kommen immer als Intgr wieder :frowning:

Ich bin kein Programmierer, aber warum macht man nicht alle auf Float? da kann man ja notfalls auch ohne nach komme was mit machen :slight_smile:

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 :sweat_smile: 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.

Moin,

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.

Da geht jetzt wohl das Große suchen los :frowning:

  "frm_payload": "AyhSMCa2Q=",
  "decoded_payload": {
    "ALARM_status": "FALSE",
    "BatV": 2.923,
    "FW": 164,
    "LON": "ON",
    "MD": "Disable",
    "Pitch": 0,
    "Roll": 0,
    "altitude": 0,
    "hdop": null,
    "latitude": 52.974116,
    "longitude": 0
  },
1 „Gefällt mir“

Immerhin bin ich etwas beruhigt :slightly_smiling_face:
Schau dir mal deinen Payload-Decoder an.
Ggf hast du auch einfach eine falsche Version davon.

1 „Gefällt mir“

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 :slight_smile:

danke Dir

Es gibt dafür glaube ich auch einen Übersetzer :thinking:

Ich nutze meistens das Cayenne LPP Protokoll. Dann geht es out of the Box :blush:

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 :slight_smile:

1 „Gefällt mir“

Eine kurze Frage in die Runde.

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.

danke.

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)

Scheint geklappt zu haben. Die ersten die ich damit „versorgt“ habe, haben sich nach 12 Stunden wieder gemeldet.

Dieser Post eben zur Vollständigkeit, falls jemand anders mit liest :wink:

1 „Gefällt mir“

Hallo @firebuster,

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.

Grüße aus Südhessen, Jochen

Hallo Jochen,

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 :wink:

1 „Gefällt mir“