[Modul] TheThingsNetwork

Das ist die Nachricht, die ich mit „Message“ vom Stack aus geschickt habe. Die dev_eui hab ich ein wenig „modifiziert“…

Sowohl Konfigurator als auch Device-Modul hab ich von Tenant-Referenzen „befreit“ - eventuell ist beim Device dabei etwas schiefgelaufen.

Viele Grüße

Dirk

09.11.2022, 11:47:35 |      MQTT:RX:PUBLISH | Topic: v3/dragino-test-application1/devices/temperature-converter-1/up, Payload: {"end_device_ids":{"device_id":"temperature-converter-1","application_ids":{"application_id":"dragino-test-application1"},"dev_eui":"A84041369182F46X","join_eui":"A000000000000101"},"correlation_ids":["as:up:01GHE017DDYMCXFQZTDJTBK7Z0","rpc:/ttn.lorawan.v3.AppAs/SimulateUplink:01GHE017D416V1NEJPG6AG0C6C"],"received_at":"2022-11-09T10:47:35.084221455Z","uplink_message":{"f_port":1,"frm_payload":"DO0CAgP+BWBz5pc=","decoded_payload":{"BatV":3.309,"Ext":2,"Systimestamp":1618208407,"Temp_Channel1":51.5,"Temp_Channel2":-50.7},"rx_metadata":[{"gateway_ids":{"gateway_id":"test"},"rssi":42,"channel_rssi":42,"snr":4.2}],"settings":{"data_rate":{"lora":{"bandwidth":125000,"spreading_factor":7}}}},"simulated":true}

Probiere mal die aktuelle Version auf Github.

Hier sollte es das Topic im leeren Zustand passen.

Leider hat’s nicht geklappt. Ich hab das Modul nicht über den Shop sondern über Github installiert, es kam folgende Fehlermeldung (sieht aus wie vorher…):

Konnte Konfigurationsform nicht laden
Notice: Undefined offset: 1 in /var/lib/symcon/modules/Symcon_TheThingsNetwork/TtnConfigutrator/module.php on line 140
{"elements":[],"actions":[{"type":"Configurator","name":"Configurator","caption":"TTN MQTT Devices","delete":false,"sort":{"column":"DeviceId","direction":"ascending"},"columns":[{"caption":"DeviceID","name":"DeviceId","width":"auto"},{"caption":"ApplicationID","name":"ApplicationId","width":"250px"},{"caption":"Tenant","name":"Tenant","width":"250px"},{"caption":"Instanz","name":"Instanz","width":"250px"}],"values":[{"DeviceId":"temperature-converter-1","ApplicationId":"dragino-test-application1","Tenant":null,"Instanz":"-","instanceID":0,"create":{"moduleID":"{FF6D63B4-E6C1-C76C-5CDD-626847F3B3FA}","location":["TTN","dragino-test-application1"],"name":"temperature-converter-1","configuration":{"Tenant":null,"ApplicationId":"dragino-test-application1","DeviceId":"temperature-converter-1"}}}]}]} (Code: -32603)

Am Konfigurator habe ich es noch nicht geändert. Das TTNMQTTDevice sollte aber jetzt laufen

habe es mir gerade noch mal angeschaut. Jetzt sollte auch der Konfigurator laufen :slight_smile:

Und wie :wink: Es funktioniert alles wie es soll. Der Konfigurator hat das Topic ermittelt, das Device läuft auch und stellt die Variablen korrekt dar. Danke für die Hilfe…

Hast du eigentlich mal daran gedacht, für die Devices eine Schnittstelle für einen Payload Formatter einzubauen? Wenn ich TTN richtig verstanden habe, sollte das eigentlich nicht auf dem TTN Stack laufen sondern eher am Endpunkt. Dann müsste man nur noch die meist vorhandenen Javascript-Formatter für Symcon verfügbar machen, das kann das MQTT-Device gar nicht für alle möglichen LoRa Devices regeln.

Viele Grüße

Dirk

Ein Sensor nach dem anderen wandert jetzt nach Symcon - nochmal danke für die tolle Hilfe.

Ich habe einen Sensor (Dry Contact) von Adeunis, bei dem bisher der Payload Formatter für TTN gefehlt hat. Der ist seit drei Tagen online, scheint auch ordentlich zu decodieren. Das automatisch erstellte MQTT-Device in Symcon übernimmt aber die Werte nicht. Ich hänge mal die Debug-Daten hier an, vielleicht kann jemand (!) helfen?

01.12.2022, 16:23:43 |        ReceiveData() | Payload: {"bytes":{"channelA":{"currentState":true,"previousFrameState":false,"value":1},"channelB":{"currentState":false,"previousFrameState":false,"value":0},"channelC":{"currentState":false,"previousFrameState":false,"value":0},"channelD":{"currentState":false,"previousFrameState":false,"value":0},"decodingInfo":"true: ON\/CLOSED, false: OFF\/OPEN","status":{"configurationDone":false,"frameCounter":3,"hardwareError":false,"lowBattery":false,"timestamp":true},"timestamp":"2022-12-01T17:08:02.000","type":"0x40 Dry Contacts 2 data"}}

und

01.12.2022, 16:23:43 |        ReceiveData() | Key: bytes Value: stdClass Object<LF>(<LF>    [channelA] => stdClass Object<LF>        (<LF>            [currentState] => 1<LF>            [previousFrameState] => <LF>            [value] => 1<LF>        )<LF><LF>    [channelB] => stdClass Object<LF>        (<LF>            [currentState] => <LF>            [previousFrameState] => <LF>            [value] => 0<LF>        )<LF><LF>    [channelC] => stdClass Object<LF>        (<LF>            [currentState] => <LF>            [previousFrameState] => <LF>            [value] => 0<LF>        )<LF><LF>    [channelD] => stdClass Object<LF>        (<LF>            [currentState] => <LF>            [previousFrameState] => <LF>            [value] => 0<LF>        )<LF><LF>    [decodingInfo] => true: ON/CLOSED, false: OFF/OPEN<LF>    [status] => stdClass Object<LF>        (<LF>            [configurationDone] => <LF>            [frameCounter] => 3<LF>            [hardwareError] => <LF>            [lowBattery] => <LF>            [timestamp] => 1<LF>        )<LF><LF>    [timestamp] => 2022-12-01T17:08:02.000<LF>    [type] => 0x40 Dry Contacts 2 data<LF>)<LF> Type: object

Viele Grüße

Dirk

Das Objekt hat mehrere Ebenen :frowning:
Das wird von dem Modul so nicht ausgelesen.
entweder schreibst du den Decoder so um, dass die Elemente im Array alle in der ersten Ebene sind oder holst dir die Daten mit einem Skript selbst aus dem Array raus:

<?php
$data = TTN_GetData(12345);
print(json_encode($data->uplink_message->decoded_payload));

Danke. Dabei hab ich dann rausgefunden, daß der Sensor auch noch unterschiedliche Typen von Arrays zurückgibt, je nachdem, ob er in „keepalive“ oder „data“-Modus ist. Naja, wird nur etwas komplizierter…

1 „Gefällt mir“

Hallo Zusammen

Habe derzeit ein Problem mit dem Auslesen von Lora per MQTT

Nutze folgende Geräte:

  • LPS8 V2 Indoor Multichannel LoRaWAN Gateway mit TTN und Node-Red Server
  • LWL02 LoRaWAN Wasserleck Sensor Node 868MHz
  • Natürlich Symcon mit der Firmware 7.0,24.10.2023 Revision ec6a478afeb9

Kann die Daten per TTN Network von der Cloud ziehen, das funktioniert super.

Wenn ich jedoch einen Lokalen Server im Dragino erstelle funktioniert die Aufschlüsselung der Daten nicht sauber. Ich erhalte einiges aber nicht den Wert des Alarmkontakts.

Wenn ich mit dem MQTT-Explorer prüfe erhalte ich diese sauber.

Vermute mache hier beim einrichten irgendwo einen Denkfehler.



Beim TTN Configurator erhalte ich folgenden Fehler:

Konnte Konfigurationsform nicht laden
Warning: Undefined array key 1 in C:\ProgramData\Symcon\modules\.store\firebuster.thethingsnetwork\TtnConfigutrator\module.php on line 138
{"elements":[],"actions":[{"type":"Configurator","name":"Configurator","caption":"TTN MQTT Devices","delete":false,"sort":{"column":"DeviceId","direction":"ascending"},"columns":[{"caption":"DeviceID","name":"DeviceId","width":"auto"},{"caption":"ApplicationID","name":"ApplicationId","width":"250px"},{"caption":"Tenant","name":"Tenant","width":"250px"},{"caption":"Instanz","name":"Instanz","width":"250px"}],"values":[{"DeviceId":"eui-a8404195f185c8f0","ApplicationId":"testf3","Tenant":null,"Instanz":"-","instanceID":0,"create":{"moduleID":"{FF6D63B4-E6C1-C76C-5CDD-626847F3B3FA}","location":["TTN","testf3"],"name":"eui-a8404195f185c8f0","configuration":{"Tenant":null,"ApplicationId":"testf3","DeviceId":"eui-a8404195f185c8f0"}}}]}]} (Code: -32603)

Hat hierbei jemand Erfahrung?

Besten Dank und Grüsse

euer Laxr7

Laut dem hier schon behoben:

Michael

Das Modul ist explizit für die Kommunikation mit TTN/TTS gebaut.
Ich gehe mal davon aus Dragino verwendet einfach eine andere Struktur im JSON.

1 „Gefällt mir“

@firebuster

Besten Dank für die Antwort.
Auf dem Dragino Gateway kann ich einen lokalen TTN Server erstellen. Gleich dem der Cloud.
Diesen kann ich auch per MQTT auslesen. Der einzige Unterschied hierbei besteht anstatt einer Externen Adresse ist es hier eine Lokale. Deshalb wundere ich mich dass dies dann nicht geht da der Aufbau der gleiche ist.

Wenn dies mit dem Modul nicht geht ok, aber ich erhalte mehrere Strings.
Wie kann ich diese aufschlüsseln? Im Anhang die Bilder

Freundliche Grüsse
Laxr7

In decodet_payload stehen die Daten eigentlich drin

Wenn das natürlich eine Lokale TTS-Instanz ist sieht das anders aus. Ich bin von irgendeinem gestrickten Stack von Dragino ausgegangen.

Theoretisch sollte das Modul auch damit funktionieren. Ggf mal in dem Debug schauen ob man darin die Probleme erkennt.

Moin,

habe versucht meinen TTN Gateway über die Instanz TTN Gateway v3 einzubinden.
Mir wird dann „Der API-Key wurde nicht gewunden“ angezeigt.
Wenn ich aich Aktualisieren klicke, bekomme ich diese Fehlermeldung.
image

Was mache ich falsch?

Grüße,
Oliver

1 „Gefällt mir“

Das ist ein Problem durch die Umstellung auf das neuere PHP.
@babba hat den Bug schon entdeckt :slightly_smiling_face:

Ich mache den Fix für den Module-Store fertig :wink:

1 „Gefällt mir“

Beta ist im Module-Store online und die Stable ist eingereicht.

2 „Gefällt mir“

TTN Gateway Abfrage mit der Beta funktioniert auf Anhieb. :slight_smile:
Danke

1 „Gefällt mir“

@firebuster

Seit dem letzten Update funktioniert es,

vielen Dank :pray: :pray: