fhempy: rct_power (RCT-Power)

Begonnen von dominik, 10 Februar 2022, 20:20:12

Vorheriges Thema - Nächstes Thema

Zeitisen

#120
Danke für die Info.

Wenn das mit stateformat funktioniert, muss man es natürlich nicht in ein Modul implementieren.

Vielleicht könnte man die Formatierung als Beispiel in die Doku mit aufnehmen.

Ebenso praktisch in der Doku wäre der Link auf die RCT-Doku
https://rctclient.readthedocs.io/en/latest/inverter_registry.html

Mein persönliches Problem ist, dass ich mit den Formatierungsfunktionen von Fhem und Perl auf Kriegsfuß stehe.
Auswendig kann ich die nicht, weil ich das zu selten verwende. Wo ich nachschauen muss, ist auch immer problematisch.
Dann gibt es noch die Frage, wann Fhem allein reicht und wann ich Perl brauche.

Slanesh

Hallo zusammen,

kann ich dieses Modul vor einem kompletten Umstieg erst einmal parallel zu marvin87s Modul 37_RCT für RCT-Power Systeme verwenden, oder gibt es Probleme wenn zwei Module gleichzeitig den Wechselrichter abfragen?

Gruß Slanesh
Intel NUC, 2x HM-LAN, 1x CUL-USB, 2x CCU2, 1x Harmony-Hub, 20x HM-LC-Sw1PBU-FM, 5x HM-LC-SW1-PL2, JeeLink mit 15x TX-29-DTH, 7x HM-SEC-SC-2, 3x HM-LC-SW1-BA-PCB, 8x HM-SEC-SD, 3x HM-SEC-MDIR-2, 2x HM-ES-PMSw1-Pl, 8x HmIP-BWTH, 3xHM-CC-RT-DN, 16xHM-LC-Bl1PBU-FM, 8x HM-SEC-SCo, 1xHM-ES-PMSw1-SM

marvin78

Es ist leider noch immer so, dass es dann Aussetzer geben wird, wenn es gleichzeitige Zugriffe gibt. Grundsätzlich geht das aber.

Du kannst das Modul hier aber völlig ohne Bedenken nutzen, ich selbst habe mein Modul längst weggeschmissen und durch dieses ersetzt.

dominik

Zitat von: marvin78 am 16 März 2022, 20:05:11
Wenn ich mir hier noch was wünschen darf, dann würde ich folgendes vorschlagen:

Es wäre gut, wenn man die set-Befehle, wie die Readingnamen, selbst konfigurieren könnte. Ich denke, dass manche set Befehle nicht sehr gut gewählt sind und nicht zu den sinnvollen Reading-Namen passen, was dazu führt, dass die Vorgabe beim set im Frontend fehlt.

Kann ich gerne als Attribut device_setcmd_json (?) aufnehmen. Damit die Werte im Frontend richtig beim Set Command angezeigt werden, muss ja das Command gleich heißen wie das Reading.

Was hältst du davon, wenn ich die aktuellen Readings und Commands alle anpasse, so dass es auch für neue User gleich funktioniert? Da bräuchte ich nur die Info, welches Reading/Command wie heißen soll.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

chris_kmn

Hi Dominik,

ich finde deinen Vorschlag gut und würde mal eine Liste zusammenstellen.

Ich würde auch zwei set commands ändern, da der Wechselrichter die Kommandos nicht übernimmt. Leider ist die API nur schlecht beschrieben....

Bis später 😊

chris_kmn

sooo ich habe versucht alle commands und readings in einer Tabelle zusammen zu fassen und sprechendere Namen zu vergeben. Vielleicht kann Marvin auch nochmal drauf schauen.


dominik

Danke für die Ausarbeitung!

Wenn noch 1-2 Personen die Liste bestätigen, dass das so passt, kann ich es implementieren.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Onkel.Tom


Hallo zusammen,

zunächst erstmal Lob und Danke für das tolle Modul; funzt mit meiner brandneuen RCT-PV-Anlage supi !

Bei einer Sache stehe ich allerdings auf dem Schlauch und sehe den Wald vor Bäumen nicht:
Welcher Paramter aus der Registry liefert den aktuellen Momentanwert für die erzeugte Solar-Leistung ?

Für einen Tipp wäre ich dankbar.

Viele Grüße
Onkel Tom
 

Nogga

Das macht den Start vielleicht ein bisschen einfacher:


defmod my_rct_device fhempy rct_power 192.168.178.183
attr my_rct_device DbLogInclude .*
attr my_rct_device alias RCT Wechselrichter
attr my_rct_device default_device_readings off
attr my_rct_device device_readings_json {\
  "energy.e_grid_load_month":{\
    "reading":"energy_month_household_external",\
    "factor":1\
  },\
  "energy.e_grid_load_day":{\
    "reading":"energy_day_household_external",\
    "factor":1\
  },\
  "energy.e_ac_total":{\
    "reading":"energy_total",\
    "factor":1\
  },\
  "energy.e_grid_feed_total":{\
    "reading":"energy_total_grid_feed_in",\
    "factor":1\
  },\
  "battery.used_energy":{\
    "reading":"battery_used_energy",\
    "factor":1\
  },\
  "battery.soc":{\
    "reading":"battery_soc",\
    "factor":100\
  },\
  "energy.e_grid_feed_day":{\
    "reading":"energy_day_grid_feed_in",\
    "factor":1\
  },\
  "energy.e_ac_day":{\
    "reading":"energy_day",\
    "factor":1\
  },\
  "energy.e_load_day":{\
    "reading":"energy_day_household",\
    "factor":1\
  },\
  "energy.e_load_month":{\
    "reading":"energy_month_household",\
    "factor":1\
  },\
  "dc_conv.dc_conv_struct[0].p_dc_lp":{\
    "reading":"power_solarA",\
    "factor":1\
  },\
  "dc_conv.dc_conv_struct[1].p_dc_lp":{\
    "reading":"power_solarB",\
    "factor":1\
  },\
  "energy.e_ac_day":{\
    "reading":"energy_day",\
    "factor":1\
  },\
  "g_sync.p_acc_lp":{\
    "reading":"power_battery",\
    "factor":1\
  },\
  "g_sync.p_ac_grid_sum_lp":{\
    "reading":"power_grid_total",\
    "factor":1\
  },\
  "g_sync.p_ac_sum_lp":{\
    "reading":"power_household_total",\
    "factor":1\
  },\
  "g_sync.p_ac_load_sum_lp":{\
    "reading":"power_household_external",\
    "factor":1\
  }\
}
attr my_rct_device group # Strom
attr my_rct_device room Steuerung
attr my_rct_device stateFormat {\
"PV-Leistung: ".(ReadingsVal($name, "power_solarA", "0")+ReadingsVal($name, "power_solarB", "0"))." W\
    (O: ".(ReadingsVal($name, "power_solarB", "0"))." W / \
    W: ".(ReadingsVal($name, "power_solarA", "0"))." W)<br>\
Gesamtertrag heute: ".sprintf("%.2f", (ReadingsVal($name, "energy_day", "0")/1000))." kWh<br>\
Batterie-Kapazität: ".(ReadingsVal($name, "battery_soc", "0"))." %<br>\
Batterie-".((ReadingsVal($name, "power_battery", 1) < 0) ? "Ladung" : "ENTladung").": ".abs(ReadingsVal($name, "power_battery", "-"))." W<br>\
Netz-".((ReadingsVal($name, "power_grid_total", 1) < 0) ? "Einspeisung" : "Bezug").": ".abs(ReadingsVal($name, "power_grid_total", "-"))." W<br>\
Hausverbrauch: ".(ReadingsVal($name, "power_household_external", "-"))." W<br>\
Heutiger Hausverbrauch: ".sprintf("%.2f", (ReadingsVal($name, "energy_day_household", "0")/1000))." kWh \
    davon aus dem Netz: ".sprintf("%.2f", (ReadingsVal($name, "energy_day_household_external", "0")/1000))." kWh"\
}
attr my_rct_device update_readings on_change
attr my_rct_device userReadings power_solarCombined:power_solar(A|B).* { (ReadingsVal($name, "power_solarA", "0")+ReadingsVal($name, "power_solarB", "0")) }


In meiner DB habe ich dann noch historische Auswertungen, falls Interesse besteht...

Nogga

Ach und um Deine Frage konkret zu beantworten:


"dc_conv.dc_conv_struct[0].p_dc_lp":{\
    "reading":"power_solarA",\
    "factor":1\
  },\
  "dc_conv.dc_conv_struct[1].p_dc_lp":{\
    "reading":"power_solarB",\
    "factor":1\
  },\


Eine Referenz aller Registry-Werte: https://rctclient.readthedocs.io/en/latest/inverter_registry.html

Auf der gleichen Seite gibt es im Menü auch einen Punkt, der die Werte auf die Android-App mapped...

Onkel.Tom

Zitat von: Nogga am 21 April 2022, 09:35:40
Ach und um Deine Frage konkret zu beantworten:


"dc_conv.dc_conv_struct[0].p_dc_lp":{\
    "reading":"power_solarA",\
    "factor":1\
  },\
  "dc_conv.dc_conv_struct[1].p_dc_lp":{\
    "reading":"power_solarB",\
    "factor":1\
  },\


Eine Referenz aller Registry-Werte: https://rctclient.readthedocs.io/en/latest/inverter_registry.html

Auf der gleichen Seite gibt es im Menü auch einen Punkt, der die Werte auf die Android-App mapped...

Klasse !
Vielen Dank.

Onkel.Tom

Zitat von: Nogga am 21 April 2022, 09:11:10
Das macht den Start vielleicht ein bisschen einfacher:


defmod my_rct_device fhempy rct_power 192.168.178.183
attr my_rct_device DbLogInclude .*
attr my_rct_device alias RCT Wechselrichter
attr my_rct_device default_device_readings off
attr my_rct_device device_readings_json {\
  "energy.e_grid_load_month":{\
    "reading":"energy_month_household_external",\
    "factor":1\
  },\
  "energy.e_grid_load_day":{\
    "reading":"energy_day_household_external",\
    "factor":1\
  },\
  "energy.e_ac_total":{\
    "reading":"energy_total",\
    "factor":1\
  },\
  "energy.e_grid_feed_total":{\
    "reading":"energy_total_grid_feed_in",\
    "factor":1\
  },\
  "battery.used_energy":{\
    "reading":"battery_used_energy",\
    "factor":1\
  },\
  "battery.soc":{\
    "reading":"battery_soc",\
    "factor":100\
  },\
  "energy.e_grid_feed_day":{\
    "reading":"energy_day_grid_feed_in",\
    "factor":1\
  },\
  "energy.e_ac_day":{\
    "reading":"energy_day",\
    "factor":1\
  },\
  "energy.e_load_day":{\
    "reading":"energy_day_household",\
    "factor":1\
  },\
  "energy.e_load_month":{\
    "reading":"energy_month_household",\
    "factor":1\
  },\
  "dc_conv.dc_conv_struct[0].p_dc_lp":{\
    "reading":"power_solarA",\
    "factor":1\
  },\
  "dc_conv.dc_conv_struct[1].p_dc_lp":{\
    "reading":"power_solarB",\
    "factor":1\
  },\
  "energy.e_ac_day":{\
    "reading":"energy_day",\
    "factor":1\
  },\
  "g_sync.p_acc_lp":{\
    "reading":"power_battery",\
    "factor":1\
  },\
  "g_sync.p_ac_grid_sum_lp":{\
    "reading":"power_grid_total",\
    "factor":1\
  },\
  "g_sync.p_ac_sum_lp":{\
    "reading":"power_household_total",\
    "factor":1\
  },\
  "g_sync.p_ac_load_sum_lp":{\
    "reading":"power_household_external",\
    "factor":1\
  }\
}
attr my_rct_device group # Strom
attr my_rct_device room Steuerung
attr my_rct_device stateFormat {\
"PV-Leistung: ".(ReadingsVal($name, "power_solarA", "0")+ReadingsVal($name, "power_solarB", "0"))." W\
    (O: ".(ReadingsVal($name, "power_solarB", "0"))." W / \
    W: ".(ReadingsVal($name, "power_solarA", "0"))." W)<br>\
Gesamtertrag heute: ".sprintf("%.2f", (ReadingsVal($name, "energy_day", "0")/1000))." kWh<br>\
Batterie-Kapazität: ".(ReadingsVal($name, "battery_soc", "0"))." %<br>\
Batterie-".((ReadingsVal($name, "power_battery", 1) < 0) ? "Ladung" : "ENTladung").": ".abs(ReadingsVal($name, "power_battery", "-"))." W<br>\
Netz-".((ReadingsVal($name, "power_grid_total", 1) < 0) ? "Einspeisung" : "Bezug").": ".abs(ReadingsVal($name, "power_grid_total", "-"))." W<br>\
Hausverbrauch: ".(ReadingsVal($name, "power_household_external", "-"))." W<br>\
Heutiger Hausverbrauch: ".sprintf("%.2f", (ReadingsVal($name, "energy_day_household", "0")/1000))." kWh \
    davon aus dem Netz: ".sprintf("%.2f", (ReadingsVal($name, "energy_day_household_external", "0")/1000))." kWh"\
}
attr my_rct_device update_readings on_change
attr my_rct_device userReadings power_solarCombined:power_solar(A|B).* { (ReadingsVal($name, "power_solarA", "0")+ReadingsVal($name, "power_solarB", "0")) }


In meiner DB habe ich dann noch historische Auswertungen, falls Interesse besteht...

Hallo,

doch nochmal eine Nachfrage:

Die momentane Solar-Leistung habe ich dank Deiner Hilfestellung schnell nachvollziehen können - vielen Dank nochmal.

Beim Betrachten Deines FHEM-Codes dachte ich auch die kummulierte Tages-Gesamt-Solarleistung identifiziert zu haben.
Du verwendest hierfür energy_day bzw. energy.e_ac_day.
Bei mir steigt dieser Wert jedoch bei Dunkelheit weiter an. Scheinbar wird hier die Tages-Inverterleistung gezählt, d.h. auch der Strom, der aus der Batterie kommt und invertiert wird.

Daher meine Frage: Gibt es einen Parameter, der die reine Solarleistung kummuliert ?

VG
Onkel Tom

Nogga

Hmm, das kann ich jetzt so nicht nachvollziehen.
Hab mal testweise mein Chart mit dem Wert ersetzt. Die rote Kurve ist energy_day.
Man erkennt, dass sie deutlich abflacht.

Müsste jetzt nochmal jeden einzelnen Wert überprüfen, ob Deine Vermutung nicht doch zutrifft, aber tendenziell nicht.
Ich habe einen Grundumsatz von ca. 250 W mit regelmäßigen Peaks auf 600 (wg. Wasserbett) - wenn das aus der Batterie käme wüsste ich das.

Nogga

Wobei - ich hab mir den Vortag angeschaut - sieht schon verdächtig aus...

Onkel.Tom

Auch vor Sonnenaufgang steigt der Wert energy_day an...