Es wird nur der 1. Befehl ausgeführt

Begonnen von netdom, 09 November 2016, 21:16:52

Vorheriges Thema - Nächstes Thema

netdom

Ich habe mir einen dummy Schalter erstellt der eine Ubiquiti Steckodsenleiste mit dem in FHEM vorhandenen Modul gezielt ansteuern soll. Das einzelne ansteuern der Ports ist kein Problem und funktioniert, auch die Readings kommen wie sie sollen.
Nun habe ich also einen DOIF erstellt der von der 6er Leiste 3 Steckdosen aktivieren/deaktivieren soll, je nachdem ob ein oder ausgeschaltet wird.

([BKU:state] eq "on")
(set az.verteilerdose_Out5 on, set az.verteilerdose_Out4 on, set az.verteilerdose_Out3 on)
DOELSE
(set az.verteilerdose_Out5 off, set az.verteilerdose_Out3 off, set az.verteilerdose_Out4 off)


Er führt jeweils nur den 1. Befehl für Steckdose 5 aus, die restlichen ignoriert er. Das interpretiere ich so, dass der dummy Schalter funktioniert und den DOIF auslöst. wait Timer habe ich keine definiert, wenn ich die Befehle einzeln einfüge funktionieren sie ebenfalls.

Alternativ hatte ich auch schon folgendes probiert:
([BKU:state] eq "on")
(set az.verteilerdose_Out5 on)
(set az.verteilerdose_Out4 on)
(set az.verteilerdose_Out3 on)
DOELSE
(set az.verteilerdose_Out5 off)
(set az.verteilerdose_Out3 off)
(set az.verteilerdose_Out4 off)


Wo ist mein Denkfehler ?

kumue

hm, erstmal keine Denkfehler gefunden.
Habe es bei mir mit dummys nachgestellt und es werden alle 3 Befehle ausgeführt, auch im DOELSE-Fall.
Vielleicht hilft ein list von deinem DOIF weiter.
Die Version vom DOIF ist aktuell ?

netdom

Ein Versionscheck zeigt zumindest keine verfügbaren Updates an, ich habe auch ähnliche Konstellationen aktiv die funktionieren.
98_DOIF.pm 12215 2016-09-26 21:02:49Z damian-s

Internals:
   CFGFN
   DEF        ([BKU:state] eq "on")
(set az.verteilerdose_Out5 on, set az.verteilerdose_Out4 on, set az.verteilerdose_Out3 on)
DOELSE
(set az.verteilerdose_Out5 off, set az.verteilerdose_Out3 off, set az.verteilerdose_Out4 off)
   NAME       az.bku.status.DOIF
   NR         85399
   NTFY_ORDER 50-az.bku.status.DOIF
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-11-09 22:41:41   Device          BKU
     2016-11-09 22:41:41   cmd             2
     2016-11-09 22:41:41   cmd_event       BKU
     2016-11-09 22:41:41   cmd_nr          2
     2016-11-09 22:41:41   e_BKU_state     off
     2016-11-09 22:41:41   state           cmd_2
   Condition:
     0          ReadingValDoIf($hash,'BKU','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on"
   Devices:
     0           BKU
     all         BKU
   Do:
     0:
       0          set az.verteilerdose_Out5 on, set az.verteilerdose_Out4 on, set az.verteilerdose_Out3 on
     1:
       0          set az.verteilerdose_Out5 off, set az.verteilerdose_Out3 off, set az.verteilerdose_Out4 off
   Helper:
     event      off
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   BKU
     timerevent off
     triggerDev BKU
     timerevents:
       off
     timereventsState:
       state: off
     triggerEvents:
       off
     triggerEventsState:
       state: off
   Internals:
   Itimer:
   Readings:
     0           BKU:state
     all         BKU:state
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   room       Arbeitszimmer


Otto123

funktioniert ein
{set az.verteilerdose_Out5 on; set az.verteilerdose_Out4 on; set az.verteilerdose_Out3 on}in der FHEM Kommandozeile?

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

Ellert

ZitatEr führt jeweils nur den 1. Befehl für Steckdose 5 aus, die restlichen ignoriert er.

Wie hast Du festgestellt, dass der 2. und 3. Befehl nicht ausgeführt wird?

netdom

Ich habe
set az.verteilerdose_Out1 on; set az.verteilerdose_Out4 on; set az.verteilerdose_Out3 on
ausgeführt, gleiches Ergebnis. Er führt das 1. Kommando aus, die restlichen nicht mehr.

Vllt ungünstig meinerseits formuliert, die Befehle werden nicht erfolgreich ausgeführt.
Also eher keim Problem mit DOIF sondern eher mit dem UbiquitiMP Modul ?
Wenn ich die Befehle einzeln nacheinander absende geht es.
Mit dem "wait" Attribut von DOIF mag es offensichtlich auch nicht.

Hier der Auszug aus dem Logfile für das Ausführen auf der FHEM Kommandozeile:

2016-11-10 19:21:24 UbiquitiMP az.verteilerdose Out1 on
2016-11-10 19:21:24 UbiquitiOut az.verteilerdose_Out1 on
2016-11-10 19:21:24 UbiquitiMP az.verteilerdose Out4 on
2016-11-10 19:21:24 UbiquitiOut az.verteilerdose_Out4 on
2016-11-10 19:21:24 UbiquitiMP az.verteilerdose Out3 on
2016-11-10 19:21:24 UbiquitiOut az.verteilerdose_Out3 on
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 on
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 eState: E:0 P:0 I:0 U:0 i:0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 power: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 voltage: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 current: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 pf: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 month: 435
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 lock: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 enabled: 1
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out1 energy: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 off
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 eState: E:0 P:0 I:0 U:0 i:0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 power: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 voltage: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 current: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 pf: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 month: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 lock: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 enabled: 1
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out2 energy: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 off
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 eState: E:0 P:0 I:0 U:0 i:0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 power: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 voltage: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 current: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 pf: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 month: 121
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 lock: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 enabled: 1
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out3 energy: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 off
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 eState: E:0 P:0 I:0 U:0 i:0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 power: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 voltage: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 current: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 pf: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 month: 10
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 lock: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 enabled: 1
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out4 energy: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 off
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 eState: E:0 P:0 I:0 U:0 i:0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 power: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 voltage: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 current: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 pf: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 month: 3
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 lock: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 enabled: 1
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out5 energy: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 off
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 eState: E:0 P:0 I:0 U:0 i:0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 power: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 voltage: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 current: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 pf: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 month: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 lock: 0
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 enabled: 1
2016-11-10 19:21:26 UbiquitiOut az.verteilerdose_Out6 energy: 0
2016-11-10 19:21:26 UbiquitiMP az.verteilerdose all_current: 0.00
2016-11-10 19:21:26 UbiquitiMP az.verteilerdose all_power: 0.00
2016-11-10 19:21:26 UbiquitiMP az.verteilerdose all_month: 0.57
2016-11-10 19:21:26 UbiquitiMP az.verteilerdose all_prevmonth: 0.00
2016-11-10 19:21:26 UbiquitiMP az.verteilerdose all_energy: 0.00
2016-11-10 19:21:26 UbiquitiMP az.verteilerdose on off off off off off

CoolTux

Das geht so nicht. Das liegt aber an der UbiquitiMP.
Entweder bildest Du Gruppen im Hauptdevice der UbiquitiMP.
Oder du setzt beim DoIF jeden set Befehl in () und dann wait mit ,
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

CoolTux

Ups fast vergessen. Mindest delay sollte so bei 6s liegen, also zwischen jeden Schaltvorgang auf der UbiquitiMP.
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

netdom

Ich habe eben mit 3 Sekunden rumgespielt und den Timeout über das Ubiquiti auf 2 Sekunden gesetzt nachdem ich in der Referenz

Zitattimeout -> Wartezeit in Sekunden bevor eine Abfrage mit einer Fehlermeldung abgebrochen wird (Default ist 5 Sekunden)
Werte unter zwei Sekunden werden vom Modul nicht angenommen !

gelesen habe.
Jetzt funktioniert es zuverlässig.

Oh, eben gelesen das CoolTux das gerade geschrieben hat. Gruppen habe ich mit Absicht nicht gebildet da ich das Problem habe, dass wenn ich alle Dosen auf ein mal einschalte in 10% der Fälle die Sicherung rausfliegt, darum nacheinander.


Meine Konfig sieht nun so aus:
([BKU:state] eq "on")
(set az.verteilerdose_Out4 on force)
(set az.verteilerdose_Out1 on force)
(set az.verteilerdose_Out3 on force)
DOELSE
(set az.verteilerdose_Out4 off force)
(set az.verteilerdose_Out1 off force)
(set az.verteilerdose_Out3 off force)


Mit diesen Timerwerten:
wait 0,3,3:0,3,3

Empfiehlst du auch nach der Umstellung des Timeoutwertes über die Steckdose insgesamt auf 2 Sekunden trotzdem den 6 Sekunden Delay oder geht das so zuverlässig ?

CoolTux

Da musst Du mal schauen wie sich das in Deiner Umgebung verhält. Ich hatte das Problem in einer Structure und habe da mich erfolgreich auf 6s delay ran getastet.
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

netdom

4 Sekunden klappt auch nicht zuverlässig, mit 6 schon. Dann mache ich das so.

Habt alle vielen Dank und Sorry das ich erst in die falsche Richtung gefragt habe.