Per Notify gesetzte Readings erzeugen kein Event

Begonnen von ph0x, 11 März 2025, 19:17:25

Vorheriges Thema - Nächstes Thema

ph0x

Hallo!

Offenbar bin ich zu doof für alles ...

Da ich auf das zigfache Splitten ein und desselben Readings in userReadings verzichten will, habe ich das Splitten in ein Notify ausgelagert. So sieht das aus:
Heizung:sHC2.* {

    my $hash = $defs{'Heizung'};
    my @sHC2 = split(' ', $EVENT);

    if (@sHC2 == 17) {
        readingsBeginUpdate($hash);
        readingsBulkUpdateIfChanged($hash, 'user_vorlaufTempHK2', $sHC2[6], 1);
        readingsBulkUpdateIfChanged($hash, 'user_heatSetTempHK2', $sHC2[8], 1);
        readingsBulkUpdateIfChanged($hash, 'user_heatTempHK2', $sHC2[10], 1);
        readingsEndUpdate($hash, 1);
    }
}
Das Ändern der Readings funktioniert.
Leider erzeugt jetzt jedoch nur das Updaten von sHC2 ein Event, nicht aber das Updaten der einzelnen Readings innerhalb des Notify, obwohl ich das doch im Notify (readingsBulkUpdateIfChanged mit viertem Argument) und auch beim Device entsprechend gesetzt hab:
defmod Heizung THZ 172.16.30.17:2303
attr Heizung DbLogInclude user_.*
attr Heizung alias Wärmepumpe
attr Heizung devStateIcon opened:rc_GREEN disconnected:rc_RED
attr Heizung event-min-interval user_outsideTemp.*:450,user_outside_tempFiltered.*:450,user_heatSetTempHK1.*:450,user_flowTempHK1.*:450,user_heatTempHK1.*:450,user_heatSetTempHK2.*:450,user_heatTempHK.2*:450,user_dhwTemp.*:450,user_sHeatingRelPower.*:450,user_hcBoosterStage.*:900,user_heatingCircuitPump*:900,user_sComprRotLimit.*:450,user_sComprRotUnlimit.*:450,user_inputVentilatorPower*:900,user_outputVentilatorPower*:900,user_mainVentilatorPower*:900
attr Heizung event-on-change-reading user_.*,sGlobal.*,sHC.*,sDisplay.*
attr Heizung firmware 5.39
attr Heizung group Verbindungsstatus
attr Heizung icon sani_boiler_temp
attr Heizung interval_sDisplay 120
attr Heizung interval_sGlobal 120
attr Heizung interval_sHC1 120
attr Heizung interval_sHC2 120
attr Heizung interval_sHistory 43200
attr Heizung interval_sLast10errors 7200
attr Heizung nonblocking 1
attr Heizung room Gesamt
attr Heizung userReadings user_service:sDisplay.* {(split ' ',ReadingsVal($name,"sDisplay",0))[25]},\
user_filter:sDisplay.* {max((split ' ',ReadingsVal($name,"sDisplay",0))[11], (split ' ',ReadingsNum($name,"sDisplay",0))[19], (split ' ',ReadingsNum($name,"sDisplay",0))[21])}
Kann mir jemand sagen, wo ich da schon wieder auf dem Schlauch stehe?


Gruß Marco

frober

Bin mir nicht ganz sicher, aber vermutlich kannst du mit dem notify keine Events für den Trigger, also das selbe Device, erzeugen damit keine Endlosschleife entsteht.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ph0x

Hm ok, dann werd ich mal ein at ausprobieren. Entweder zum Splitten oder zum Triggern, mal schauen.

Danke jedenfalls!

MadMax-FHEM

Warum willst du von den userReadings weg?
Genau dafür ist das doch da...

sleep und setreading würde gehen, wenn du unbedingt ein notify dafür haben willst...

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)

ph0x

#4
Das "Problem" ist, dass vier Readings in über 30 userReadings aufgeteilt werden und für jedes davon ein split gemacht und genau ein Wert gezogen wird. Das nervt mich, daher will ich das effizienter gestalten.

Es läuft aber ohnehin schon ein periodisches at für drei userReadings, die ich nur über einen get-Befehl erhalten kann, da kommt der Rest jetzt auch mit rein und damit funktioniert's auch.

Vielen Dank nochmal!

frober

Ich würde das in MyUtils auslagern und die Sub über userReadings in der Heizung aufrufen.

In der Sub kannst du mit einen Split alle Devices mit Readings bedienen oder was auch immer du möchtest.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ph0x