NEWS
Node-red: Spritpreise einlesen Tanker-König # feste Station
-
angeregt und mit Unterstützung von Pix http://forum.iobroker.org/viewtopic.php … =614#p4245 (Tankstellenliste) habe ich mich daran gemacht und frage nun feste Stationen (Tankstellendetail) ab.
Die Ausgabe (DEBUG) (File) ist nur in der Testpase eingetragen! [{
! "id" : "3f588390.c195dc",
! "type" : "inject",
! "name" : "Start jede Minute",
! "topic" : "",
! "payload" : "",
! "payloadType" : "none",
! "repeat" : "60",
! "crontab" : "",
! "once" : false,
! "x" : 110,
! "y" : 239,
! "z" : "231298ee.7d60a8",
! "wires" : [["7c7cf3c6.9c3e0c", "9f59d3d4.abb41"]]
! }, {
! "id" : "3d026af5.dc1cc6",
! "type" : "function",
! "name" : "(detail) Daten extrahieren",
! "func" : "msg1 = {};\nmsg1.payload = msg.payload.station.name;\nmsg2 = {};\nmsg2.payload = msg.payload.station.diesel;\nmsg3 = {};\nmsg3.payload = msg.payload.station.isOpen;\nmsg4 = {};\nmsg4.payload = msg.payload.station.openUntil;\n\nreturn [msg1,msg2,msg3,msg4];",
! "outputs" : "4",
! "valid" : true,
! "x" : 475,
! "y" : 152,
! "z" : "231298ee.7d60a8",
! "wires" : [["abe59ec.d7f736", "1ef03bb6.425ebc"], ["abe59ec.d7f736", "4fe7115b.f9d01"], ["abe59ec.d7f736", "537d422c.f8774c"], ["abe59ec.d7f736"]]
! }, {
! "id" : "7c7cf3c6.9c3e0c",
! "type" : "http request",
! "name" : "Station 1 (Jet)",
! "method" : "GET",
! "ret" : "obj",
! "url" : "https://creativecommons.tankerkoenig.de … key=xxxxxx",
! "x" : 252,
! "y" : 128,
! "z" : "231298ee.7d60a8",
! "wires" : [["3d026af5.dc1cc6", "3fb7cdea.cf70ca"]]
! }, {
! "id" : "9f59d3d4.abb41",
! "type" : "http request",
! "name" : "Station 2 (AVIA)",
! "method" : "GET",
! "ret" : "obj",
! "url" : "https://creativecommons.tankerkoenig.de … key=xxxxxx",
! "x" : 252,
! "y" : 359,
! "z" : "231298ee.7d60a8",
! "wires" : [["f11bfd5d.2e79a8", "726f1740.a9e1"]]
! }, {
! "id" : "3fb7cdea.cf70ca",
! "type" : "file",
! "name" : "Station1",
! "filename" : "/opt/iobroker/Station1.txt",
! "appendNewline" : true,
! "overwriteFile" : "false",
! "x" : 420,
! "y" : 102,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "f11bfd5d.2e79a8",
! "type" : "file",
! "name" : "Station2",
! "filename" : "/opt/iobroker/Station2.txt",
! "appendNewline" : true,
! "overwriteFile" : "false",
! "x" : 417,
! "y" : 331,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "abe59ec.d7f736",
! "type" : "debug",
! "name" : "Ausgabe",
! "active" : true,
! "console" : "false",
! "complete" : "payload",
! "x" : 835,
! "y" : 97,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "1ef03bb6.425ebc",
! "type" : "ioBroker out",
! "name" : "Name der Sprit-Station JET",
! "topic" : "sprit_station_jet_name",
! "ack" : "true",
! "autoCreate" : "true",
! "x" : 893,
! "y" : 145,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "4fe7115b.f9d01",
! "type" : "ioBroker out",
! "name" : "Preis Diesel Sprit-Station JET",
! "topic" : "sprit_station_jet_price",
! "ack" : "true",
! "autoCreate" : "true",
! "x" : 899,
! "y" : 194,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "537d422c.f8774c",
! "type" : "ioBroker out",
! "name" : "Geöffnet Sprit-Station JET",
! "topic" : "sprit_station_jet_isOpen",
! "ack" : "true",
! "autoCreate" : "true",
! "x" : 889,
! "y" : 242,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "726f1740.a9e1",
! "type" : "function",
! "name" : "(detail) Daten extrahieren",
! "func" : "msg1 = {};\nmsg1.payload = msg.payload.station.name;\nmsg2 = {};\nmsg2.payload = msg.payload.station.diesel;\nmsg3 = {};\nmsg3.payload = msg.payload.station.isOpen;\nmsg4 = {};\nmsg4.payload = msg.payload.station.openUntil;\n\nreturn [msg1,msg2,msg3,msg4];",
! "outputs" : "4",
! "valid" : true,
! "x" : 475,
! "y" : 379,
! "z" : "231298ee.7d60a8",
! "wires" : [["18bbbe17.60caa2", "1c459f43.8d0bf1"], ["18bbbe17.60caa2", "ba0aedce.612798"], ["18bbbe17.60caa2", "1edff58b.bd120a"], ["18bbbe17.60caa2"]]
! }, {
! "id" : "18bbbe17.60caa2",
! "type" : "debug",
! "name" : "Ausgabe",
! "active" : true,
! "console" : "false",
! "complete" : "payload",
! "x" : 835,
! "y" : 324,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "1c459f43.8d0bf1",
! "type" : "ioBroker out",
! "name" : "Name der Sprit-Station AVIA",
! "topic" : "sprit_station_avia_name",
! "ack" : "true",
! "autoCreate" : "true",
! "x" : 893,
! "y" : 372,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "ba0aedce.612798",
! "type" : "ioBroker out",
! "name" : "Preis Diesel Sprit-Station AVIA",
! "topic" : "sprit_station_avia_price",
! "ack" : "true",
! "autoCreate" : "true",
! "x" : 899,
! "y" : 421,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }, {
! "id" : "1edff58b.bd120a",
! "type" : "ioBroker out",
! "name" : "Geöffnet Sprit-Station AVIA",
! "topic" : "sprit_station_avia_isOpen",
! "ack" : "true",
! "autoCreate" : "true",
! "x" : 889,
! "y" : 469,
! "z" : "231298ee.7d60a8",
! "wires" : []
! }
! ]
Der Key und die IDs müssen eingetragen werdenDer Unterschied liegt in der GET-Abfrage:
GET mit "https://creativecommons.tankerkoenig.de/json/detail.php + id + Key" # wird als JSON-Objekt übergeben
Dann erfolgt die Funktion: (detail) Daten extrahieren
msg1 = {}; msg1.payload = msg.payload.station.name; msg2 = {}; msg2.payload = msg.payload.station.diesel; msg3 = {}; msg3.payload = msg.payload.station.isOpen; msg4 = {}; msg4.payload = msg.payload.station.openUntil; return [msg1,msg2,msg3,msg4];
Hier wird der Name und der Preis des Diesel extrahiert.
Weiterhin ob die Tanke noch offen ist. (Hoffe das funktioniert entgegen der Beschreibung: isOpen
Öffnungsstatus zum Zeitpunkt der Abfrage; immer true, da nur Informationen aktuell geöffneter Tankstellen zurückgegeben werden
Die "Wie lange noch offen" habe ich noch nicht verstanden
Infos hierzu stehen unter : https://creativecommons.tankerkoenig.de/#techInfo
Die Objekte stehen nun zur Verfügung:
Alle Datenpunkte werden bei veränderung aufgezeichnet
Gruß
derAuge
-
Und wenn man dann noch das Pushover für node-red installiert, kann man sich die Werte aufs iPhone usw. schicken lassen (mache ich derzeit so).
Wenn ich nachher zu Hause bin, poste ich noch was dazu.
Momentan bastle ich nich daran, das mir nur Änderungen geschickt werden - momentan bekomme ich jede Stunde "meine" drei Tankstellen gemeldet.
-
Und wenn man dann noch das Pushover für node-red installiert, kann man sich die Werte aufs iPhone usw. schicken lassen (mache ich derzeit so).
Wenn ich nachher zu Hause bin, poste ich noch was dazu.
Momentan bastle ich nich daran, das mir nur Änderungen geschickt werden - momentan bekomme ich jede Stunde "meine" drei Tankstellen gemeldet. `
Die Idee ist gut
wie / wo kann ich zwei "payload" in einer funktion vergleichen?
Über
kann ich den aktuellen (letzten) Wert ja auslesen.Nun muss ich diesen mit dem neu ermittelten Wert vergleichen.
Bei Veränderung erfolgt eine Aktion die den Namen der Tanke und den alten / neuen Spritpreist (per Mail) meldet
Hat da jemand eine Idee / Anregung dazu? (wo kann man so etwas nachlesen / lernen?)
Gruß
derAuge
-
Tante Google usw. haben mir bisher erzählt, das es keine zwei "Input" (Payload) gibt …. Suche auch noch.
Heute Abend geht's weiter
-
in Java Skript einfach mit der anderen Variablen abgleichen?
D.h. in der Funktion eine Abfrage
Gesendet von iPhone mit Tapatalk
-
Hab ich mir auch überlegt. Werde es nachher mal probieren.
-
Und wenn man dann noch das Pushover für node-red installiert, kann man sich die Werte aufs iPhone usw. schicken lassen (mache ich derzeit so). `
Installation von Pushover für node-red:Infos stammen von hier : https://www.npmjs.com/package/node-red-node-pushover
Davon ausgehend, dass das Installationsverzeichnis von ipBroker "/opt/iobroker" ist,
in das Verzeichnis "/opt/iobroker/node_modules" wechseln
Dort dann "npm install node-red-node-pushover" aufrufen
Anschließend den Raspi (oder wo immer es läuft) neu starten (Neustart des node-red-Adapters hat bei mir nicht gefruchtet).
cd /opt/iobroker/node_modules npm install node-red-node-pushover
Anschließend steht in node-red dann ein neuer Output "pushover" zur Verfügung
In Pushover selber legt man sich ggf. einen neue Applikation (z.B. Tanken) an und kopiert sich die dazugehörige App-ID.
Die Konfiguration des Pushover-Output ist relativ einfach:
-
Unter "Title" wird ein sprechender Name vergeben
-
Bei "Priority" kann die PrO der Meldung (-1 bis 2) eingesetzt werden
-
Bei "User key" wird der persönliche User key eingetragen
-
Bei "API token" die App-ID (siehe oben)
-
Und "Name" habe ich leer gelassen
Funktioniert bei mir tadellos.
Gruß,
Eric
-