Aktualisieren von userReadings in einer readingsGroup

Begonnen von Spook112, 23 Februar 2025, 15:23:06

Vorheriges Thema - Nächstes Thema

Spook112

Hallo liebe Gemeinde,

ich bastele schon seit geraumer Zeit an einer readingsGroup rum und komme nicht ganz zum Ziel.
Ich hoffe ich finde hier ein paar hilfreiche Anregungen :-)

Aufgabenstellung:
Ich habe zwei Solaranlagen mit jeweils 2 Panels, deren Werte (aus verschiedenen Readings) ich in einer gemeinsamen readingsGroup darstellen möchte. Das klappt alles so weit.
Jetzt möchte ich in dieser readingsGroup noch eigene userReadings befüllen mit den Summenwerten der aus den beiden Solaranlagen gelieferten Einzelwerte. Das klappt auch.
Die userReadings der readingsGroup werden getriggert und befüllt wenn sich in den Readings der Solaranlagen-Devices etwas ändert.
So weit so gut.
Was aber nicht klappt - diese Werte (userReadings der readingsGroup) werden in der readingsGroup-Darstellung nicht automatisch aktualisiert.
WIe man in dem größeren Bild unten sieht werden die rot angezeigten Werte regelmäßig automatisch aktualisiert.
Die unteren vier Werte aber nicht. Jedenfalls nicht in dieser Darstellung.
Im Device werden die Readings sehr wohl kontinuierlich aktualisiert wie man im zweiten Bild sieht.
DIe Peak-Werte werden natürlich nur dann aktualisiert wenn die aktuelle Stromproduktion höher ist als der letzte Höchstwert.  Das funktioniert an sich einwandfrei - nur eben für die 4 unteren Werte nicht in der Übersicht.

Hat jemand eine Idee woran das liegen könnte und was zu tun ist, um eine entsprechende automatische Aktualisierung dieser vier Werte hin zu bekommen?

Hier nich das Listing der readingsGroup Devices:
Internals:
   CFGFN     
   DEF        EZ1_inverter_HWR:p1
EZ1_inverter_HWR:p2
EZ1_inverter_HWR:total_power
EZ1_inverter_HWR:total_power_peak
EZ1_inverter_HWR:e1
EZ1_inverter_HWR:e2
EZ1_inverter_HWR:energy_today
EZ1_inverter_GaHa:Panel_1
EZ1_inverter_GaHa:Panel_2
EZ1_inverter_GaHa:total_power
EZ1_inverter_GaHa:total_power_peak
EZ1_inverter_GaHa:e1
EZ1_inverter_GaHa:e2
EZ1_inverter_GaHa:energy_today
Solarstromproduktion:Gesamtproduktion_aktuell
Solarstromproduktion:Gesamtproduktion_today
Solarstromproduktion:ProduzierteLeistung_momentan
Solarstromproduktion:total_power_peak
   FUUID      67b5041a-f33f-5fc3-25c3-a07f2866aa6f32fc
   NAME       Solarstromproduktion
   NR         578
   NTFY_ORDER 50-Solarstromproduktion
   STATE      Initialized
   TYPE       readingsGroup
   changed    0
   eventCount 85992
   mayBeVisible 1
   CONTENT:
     EZ1_inverter_GaHa 1
     EZ1_inverter_HWR 1
     Solarstromproduktion 1
   CONTENT2:
   DEVICES:
     ARRAY(0x8f2dad0)
     ARRAY(0x82d7f40)
     ARRAY(0x8f3e4c0)
     ARRAY(0x8fa84c8)
     ARRAY(0x8ed9938)
     ARRAY(0x916e120)
     ARRAY(0x8fb5f28)
     ARRAY(0x24d2c70)
     ARRAY(0x82d75b0)
     ARRAY(0x8edd8e8)
     ARRAY(0x86bf2b8)
     ARRAY(0x8e2f038)
     ARRAY(0x8f2d158)
     ARRAY(0x542c1f0)
     ARRAY(0x82b42b0)
     ARRAY(0x8f8b340)
     ARRAY(0x8fb0588)
     ARRAY(0x8f895f0)
   OLDREADINGS:
   READINGS:
     2025-02-23 15:18:39   Gesamtproduktion_aktuell 1.19545
     2025-02-23 15:18:39   Gesamtproduktion_today 1.19545
     2025-02-23 15:18:39   ProduzierteLeistung_momentan 247
     2025-02-23 15:18:39   Trigger         55
     2025-02-23 13:14:37   total_power_peak 819
   fhem:
     lastDefChange 397
     last_update 1740318694.39275
   helper:
     DEF       
     positions:
       EZ1_inverter_GaHa.Panel_1 8:1
       EZ1_inverter_GaHa.Panel_2 9:1
       EZ1_inverter_GaHa.e1 12:1
       EZ1_inverter_GaHa.e2 13:1
       EZ1_inverter_GaHa.energy_today 14:1
       EZ1_inverter_GaHa.total_power 10:1
       EZ1_inverter_GaHa.total_power_peak 11:1
       EZ1_inverter_HWR.e1 5:1
       EZ1_inverter_HWR.e2 6:1
       EZ1_inverter_HWR.energy_today 7:1
       EZ1_inverter_HWR.p1 1:1
       EZ1_inverter_HWR.p2 2:1
       EZ1_inverter_HWR.total_power 3:1
       EZ1_inverter_HWR.total_power_peak 4:1
       Solarstromproduktion.Gesamtproduktion_aktuell 15:1
       Solarstromproduktion.Gesamtproduktion_today 16:1
       Solarstromproduktion.ProduzierteLeistung_momentan 17:1
       Solarstromproduktion.total_power_peak 18:1
     recalc:
       undef
       ARRAY(0x8fa4438)
     valueFormat:
       Gesamtproduktion_aktuell %.2f kWh
       Gesamtproduktion_today %.2f kWh
       Panel_1    %.0f W
       Panel_2    %.0f W
       ProduzierteLeistung_momentan %.0f W
       e1         %.2f kWh
       e2         %.2f kWh
       energy_today %.2f kWh
       p1         %.0f W
       p2         %.0f W
       total_power %.0f W
       total_power_peak %.0f W
     values:
       formated:
         undef
         ARRAY(0x8e297a8)
       orig:
         undef
         ARRAY(0x8f8a318)
       prefixsuffix:
         undef
         ARRAY(0x8ed7ac8)
Attributes:
   group      Solaranlagen
   icon       measure_photovoltaic_inst
   room       Solar
   sortby     30
   userReadings ProduzierteLeistung_momentan:.* { ReadingsVal("EZ1_inverter_HWR", "p1", 0) + ReadingsVal("EZ1_inverter_HWR", "p2", 0) + ReadingsVal("EZ1_inverter_GaHa", "Panel_1", 0) + ReadingsVal("EZ1_inverter_GaHa", "Panel_2", 0) },
Gesamtproduktion_today:.* { ReadingsVal("EZ1_inverter_HWR", "energy_today", 0) + ReadingsVal("EZ1_inverter_GaHa", "energy_today", 0) },
Gesamtproduktion_aktuell:.* { ReadingsVal("EZ1_inverter_HWR", "e1", 0) + ReadingsVal("EZ1_inverter_HWR", "e2", 0) + ReadingsVal("EZ1_inverter_GaHa", "e1", 0) + ReadingsVal("EZ1_inverter_GaHa", "e2", 0) },
total_power_peak:.* { if (ReadingsVal($name, "total_power_peak", 0) < ReadingsVal($name, "ProduzierteLeistung_momentan", 0)) {ReadingsVal($name, "ProduzierteLeistung_momentan", 0)} elsif (ReadingsVal($name, "total_power_peak", 0) >= ReadingsVal($name, "ProduzierteLeistung_momentan", 0)){} }

   valueFormat { total_power_peak => "%.0f W", total_power => "%.0f W", ProduzierteLeistung_momentan => "%.0f W", Panel_1 => "%.0f W", Panel_2 => "%.0f W", p1 => "%.0f W", p2 => "%.0f W", energy_today => "%.2f kWh", Gesamtproduktion_today => "%.2f kWh", Gesamtproduktion_aktuell => "%.2f kWh", e1 => "%.2f kWh", e2 => "%.2f kWh"}


Danke im Voraus für Eure Hilfe/Vorschläge.
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

ergerd

FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, Buderus KM200, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Spook112

In der Annahme, dass eine ReadingGroup auch ein Device ist - ja.
Siehe auch das Listing oben.

Liege ich in der Annahme etwa falsch ?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

ergerd

Ich habe noch nie UserReadings in einer ReadingGroup angelegt, ich
habe immer Dummy benutzt um Daten zu kumulieren und den dann
in die ReadingGroup eingebaut.
Ich denke in einer ReadingGroup fehlt der Trigger zur Aktualisierung
FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, Buderus KM200, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Spook112

Das es da keinen Trigger gibt ist mir auch aufgefallen.
Deshaln habe ich ein zusätzliches userReadings "Trigger" angelegt, das bei Veränderungen in den Readings der Solaranlagendevices "EZ1_inverter_GaHa" und "EZ1_inverter_HWR" gesetzt wird und damit zu einer automatischen Aktualisierung der anderen userReadings in der readingsGroup führt.
Wie geschrieben.
Die userReadings aktualisieren sich dann auch, nur nicht die Werte in der angezeigten readingsGroup (siehe großes Bild oben)
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

frank

schon mal "attr alwaysTrigger" probiert?
ZitatalwaysTrigger
1 -> always trigger update events. even if not visible.
2 -> trigger events for calculated values.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Spook112

Nein - habe ich noch nicht.
Ich habe zugegebenermassen auch das Prinzip oder die Bedeutung von alwaysTrigger noch nicht ganz verstanden.
Müsste ich das in der readingsGroup setzen - oder in den "Quell-Devices" die ja eigentlich die Readings erzeugen/aktualisieren?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

frank

das attr gehört zur readingsgroup.

ein userreading wird immer nur von events des eigenen devices gtriggert.
wenn die readingsgroup keine eigenen events erzeugt, kann das userreading auch nicht "aktualisiert/erzeugt" werden.
schau in den eventmonitor, dazu ist er da.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Spook112

Zitat von: frank am 24 Februar 2025, 09:08:55schon mal "attr alwaysTrigger" probiert?
ZitatalwaysTrigger
1 -> always trigger update events. even if not visible.
2 -> trigger events for calculated values.
Ich habe es jetzt ausprobiert mit alwaysTrigger 2
Dsa hat aber nichts verändert.
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

TomLee

Hallo,

was spricht denn dagegen die userReadings (mit trigger!) einfach in einem der Inverter-Devices vorzunehmen und die in der rG dann "einzulesen"?

Zitat von: commandrefuserReadings
A comma-separated list of definitions of user-defined readings. Each definition has the form:

    <reading>[:<trigger>] [<modifier>] { <perl code> }

After a single or bulk readings update, the user-defined readings are set by evaluating the perl code { <perl code> } for all definitions and setting the value of the respective user-defined reading <reading> to the result. If <trigger> is given, then all processing for this specific user reading is only done if one of the just updated "reading: value" combinations matches <trigger>, which is treated as a regexp.
Examples:

    attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }
    attr myMultiMeter userReadings energy1:counters.A.* { ReadingsVal("myMultiMeter","counters.A",0)/1250.0;; }, energy2:counters.B.* { ReadingsVal("myMultiMeter","counters.B",0)/1250.0;; }

Gruß Thomas

Spook112

Ich weiss nicht, ob ich Dich richtig verstanden habe.

Meinst Du in einem der beiden Inverter Devices auch in einem (oder mehreren) zusätzlichen userReadings das Aufsummieren der beiden Inverter Devices vorzunehmen ?
Wenn das geht könnte das ein Ansatz sein.
Werde ich mal am WE versuchen.
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren