Modul für den Kostal PIKO Wechselrichter

Begonnen von matzefisi, 25 Juni 2013, 19:43:13

Vorheriges Thema - Nächstes Thema

AK-868

Die Frage ist eher wie erstell ich einen Plott.

Muss ich noch ein wenig wiki studieren. Heute nimmer.

Schoene Arbeit gefaellt mir. Ich hab heute die 31kw gehabt :-)

vielen Dank.

Gute Nacht
Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


matzefisi

Moin John,

wie gehst Du dann mit Schlechtwetter wie z.B. Wolken / Gewitter usw. um? So wie ich verstanden haben, hast Du jetzt eine Quelle gefunden, die Dir die erwartete Sonneneinstrahlung unabhängig vom Wetter angibt, richtig?

Aber ansonsten respekt wie schnell Du die Sachen hinbekommst. Wenn ich überlege wie lange ich an dem Grundmodul gearbeitet (rumgebastelt) habe. Dazu muss ich aber auch sagen, dass ich noch nicht lange mit Perl arbeite.

@AK-868:
Um einen Plot zu erstellen, musst du zuerst die Readings in eine Datei schreiben lassen:

# Define für meinen Wechselrichter.
define power_Wechselrichter KOSTALPIKO ip-adresse user pass 5
attr power_Wechselrichter alias Wechselrichter

# Define für mein Log. Mit power_* sage ich dem Log, dass alle Geräte die mit power_ anfange in diese Datei loggen soll
define PowerLog FileLog %L/powerlog-%Y-%m-%d.log power_.*

Und wenn Du das gemacht hast, kannst Du unter "Undefined" oder "Everything" das "Gerät" PowerLog aufrufen und dort findest Du den Link "Create new SVG Plot". Und ab da kannst Du die Werte aus dem Screenshot von John nutzen.


MfG
Matthias

John

Hallo Matthias,
ich kann über die Qualität der Quelle nichts sagen.
Aber so schlecht wird diese nicht sein ,da sie für die Herrn Landwirte gemacht wurde.

In Folgendem erkläre ich, wie man zu der ortsbezogenen URL gelangt,  die die Globalstrahlung beinhaltet.

Folgende Seite aufrufen (ich exerziere es am Beispiel der Stadt Straubing)
http://www.proplanta.de/Agrar-Wetter/Deutschland/

Postleitzahl für Straubing eingeben: 94315
ggf. bei Auswahlbox rechts zusätzlich auswählen --> Button "Aufrufen"

Am untersten Ende der nun aufgerufenen Seite findet sich der Link zu
"Wetterrückbick Straubing" --> Click

Auf der nun erscheinenden Seite findet sich ebenfalls am unteren Ende:
"Wetteraussichten Heute" - Click

Nun merken wir uns die URL der aktuellen Seite:
http://www.proplanta.de/Wetter/Straubing-Wetter-Heute.html

oder allgemein

http://www.proplanta.de/Wetter/<Ort>-Wetter-Heute.html

Das war das Ziel: eine eindeutige ortsbezogene URL mit dem Inhalt der Globalstrahlung.

Unser Modul wird hier den Begriff "Globalstrahlung" suchen und den entsprechenden Wert extrahieren.
Das geschieht stündlich.

Ich habe ein Attribut vorgesehen, um diesen Link zu speichern:


(siehe Anhang / see attachement)


Das aktualisiert Modul folgt demnächst (will noch etwas testen).

In den technischen Unterlagen meiner PA-Anlagen ist der Systemnutzungsgrad ausgewiesen,
den ich als Gesamtwirkungsgrad verstehe.

Somit ergibt : Expected Energy = <PV-Fläche> * GlobalStrahlung * Systemnutzungsgrad

Dies habe ich mit den UserReadings realisiert:

attr Kostal userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Kostal","Global.Radiation",0)*37*0.10;;}

Sieht auch am 2. Tag sehr plausibel aus.

(siehe Anhang / see attachement)


John







CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

matzefisi

Hi,

super, dann ist das Wetter ja schon mit drin. Ich dachte das wäre jetzt wirklich nur die erwartete Sonneneinstrahlung ahnand von Sonnenstand usw. Aber so ist es ja perfekt. Ich gucke auch mal, ob die Werte bei mir passen und werde berichten.

Danke!

MfG
Matthias

matzefisi

So, ich hab's mal schnell durchgerechnet.

Heute erzeugt (laut Wechselrichter) 23,70 kWh
Nach deiner Formel hätten es sein müssen: 24,44 kWh

Ich würde sagen, das passt sehr gut. Coole Sache!

MfG
Matthias

John

Nachdem ich alles überprüft habe, nun das überarbeitete Modul.

Anpassungen:

Das Skript ist nun etwas wuchtiger geworden, wegen der Ermittlung der Globalstrahlung.

Daily.Energy.Last
wird einmalig ab 23:00 Uhr mit dem aktuellen Wert von Daily.Energy überschrieben und ist somit zunächst noch nicht
angelegt.
Damit wird dem Tageswert der noch korrekte Datumswert im Log-File zugeordnet und man könnte damit ggf. einen
Woche/Monatsbericht erstellen.

Global.Radiation
Hier wird die erwartete Globalstrahlung des Tages eingetragen.
Abhängig vom Attribut GR.Link. Wird nur ermittelt, wenn dieser auch definiert ist.
Die Abfrage erfolgt stündlich. Damit wächst der Graph im Chart mit.
(Man muss den Wert natürlich im Log-File aufzeichnen)

EnergyExpected

Habe ich als UserReading angelegt, kommt also nicht direkt vom Modul selbst.
Hier kann man über eine nach den eigenen Verhältnissen angepasste Formel den zu erwartende Tages-Energie berechnen.
Das Reading triggert man sinnigerweise über Global.Radiation.

Attribut delay

Parameter entfällt beim define, dafür wird er als Attribut angegeben.
Wenn nicht definiert, wird dieser automatisch mit 300 belegt.

Attribut Loglevel
Hierüber wird das Skript gesprächig und gibt einem Menge an Informationen in der Log-Datei aus.
Z.B. mit "loglevel 3", wenn "attr global verbose 3" gesetzt ist.

Definition am Beispiel:


Gerät definieren (Achtung: Zeilenumbruch ist nicht beabsichtigt)

define Kostal KOSTALPIKO 192.168.178.10 pvserver pvwr
attr Kostal GR.Link http://www.proplanta.de/Wetter/Straubing-Wetter-Heute.html
attr Kostal delay 300
attr Kostal loglevel 4
attr Kostal room System
attr Kostal userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Kostal","Global.Radiation",0)*37*0.10;;}


Mit dem UserReadings wird das neue Attribut EnergyExpected, das mit der Aktualisierung von Global.Radiation
neu berechnet wird und zwar mit dem in der geschweiften Klammer angegebenen Ausdruck.

Also hier mit PA-Fläche : 37 qm, System-Wirkungsgrad: 10%
EnergyExpected = Globalstrahlung * 37 * 0.10

Über GR.Link habe ich früher schon berichtet.
Link

Logfile definieren

# log-files definieren
define Kostal.File FileLog ./log/Kostal-%Y.log Kostal:(AC.Power|Daily.Energy|Total.Energy|ModeNum|EnergyExpected).*
attr Kostal.File logtype text
attr Kostal.File room System


Im einzelnen:
Zitat/log/Kostal-%Y.log
besagt, dass wir ein Logfile der Form Kostal-2013.log wollen, also über das Jahr

ZitatKostal:(AC.Power|Daily.Energy|Total.Energy|ModeNum|EnergyExpected).*
wir nehmen nur die wichtigsten Werte auf
 "Kostal" kennzeichnet das Gerät, der Rest nach dem ":" ein regulärer Ausdruck für die gewünschten Werte
 "|" ist hier als logsiches "Oder" zu verstehen
 "." ist ein Platzhalter für ein beliebiges Zeichen
 "*" sagt, dass sich dieses beliebig oft wiederholen kann

Chart definieren
define wl_Kostal.File_1 weblink fileplot Kostal.File:wl_Kostal.File_1:CURRENT
attr wl_Kostal.File_1 room System



John




CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

olindner

Hallo John,

großen Dank an Deine Arbeit. Es funktioniert super. Bei Deiner super Beschreibung kann man (fast) nichts falsch machen.

Habe jetzt einen 2. LogFile angelegt um "Daily.Energy.Last" zu loggen ...

define KostalM.File FileLog ./log/KostalM-%Y-%m.log Kostal:(Daily.Energy.Last).*
attr KostalM.File logtype text
define wl_KostalM.File_1 weblink fileplot KostalM.File:wl_KostalM.File_1:CURRENT
attr wl_KostalM.File_1 fixedrange month

Der Wert "Daily.Energy.Last" wird bei mir so gegen 4Uhr früh gespeichert, für den Tag davor! Wie bekomme ich es hin, das der PLOT dann Timestamp - 1 Tag anzeigt?

vielen Dank und viele Grüße
Olaf


John

Hallo Olaf,
das sollte eigentlich mit dem aktuellsten Skript von gestern erledigt sein.

Zitatwird einmalig ab 23:00 Uhr mit dem aktuellen Wert von Daily.Energy überschrieben und ist somit zunächst noch nicht
angelegt.

Bei der Version vorher war es dies anders. Hier wurde der Wert beim Neustart des Wechselrichters geschrieben.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AK-868

Ich hab noch was gefunden und zwar jedes mal wenn ich was in der config geändert habe kam ein Fehler bzgl. delay.


Delay muß dann als Globales attr hinzugefügt werden.

Ich hoffe das erklärt meine hmlan disconnects und fhem abstürze.

Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


John

Hallo Andre ,
hast du das aktuellste Skript (von gestern) im Einsatz ?

Damit sollte das Delay-Problem behoben sein.

Ansonsten schick mir bitte einen Auszug aus der Log-Datei.

Die Laufzeit des Skripts ist nicht unerheblich und kann mehrere Sekunden (je nach Rechner Power/Internetverbindung)
in Anspruch nehmen. FHEM muss ja jedes einzelne HTML-Tag parsen.

Vielleicht führt dies dazu, dass HMLAN ein Problem hat.

Noch länger dauert das Polling der externen ProPlanta-Seite. (kannst du deaktivieren indem du das Attribut GR.Link löschst)
Geh mal mit loglevel auf 3 und beobachte ob die Timeouts mit der Abfrage der Web-Sites korrelieren.

Vielleicht müssen wir das Polling auf die Betriebssystem-Ebene auslagern, damit FHEM nicht blockiert ist.


John


 
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AK-868

Hi John,

ich hab das script gerade eingelesen.

Webseite ist jetzt erst hinzugefügt.

Habe das Globale attr. hinzugefügt.

Bisher keine Disconnects mehr.

Im Log stand leider nichts, da sich fhem anscheinend vollständig verabschiedet hat.

Eine andere Frage,

Kann ich Einträge in das Logfile in größeren Abständen schreiben, als das delay der Abfrage vom Wechselrichter?
Oder Durchschnittswerte?

Ich möchte Geräte in Abhängigkeit der Solarleistung schalten, daher benötige ich relativ genaue Leistungsdaten. (AC.Power)

Wenn nicht muß ich ein wenig umgestalten. Die .pm Massiv abspecken und nur AC.Power abfragen.


(siehe Anhang / see attachement)



Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


John

Hallo Andre,
dein Wunsch ist nachvollziehbar. Du verwendest den erzeugten Strom selbst.

Ich habe nun ein neues Reading AC.Power.Fast eingeführt.
Auszug aus EventLog:

2013-07-03_08:55:29 Kostal AC.Power.Fast: 830
2013-07-03_08:56:29 Kostal AC.Power.Fast: 842
2013-07-03_08:57:29 Kostal AC.Power.Fast: 856
2013-07-03_08:58:29 Kostal AC.Power.Fast: 874
2013-07-03 08:59:29 KOSTALPIKO Kostal AC.Power: 890
2013-07-03 08:59:29 KOSTALPIKO Kostal AC.Power.Fast: 890
2013-07-03 08:59:29 KOSTALPIKO Kostal Daily.Energy: 1.56
2013-07-03 08:59:29 KOSTALPIKO Kostal generator.3.current: 1.52
2013-07-03 08:59:29 KOSTALPIKO Kostal generator.3.voltage: 617
2013-07-03 08:59:29 KOSTALPIKO Kostal output.1.power: 300
2013-07-03 08:59:29 KOSTALPIKO Kostal output.1.voltage: 230
2013-07-03 08:59:29 KOSTALPIKO Kostal output.2.power: 301
2013-07-03 08:59:29 KOSTALPIKO Kostal output.3.power: 289
2013-07-03 08:59:29 KOSTALPIKO Kostal W: 890 - Einspeisen MPP


Das neue Reading wird also schneller abgefragt als die übrigen.
Werde es den Tag über laufen lassen und melde mich am Abend wieder.

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Harald

Hallo zusammen,

das ist ein tolles Modul, was Ihr da erstellt habt. So etwas ähnliches würde ich auch gerne nutzen. Ich besitze seit 2001 eine Solaranlage mit Fronius-Wechelrichter. Dieser hat eine RS232-Schnittstelle.

Welche Schnittstelle verwendet Ihr? Der PIKO hat ja mehrere Möglichkeiten.

Wie muss der Aufruf in der fhem.cfg gestaltet werden?

Vielen Dank schonmal im Voraus für Eure Auskünfte

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

matzefisi

Hi Harald,

ich denke da kommst Du mit unserem Modul leider nicht weiter. Dieses Modul greift auf den Webserver des Wechselrichters zu und wertet dann die empfangene HTML Seite aus. Also nutzen wir kein RS232.
Aber ich meine, dass es für RS232 Wechselrichter/Solarlogger auch schon Module gibt.

Aufruf in der CFG hat John bereits beschrieben: HIER

MfG
Matthias

Harald

Danke Matthias für die Info,

das habe ich befürchtet, als ich las, dass der PIKO auch über's Netz ansprechbar ist. Dann werde ich mal weiter suchen.

Viel Spaß und Erfolg noch von

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus