FHEM Forum

FHEM - Energiemanagement und Energieerzeugung => Solaranlagen => Thema gestartet von: beejayf am 29 September 2020, 13:35:18

Titel: SolarEdge mit MOdbus TCP auslesen
Beitrag 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!



Titel: Antw:SolarEdge mit MOdbus TCP auslesen
Beitrag von: Romoker am 29 September 2020, 17:54:18
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
Titel: Antw:SolarEdge mit MOdbus TCP auslesen
Beitrag von: beejayf am 30 September 2020, 09:11:32
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


Titel: Antw:SolarEdge mit MOdbus TCP auslesen
Beitrag von: Romoker am 30 September 2020, 18:18:34
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
Titel: Antw:SolarEdge mit MOdbus TCP auslesen
Beitrag von: pejonp am 01 Oktober 2020, 10:54:17
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
Titel: Antw:SolarEdge mit MOdbus TCP auslesen
Beitrag von: Romoker am 01 Oktober 2020, 13:50:55
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
Titel: Antw:SolarEdge mit MOdbus TCP auslesen
Beitrag von: pejonp am 01 Oktober 2020, 18:30:02
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