Benachrichtigung bei set_ // nach notify warten und dann Befehl ausführen...

Begonnen von Bytechanger, 24 August 2016, 18:09:44

Vorheriges Thema - Nächstes Thema

Bytechanger

Hallo,

ich möchte über bestehende "set_" STATE benachrichtigt werden.
Hier hat es ja offensichtlich nicht geklappt, dass ein Befehl übertragen wurde.

Zunächst habe ich ein DOIF gebaut:

DOIF ([":.*set_.*"]) ({
my $status=Value("$DEVICE");;
if("$status" =~ m/set_/ ){
             SendMessage(1,"Status steht im SET $DEVICE:$EVENT",'Fehlmessage',0);;
             Log3 undef, 3, "Stehe im Set_ Name: $DEVICE Event: $EVENT";;
}
})

und dann ein WAIT gesetzt.

Das funktioniert grundsätzlich auch, aber wenn nun in der Wartezeit ein weiterer Befehl abgesetzt wird, wird der erste nicht mehr berücksichtigt, da das DOIF offensichtlich überschrieben wird...

Gibt es eine Möglichkeit mein Vorhaben umzusetzen???
Ein Notify müsste z.B. nonblocking warten und dann abfragen..


Greets

Byte

CoolTux

Ich würde versuchen die Geräte in der Notify RegEx ein zu grenzen. Und die Auswertung in eine myUtils aus lagern.
Solltest Du bei DOIF bleiben wollen, lese Dir mal durch wie man da Werte von Readings aus liest. Du machst Dir für DOIF viel zu viel Arbeit. Du benötigst nicht eine Zeile Perlcode.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Bytechanger

Hi,

also zum Verständnis, Du würdest ein notify auf das Gerät setzen und dann in perl wechseln (myUtils).

Dort müsste ich ja dann nonblocking warten (wie??) und dann den Status abfragen....
Das warten ist Pflicht, da die HM-Geräte für den Bruchteil einer Sekunde auf "set_" stehen und dann, sofern das Gerät die Rückmeldung gab, auf den Status springen (halt bidirektional)...

Greets

Byte

frank

ich würde erstmal prüfen, warum es keine rückmeldung gab. hat ja sicherlich einen grund gehabt. vor allem, wenn es auch noch öfter passiert.
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

MadMax-FHEM

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)

justme1968

watchdog kann jeweils nur ein device. bzw. könnte das zweite event nicht dem gleichen device wie das erste event zuordnen. 

es geht aber z.b. mit ein (oder zwei, je nach code) notifys und benannten fhem also sleep.

das prinzip wäre in einem notify auf set_ eine mit sleep verzögerte und benannte aktion zu starten und für den falll das etwas anderes als set_ kommt das sleep wieder zu löschen.

unabhängig davon sollte man aber das eigentliche problem fixen. das es keine rückmeldung gibt sollte die ausnahme sein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

MadMax-FHEM

Ah, ich dachte watchdog: event dann "warten" und wenn nicht anderer event dann auslösen...

Hmmm, gut mit watchdog hab ich noch nichts gemacht.
Dachte nur es klingt danach.
Soll ja set_ "überwachen"...

Ich dachte sleep in notify kann man nicht löschen?
Hab das die Tage mal wo im Forum gelesen als ich selber mit notify und sleep rumprobiert habe.

Ich habe gelesen, dass ein "namenloser" 'at' erzeugt wird...
...und da "namenlos" auch nicht (durch den Anwender) löschbar...
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)

justme1968

das mit dem watchdog geht nicht weil ja z.b. zwei set_ von zwei geräten kurz nach einander kommen können und dann kannst watchdog die nachfolgenden nicht set_ nicht dem passenden zuordnen.

sleep hat einen optionalen zweiten parameter mit dem man das sleep benennen und auch wieder löschen kann. wenn man als namen  vom device namen ableitet wird er eindeutig hat man das problem von oben nicht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frank

Zitatsleep hat einen optionalen zweiten parameter mit dem man das sleep benennen und auch wieder löschen kann. wenn man als namen  vom device namen ableitet wird er eindeutig hat man das problem von oben nicht.
man-o-man, was es so alles gibt.  8)
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

MadMax-FHEM

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)

CoolTux

@Bytechanger

Falls noch nicht gemacht definiere mal hminfo. Ein stehendes set bei Homematic bedeutet meist keine Rückmeldung, also no ACK. HMINFO hat error Readings, hier kannst mal ansetzen um Dir eine Info zu senden.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net