NEWS
Test Adapter owntracks v1.0.x Github
-
@mickym Jetzt verstehe ich. Du redest von der Verschlüsselung der Verbindung und bekommst im Mosquitto die Daten in lesbarer Form. Bei mir ist aber zusätzlich die Payload encryption aktiv. Die Daten kommen also nicht lesbar an sondern z.B. so:
{"_type":"encrypted","data":"zwulyo9ma+u41Kn.....E+Drvb68Wj448lzodHdk\/y68zDhuAxXvFCyolQD07Tm3Cogthbatgj6uN1......r6vTCNwY6WQNP7SQx+HX2ZIA2J+SAjURmOZIEH\/\/faqnIlCxQzM6Xo0TN34EHP.....39Z+DexylLCIlSXIKK6yiUChOxuka5bjAZx\/s1csjAexhrFiTzC6A6jM0.....oUrYkrFJCECoCpWRF8ztqXgECoVOgbMhX2t5H8tCglD6Vtza\/Thg.....braiA=="}
Für den or-recorder und das Frontend kein Problem, die entschlüsseln das. Ebenso der Owncloud-Adapter, dort kann man den Encryption-Key auch eintragen. Nur denke ich, es wird schwer, selbst daraus was Lesbares zu machen?!
Gruss, Jürgen -
@wildbill Im Broker sind die Daten entschlüsselt auf der Bridge verschlüsselt.
Gut dann ist das keine Lösung.
Aber ich habe gesehen, dass es eine Node-Red Node gibt: https://flows.nodered.org/node/node-red-contrib-owntracks
Die nimmt als Input eine mqtt-In Node und man kann anscheinend ein preshared secret angeben zur Entschlüsselung. Vielleicht funktioniert es ja damit. Zusammen mit meinem Subflow könntest Du dann eigene Datenpunkte erstellen.
-
@mickym Danke, das könnte in der Tat genau das sein, was ich suche. Muss ich mich mal einarbeiten. Jetzt ist erstmal ausspannen... ️
Gruß, Jürgen -
@mickym Mit dem node-red-contrib-owntracks habe ich es sogar hinbekommen. Allerdings nicht alles in node-red, da bin ich wohl nicht tief genug in node-red drin. Aber so ist nun mein Ablauf:
Mit Node-red bei Änderung des MQTT-Datenpunktes mittel des owntracks-nodes decrypten und die gesamte Payload dann in lesbarem Klartext als String in einen Datenpunkt unter userdata.0 schreiben.
Mit Javascript einen Trigger auf diesen Datenpunkt und dann aus dem String in einzelne Daten auflösen und in einzelne Datenpunkte unter userdata schreiben.
Im Prinzip also im Ergebnis wohl das gleiche, als wie Du es komplett in node-red machst. Vielleicht nicht die beste und eleganteste Lösung, aber es funktioniert und ich spare mir den Owntracks-Adapter und einige graue Haare.
Danke für den Tip mit dem node-red-contrib-owntracks. Da hätte ich nie sowas gesucht, da ich in node-red bislang fast nichts gemacht habe, außer ein paar Alexa-Datenpunkten.Gruss, Jürgen
-
Kleines Update:
Da ich Fehlermeldungen bekam, wenn Owntracks nur mal ein "PING-Paket" ohne komplette Payload geschickt hat, wenn es nichts zum Auswerten gab, und es doch nicht so ganz lief, wie ich wollte, habe ich mich nochmal hingesetzt, meinen ganzen Grips zusammengenommen und im Forum gesucht, was man so mit node-red machen kann. Und nun läuft alles direkt in node-red, ohne dass ich den verschlüsselten Payload vom MQTT erst in einen zweiten Datenpunkt entschlüsseln und von dem dann auswerten muss. Dies ging eh nicht so richtig, da das node-red-contrib-owntracks zwar den JSON direkt entgegennimmt, aber dann einen String ausgibt/schreibt. Falls jemand mal vor dem gleichen Problem hängt, und in node-red entschlüsseln und anschliessend als JSON weiterverarbeiten will muss der Eingang so aussehen:
Ohne das wieder in ein JSON zu wandeln nach dem entschlüsseln, hagelt es sonst nur Fehler und es kommt nichts an.
Gruss, Jürgen -
@wildbill Nimm doch einfach meinen Subflow - da ist alles angegeben - das kann zwar am Anfang Fehler spuken wegen dem admin 5.
https://forum.iobroker.net/topic/43856/json-string-oder-java-object-in-iobroker-struktur
Lege über eine Change NOde alles beschrieben in der Subflow Node - wo Du Deinen Datenbaum hinhaben willst und erlaube dem NodeRed Adapter, dass er Daten schreiben darf. Den Subflow Node hängst Du hinter Deine Owntracks Node
Einfach den Code aus dem ersten Post in dem Thread importieren. Dort habe ich alles geschrieben, mit Anleitung
Der Flow sollte auch mit Javascript Objekten in der payload und auch Arrays funktionieren. In dem Thread gibts auch Beispielflows.
Die JSON Node wandelt einen JSON String in ein Javaobjekt und umgekehrt.
Mach einfach eine Debug Node hinten dran und gib das komplette Nachrichtenobjekt aus, dann sehe ich ja was aus der owntracks Node raus kommt.
Zu dem Flow habe ich ja auch extra eine Hilfe geschrieben:
-
@mickym Ich hatte ursprünglich sogar versucht, mit Deinem Ansatz klar zu kommen, aber, da fehlte mir dennoch zu viel Grundwissen, was bei node-red wo hin muss und wie was gemacht wird. Also habe ich gemacht, was ich schon immer am besten konnte. Bestehendes nehmen und so anpassen, wie ich es will.
In einem älteren Thread gab es schon einmal einen Flow, der aus einem Owntracks-Json Datenpunkte erstellt. Den habe ich genommen, nicht benötigte Datenpunkte gelöscht und dafür andere, die mir gefehlt haben ergänzt. Erst ohne Payload encryption getestet und dann rausgefunden, wie ich es mit hin bekomme. Dann nochmal einen flow für transition, um direkt Datenpunkte für das betreten oder verlassen von waypoints zu bekommen. Das ganze dann für meine drei User und fertig. In blockly noch ein kleines Skript, welches zu jedem User meine jeweipigen Anwesenheitsdatenpunkte auf true oder false stellt und das wars. Test war mehr als erfolgreich. Alle Daten im iobroker, alle events, inklusive IBeacon kommen an und die Anwesenheiten passen auch. Mehr will und brauche ich nicht mehr.
Aber Danke, dass Du mich in die richtige Richtung gestossen hast. Muss mich wohl doch mehr mit node-red beschäftigen. Da geht eindeutig mehr als mit Javascript/Blockly.
Gruß, Jürgen -
@wildbill Ich mach Dir das ja gerne wohin möchtest Du denn Deine Datenpunkte geschrieben haben?
Hast Du die Erstellung von Fremdobjekt in der NodeRed Adapterkonfiguration zugelassen?
-
@mickym Nochmal, es läuft bereits. Meine Flows schreiben mir die Datenpunkte in eine eigene Struktur unter userdata.0. Schön sortiert nach User und ob es ein Location- oder Transition-Payload war. Das mit Fremdobjekte erstellen habe ich auch zugelassen, es wurden von node-red alle Datenpunkte sauber und als passendes Objekt (string, array oder number, je nachdem) erstellt. Es läuft ohne jegiche Meldungen im Log und voll zufriedenstellend.
Gruss, Jürgen -
@wildbill Ah OK - dann hatte ich das falsch verstanden, weil Du was von Fehlermeldungen geschrieben hast und unten ja nicht der komplette Flow sein kann. Du musst ja was mit einer iobroker out Node wegschreiben und ich sah halt nur eine function Node als Abschluss (wobei ich dieser Node kritisch gegenüberstehe, weil sie oft das Prinzip von NodeRed kaputt macht).
Letztlich kannst Du in einer function Node - ja alles in JS schreiben.
-
@mickym Das Bild sollte nur den Eingang des Flow zeigen, weil nach dem owntracks-node erst wieder ein Json gemacht werden muss. Nur, falls jemand mal was nachbauen will mit Payload encryption. Ohne die ging der Flow, den ich gefunden und angepasst hatte problemlos, nur mit halt zuerst nicht mehr.
Aber wie gesagt, alles läuft nun.
Gruß, Jürgen