NEWS
PAJ GPS mit Node-Red abfragen
-
Guten Morgen
hab ein Problem
Seit gestern funktioniert der Flow nicht mehr.
16.11.2024, 11:29:18node: debug 1 0_userdata/0/PAJ/abfrage : msg.payload : boolean false 16.11.2024, 11:29:19node: Payload 0_userdata/0/PAJ/abfrage : msg.payload : Object { success: object } 16.11.2024, 11:29:20node: success 0_userdata/0/PAJ/abfrage : msg.payload : Object { success: object } 16.11.2024, 11:29:21node: auth 0_userdata/0/PAJ/abfrage : msg.auth : string[7] "Bearer " 16.11.2024, 11:29:22node: Trackdata 0_userdata/0/PAJ/abfrage : msg.payload : Object { error: "Unauthenticated" } 16.11.2024, 11:29:22node: dateunix msg : string[87] "Invalid JSONata expression: The left side of the "*" operator must evaluate to a number" 16.11.2024, 11:29:22node: lat 0_userdata/0/PAJ/abfrage : msg.payload : Object { error: "Unauthenticated" } 16.11.2024, 11:29:22node: Trackdata Alert 0_userdata/0/PAJ/abfrage : msg.payload : Object { error: "Unauthenticated" }
User und PW passen
-
@negalein Ja schwierig - ich hab erst mal wieder schauen müssen, was wir da gemacht haben. Im Prinzip funktioniert trotzdem mit der Authentisierung was nicht mehr. Du siehst ja dass da kein Token mehr mitgegeben wird. Du musst also das Objekt dass bei success rauskommt nochmals näher unterschen und schauen, ob das Token nun wo anders ist und die msg.auth ggf. modifizieren.
Wichtig ist ja erst mal, dass (kann ja vielleicht auch nicht nur ich helfen), auch mal jemand anders ein Blick auf den Flow wirft. Hier hattest Du mal ein Überblick gepostet: https://forum.iobroker.net/post/1185075, damit man sich wieder orientieren kann.
Da in dieser Nachricht muss ja das Token sein, aber vielleicht woanders.
Hier war ja das Token noch in der Eigenschaft token. https://forum.iobroker.net/post/1178163
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
Im Prinzip funktioniert trotzdem mit der Authentisierung was nicht mehr
hab im Debug gesehn, dass das PW einen Reset wollte.
Ok, nun neues PW (funktioniert auf dem Webportal und im API-Manager).
Aber in NR kommt trotzdem "Password is incorrect"16.11.2024, 13:54:39node: debug 1 0_userdata/0/PAJ/abfrage : msg.payload : boolean false 16.11.2024, 13:54:40node: Payload 0_userdata/0/PAJ/abfrage : msg.payload : Object object error: object passwordError: "Password is incorrect." 16.11.2024, 13:54:41node: error 0_userdata/0/PAJ/abfrage : msg.payload : Object object error: object passwordError: "Password is incorrect."
-
@negalein Ja dann hast Du halt entweder in der Inject Node oder in der Change Node noch ein falsches Passwort stehen.
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
Ja dann hast Du halt entweder in der Inject Node oder in der Change Node noch ein falsches Passwort stehen.
das hab ich x-mal überprüft.
kann es sein, dass der Inject-Node mit Sonderzeichen nicht klar kommt?
PWD: XXXXXXX
#
XXX -
@negalein Das glaube ich nicht, aber das sind jedenfalls die einzigen Stellen, wo Du ein Passwort mitgibst. Wenn also falsches Passwort rauskommt, dann ist es das nicht. Ich würde halt auf jedenfall die Wiederholung erstmal rausnehmen, nicht dass Dich die Webseite sperrt, weil zuoft ein falsches Passwort eingegeben wurde.
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
Das glaube ich nicht, aber das sind jedenfalls die einzigen Stellen, wo Du ein Passwort mitgibst.
hab jetzt ein neues PWD ohne
#
erstellt.Es funktioniert wieder!
-
@negalein Ja dann hat das nichts mit der Inject NOde zu tun, sondern dass Du in die URL wo Du das Passwort ggf. mitgibst, man das Zeichen erst hätte umwandeln müssen. Eine URL kennt auch keine Umlaute oder sonstige Sonderzeichen, sondern die muss man dann codieren.
Und für das nächste Mal weisst Du Bescheid und wie gut, dass Du im Debug - gesehen hast, dass ein Passwortwechsel fällig war.
Wenn Du also ein
#
das nächste Mal in einer URL eingeben willst, dann musst Du das wie folgt codieren:
-
@mickym sagte in PAJ GPS mit Node-Red abfragen:
sondern dass Du in die URL wo Du das Passwort ggf. mitgibst, man das Zeichen erst hätte umwandeln müssen
ah, also aus xxxxxx#xxxx muss ich xxxxxx%23xxxx machen
-
@negalein genau
-
@mickym Gut zu wissen! Wie muss ich das denn machen, wenn ich ein '%' kaschieren muss. Etwa '%%25' ?
-
@rene55 Nein einfach nur %25 - du kannst das auch über JSONATA umwandeln lassen.
Das Gleiche gilt auch für Umlaute, die müssen auch codiert werden. Die JSONATA Funktion heißt: encodeUrlComponent.
Aus
#Pass%Wörter
wird dann
%23Pass%25W%C3%B6rter
-
@mickym Danke. Ich hatte angenommen, dass das '%' schon ein besonderes Zeichen wäre. Und JSONATA muss ich mir auch noch ansehen.
-
@rene55 sagte in PAJ GPS mit Node-Red abfragen:
@mickym Danke. Ich hatte angenommen, dass das '%' schon ein besonderes Zeichen wäre. Und JSONATA muss ich mir auch noch ansehen.
Ein Kurzanleitung bekommst Du zu den Befehlen - direkt im JSONATA Editor
Ansonsten verweis ich auf die Dokumentation und vor allem dem Exerciser. Diese Bibliothek ist so mächtig - sodass ich quasi fast kein JS mehr benötige und alles viel weniger zu codieren ist.
-
@mickym
Auch wenn das schon ein paar Monate her ist häng ich mich auch mal als Node Neuling dran.Ich hab dann einmal versucht ein von mir gesetzten Geofence abzufragen. Das funktioniert auch soweit. in die variable 0_userdata.0.PAJ.Radiusin mit 1 oder 0.
Jetzt wollte ich damit mein Garagentor steuern mit heimkommen geht auf, wegfahren geht zu.
Von der Logik her OK aber ich denke das PAJ nicht unbedingt begeistert ist wenn ich alle 15 Sekunden die API nutze ?.
Gibt es bei Node Red nicht auch eine Push funktion wie bei der Handy App ? -
@alberte-0 sagte in PAJ GPS mit Node-Red abfragen:
Gibt es bei Node Red nicht auch eine Push funktion wie bei der Handy App ?
Nein NodeRed ist ein allgemeines Tool und es gibt diverse Nodes die GPS Tracking anbieten. Aber sobald Du eine API über HTTP nutzt, musst Du pullen und es gibt keine Push Mechanismus.
Deswegen nutzen die Hersteller eigene Protokolle oder wenn Du Glück hast nutzen sie nicht HTTP, sondern mqtt oder Websocket - das sind Protokolle die Pushen können.
In diesem Fall musst Du selbst über die Notification Data prüfen
ob Benachrichtigungen da sind.
Das Ganze hat erstmal mit NodeRed oder einem anderen System zu tun.
-
Wenn Du auf Deinem Handy Geofence zum Beispiel benutzt, dann trackt das Handy ja die Position. Über die Geofence App kann man dann einen Webserver kontaktieren - So mache ich das über NodeRed oder der iobroker mit seinem Adapter.
https://www.paj-gps.de/das-finder-portal/
Die wollen ja Geld damit verdienen. Was Du mal in dem Portal schauen kannst, ob man da Geofence Ereignisse über einen HTTP URL eintragen kannst. Dann wirst Du über das Portal in NodeRed oder iobroker benachrichtigt.
-
@mickym
Steh wohl auf dem Schlauch Zahlen muss ich ja ohnehin ich bekomme die Daten ja auch.
Habe den Flow den ihr gebaut habt etwas gekürzt.der letzte http request https://connect.paj-gps.de/api/v1/notifications?alertType=3&isRead=0 enthält alle geofenceaktionen und der switch
die letzte Geofence Aktion 1 für Daheim 0 für Abwesend.
Wie trigger ich denn am besten die Abfrage ? -
@alberte-0 sagte in PAJ GPS mit Node-Red abfragen:
Wie trigger ich denn am besten die Abfrage ?
Ich weiß nicht ob ich helfen kann. Triggern tust du vorne mit der Inject Node oder mit über die iobroker-In Node.
Der Flow geht immer von links nach rechts - wie Du auch lesen würdest.
Wenn man sich nicht immer anmelden will, dann kann man ggf. auch das Renew Token nehmen, die msg.auth im Kontext als Variable zwischenspeichern und die Abfragen direkt triggern. Ich tu mich da nur schwer, weil ich keinen Account habe und auch kein Gerät. - Aber für den Anfang scheint das ja mit der erneuten Anmeldung zu funktionieren.
-
Soweit ich mich erinnere nutzt der Flow doch diese Schnittstelle:
https://connect.paj-gps.de/api/documentationWenn ich mir dann den Response anschaue:
Dann schaut die payload als Antwort doch so aus:
{ "0": { "id": 2, "iddevice": 1, "name": null, "icon": "icon-info", "bezeichnung": "Stromunterbrechnungs-Alarm", "meldung": null, "meldungtyp": 6, "dateunix": 1212121, "lat": 0, "lng": 0, "isread": 0, "imei": null, "speed": null, "speederlaubt": null, "radiusin": 0, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0 }, "success": { "id": 1, "iddevice": 1, "name": null, "icon": "icon-bullhorn2", "bezeichnung": "Radiusalarm", "meldung": "Ihr FINDER hat den festgelegten Radius befahren.", "meldungtyp": 3, "dateunix": 12121212, "lat": 12.12, "lng": 12.12, "isread": 0, "imei": "12121212", "speed": 0, "speederlaubt": null, "radiusin": 1, "radiusout": 0, "zuendon": 0, "zuendoff": 0, "email": null, "push": 0 } }
Das ist keine Switch Node sondern eine ChangeNode.
Und das ist verkehrt.
Man geht einfach mit der Maus nebeen den Wert, den man haben will und kopiert den Pfad.
Wenn ich also radiusin haben will - öffne ich das Objekt und kopiere den Pfad von radiusin.
Diesen Pfad kopiere ich dann da rein:
und schon habe ich die selektierte Eigenschaft. Also nichts mit 0 und Klammer.