DOIF: Timer als cmdState anzeigen

Begonnen von Spartacus, 02 Januar 2017, 18:38:48

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo,
habe folgendes kleines DOIF:
   
([02:30] and [?switch.di.02.GA.ss.SA.Licht.dum] eq "on")
(set GH.ss.SA.Strahler:FILTER=STATE!=off off, set GA.ss.SA.Licht:FILTER=STATE!=off off)
DOELSEIF
([switch.di.02.GA.ss.SA.Licht.dum] eq "off")


Ich möchte gerne die Uhrzeit "02:30" als cmdState anzeigen. Ich habe das Attribut cmdState wie folgt gesetzt:
attr di.02.GA.ss.SA.Lich cmdState [di.02.GA.ss.SA.Licht:timer_01_c01]|[di.02.GA.ss.SA.Licht:timer_01_c01]
Reading "Timer "timer_01_c01" zeigt intern: "03.01.2017 02:30:00"

Als cmdState wird aber nichts angezeigt, wenn ich den Softswitch betätige. Ich hätte erwartet, das mir das Reading von timer1 angezeigt wird.
Habe ich das mit dem Anzeigen von Readings im cmdState falsch verstanden, oder wo ist mein Fehler?

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Ellert

Du hast das t vergessen.

Zitatattr di.02.GA.ss.SA.Licht cmdState [di.02.GA.ss.SA.Licht:timer_01_c01]|[di.02.GA.ss.SA.Licht:timer_01_c01]

Spartacus

Hallo,
Zitat von: Ellert am 02 Januar 2017, 20:18:02
Du hast das t vergessen.

nee, das ist es nicht! Das ist beim Kopieren passiert. Das muss etwas Anderes sein:
Hier noch mal das Listing. ICh sehe es einfach nicht.

Christian

Internals:
   DEF        ([02:30] and [?switch.di.02.GA.ss.SA.Licht.dum] eq "on")
(set GH.ss.SA.Strahler:FILTER=STATE!=off off, set GA.ss.SA.Licht:FILTER=STATE!=off off)
DOELSEIF
([switch.di.02.GA.ss.SA.Licht.dum] eq "off")

   NAME       di.02.GA.ss.SA.Licht
   NR         1158
   NTFY_ORDER 50-di.02.GA.ss.SA.Licht
   STATE
   TYPE       DOIF
   Readings:
     2017-01-02 23:10:44   Device          switch.di.02.GA.ss.SA.Licht.dum
     2017-01-02 18:20:52   cmd             2
     2017-01-02 18:20:52   cmd_event       switch.di.02.GA.ss.SA.Licht.dum
     2017-01-02 18:20:52   cmd_nr          2
     2017-01-02 23:10:44   e_switch.di.02.GA.ss.SA.Licht.dum_STATE off
     2017-01-02 18:20:52   state
     2017-01-02 18:50:00   timer_01_c01    03.01.2017 02:30:00
   Condition:
     0          DOIF_time_once($hash,0,$wday) and InternalDoIf($hash,'switch.di.02.GA.ss.SA.Licht.dum','STATE') eq "on"
     1          InternalDoIf($hash,'switch.di.02.GA.ss.SA.Licht.dum','STATE') eq "off"
   Days:
   Devices:
     1           switch.di.02.GA.ss.SA.Licht.dum
     all         switch.di.02.GA.ss.SA.Licht.dum
   Do:
     0:
       0          set GH.ss.SA.Strahler:FILTER=STATE!=off off, set GA.ss.SA.Licht:FILTER=STATE!=off off
     1:
       0
     2:
   Helper:
     event      off
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   switch.di.02.GA.ss.SA.Licht.dum
     timerevent off
     triggerDev switch.di.02.GA.ss.SA.Licht.dum
     timerevents:
       off
     timereventsState:
       state: off
     triggerEvents:
       off
     triggerEventsState:
       state: off
   Internals:
     0           switch.di.02.GA.ss.SA.Licht.dum:STATE
     1           switch.di.02.GA.ss.SA.Licht.dum:STATE
     all         switch.di.02.GA.ss.SA.Licht.dum:STATE
   Itimer:
   Localtime:
     0          1483407000
   Readings:
   Realtime:
     0          02:30:00
   Regexp:
     0:
     1:
     All:
   State:
   Time:
     0          02:30:00
   Timecond:
     0          0
   Timer:
     0          0
   Timers:
     0           0
   Trigger:
   Triggertime:
     1483407000:
       localtime  1483407000
       Hash:
Attributes:
   cmdState   [di.02.GA.ss.SA.Licht:timer_01_c01]|[di.02.GA.ss.SA.Licht:timer_01_c01]
   group      Scripte
   icon       icoUhr
   room       05-Garten
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

automatisierer

Ich sehe keinen Fehler.

Falls im Attribut cmdState allerdings doch ein Fehler war, den du erst nach der letzten triggerung des DOIF (18.20.52) behoben hast, dann kommt die gewünschte State Anzeige erst nach der nächsten triggerung des DOIF. Und die gibts erst um 02:30.

Das umschalten des Softswitch wird daran nichts ändern. Es sei denn du fügst testweise ein 'attr <DOIF> do always' hinzu.

kumue

wenns darum geht, sich die 02:30 anzeigen zu lassen, dann geht es doch auch über stateFormat
attr di.02.GA.ss.SA.Licht stateFormat timer_01_c01

Spartacus

Hallo,
Besten Dank für die Antworten. Es funzt jetzt!
Danke Euch,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

kumue

Zitat von: Spartacus am 03 Januar 2017, 08:22:36
Hallo,
Besten Dank für die Antworten. Es funzt jetzt!
Danke Euch,
Christian

lass uns nicht unwissend sterben  :)
Die Lösung war ...?

Spartacus

#7
Hallo,
Zitat von: kumue am 03 Januar 2017, 08:29:10
lass uns nicht unwissend sterben  :)
Die Lösung war ...?

sorry! Ich dachte es wäre klar gewesen...
Es geht sowohl mit "do always" als auch mit "stateFormat". Ich habe mich allerdings für die "do always"-Variante entschieden und habe das Attribut cmdState entsprechend formatiert,  da ich die "02:30 Uhr" nur anzeigen möchte, wenn der Switch "switch.di.02.GA.ss.SA.Licht.dum" auf "on" steht.

Allerdings scheitere ich bei der Formatierung im Attribut cmdState und bekomme immer einen Syntaxfehler.

Mein DOIF kann 3 cmdStates annehmen:
([02:30] and [?switch.di.02.GA.ss.SA.Licht.dum] eq "on")
(set GH.ss.SA.Strahler:FILTER=STATE!=off off, set GA.ss.SA.Licht:FILTER=STATE!=off off)

DOELSEIF
([switch.di.02.GA.ss.SA.Licht.dum] eq "on")

DOELSEIF
([switch.di.02.GA.ss.SA.Licht.dum] eq "off")


Das Attribut cmdState sieht so aus:
{(substr[$SELF:timer_01_c01],11,5)}|{(substr[$SELF:timer_01_c01],11,5)}|deaktiv

Das Reading "timer_01_c01" hat folgenden Inhalt: 04.01.2017 02:30:00

Der Fehler lautet: syntax error at (eval 16794) line 1, near "2017 02"
Ziel soll es sein, nur die Uhrzeit (5 Stellen ab Pos. 11) aus dem Timer auszulesen.

Christian

Nachtrag:
so funktioniert es:
{(substr(ReadingsVal("$SELF","timer_01_c01",""),11,5)." Uhr")}|{(substr(ReadingsVal("$SELF","timer_01_c01",""),11,5)." Uhr")}|deaktiv



Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hallo,
so sieht es noch einfacher aus:

off|[$SELF:timer_01_c01:"(\d\d):(\d\d):(\d\d)":"$1:$2 Uhr"]|deaktiv

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R