NEWS
mit Blockly CSV Daten aus HTTP auf MQTT schicken
-
Hallo zusammen
da ja jetzt lagsam wieder die Poolsaison beginnt, habe ich mir als Ziel gesetzt meinen Poolcontroller von Pooldigital in den ioBroker einzubinden.
Wenn ich IP/GetState.csv sende bekomme ich daten zurück, aber ich weis leider nicht, wie ich diesen Haufen jetzt weiter verarbeiten kann um die daten per MQTT zu senden.
Würde mich über Hilfe sehr freuen.
Grüsse
MichaSYSINFO,1.7.3,3817120,0,1,0,256,4,2,2 Time,n.a.,n.a.,Kesseldruck,n.a.,CPU Temp,Redox,pH,Pool,SolarRL,Luft,SolarDach,Schacht,Whirlpool,n.a.,n.a.,Filterpumpe,Brunnen,pH Minus,Durchlaufheizer,Wasserzul.,Beleuchtung,SolarBypass,CEE Pumpe Alt,Wasser Tief,Wasser Hoch,TASTER3,TASTER4,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,Cl Rest,pH- Rest,pH+ Rest,Cl consumption,pH- consumption,pH+ consumption h,mV,mV,Bar,mV,C,mV,pH,C,C,C,C,C,C,C,C,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,%,%,%,ml,ml,ml 0,0,0,-0.400,0,147.5,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1,0.0625,0.0625,0.000041666666,0.0625,-0.00468750,0.0625,0.0078125,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.1,0.1,0.1,1,1,1 4917,19826,15489,26993,29,20860,2258,-72,229,227,0,0,230,297,0,0,3,2,2,2,2,2,0,2,1,1,0,0,0,0,0,0,0,0,0,0,1000,1000,1000,0,0,0 -
Hallo zusammen
da ja jetzt lagsam wieder die Poolsaison beginnt, habe ich mir als Ziel gesetzt meinen Poolcontroller von Pooldigital in den ioBroker einzubinden.
Wenn ich IP/GetState.csv sende bekomme ich daten zurück, aber ich weis leider nicht, wie ich diesen Haufen jetzt weiter verarbeiten kann um die daten per MQTT zu senden.
Würde mich über Hilfe sehr freuen.
Grüsse
MichaSYSINFO,1.7.3,3817120,0,1,0,256,4,2,2 Time,n.a.,n.a.,Kesseldruck,n.a.,CPU Temp,Redox,pH,Pool,SolarRL,Luft,SolarDach,Schacht,Whirlpool,n.a.,n.a.,Filterpumpe,Brunnen,pH Minus,Durchlaufheizer,Wasserzul.,Beleuchtung,SolarBypass,CEE Pumpe Alt,Wasser Tief,Wasser Hoch,TASTER3,TASTER4,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,Cl Rest,pH- Rest,pH+ Rest,Cl consumption,pH- consumption,pH+ consumption h,mV,mV,Bar,mV,C,mV,pH,C,C,C,C,C,C,C,C,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,%,%,%,ml,ml,ml 0,0,0,-0.400,0,147.5,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1,0.0625,0.0625,0.000041666666,0.0625,-0.00468750,0.0625,0.0078125,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.1,0.1,0.1,1,1,1 4917,19826,15489,26993,29,20860,2258,-72,229,227,0,0,230,297,0,0,3,2,2,2,2,2,0,2,1,1,0,0,0,0,0,0,0,0,0,0,1000,1000,1000,0,0,0 -
@mibr85
Die CSV-Daten sind nicht leicht zu handhaben. Ansatz:
Im Log erscheinen 42 Zahlen.
Der gepostete CSV-Inhalt enthält nach dem Kopieren Leerzeichen anstelle von Zeilenschaltungen. Mit Zeilenschaltungen im CSV wäre es einfacher:
@paul53
Vielen Dank für deine schnelle Antwort, wie immer ;-)
die Zeilenumbrüche sind mit /n
also im Node Red habe ich es so gelöst, weiss aber nicht so richtig ob ich das so in den ioBroker bekomme:var rows = msg.payload.split("\n"); var names = rows[1].split(','); var units = rows[2].split(','); var offsets = rows[3].split(','); var gains = rows[4].split(','); var rawValues = rows[5].split(','); var result = {}; for (var i = 0; i < 41; i++) { var obj = {}; obj.unit = units[i]; obj.value = 1 * offsets[i] + (gains[i] * rawValues[i]); if (names[i] != "n.a.") { result[names[i]] = obj; } } msg.payload = result; return msg; -
@paul53
Vielen Dank für deine schnelle Antwort, wie immer ;-)
die Zeilenumbrüche sind mit /n
also im Node Red habe ich es so gelöst, weiss aber nicht so richtig ob ich das so in den ioBroker bekomme:var rows = msg.payload.split("\n"); var names = rows[1].split(','); var units = rows[2].split(','); var offsets = rows[3].split(','); var gains = rows[4].split(','); var rawValues = rows[5].split(','); var result = {}; for (var i = 0; i < 41; i++) { var obj = {}; obj.unit = units[i]; obj.value = 1 * offsets[i] + (gains[i] * rawValues[i]); if (names[i] != "n.a.") { result[names[i]] = obj; } } msg.payload = result; return msg;@mibr85 sagte: weiss aber nicht so richtig ob ich das so in den ioBroker bekomme:
Das ist doch Javascript-Code, außer msg.payload. Das Ergebnis ist ein Objekt.
Du möchtest die Werte sicherlich in Datenpunkte schreiben:
const path = '0_userdata.0.pool.control.' function pool(csv) { var rows = csv.split("\n"); var names = rows[1].split(','); var units = rows[2].split(','); var offsets = rows[3].split(','); var gains = rows[4].split(','); var rawValues = rows[5].split(','); for (var i = 0; i < 42; i++) { let value = 1 * offsets[i] + (gains[i] * rawValues[i]); if (names[i] != "n.a.") { setState(path + names[i], value, true); } } } schedule('*/15 * * * * *', function() { request('192.168.100.90/GetState.csv', function(err, response, data) { if(err) log(err, 'warn'); else pool(data); }); }); -
@mibr85 sagte: weiss aber nicht so richtig ob ich das so in den ioBroker bekomme:
Das ist doch Javascript-Code, außer msg.payload. Das Ergebnis ist ein Objekt.
Du möchtest die Werte sicherlich in Datenpunkte schreiben:
const path = '0_userdata.0.pool.control.' function pool(csv) { var rows = csv.split("\n"); var names = rows[1].split(','); var units = rows[2].split(','); var offsets = rows[3].split(','); var gains = rows[4].split(','); var rawValues = rows[5].split(','); for (var i = 0; i < 42; i++) { let value = 1 * offsets[i] + (gains[i] * rawValues[i]); if (names[i] != "n.a.") { setState(path + names[i], value, true); } } } schedule('*/15 * * * * *', function() { request('192.168.100.90/GetState.csv', function(err, response, data) { if(err) log(err, 'warn'); else pool(data); }); });@paul53 sagte in mit Blockly CSV Daten aus HTTP auf MQTT schicken:
const path = '0_userdata.0.pool.control.'
sorry für die doofe Frage aber wie bekomme ich denn den Get request da noch mit rein?
oder gar nicht über blockly sondern direkt über ne Javascript funktion?
-
Hallo zusammen
da ja jetzt lagsam wieder die Poolsaison beginnt, habe ich mir als Ziel gesetzt meinen Poolcontroller von Pooldigital in den ioBroker einzubinden.
Wenn ich IP/GetState.csv sende bekomme ich daten zurück, aber ich weis leider nicht, wie ich diesen Haufen jetzt weiter verarbeiten kann um die daten per MQTT zu senden.
Würde mich über Hilfe sehr freuen.
Grüsse
MichaSYSINFO,1.7.3,3817120,0,1,0,256,4,2,2 Time,n.a.,n.a.,Kesseldruck,n.a.,CPU Temp,Redox,pH,Pool,SolarRL,Luft,SolarDach,Schacht,Whirlpool,n.a.,n.a.,Filterpumpe,Brunnen,pH Minus,Durchlaufheizer,Wasserzul.,Beleuchtung,SolarBypass,CEE Pumpe Alt,Wasser Tief,Wasser Hoch,TASTER3,TASTER4,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,Cl Rest,pH- Rest,pH+ Rest,Cl consumption,pH- consumption,pH+ consumption h,mV,mV,Bar,mV,C,mV,pH,C,C,C,C,C,C,C,C,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,%,%,%,ml,ml,ml 0,0,0,-0.400,0,147.5,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1,0.0625,0.0625,0.000041666666,0.0625,-0.00468750,0.0625,0.0078125,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.1,0.1,0.1,1,1,1 4917,19826,15489,26993,29,20860,2258,-72,229,227,0,0,230,297,0,0,3,2,2,2,2,2,0,2,1,1,0,0,0,0,0,0,0,0,0,0,1000,1000,1000,0,0,0@mibr85 sagte in mit Blockly CSV Daten aus HTTP auf MQTT schicken:
Wenn ich IP/GetState.csv sende
gibt es da boch andere Optionen? json vielleicht?
-
@mibr85 sagte in mit Blockly CSV Daten aus HTTP auf MQTT schicken:
Wenn ich IP/GetState.csv sende
gibt es da boch andere Optionen? json vielleicht?
-
@paul53 sagte in mit Blockly CSV Daten aus HTTP auf MQTT schicken:
const path = '0_userdata.0.pool.control.'
sorry für die doofe Frage aber wie bekomme ich denn den Get request da noch mit rein?
oder gar nicht über blockly sondern direkt über ne Javascript funktion?
-
@mibr85 sagte: wie bekomme ich denn den Get request da noch mit rein?
Habe ich oben ergänzt (ab Zeile 20).
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden