ich will feststellen, ob ein feiertag ist(
[urlaub:state] ne "none"
or
[bw:state] ne "none"
or
(
[$SELF:time] eq "$mday-$month-$year"
and
[$SELF:zustand] eq "ein"
)
)
(
set $SELF feiertag ja
)
DOELSE
(
)
(
set $SELF feiertag nein
)
das doif schaltet mir den feiertag nicht um
sicherheitshalber das listingInternals:
DEF Internals:
DEF (
[urlaub:state] ne "none"
or
[bw:state] ne "none"
or
(
[$SELF:time] eq "$mday-$month-$year"
and
[$SELF:zustand] eq "ein"
)
)
(
set $SELF feiertag ja
)
DOELSE
(
)
(
set $SELF feiertag nein
)
NAME doif_istfeiertag
NR 142
NTFY_ORDER 50-doif_istfeiertag
STATE initialized
TYPE DOIF
READINGS:
2018-01-10 11:30:00 cmd 0
2018-01-09 22:42:54 feiertag nein
2018-01-10 11:30:00 mode enabled
2018-01-10 11:30:00 state initialized
2017-12-25 12:25:56 text test text
2018-01-09 22:47:39 time 09-01-2018
2018-01-09 22:52:55 zustand aus
Regex:
condition:
0 ReadingValDoIf($hash,'urlaub','state') ne "none" or ReadingValDoIf($hash,'bw','state') ne "none" or ( ReadingValDoIf($hash,'doif_istfeiertag','time') eq "$mday-$month-$year" and ReadingValDoIf($hash,'doif_istfeiertag','zustand') eq "ein" )
devices:
0 urlaub bw doif_istfeiertag
all urlaub bw doif_istfeiertag
do:
0:
0 set doif_istfeiertag feiertag ja
1:
0
1 set doif_istfeiertag feiertag nein
helper:
DOIF_Readings_events
DOIF_eventas
globalinit 1
last_timer 0
sleeptimer -1
itimer:
readings:
0 urlaub:state bw:state doif_istfeiertag:time doif_istfeiertag:zustand
all urlaub:state bw:state doif_istfeiertag:time doif_istfeiertag:zustand
uiState:
uiTable:
Attributes:
alias ists ein feiertag?
group umrechnen
icon helper_doif
readingList feiertag time text zustand urlaub_anzeigen
room logik und schalten
setList feiertag urlaub_anzeigen time text zustand
NAME doif_istfeiertag
NR 145
NTFY_ORDER 50-doif_istfeiertag
STATE cmd_2
TYPE DOIF
READINGS:
2018-01-09 22:47:39 Device doif_istfeiertag
2018-01-09 22:42:54 cmd 2
2018-01-09 22:42:54 cmd_event doif_istfeiertag
2018-01-09 22:42:54 cmd_nr 2
2018-01-09 22:47:39 e_doif_istfeiertag_time 09-01-2018
2018-01-09 22:47:39 e_doif_istfeiertag_zustand ein
2018-01-09 22:42:54 feiertag nein
2018-01-09 22:42:49 mode enabled
2018-01-09 22:42:54 state cmd_2
2017-12-25 12:25:56 text test text
2018-01-09 22:47:39 time 09-01-2018
2018-01-09 22:42:55 zustand ein
Regex:
condition:
0 ReadingValDoIf($hash,'urlaub','state') ne "none" or ReadingValDoIf($hash,'bw','state') ne "none" or ( ReadingValDoIf($hash,'doif_istfeiertag','time') eq "$mday-$month-$year" and ReadingValDoIf($hash,'doif_istfeiertag','zustand') eq "ein" )
1 ReadingValDoIf($hash,'urlaub','state') eq "none" or ReadingValDoIf($hash,'bw','state') eq "none" or ReadingValDoIf($hash,'doif_istfeiertag','time') ne "$mday-$month-$year" or ReadingValDoIf($hash,'doif_istfeiertag','zustand') eq "aus"
devices:
0 urlaub bw doif_istfeiertag
1 urlaub bw doif_istfeiertag
all urlaub bw doif_istfeiertag
do:
0:
0 set doif_istfeiertag feiertag ja
1:
0 set doif_istfeiertag feiertag nein
2:
helper:
DOIF_Readings_events
DOIF_eventas
event time: 09-01-2018
globalinit 1
last_timer 0
sleeptimer -1
timerdev doif_istfeiertag
timerevent time: 09-01-2018
triggerDev doif_istfeiertag
timerevents:
time: 09-01-2018
Device: doif_istfeiertag
e_doif_istfeiertag_time: 09-01-2018
e_doif_istfeiertag_zustand: ein
timereventsState:
time: 09-01-2018
Device: doif_istfeiertag
e_doif_istfeiertag_time: 09-01-2018
e_doif_istfeiertag_zustand: ein
triggerEvents:
time: 09-01-2018
Device: doif_istfeiertag
e_doif_istfeiertag_time: 09-01-2018
e_doif_istfeiertag_zustand: ein
triggerEventsState:
time: 09-01-2018
Device: doif_istfeiertag
e_doif_istfeiertag_time: 09-01-2018
e_doif_istfeiertag_zustand: ein
internals:
itimer:
readings:
0 urlaub:state bw:state doif_istfeiertag:time doif_istfeiertag:zustand
1 urlaub:state bw:state doif_istfeiertag:time doif_istfeiertag:zustand
all urlaub:state bw:state doif_istfeiertag:time doif_istfeiertag:zustand
trigger:
uiState:
uiTable:
Attributes:
alias ists ein feiertag?
group umrechnen
icon helper_doif
readingList feiertag time text zustand urlaub_anzeigen
room logik und schalten
setList feiertag urlaub_anzeigen time text zustand
Lt. List gab es nach der Änderung der Def keine Änderung einer auszuwertenten "Variable". Daher hat das DOIF keinen Anlass, was zu tun.
es gab genug änderungen, das kommt jetzt nur vom rumspielen.
ich tipp ja auf [$SELF:time] eq "$mday-$month-$year" weiß aber nicht, was ich da falsch mache.
mit punkten $mday.$month.$year hab ichs auch schon probiert ... geht auch ned.
Muss das nicht setreading statt set sein?
hatte ich auch schon probiert - ist dem guten stück vollkommen egal
er schaltet mir auch den doelse, also cmd_2 aber cmd_1 kriegt er nicht hin.
ich mach hier (
[$SELF:time] eq "$mday.$month.$year"
and
[$SELF:zustand] eq "ein"
)
wohl nen fehler.
das reading time stimmt mit 10.01.2018 auch.
und weil ich nicht sicher war, ob die . gehen, hatt ichs vorher auch mit - im datum
Mach mal ein
or 1
in die Bedingungen vom ersten Zweig. Damit sollte er immer zuschlagen und du kannst dir die Events als e_ Reading anschauen.
ist $month sicher "01" oder "1"?
Zitatist $month sicher "01" oder "1"?
hmm, gute frage
weißt du, wie man das beim timewidget auf "ohne führende 0" ändern kann. wäre der einfachste weg zum testen.
'time' => 'time:datetime,datepicker:true,timepicker:false,theme:default,inline:false,format:d.m.Y',
also für format:d.m.Y' d und m ohne 0, geht das?
nachtrag: du hast recht, habs reading händisch mal von der 0 befreit ... schon schaltet er
wenn ich jetzt noch wüsste, wie ich die 0 weg oder auf der andern seite hinkriegen könnte...
Zitat von: the ratman am 10 Januar 2018, 15:28:26wenn ich jetzt noch wüsste, wie ich die 0 weg oder auf der andern seite hinkriegen könnte...
Nein, bin keine "Perle". Google sollte aber ein paar Treffer bieten.
Wie erstellst du denn den Eintrag? Wenn du auf beiden Seiten (erstellen und vergleichen) den selben Code verwendest, dürfte es keine Probleme geben.
erstellt wirds eben in ner readingsgroup mit dem datetime widget.
da könnte sich auch das format anpassen lassen. derzeit: format:d.m.Y
da das widget aber javascript ist und ich auch nix gefunden hab, wo es um führende nullen geht ...
man könnte natürlich im doif ein userreading machen, aber da sind wir wieder bei regex. etwas, dass ich nie kapiert hab.
bliebe noch eine fertige variable, aber scheints gibts nicht mehr als $mday und $month.
sprich: der onkel ist ahnungslos wie immer bei solchen dingen.
probiert, aber versagt:
aus https://wiki.fhem.de/wiki/DOIF/Zeitspanne_zwischen_zwei_Terminen_schalten abgeschrieben und daraus
[$SELF:time:"^(\d\d).(\d\d).(\d\d\d\d)":($1*1).".".($2*1).".".$3] eq "$mday.$month.$year"
gebastelt.
denke, die richtung stimmt, nur gehen tuts noch nicht.
[$SELF:time] eq $hms
sollte ohne Probleme funktionieren.
leider nein, ist $hms ein datum?
Zitat von: the ratman am 10 Januar 2018, 18:52:41
leider nein, ist $hms ein datum?
nein, es ist die aktuelle Uhrzeit im Format HH:MM:SS mit führenden Nullen.
weil ich halt ein datum brauch ... $hms kannt sogar ich schon *fg*
jaja, i weß, time als name für n datum ist ein bissi irreführend, hat sich aber halt aus div. bastel-tests (aus unbenenn-faulheit) ergeben.
Zitat von: the ratman am 10 Januar 2018, 19:26:15
weil ich halt ein datum brauch ... $hms kannt sogar ich schon *fg*
jaja, i weß, time als name für n datum ist ein bissi irreführend, hat sich aber halt aus div. bastel-tests (aus unbenenn-faulheit) ergeben.
ja, du hast Recht, ich habe mich von deiner Namens-Terminologie [$SELF:time] wohl irritieren lassen ;)
Na dann eben
[$SELF:time] eq sprintf("%02d.%02d.%04d", $mday,$month,$year)
mit führenden Nullen oder
[$SELF:time] eq sprintf("%d.%d.%d", $mday,$month,$year)
ohne führende Nullen.
habs grade selber geschafft
obige abschreibübung aus deinem wiki passte, nur hab ich das ? nicht gemacht.
so [?$SELF:time:"^(\d\d).(\d\d).(\d\d\d\d)":($1*1).".".($2*1).".".$3] eq "$mday.$month.$year" funzt es also
auf jeden fall vielen dank fürs helfen!
Zitat von: the ratman am 10 Januar 2018, 20:11:52
habs grade selber geschafft
obige abschreibübung aus deinem wiki passte, nur hab ich das ? nicht gemacht.
so [?$SELF:time:"^(\d\d).(\d\d).(\d\d\d\d)":($1*1).".".($2*1).".".$3] eq "$mday.$month.$year" funzt es also
auf jeden fall vielen dank fürs helfen!
mein letzter Vorschlag ist sogar kürzer und für Perl-User vermutlich verständlicher :)
jau, wollts nur erwähnt haben - is ja sowieso alles aus deiner hand, oder schreibt wer anderer am doif-wiki?
Zitat von: the ratman am 10 Januar 2018, 20:36:26
jau, wollts nur erwähnt haben - is ja sowieso alles aus deiner hand, oder schreibt wer anderer am doif-wiki?
nein, von mir ist bisher noch nichts im Wiki, die meistens zum DOIF-Modul sind von Ellert.
ahh, wieder was neues erfahren.
hauptsache, es funzt. dann is zumindest mein anspruch schon zu 100% erfüllt.
da machts ihr also beide super arbeit ...