GPS-Daten erscheinen nicht in der Karte

Ich habe ein Programm geschrieben für eine mobile SenseBox, in dem auch auch die GPS-Daten erfasst werden. In der Karte auf OpensenseMap erscheint aber immer ein Ort mitten im Südatlantik, nämlich mit den Koordinaten 0,0. Die korreckten Daten werden aber an die OpenSenseMap übertragen:

„location“: {
„latitude“: 49.48031023547186,
„longitude“: 8.481565209616596,
„altitude“: 100,
„source“: „SOURCE_REGISTRY“

Wie der obige Ausschnitt aus dem übertragenen Datensatz zeigt.
Was muss ich noch tun?

Hallo @altprog,

schau mal hier: https://docs.opensensemap.org/#api-Measurements-postNewMeasurements

Das Location Objekt muss so

{ "lat": 51.972, "lng": 7.684, "height": 66.6 }

oder so

[7.684, 51.972, 66.6]

aussehen. Es könnte also schon reichen die Felder umzubenennen.

Hallo @Felix

Danke für die schnelle Antwort. Aber ich kann damit noch nichts anfangen. Ich meine mich zu erinnern, dass das Ganze automatisch geht wenn die Box als mobil deklariert war. Heißt das jetzt, daas ich ein Feld „location“ definieren und die Messwerte speichern darin speichern muss?

Es kommt drauf an wie die Daten übermittelt werden. Bei LoRaWAN und Cayenne sollten Positionsdaten automatisch mit übertragen und von der openSenseMap ausgelesen werden. Ansonsten muss das Payload Objekt angepasst werden.

Nutzt Du LoRaWAN mit Cayenne oder irgendetwas anderes?

Hallo @Felix

ja ich benutze LoRaWAN mit Cayenne. Ich habe auch in Erinnerung, dass dann die Positionsdaten automatisch auf der Karte wiedergegeben werden. Es hat auch manchmal schon funktioniert, wenn man z.B. die 24 Stundendaten herunterlädt.
Zur besseren Verständniss hier nochmal der Datensatz der Übertragen wird;

„decoded_payload“: {
„analog_in_10“: 3.42,
„analog_in_6“: 2.7,
„analog_in_7“: 6.9,
„analog_in_8“: 37.22,
„barometric_pressure_3“: 992.5,
„luminosity_4“: 315,
„luminosity_5“: 11,
„luminosity_9“: 1524,
„relative_humidity_2“: 61,
„temperature_1“: 22.7
},
„rx_metadata“: [
{
„gateway_ids“: {
„gateway_id“: „eui-58a0cbfffe80271e“,
„eui“: „58A0CBFFFE80271E“
},
„time“: „2022-11-16T07:19:52.489289045Z“,
„timestamp“: 4063800411,
„rssi“: -42,
„channel_rssi“: -42,
„snr“: 7,
„location“: {
„latitude“: 49.48031023547186,
„longitude“: 8.481565209616596,
„altitude“: 100,
„source“: „SOURCE_REGISTRY“
},
„uplink_token“: „CiIKIAoUZXVpLTU4YTBjYmZmZmU4MDI3MWUSCFigy//+gCceENvY4pEPGgwImJ7SmwYQyZO9iwIg+IaF66LzAQ==“,
„received_at“: „2022-11-16T07:19:52.493105039Z“
},
{

Die Positionsdaten scheinen nicht von der senseBox selber zu kommen, sondern sind die Positionen der Gateways die die LoRa Pakete empfangen haben. Weitere Infos hier: Data Formats | The Things Stack for LoRaWAN

Du müsstest die GPS Daten noch in den Cayenne Payload hinzufügen, damit diese im decoded_payload Feld auftauchen.

Hallo @Felix ,

ok. Ich werde ein GPS-Feld noch einfügen. Blos dann kommt das nächste Problem: in meinem Hinterkopf hält sich eine Warnung, dass wenn man die Datenstruktur in OpenSenseMap ändert, dann das Ganze nicht mehr gilt. Oder geht es dass, wenn ich ein Feld hinzufäge noch die ganzen anderen ID’s und APS-Key’s bestehen bleiben?

Auf der openSenseMap musst du nichts mehr hinzufügen. Ich meinte, dass du z.B. in Blockly noch die GPS Daten mitschicken musst.

Wenn die GPS Position im Cayenne Payload auftaucht wird die Position der Box auf der openSenseMap automatisch aktualisiert. In den LoRaWAN Einstellungen auf der openSenseMap muss nichts bearbeitet werden.

Hallo @Felix

Heureka, es funktioniert- Nur stimmt die Position nicht genau mit der tatsächlichen überein. Er verortet mich in der Südpfalz statt in Mannheim.
Ob das mit dem Variablentyp zu tun hat? Im Moment ist der Datentyp long für die GPS-Koordinaten.

Hi @Felix

Ich habe die Ursache gefunden. Die GPS-Daten werden nur als Ganzahl übermittelt. Warum muss ich noch herausfinden.