Hilfe mein DOIF startet morgens nicht - aber tagsüber ohne Probleme

Begonnen von visionsurfer, 23 November 2016, 07:53:45

Vorheriges Thema - Nächstes Thema

l2r

DOIF reagiert nur auf Zeiten nicht auf Daten?! bzw. das Datum kommt in dem Reading sowieso nicht vor
Wissen ist Macht.
Ich weiß nix.
Macht nix.

visionsurfer

@Michael:
Gute Frage. Ich hab das gestern Abend getestet und auf jeden Fall gewartet bis es bei 65% vom dimmen war. Danach hab ich die Lampe dann irgendwann über die Visu wieder auf "aus" gestellt.
Daher weiß ich nicht genau, ob das Einfluss haben könnte.

Bei meinen beiden Tests gestern Abend habe ich es immer so gemacht.

Also erst mal Wecker gestellt, dann gewartet bis alles durchgelaufen ist. Irgendwann wird mein DOIF mit der morgen Routine ja disable gesetzt. Vorher hatte ich aber schon das Licht wieder ausgeschaltet. Also DOIF disable war, hab ich wieder den Wecker gestellt um zu probieren ob es noch mal läuft. Lief wieder. Morgen Routine funktionierte und Licht ist auch angegangen.

Also Test abgeschlossen, ins Bett gegangen, Wecker auf heute früh 6.45 gestellt. Um 6.50 startete die morgen Routine, aber Licht ging nicht an.

Grüße,
Visionsurfer

l2r

Es muss mit   repeatcmd  10  und  repeatsame 100  zusammenhängen, da durch den Zeitpunkt und do always ja auf jeden fall die erste Bedingung wahr wird.
Wissen ist Macht.
Ich weiß nix.
Macht nix.

visionsurfer

Hmmmm, ok. Komisch.
Soweit ich weiß macht ja repeatcmd 10, das es alle 10 Sekunden erhöht wird. Repeatsame 100, führt es max. 100 mal aus.

Aber warum lief es dann gestern Abend 2 mal ohne Problem ? Ich lass das ja in 5% schritten hochfahren, bis max. 65 %.
Also sind die 100 Ausführungen voll ? Aber stellt sich das nicht immer wieder zurück.

Wäre ja blöd sonst. Keine Ahnung wie man das zum laufen bringt.

Grüße,
Visionsurfer

visionsurfer

Hi,

also ich bin jetzt wieder zu Hause und hab gleich mal wieder einen Test gemacht.
Also Wecker gestellt und gewartet was passiert.

Meine morgen Routine startet wunderbar. Alles wird abgespielt. Licht geht jetzt auch nicht. So wie heute früh. Es bleibt weiter im cmd_2 stehen.

Kann das wirklich mit repeatsame 100 zu tun haben ?
Gibt es eine Möglichkeit das irgendwie in den Griff zu bekommen ? Oder das es einmal Nachts quasi "resettet" wird ?

Ich bin mir relativ sicher, wenn ich das DOIF vom Licht jetzt neu initalisieren lassen würde, würde es sofort gehen.

Grüße,
Visionsurfer

Ma_Bo

Dann versuch mal bitte in dem Uebergabe DOIF:

([TabletNexus:nextAlarmTime] ne "off") (set morgen_routine enable,set wakeup_neu initialize) (setreading TabletNexus nextAlarmTime2 [TabletNexus:nextAlarmTime]) DOELSE (set morgen_routine disable)
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

BZW. setze mal in dein DOIF wakeup_neu am ende ein DOELSE

([([TabletNexus:nextAlarmTime2]+[00:05])]) (set schlafzimmer_LED_ww value ({([schlafzimmer_LED_ww:getG3:d]+5)}) g1) DOELSEIF ([schlafzimmer_LED_ww:getG3:d] >= 65) DOELSE

Dann aber die Änderung die ich gerade mit dem initialize geschrieben habe, wieder rückgängig machen...

EDIT 1:

Normal sollte das für das DOIF wakeup_neu auch so reichen:

([([TabletNexus:nextAlarmTime2]+[00:05])]) (set schlafzimmer_LED_ww value ({([schlafzimmer_LED_ww:getG3:d]+5)}) g1) DOELSE


EDIT 2:

Kommando zurück, du willst ja nur bis 65 hoch, dann sollte das DOELSEIF doch wieder drin bleiben.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

visionsurfer

Hi,

puh jetzt wird es richtig Krass. Ich hab es so gemacht wie du gesagt hast und noch das DOELSE angefügt.
Danach abgespeichert und dann steht das DOIF ja auf initalisiert. Also hab ich den Wecker gestellt und gewartet. 5 Minuten nach dem klingeln, läuft meine morgen Routine wieder wunderbar durch.

ABER mit dem DOIF wakeup_neu passiert gar nichts. Steht danach immer noch auf initalized.

So sieht das List aus:


Internals:
   DEF        ([([TabletNexus:nextAlarmTime2]+[00:05])]) (set schlafzimmer_LED_ww value ({([schlafzimmer_LED_ww:getG3:d]+5)}) g1) DOELSEIF ([schlafzimmer_LED_ww:getG3:d] >= 65) DOELSE
   NAME       wakeup_neu
   NR         413
   NTFY_ORDER 50-wakeup_neu
   STATE      initialized
   TYPE       DOIF
   Readings:
     2016-11-23 19:31:38   cmd             0
     2016-11-23 19:31:38   state           initialized
     2016-11-23 19:51:31   timer_1_c1      24.11.2016 19:40:00
   Condition:
     0          DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
     1          ReadingValDoIf($hash,'schlafzimmer_LED_ww','getG3','(-?\d+(\.\d+)?)','',AttrVal($hash->{NAME},'notexist',undef)) >= 65
   Days:
   Devices:
     1           schlafzimmer_LED_ww
     all         schlafzimmer_LED_ww
   Do:
     0:
       0          set schlafzimmer_LED_ww value ({([schlafzimmer_LED_ww:getG3:d]+5)}) g1
     1:
       0
     2:
       0
   Helper:
     globalinit 1
     last_timer 1
     sleeptimer -1
   Itimer:
     all         TabletNexus
   Localtime:
     0          1480012800
   Readings:
     1           schlafzimmer_LED_ww:getG3
     all         schlafzimmer_LED_ww:getG3
   Realtime:
     0          19:40:00
   Regexp:
     All:
   State:
   Time:
     0          ([TabletNexus:nextAlarmTime2]+[00:05])
   Timecond:
     0          0
   Timer:
     0          0
   Timers:
     0           0
   Triggertime:
     1480012800:
       localtime  1480012800
       Hash:
Attributes:
   do         always
   repeatcmd  10
   repeatsame 100
   room       Schlafzimmer


Wird mir immer komischer :)

Grüße,
Visionsurfer

Ma_Bo

Stell jetzt mal den Wecker ohne irgendein doif anzupacken.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

visionsurfer

Hi,

hatte ich doch.

Ich hab erst das DOELSE hinten dran gemacht. Dann abgespeichert und dann blieb er auf initalized. Dann hab ich den Wecker gestellt und gehofft das er den Status dann verändert, wenn der Wecker klingelt, bzw. 5 Minuten danach.

Meine morgen Routine ist sauber durchgelaufen. Das Licht hat sich nicht verändert. Der Status blieb weiterhin auf initialized.

Also ich denke, selbst wenn ich es jetzt noch mal mache, wird es weiterhin so bleiben ?

Grüße,
Visionsurfer

visionsurfer

Moin,

also ich hatte ja gestern Abend dann den Wecker für heute früh gestellt.
Heute früh ist erstaunlich sogar das Licht angegangen. Aber nur die ersten 5%. Das heißt er hat nicht weiter hoch gedimmt. Licht ist an und dann ist es stehen geblieben.

Das DOIF steht nun im Status cmd_3

Das List sieht nun wie folgt aus:


Internals:
   DEF        ([([TabletNexus:nextAlarmTime2]+[00:05])]) (set schlafzimmer_LED_ww value ({([schlafzimmer_LED_ww:getG3:d]+5)}) g1) DOELSEIF ([schlafzimmer_LED_ww:getG3:d] >= 65) DOELSE
   NAME       wakeup_neu
   NR         413
   NTFY_ORDER 50-wakeup_neu
   STATE      cmd_3
   TYPE       DOIF
   Readings:
     2016-11-24 08:19:46   Device          schlafzimmer_LED_ww
     2016-11-24 08:19:46   cmd             3
     2016-11-24 08:19:46   cmd_event       schlafzimmer_LED_ww
     2016-11-24 08:19:46   cmd_nr          3
     2016-11-24 08:19:46   e_schlafzimmer_LED_ww_getG3 0 %
     2016-11-24 08:19:46   state           cmd_3
     2016-11-24 09:08:02   timer_1_c1      25.11.2016 06:50:00
     2016-11-24 06:50:08   wait_timer      no timer
   Condition:
     0          DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
     1          ReadingValDoIf($hash,'schlafzimmer_LED_ww','getG3','(-?\d+(\.\d+)?)','',AttrVal($hash->{NAME},'notexist',undef)) >= 65
   Days:
   Devices:
     1           schlafzimmer_LED_ww
     all         schlafzimmer_LED_ww
   Do:
     0:
       0          set schlafzimmer_LED_ww value ({([schlafzimmer_LED_ww:getG3:d]+5)}) g1
     1:
       0
     2:
       0
   Helper:
     event      getG3: 0 %,last-sender: 1/1/68,0 %
     globalinit 1
     last_timer 1
     sleepdevice timer_1
     sleepsubtimer 0
     sleeptimer -1
     timerdev   schlafzimmer_LED_ww
     timerevent getG3: 0 %,last-sender: 1/1/68,0 %
     triggerDev schlafzimmer_LED_ww
     timerevents:
       getG3: 0 %
       last-sender: 1/1/68
       0 %
     timereventsState:
       getG3: 0 %
       last-sender: 1/1/68
       state: 0 %
     triggerEvents:
       getG3: 0 %
       last-sender: 1/1/68
       0 %
     triggerEventsState:
       getG3: 0 %
       last-sender: 1/1/68
       state: 0 %
   Internals:
   Interval:
   Itimer:
     all         TabletNexus
   Localtime:
     0          1480053000
   Readings:
     1           schlafzimmer_LED_ww:getG3
     all         schlafzimmer_LED_ww:getG3
   Realtime:
     0          06:50:00
   Regexp:
     0:
     1:
     All:
   State:
   Time:
     0          ([TabletNexus:nextAlarmTime2]+[00:05])
   Timecond:
     0          0
   Timer:
     0          0
   Timers:
     0           0
   Trigger:
   Triggertime:
     1480053000:
       localtime  1480053000
       Hash:
Attributes:
   do         always
   repeatcmd  10
   repeatsame 100
   room       Schlafzimmer


Liegt das nun am DOELSE was wir hinten dran gemacht haben ?

Ich verstehe das nicht mehr. Ich bin drauf und dran, mir dafür was anderes auszudenken.

Grüße,
Visionsurfer


Brockmann


visionsurfer

Moin.

O.K. immerhin ist es ja angegangen :) War immerhin bei 5% hell. Auch schön. Vielleicht brauch ich es gar nicht heller :)
Nein Spaß beiseite.

Hast du eventuell noch eine Idee oder Tipp wie man das lösen kann ?

Grüße,
Visionsurfer

Beta-User

Zitat von: visionsurfer am 24 November 2016, 09:09:30
Ich bin drauf und dran, mir dafür was anderes auszudenken.
Vielleicht wäre das eine Idee.

Zwei Anmerkungen von meiner Seite: Ein DOIF kann u.a. eine sehr komplexe Kombination von "at" und "notify" sein. Beim Lesen Deiner Beiträge drängt sich der Eindruck auf, Du solltest erst nochmal im Detail diese beiden Bausteine austesten, dann verstehst Du vermutlich auch besser, welche DOIF-Optionen eigentlich welchen Zweck haben.

Hier könntest Du z.B. ein at nehmen, um damit zwei andere Dinge zu triggern: ein weiteres at, das x Mal hochdimmt und ein notyfy, dass dieses at löscht, sollte aus anderen Gründen der maximale Dimmwert erreicht sein.

Und: Wenn sich jemand bereits die Mühe gemacht hat,
1. seine Morgenroutine in ein Modul (oder eine Kombination von verschiedenen Bausteilen) zu packen,
2. das ordentlich im Wiki zu beschreiben, und
3. einen ausdrücklich auf diese Option hinweist, kann man sich natürlich die Mühe machen, das Rad trotzdem neu zu erfinden. Ob es dadurch einfacher wird, ist eine andere Frage...

In jedem Fall gibt es Anlaß zum Schmunzeln ;).

Gruß,

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Ma_Bo

Versuch bitte mal folgendes, da das DOIF bei Änderung der Zeit ja in cmd3 springt, sozusagen hast du wenn der Wecker auf 07:00 steht, du die 5 Minuten dabei rechnest, nur von 7:05 bis 7:06 Zeit, deine Kommandos auszuführen, da solange nur cmd1 ausgeführt wird und sobald die Zeit auf 7:06 springt wird cmd3 ausgeführt , hoffe es ist verständlich:

([([TabletNexus:nextAlarmTime2]+[00:05])-([TabletNexus:nextAlarmTime2]+[00:10])]) (set schlafzimmer_LED_ww value ({([schlafzimmer_LED_ww:getG3:d]+5)}) g1) DOELSEIF ([schlafzimmer_LED_ww:getG3:d] >= 65) DOELSE

Damit hast du einen Zeitraum von 5 Minuten.
Mobil geschrieben, hoffe es sind keine Fehler drin.


Gesendet von iPhone mit Tapatalk
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.