state abfragen und DOELSEIF starten

Begonnen von satprofi, 24 April 2016, 10:00:10

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
Ich möchte eine LED leiste die Farben im Kreis laufen lassen.


(([Xpeed_on] eq "on" and [20:00-06:00|7]) or ([FS20_701002] eq "on")) (set LED_Mediacenter RGB 0000FF)
DOELSEIF (([Xpeed_on] eq "on" and [20:00-06:00|12345]) or ([FS20_701002] eq "on")) (set LED_Mediacenter RGB FF00FF)
DOELSEIF ([LED_Mediacenter:hue] = 360) ((set LED_Mediacenter HSV 120,100,80 1200))
DOELSEIF ([LED_Mediacenter:hue] = 120) ((set LED_Mediacenter HSV 240,100,80 1200))
DOELSEIF ([LED_Mediacenter:hue] = 240) ((set LED_Mediacenter HSV 360,100,80 1200))
DOELSE ([Xpeed_on] eq "off" and [FS20_701002] eq "off") (set LED_Mediacenter off)


Ein/aus schalten klappt ja, auch die Startfarbe wird gesetzt, doch die Werte werden nicht weiterverarbeitet. Es kommt auch kein error im DOIF. Der Wert "hue" finde ich auch nicht unter den readings.
Was mache ich falsch?

[edit]
habe nun manuell einen wert gesetzt, aber dann kommt fehlermeldung:

perl error in condition: EventDoIf('LED_Mediacenter',$hash,'hue',0) = 360: Can't modify non-lvalue subroutine call in scalar assignment at (eval 5561077) line 2, at EOF

ich denke, das da ein ausschluss zuschlägt. doalways habe ich nicht gesetzt.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Per


satprofi

Zitat von: Per am 24 April 2016, 10:27:13
Schau mal hier rein.

Danke. Werd nur bedingt schlau.
hab ein DOIF angelegt:

(["LED_Mediacenter:RGB"] ne "FF0000") ((set LED_Mediacenter RGB 0000FF 1200 q) {([LED_Mediacenter:RGB] + (([LED_Mediacenter:RGB]) ? 1 : -1))})
DOELSEIF (["LED_Mediacenter:RGB"] eq "0000FF") ((set LED_Mediacenter RGB FF0000 1200 q) {([LED_Mediacenter:RGB] + (([LED_Mediacenter:RGB]) ? 1 : -1))})
DOELSE


bekomme aber beim schalten dann diesen error
+
{(0000FF + ((0000FF) ? 1 : -1))}: syntax error at (eval 5593020) line 1, near "0000FF "

kann den grund aber nicht finden

gruss
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Per


satprofi

Zitat von: Per am 24 April 2016, 11:25:27
Geht um selftrigger und wait...

dacht ich mir, aber ich habe kein attr selftrigger zur auswahl.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Ellert


satprofi

#6
Hallo.
habe jetzt das neue DOIF, und selftrigger auch engetragen.
DOIF startet, aber nur cmd1 dann am ende steht es. startet nicht mit cmd2
auch ein setzen von 0000FF bewirkt kein cmd2.



([LED_Mediacenter:RGB] ne "FF0000") (set LED_Mediacenter RGB 0000FF 30 q)
DOELSEIF ([LED_Mediacenter:RGB] eq "0000FF") (set LED_Mediacenter RGB FF0000 30 q)
DOELSE


wait 5:5:5
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Per


satprofi

Zitat von: Per am 25 April 2016, 11:59:38
Nicht bis zum Ende gelesen?

doch, mit dem hatte ich es vorher. da wurde auch schön bis ans ende getriggert, aber immer mit fehlermeldung. aber dann kein cmd2 abgesetzt.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Ellert

Zitat von: satprofi am 25 April 2016, 11:46:20
Hallo.
habe jetzt das neue DOIF, und selftrigger auch engetragen.
DOIF startet, aber nur cmd1 dann am ende steht es. startet nicht mit cmd2
auch ein setzen von 0000FF bewirkt kein cmd2.



([LED_Mediacenter:RGB] ne "FF0000") (set LED_Mediacenter RGB 0000FF 30 q)
DOELSEIF ([LED_Mediacenter:RGB] eq "0000FF") (set LED_Mediacenter RGB FF0000 30 q)
DOELSE


wait 5:5:5
Eine Erklärung für die Fehlfunktion könnte hier stehen: https://forum.fhem.de/index.php/topic,51060.msg442955.html#msg442955
Ausserdem könnte bei [LED_Mediacenter:RGB] ne "FF0000" bei jeder Aktualisierung zurück getriggert werden.

Ich würde es so lösen:

([LED_Mediacenter] eq "on" or [$SELF:cmd] == 2.2) (set LED_Mediacenter RGB 0000FF 30 q) ()
DOELSEIF ([$SELF:cmd] == 1.2)) (set LED_Mediacenter RGB FF0000 30 q) ()


selftrigger 1
wait 0.1,31:0.1,31

satprofi

Hallo.
Vorerst danke,aber ohne das ganze wirklich zu verstehen klappt es nur so:

([LED_Mediacenter] eq "on" or [$SELF:cmd] == 2.2) (set LED_Mediacenter RGB 0000FF 30 q,set LED_Mediacenter RGB 00FF00 30 q,set LED_Mediacenter RGB FF0000 30 q)
DOELSEIF ([$SELF:cmd] == 1.2) (set LED_Mediacenter RGB FF0000 30 q) ()


wobei aber niemals cmd2 zuschlägt.

do always habe ich auch noch gesetzt.

gruss
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Ellert

Poste mal die Logeinträge, wenn Du mit dem nachstehenden notify mitloggst:
define LogNotify notify  LED_Mediacenter|<DOIFname> {Log 1, "LogNotify: ($NAME) $EVENT"}

und poste mal ein Listing des DOIF.

Was ist LED_Mediacenter für ein Gerät?

satprofi

Mediacenter = ld382a

Sent from my OPO

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

Internals: DEF ([LED_Mediacenter] eq "on" or [$SELF:cmd] == 2.2) (set LED_Mediacenter RGB 0000FF 1200 q,set LED_Mediacenter RGB 00FF00 1200 q,set LED_Mediacenter RGB FF0000 1200 q) DOELSE NAME Medialicht_Farbspiel NR 804 NTFY_ORDER 50-Medialicht_Farbspiel STATE cmd_1 TYPE DOIF Readings: 2016-04-25 20:22:16 Device Medialicht_Farbspiel 2016-04-25 20:22:16 cmd 1 2016-04-25 20:22:16 cmd_event Medialicht_Farbspiel 2016-04-25 20:22:16 cmd_nr 1 2016-04-25 20:22:16 e_LED_Mediacenter_STATE on 2016-04-25 20:22:16 e_Medialicht_Farbspiel_cmd 1 2016-04-25 20:22:16 state cmd_1 2016-04-25 20:22:16 wait_timer 25.04.2016 20:22:16 cmd_1 Medialicht_Farbspiel Condition: 0 InternalDoIf($hash,'LED_Mediacenter','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on" or ReadingValDoIf($hash,'Medialicht_Farbspiel','cmd','','',AttrVal($hash->{NAME},'notexist',undef)) == 2.2 Devices: 0 LED_Mediacenter Medialicht_Farbspiel all LED_Mediacenter Medialicht_Farbspiel Do: 0: 0 set LED_Mediacenter RGB 0000FF 1200 q,set LED_Mediacenter RGB 00FF00 1200 q,set LED_Mediacenter RGB FF0000 1200 q 1: 0 Helper: event cmd_nr: 1,cmd: 1,cmd_event: Medialicht_Farbspiel,cmd_1,Device: Medialicht_Farbspiel,e_Medialicht_Farbspiel_cmd: 1 globalinit 1 last_timer 0 sleepdevice Medialicht_Farbspiel sleepsubtimer 0 sleeptimer 0 timerdev Medialicht_Farbspiel timerevent cmd_nr: 1,cmd: 1,cmd_event: Medialicht_Farbspiel,cmd_1,Device: Medialicht_Farbspiel,e_Medialicht_Farbspiel_cmd: 1 triggerDev Medialicht_Farbspiel timerevents: cmd_nr: 1 cmd: 1 cmd_event: Medialicht_Farbspiel cmd_1 Device: Medialicht_Farbspiel e_Medialicht_Farbspiel_cmd: 1 timereventsState: cmd_nr: 1 cmd: 1 cmd_event: Medialicht_Farbspiel state: cmd_1 triggerEvents: cmd_nr: 1 cmd: 1 cmd_event: Medialicht_Farbspiel cmd_1 Device: Medialicht_Farbspiel e_Medialicht_Farbspiel_cmd: 1 triggerEventsState: cmd_nr: 1 cmd: 1 cmd_event: Medialicht_Farbspiel state: cmd_1 Internals: 0 LED_Mediacenter:STATE all LED_Mediacenter:STATE Itimer: Readings: 0 Medialicht_Farbspiel:cmd all Medialicht_Farbspiel:cmd Regexp: 0: All: State: Trigger: Attributes: do always room DOIF selftrigger 1 wait 0.1,1201

Sent from my OPO

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram