Latitude- / longitude-Daten in TTN payload aber nicht in Grafana

Gerade teste ich den SenseCAP T1000-A einen kreditkartengroßen (aber etwas dickeren) GPS-Tracker, der z.B. so konfiguriert werden kann, dass bei Bewegung die aktuelle GPS-Position des Trackers per TTN verschickt wird.

Auf der Kotori-Konsole kommen die Daten auch schön an, z.B.:

hiveeyes/testdrive/test-tracker/eui-xxxxxxxxxxxxxxxx/data.json 
{
  "uplink_message": {
    "decoded_payload": {
      "battery": 77, 
      "eventStatus": 128, 
      "latitude": 52.123456, 
      "light": 100, 
      "longitude": 13.654321, 
      "motionCount": 0, 
      "packet": "GNSS Location & Sensor Data", 
      "temperature": 24.6, 
      "utcTime": "6-Jul-2024 10:22:25"
    }
  }
}

Allerdings sehe ich die latitude und longitude nicht in Grafana:

2024-07-06 12_29_32-Greenshot

Falls wir die Geodaten irgendwie doch angezeigt bekommen, wäre die zweite Frage mit welchem Plugin man zeitbasierte geolocation pathes in Grafana anzeigen kann. Wir haben auf swarm das Map Panel und das Worldmap Panel installiert. Wetter / @wtf hast du schon mal mit Bewegungspfaden in Grafana experimentiert und kannst was empfehlen?

1 Like

Hi Clemens,

Kotori auf elbanco ist schon ziemlich alt.

(kotori) workbench@elbanco:~$ kotori --version
Kotori version 0.26.11

Die Version 0.26.11 wurde im Juli 2021 veröffentlicht, seitdem hat sich einiges geändert. Die Version 0.27.0, immerhin schon vom November 2022, enthält zum Beispiel:

Auf eltiempo haben wir diese Version bereits installiert. Vielleicht versuchst Du es dort einmal? weather.hiveeyes.org ist der Rufname.

kotori@eltiempo:~$ kotori --version
Kotori version 0.27.0

Viele Grüße,
Andreas.

1 Like

Im Grafana weiß ichs nicht, aber diese Projekte tummeln sich im gleichen Umfeld.

Data

Map

Aktuell verwende ich z.B.

https://swarm.hiveeyes.org
/api/hiveeyes/testdrive/tracker/ambrosius/data

Damit kommen die Daten bei swarm an (gerade ohne location), Wtee sagt z.B.:

hiveeyes/testdrive/tracker/hieronymus/data.json {"uplink_message": {"decoded_payload": {"battery": 88, "packet": "Positing status", "utcTime": "8-Jul-2024 12:03:35"}}}hiveeyes/testdrive/tracker/ambrosius/data.json {"uplink_message": {"decoded_payload": {"battery": 73, "packet": "Positing status", "utcTime": "8-Jul-2024 12:03:38"}}}

Wtee gibt es nur für swarm, oder? D.h. ob bei weather was ankommt muss ich in grafana checken?

Ich habe jetzt versucht

https://weather.hiveeyes.org
/api/hiveeyes/testdrive/tracker/ambrosius/data

oder auch

https://weather.hiveeyes.org
/api/umwelt/testdrive/tracker/ambrosius/data

scheint aber nix anzukommen.

Kann weather überhautpt die verschachtelten json’s mit uplink_messagedecoded_payload annehmen oder kann das nur swarm? Oder ist bei meiner Adressierung was falsch?

[edit] Woanders habe ich mir in Zusammenhang mit dem PAX-Counter mal notiert:

geht TTN auch schon auf climart.hiveeyes.org – nein!

Da climart nur ein weiterer Alias für weather ist, geht das vermutlich dann nicht, oder?!

Ja, aber benutze doch einfach MQTT direkt?

mosquitto_sub -h weather.hiveeyes.org -t '#' -v

Interessant. Ja, das ist die Frage, wo dort wie etwas eingerichtet ist, was eine erfolgreiche Datenvermittlung u.U. noch verhindern könnte. Da müssen wir mal unter die Haube schauen…


Bist Du bei der Adressierung dieser Anleitung gefolgt?

Ja, zu swarm kann ich auch erfolgreich schicken, das funktioniert! Nun ist die Frage, was bei weather anders sein muss, bzw. ob weather überhaupt Datenpakete verarbeitet wie:

Das sollte laut Doku aber gehen, oder?

Vielleicht verstehe ich auch gerade nicht die Datenbankstruktur?

https://weather.hiveeyes.org
/api/umwelt/testdrive/tracker/ambrosius/data

… müsste doch eigentlich hier landen, oder?

2024-07-08 16_26_36-Greenshot

@Thias hat mich auf das Grafana “Geomap”-Panel hingewiesen, bei dem das Route-feature aktuell erst beta / public preview ist.

Nun habe ich noch einen Tipp bekommen, Danke! Zu einer weiteren Option: Calculate travel-distance from GPS-track with fluxlang - The workbench - Panodata Community

Hier wird dieses plugin verwendet:

Jetzt, wenn man auf weather schickt:

mosquitto_sub -h weather.hiveeyes.org -t '#' -v
umwelt/testdrive/sensecap-s210x/quitti-crown/data.json {"uplink_message": {"decoded_payload": {"air-humidity": 67.36, "air-temperature": 21.44, "err": 0, "valid": true}}}
umwelt/testdrive/sensecap-s210x/quitti-crown/error.json {
    "type": "<class 'influxdb.exceptions.InfluxDBClientError'>",
    "message": "400: {\"error\":\"unable to parse 'sensecap_s210x_quitti_crown_sensors uplink_message={'decoded_payload': {'air-humidity': 67.36, 'air-temperature': 21.44, 'err': 0, 'valid': True}}': invalid boolean\"}",
    "description": "Error processing MQTT message \"b'{\"uplink_message\": {\"decoded_payload\": {\"air-humidity\": 67.36, \"air-temperature\": 21.44, \"err\": 0, \"valid\": true}}}'\" from topic \"umwelt/testdrive/sensecap-s210x/quitti-crown/data.json\".",
    "timestamp": "2024-07-17T21:12:27+00:00"
}
2024-07-17T23:07:23.621027 [kotori.daq.services.mig            ] ERROR   : Processing MQTT message failed from topic "umwelt/testdrive/sensecap-s210x/quitti-crown/data.json":
	[Failure instance: Traceback: <class 'influxdb.exceptions.InfluxDBClientError'>: 400: {"error":"unable to parse 'sensecap_s210x_quitti_crown_sensors uplink_message={'decoded_payload': {'battery': 100, 'err': 0, 'hardwareVersion': '1.2', 'interval': 1800, 'sensorId': '2CF7F13053100025', 'softwareVersion': '2.2', 'valid': True}}': invalid boolean"}
	/usr/lib/python3.9/threading.py:954:_bootstrap_inner
	/usr/lib/python3.9/threading.py:892:run
	/opt/kotori/lib/python3.9/site-packages/twisted/_threads/_threadworker.py:46:work
	/opt/kotori/lib/python3.9/site-packages/twisted/_threads/_team.py:190:doWork
	--- <exception caught here> ---
	/opt/kotori/lib/python3.9/site-packages/twisted/python/threadpool.py:250:inContext
	/opt/kotori/lib/python3.9/site-packages/twisted/python/threadpool.py:266:<lambda>
	/opt/kotori/lib/python3.9/site-packages/twisted/python/context.py:122:callWithContext
	/opt/kotori/lib/python3.9/site-packages/twisted/python/context.py:85:callWithContext
	/opt/kotori/lib/python3.9/site-packages/kotori/daq/services/mig.py:177:process_message
	/opt/kotori/lib/python3.9/site-packages/kotori/daq/services/mig.py:278:emit_message
	/opt/kotori/lib/python3.9/site-packages/kotori/daq/services/mig.py:313:store_message
	/opt/kotori/lib/python3.9/site-packages/kotori/daq/storage/influx.py:82:write
	/opt/kotori/lib/python3.9/site-packages/kotori/daq/storage/influx.py:113:write_chunk
	/opt/kotori/lib/python3.9/site-packages/influxdb/client.py:603:write_points
	/opt/kotori/lib/python3.9/site-packages/influxdb/client.py:681:_write_points
	/opt/kotori/lib/python3.9/site-packages/influxdb/client.py:413:write
	/opt/kotori/lib/python3.9/site-packages/influxdb/client.py:378:request
	]

Wir haben nun die Änderungen von [TTN] extract metadata from full TTN payload by thiasB · Pull Request #134 · daq-tools/kotori · GitHub auch auf "eltiempo" in den Kotori reingepatcht, irgendwie halt mit Code in drei Dateien, hemdsärmlig wie früher, mit SSH und Editor, jedoch ohne FTP. Scheint zu gehen.

Nachrichten können nun direkt von TTN empfangen und verarbeitet werden, auch auf https://weather.hiveeyes.org/. Doku ist bei The Things Stack & Network (TTS, TTN) - Kotori DAQ.

mosquitto_sub -h weather.hiveeyes.org -t 'umwelt/testdrive/#' -v
umwelt/testdrive/sensecap-s210x/quitti-crown/data.json {"uplink_message": {"decoded_payload": {"air-humidity": 67.01, "air-temperature": 21.71, "err": 0, "valid": true}}}
1 Like

Sehr cool! Danke für die nächtliche session, @Andreas! [edit] Und latitude / longitude kommen nun auch als Variablen an – gerade nochmal gecheckt! – die auf swarm noch zu tags umgewandelt werden, super!

1 Like