Rolladenansteuerung über Twilight 24 Stunden zeitversetzt

Begonnen von Muff Potter 24, 05 Dezember 2018, 21:08:27

Vorheriges Thema - Nächstes Thema

Muff Potter 24

Model ist von FHEM nach Perl gewechselt.
Internals:
   DEF        DOIF ([05:00-22:00] and ([[Twilight_Heim:sr_weather]])) (set Kueche_RL 62)
DOELSEIF [22:01-04:59] (set Kueche_RL off)
   MODEL      Perl
   NAME       Kueche_RL_twl_auf
   NR         106
   NTFY_ORDER 50-Kueche_RL_twl_auf
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-12-07 10:35:25   mode            enabled
     2018-12-06 17:03:43   state           initialized
   Regex:
   condition:
     0         
   devices:
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   perlblock:
     0         
   uiState:
   uiTable:
Attributes:
   room       Kueche

CoolTux

Hast Du das Device modifiziert? Also was daran geändert? Weil da jetzt gar nichts ausgelöst hat. War das heute Morgen auch schon so? Oder stand es im cmd_1 wie von Damian gesagt?

Persönlich würde ich die ganze Logik noch mal überdenken. So wie das da jetzt steht ist es zu kurz gedacht behaupte ich.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Muff Potter 24

Nein so steht es seit gestern Abend. Initialized und nicht cmd_1. Es war aber bisher auch so, das mit meinen alten Einstellungen mit der 24 Stunden Verzögerung bei Änderungen erst nach dem ersten abarbeiten des Befehls von Initialized auf cmd_1 gewechselt wurde. Was mich wundert ist, das in den Perlmodus gewechselt wurde, obwohl ich doch runde Klammern verwendet habe.

Frank_Huber

so wie das da jetzt steht kann es nicht geben.

Wo hast Du denn das "DOIF" am anfang der DEF her? das gehört da sicher nicht hin.

CoolTux

Jepp auch gerade gesehen.

Ich habe mir mal erlaubt Deine Definition bei mir ins Testsystem zu kippen.
Wenn man alles richtig macht bekommt man als Ergebnis timer_ in den Readings. Zu den Timerzeiten wird dann aus gelöst.

Wie gesagt, mach das DOIF am Anfang noch weg und dann solltest Du zu mindesteb Timer bekommen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Muff Potter 24

Ich habe versucht Rat von Damian aus Antwort 7 zu befolgen. Zusätzlich soll aber noch eine Zeit (von - bis) wo der Rolladen fahren darf eingebracht werden.

Meiner Meinung nach würde der Rolladen ohne Zeitbegrenzung zum ersten mal nachts um 12:00 Uhr fahren wenn die Zeiten durch Twilight festgelegt werden. Und zum zweiten Mal eine Stunde vor der erechneten Zeit des auffahrens.

Vereinfacht gesagt soll die Rollade den Fahrbefehl ausführen, wenn der Befehl in der erlaubten Zeit liegt und sr_weather erreicht ist.

Den alten Befehl der leider zu einem Versatz von 24 Stunden führte hatte ich so definiert:
define Kueche_RL_twl_auf DOIF ([{twilight("Twilight_Heim","sr_weather","06:24","09:00")}]) (set Kueche_RL 62)
attr Kueche_RL_twl_auf do always

CoolTux

Dein Problem ist das Dir die Basics fehlen und Du Dir diese anscheinend auch nicht an eignen willst oder kannst.
Wenn Du im FHEMWEB in die Details Deines DOIF gehst solltest Du sowas wie im Bild eins sehen.

Da drückst Du dann auf modify und änderst Dein DOIF so das in der DEF Zeile das DOIF weg ist.




Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Muff Potter 24

#37
Ich habe das Doif und doelseif entfernt. List sieht so aus:
Internals:
   DEF        ([05:00-22:00] and ([[Twilight_Heim:sr_weather]])) (set Kueche_RL 62)

   MODEL      FHEM
   NAME       Kueche_RL_twl_auf
   NR         106
   NTFY_ORDER 50-Kueche_RL_twl_auf
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-12-07 13:55:33   cmd             0
     2018-12-07 13:55:33   mode            enabled
     2018-12-07 13:55:33   state           initialized
     2018-12-07 13:55:33   timer_01_c01    08.12.2018 05:00:00
     2018-12-07 13:55:33   timer_02_c01    07.12.2018 22:00:00
     2018-12-07 13:55:33   timer_03_c01    08.12.2018 09:10:19
   Regex:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and (::DOIF_time_once($hash,2,$wday))
   days:
   devices:
   do:
     0:
       0          set Kueche_RL 62
     1:
   helper:
     globalinit 1
     last_timer 3
     sleeptimer -1
   interval:
     0          -1
     1          0
   intervalfunc:
   itimer:
     all         Twilight_Heim
   localtime:
     0          1544241600
     1          1544216400
     2          1544256619
   realtime:
     0          05:00:00
     1          22:00:00
     2          09:10:19
   time:
     0          05:00:00
     1          22:00:00
     2          [Twilight_Heim:sr_weather]
   timeCond:
     0          0
     1          0
     2          0
   timer:
     0          0
     1          0
     2          0
   timers:
     0           0  1  2
   triggertime:
     1544216400:
       localtime  1544216400
       hash:
     1544241600:
       localtime  1544241600
       hash:
     1544256619:
       localtime  1544256619
       hash:
   uiState:
   uiTable:
Attributes:
   room       Kueche


09:10 Uhr ist die Auffahrzeit von heute Morgen. Könnte es also so funktionieren ?

CoolTux

Sieht erstmal ok aus.
So und jetzt mal kurz das was Du hättest eigentlich lesen müssen.

DOIF arbeitet vom Prinzip wie eine Zustandsmaschine. Bedeutet, ist ein Zustand erreicht muss erst ein anderer Zustand hergestellt werden damit wieder in den vorherigen gewechselt werden kann.
Aktuell würde Deine Definition genau einmal funktionieren.
Du hast nun also 2 Möglichkeiten. Das Attribut do always sorgt dafür das ein und der selbe Zustand mehrmals ausgeführt werden kann ohne einen vorherigen Wechsel.
Oder Du sorgst für einen Wechsel mittels DOELSEIF dann müsst Du aber eine Bedingung mit angeben oder DOELSE das macht man ohne Bedingung.

Persönlich würde ich einfach erstmal ein DOELSEIF nehmen und eine weitere Bedingung ansetzen. Auch würde ich die Zeiten etwas enger nehmen.

([04:30-09:00] and [[Twilight_Heim:sr_weather]]) (set Kueche_Hirsch_RL 62) DOLSEIF ([15:30-22:00] and [[Twilight_Heim:ss_weather]]) (set Kueche_Hirsch_RL runter)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Muff Potter 24

@CoolTux
Ich habe Gestern mehr als 1.5 Stunden in der Commandref und im Wiki gelesen.
Es ist nicht so das ich mir das Wissen nicht aneignen möchte.
Allerdings spielt der Faktor Zeit immer einen Rolle. Wie bei jedem Anderen hier auch.
Ich habe 35 Jahre Computererfahrung. In Sachen FHEM bin ich Neuling. Aber immer begeistert wenn ich noch etwas Neues lernen kann. ;)

CoolTux

#40
Dann biete ich Dir mit Freuden an heute gegen 21 Uhr in meine Schule zu kommen  :)
Zitat



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

#41
(Sorry für etwas OT)
@Muff Potter 24,

nur meine private Meinung, aber evtl. willst du sie hören: wenn du Programmieren kannst, mach' es direkt in Perl oder mit den Modulen, die speziell für den jeweiligen Zweck gemacht sind. DOIF ist eine Programmiersprache für sich, die man als solche begreifen und lernen muß.

Hier würde ich die wenigen Beispiele für "at" in der commandref zur Lektüre empfehlen, wenn du es ähnlich, aber mit Schließen und Wochentagsgesteuert haben willst, bist du bei "WeekdayTimer" richtig.
Oder, wenn es um Rolläden geht, beim AutoShuttersControl-Modul, das allerdings sehr viele Optionen enthält und daher (zumindest im Moment noch) nicht für Anfänger so gut geeignet ist, die erst dabei sind, sich Grundlagen anzueignen.

Ansonsten würde ich die Perl-Specials in der Commandref noch lesen und den notify-Artikel in der Commandref.

Gerne kannst du rückmelden, ob das eher hilfreich ist oder eben nicht.

Viel Spaß jedenfalls noch mit FHEM,

Beta-User

Nachtrag: Das Angebot von CoolTux solltest du annehmen!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Frank_Huber

Hi Leon,

bei "Einzeilern" ist IMHO schon eine Weile kein DOELSE oder do always mehr notwendig.
das setzt DOIF alleine dazu.
Hat Damian vor einer Weile in nem anderen Thread geschrieben.

CoolTux

Zitat von: Frank_Huber am 07 Dezember 2018, 14:26:45
Hi Leon,

bei "Einzeilern" ist IMHO schon eine Weile kein DOELSE oder do always mehr notwendig.
das setzt DOIF alleine dazu.
Hat Damian vor einer Weile in nem anderen Thread geschrieben.

Danke Dir. Ist eine gute Info
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Muff Potter 24

@Beta-User

Vielen Dank für die Tips. Ich werde mal versuchen mich etwas mehr einzuarbeiten. Ich hoffe ich finde die Zeit....

@ CoolTux
Vielen Dank für die Einladung. Gibt es auch Termine die in der Woche liegen ? Ist es auch für FHEM-Stümper wie mich geeignet ?
Heute Abend kann ich leider nicht. Denn da findet das Gegenteil von Wissen aneignen statt....Bier trinken :)