Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderator: Schattenschimmer

Antworten
FosCo
Beiträge: 1
Registriert: So 5. Apr 2020, 13:37

Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

Beitrag von FosCo »

Hi,

Auf der Suche nach einer guten Lösung zur graphischen Aufbereitung bin ich über dein Projekt gestolpert.
InfluxDB und Grafana gefielen mir schon bei einem kleinen rpi Monitoring Projekt.

Da mein PIKO 17 leider nur über die Modbus Schnittstelle integriert ist, möchte ich gerne ein Plugin für die Solaranzeige schreiben, welches die json Daten der Webschnittstelle verarbeitet, damit ich keine zusätzliche Hardware benötige bzw. Beim Standort des raspi nicht eingeschränkt bin.

Die "Doku" der Schnittstelle habe ich aus dem fhem Forum, der fhem ist aber für das reine logging in meinen Augen ein LKW zum Brötchen holen und mein fhem raspi möchte ich für die PV Visualisierung nicht überlasten.
https://forum.fhem.de/index.php?action= ... tach=59831
https://forum.fhem.de/index.php/topic,2 ... msg1040239

Gibt es eine Beschreibung des Datenbank Schemas und der Funktionsweise für Solaranzeige Plugins?
Dann würde ich mich Mal daran versuchen, wenn du einverstanden bist.

Danke und Grüße
Jonas

Benutzeravatar
Ulrich
Administrator
Beiträge: 1566
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

Beitrag von Ulrich »

Hallo Jonas,

das Projekt hat vor 3 1/2 Jahren mit nur einem Laderegler angefangen. Damals war überhaupt nicht abzusehen, was daraus einmal werden würde. Deshalb ist das Projekt auch nicht modular aufgebaut und für diese Größe durchdacht. Schnittstellen für Plugin's gibt es nicht und jede Datenbank für die einzelnen Geräte hat eine andere Strucktur. Ich versuche natürlich in der Zukunft immer mehr Struktur in das Projekt hinein zu bekommen, dass ist aber noch ein langer Weg.

Bitte sehe dir den Script "kostal_pico.php" an. Den musst Du verändern. Dort findest Du auch alle Hinweise, wo man die Datenbank Struktur finden könnte. (in funktionen.inc.php)
--------------------------------------
Ulrich [Admin]

samazw
Beiträge: 1
Registriert: Mi 6. Mai 2020, 10:09

Re: Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

Beitrag von samazw »

Anonsten hier mal schauen, wie man mit node-red das Web-UI vom Kostal Pico auslesen kann. Lässt sich adaptieren.
Zugegeben - von hinten durch die Brust ins Auge, aber es funktioniert:

[{"id":"4ad0e46.7796d1c","type":"function","z":"298e6055.ffac3","name":"parse http","func":"acPowerCurrent = parseInt(msg.payload[14].replace(/([^a-z0-9]+)/gi, ''));\ntotalEnergy = parseInt(msg.payload[17].replace(/([^A-Z0-9]+)/gi, ''));\ndailyEnergy = parseInt(msg.payload[26].replace(/([^a-z0-9]+)/gi, ''))/100;\nstring1voltage = parseInt(msg.payload[56].replace(/([^a-z0-9]+)/gi, ''));\nstring1current = parseInt(msg.payload[65].replace(/([^a-z0-9]+)/gi, ''))/100;\nstring2voltage = parseInt(msg.payload[82].replace(/([^a-z0-9]+)/gi, ''));\nstring2current = parseInt(msg.payload[91].replace(/([^a-z0-9]+)/gi, ''))/100;\nline1voltage = parseInt(msg.payload[59].replace(/([^a-z0-9]+)/gi, ''));\nline1power = parseInt(msg.payload[68].replace(/([^a-z0-9]+)/gi, ''));\nline2voltage = parseInt(msg.payload[85].replace(/([^a-z0-9]+)/gi, ''));\nline2power = parseInt(msg.payload[94].replace(/([^a-z0-9]+)/gi, ''));\nline3voltage = parseInt(msg.payload[111].replace(/([^a-z0-9]+)/gi, ''));\nline3power = parseInt(msg.payload[120].replace(/([^a-z0-9]+)/gi, ''));\nstatus = msg.payload[32].replace(/\\r?\\n|\\r/g, '').replace(/\\s/g, \"\");\n\n\nif (Number.isNaN(acPowerCurrent) === true){\n acPowerCurrent = 0;\n}\nif (Number.isNaN(totalEnergy) === true){\n totalEnergy = -1;\n}\nif (Number.isNaN(dailyEnergy) === true){\n dailyEnergy = 0;\n}\nif (Number.isNaN(string1voltage) === true){\n string1voltage = 0;\n}\nif (Number.isNaN(string1current) === true){\n string1current = 0;\n}\nif (Number.isNaN(string2voltage) === true){\n string2voltage = 0;\n}\nif (Number.isNaN(string2current) === true){\n string2current = 0;\n}\nif (Number.isNaN(line1voltage) === true){\n line1voltage = 0;\n}\nif (Number.isNaN(line1power) === true){\n line1power = 0;\n}\nif (Number.isNaN(line2voltage) === true){\n line2voltage = 0;\n}\nif (Number.isNaN(line2power) === true){\n line2power = 0;\n}\nif (Number.isNaN(line3voltage) === true){\n line3voltage = 0;\n}\nif (Number.isNaN(line3power) === true){\n line3power = 0;\n}\n\nmsg.payload = {\n \"acPowerCurrent\" : acPowerCurrent,\n \"totalEnergy\" : totalEnergy,\n \"dailyEnergy\" : dailyEnergy,\n \"status\" : status,\n \"string1voltage\" : string1voltage,\n \"string1current\" : string1current,\n \"string2voltage\" : string2voltage,\n \"string2current\" : string2current,\n \"line1voltage\" : line1voltage,\n \"line1power\" : line1power,\n \"line2voltage\" : line2voltage,\n \"line2power\" : line2power,\n \"line3voltage\" : line3voltage,\n \"line3power\" : line3power\n}\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;","outputs":1,"noerr":0,"x":860,"y":70,"wires":[["c4a0537.01675b"]]},{"id":"fd1711f2.7e7b4","type":"http request","z":"298e6055.ffac3","name":"kostal","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.1.99/index.fhtml","tls": ... :70,"wires":[["3f445786.6a93b8"]]},{"id":"3f445786.6a93b8","type":"html","z":"298e6055.ffac3","name":"","property":"payload","outproperty":"payload","tag":"td","ret":"text","as":"single","x":700,"y":70,"wires":[["4ad0e46.7796d1c"]]},{"id":"b32e7821.c1dc78","type":"inject","z":"298e6055.ffac3","name":"5 sec","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":400,"y":70,"wires":[["fd1711f2.7e7b4"]]}]


Quelle (es ist NICHT von mir) : https://flows.nodered.org/flow/2d3bf12a ... 20d16f754d

Antworten