[gelöst] Reading per Notify auf on gesetzt, aber Aktor schaltet nicht

Begonnen von thuranga, 08 Juni 2020, 08:25:22

Vorheriges Thema - Nächstes Thema

thuranga

Hallo zusammen,
ich habe ein seltsames Problem...

Ich habe einen "Günstig"-PIR in FHEM eingebunden, der "motion" als Status nicht kennt. Aber das konnte ich über

defmod NTFY_BM_SetState notify BM_Flur_1:on sleep 10;; set BM_Flur_1 off


umgehen, damit er nach Aktivierung sich wieder zurücksetzt. Soweit ok. Nun wollte ich testweise eine Steckdose schalten, wenn der PIR ausgelöst wird. Dies habe ich über

define NachtLichtAn notify BM_Flur_1:on {fhem ("set SD_Garten_1 on;;sleep 5;;set SD_Garten_1 off")}

gelöst.

Das interessante dabei ist, dass bei Bewegung sowohl der PIR im DeviceOverview auf "on" geht, als auch die Steckdose (und auch beide wieder nach der eingestellten Zeit auf off), aber die Steckdose geht nicht an.
Klicke ich manuell im DeviceOverview auf on, dann geht sie an, aber nicht über die State-Änderung per Notify.

Habe ich da einen Denkfehler?

Otto123

Hi,

funktioniert denn der Befehl in der FHEM Kommandozeile?
set SD_Garten_1 on
Wenn nicht, dann zeig mal bitte ein list SD_Garten_1

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

thuranga

#2
Zitat von: Otto123 am 08 Juni 2020, 09:06:05

funktioniert denn der Befehl in der FHEM Kommandozeile?
set SD_Garten_1 on


Hallo Otto,
ja das funktioniert problemlos. Es werden auch in beiden Fällen (per Hand, Notify) die gleichen Readings gesetzt:

Internals: STATE on
Readings: STATE off, state on

Wobei sich im nur state ändert

Beta-User

Zwei Hinweise dazu:

- vermutlich (@Otto ::) ) muß man hier wg. des Perl-Exkurses die hinteren ";;" verdoppeln, sonst werden alle drei Befehle miteinander ausgeführtdefine NachtLichtAn notify BM_Flur_1:on {fhem ("set SD_Garten_1 on;;sleep 5;;;;set SD_Garten_1 off")}
Das sollte im "Klartext" diesem hier entsprechen:
define NachtLichtAn notify BM_Flur_1:on set SD_Garten_1 on;sleep 5;;set SD_Garten_1 off- Was den Bewegungsmelder angeht, kannst du auch einfach immer auf "on" triggern, und auf das Zurücksetzen verzichten, wenn du bei dem NachtLichtAn-notify "disabledAfterTrigger" setzt. Damit kannst du das notify für 5 Sekunden nach dem vorherigen Trigger auf inaktiv setzen:attr NachtLichtAn disabledAfterTrigger 5
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

thuranga

#4
Hallo Beta-User,
ich habe erst einmal den ersten Vorschlag umgesetzt

Zitat von: Beta-User am 08 Juni 2020, 14:06:33
- vermutlich (@Otto ::) ) muß man hier wg. des Perl-Exkurses die hinteren ";;" verdoppeln, sonst werden alle drei Befehle miteinander ausgeführtdefine NachtLichtAn notify BM_Flur_1:on {fhem ("set SD_Garten_1 on;;sleep 5;;;;set SD_Garten_1 off")}
Das sollte im "Klartext" diesem hier entsprechen:
define NachtLichtAn notify BM_Flur_1:on set SD_Garten_1 on;sleep 5;;set SD_Garten_1 off-

FHEM hat das übernommen, aber mit "Last parameter must be quiet" quittiert. Leider hat sich dadurch nichts geändert.

Die states beider Devices ändern aber brav zur gleichen Zeit ihren Wert (auf on) - leider geht die Steckdose nicht an

BTW: ich habe auch mal eine andere Steckdose angesprochen - das gleiche Verhalten...

Otto123

#5
Wenn es die semikolon wären, stünde es im Log. 8)
Nach wie vor möchte ich beide Frage beantwortet haben:
list SD_Garten_1 ???

Hinter sleep dürfen keine 2 semikolon stehen, sonst wird das sleep allein ausgeführt :)

Das hier ist alles gleichwertig und funkioniert zeilenweise in der FHEM Kommandozeile!
set LichtWzL_Dim on; sleep 3; set LichtWzL_Dim off
{fhem("set LichtWzL_Dim on;; sleep 3;; set LichtWzL_Dim off")}
define a_t at +00:00:02  {fhem(" set LichtWzL_Dim on;; sleep 3;; set LichtWzL_Dim off")}


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

 ::) Bei dieser escaperei falle ich prinzipiell auch immer erst mal auf die Nase... (@Otto: qed  ::) :o ;D ).

Dann mal insgesamt verdoppelt:
define NachtLichtAn notify BM_Flur_1:on {fhem ("set SD_Garten_1 on;;;;sleep 5;;;;set SD_Garten_1 off")}
Das sollte im "Klartext" diesem hier entsprechen, und das "quiet" vermeiden:
define NachtLichtAn notify BM_Flur_1:on set SD_Garten_1 on;;sleep 5;;set SD_Garten_1 off

So steht es auch in der commandref: https://fhem.de/commandref_modular.html#sleep

Und wenn man auf die Perl- Ebene wechselt, muß man escapen, siehe Perl-Specials:
ZitatPerl expressions are separated by ;, in FHEM oneliners they have to escaped with ;;

       
  • { my $a = 1+1;; Log 1, "Hello $a" }

@Otto: Such mal in fhem.pl nach SeMiCoLoN...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Otto123

#7
In FHEM Onliners, aber nicht im Perl Code innerhalb notify / at.

Dein Code mit 4mal; funktioniert nicht, versuch es einfach :)

Was natürlich auch funktioniert ist das hier:
define a_t at +00:00:02  set LichtWzL_Dim on;; sleep 3;; set LichtWzL_Dim off

Das war aber nicht seine ursprüngliche Version. ;)

Wobei meine Annahme war das set on nicht wirklich realisiert ist. Aber vielleicht liege ich falsch. deswegen wäre ein list von den beteiligten Devices gut. Und ins Log schauen wäre auch gut.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

thuranga

Zitat von: Otto123 am 08 Juni 2020, 14:23:28
Nach wie vor möchte ich beide Frage beantwortet haben:
list SD_Garten_1 ???

sorry, natürlich gerne

Internals:
   CFGFN     
   DEF        11010010010110101010000001 0 0000
   FUUID      5edd3c41-f33f-b0e2-a356-bd3d1c14aa17e19e
   IODev      CUL_443
   NAME       SD_Garten_1
   NR         499
   STATE      off
   TYPE       IT
   XMIT       1101001001011010101000000100000
   XMITdimdown 00
   XMITdimup  00
   XMIToff    0
   XMITon     1
   CODE:
     1          1101001001011010101000000100000
   READINGS:
     2020-06-07 22:01:55   STATE           off
     2020-06-07 21:15:10   group           0
     2020-06-07 21:15:10   protocol        V3
     2020-06-08 14:40:41   state           off
     2020-06-07 21:15:10   unit            0000
Attributes:
   IODev      CUL_443
   model      itswitch
   room       Garten,Aktoren->Steckdosen

Otto123

Sind das nicht diese Dinger wo man nicht gleichzeitig funken darf? Und wo keine Rückmeldung kommt? Geht da überhaupt Empfang vom BM und senden an SD zur gleichen (innerhalb kurzer) Zeit?.

Machmal vor den set on Befehl auch ein sleep :) Versuch mal sowas:

define a_t at +00:00:02  sleep 1;;set SD_Garten_1 on;; sleep 6;; set SD_Garten_1 off
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

thuranga

Zitat von: Otto123 am 08 Juni 2020, 14:45:31
Sind das nicht diese Dinger wo man nicht gleichzeitig funken darf? Und wo keine Rückmeldung kommt? Geht da überhaupt Empfang vom BM und senden an SD zur gleichen (innerhalb kurzer) Zeit?.

Machmal vor den set on Befehl auch ein sleep :) Versuch mal sowas:

define a_t at +00:00:02  sleep 1;;set SD_Garten_1 on;; sleep 6;; set SD_Garten_1 off

Otto, du bist mein Held!  :) Das war es!!!!

Otto123

Prima, manchmal hat man ja so ein "Gefühl" :)
Ein sleep 0.1 ist zur Einleitung sicher ausreichend! ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

thuranga

habe ich mal versucht. Ist wohl zu kurz - da kommt er manchmal ins Straucheln und die Steckdose reagiert nicht.