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:
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:
Breaking changes
Stop converging latitude
and longitude
ingress fields to tags. It has been implemented as a convenience case when processing LDI data, but it is not applicable in standard data acquisition scenarios, specifically when recording positions of moving objects. Thanks, @tonkenfo .
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_message
→ decoded_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
clemens:
Scheint aber nix anzukommen.
Kann weather
überhautpt die verschachtelten json’s mit uplink_message
→ decoded_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?!
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?
About: Receive and decode telemetry data from devices on the LoRaWAN network controller implementation The Things Stack (TTS)/ The Things Network (TTN), using HTTP webhooks, and store it into times...
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:
clemens:
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"
}
}
}
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?
clemens:
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?
@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