Modul für den Kostal PIKO Wechselrichter

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

Vorheriges Thema - Nächstes Thema

matzefisi

Hallo zusammen,

ich habe mich mal daran gemacht und ein Modul für den Kostal PIKO Wechselrichter zusammengebastelt. Es läuft bei mir bislang einwandfrei.Vorlage dafür war das Modul 23_WEBIO.pm.
Da es mein erstes Modul bzw. meine erste Perl Basteslei für FHEM is, würde ich mich über ein paar Anmerkungen oder Tips sehr freuen.

Viel Spaß beim Ausprobieren.

UPDATE: John hat eine neue Version dieses Moduls auferlegt. Bitte verwendet in Zukunft nur noch Version 2.0
http://forum.fhem.de/index.php/topic,24409.msg175253.htm

MfG
Matthias

olindner

Hallo Matthias, Klasse ... eingebaut und lief sofort. Der aktuelle Wert wird angezeigt. Muss mich erst reinfinden, perl ist nicht so meins. Mal sehen ob ich mich an den Tagesertrag ran traue.

Danke und viele Grüße
Olaf

John

Hallo Matthias

vielen Dank für das neue Modul.

Mir ist noch aufgefallen, dass beim Aufruf des InternTimer immer fix die 5 Sekunden verwendet werden.
Dafür war wohl der Parameter Delay gedacht.
Das Polling alle 5 Sekunden war mir zu heftig. Daher die kleine Änderung.

KOSTALPIKO_GetStatus($)
{
  my ($hash) = @_;
  my $err_log='';
  my $line;

  my $name = $hash->{NAME};
  my $host = $hash->{Host};
  my $user = $hash->{User};
  my $pass = $hash->{Pass};

  my $delay=$attr{$name}{delay}||300;
  InternalTimer(gettimeofday()+$delay, "KOSTALPIKO_GetStatus", $hash, 0);


Mir ist nicht klar was "||300" bei
 my $delay=$attr{$name}{delay}||300;
bewirken soll.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

matzefisi

Hallo zusammen,

danke für die Rückmeldungen!

@John: Stimmt Du hast Recht. Da sollte die Variable $delay hin. Ich hatte kurzzeitig das Problem, dass das Modul die Attribute nicht ausgelesen hat. Daher hatte ich das im Code fest hinterlegt.
Das ||300; soll einen default wert setzen, falls kein Attribut "delay" vorhanden ist. Also quasi eine Oder Funktion. Entweder den Wert aus dem Attribut delay oder falls $delay undef ist dann 300 sekunden.
Ich werde dann mal deine Änderung übernehmen. :)

BTW: In der Funktion define habe ich das auch noch drin, allerdings schon auskommentiert. Habe jetzt beides glatt gezogen.

MfG
Matthias

John

Hallo Matthias,
ich hab noch einige Schnippsel hinzugefügt.

Das Ergebnis:

(siehe Anhang / see attachement)


Alle Parameter der Webseite werden erfasst und als Readings dargestellt.

ModeNum
Darstellung der Betriebsart als Zahl mit folgendem Zusammenhang
Aus              0
Leerlauf         1
Einspeisen MPP   2

Daily.Energy.Last
erzeugte Energie des letzten Tages.
Wird dann ermittelt, wenn Daily.Energy vom Kostal auf 0 gesetzt wird.

Setter wurde entfernt.
Attribute mit $readingFnAttributes erweitert.
Modul HTML::Parser wird nun zusätzlich benötigt
Aktualisierung der Readings erfolgt nur nach Änderung.

Weitere Ideen
(hier bitte ich im Untestützung)
Wechselrichter auf Plausibilität überwachen.
Stimmt die erzeugte Energie mit der zu erwartenden in etwa überein ?
Ziel: Erkennen eines Ausfalls.
Alarmierung durch FHEM.

Problem:
Wie kann man standortbezogen die Soll-Energieausbeute bestimmen ?

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

olindner

Hallo John, vielen Dank script funktioniert super, alle readings sind da und stimmen mit meiner Anlage überein.

ZitatProblem:
Wie kann man standortbezogen die Soll-Energieausbeute bestimmen ?
Meinst Du sowas? Dort hole ich mir meine standortbezogen Prognose.

viele Grüße
Olaf

John

Hallo Olav,
genau darum gehts. Ich möchte die aktuelle Leistung der PVA mit der Prognose vergleichen.
Bei groben Abweichungen ist von einem Fehler auszugehen.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

matzefisi

Hi John,

danke für deine Erweiterungen, werde ich gleich mal ausprobieren.

Bzgl. der Prognose oder Überwachung:

http://www.suntrol-portal.com/de

Hier habe ich meinen Wechselrichter zusätlich angemeldet (er überträgt alle 15 min seine Werte zu dem Portal) und von dort bekomme ich dann eine Mail sobald meine Anlage im Verhältnis zu anderen Anlagen in meiner Umgebung weniger Energie liefert. Schöner wäre es natürlich diese Funktion dann auch nur im FHEM zu haben und auf das Portal verzichten zu können.

MfG
Matthias

olindner

Hallo John, mein Link ist leider untergegangen :( hier nochmals die Prognose http://re.jrc.ec.europa.eu/pvgis/apps4/pvest.php?lang=de&map=europe

Beim saven der fhem.cfg stürzt fhem ab
Undefined subroutine &main::KOSTALPIKO_Undef called at fhem.pl line 2449.
danke und vg Olaf

John

Hallo Olaf,

habs gefunden. Die sub KOSTALPIKO_Undef fehlte noch.

Ist nun bereinigt.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AK-868

Guten Morgen


Danke! Das Teil läuft super!

Zum Glück gefunden. ;)

Wollte mich gestern mitm Kumpel an das Modul machen. War schon fertig!

Gruß
Andre
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 zusammen,
ich hab nun eine Quelle für die Globalstrahlung gefunden und will diese in den Readings verfügbar machen.

Weiss jemand, wie man von der Globalstrahlung auf die zu erwartende Leistung der PV-Anlage schliessen kann ?

Erste Idee:
Globalstahlung [kWh/qm]* Wirkungsgrad der Module [%] * qm Modulfläche [qm] * Wirkungsgrad.Wechselrichter [%]

- Sicher spielt auch noch die Ausrichtung nach Süden und die Neigung eine Rolle

Wäre für Unterstützung dankbar.

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

Bin zum Thema prognostierte Leistung gut weitergekommen:


(siehe Anhang / see attachement)


Global.Radiation ist die Globalstrahlung meiner Region am heutigen Tag.

EnergyExpected = <Systemnutzungsgrad> * Fläche * Global.Radiation

Und wie man sieht sind die 28,17 Kwh nicht allzu weit von den erwarteten 31.08 entfernt.

Der Chart des heutigen Tages:


(siehe Anhang / see attachement)


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AK-868

Hi John,

ich hatte eig. vor mich da heute ran zu setzen, wie hast du das mit dem plot gemacht. Ein Beispiel waere super.

Jeder faengt klein an.

MfG
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

Kein Problem:
Hier ist auch schon EnergieExpected berücksichtigt


(siehe Anhang / see attachement)



John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

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

AK-868

Für deinen Wechselrichter gibt es sicher auch einen Datenlogger. Das wäre vermutlich das einfachste.

Evtl. hat jemand schon was für einen RPI gebaut. In die Richtung würde ich mal suchen.


John, es hat Vor und Nachteile das du das machst.

Vorteil ich hab das total schnell hier und es läuft.

Nachteil, ich lern dabei nix :-D
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


AK-868

Ich hab jetzt doch noch unregelmässig Disconnects. Zudem ist heute proplanta nicht erreichbar.

Vllt. liegt es daran?

Wenn ich jetzt Urlaub habe, dann versuch ich das mal rauszufinden woran das liegt.
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,

ZitatJohn, es hat Vor und Nachteile das du das machst.

Vorteil ich hab das total schnell hier und es läuft.

Nachteil, ich lern dabei nix :-D

Da war ich wohl wieder einmal zu schnell.

Es ist gut wenn du die Sache selbst angehst. Melde dich wenn du Unterstützung brauchts.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

matzefisi

Hi zusammen,

@Andre: Was ähnliches habe ich mir auch gedacht. :) Ich will auch Durch das Basteln an den Modulen Perl und FHEM lernen und begreifen.

Allerdings bin ich John sehr dankbar für die Erweiterungen an dem PV-Modul. Jetzt habe ich die PV Anlage schon mal abgehakt und kann mich z.B. den Homematic Wired Modulen oder einem Modul für den USB-Schreiblesekopf (Auslesen von Smartmetern) vom Volkszählerprojekt kümmern (Oder hat da jemand schon was brauchbares gefunden?).

Und auch wenn man sich in Ruhe das Modul jetzt nochmal anschaut kann man schon viel für eigene Änderungen und Module mitnehmen. Mein Problem: Ich bin mit einem Perlbuch von 1999 angefangen und habe damit versucht die Änderungen von John zu verstehen, das ist aber gründlich in die Hose gegangen. In den letzten 14 Jahren hat sich in der Perl Welt doch einiges getan. Für die Grundlagen (Schleifen, Variablen usw.) ganz ok, aber alles was darüber hinausging war im Buch nicht zu vorhanden :-)

Fazit: Danke John, Du bist nicht zu schnell! Weiter so! :-)

Edit: John, ich habe gesehen, dass Du auch einen RPi einsetzt. Hast Du auch das Problem, dass die Graphen so lange zum laden brauchen? Bei mir ca. 20 Sekunden und das Problem scheint wohl der Prozessor zu sein. In der Zeit läuft die CPU auf 100%.

MfG
Matthias

John

Hallo Matthias,
ZitatEdit: John, ich habe gesehen, dass Du auch einen RPi einsetzt. Hast Du auch das Problem, dass die Graphen so lange zum laden brauchen? Bei mir ca. 20 Sekunden und das Problem scheint wohl der Prozessor zu sein. In der Zeit läuft die CPU auf 100%.

Bei 4 Charts im Bild benötigen mit dem Raspi ca. 3..4 Sekunden:

Grösse der Dateien f. Charts:

1. Datei: 2.5 MB
2. Datei: 700 MB
3. Datei: 6 MB
4. Datei:  500 MB

Der Prozessor läuft praktisch immer auf minimaler Taktung: (bis auf die kurzen Chart-Abfragen)

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AK-868

Hallo John,

bei mir dauert das Laden auch so lange.

Ich vermute das kommt von dem Interwall des Logs.

Aber weißt du was super wäre, wenn du die geänderte PM mit AC.Power.Fast: noch online stellen würdest. Ich hab mir jetzt was tolles neues ans Bein gebunden ;)

Ich hab kräftig Hardware bestellt. Mit dem Einbau werd ich einige Zeit beschäftigt sein.

Du willst mir keinen Support leisten :-D Glaub mir. ;)

Ich dank dir auf jeden Fall sehr für deine Arbeit.

Gruß Andre

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

Das neue Reading AC.Power.Fast hat fast künstlerischen Wert.


(siehe Anhang / see attachement)


Will man das neue Reading AC.Power.Fast nicht in der Log-Datei sehen, ändert man den Filter für Filelog.
Hier einfach den Doppelpunkt einfügen. Würde bei AC.Power reichen, aber aus systematischen Gründen am besten überall.define Kostal.File FileLog ./log/Kostal-%Y.log Kostal:(AC.Power:|Daily.Energy:|Total.Energy:|ModeNum:|EnergyExpected:).*

AC.Power.Fast hat ja zunächst denselben Wert wie AC.Power.

Wer jedoch das schnelle Reading nutzen will setzt zunächst den Wert von delay runter z.B auf minütliche Abtastung
attr Kostal delay 60
Dann würde jedoch die LogDatei schnell anwachsen, was nicht jeder will.
Daher gibts ein neues optionales Attribut delayCounter.

Optional heisst, es muss nicht definiert sein, es kann definiert sein.
attr Kostal delayCounter 5

Nun wird nur AC.Power.Fast minütlich abgetastet, alle anderen mit 5 * 60 sec. =300 sec, also alle 5 Minuten.

Wer nun mit dem schnellen AC.Power.Fast nutzen will kann ein notify definieren, das praktisch jede Minute gefeuert wird.
(Um z.B. damit Verbraucher zu schalten)

define Kostal.Event notify Kostal:AC.Power.Fast.* {Log (3,"%EVTPART0 wurde gefeuert mit Wert: %EVTPART1");;}

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AK-868

Hallo John,

ich hab die neue PM jetzt online. Nach X mal hin und her.

Ich weiß echt nicht was bei mir nicht stimmt mit dem Kram.

Erst sagt er das er die PM nicht findet, dann soll ich ein KOSTALPIKO define machen?!?

Dabei hab ich nur den Inhalt der datei getauscht.

Dann konnte er urplötzlich die Datei nicht mehr finden oO.

Dann hab ich die Datei neu erstellt...

Naja letzendlich geht es jetzt wohl.

Solche Probleme hatte ich mit meiner leider durch Blitz zerstörten 1&1 7390 nicht. Nur mit der neuen Fritzbox 7390.

Offtopic.

Ich lass mir auch ne Mail schreiben wenn ich nicht da bin und eine Tür oder Fenster geöffnet werden.
Es wird nur ein event generiert, aber es kommen 2 Mails.

Frag mich mal einer warum. ???

Das Modul wird erwachsen. Echt geiles Ding ;)





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


AK-868

Ich hab mir das Modul mal gerade angeschaut.

 # state noch hinzufuegen
 $rdValue = "W: ".$hashValues{"AC.Power.Fast"}." - ".$hashValues{"Mode"};
 $hashValues{state} = $rdValue;


Das da oben funktioniert nicht. Vllt. kannst du mir jetzt doch helfen und erklären wo mein Denkfehler ist?
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

Hi Andre,
es gibt eine bei weitem elegantere Methode dies zu erreichen.
Du musst dazu nicht einmal das Modul selbst ändern.

Lies mal im CommandRef zum Thema stateFormat nach.

Beispiel:
attr Kostal stateFormat MyPowerFast:AC.Power.Fast - MyMode:Mode
liefert im State nach der ersten Aktualisierung eines Readings:
MyPowerFast:1428 - MyMode:Einspeisen MPP
oder um das zu erreichen was du willst:
attr Kostal stateFormat W:AC.Power.Fast - Mode

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

hummeruli

Hallo

Erstmal ein SUPERFETTES Lob an matsefisi und John.

Aber leider stehe ich auf meiner eigenen Leitung.

Bei mir kommt egal was ich mache, ob mit oder ohne

GR.Link

Folgender Fehler

Use of uninitialized value $URL in concatenation (.) or string at /opt/fhem//FHEM/23_KOSTALPIKO.pm line 225.

Im Code selber will er ja die URL, oder?
Ich verstehe nicht was ich da falsch mache?
Habe Folgendes eingetragen:

GR.Link   http://www.proplanta.de/Wetter/Ludwigsburg-Wetter-Heute.html

Weiterhin schreibt er nichts ins Logfile. Angelegt wird es aber.

Hier der Teil der Config:

#
# Photovoltaik
#
define Sonnenschein2011 KOSTALPIKO 192.168.0.19 xxxxx yyyyy
attr Sonnenschein2011 delay 300
attr Sonnenschein2011 loglevel 4
attr Sonnenschein2011 room Energie
define FileLog_KOSTAL_PV FileLog ./log/KOSTAL_PV-%Y.log KOSTAL:(AC.Power|Daily.Energy|Total.Energy|ModeNum|EnergyExpected).*
attr FileLog_KOSTAL_PV logtype text
attr FileLog_KOSTAL_PV room Logfiles
define Link_Sonnenschein2011 weblink fileplot FileLog_KOSTAL_PV:CURRENT
attr Link_Sonnenschein2011 label "Sonnenschein2011 Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr Link_Sonnenschein2011 room Diagramme
define FileLog_KOSTAL_PV_M FileLog ./log/KOSTAL_PV_M-%Y-%m.log KOSTAL:(Daily.Energy.Last).*
attr FileLog_KOSTAL_PV_M logtype text
define Link_Sonnenschein2011_1 weblink fileplot FileLog_KOSTAL_PV:FileLog_KOSTAL_PV_M:CURRENT
attr Link_Sonnenschein2011_1 fixedrange month
attr Sonnenschein2011 userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Sonnenschein2011","Global.Radiation",0)*37*0.10;;}


Die Werte in der letzten Zeile habe ich einfach so zum Test übernommen.
Er zeigt mir auch den momentanen Ertrag in den Werten an.

Wo sitzt nur der Fehler (Ja, ja; zwischen meinen Ohren)?

Gruß


Uli



Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........

hummeruli

Also das Problem mit dem leeren Log habe ich selbst herausgefunden.

So war es

.
.
define FileLog_KOSTAL_PV FileLog ./log/KOSTAL_PV-%Y.log KOSTAL:(AC.Power|Daily.Energy|Total.Energy|ModeNum|EnergyExpected).*
.
.
.
define FileLog_KOSTAL_PV_M FileLog ./log/KOSTAL_PV_M-%Y-%m.log KOSTAL:(Daily.Energy.Last).*
.
.


Abgeändert auf folgende Zeilen


.
.
define FileLog_KOSTAL_PV FileLog ./log/KOSTAL_PV-%Y.log KOSTAL
.
.
.
define FileLog_KOSTAL_PV_M FileLog ./log/KOSTAL_PV_M-%Y-%m.log KOSTAL
.
.


Jetzt klappt es auch mit dem Nachbar.

Der Fehler mit dem

GR.Link

Use of uninitialized value $URL in concatenation (.) or string at /opt/fhem//FHEM/23_KOSTALPIKO.pm line 225.


Besteht weiterhin.

Gruß


Uli
Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........

AK-868

Hast du die aktuelle Version von der .pm?

Bei mir funktioniert das.

Wenn du die alte und jetzt die neue benutzt, hast du dein reload der pm gemacht?

Du hast den Filter gelöscht und schreibst somit viele Informationen in dein Logfile. Ist das so gewünscht?

#########Wechselrichter#####################################

define Wechselrichter KOSTALPIKO 192.168.X.X pvserver pvwr
attr Wechselrichter GR.Link http://www.proplanta.de/Wetter/DeinORT-Wetter-Heute.html
attr Wechselrichter alias Wechselrichter
attr Wechselrichter delay 60
attr Wechselrichter delayCounter 4
attr Wechselrichter loglevel 4
attr Wechselrichter room Keller,Alarmanlage
attr Wechselrichter userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Wechselrichter","Global.Radiation",0)*39*0.16;;}


define PowerLog FileLog ./log/powerlog-%Y.log Wechselrichter:(AC.Power:|Daily.Energy:|Total.Energy:|ModeNum:|EnergyExpected:).*
attr PowerLog logtype text
attr PowerLog room Keller


####Plot###################################################
define wl_PowerLog_1 weblink fileplot PowerLog:wl_PowerLog_1:CURRENT
attr wl_PowerLog_1 room Keller
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


hummeruli

Danke Dir,

jetzt gerade habe ich gesättigt und frischen Mutes getankt, den Fehler gefunden.

Wenn ich direkt im fhem den Code

attr Wechselrichter GR.Link http://www.proplanta.de/Wetter/DeinORT-Wetter-Heute.html

eingebe, so macht er den Mist.
Wenn ich jedoch die Zeile ins File schreibe, so passt es. Naja bei vielen Sachen geht es, und hier eben nicht.

Ne das mit dem FileLog ohne Filter war die Notlösung auf die Schnelle. Aber so ist der Ansatz da.

Ich schraube noch ein wenig am Code. Mal sehen ob ich die Bude abfackel.


Danke Dir auf jeden Fall.

Bye

Uli
Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........

hummeruli

So habe den Fehler gefunden.


Die nicht in der Config eingegebene Zeile

attr Wechselrichter_Name GR.Link http://www.proplanta.de/Wetter/DeinORT-Wetter-Heute.html

Verhindert das Generieren der erforderlichen Werte in den LogFiles.

Daraufhin Fehlfunktionen des wirklich guten Moduls.


Danke und weiter so.


Gruß


Uli
Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........

John

Ich hab den von Uli gefunden Fehler bereinigt, die aktuelle Version liegt bei.

Wenn nicht zuviele Wolken vorüberziehen klappt die Prognose relativ gut.


(siehe Anhang / see attachement)

Bei Woken hingegen, nicht so gut


(siehe Anhang / see attachement)


Wie sind eure Erfahrungen ?

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

matzefisi

Moin John,

ja kann ich bestätigen. Bei durchgehender Sonne ist alles gut, sobald es aber diesig oder bewölkt wird, stimmt die Prognose nicht mehr.
Das hatte ich ja schon am anfang dieses Threads befürchtet. Ich werde mal weiter beobachten und gucke mal ob ich evtl. noch eine andere Quelle für eine solche Prognose (mit Wetterdaten) finde.

MfG
Matthias

AK-868

Hier die Prognosen seht selbst

Der Wert für die pro m² energie, bezieht sich ja auf die Energie die auf einen m² Erde fallen mit dem jeweiligen Einstrahlwinkel.

Was ich damit sagen möchte, meine Anlage ist nach Süden ausgerichtet. Ist es von 8-16 Uhr bewölkt und dann kommt die Sonne raus, kann meine Anlage die eig. anstehende Energie nicht mehr umsetzen.
Nur wenn ich die Anlage der Sonne entgegen ausrichten würde. Leider kann ich das Dach nicht passend drehen ;)
Dem m² Boden ist das aber gleich wo die Sonne steht.

Heute könnte ein vollständiger Sonnentag werden, den kann ich dann auch nochmal Posten. Energy Expected bis jetzt 48,048 kw

Sonnig:

(siehe Anhang / see attachement)


Leicht bewölkt:

(siehe Anhang / see attachement)


Wolkig

(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


Heiner

SUPER,

Vielen vielen Dank fuer dieses Modul.

Klappt hervorragend, ich bin total begeistert.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

John

Man kann auch eine Monatsanzeige realisieren:



(siehe Anhang / see attachement)


Die Definition für File_2 sieht wie folgt aus:

define Kostal.File_2 FileLog ./log/Kostal_2-%Y.log Kostal:(Daily.Energy.Last:).*
attr Kostal.File_2 logtype text


define wl_Kostal.File_2 weblink fileplot Kostal.File_2:wl_Kostal.File_2:CURRENT
attr wl_Kostal.File_2 fixedrange month


Die Definition des Charts:

(siehe Anhang / see attachement)


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Heiner

Hi,
waere es nicht sinnvoller auf ein Zusaetzliches Log zu verzichten und im Monatsreport besser den Letzten Wert der Daily Eergy eines jeden Tages zu verwenden?

Neben dem gesparten Log koennte man dann im Monatsgraph auch den aktuellen Tag mit dem bisher erreichten Stand erkennen. Ich hab nur keine Ahnung wie ich diesen letzten Wert eines Tages abfrage....
Kriegt man darin auch eine agregierte Linie mit der Summe der im Monat erzeugten Energie? Eventuell auch noch im Vergleich der prognostizierten Energie?
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Heiner

Hi, kann man irgendwie für die X-Achse den Wertebereich vorgeben?

Ich möchte die Tages Einstellung von 5-22 Uhr begrenzen, an den restlichen Stunden passiert eh nix. Eventuell kann man auch das logfile so aufzeichnen lassen das es diese Zeiten ausspart, nur wie geht das?

Dann wäre es noch super wenn man den Graphen in der Höhe vergrößern könnte, wo finde ich den Parameter der das Format vorgibt?

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

ZitatHi, kann man irgendwie für die X-Achse den Wertebereich vorgeben?
Ich kenne nur die Möglichkeit Zeitbereiche wie Tage, Wochen, Monate vorzugeben.

ZitatIch möchte die Tages Einstellung von 5-22 Uhr begrenzen, an den restlichen Stunden passiert eh nix. Eventuell kann man auch das logfile so aufzeichnen lassen das es diese Zeiten ausspart, nur wie geht das?

Wenn du dir die Logfiles genau ansiehst, wirst du erkennen, dass zu gewünschten "Aussparungen" praktisch keine Daten einlaufen.
Um 23:00 wird der Tageswert geschrieben.

ZitatDann wäre es noch super wenn man den Graphen in der Höhe vergrößern könnte, wo finde ich den Parameter der das Format vorgibt?

Die Y-Achse lässt sich wie
hier
gezeigt unter "Range as [min:max] einstellen.

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Heiner

Hi danke fuer das Feedback.

also keine chance die Zeitachse auf z.B. 5-22 Uhr zu skalieren, ich muss mir die Nulllinie in der Zeit bis 5:00 und ab 22:00 angucken. Schade.


Und bei der y-Achse meinte ich nicht die Skalierung sondern die absolute Hoehe des Graphen, ist aber vermutlich ebenso fest wie die Breite des Graphen, vermute ich mal.

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

Heiner

Hallo, noch ne Frage.

Ich moechte gern von der Sonneneinstrahlung (Wechselrichter.AC-Power) abhaengig einen Aktor (Pumpe) schalten und in einem Plot beide Werte monitoren. ( die Pumpe hat noch wietere Regeln wann sie auch noch schalten soll)

Das schalten krieg ich ja noch hin, aber fuer den Plot brauche ich ein Log das aus zwei Quellen gefuettert wird, naemlich dem Aktor( Pumpe an oder aus) und Wechselrichter (Ac.Power)

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

Heiner

Hi, obige Frage kann ich mir dann doch einfach selbst beantworten. sorry.

Die Loesung ist ein Log nur fuer die AC.Power zu bauen und dann in dem Log fuer den Aktor ein

Set Absorb logfile2

zu machen, damit gibt es nur noch ein Log in dem beides augezeichnet wird.

Ja ich weiss wer lesen kann ist klar im Vorteil.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Heiner

....nun aber noch ne richtige Frage.

Wenn ich denn nun in Abhaengigkeit von AC.Power schalten will wie lautet dann die Syntax?

Das hier funktioniert nicht, bringt aber auch keinen Fehler

define Pool2 notify Wechselrichter.AC.Power: >1000 Set Poolpumpe on

und das ergibt einen Fehler da die Klammern keinen Sinn machen:

define Pool2 notify (Wechselrichter AC.Power:) >1000 Set Poolpumpe on
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Heiner

hi,

...und noch ne Frage....


Ist da irgendeinweg um noch die Steuerkontakte des Wechselrichters abzufragen? Dareueber kann man ja z.B. die Temeperatur der module messen.

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

AK-868

Probier das mal so

define Pool2 notify Wechselrichter AC.Power: > 1000 set Poolpumpe on

Nur ich weiß nicht ob das so geht wie oben geschrieben.

Wenn nicht dann musst du das so machen:

define Pool2 notify Wechselrichter:.* {\
if (ReadingsVal("Wechselrichter", "AC.Power.Fast", "") > 1000) {\
 fhem ("set Poolpumpe on");;\
 }\
else {\
 fhem ("set Poolpumpe off");;\
 }\
}


Blöd ist nur das er bei jedem Event von dem KOSTALPIKO.pm die Routine abarbeitet.
Kannst noch ein paar Ifs einbauen um unnötige Abschaltbefehle zu vermeiden.
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


Heiner

Hi, Danke das einschalten funktioniert. Daneben hab ich noch feste einschaltzeiten....

Nun gehts ans ausschalten das nur zwischen 15-17 Uhr erfolgen darf und ur wenn wenig bis keine sonne scheint.

Das hab ich so versucht zu realisieren:

Wechselrichter:.* {if ($now> 15:00)&&($now< 17:00)&&(ReadingsVal("Wechselrichter", "AC.Power", "") < 2500) { fhem ("set Poolpumpe off")}}

Leider gibt es aber probleme mit dem $now

Was mach ich hier falsch?
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

AK-868

nimm Anstatt $now $hour als Wert dann z.B. 17

{if ($hour > 15)&&($hour < 17)&&(ReadingsVal("Wechselrichter", "AC.Power", "") < 2500) {fhem ("set Poolpumpe off")}}

Hab es nicht getestet. Sollte aber klappen.

Ich weiss nicht wie $now definiert ist.  
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


Heiner

hi, klappt leider noch nicht.

Also der erste Befehl funktioniert, der zweite leider nicht. wie muss ich den zweiten Befehl aendern?

define PoolbeiSonne notify Wechselrichter:.* {if (ReadingsVal("Wechselrichter", "AC.Power", "") > 1500) {if("Poolpumpe" eq "off"){fhem ("set Poolpumpe on")}}}

define PoolkeineSonne notify Wechselrichter:.* {if ((ReadingsVal("Wechselrichter", "AC.Power", "") < 1400)&&($hour> 15)&&($hour< 17)) { fhem ("set Poolpumpe off")}}

Der einzige Unterschied ist eigentlich nur der das ich 3 Bedingungen habe statt nur einer wie im ersten Beispiel. Klingt so simpel und ist doch so schwierig.

die Fehlermeldung lautet:

2013.08.28 09:03:51 3: PoolkeineSonne return value: Unknown command {if, try help
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

AK-868



define PoolkeineSonne notify Wechselrichter:.* {if (ReadingsVal("Wechselrichter", "AC.Power", "") < 1400 && $hour > "15" && $hour < "17") {fhem ("set Poolpumpe off")}}



Probier es mal so. Ich hoffe da sind keine Zeichenfehler mehr drin. Für mich ist das in einer Zeile schreiben unübersichtlich.
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


Heiner

Hi klappt leider nicht.

ich hab nun beide Versionen in einer Zeile die nicht funktionieren mal im Vergleich, nehme aber auch gerne die mit Zeielnumbruch

nochmal das geht (eine Bedingung)
define Pool5 notify Wechselrichter:.* {if (ReadingsVal("Wechselrichter", "AC.Power", "") < 1400) { fhem ("set Poolpumpe off")}}

und das mit 3 Bedingungen nicht. (egal ob die 3 in Klammern stehen oder nicht)

define PoolkeineSonne notify Wechselrichter:.* {if ((ReadingsVal("Wechselrichter", "AC.Power", "") < 1400)&& ($hour> 15)&& ($hour< 17)) { fhem ("set Poolpumpe off")}}

define PoolkeineSonne notify Wechselrichter:.* {if (ReadingsVal("Wechselrichter", "AC.Power", "") < 1400 && $hour > "15" && $hour < "17") {fhem ("set Poolpumpe off")}}

Was ich eh nocht nicht in dem code kapiere ist das: Wechselrichter:.*
Was soll das? Ist das der Killer?

Eigentlich ist doch: ReadingsVal("Wechselrichter", "AC.Power", "") < 1400
eine vernuenftige Abfrage. Warum muss dieses "Wechselrichter:.*" noch vor dem IF stehen? Bewege ich mich eventuell nun nur innerhalb des Wechselrichters und somit klappt "$hour" nicht mehr?
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Heiner

mit Zeielenumbruch solle es dann das sein, richtig?:

define PoolkeineSonne notify Wechselrichter:.* {\
 if (ReadingsVal("Wechselrichter", "AC.Power", "") < 1400)&&\
 ($hour> 15)&&\
 ($hour< 17) {\
 fhem ("set Poolpumpe off");;\
}\
}
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

AK-868

Das Wechselrichter:.* bedeutet soviel wie das jedes Event vom Wechselrichter was gefeuert wird diese Routine abarbeiten lässt.

Mit ReadginsVal liest du aus die Readings aus. Die in deinem definierten Wechselrichter stehen.


Die generierten Events sind nicht eindeutig da der State irgendwas mit W: 1220 MPP einspeisen ist, klick mal auf Eventmonitor und schau was da so kommt.

Deswegen der Weg:

Wechselrichter sendet irgendwas -> notify löst aus -> mit dem IF wird geprüft ob in den Readings AC.Power der Wert X steht wenn true mach das in dem Fall set Poolpumpe off.

Den Code hab ich getestet mal flott. der geht. Weiß ja nicht wie das Wetter bei dir ist, hier ist gerade über 1400 Watt deswegen gt du möchtest ja lt.

define notify_Test notify Wechselrichter:.* {\
if (ReadingsVal("Wechselrichter", "AC.Power", "") gt 1400 && $hour > "15" && $hour < "17")\
 {\
 fhem ("set Poolpumpe off");;\
 }\
Log 3, "True @ $hour";;\
}


Achso was ich vergas, der code zieht natürlich nur zwischen 15 und 17 Uhr bedeutet nur von 16:00 - 16:59Uhr. >= <= wäre dann die Abwandlung ;)



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


Heiner

hi, funktioniert soweit uasser das ich statt GT doch das Zeichen ">" benutzen muss. keine Ahnung warum....


Um jetzt die Funkbefhele zu minimieren wollte ich in die IF Schleife auch och einfuegen das er nur EIN schaltet wenn der Schalter aud AUS steht, dann braucht er nicht alle paar Minuten zu wiederholen, nur weil die Sonne scheint. Klappt aber auch wieder nicht.

Mein code sieht so aus:
define PoolbeiSonne notify (5min_check|global:INITIALIZED) {\
if ("Poolpumpe" eq "on") &&(ReadingsVal("Wechselrichter", "AC.Power", "") > 2500))\
 {\
 fhem ("set Poolpumpe on");;\
 }\
}

Es gibt keine Fehlermeldung, aber die Pumpe schaltet nicht. Loesche ich hingegen den kursiven Teil, dann klappts. Was mach ich denn nun shcon wieder falsch?
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

betateilchen

Zitatdas ich statt GT doch das Zeichen ">" benutzen muss. keine Ahnung warum

weil 1400 numerisch ist und kein String "1400"

Zitatif ("Poolpumpe" eq "on")

Das Wort Poolpumpe ist nunmal ein völlig anderes Wort als das Wort "on", deshalb kann der Vergleich mit "eq" (und damit Deine gesamte mit logischem UND verknüpfte Bedingung) niemals wahr werden. Der Vergleich an sich ist syntaktisch völlig richtig, wenn auch sinnlos, deshalb gibt es keine Fehlermeldung.

Vermutlich willst Du den WERT von "Poolpumpe" abfragen, also Value("Poolpumpe"), das würde ein bißchen mehr Sinn machen ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AK-868

Hallo Betateilchen,

kannst mir das nochmal erklaeren?

Ist gt und lt nicht das gleiche wie > <  ?

Bei mir lief der code mit gt.




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


betateilchen

Grundsätzlich ist entscheidend, ob Du numerische Werte oder Zeichenketten vergleichen willst.
Dafür gibt es unterschiedliche Vergleichsoperatoren.

14 ist eine Zahl (numerischer Wert), da vergleichst Du mit < > = !=
"14" ist ein Text (Zeichenkette), da vergleichst Du mit lt gt eq ne

Hier findest Du ausführliche Erklärungen:

http://de.selfhtml.org/perl/sprache/operatoren.htm



---
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Heiner

hi, vielen dank, so  langsam komme ich dahinter.

Ich habe nun die Poolpumpe im Griff. sie schaltet immer ein wenn genug Sonne scheint und wenn der Poolrolladen offen ist sowie zu bestimmten Schaltzeiten.

Nun waere perfekt wenn ich irgendiwe die Zeit messen kann in der die Pumpe laeuft. Dann koennte ich die zeitabhaengige Regelung anpassen da diese eigentlich nur sicherstellen soll das eine gewisse mindestdauer pro Tag eingehalten wird.

Es gibt doch da siche reine moeglichkeit eine Variable zu definieren und irgendwie einen Zaehler mit zu verknuepfen, oder?

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

betateilchen

natürlich. Vom Timestamp des Ausschaltens den Timestamp des Einschaltens abziehen und schon hast Du die Laufzeit. Und die addierst speicherst Du irgendwo, z.B. in einem userreading oder zur Not sogar in einem Attribut.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Heiner

Hi, klase Idee,

da ich ja an einem Tag unbekannt viele Schaltvorgaengehabe ( immer bei Sonne ein, und bei sonne weg aus) summiere ich dann also alle ausschaltzeiten und ziehe davon die summe aller einschaltzeiten ab und shcon hab ich die Laufzeit, cool. Werd ich mal ausprobieren.



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

betateilchen

hä?

Du musst die Summe bei jedem Abschalten ermitteln. Alles andere dürfte kompliziert werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Heiner

Hi, nun die ganze schalterei der Pumpe wird ziemlich kompliziert, also hab ich mich entschlossen das lieber in die 99_myUtils.pm zu packen. Was ich soweit habe ist das hier:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
 my ($hash) = @_;
}
##########################################################
# Poolpumpensteuerung
# Aufruf in fhem.cfg mit
#      define Poolpumpenparameter notify (5min_check|global:INITIALIZED) ..
#                       ..{Pool(an1, aus1, an2, aus2, Tagesdauer, minPV)}
# an1 und aus1 ist das erste Zeitschaltpaar zwischen der die Poolpumpe an sein muss
# an2 und aus2 ist das zweite Zeitschaltpaar zwischen der die Poolpumpe an sein muss
# Tagesdauer gibt die maximale Laufzeit pro Tag an, sobald erreicht schaltet Pumpe aus
# die Pumpe geht auch an wenn die PV anlage mindestens x kwh Stom produziert,
# abschalten erfolgt dann bei 10% weniger
# damit alles funktioniert sind folgende Geraete in fhem.cfg
#   define Poolpumpe CUL_HM xxxxx das zu steuernde Geraet
#   define Wechselrichter KOSTALPIKO xxxx  liefert den PV Strom als reading "AC.Power"
#   define Poolog Filelog xxxxx liefert die Laufzeit der Pumpe
##########################################################

sub Pool($$$$$$){
my ($an1, $aus1, $an2, $aus2, $Tagesdauer, $minPV) = @_;

$Laufzeit_Poolpumpe_erreicht = ????

if (((Value("Poolpumpe") eq "off") && $hour == $an1)||
    ((Value("Poolpumpe") eq "off") && $hour == $an2))||
    ((Value("Poolpumpe") eq "off") && (ReadingsVal("Wechselrichter", "AC.Power", "") > $minPV))||{
   fhem("set Poolpumpe on");
  }

if (((Value("Poolpumpe") eq "on") &&
    ($hour <= $an1||($hour >= $aus1 && $hour <= $an2) || $hour >= $aus2) &&
    (ReadingsVal("Wechselrichter", "AC.Power", "") < ($minPV * 0.9) ||
    (Laufzeit_Poolpumpe_erreicht){
   fhem("set Poolpumpe off");
  }

}

1;

Leider ist der code nicht getestet. Gibt es dafuer sowas wie einen debug modus das man schritt fuer schritt durchspielt und sieht wie welche Variable reagiert? waere toll.

Nun aber zurueck zu dem Problem. Ich habe hier noch offen die Laufzeit der Pumpe zu ermitteln. Mein Logfile hat folgende Eintraege:

2013.09.04 15:02:56 2: CUL_HM set Poolpumpe on

Ich habe auch noch ein Poolspezifisches Logfile definiert mit:

define Log_Pool FileLog ./log/Homematic-Pool-%Y.log Pool.*level.*

das liefert diesen eintrag:

2013-08-20_18:05:34 Poolpumpe level: 100 %
2013-08-20_18:05:40 Poolpumpe level: 0 %

Aber wie lese ich die Werte nun aus?

Das hier klappt ja wohl nicht so ganz:

$Logzeit = (ReadingsVal("Log_Pool", "2013-$month-$day_", "")

Ich hab da leider nix imForum gefunden, ich hoffe ich bin einigermassen nah dran, aber ohne tipps komm ich hier leider nicht weiter.

Danke nochmals fuer die Unterstuetzung






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

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

Heiner

Hi, der Aufruf geht wie der Blitz, dann Name und Passwort eingeben und nochmal ca. 1/4 sekunde und schon seh ich die Seite.
Ich nutze FHEM auf der Fritzbox 7390 und an einem LAN-Port ist der Wechselrichter.

und hier der List:
ZitatInternals:
   DEF        192.xxx.xxx.xxx xxxx xxx
   GR.Hour    25
   Host       192.xxx.xxx.xx
   NAME       Wechselrichter
   NR         83
   Pass       pvwr
   STATE      W: 748 - Einspeisen MPP
   TYPE       KOSTALPIKO
   User       pvserver
   delayCounter 1
   Readings:
     2014-05-27 17:54:50   AC.Power        748
     2014-05-27 17:54:50   AC.Power.Fast   748
     2014-05-27 17:54:50   Daily.Energy    14.25
     2014-05-26 23:04:47   Daily.Energy.Last 19.05
     2014-05-24 14:01:03   EnergyExpected  34.2528
     2014-05-24 14:01:03   Global.Radiation 6.4
     2014-05-27 05:54:48   Mode            Einspeisen MPP
     2014-05-27 05:54:48   ModeNum         2
     2014-05-27 17:09:50   Total.Energy    9346
     2014-05-27 17:54:50   generator.1.current 1.05
     2014-05-27 17:54:50   generator.1.voltage 533
     2014-05-27 05:39:48   generator.2.current 0.00
     2014-03-15 17:43:18   generator.2.voltage 0
     2014-05-27 17:54:50   generator.3.current 1.02
     2014-05-27 17:54:50   generator.3.voltage 234
     2014-05-27 17:54:50   generator1power 559.65
     2014-05-27 17:54:50   generator3power 238.68
     2014-05-27 17:54:50   output.1.power  253
     2014-05-27 17:54:50   output.1.voltage 230
     2014-05-27 17:54:50   output.2.power  249
     2014-05-27 17:49:50   output.2.voltage 229
     2014-05-27 17:54:50   output.3.power  246
     2014-05-27 17:39:50   output.3.voltage 229
     2014-05-27 17:54:50   state           W: 748 - Einspeisen MPP
Attributes:
   GR.Link    http://www.proplanta.de/Wetter/Mainz-Wetter.html
   alias      Wechselrichter
   delay      300
   delayCounter 1
   group      KOSTALPIKO
   loglevel   4
   room       Photovoltaik
   userReadings generator1power:generator.1.* {return ReadingsVal("Wechselrichter","generator.1.current",0)*ReadingsVal("Wechselrichter","generator.1.voltage",0);},generator3power:generator.3.* {return ReadingsVal("Wechselrichter","generator.3.current",0)*ReadingsVal("Wechselrichter","generator.3.voltage",0);},EnergyExpected:Global.Radiation { return ReadingsVal("Wechselrichter","Global.Radiation",0)*44.6*0.12;}


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

John

#91
Hallo Heiner,

ich habe das Problem erkannt.

Das Parsen der HTML-Seite dauert auf meinem Raspi ca. 3 Sekunden. Die Fritzbox wird deutlich  langsamer sein.
Das Problem liegt also vermutlich nicht bei der Erfassung der Web-Seiten, sondern bei deren Auswertung.

Ich denke über eine Lösung nach.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

Ich habe nun die Version 2.0 von KostalPiko aufgelegt und damit ein neues Thema begonnen.

Informationen hierzu unter
http://forum.fhem.de/index.php/topic,24409.0.html

Alle weiteren Fragen und Änderungen werden von nun an dort behandelt.

@Heiner
ich hoffe damit sind nun die von dir geschilderten Probleme erledigt.

Über Rückmeldungen freue ich mich.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Heiner

Hallo,

sorry hat ein wenig gedauert aber ja alle Probleme sind erledigt, passt jetzt. super Vielen lieben Dank.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2