SolarEdge mit MOdbus TCP auslesen

Begonnen von beejayf, 29 September 2020, 13:35:18

Vorheriges Thema - Nächstes Thema

beejayf

Hallo - ich bin unsicher ob die Frage nicht in's Anfänger-Forum gehört:

Ziel ist es meinen SE Wechselrichter per Mudbus TCP auszulesen. Dazu habe ich hier fongende passende Seite gefunden:

https://wiki.fhem.de/wiki/SolarEdge_SE10k - die ersten Schritte sind auch klar und funktionieren - nur bei den Punkten

* notify device in FHEM
* at device in FHEM

muss der Code (evtl abgepasst) in einer Datei in den Eingeweides von FHEM abgelegt werden, oder geht das über das Web-Interface - Wo ich es aber nicht gefunden habe.

Sorry im Voraus wenn ich mich doof anstelle und Danke!




Romoker

Das notify und das at werden genau wie die dummy-Objekte mit einem define-Kommando über die Eingabezeile in der FHEM-Web-Oberfläche angelegt.
Z. B.
define prg_solaredge notify KeSolarEdge:DC-Power:.* { ...
Einfach mal in die Commadref für at und notify schauen.

Tipp: Statt der vielen Dummy-Objekte und dem at können mit dem statistic-Modul (siehe Commandref) wesentlich eleganter Auswertedaten erzeugt werden.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

beejayf

Danke - aber ich stehe noch immer auf dem Schlauch:

ich have folgendes versucht (und gelesen - und finde meinen Fehler leider nicht)


define prg_solaredge notify KeSolarEdge:DC-Power:.* {
  # 16.2.2018 Markus Loeben
  # liest Solaredge aus und füllt die Werte in dummys, damit sie weiter verwertet werden können
  my $ACE = ReadingsVal("KeSolarEdge","AC-Energy",0);
  Log 5, "at_solaredge: ACE " . $ACE;
  my $day = Value("dum_pv_energyday_read");
  Log 5, "at_solaredge: day " . $day;
  my $week = Value("dum_pv_energyweek_read");
  Log 5, "at_solaredge: day " . $day;
  my $month = Value("dum_pv_energymonth_read");
  Log 5, "at_solaredge: month " . $month;
  my $year = Value("dum_pv_energyyear_read");
  Log 5, "at_solaredge: year " . $year;
  #.. die geleistete Energie größer 0 ist (was immer sein sollte, aber leider nicht immer ist) -> laufende Werte berechnen
  if ($ACE > 0) {
    fhem ("set dum_pv_energytoday " . sprintf ("%.2f",($ACE - $day)));
    fhem ("set dum_pv_energytoweek " . sprintf ("%.2f",($ACE - $week)));
    fhem ("set dum_pv_energytomonth " . sprintf ("%.2f",($ACE - $month)));
    fhem ("set dum_pv_energytoyear " . sprintf ("%.2f",($ACE - $year)));
  }
  #Log 1, "at_Solaredge: PV-Energy " . $ACE . "\n";
  #Leistung auslesen
  my $ACP = ReadingsVal("KeSolarEdge","AC-Power",0);
  my $DCP = ReadingsVal("KeSolarEdge","DC-Power",0);
  if ($DCP > 0) {
  # Verlustleistung berechnen
    fhem ("set dum_pvloss " . sprintf("%.1f", ($DCP - $ACP)));
    my $MP = Value("dum_pv_power_read");
    #Falls die größer ist als alles bis: ablegen
    if ($DCP > $MP) {
      fhem ("set dum_pv_power_read " . $DCP);
    }
  }
}


und bekomme


Missing right curly or square bracket at (eval 89) line 1, at end of line
syntax error at (eval 89) line 1, at EOF



Romoker

Solch eine komplexe Objektdefinition in einem Rutsch über die Eingabezeile im FHEMWeb zu definieren, führt manchmal zu solchen Fehlermeldungen, obwohl die Definition syntaktisch korrekt ist. Hier verschluckt sich der FHEM-Interpreter, warum auch immer. Das kann man aber umgehen, indem man im ersten Schritt die nackte Objektdefinition durchführt mit
define prg_solaredge notify KeSolarEdge:DC-Power:.* {}
Im zweiten Schritt fügt man dann über den Objekteditor (DEF in der neuen Objektdefinition selektieren) den fehlenden Rest der Definition zwischen den geschweiften Klammern ein und speichert wieder ab. Das ist der übliche Weg beim Entwickeln komplexerer Logiken.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

pejonp

#4
Zitat von: beejayf am 29 September 2020, 13:35:18
Hallo - ich bin unsicher ob die Frage nicht in's Anfänger-Forum gehört:

Ziel ist es meinen SE Wechselrichter per Mudbus TCP auszulesen. Dazu habe ich hier fongende passende Seite gefunden:

https://wiki.fhem.de/wiki/SolarEdge_SE10k - die ersten Schritte sind auch klar und funktionieren - nur bei den Punkten

* notify device in FHEM
* at device in FHEM

muss der Code (evtl abgepasst) in einer Datei in den Eingeweides von FHEM abgelegt werden, oder geht das über das Web-Interface - Wo ich es aber nicht gefunden habe.

Sorry im Voraus wenn ich mich doof anstelle und Danke!

@beejayf

versuche es mal mit diesem Modul: https://github.com/pejonp/FHEM---SolarEdge

Hier gibts schon Infos dazu: https://forum.fhem.de/index.php/topic,80767.msg853967.html#msg853967  bitte dort auch die Fragen stellen.

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Romoker

Zitat@Romoker

versuche es mal mit diesem Modul: https://github.com/pejonp/FHEM---SolarEdge

Hier gibts schon Infos dazu: https://forum.fhem.de/index.php/topic,80767.msg853967.html#msg853967  bitte dort auch die Fragen stellen.

pejonp

@pejonp
Dein Hinweis ist für beejayf relevant, der die Frage hatte.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

pejonp

Zitat von: Romoker am 01 Oktober 2020, 13:50:55
@pejonp
Dein Hinweis ist für beejayf relevant, der die Frage hatte.

Viele Grüße

@Romoker

Danke, geändert.

Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect