Hauptmenü

DOIF mit Zeitschaltung

Begonnen von Escrimark, 01 Februar 2017, 08:09:26

Vorheriges Thema - Nächstes Thema

Escrimark

Hi, ich verwende folgendes DOIF Statement. Welches er allerdings heute morgen und gestern morgen nicht (d.h. gar nicht) ausgeführt. Hat Es hat aber schon mal funktioniert.



([{sunrise("HORIZON=-0.8",0,"05:00","07:30")}] and (Value("HomeStatus") ne "away"))
(set Rolladentuer position 0; set Rolladenfenster position 0)
DOELSE (set Rolladentuer position 100; set Rolladenfenster position 25)


Aus den Readings (siehe Anhang) erkennt man, dass das Kommando zuletzt am 30.01.17 um 7:30 ausgeführt wurde und das er es wohl das nächste mal am 2.1.17 ausführen möchte.
Wie bekomme ich raus, warum es gestern und heute nicht ausgeführt wurde?

Vielen Dank schon mal für die Hinweise.

Ah ja im fhem.log steht zum fraglichen Zeitpunkt nix drin (weder gestern 31.1. noch heute).


2017.01.31 07:11:44 2: CUL1: unknown message A069F329DBF0C65
2017.01.31 07:12:46 2: CUL1: unknown message A064000EBBF0C65
2017.01.31 07:17:32 2: CUL1: unknown message A067670B0BF0C65
2017.01.31 07:17:33 2: CUL1: unknown message A067670B0BF0C65
2017.01.31 07:25:54 2: CUL1: unknown message A0645C45ABF0C65
2017.01.31 07:25:55 2: CUL1: unknown message A06BF0C6545C45A
2017.01.31 07:31:21 2: CUL1: unknown message A0645C45ABF0C65
2017.01.31 07:35:30 2: CUL1: unknown message A0655B4DCBF0C65


kumue

(Irgend)welche Attribute gesetzt ? z.B. do always ?
Befehlstrennung mit Komma statt Semikolon, aber das ist nicht die Ursache.
Am Besten bitte eine list vom DOIF posten.
list Sonnenaufgang_Rolladen

Escrimark

Hi Kumue,

hier ist ein List Sonnenaufgang_Rolladen. Keine Attribute gesetzt.


Internals:
   DEF        ([{sunrise("HORIZON=-0.8",0,"05:00","07:30")}] and (Value("HomeStatus") ne "away"))
(set Rolladentuer position 0; set Rolladenfenster position 0)
DOELSE (set Rolladentuer position 100; set Rolladenfenster position 25)
   NAME       Sonnenaufgang_Rolladen
   NR         158
   NTFY_ORDER 50-Sonnenaufgang_Rolladen
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2017-01-30 07:30:00   cmd             1
     2017-01-30 07:30:00   cmd_event       timer_1
     2017-01-30 07:30:00   cmd_nr          1
     2017-01-30 07:30:00   state           cmd_1
     2017-02-01 13:42:29   timer_01_c01    02.02.2017 07:30:00
   Condition:
     0          DOIF_time_once($hash,0,$wday) and (Value("HomeStatus") ne "away")
   Days:
   Devices:
   Do:
     0:
       0          set Rolladentuer position 0; set Rolladenfenster position 0
     1:
       0          set Rolladentuer position 100; set Rolladenfenster position 25
   Helper:
     globalinit 1
     last_timer 1
     sleeptimer -1
   Itimer:
   Localtime:
     0          1486017000
   Realtime:
     0          07:30:00
   Regexp:
   State:
   Time:
     0          {sunrise("HORIZON=-0.8",0,"05:00","07:30")}
   Timecond:
     0          0
   Timer:
     0          0
   Timers:
     0           0
   Triggertime:
     1486017000:
       localtime  1486017000
       Hash:
Attributes:

andi11

die sunrise Funktion gibt mir 31:07:28 zurück wenn ich {sunrise("HORIZON=-0.8",0,"05:00","07:30")} in der FHEM Befehlszeile eingebe. Erscheint mir etwas "spät" für einen Tag...

KernSani

sunrise / sunset geben die absolute Zeit des nächsten Sonnenauf- bzw. -untergangs zurück, wobei 24 Stunden addiert werden, sofern das entsprechende Ereignis am nächsten Tag stattfindet
(Quelle: Wiki) das ist nicht das Problem.
Was ist denn der Wert von HomeStatus?

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Escrimark


KernSani

1. Mir fällt gerade noch auf, dass du die einzelnen set Befehle mit Semikolon getrennt hast, DOIF will da eigentlich ein Komma.
2. Hast du seit 3 Tagen das Haus nicht verlassen? Dein DOIF steht auf CMD_1 und du hast kein do always gesetzt, d.h. das Dingens muss erstmal in den ELSE-Zweig kommen, bevor es wieder CMD_1 ausführt

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

kumue

morgen um 7:30Uhr wird nichts passieren, da das DOIF immer noch auf cmd_1 steht.
Ein Zustandswechsel auf cmd_2 (DOELSE-Zweig) ist bisher noch nicht erfolgt.

Damian

#8
Zitat von: KernSani am 01 Februar 2017, 21:03:16
1. Mir fällt gerade noch auf, dass du die einzelnen set Befehle mit Semikolon getrennt hast, DOIF will da eigentlich ein Komma.
2. Hast du seit 3 Tagen das Haus nicht verlassen? Dein DOIF steht auf CMD_1 und du hast kein do always gesetzt, d.h. das Dingens muss erstmal in den ELSE-Zweig kommen, bevor es wieder CMD_1 ausführt

Grüße,

Oli

Komma ist zwar beim DOIF Standard, Semikolon funktioniert aber auch. Das Problem ist eben das nicht gesetzte do always - ohne Zustandswechsel keine Wiederholung.

Zudem hat man bei DOIF die vereinfachte Syntax für Statusabfragen: [HomeStatus] ne "away", ohne Fragezeichen würde sie sogar triggern, wenn sich der Status von HomeStatus ändert und in den cmd_2 Zustand führen.

Mein Tipp: einfach noch mal genauer die Commandref zu DOIF durchlesen.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF