doif - wieder mal auf fehlersuche ...

Begonnen von the ratman, 19 Dezember 2017, 22:00:06

Vorheriges Thema - Nächstes Thema

the ratman

du sprichst in kreuzworträtseln ...

wären 1 oder 2 sätze möglich, die ich auch versteh?
nach nem konkreten beispiel trau ich mich schon eh nicht fragen.
→do↑p!dnʇs↓shit←

Damian

Zitat von: the ratman am 21 Dezember 2017, 10:54:26
du sprichst in kreuzworträtseln ...

wären 1 oder 2 sätze möglich, die ich auch versteh?
nach nem konkreten beispiel trau ich mich schon eh nicht fragen.

Du vergleichst Zeichenketten und keine Zahlen, daher gelten hier Vergleichsoperatoren für Zeichenketten und nicht für Zahlen, also: le statt <=, ge statt >=, lt statt <, gt statt > usw.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

#17
ahh, jetzt kapier ichs!

DAS geht? le und ge?
man kann mit "buchstaben" rechnen?

auf jeden fall probier ichs und dank dir für die info!

geht leider nicht - "isnt numeric"
[$SELF:urlaub_von:"^(\d\d).(\d\d).(\d\d\d\d)":$3."-".$2."-".$1] ge "$year-$month-$mday"
and
[$SELF:urlaub_bis:"^(\d\d).(\d\d).(\d\d\d\d)":$3."-".$2."-".$1] le "$year-$month-$mday"
→do↑p!dnʇs↓shit←

Per

Natürlich nicht.
Bei Stings gilt:
"1" < "9"
und
"10" < "9"
Bei Zahlen aber:
1<9
und
10 > 9
Bisher hast du ja nur auf Gleich geprüft, da ist == bei Zahlen gleich mit eq bei Strings.

the ratman

und was mach ich da?
du redest mit einem, der 0 ahnung vom programmieren hat (ausser html is über nacht ne programmiersprache geworden *g*)
→do↑p!dnʇs↓shit←

Per

Versuch doch noch mal die Ausgangswerte (Reading, Eingabe, woher kommen die Daten) darzustellen.

Das Zerlegen der Readings in Datumswerte kannst du parallel, wie schon geschrieben, mittels DOIF_Reading üben. Da kannst du mit Perl spielen, bis du was Passendes hast.

the ratman

die readings kommen aus 2 readingsgroups und einem calendar
schauen dann z.b. so aus (nur mal schnell aus der raw-def kopiert) und sind auch immer korrekt.setstate doif_istfeiertag 2017-12-21 11:06:18 Device doif_istfeiertag
setstate doif_istfeiertag 2017-12-21 11:03:50 cmd 2.2
setstate doif_istfeiertag 2017-12-21 11:03:50 cmd_event doif_istfeiertag
setstate doif_istfeiertag 2017-12-21 11:03:50 cmd_nr 2
setstate doif_istfeiertag 2017-12-21 11:03:50 cmd_seqnr 2
setstate doif_istfeiertag 2017-12-21 11:06:18 e_doif_istfeiertag_frei_datum 21.12.2017
setstate doif_istfeiertag 2017-12-21 11:06:18 e_doif_istfeiertag_frei_io aus
setstate doif_istfeiertag 2017-12-21 11:06:18 e_doif_istfeiertag_urlaub_bis 30.12.2017
setstate doif_istfeiertag 2017-12-21 11:06:18 e_doif_istfeiertag_urlaub_io aus
setstate doif_istfeiertag 2017-12-21 11:06:18 e_doif_istfeiertag_urlaub_von 05.12.2017
setstate doif_istfeiertag 2017-12-21 11:03:50 feiertag nein
setstate doif_istfeiertag 2017-12-21 00:17:59 frei_datum 21.12.2017
setstate doif_istfeiertag 2017-12-21 00:18:01 frei_io aus
setstate doif_istfeiertag 2017-12-20 19:53:12 frei_txt test text
setstate doif_istfeiertag 2017-12-21 11:03:50 state cmd_2
setstate doif_istfeiertag 2017-12-20 20:04:42 urlaub_art zuhause
setstate doif_istfeiertag 2017-12-21 11:03:56 urlaub_bis 30.12.2017
setstate doif_istfeiertag 2017-12-21 11:06:18 urlaub_io aus
setstate doif_istfeiertag 2017-12-20 23:54:20 urlaub_von 05.12.2017

damit wir auf dem neuesten stand sind - so schaut das doif aus

(
(
[$SELF:urlaub_von:"^(\d\d).(\d\d).(\d\d\d\d)":$3."-".$2."-".$1] ge "$year-$month-$mday"
and
[$SELF:urlaub_bis:"^(\d\d).(\d\d).(\d\d\d\d)":$3."-".$2."-".$1] le "$year-$month-$mday"
and
[$SELF:urlaub_io] eq "ein"
)
or
(
[$SELF:frei_datum] eq "$mday.$month.$year"
and
[$SELF:frei_io] eq "ein"
)
or
[bw:state] ne "none"
)

(
set $SELF feiertag ja
)

DOELSE

()

(
set $SELF feiertag nein
)
das funzt auch, bis eben auf die urlaubsberechnung. auch der besondere tag "frei_datum" haut hin. es happert also "nur" noch am urlaubs-teil. der ist immer noch fast 1:1 aus dem wiki-beispiel. hab nur die berechnung für führende nullen raus, weil das eh korrekt aus der readingsgroup kommt.

doif-readings - juhuu - aber "Beliebiger Perlausdruck ". wie gsagt ... keinen schimmer hab. wenn du bei mir irgendwas mit perl siehst, liegt das daran, dass ichs ohne hirn und verstand abgeschrieben hab ...
ich habs nie kapiert, ich kapiers nicht und ich werds nie kapieren.
→do↑p!dnʇs↓shit←

Per

Das:
[$SELF:urlaub_von:"^(\d\d).(\d\d).(\d\d\d\d)":$3."-".$2."-".$1]
wäre ein "beliebiger" Perlausdruck. Natürlich nicht ganz beliebig, dieser enthält eine DOIF-Komponente.

Jetzt noch die Ausgabeformatierung
[mydevice:myreading:"(\d\d):(\d\d):(\d\d)":"hours: $1, minutes $2, seconds: $3"]
im Hinterkopf, kannst du dich rantasten. Zumindest mache ich das so, mangels Fhem im Zugriff kann ich dir kein fertiges Ergebnis liefern.

the ratman

→do↑p!dnʇs↓shit←