Wechselrichter Hoymiles HM-600 mit FHEM verbinden anstelle mit WLAN Stick DTU-W1

Begonnen von josburg, 25 Mai 2021, 18:03:41

Vorheriges Thema - Nächstes Thema

Bracew

Hallo,

ich habe nochmals neu angesetzt und ohne attrTemplate ist folgendes herausgekommen:
 Du darfst diesen Dateianhang nicht ansehen.

Danke an alle helfenden Hinweisgeber.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

Vielleicht eine prinzipielle Anmerkung: Wenn man nur einen Inverter hat, erschließt es sich vielleicht nicht gleich, warum per attrTemplate mindestens zwei Geräte erstellt werden. Das hat damit zu tun, dass m.E. eben die DTU (bzw. der ESP) eine eigene logische Einheit darstellt, und jeder Inverter für sich wieder eine andere Einheit.

@kpwg
Warum verwendest du eine andere (scheinbar nicht wirksame) bridgeRegexp als das attrTemplate und dann stattdessen readingsProxy, um die aus der fehlenden Trennung enstehenden Probleme zu lösen?
@Bracew:
Wenn du die gplot-Definition und das SVG-Device (als raw-list oder "copy for forum") zeigen würdest, kann ich das ggf. leichter mit per attrTemplate verteilen.
Ansonsten könnt ihr euch auch gerne mal den devStateIcon-Code für Ahoy anschauen, das sollte sich relativ einfach an OpenDTU anpassen lassen. Kommt dann sowas raus (das erste ist ein 2-kanaliger MI, der keinen Gesamtertrag liefert, und im Momment sind die einzelnen Panels eben manges viel Sonne noch "kalt", also blau):
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kpwg

Zitat von: Beta-User am 15 Juli 2023, 06:45:06Warum verwendest du eine andere (scheinbar nicht wirksame) bridgeRegexp als das attrTemplate und dann stattdessen readingsProxy, um die aus der fehlenden Trennung enstehenden Probleme zu lösen?
Kurze Antwort: Weil es funktioniert.

Ausführlich: Meine Erfahrung mit Templates verschiedener Autoren ist "durchwachsen", daher bin ich mit eigenen Lösungen oft besser gefahren. Zudem gab es kein Template, als ich meinen HM-600 eingerichtet habe, eine nochmalige Anpassung an fremde Vorgaben ohne Mehrwert ist daher unnötig. Ich finde das readingsProxy eine sehr einfache/verständliche und elegante Art, einzelne Parameter vom "Grundgerät" zu entkoppeln und anzupassen. Die Idee hinter den logischen Einheiten bei Erstellung mit dem Template kann ich dennoch gut nachvollziehen; das macht auch absolut Sinn.

Beta-User

Moin zusammen,

nachdem es in den 0.7.xx-Versionen von AhoyDTU einige Neuerungen auf der MQTT-Seite gab, habe ich vorhin die betr. attrTemplate aktualisiert.

Feedback ist willkommen.

Zitat von: kpwg am 16 Juli 2023, 14:00:40
Zitat von: Beta-User am 15 Juli 2023, 06:45:06Warum verwendest du eine andere (scheinbar nicht wirksame) bridgeRegexp als das attrTemplate und dann stattdessen readingsProxy, um die aus der fehlenden Trennung enstehenden Probleme zu lösen?
Kurze Antwort: Weil es funktioniert.

Ausführlich: Meine Erfahrung mit Templates verschiedener Autoren ist "durchwachsen", daher bin ich mit eigenen Lösungen oft besser gefahren. Zudem gab es kein Template, als ich meinen HM-600 eingerichtet habe, eine nochmalige Anpassung an fremde Vorgaben ohne Mehrwert ist daher unnötig. Ich finde das readingsProxy eine sehr einfache/verständliche und elegante Art, einzelne Parameter vom "Grundgerät" zu entkoppeln und anzupassen. Die Idee hinter den logischen Einheiten bei Erstellung mit dem Template kann ich dennoch gut nachvollziehen; das macht auch absolut Sinn.
Danke für die Rückmeldung, ist soweit nachvollziehbar.

Die attrTemplate sind "nur ein Vorschlag", und es ist und bleibt weiter Ziel, die weiterzuentwickeln. Wenn also was (immerhin!) "durchwachsen" funktioniert, ist in der Regel keiner beleidigt, wenn Verbesserungsvorschläge kommen...
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kpwg

Zitat von: Beta-User am 17 August 2023, 07:31:05Die attrTemplate sind "nur ein Vorschlag", und es ist und bleibt weiter Ziel, die weiterzuentwickeln. Wenn also was (immerhin!) "durchwachsen" funktioniert, ist in der Regel keiner beleidigt, wenn Verbesserungsvorschläge kommen...

Sehr gerne! Ich habe ja auch Interesse daran, die Dinge langfristig sauberer abzubilden und nicht "einfach so" zu belassen, nur weil es mit dem aktuellen Verständnis funktioniert. Ich schreibe, da ich an anderer Stelle (Einbindung Bresser 7in1-Wetterstation über ESP/MQTT) genau an diesem Punkt stehe und dieses mal mit bridgeRegexp hantiere, aber keine oder keine sinnvollen SubDevices erhalte. Dazu würde ich mich an anderer Stelle nochmal melden, denn hier ist das ot.

Audi_Coupe_S

Hallo,

ich habe eine Frage zu den Templates für die Hoymiles Wechselrichter.

Ich habe 3 WR im Einsatz, einen neuen 1600er und zwei ältere 400er.

Die neuesten Templates nach Update habe ich angewand.


Der 1600er gibt folgendes aus:

1.     993.6 W / 598 Wh / 6.1 kWh
2.     271.2 W / 148 Wh / 1.6 kWh
3.     276.7 W / 167 Wh / 1.4 kWh
4.     234.3 W / 121 Wh / 1.4 kWh
5.     263.5 W / 162 Wh / 1.8 kWh

(1. Zeile Gesamt Gerät, 2-5. Zeile die Werte der einzelnen WR-Anschlüsse (Solarmodule)).
Die Werte sind alle plausibel.

Die beiden 400er geben folgendes aus:

1.    152.1 W / 54 Wh / 229.4 kWh
2.     0 W / 113 Wh

1.    156.7 W / 26 Wh / 238.3 kWh
2.    0 W / 102 Wh

Die Werte des Gerätes (jeweils 1. Zeile) sind plausibel, aber die Werte der zweiten Zeile (Module) sind nicht richtig.
Was mache ich falsch?

Gruß
Michael

Beta-User

Zitat von: Audi_Coupe_S am 21 Oktober 2023, 11:43:16Die Werte des Gerätes (jeweils 1. Zeile) sind plausibel, aber die Werte der zweiten Zeile (Module) sind nicht richtig.

Was mache ich falsch?
Vermutlich nichts; der Code ist entstanden, ohne die "Spezialitäten" der 1ch-Devices zu berücksichtigen...

Muss mal schauen, ob da was machen kann, ein (raw-) list wäre hilfreich, das wird aber etwas dauern.
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Audi_Coupe_S

Hallo,

wenn ich was beitragen kann, gerne. Dann musst du mir aber genau sagen, was ich dir liefern soll, da bin ich nicht der Profi.

Gruß
Michael

Audi_Coupe_S

Hallo,

ich habe die  attrTemplate´s ersteinmal wieder herausgenommen, da sie mir zuverlässing innerhalb von 2-3 Tagen den Speicher gefüllt haben und zu "cannot fork......." geführt haben.

Beta-User

Zitat von: Audi_Coupe_S am 24 Oktober 2023, 17:19:29Hallo,

ich habe die  attrTemplate´s ersteinmal wieder herausgenommen, da sie mir zuverlässing innerhalb von 2-3 Tagen den Speicher gefüllt haben und zu "cannot fork......." geführt haben.
Seltsamer Effekt. Das sind zwar schon ein paar kB, aber dass das dann das Fass zum überlaufen bringt, ist afaik eher selten.
Jedenfalls habe ich mal den Versuch eingecheckt, das auch für die Einkanaligen passend zu machen, die betr. myUtils file bekommst du ggf. auch isoliert mit
{ Svn_GetFile('contrib/AttrTemplate/99_attrT_Ahoy_Utils.pm', 'FHEM/99_attrT_Ahoy_Utils.pm', sub(){ CommandReload(undef, '99_attrT_Ahoy_Utils') }) }
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

joachimS

Hi kpwg,
Vielen Dank für den Code, aber
bei meinem openDTU tut zwar das stateFormat korrekt:
Du darfst diesen Dateianhang nicht ansehen.
 aber es führt laufend zu folgenden Fehlern, deswegen musste ich es auskommentieren;
2024.01.30 09:07:26 1: PERL WARNING: Argument "?" isn't numeric in sprintf at (eval 41982) line 1.
2024.01.30 09:07:26 3: eval:  sprintf("%.1f W aktuell, %.0f W gesetzt<br> %.1f V / %.2f Hz / %.1f °C <br> %.3f kWh heute",
ReadingsVal($name,"1164804xxxx_0_power","?") ,
ReadingsVal($name,"limit_absolute","?") ,
ReadingsVal($name,"1164804xxxx_0_voltage","?") ,
ReadingsVal($name,"1164804xxxx_0_frequency","?") ,
ReadingsVal($name,"1164804xxxx_0_temperature","?"),
ReadingsVal($name,"1164804xxxx_0_yieldday","?")/1000)
2024.01.30 09:07:26 1: PERL WARNING: Argument "?" isn't numeric in sprintf at (eval 41984) line 1.
2024.01.30 09:07:26 3: eval:  sprintf("%.1f W aktuell, %.0f W gesetzt<br> %.1f V / %.2f Hz / %.1f °C <br> %.3f kWh heute",
ReadingsVal($name,"1164804xxxx_0_power","?") ,
ReadingsVal($name,"limit_absolute","?") ,
ReadingsVal($name,"1164804xxxx_0_voltage","?") ,
ReadingsVal($name,"1164804xxxx_0_frequency","?") ,
ReadingsVal($name,"1164804xxxx_0_temperature","?"),
ReadingsVal($name,"1164804xxxx_0_yieldday","?")/1000)
2024.01.30 09:07:26 1: PERL WARNING: Argument "?" isn't numeric in sprintf at (eval 41986) line 1.
2024.01.30 09:07:26 3: eval:  sprintf("%.1f W aktuell, %.0f Wa gesetzt<br> %.1f V / %.2f Hz / %.1f °C <br> %.3f kWh heute",
ReadingsVal($name,"1164804xxxx_0_power","?") ,
ReadingsVal($name,"limit_absolute","?") ,
ReadingsVal($name,"1164804xxxx_0_voltage","?") ,
ReadingsVal($name,"1164804xxxx_0_frequency","?") ,
ReadingsVal($name,"1164804xxxx_0_temperature","?"),
ReadingsVal($name,"1164804xxxx_0_yieldday","?")/1000)
1164804xxxx ist natürlich die korrekte Serial des INverters
Woran kann das liegen?
Vielen Dank!
Zitat von: kpwg am 11 Juli 2023, 13:56:03Anbei zum Beitrag #251 von mir der Code. Ohne Logging  ::)
Alles nix Neues, aber vielleicht kann es jemand gebrauchen oder auch optimieren.

Der HM-600. Hier habe ich nur ein wenig mit stateFormat gearbeitet sowie zum testen den Slider drin. Das Userreading macht Berechnungen im Nachgang einfacher.
...
attr DTU2 stateFormat { sprintf("%.1f W aktuell, %.0f W gesetzt<br> %.1f V / %.2f Hz / %.1f °C <br> %.3f kWh heute",\
ReadingsVal($name,"1141831xxxxx_0_power","?") ,\
ReadingsVal($name,"limit_absolute","?") ,\
ReadingsVal($name,"1141831xxxxx_0_voltage","?") ,\
ReadingsVal($name,"1141831xxxxx_0_frequency","?") ,\
ReadingsVal($name,"1141831xxxxx_0_temperature","?"),\
ReadingsVal($name,"1141831xxxxx_0_yieldday","?")/1000) }
attr DTU2 userReadings limit_calc {ReadingsVal("DTU2","producing",'') eq "1" ? ReadingsNum("DTU2","1141831xxxxx_0_power",'') : 0 }
attr DTU2 webCmd :
Gruss
Joachim

(fhem auf Synology DS209, CUL, FS20, FHT, EM, HM, Keymatic, Hue, OpenDTU)

joachimS

Zitat von: joachimS am 30 Januar 2024, 14:41:47ReadingsVal($name,"1141831xxxxx_0_power","?") ,\
Habe die Lösung gefunden:
Der ReadingsVal Parameter muss in diesem Fall numerisch sein, habe einfach "0" genommen.
Habe leider keine ReadingsVal Doku gefunden, nur Beispiele, auch mit ?.
Gruss
Joachim

(fhem auf Synology DS209, CUL, FS20, FHT, EM, HM, Keymatic, Hue, OpenDTU)

MadMax-FHEM

ReadingsVal("DeviceName", "ReadingName", "Ersatzwert")

EDIT: https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsVal

Ersatzwert: wenn beim Auslesen was "schief" geht, dann wird eben der Wert zurückgegeben.

Beim Fragezeichen oder "n.a." oder anderem "Blödsinn" erkennst du halt sofort, dass das Auslesen nicht geklappt hat.

Mit deiner "0" denke ich "verschleierst" du das nur und denkst es geht...

EDIT: und wenn es numerisch sein soll/ist, dann besser ReadingsNum

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

joachimS

Zitat von: MadMax-FHEM am 03 Februar 2024, 10:27:22ReadingsVal("DeviceName", "ReadingName", "Ersatzwert")
Danke für den Link, konnte ich im Wiki nicht finden.
Allerdings fehlt auch der Parametertyp, in meinem Fall wohl numerisch.
Besser verschleiern als endlose Fehler, ausserdem hatten die Readings vermutlich Werte. Wenn dann kann das nur ganz am ANfang passieren.
Gruss
Joachim

(fhem auf Synology DS209, CUL, FS20, FHT, EM, HM, Keymatic, Hue, OpenDTU)

joachimS

Zitat von: Bracew am 13 Juli 2023, 19:47:39Hallo,

ich habe nochmals neu angesetzt und ohne attrTemplate ist folgendes herausgekommen:
 Du darfst diesen Dateianhang nicht ansehen.

Danke an alle helfenden Hinweisgeber.

Gruß Bracew
Hi Bracew,
könntest du bitte deinen FileLog REGEX sharen?
Ich bekomme folgenden Fehler:
Could not optimize the regexp:
OpenDTU:.*(0_yieldday|0_power|1_power|2_power|4_power).*
How I tried (notifyRegexpCheck):
OpenDTU:.*(0_yieldday: device OpenDTU (OK)
0_power: unknown (ignored)
1_power: unknown (ignored)
2_power: unknown (ignored)
4_power).*: no match (ignored)

Meine Readings:
11648041xxxx_0_power 59.3 2024-02-03 10:44:35
11648041xxxx_1_power 21.6 2024-02-03 10:44:35
11648041xxxx_2_power 18.7 2024-02-03 10:45:56
11648041xxxx_4_power 20.2 2024-02-03 10:46:31

Ich weiss allerdings nicht ob ich das richtige Template habe. Wie listet man das und welches brauche ich für opendtu/MQTT client?
Ich vermute das für MQTT client. Meine Readings sehen ja gut aus, also müsste es passen.

Habe auch di_counter_new am Start, das tut bis jetzt für 0_yieldtotal, morgen weiss ich mehr.

Merci und LG
Joachim
Gruss
Joachim

(fhem auf Synology DS209, CUL, FS20, FHT, EM, HM, Keymatic, Hue, OpenDTU)