[erledigt] mit doif vortag bestimmen?

Begonnen von the ratman, 11 Juni 2019, 12:19:42

Vorheriges Thema - Nächstes Thema

the ratman

hiho,

ich versuch grade raus zu finden, wie ich einen bestimmten tag errechnen kann.
in meinem fall hätte ich einen doif-teil a'la [([$SELF:zeit_tag_vollreinigung])|[$SELF:tag_vollreinigung]]info: hier wird zu einer per einstellung festgelegten zeit/tag gefahren. die reinigung fällt aus, wenn z.b. ein feiertag anliegt. das funzt auch alles wunderbar.

nun will ich aber am tag nach einem feiertag die ausgefallene reinigung fahren.  das reading dazu lautet:tag_vollreinigung    Mo,Do

die frage: wie kriege ich also am Di oder Fr raus, dass Mo oder Do eine reinugung gewesen wäre.
ich müsste also tag_vollreinigung mit +1 tag rechnen.

hier sicherheitshalber der gesamte doif-teil (ist so einfach der normale fahrtteil, der auch funzt bis aufs yesterday natürlich schon mal)DOELSEIF

( ## 09 ## REINIGUNG GESAMT TAGESTEIL - NACH-FEIERTAGS-FAHRT
[[$SELF:zeit_tag_vollreinigung]|[$SELF:tag_vollreinigung]] <---------------------------------- ??? was muß ich hier tun ???
and [bw:yesterday] ne "none" and [$SELF:aktiv_vollreinigung] eq "ja"
)

( IF ( [$SELF:tueren] ne "x") ( say [$SELF:tueren] ) )
( set tatortreiniger nextCleaningMode eco)
( set tatortreiniger nextCleaningZone 839d1efe-0021-45b4-92e2-9ace9a15acf3 )
( set tatortreiniger startCleaning zone )
( setreading $SELF zustand_vollreinigung unterwegs_tag )
→do↑p!dnʇs↓shit←

Per

Mein Ansatz wäre ein anderer: ein Dummy (DOIF_Readings!) wird gesetzt und bei erfolgter Reinigung resetet. Die Reinigung erfolgt halt nur an Arbeitstagen.
Also
([0:00|135]) ## Mo Mi Fr 0 Uhr
(setreading $SELF:todo 1)
DOELSEIF ([8:00|9] and [$SELF:todo]) # jeden AT 8 Uhr
(set Reinigung start,setreading $SELF:todo 0)

the ratman

#2
ich hab ja keine festen tage, die kann der waf selber einstellen. (zur veranschaulichung siehe anhang)
ausserdem hab ich wochentage, keine zahlen. nehm ich die, würden die auch als zahlen in den voreinstellungen erscheinen, was den waf deutlich senkt *g*. gut, könnte man in einem weiteren doif von wochentagen auf zahlen umbauen, aber dann wirds langsam a bissi pervers.

da es dann noch andere abhängikeiten gibt, muß ich tatsächlich in dem fall "zurückrechnen" können.
ich wills ausserdem so universell wie möglich halten, weil irgendwann auch noch sonderregeln für z.b. urlaub kommen werden und die dann wieder abhängig sein werden, wo wir im urlaub sind.
da ist ein wissen darüber, wann eigentlich das ding hätte fahren sollen nicht schlecht.

ich hab mir schon überlegt, ob ichs anders rum angehen - also z.b.: ich schau mir alle feiertage in den nächsten 8 tagen an und vergleiche deren tag mit dem tag der reinigung.
aber auch dann müsst ich wissen, welches datum z.b. "Mo" hat, ums mit dem datum des feiertags vergleichen zu können. ausserdem steig ich geistig dann total aus, wenn meine holde dann nach der errechnung der tage nen anderen tag in ihrer automatik wählt.
→do↑p!dnʇs↓shit←

Per

DOIF kann auch Mo Di... direkt händeln. Für die Feiertage (oder Schulferien) gibt es FHEM-weite Dateien.

amenomade

#4
DOIF kann sogar $we und IsWe("tomorrow") und IsWe("yesterday") oder direkt [<holidaydevice>:yesterday] verstehen
Solange Du das entspr. holiday Device definiert hast, und auf global das Attribut holiday2we gesetzt hast, ist IsWe auch für Ferientage wahr.
Z.B. habe ich heute:
   READINGS:
     2019-06-11 14:24:26   state           none
     2019-06-11 14:24:26   tomorrow        none
     2019-06-11 14:24:26   yesterday       Pfingsten


Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

the ratman

dann würde ein [[$SELF:zeit_tag_vollreinigung]|[$SELF:tag_vollreinigung]+1] reichen?
→do↑p!dnʇs↓shit←

amenomade

Ich glaube nicht, dass er an der Stelle eine Kalkulation versteht
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Hmm ich sehe gerade, dass Du schon [bw:yesterday] nutzt. Jetzt ist mir aber nicht mehr so klar, was Du damit machst: nur reinigen, wenn der Vortag ein Feiertag war?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

the ratman

meine logik:

wenn der bot normal fahren soll, also die version, die geht.
ich prüfe, ob tag und uhrzeit in den einstellungen angegeben sind und kein feiertag ist und das ganze ding generell an ist, dann fahrt er.
ist also ein feiertag, wird nicht gefahren, auch wenn das datum passt.

nun will ich zusätzlich prüpfen ob gestern ein feiertag war (eben mit yesterday) und ob der bot gestern hätte fahren sollen
... ich habs während ich hier schreib *totlach*

ist ja idioteneinfach - ich kanns ja fast so machen wie anfangs vorgeschlagen.
ist heute ein fahr-tag und ein feiertag fahrt er nicht und trägt dafür eine variable ein. steht die variable wird am nächsten tag, sofern dies nicht auch ein feiertag ist gefahren und die variable gelöscht.
→do↑p!dnʇs↓shit←

Per

Das hattest du oben aber explizit ausgeschlossen.

the ratman

ja, waren ja feste tage und da glaubt ich noch, dass man tage und zahlen ned mischen kann.
das grundlegendere problem is scheints, dass ichs immer erst mal kompliziert brauch *g*.
→do↑p!dnʇs↓shit←