Seite 1 von 1

Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

Verfasst: Do 9. Apr 2020, 10:39
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

Re: Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

Verfasst: Fr 10. Apr 2020, 10:04
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)

Re: Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

Verfasst: Mi 6. Mai 2020, 21:13
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

Re: Plugin zum Auslesen der Kostal PIKO 17 Webschnitstelle

Verfasst: So 10. Jul 2022, 11:54
von Ruhz69
Hallo,
hat das mal jeman auf diese Weise hinbekommen?
Gruss

Rüdiger

Edit: hat sich für mich erledigt.