[vz-users] Daten auf MQTT Topics verteilen

Christian Wulff christianwulff at gmx.de
Tue Oct 2 18:05:44 CEST 2018


Moin Frank,

 

die vier inject nodes sind vier aufeinander folgende Datensätze die der /vzpush gesendet hat.

Danach wiederholt sich das dann immer wieder mit ähnlichen Datensätzen.

Die Datensätze sind (nach meinem Verständnis) leicht unterschiedlich aufgebaut, weil 1 oder 2 oder z.B. 18 Kanäle darin enthalten sind.

Dadurch wird (wenn ich mich jetzt richtig ausdrücke?!) das JSON Object mit mehr oder weniger Zweigen strukturiert.

Die vier Datensätze habe ich einfach zum Testen kopiert, damit ich sie jederzeit antriggern kann.

Mir hat jemand den Tipp gegeben, das mit einem Change Node und der darin enthaltenen JSONata expression zu lösen. Das habe ich probiert. Inzwischen ist auch das Abfangen einer nicht eingetragenen UUID gelöst. Soweit wie es dort drin ist bin ich gekommen.

 

Warum das gerade nicht funktioniert schau ich mir grad nochmal an, wahrscheinlich beim hin und- her kopieren irgendwo ein Fehler eingebaut. Funktioniert hatte es soweit.

Zusätzlich als alternative Variante habe ich jetzt den Function Node wieder hinzugefügt.

 

Hier die überarbeitete Testsequenz:

 

[{"id":"cf961e49.49d18","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":880,"wires":[]},{"id":"4f9b4202.44a6f4","type":"change","z":"44c69799.54d068","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"(\t   $uuidMap := {\t       'xxxxxxxx-0001-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Strom/Haus',\t       'xxxxxxxx-0002-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Strom/WärmepumpeHaupttarif',\t       'xxxxxxxx-0003-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Strom/WärmepumpeNebentarif',\t       'xxxxxxxx-0004-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T01Aussen',\t       'xxxxxxxx-0005-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T02Fortluft',\t       'xxxxxxxx-0006-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T03Warmwasserspeicher',\t       'xxxxxxxx-0007-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T04WarmwasserVorlauf',\t       'xxxxxxxx-0008-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T05Bad',\t       'xxxxxxxx-0009-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T06LeniRauchmelder',\t       'xxxxxxxx-0010-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T07SchlafenWand',\t       'xxxxxxxx-0011-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T08SchlafenRauchmelder',\t       'xxxxxxxx-0012-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T09Spitzboden',\t       'xxxxxxxx-0013-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T10BadTür',\t       'xxxxxxxx-0014-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T11TemperaturServerBreadboard',\t       'xxxxxxxx-0015-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/Haus/Temperatur/T12LeniTür',\t       'xxxxxxxx-0016-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T13JoniRauchmelder',\t       'xxxxxxxx-0017-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T14JoniTür',\t       'xxxxxxxx-0018-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T15ZirkulationKüche',\t       'xxxxxxxx-0019-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T16ZirkulationBad',\t       'xxxxxxxx-0020-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T17HausVorlauf',\t       'xxxxxxxx-0021-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T18HausRücklauf',\t       'xxxxxxxx-0022-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T19KellerVorlauf',\t       'xxxxxxxx-0023-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T20KellerRücklauf',\t       'xxxxxxxx-0024-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T21ZuluftHaus',\t       'xxxxxxxx-0025-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T22AbluftHaus',\t       'xxxxxxxx-0026-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T23AbluftKeller',\t       'xxxxxxxx-0027-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T24DieleRauchmelder',\t       'xxxxxxxx-0028-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T25WohnzimmerRauchmelder',\t       'xxxxxxxx-0029-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T26EssenRauchmelder',\t       'xxxxxxxx-0030-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T27EssenTürRaumtemp',\t       'xxxxxxxx-0031-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T28BüroRauchmelder',\t       'xxxxxxxx-0032-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T29HobbyRauchmelder',\t       'xxxxxxxx-0033-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T30FlurKellerRauchmelder',\t       'xxxxxxxx-0034-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T31HWRRauchmelder',\t       'xxxxxxxx-0035-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T32FlurobenRauchmelder',\t       'xxxxxxxx-0036-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T33FlurobenWand',\t       'xxxxxxxx-0037-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T34JoniZuluftmobilerESP_3',\t       'xxxxxxxx-0038-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T35LeniZuluftmobilerESP_4',\t       'xxxxxxxx-0039-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T36SchlafenZuluftmobilerESP_5',\t       'xxxxxxxx-0040-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T37KellerabgangRauchmelder',\t       'xxxxxxxx-0041-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T38Breadboard',\t       'xxxxxxxx-0042-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T39BME280_07',\t       'xxxxxxxx-0043-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T40BME280_08',\t       'xxxxxxxx-0044-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T41BME280_01',\t       'xxxxxxxx-0045-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T42BME280_02',\t       'xxxxxxxx-0046-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T43BME280_03',\t       'xxxxxxxx-0047-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T44BME280_04',\t       'xxxxxxxx-0048-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T45BME280_05',\t       'xxxxxxxx-0049-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T46BME280_06',\t       'xxxxxxxx-0050-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_07',\t       'xxxxxxxx-0051-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_08',\t       'xxxxxxxx-0052-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_01',\t       'xxxxxxxx-0053-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_02',\t       'xxxxxxxx-0054-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_03',\t       'xxxxxxxx-0055-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_04',\t       'xxxxxxxx-0056-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_05',\t       'xxxxxxxx-0057-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftfeuchtigkeit/BME280_06',\t       'xxxxxxxx-0058-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_07',\t       'xxxxxxxx-0059-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_08',\t       'xxxxxxxx-0060-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_01',\t       'xxxxxxxx-0061-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_02',\t       'xxxxxxxx-0062-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_03',\t       'xxxxxxxx-0063-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_04',\t       'xxxxxxxx-0064-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_05',\t       'xxxxxxxx-0065-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Luftdruck/BME280_06',\t       'xxxxxxxx-0066-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/DrehzahlZuluft',\t       'xxxxxxxx-0067-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/DrehzahlAbluft',\t       'xxxxxxxx-0068-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/DrehzahlFortluft',\t       'xxxxxxxx-0069-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Wasser/Meter' \t   \t   };\t   payload.data.(\t       $key := $lookup($uuidMap, uuid);\t       {\t           ($key? $key: \"unknown\"): tuples[0] \t       \t       }\t   \t   )\t\t)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":880,"wires":[["cf961e49.49d18","6111810d.c1a1d"]]},{"id":"9da8917b.d2f6d","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"complete":"payload","x":330,"y":660,"wires":[]},{"id":"4ba5f0b7.85044","type":"inject","z":"44c69799.54d068","name":"1 from /vzpush","topic":"","payload":"{\"data\":[{\"uuid\":\"xxxxxxxx-0001-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425885138,13924.9]]}]}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":660,"wires":[["9da8917b.d2f6d","4f9b4202.44a6f4","f68bfb1e.a795c"]]},{"id":"6c6f7971.06ff","type":"inject","z":"44c69799.54d068","name":"2 from /vzpush","topic":"","payload":"{\"data\":[{\"uuid\":\"xxxxxxxx-0004-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425891985,7.25]]}]}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":700,"wires":[["4f9b4202.44a6f4","cc9e1672.681e48","95b37d53.c33588"]]},{"id":"fefc81e5.8d139","type":"inject","z":"44c69799.54d068","name":"3 from /vzpush","topic":"","payload":"{\"data\":[{\"uuid\":\"xxxxxxxx-0034-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425899278,20.062]]},{\"uuid\":\"xxxxxxxx-0033-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425900088,19.625]]},{\"uuid\":\"xxxxxxxx-0026-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425886648,20.5]]},{\"uuid\":\"xxxxxxxx-0025-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425893608,21.25]]},{\"uuid\":\"xxxxxxxx-0024-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425896039,18.875]]},{\"uuid\":\"xxxxxxxx-0006-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425889078,46.937]]},{\"uuid\":\"xxxxxxxx-0032-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425887458,19.562]]},{\"uuid\":\"xxxxxxxx-0014-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425885838,20.312]]},{\"uuid\":\"xxxxxxxx-0023-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425890698,19.5]]},{\"uuid\":\"xxxxxxxx-0005-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425896848,9.937]]},{\"uuid\":\"xxxxxxxx-0008-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425885028,21.437]]},{\"uuid\":\"xxxxxxxx-0031-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425897659,20.187]]},{\"uuid\":\"xxxxxxxx-0022-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425894418,20.812]]},{\"uuid\":\"xxxxxxxx-0007-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425889888,39.375]]},{\"uuid\":\"xxxxxxxx-0018-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425895228,29.687]]},{\"uuid\":\"xxxxxxxx-0019-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425888268,29.5]]},{\"uuid\":\"xxxxxxxx-0020-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425892798,20.812]]},{\"uuid\":\"xxxxxxxx-0021-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425898468,21.375]]}]}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":740,"wires":[["4f9b4202.44a6f4","8efc19ee.4692d8","af4a18f8.020c4"]]},{"id":"db1fdebf.b479b8","type":"inject","z":"44c69799.54d068","name":"4 from /vzpush","topic":"","payload":"{\"data\":[{\"uuid\":\"xxxxxxxx-0003-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425943890,12330.1]]},{\"uuid\":\"xxxxxxxx-0002-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538425943080,13704.1]]}]}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":780,"wires":[["4f9b4202.44a6f4","8ac8e7a6.d8fc8","a80474e5.7aaf68"]]},{"id":"cc9e1672.681e48","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":330,"y":700,"wires":[]},{"id":"8efc19ee.4692d8","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":330,"y":740,"wires":[]},{"id":"8ac8e7a6.d8fc8","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":330,"y":780,"wires":[]},{"id":"6111810d.c1a1d","type":"split","z":"44c69799.54d068","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":510,"y":920,"wires":[["3173493c.e862f6","f4e53fe3.30269"]]},{"id":"3173493c.e862f6","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":670,"y":920,"wires":[]},{"id":"f4e53fe3.30269","type":"json","z":"44c69799.54d068","name":"","property":"payload","action":"","pretty":false,"x":650,"y":960,"wires":[["5a450f72.c8fd9"]]},{"id":"5a450f72.c8fd9","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":810,"y":960,"wires":[]},{"id":"df3c8bb2.0628f8","type":"function","z":"44c69799.54d068","name":"Format payload for MQTT only value","func":"var uuidMap = {\n       'xxxxxxxx-0001-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Strom/Haus'},\n       'xxxxxxxx-0002-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Strom/WärmepumpeHaupttarif'},\n       'xxxxxxxx-0003-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Strom/WärmepumpeNebentarif'},\n       'xxxxxxxx-0004-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T01Aussen'},\n       'xxxxxxxx-0005-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T02Fortluft'},\n       'xxxxxxxx-0006-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T03Warmwasserspeicher'},\n       'xxxxxxxx-0007-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T04WarmwasserVorlauf'},\n       'xxxxxxxx-0008-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T05Bad'},\n       'xxxxxxxx-0009-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T06LeniRauchmelder'},\n       'xxxxxxxx-0010-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T07SchlafenWand'},\n       'xxxxxxxx-0011-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T08SchlafenRauchmelder'},\n       'xxxxxxxx-0012-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T09Spitzboden'},\n       'xxxxxxxx-0013-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T10BadTür'},\n       'xxxxxxxx-0014-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T11TemperaturServerBreadboard'},\n       'xxxxxxxx-0015-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/Haus/Temperatur/T12LeniTür'},\n       'xxxxxxxx-0016-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T13JoniRauchmelder'},\n       'xxxxxxxx-0017-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T14JoniTür'},\n       'xxxxxxxx-0018-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T15ZirkulationKüche'},\n       'xxxxxxxx-0019-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T16ZirkulationBad'},\n       'xxxxxxxx-0020-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T17HausVorlauf'},\n       'xxxxxxxx-0021-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T18HausRücklauf'},\n       'xxxxxxxx-0022-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T19KellerVorlauf'},\n       'xxxxxxxx-0023-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/T20KellerRücklauf'},\n       'xxxxxxxx-0024-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T21ZuluftHaus'},\n       'xxxxxxxx-0025-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T22AbluftHaus'},\n       'xxxxxxxx-0026-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T23AbluftKeller'},\n       'xxxxxxxx-0027-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T24DieleRauchmelder'},\n       'xxxxxxxx-0028-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T25WohnzimmerRauchmelder'},\n       'xxxxxxxx-0029-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T26EssenRauchmelder'},\n       'xxxxxxxx-0030-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T27EssenTürRaumtemp'},\n       'xxxxxxxx-0031-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T28BüroRauchmelder'},\n       'xxxxxxxx-0032-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T29HobbyRauchmelder'},\n       'xxxxxxxx-0033-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T30FlurKellerRauchmelder'},\n       'xxxxxxxx-0034-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T31HWRRauchmelder'},\n       'xxxxxxxx-0035-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T32FlurobenRauchmelder'},\n       'xxxxxxxx-0036-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T33FlurobenWand'},\n       'xxxxxxxx-0037-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T34JoniZuluftmobilerESP_3'},\n       'xxxxxxxx-0038-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T35LeniZuluftmobilerESP_4'},\n       'xxxxxxxx-0039-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T36SchlafenZuluftmobilerESP_5'},\n       'xxxxxxxx-0040-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T37KellerabgangRauchmelder'},\n       'xxxxxxxx-0041-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T38Breadboard'},\n       'xxxxxxxx-0042-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T39BME280_07'},\n       'xxxxxxxx-0043-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T40BME280_08'},\n       'xxxxxxxx-0044-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T41BME280_01'},\n       'xxxxxxxx-0045-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T42BME280_02'},\n       'xxxxxxxx-0046-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T43BME280_03'},\n       'xxxxxxxx-0047-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T44BME280_04'},\n       'xxxxxxxx-0048-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T45BME280_05'},\n       'xxxxxxxx-0049-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Temperatur/T46BME280_06'},\n       'xxxxxxxx-0050-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_07'},\n       'xxxxxxxx-0051-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_08'},\n       'xxxxxxxx-0052-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_01'},\n       'xxxxxxxx-0053-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_02'},\n       'xxxxxxxx-0054-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_03'},\n       'xxxxxxxx-0055-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_04'},\n       'xxxxxxxx-0056-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_05'},\n       'xxxxxxxx-0057-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftfeuchtigkeit/BME280_06'},\n       'xxxxxxxx-0058-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_07'},\n       'xxxxxxxx-0059-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_08'},\n       'xxxxxxxx-0060-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_01'},\n       'xxxxxxxx-0061-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_02'},\n       'xxxxxxxx-0062-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_03'},\n       'xxxxxxxx-0063-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_04'},\n       'xxxxxxxx-0064-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_05'},\n       'xxxxxxxx-0065-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Luftdruck/BME280_06'},\n       'xxxxxxxx-0066-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/DrehzahlZuluft'},\n       'xxxxxxxx-0067-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/DrehzahlAbluft'},\n       'xxxxxxxx-0068-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Heizung/DrehzahlFortluft'},\n       'xxxxxxxx-0069-xxxx-xxxx-xxxxxxxxxxxx':{topic:'Haus/Wasser/Meter'}\n\t}; \n\n// Parse JSON\nvar myJsonObj = [];\nvar myJsonObj = JSON.parse(msg.payload);\n\n// Get UUID, timestamp and value\nvar myUuid = myJsonObj.data[0].uuid;\nvar myTimestamp = myJsonObj.data[0].tuples[0][0];\nvar myValue = myJsonObj.data[0].tuples[0][1];\n\nif (uuidMap[myUuid] !== undefined) {\n  // Create output payload\n  var myOutput = {};\n  myOutput.topic = uuidMap[myUuid]['topic'];\n  myOutput.payload = myValue;\n  return myOutput;\n}","outputs":1,"noerr":0,"x":570,"y":1120,"wires":[["b60a6e1e.3e5868"]]},{"id":"b60a6e1e.3e5868","type":"debug","z":"44c69799.54d068","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":830,"y":1120,"wires":[]},{"id":"f68bfb1e.a795c","type":"json","z":"44c69799.54d068","name":"","property":"payload","action":"","pretty":false,"x":310,"y":1060,"wires":[["df3c8bb2.0628f8"]]},{"id":"95b37d53.c33588","type":"json","z":"44c69799.54d068","name":"","property":"payload","action":"","pretty":false,"x":310,"y":1100,"wires":[["df3c8bb2.0628f8"]]},{"id":"af4a18f8.020c4","type":"json","z":"44c69799.54d068","name":"","property":"payload","action":"","pretty":false,"x":310,"y":1140,"wires":[["df3c8bb2.0628f8"]]},{"id":"a80474e5.7aaf68","type":"json","z":"44c69799.54d068","name":"","property":"payload","action":"","pretty":false,"x":310,"y":1180,"wires":[["df3c8bb2.0628f8"]]},{"id":"6cf9515c.8336d8","type":"comment","z":"44c69799.54d068","name":"Lösung mit function node:","info":"","x":370,"y":1020,"wires":[]},{"id":"29c2d21c.cae516","type":"comment","z":"44c69799.54d068","name":"Lösung mit change node:","info":"","x":370,"y":840,"wires":[]}]

 

 

Es bleibt jetzt noch die Fragestellung:

1. Wie krieg ich das so aufgeteilt, dass dabei für jedes Topic eine eigene Message mit folgendem Format erzeugt wird:
{"topic":"Haus/Heizung/T18HausRücklauf","payload":21.062,"_msgid":"c6a81ec4.8f35f"}   ?
(ich brauche nur “topic” und “payload”, die _msgid brauche ich nicht)

Lieben Dank und liebe Grüße,
Chris

 

 

 

 

Von: Frank Richter [mailto:frank.richter83 at gmail.com] 
Gesendet: Dienstag, 2. Oktober 2018 12:48
An: volkszaehler.org - users
Betreff: Re: [vz-users] Daten auf MQTT Topics verteilen

 

Hi Chiristian,

 

folgende Fragen/Anmerkungen:

 

* Worin unterscheiden sich die 4 Inject-Nodes?

* Warum benutzt du den Change-Node? Mehr als ein "undefined" kommt da nicht raus.

* Ich vermisse den Function-Node mit dem bisherigen Code, der zumindest das erste Array-Element auswertet.

 

Grüße

Frank

 

Am Di., 2. Okt. 2018 um 10:07 Uhr schrieb Christian Wulff <christianwulff at gmx.de>:

Hallo Frank,

 

das wäre wirklich sehr lieb, wenn du mir dabei nochmal helfen könntest.

Ich hab mich ne ganze Weile damit beschäftigt, aber leider noch keine gut funktionierende Lösung gefunden.

 

Hier ist eine Testsequenz mit Testdaten, die aus dem /vzpush rauskommen:

 

[{"id":"58b4a1f0.38211","type":"debug","z":"aac14499.e7214","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":510,"y":1240,"wires":[]},{"id":"2d338874.d09c9","type":"change","z":"aac14499.e7214","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"(\t  $uuidMap := {\t    'xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Strom/Haus',\t    'xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Strom/WärmepumpeHaupttarif',\t    'xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Strom/WärmepumpeNebentarif',\t    'xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T01Aussen',\t    'xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T02Fortluft',\t    'xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T03Warmwasserspeicher',\t    'xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Heizung/T04WarmwasserVorlauf',\t    'xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T05Bad',\t    'xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T06LeniRauchmelder',\t    'xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T07SchlafenWand',\t    'xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T08SchlafenRauchmelder',\t    'xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx': 'Haus/Temperatur/T12LeniTür'\t  };\t\t  payload.data.{\t    $lookup($uuidMap, uuid): tuples[0]\t  }\t)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":1240,"wires":[["58b4a1f0.38211"]]},{"id":"a13bb1ff.e694e","type":"debug","z":"aac14499.e7214","name":"","active":false,"tosidebar":true,"console":false,"complete":"payload","x":310,"y":1080,"wires":[]},{"id":"2b063ddf.a29fb2","type":"inject","z":"aac14499.e7214","name":"from /vzpush","topic":"","payload":"{\"_msgid\":\"91a80fdc.ad383\",\"payload\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"req\":{\"_readableState\":{\"objectMode\":false,\"highWaterMark\":16384,\"buffer\":{\"head\":null,\"tail\":null,\"length\":0},\"length\":0,\"pipes\":null,\"pipesCount\":0,\"flowing\":true,\"ended\":true,\"endEmitted\":true,\"reading\":false,\"sync\":false,\"needReadable\":false,\"emittedReadable\":false,\"readableListening\":false,\"resumeScheduled\":false,\"destroyed\":false,\"defaultEncoding\":\"utf8\",\"awaitDrain\":0,\"readingMore\":false,\"decoder\":null,\"encoding\":null},\"readable\":false,\"domain\":null,\"_events\":{},\"_eventsCount\":0,\"socket\":\"[internal]\",\"connection\":\"[internal]\",\"httpVersionMajor\":1,\"httpVersionMinor\":1,\"httpVersion\":\"1.1\",\"complete\":true,\"headers\":{\"host\":\"127.0.0.1:1880\",\"content-type\":\"application/json\",\"accept\":\"application/json\",\"user-agent\":\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"content-length\":\"1805\",\"expect\":\"100-continue\"},\"rawHeaders\":[\"Host\",\"127.0.0.1:1880\",\"Content-type\",\"application/json\",\"Accept\",\"application/json\",\"User-Agent\",\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"Content-Length\",\"1805\",\"Expect\",\"100-continue\"],\"trailers\":{},\"rawTrailers\":[],\"upgrade\":false,\"url\":\"/vzpush\",\"method\":\"POST\",\"statusCode\":null,\"statusMessage\":null,\"client\":\"[internal]\",\"_consuming\":true,\"_dumped\":false,\"baseUrl\":\"\",\"originalUrl\":\"/vzpush\",\"_parsedUrl\":{\"protocol\":null,\"slashes\":null,\"auth\":null,\"host\":null,\"port\":null,\"hostname\":null,\"hash\":null,\"search\":null,\"query\":null,\"pathname\":\"/vzpush\",\"path\":\"/vzpush\",\"href\":\"/vzpush\",\"_raw\":\"/vzpush\"},\"params\":{},\"query\":{},\"res\":\"[internal]\",\"body\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"_body\":true,\"_passport\":{\"instance\":{\"_key\":\"passport\",\"_strategies\":{\"session\":{\"name\":\"session\"},\"bearer\":{\"name\":\"bearer\",\"_realm\":\"Users\"},\"oauth2-client-password\":{\"name\":\"oauth2-client-password\"},\"anon\":{\"name\":\"anon\"}},\"_serializers\":[],\"_deserializers\":[],\"_infoTransformers\":[],\"_framework\":{},\"_userProperty\":\"user\",\"_sm\":{\"_key\":\"passport\"},\"strategies\":{}}},\"route\":{\"path\":\"/vzpush\",\"stack\":[{\"name\":\"cookieParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"httpMiddleware\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"corsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"metricsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"jsonParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"urlencodedParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"multipartParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"rawBodyParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"}],\"methods\":{\"post\":true}},\"cookies\":{},\"signedCookies\":{}},\"res\":{\"_res\":\"[internal]\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1080,"wires":[["a13bb1ff.e694e","2d338874.d09c9"]]},{"id":"d9cc42a5.c5641","type":"inject","z":"aac14499.e7214","name":"from /vzpush","topic":"","payload":"{\"_msgid\":\"91a80fdc.ad383\",\"payload\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"req\":{\"_readableState\":{\"objectMode\":false,\"highWaterMark\":16384,\"buffer\":{\"head\":null,\"tail\":null,\"length\":0},\"length\":0,\"pipes\":null,\"pipesCount\":0,\"flowing\":true,\"ended\":true,\"endEmitted\":true,\"reading\":false,\"sync\":false,\"needReadable\":false,\"emittedReadable\":false,\"readableListening\":false,\"resumeScheduled\":false,\"destroyed\":false,\"defaultEncoding\":\"utf8\",\"awaitDrain\":0,\"readingMore\":false,\"decoder\":null,\"encoding\":null},\"readable\":false,\"domain\":null,\"_events\":{},\"_eventsCount\":0,\"socket\":\"[internal]\",\"connection\":\"[internal]\",\"httpVersionMajor\":1,\"httpVersionMinor\":1,\"httpVersion\":\"1.1\",\"complete\":true,\"headers\":{\"host\":\"127.0.0.1:1880\",\"content-type\":\"application/json\",\"accept\":\"application/json\",\"user-agent\":\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"content-length\":\"1805\",\"expect\":\"100-continue\"},\"rawHeaders\":[\"Host\",\"127.0.0.1:1880\",\"Content-type\",\"application/json\",\"Accept\",\"application/json\",\"User-Agent\",\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"Content-Length\",\"1805\",\"Expect\",\"100-continue\"],\"trailers\":{},\"rawTrailers\":[],\"upgrade\":false,\"url\":\"/vzpush\",\"method\":\"POST\",\"statusCode\":null,\"statusMessage\":null,\"client\":\"[internal]\",\"_consuming\":true,\"_dumped\":false,\"baseUrl\":\"\",\"originalUrl\":\"/vzpush\",\"_parsedUrl\":{\"protocol\":null,\"slashes\":null,\"auth\":null,\"host\":null,\"port\":null,\"hostname\":null,\"hash\":null,\"search\":null,\"query\":null,\"pathname\":\"/vzpush\",\"path\":\"/vzpush\",\"href\":\"/vzpush\",\"_raw\":\"/vzpush\"},\"params\":{},\"query\":{},\"res\":\"[internal]\",\"body\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"_body\":true,\"_passport\":{\"instance\":{\"_key\":\"passport\",\"_strategies\":{\"session\":{\"name\":\"session\"},\"bearer\":{\"name\":\"bearer\",\"_realm\":\"Users\"},\"oauth2-client-password\":{\"name\":\"oauth2-client-password\"},\"anon\":{\"name\":\"anon\"}},\"_serializers\":[],\"_deserializers\":[],\"_infoTransformers\":[],\"_framework\":{},\"_userProperty\":\"user\",\"_sm\":{\"_key\":\"passport\"},\"strategies\":{}}},\"route\":{\"path\":\"/vzpush\",\"stack\":[{\"name\":\"cookieParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"httpMiddleware\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"corsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"metricsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"jsonParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"urlencodedParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"multipartParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"rawBodyParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"}],\"methods\":{\"post\":true}},\"cookies\":{},\"signedCookies\":{}},\"res\":{\"_res\":\"[internal]\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1120,"wires":[["2d338874.d09c9","f36a2088.552a6"]]},{"id":"3b1859e2.775fbe","type":"inject","z":"aac14499.e7214","name":"from /vzpush","topic":"","payload":"{\"_msgid\":\"91a80fdc.ad383\",\"payload\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"req\":{\"_readableState\":{\"objectMode\":false,\"highWaterMark\":16384,\"buffer\":{\"head\":null,\"tail\":null,\"length\":0},\"length\":0,\"pipes\":null,\"pipesCount\":0,\"flowing\":true,\"ended\":true,\"endEmitted\":true,\"reading\":false,\"sync\":false,\"needReadable\":false,\"emittedReadable\":false,\"readableListening\":false,\"resumeScheduled\":false,\"destroyed\":false,\"defaultEncoding\":\"utf8\",\"awaitDrain\":0,\"readingMore\":false,\"decoder\":null,\"encoding\":null},\"readable\":false,\"domain\":null,\"_events\":{},\"_eventsCount\":0,\"socket\":\"[internal]\",\"connection\":\"[internal]\",\"httpVersionMajor\":1,\"httpVersionMinor\":1,\"httpVersion\":\"1.1\",\"complete\":true,\"headers\":{\"host\":\"127.0.0.1:1880\",\"content-type\":\"application/json\",\"accept\":\"application/json\",\"user-agent\":\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"content-length\":\"1805\",\"expect\":\"100-continue\"},\"rawHeaders\":[\"Host\",\"127.0.0.1:1880\",\"Content-type\",\"application/json\",\"Accept\",\"application/json\",\"User-Agent\",\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"Content-Length\",\"1805\",\"Expect\",\"100-continue\"],\"trailers\":{},\"rawTrailers\":[],\"upgrade\":false,\"url\":\"/vzpush\",\"method\":\"POST\",\"statusCode\":null,\"statusMessage\":null,\"client\":\"[internal]\",\"_consuming\":true,\"_dumped\":false,\"baseUrl\":\"\",\"originalUrl\":\"/vzpush\",\"_parsedUrl\":{\"protocol\":null,\"slashes\":null,\"auth\":null,\"host\":null,\"port\":null,\"hostname\":null,\"hash\":null,\"search\":null,\"query\":null,\"pathname\":\"/vzpush\",\"path\":\"/vzpush\",\"href\":\"/vzpush\",\"_raw\":\"/vzpush\"},\"params\":{},\"query\":{},\"res\":\"[internal]\",\"body\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"_body\":true,\"_passport\":{\"instance\":{\"_key\":\"passport\",\"_strategies\":{\"session\":{\"name\":\"session\"},\"bearer\":{\"name\":\"bearer\",\"_realm\":\"Users\"},\"oauth2-client-password\":{\"name\":\"oauth2-client-password\"},\"anon\":{\"name\":\"anon\"}},\"_serializers\":[],\"_deserializers\":[],\"_infoTransformers\":[],\"_framework\":{},\"_userProperty\":\"user\",\"_sm\":{\"_key\":\"passport\"},\"strategies\":{}}},\"route\":{\"path\":\"/vzpush\",\"stack\":[{\"name\":\"cookieParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"httpMiddleware\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"corsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"metricsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"jsonParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"urlencodedParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"multipartParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"rawBodyParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"}],\"methods\":{\"post\":true}},\"cookies\":{},\"signedCookies\":{}},\"res\":{\"_res\":\"[internal]\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1160,"wires":[["2d338874.d09c9","9c257f3b.8a2458"]]},{"id":"7f272f2.f6c83d","type":"inject","z":"aac14499.e7214","name":"from /vzpush","topic":"","payload":"{\"_msgid\":\"91a80fdc.ad383\",\"payload\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"req\":{\"_readableState\":{\"objectMode\":false,\"highWaterMark\":16384,\"buffer\":{\"head\":null,\"tail\":null,\"length\":0},\"length\":0,\"pipes\":null,\"pipesCount\":0,\"flowing\":true,\"ended\":true,\"endEmitted\":true,\"reading\":false,\"sync\":false,\"needReadable\":false,\"emittedReadable\":false,\"readableListening\":false,\"resumeScheduled\":false,\"destroyed\":false,\"defaultEncoding\":\"utf8\",\"awaitDrain\":0,\"readingMore\":false,\"decoder\":null,\"encoding\":null},\"readable\":false,\"domain\":null,\"_events\":{},\"_eventsCount\":0,\"socket\":\"[internal]\",\"connection\":\"[internal]\",\"httpVersionMajor\":1,\"httpVersionMinor\":1,\"httpVersion\":\"1.1\",\"complete\":true,\"headers\":{\"host\":\"127.0.0.1:1880\",\"content-type\":\"application/json\",\"accept\":\"application/json\",\"user-agent\":\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"content-length\":\"1805\",\"expect\":\"100-continue\"},\"rawHeaders\":[\"Host\",\"127.0.0.1:1880\",\"Content-type\",\"application/json\",\"Accept\",\"application/json\",\"User-Agent\",\"vzlogger/0.6.0 (libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3)\",\"Content-Length\",\"1805\",\"Expect\",\"100-continue\"],\"trailers\":{},\"rawTrailers\":[],\"upgrade\":false,\"url\":\"/vzpush\",\"method\":\"POST\",\"statusCode\":null,\"statusMessage\":null,\"client\":\"[internal]\",\"_consuming\":true,\"_dumped\":false,\"baseUrl\":\"\",\"originalUrl\":\"/vzpush\",\"_parsedUrl\":{\"protocol\":null,\"slashes\":null,\"auth\":null,\"host\":null,\"port\":null,\"hostname\":null,\"hash\":null,\"search\":null,\"query\":null,\"pathname\":\"/vzpush\",\"path\":\"/vzpush\",\"href\":\"/vzpush\",\"_raw\":\"/vzpush\"},\"params\":{},\"query\":{},\"res\":\"[internal]\",\"body\":{\"data\":[{\"uuid\":\"xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292008,20.187]]},{\"uuid\":\"xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380292818,19.75]]},{\"uuid\":\"xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380279628,20.562]]},{\"uuid\":\"xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286108,21.125]]},{\"uuid\":\"xxxxxxxx-4444-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380288744,19.437]]},{\"uuid\":\"xxxxxxxx-5555-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282058,46.937]]},{\"uuid\":\"xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380280438,19.625]]},{\"uuid\":\"xxxxxxxx-7777-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380278798,20.437]]},{\"uuid\":\"xxxxxxxx-8888-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380283678,19.625]]},{\"uuid\":\"xxxxxxxx-9999-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380289573,12.125]]},{\"uuid\":\"xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380277983,21.562]]},{\"uuid\":\"xxxxxxxx-bbbb-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380290388,20.187]]},{\"uuid\":\"xxxxxxxx-cccc-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380286917,20.687]]},{\"uuid\":\"xxxxxxxx-dddd-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380282868,39.5]]},{\"uuid\":\"xxxxxxxx-eeee-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380287728,31.125]]},{\"uuid\":\"xxxxxxxx-ffff-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380281248,30.875]]},{\"uuid\":\"xxxxxxxx-gggg-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380285298,20.687]]},{\"uuid\":\"xxxxxxxx-hhhh-xxxx-xxxx-xxxxxxxxxxxx\",\"tuples\":[[1538380291198,21.187]]}]},\"_body\":true,\"_passport\":{\"instance\":{\"_key\":\"passport\",\"_strategies\":{\"session\":{\"name\":\"session\"},\"bearer\":{\"name\":\"bearer\",\"_realm\":\"Users\"},\"oauth2-client-password\":{\"name\":\"oauth2-client-password\"},\"anon\":{\"name\":\"anon\"}},\"_serializers\":[],\"_deserializers\":[],\"_infoTransformers\":[],\"_framework\":{},\"_userProperty\":\"user\",\"_sm\":{\"_key\":\"passport\"},\"strategies\":{}}},\"route\":{\"path\":\"/vzpush\",\"stack\":[{\"name\":\"cookieParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"httpMiddleware\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"corsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"metricsHandler\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"jsonParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"urlencodedParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"multipartParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"rawBodyParser\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"},{\"name\":\"<anonymous>\",\"keys\":[],\"regexp\":{\"fast_star\":false,\"fast_slash\":false},\"method\":\"post\"}],\"methods\":{\"post\":true}},\"cookies\":{},\"signedCookies\":{}},\"res\":{\"_res\":\"[internal]\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1200,"wires":[["2d338874.d09c9","5d5546f5.439248"]]},{"id":"f36a2088.552a6","type":"debug","z":"aac14499.e7214","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":310,"y":1120,"wires":[]},{"id":"9c257f3b.8a2458","type":"debug","z":"aac14499.e7214","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":310,"y":1160,"wires":[]},{"id":"5d5546f5.439248","type":"debug","z":"aac14499.e7214","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":310,"y":1200,"wires":[]}]

 

 

Dazu folgende zwei Problemstellungen:

 

1. Wie krieg ich das so aufgeteilt, dass dabei für jedes Topic eine eigene Message mit folgendem Format erzeugt wird:

{"topic":"Haus/Heizung/T18HausRücklauf","payload":21.062,"_msgid":"c6a81ec4.8f35f"}   ?

(ich brauche nur “topic” und “payload”, die _msgid brauche ich nicht)

 

2. Wie fange ich UUIDs ab, die nicht in der uuidMap stehen?

Momentan kommt dann immer folgende Fehlermeldung bei raus:

"Invalid JSONata expression: Key in object structure must evaluate to a string; got: undefined"

 

Liebe Grüße,

Chris

 

 

Von: Frank Richter [mailto:frank.richter83 at gmail.com] 
Gesendet: Dienstag, 2. Oktober 2018 02:08
An: volkszaehler.org - users
Betreff: Re: [vz-users] Daten auf MQTT Topics verteilen

 

Hi Christian,

 

wenn du noch Hilfe brauchst, schick mal deinen Flow, damit ich eine Basis zum Rumprobieren habe. Vielleicht komme ich diese Woche dazu.

 

Grüße

Frank

 

Am Di., 25. Sep. 2018 um 20:22 Uhr schrieb Christian Wulff <christianwulff at gmx.de>:

Moin Frank,

 

Ich steck tief im Schlamm L

Daran verzweifle ich leider, ich kann kein bisschen JavaScript.

Ich habe forEach() gesucht, gefunden und mehrere Seiten darüber durchgelesen, aber wenn man keine einzige Zeile JavaScript schreiben kann, dann ist das wie Kiswahili und Chinesisch. Kann ich auch beides nicht.

Könntest du mir dabei vielleicht weiter helfen?

 

Danke und liebe Grüße,

Chris

 

 

 

 

Von: Frank Richter [mailto:frank.richter83 at gmail.com] 
Gesendet: Dienstag, 25. September 2018 01:57
An: volkszaehler.org - users
Betreff: Re: [vz-users] Daten auf MQTT Topics verteilen

 

Hi,

 

ok, kapiert. Das data-Array kannst du mit forEach() auseinander nehmen. Beim return musst du dann wieder ein Array aus Message-Objekten übergeben (siehe https://nodered.org/docs/writing-functions#multiple-messages).

Den Rest dazwischen musst du selbst basteln ;-)

 

Grüße

Frank

 

Christian Wulff <christianwulff at gmx.de> schrieb am Mo., 24. Sep. 2018, 23:52:

Da hab ich mich wohl falsch ausgedrückt. Pro UUID ist immer nur ein timestamp und ein Wert drin.

Ich hatte weiter unten drei Beispiele eingefügt.

Hier nochmal:

{

    "data": [

        {

            "uuid": "xxxxxxxx-1111-xxxx-xxxx-xxxxxxxxxxxx",

            "tuples": [

                [

                    1537815350021,

                    13875.6

                ]

            ]

        }

    ]

}

Der läuft einwandfrei durch, weil es nur ein Kanal ist.

 

Beim nächsten sind zwei UUIDs drin, davon kriege ich nur die erste erwischt:

{

    "data": [

        {

            "uuid": "xxxxxxxx-2222-xxxx-xxxx-xxxxxxxxxxxx",

            "tuples": [

                [

                    1537815406656,

                    12309.5

                ]

            ]

        },

        {

            "uuid": "xxxxxxxx-3333-xxxx-xxxx-xxxxxxxxxxxx",

            "tuples": [

                [

                    1537815405848,

                    13683.8

                ]

            ]

        }

    ]

}

 

Und hier bei den Temperaturen kommt gleich ein ganzer Haufen zusammen, von dem ich auch nur den ersten rauskriege mit meinem Code ohne Schleife:

{

    "data": [

        {

            "uuid": "xxxxxxxx-6666-xxxx-xxxx-xxxxxxxxxxxx",

            "tuples": [

                [

                    1537815433104,

                    21.562

                ]

            ]

        },

        {

            "uuid": "xxxxxxxx-7777-xxxx-xxxxx-xxxxxxxxxxxx",

            "tuples": [

                [

                    1537815433972,

                    20.937

                ]

            ]

        },

        {

            "uuid": " xxxxxxxx-8888-xxxx-xxxxx-xxxxxxxxxxxx ",

            "tuples": [

                [

                    1537815420583,

                    21.75

                ]

            ]

        },

        {

            "uuid": " xxxxxxxx-9999-xxxx-xxxxx-xxxxxxxxxxxx ",

            "tuples": [

                [

                    1537815427434,

                    22.187

                ]

            ]

        },

        {

            "uuid": " xxxxxxxx-0000-xxxx-xxxxx-xxxxxxxxxxxx ",

            "tuples": [

                [

     ...

 

 

 

 

Von: Frank Richter [mailto:frank.richter83 at gmail.com] 
Gesendet: Montag, 24. September 2018 23:27
An: volkszaehler.org - users
Betreff: Re: [vz-users] Daten auf MQTT Topics verteilen

 

Für welchen Zählertyp liefert Push denn überhaupt mehr als 1 Tupel?

 

Grüße

Frank

 

Christian Wulff <christianwulff at gmx.de> schrieb am Mo., 24. Sep. 2018, 23:19:

Moin,

 

also wenn ich behilflich sein kann beim Testen, dann immer gerne.

Das Problem ist nur, dass ich kein JavaScript kann, von MQTT keine Ahnung habe, von Linux sicher keine Ahnung habe, usw.

Dennoch habe ich hier einiges zum Laufen bekommen mit Eurer Hilfe und Hilfe von Foren, wenn ich denn mal Zeit habe.

Und von der Zeit habe ich leider auch nicht so viel. Deswegen dauert es meistens eine Weile.

 

Ich hatte es ja zuerst ohne JSON node. Da hab ich gar nichts hinbekommen. Fehlermeldung: "SyntaxError: Unexpected token o in JSON at position 1"

Dann habe ich den JSON node eingefügt und schon ging es fast. Fehlermeldung: "TypeError: Cannot read property '0' of undefined"

Ich habe mit meinem Displayprojekt ja schon JSONs mit der ArduinoJSON Library geparst.

Zu der Library gibt’s einen JSON Assistent: https://arduinojson.org/v5/assistant/

Da habe ich die JSONs vom Push Server und vom VZLOGGER reingehauen und habe dann erkannt, dass es beim VZLogger ein kleines bisschen anders aufgebaut ist.

 

Anstatt:

var myUuid = myJsonObj.data.uuid;

var myTimestamp = myJsonObj.data.tuples[0][0];

var myValue = myJsonObj.data.tuples[0][1];

 

habe ich dann:

var myUuid = myJsonObj.data[0].uuid;

var myTimestamp = myJsonObj.data[0].tuples[0][0];

var myValue = myJsonObj.data[0].tuples[0][1];

In den Funktion node geschrieben. Und schon läuft es ohne Fehler durch.

 

Wenn ich das jetzt richtig durchblicke, wird so allerdings immer nur der erste Tuple des JSONs eingelesen, alle anderen nicht.

Die anderen würden wohl mit

var myUuid = myJsonObj.data[1].uuid;

var myTimestamp = myJsonObj.data[1].tuples[0][0];

var myValue = myJsonObj.data[1].tuples[0][1];

usw. eingelesen werden.

 

Jetzt müsste man irgendwie eine Schleife programmieren, die immer alle Tuples aus einem JSON ausgibt.

Aber da hab ich leider wieder keinen Plan wie das geht L

 

Ich wollte ja auch nur meine drei Stromzähler über den VZLOGGER an MQTT pushen. Die Stromzählerwerte kommen einzeln raus, daher funktioniert das jetzt provisorisch bei mir.

Schöner wäre es natürlich wenn ich alle Werte aus den JSON rauskriegen würde, und nicht nur den ersten Wert.

 

Liebe Grüße,

Chris

 

 

 

Von: Frank Richter [mailto:frank.richter83 at gmail.com] 
Gesendet: Montag, 24. September 2018 21:30
An: volkszaehler.org - users
Betreff: Re: [vz-users] Daten auf MQTT Topics verteilen

 

Hi Christian,

 

der Vorschlag von Matthias macht durchaus Sinn, das wäre der direkte Weg. Ich hab allerdings noch keine eigene Erfahrung mit MQTT via vzlogger, deswegen kann ich da nicht helfen. Aber Matthias freut sich sicher über Tester :-)

Den vzlogger kannst du wahrscheinlich auch auf dem alten Image neu compilieren. Aber irgendwann musst du halt auch mal upgraden, wenn du neue Features willst.

 

Ansonsten: lass den JSON-Node weg, das ist kontraproduktiv. Der Function Node erwartet ein Objekt, keinen String.

 

Grüße

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20181002/46ae83c6/attachment-0001.html>


More information about the volkszaehler-users mailing list