Modul für den Kostal PIKO Wechselrichter

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

Vorheriges Thema - Nächstes Thema

John

Hallo Heiner,
ich habe für einen Max-Fensterkontakt einen Betriebsstundenzähler programmiert.

Ich messe damit die Einschaltdauer meines Brenners und die Brennerstarts.

Das Reading cntOntimePerDayHours ist der Betriebsstundenzähler über den Tag.
Der Zähler wird bei Tageswechsel automatisch zurückgesetzt.
Man kann statt des Stundenzählers auch den Sekundenzähler cntOntimePerDaySeconds verwenden.

Der Link zum Thema
Link

Vielleicht hilft dir das etwas weiter.

Gruß
John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

budda85

Hallo zusammen,
ich beschäftige mich erst seit kurzem mit FHEM.
Ich habe das Kostal Modul bei mir eingerichtet bekommen, allerdings werden bei mir ALLE Werte geloggt, statt nur den gewolten.
Vielleicht kann mir ja einer sagen was ich falsch gemacht habe.
Danke für das super Modul.

Gruß Jan

Hier mein Code

##################################
#           KOSTAL PICO
##################################

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

# log-files definieren
define Kostal.File FileLog ./log/Kostal-%Y.log Kostal
attr Kostal.File logtype Kostal:AC.Power|Daily.Energy|Total.Energy|ModeNum|EnergyExpected,text
attr Kostal.File room 90_Log_Files

define SVG_Kostal.File_1 weblink fileplot Kostal.File:SVG_Kostal.File_1:CURRENT
attr SVG_Kostal.File_1 room 20_PV_Anlage

define Kostal.File_2 FileLog ./log/Kostal_2-%Y.log Kostal
attr Kostal.File_2 logtype Kostal:Daily.Energy.Last,text
attr Kostal.File_2 room 90_Log_Files

define SVG_Kostal.File_2 weblink fileplot Kostal.File_2:SVG_Kostal.File_2:CURRENT
attr SVG_Kostal.File_2 fixedrange month
attr SVG_Kostal.File_2 room 20_PV_Anlage

John

Hallo Jan

verssuchs mal damit:


define Kostal.File FileLog ./log/Kostal-%Y.log Kostal:(AC.Power:|Daily.Energy:|Daily.Energy.Last:|Total.Energy:|ModeNum:|EnergyExpected:).*
attr Kostal.File logtype text
attr Kostal.File room 90_Log_Files


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

budda85

Hi John,
scheint zu klappen, DANKE!

Vielleicht nochmal für mein Verständnis:
define Kostal.File FileLog ./log/Kostal-%Y.log Kostal:(AC.Power:|Daily.Energy:|Daily.Energy.Last:|Total.Energy:|ModeNum:|EnergyExpected:).*

Ich definiere ein FileLog mit dem Namen Kostal.File, was in den Ordner log unter Kostal-2013.log gespeichert wird. Nun will ich aus meinem Kostal (der vorher als KOSTALPIKO) definiert wird, nur die Werte in der Klammer haben.
Was aber bedeutet das .* ?

Regexp.png:
Da sehe ich jetzt meine gefilterten Werte richtig?
Nur sehen für mich der erste und letzte Wert nicht richtig aus mit den Klammern  :o :D


Was bedeutet der Blog im Anhang: Logfile Übersicht.png?

Sorry für ganzen Fragen, aber ich persönlich lerne die solche Sachen schneller durchs machen und ausprobieren, statt durchs lesen  :P ;)

John

#79
Hallo Jan,
viele Definitionen unter FHEM kann man mit RegularExpressions vornehmen.
Perl unterstützt diese sehr gut.
Also empfehle ich dir, dich damit auseinanderzusetzen.

Ich teile dein Unverständnis zu Regexp.png.

zum Thema:
im Comandref zu Filelog findet man
ZitatThe regexp will be checked against the device name devicename:event

<devicename> : hier ist das Device einzutragen, von dem wir die Events speichern wollen, also Kostal; könnte wohl auch
                        ein regexp sein, wenn wir mehrere Kostals hätten
":"                     der Separator für die Beschreibung der Events, die wir haben wollen
<event>          : das ist die Beschreibung für die Events, die wir haben wollen als REGEXP

<event> betrachten wir näher:
Zitat(AC.Power:|Daily.Energy:|Daily.Energy.Last:|Total.Energy:|ModeNum:|EnergyExpected:).*

()   bedeutet, dass nun mehrere Varianten an dieser Textstelle möglich sind , um einen Treffer zu landen
|    ist eine logische Oderung der einzelnen Ausdrücke

.    steht für ein belieges Zeichen
*  das 0-n-mal auftreten kann  (es ist also egal was hinterher noch an Zeichen kommt)

Als Hilfe nehmen wir einen Auszug aus dem Event-Monitor:


2013-11-07 13:37:39 KOSTALPIKO Kostal AC.Power: 3952
2013-11-07 13:37:39 KOSTALPIKO Kostal AC.Power.Fast: 3952
2013-11-07 13:37:39 KOSTALPIKO Kostal W: 3952 - Einspeisen MPP


Wir betrachten die erste Zeile: KOSTALPIKO ist das device.
es geht also um folgenden Ausdruck:  "AC.Power: 3952"

"AC.Power:"    Ist eine Variante in unserem Ausdruck (AC.Power:|Daily.Energy:|Daily.Energy.Last:|Total.Energy:|ModeNum:|EnergyExpected:)
" 3952"           mit .* akzeptieren wir alles was danach kommt.

Ergebnis: die Zeile ist ein Treffer für unseren Filter.

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

budda85

Ahhaaaa!
Na das hab ich jetzt verstanden. ;D
Großen Dank an dich für die super Beschreibung.

Die RegularExpressions sehe ich mir dann nochmal genauer an.
Danke nochmals.

Heiner

Hallo,
ich hab auch den Kostal Piko im einsatz. Um die Leistung pro String zu plotten muesste ich die gegebenen Readings Spannung String 1 Strom String 1 usw. mit einander multiplizieren. Wie geht das?

Geht das nur in der Kostal.pm oder auch innerhalb der fhem.cfg mit einem Dummy oder so oder sogar innerhalb des SVG Plot?

Vielen Dank fuer die Hilfe.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

John

Hallo Heiner,
da solltest du dir die UserReadings in der Commandref genauer ansehen.

Hier kann man eigene Readings von bestehenden ableiten.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Heiner

hi ich versuchs aber schaffe es leider nicht.

mein
attr Wechselrichter userreadings Generator.1.power:generator.1.current { return ReadingsVal("Wechselrichter","generator.1.current",0) * return ReadingsVal("Wechselrichter","generator.1.voltage",0)}

erzeugt noch  nicht einmal das neue Reading Generator.1.power
geschweige denn das es die Berechnung ausführen würde.

Danke für die Hilfe
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

John

Hallo Heiner,

ich hab das mal selbst probiert und es gibt das tatsächlich einige Hürden.

Folgendes funktioniert: (immer alles in einer Zeile)
attr Kostal userReadings generator_3_power {return ReadingsVal("Kostal","generator.3.current",0)*ReadingsVal("Kostal","generator.3.voltage",0);;}

Das geht nicht: (scheinbar darf der Name für das neue Reading keine Punkte enthalten)
attr Kostal userReadings generator.3.power {return ReadingsVal("Kostal","generator.3.current",0)*ReadingsVal("Kostal","generator.3.voltage",0);;}

Wenn wir die Triggerbedingung noch sinnvoll einschränken siehts so aus:
attr Kostal userReadings generator_3_power:generator.3.* {return ReadingsVal("Kostal","generator.3.current",0)*ReadingsVal("Kostal","generator.3.voltage",0);;}

Wenn das ganze zusammen mit EnergyExpected funktionieren soll: (alles in einer Zeile)
attr Kostal userReadings EnergyExpected:Global.Radiation {return ReadingsVal("Kostal","Global.Radiation",0)*37*0.10;;},generator_3_power:generator.3.* {return ReadingsVal("Kostal","generator.3.current",0)*ReadingsVal("Kostal","generator.3.voltage",0);;}

Ich hoffe das hilft weiter.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Heiner

Hallo, nochmal was ganz anderes. Ich hab einen HMLAN im Einsatz und meinen Kostalwechelrichter. DER HMLAN erzeugt immer wieder disconnects weil ein KeepAlive Signal um mehr als 5 Sekunden verzoegert wird.

Nach einigen Analysen  mit den Experten in Homemmatic stellten wir fest das die Ursache beim Kostalmodul zu liegen scheint, Hier sagt
apptime maxDly
                         name                function                max   count    total     average    maxDly
tmr-KOSTALPIKO_GetStatus       HASH(0xd14da8)   6194   1233   752921   610.64    674 HASH(0xd14da8)

das bedeutet das die Abfrage bis zu 6.2 Sekunden dauert.

Kann man daran was aendern?

Im Moment habe ich den delay auf 60, und den delaycounter auf 5, ich wird das mal auf 300 und 1 aendern auch wenn ich dann die Fastabfrage verliere.( Soolte aber nichts ändern oder?)

Kann man sonst noch was machen?

Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Joachim

Moin Heiner,
ich habe zwar keinen Kostalwechelrichter, aber eine Lösung wäre, den Wechselrichter in eine eigene FHEM-Instanz auszulagern, und die Daten dann mit FHEM2FHEM und cloneDummy an die Hauptinstanz zu übergeben.
Passende Links, auch wenn es nicht um einen Kostalwechselrichter geht:

http://forum.fhem.de/index.php/topic,21654.0.html
http://forum.fhem.de/index.php/topic,23638.0.html
http://forum.fhem.de/index.php/topic,22469.0.html

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

John

Hallo Heiner,
ich vermute, das Problem liegt bei der Erfassung der Globalstrahlung.

Damit wir die Ursache finden, solltest du ab Zeile 498 folgende Zeilen auskommentieren

   # stündlich Globalstrahlung aktualisieren
  # if ( $hour != $hash->{"GR.Hour"} || !defined($hash->{READINGS}{"Global.Radiation"}{VAL})) {
  #   KOSTAL_GetGlobalRadiation($hash);
  #   $hash->{"GR.Hour"} =$hour;
  # }


Wenn das beschriebene Problem danach verschwunden ist, kennen wir den Grund und können weiter sehen.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Heiner

Hi,

ich habs auskomentiert und das Ergebnis lautet:

tmr-KOSTALPIKO_GetStatus       HASH(0xd24098)    579      1      579   579.00      4 HASH(0xd24098)

etwas schneller aber immer noch sehr langsam.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

John

Hi Heiner,
wenn du die WEB-Seite http://<ip-kostal>/index.fhtml
aufrufst, wie lange dauert das ?

Schick mal bitte ein
list <dein-Kostal>

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP