NEWS
PAJ GPS mit Node-Red abfragen
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
Ja Du kannst einen x-beliebigen nehmen, den DU dann mit der VIS halt beschreibst und der triggert dann den Flow parallel zur Inject node über die iobroker-IN Node.
hab ich schon
Danke dir recht herzlich!!!
War echt informativ.So, werde mich jetzt in die Federn schmeissen.
Gn8
-
@negalein Gut. Ja dann denke ich, wir haben diese Projekt erst mal abgeschlossen. Schlaf gut!
-
Gutn Morgn
Ich hab gerade diesen Error im Log entdeckt.
Node-RED: 29 Jul 09:00:27 - [error] [change:dateunix] Invalid JSONata expression: The left side of the "*" operator must evaluate to a number
So schaut die Change-Node aus
-
@negalein nun dann hat die Schnittstelle kein Datum bzw. nicht das erwartete Objekt zurückgegeben. insofern finde ich den Fehler wichtig, da er Dir zeigt, dass aktuell was anderes zurückgegeben wurde. Du könntest das höchstens abfangen und eine eigene Fehlermeldung ins Log schreiben, aber wenn das nur sporadisch passiert, dann ist das doch gut, dass du durch den Fehler aufmerksam wirst, dass ein Abruf nicht funktioniert hat. warum kann ich nicht sagen, vielleicht war auch einfach keine Verbindung zu der API möglich, wegen eines Netzwerkfehlers.
Wie gesagt, kannst du auch verhindern, indem du so einen fehlerhaften Abruf abfängst (kannst einfach mit einer switch node filtern, dass nur Nachrichten durchkommen, wenn payload.sucess.0.dateunix eine Zahl ist) und selbst eine Fehlermeldung ausgibst oder du den Fehler einfach abfängst und gar nichts ausgibst. Dann bekommst unter Umständen aber nicht mit, wenn der Abruf dauerhaft fehlschlägt.
Wenn du deine internetverbindung kappst, wirst du den Fehler im Log auch reproduzieren können.
Was willst du also tun?
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
(kannst einfach mit einer switch node filtern, dass nur Nachrichten durchkommen, wenn payload.sucess.0.dateunix eine Zahl ist)
Ich weiß jetzt woher der Error kommt.
Habe noch einen zusätzlichen httpRequest eingebaut (Speed Warning).
Da gibt es 0 (ungelesen) und 1 (gelesen).
Habe 0 verwendet, da mich nur aktuelle intressieren.Der NR frägt alle 10 Minuten ab. Und wenn da kein Speed Alert ist, kommt die Meldung.
Wie mach ich das mit dem Switch-Node?
-
@negalein Na Du lässt halt nur Nachrichten durch, bei der die gewünschte Eigenschaft den Datentyp number also Zahl hat.
-
mach ich das hier?
-
@negalein Nein ein switch Node, die die Nachrichten ausfiltert - also nur Nachrichten durchlässt, die das Kriterium durchlässt. Damit bekommst den Fehler weg. Im Prinzip baust Du den Filter direkt hinter den HTTP Request
-
-
@negalein Na ich denke die Nachrichteneigenschaft die geprüft werden soll ist doch
payload.success.0.dateunix
und das prüfst Du nun, ob dieses Eigenschaft einen Wert vom Typ Zahl bzw. Number hat.
Also gib
- oben in dem Switch ein, welche Nachrichteneigenschaft geprüft werden soll
- Mach eine Typ Prüfung
- auf Zahl, also Number
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
und das prüfst Du nun, ob dieses Eigenschaft einen Wert vom Typ Zahl bzw. Number hat.
so dann richtig?
-
Ok, da kommt noch immer
"Invalid JSONata expression: The left side of the "*" operator must evaluate to a number"
-
@negalein Na ist dass denn plötzlich success[5] und nicht mehr 0 - wie seht denn das Objekt aus.
Und Du willst doch prüfen, ob der Datentyp eine Zahl ist - also nicht ==, sondern "ist vom Typ " und dann vom Typ "number"
-
@mickym Also wenn Du das hast - am Besten kannst Du natürlich einmal das Objekt posten (in CodeTags), wenn ein Objekt da ist oder wenn nicht. Aber wie gesagt, Du musst ein Typprüfung auf number machen.
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
Na ist dass denn plötzlich success[5] und nicht mehr 0 - wie seht denn das Objekt aus.
Ja, beim 2. httpRequest ist es
payload.success[5].dateunix
.
Ah, hab ich übersehn, dass da mehr steht.
so schauts aus, wenn ich zB alle Speed Alerts nehme.
{"success":[{"id":180803681,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1722186881,"lat":48.4801559,"lng":13.4893332,"isread":1,"imei":null,"speed":56,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":180794125,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1722184536,"lat":48.4709358,"lng":13.532383,"isread":1,"imei":null,"speed":52,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":180269448,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1722017700,"lat":48.4809265,"lng":13.4890671,"isread":1,"imei":null,"speed":59,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":180125881,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1721993656,"lat":48.4613876,"lng":13.5360165,"isread":1,"imei":null,"speed":57,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":179922086,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1721931765,"lat":48.4804878,"lng":13.4893332,"isread":1,"imei":null,"speed":50,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":179802432,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1721911520,"lat":48.4616165,"lng":13.5359335,"isread":1,"imei":null,"speed":57,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":178551595,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1721572992,"lat":48.4611015,"lng":13.5360832,"isread":1,"imei":null,"speed":54,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":178351078,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1721496826,"lat":48.5024605,"lng":13.4803667,"isread":1,"imei":null,"speed":50,"speederlaubt":50,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":176065086,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1720886205,"lat":48.4818077,"lng":13.4579163,"isread":1,"imei":null,"speed":94,"speederlaubt":80,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":176048342,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1720882922,"lat":48.5098839,"lng":13.4779167,"isread":1,"imei":null,"speed":96,"speederlaubt":80,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":171856575,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1719768062,"lat":48.5028152,"lng":13.4802332,"isread":1,"imei":null,"speed":87,"speederlaubt":80,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null},{"id":171853651,"iddevice":1334450,"name":null,"icon":"icon-info","bezeichnung":"Geschwindigkeitsalarm","meldung":null,"meldungtyp":5,"dateunix":1719767310,"lat":48.5003777,"lng":13.5935497,"isread":1,"imei":null,"speed":87,"speederlaubt":80,"radiusin":0,"radiusout":0,"zuendon":0,"zuendoff":0,"email":null,"push":0,"suppressed":0,"deleted_at":null}],"number_of_records":12}
-
@negalein sagte in PAJ GPS mit Node-Red abfragen:
Ok das ist ein Array mit 12 Geschwindigkeitsalarmen
{ "success": [ { "id": 180803681, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1722186881, "lat": 48.4801559, "lng": 13.4893332, "isread": 1, "imei": null, "speed": 56, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 180794125, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1722184536, "lat": 48.4709358, "lng": 13.532383, "isread": 1, "imei": null, "speed": 52, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 180269448, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1722017700, "lat": 48.4809265, "lng": 13.4890671, "isread": 1, "imei": null, "speed": 59, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 180125881, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1721993656, "lat": 48.4613876, "lng": 13.5360165, "isread": 1, "imei": null, "speed": 57, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 179922086, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1721931765, "lat": 48.4804878, "lng": 13.4893332, "isread": 1, "imei": null, "speed": 50, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 179802432, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1721911520, "lat": 48.4616165, "lng": 13.5359335, "isread": 1, "imei": null, "speed": 57, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 178551595, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1721572992, "lat": 48.4611015, "lng": 13.5360832, "isread": 1, "imei": null, "speed": 54, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 178351078, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1721496826, "lat": 48.5024605, "lng": 13.4803667, "isread": 1, "imei": null, "speed": 50, "speederlaubt": 50, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 176065086, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1720886205, "lat": 48.4818077, "lng": 13.4579163, "isread": 1, "imei": null, "speed": 94, "speederlaubt": 80, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 176048342, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1720882922, "lat": 48.5098839, "lng": 13.4779167, "isread": 1, "imei": null, "speed": 96, "speederlaubt": 80, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 171856575, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1719768062, "lat": 48.5028152, "lng": 13.4802332, "isread": 1, "imei": null, "speed": 87, "speederlaubt": 80, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null }, { "id": 171853651, "iddevice": 1334450, "name": null, "icon": "icon-info", "bezeichnung": "Geschwindigkeitsalarm", "meldung": null, "meldungtyp": 5, "dateunix": 1719767310, "lat": 48.5003777, "lng": 13.5935497, "isread": 1, "imei": null, "speed": 87, "speederlaubt": 80, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0, "suppressed": 0, "deleted_at": null } ], "number_of_records": 12 }
So Du kannst jetzt alle 12 Alarme - willst Du die nicht einzeln auswerten oder willst Du nicht alle Alarme haben?
Das ist also nicht 5 - sondern das sind 12 Einträge in einer Liste - wie Du siehst.
Das in 5 datgenpunkte zu pressen ist natürlich nicht möglich. Also es sind ja eigentlich 12 * 5 Punkte, wenn Du nur diese Daten haben willst.
Jetzt müsstest Du noch ein Objekt posten, wenn keine Alarme da sind, ist dann das Array einfach leer?
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
So Du kannst jetzt alle 12 Alarme - willst Du die nicht einzeln auswerten oder willst Du nicht alle Alarme haben?
Genau, das sind die
gelesenen/bestätigten
Alarme.Das ist der Request
https://connect.paj-gps.de/api/v1/notifications/1334450?alertType=5&isRead=1
Mit
https://connect.paj-gps.de/api/v1/notifications/1334450?alertType=5&isRead=0
bekomm ich dieungelesenen
.
Die möchte ich. Aber da kommt dann der Error, da die Dateunix nur bei Alarm übermittelt wird.Das ist also nicht 5 - sondern das sind 12 Einträge in einer Liste - wie Du siehst.
Das in 5 datgenpunkte zu pressen ist natürlich nicht möglich. Also es sind ja eigentlich 12 * 5 Punkte, wenn Du nur diese Daten haben willst.Jetzt müsstest Du noch ein Objekt posten, wenn keine Alarme da sind, ist dann das Array einfach leer?
Genau, da kommt nur
-
Für diese Zwecke empfehle ich Dir einfach meine Node zu nehmen, die alle Daten in einzelne Datenpunkte zerlegt.
-
@negalein Ja aber auch bei den ungelesenen - kann ja mehr als 1 Alarm kommen.
Nein das was Du gepostet hast - ist was aus der Node dateunix kommt. Mach ein Debug Node direkt hinter die http-request node, wenn keine ungelesenen Alarme kommen.
Ausserdem musst Du das Array mit mehreren Alarmen in einzelne Nachrichten zerlegen, das machst Du mit einer Split Node.
Ich zeig Dir das mal mit einem Flow anhand der Daten die Du gepostet hast.
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
kann ja mehr als 1 Alarm kommen.
stimmt leider
Mach ein Debug Node direkt hinter die http-request node, wenn keine ungelesenen Alarme kommen.
{"success":[],"number_of_records":0}
Ich wollte damit eigentlich bewirken, wenn ein Alert kommt, ich in VIS eine Benachrichtigung aufploppen lasse.