DOIF neue Features (Sleep-Alternative)

Begonnen von Damian, 12 Juli 2015, 21:17:52

Vorheriges Thema - Nächstes Thema

Mumpitz

das heisst wenn ich nun:

([Auto_Beschattung] eq "on" and [Beschattung_OG] eq "off" and [Helligkeit_Twilight:azimuth] > 109 and [Helligkeit_Twilight:azimuth] < 270 and ([Multisensor_Ost:state] > 25000 or [Sensor_Licht_Sued:state] > 19000)) (set Beschattung_OG on)
DOELSEIF ([Auto_Beschattung] eq "on" and [Beschattung_OG] eq "on" and [Helligkeit_Twilight:azimuth] > 109 and [Helligkeit_Twilight:azimuth] < 270 and [Sensor_Licht_Sued:state] < 9000) (set Beschattung_OG off)
DOELSEIF ([Auto_Beschattung] eq "on" and [Beschattung_OG] eq "on" and ([Helligkeit_Twilight:azimuth] > 277 or [Helligkeit_Twilight:compasspoint] eq "west")) (set Beschattung_OG off) DOLESE ()


dann  habe ich mein gewünschtes verhalten?

RoBra81

Fast, wenn du DOELSE statt DOLESE schreibst...

Mumpitz


moonsorrox

meine Frage betrifft das Initialisieren des DOIF ich kann das mit einem zusätzlichem DOIF Ein und Aus schalten und dieses funktioniert auch mit diesem Code:
DEF
([du_ZeitsteuerungWegTage] eq "Aus") (set di_WegBeleuchtung_Morgens disable)
DOELSEIF ([du_ZeitsteuerungWegTage] ne "Aus") (set di_WegBeleuchtung_Morgens initialize)


Was mir nicht gelingt ist dieses alles in dem DOIF zu machen welches ich für eine Beleuchtung nutze, hier kann ich es zwar ausschalten, aber das einschalten klappt irgendwie nicht, dass geht wohl nicht..?
Ich hatte beide obigen set Befehle an den Anfang des DOIF gesetzt aber das funktioniert nicht das DOIF bleibt immer auf "disable"
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Damian

Zitat von: moonsorrox am 14 September 2015, 18:20:23
meine Frage betrifft das Initialisieren des DOIF ich kann das mit einem zusätzlichem DOIF Ein und Aus schalten und dieses funktioniert auch mit diesem Code:
DEF
([du_ZeitsteuerungWegTage] eq "Aus") (set di_WegBeleuchtung_Morgens disable)
DOELSEIF ([du_ZeitsteuerungWegTage] ne "Aus") (set di_WegBeleuchtung_Morgens initialize)


Was mir nicht gelingt ist dieses alles in dem DOIF zu machen welches ich für eine Beleuchtung nutze, hier kann ich es zwar ausschalten, aber das einschalten klappt irgendwie nicht, dass geht wohl nicht..?
Ich hatte beide obigen set Befehle an den Anfang des DOIF gesetzt aber das funktioniert nicht das DOIF bleibt immer auf "disable"

Mit der aktuellen Version muss "set di_WegBeleuchtung_Morgens initialize" funktionieren. Der Status des Moduls steht dann auf initialize und das Modul ist scharf gestellt. Den Befehl kannst du ja über die Kommandozeile testen.

Ich gehe jetzt schwer davon aus, dass dein Modul (dessen Namen ich hier nicht sehe) sich nicht selbst deaktiviert, dann kann es sich natürlich nicht mehr selbst initialisieren, weil es ja nicht mehr aktiv ist.

Gruß

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

moonsorrox

Zitat von: Damian am 14 September 2015, 18:31:35
Den Befehl kannst du ja über die Kommandozeile testen.
ja klar das funktioniert und mit meinem sogenannten Ausschalt DOIF funktioniert das auch. Ich wollte es nur in diesem DOIF integrieren und habe es nicht hinbekommen:
DEF:
([du_ZeitsteuerungWegTage] eq "Mo-Do" and [04:55-{sunrise_rel(0,"05:54","07:00")}|1234] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Di-Fr" and [04:55-{sunrise_rel(0,"05:54","07:00")}|2345] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Mi-Sa" and [04:55-{sunrise_rel(0,"05:54","07:00")}|3456] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Do-So" and [04:55-{sunrise_rel(0,"05:54","07:00")}|4560] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Fr-Mo" and [04:55-{sunrise_rel(0,"05:54","07:00")}|5601] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Sa-Di" and [04:55-{sunrise_rel(0,"05:54","07:00")}|6012] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "So-Mi" and [04:55-{sunrise_rel(0,"05:54","07:00")}|0123] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Mo-Fr" and [04:55-{sunrise_rel(0,"05:54","07:00")}|12345] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Mo-Sa" and [04:55-{sunrise_rel(0,"05:54","07:00")}|123456] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Sa-So" and [04:55-{sunrise_rel(0,"05:54","07:00")}|06] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSE (set WegLampe_Sw_02 off, set di_WegBeleuchtung_Morgens initialize)


Ich hatte das am Anfang eingetragen aber es funktionierte nicht...
so hatte ich es vor dem ersten Timer drin: natürlich mit einem weiteren DOELSEIF vor dem 1.Timer
([du_ZeitsteuerungWegTage] eq "Aus") (set di_WegBeleuchtung_Morgens disable)
DOELSEIF ([du_ZeitsteuerungWegTage] ne "Aus") (set di_WegBeleuchtung_Morgens initialize)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Damian

Zitat von: moonsorrox am 14 September 2015, 18:39:19
ja klar das funktioniert und mit meinem sogenannten Ausschalt DOIF funktioniert das auch. Ich wollte es nur in diesem DOIF integrieren und habe es nicht hinbekommen:
DEF:
([du_ZeitsteuerungWegTage] eq "Mo-Do" and [04:55-{sunrise_rel(0,"05:54","07:00")}|1234] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Di-Fr" and [04:55-{sunrise_rel(0,"05:54","07:00")}|2345] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Mi-Sa" and [04:55-{sunrise_rel(0,"05:54","07:00")}|3456] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Do-So" and [04:55-{sunrise_rel(0,"05:54","07:00")}|4560] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Fr-Mo" and [04:55-{sunrise_rel(0,"05:54","07:00")}|5601] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Sa-Di" and [04:55-{sunrise_rel(0,"05:54","07:00")}|6012] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "So-Mi" and [04:55-{sunrise_rel(0,"05:54","07:00")}|0123] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Mo-Fr" and [04:55-{sunrise_rel(0,"05:54","07:00")}|12345] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Mo-Sa" and [04:55-{sunrise_rel(0,"05:54","07:00")}|123456] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([du_ZeitsteuerungWegTage] eq "Sa-So" and [04:55-{sunrise_rel(0,"05:54","07:00")}|06] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSE (set WegLampe_Sw_02 off, set di_WegBeleuchtung_Morgens initialize)


Ich hatte das am Anfang eingetragen aber es funktionierte nicht...
so hatte ich es vor dem ersten Timer drin: natürlich mit einem weiteren DOELSEIF vor dem 1.Timer
([du_ZeitsteuerungWegTage] eq "Aus") (set di_WegBeleuchtung_Morgens disable)
DOELSEIF ([du_ZeitsteuerungWegTage] ne "Aus") (set di_WegBeleuchtung_Morgens initialize)


Wenn es über Kommandozeile funktioniert, dann muss es auch in einem anderen DOIF funktioniert (ich habe es gerade bei mir nachgestellt). Offenbar wird dein DOELSE-Zweig nicht ausgeführt. Aber das kannst du ja im Log nachvollziehen.

Gruß

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

moonsorrox

OK, ich lasse das mit dem 2. DOIF das funktioniert ja  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

igami

Hallo Damian,

ich würde gerne im wait Minuten in Sekunden umrechnen.

attr di_test wait 0:([d_test:hysteresis]*60):0


Ist so etwas schon implementiert? Laut Commandref geht
Zitat
Statt Sekundenangaben können ebenfalls Stati in eckigen Klammen oder Perlbefehle angegeben werden.
Aber auch wenn ich statt der eckigen Klammern ReadingsVal nehme findet keine Verzögerung statt.

Danke und Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Damian

Zitat von: igami am 15 September 2015, 12:49:27
Hallo Damian,

ich würde gerne im wait Minuten in Sekunden umrechnen.

attr di_test wait 0:([d_test:hysteresis]*60):0


Ist so etwas schon implementiert? Laut Commandref gehtAber auch wenn ich statt der eckigen Klammern ReadingsVal nehme findet keine Verzögerung statt.

Danke und Grüße
igami

Es war mir klar, dass die Anforderung früher oder später kommen wird. Das Problem ist der Doppelpunkt vor hysteresis, denn dieser Doppelpunkt wird als Trennzeichen für wait ausgewertet. Die Klammerung mit runden Klammern hast du schon intuitiv richtig gemacht - so wird es mal funktionieren, allerdings ist die Sache noch nicht programmiert.

Z. Zt. kann man beliebige Perlausdrücke bei wait verwenden, solange kein Doppelpunkt bzw. Komma im Ausdruck vorkommt.

Gruß

Damian




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

igami

Habe ich schon geahnt, dass die beiden Zeichen das Problem verursachen.

Trotztdem Danke, werde ich es vorerst über ein readingsProxy lösen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

mfeske

#191
Hallo zusammen,

ich habe es leider nch nicht hinbekommen mein DOIF auf wait umzubauen, damit die Töne vernünftig abgespeilt werden:
([{sunset(-600)}|8] and [Kontakt_Garten] eq "closed") (set Rolladen02 on, set Rolladen02_Zustand down, set gong_MP3 playTone 0, sleep 1; set gong_MP3 playTone 008, sleep 1; set gong_MP3 playTone 0) DOELSEIF ([{sunset(-1200)}|7]) (set Rolladen02 on, set Rolladen02_Zustand down, set gong_MP3 playTone 0, sleep 1; set gong_MP3 playTone 008, sleep 1; set gong_MP3 playTone 0) DOELSEIF ([{sunrise(+1)}|8]) (set Rolladen02 off, set Rolladen02_Zustand up, set gong_MP3 playTone 0, sleep 1; set gong_MP3 playTone 009, sleep 1; set gong_MP3 playTone 0) DOELSEIF ([{sunrise(+600)}|7]) (set Rolladen02 off, set Rolladen02_Zustand up, set gong_MP3 playTone 0, sleep 1; set gong_MP3 playTone 009, sleep 1; set gong_MP3 playTone 0)

Wenn ich die neue Datei verwende, dann werden auch die sleep Befehle nicht mehr ausgeführt. Wird die neue Datei eigentlich bei einem Update überschrieben?

Eins ist mir ja schon klar, das die sleep Anweisungen entfernt werden müssen:
([{sunset(-600)}|8] and [Kontakt_Garten] eq "closed") (set Rolladen02 on, set Rolladen02_Zustand down, set gong_MP3 playTone 0, set gong_MP3 playTone 008, set gong_MP3 playTone 0) DOELSEIF ([{sunset(-1200)}|7]) (set Rolladen02 on, set Rolladen02_Zustand down, set gong_MP3 playTone 0, set gong_MP3 playTone 008, set gong_MP3 playTone 0) DOELSEIF ([{sunrise(+1)}|8]) (set Rolladen02 off, set Rolladen02_Zustand up, set gong_MP3 playTone 0, set gong_MP3 playTone 009, set gong_MP3 playTone 0) DOELSEIF ([{sunrise(+600)}|7]) (set Rolladen02 off, set Rolladen02_Zustand up, set gong_MP3 playTone 0, set gong_MP3 playTone 009, set gong_MP3 playTone 0)

Aber wie werden jetzt die attr wait auf die einzelnen Ereignisse und Aktionen verteilt nur mit hilfe des : ?

und aus ([{sunrise(-0)}]) ((set gong_MP3 playTone 254,016)) muss dann ([{sunrise(-0)}]) (set gong_MP3 playTone 254, set gong_MP3 playTone 016) werden mit attr wait 0,1

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Amenophis86

#192
Hast du mal hier geschaut:

http://fhem.de/commandref_DE.html#DOIF und dann unter Verzögerungen??

Du  musst jeden Befehl, der verzögert werden soll in eine eigene () setzen. Dann mit dem attr wait dieses Ansprechen. Gezählt werden alle () mit Befehlen von links nach rechts, wobei sie mit einem , getrennt sind. Die einzelnen DOELSEIF werden mittels eines : angesprochen.

ErsterBefehl nach DOIF, ZweiterBefehl nach DOIF : ErsterBefehl nach DOELSEIF, ZweiterBefehl nach DOELSEIF : ...
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mfeske

Danke Amenophisophis86,

also wäre für meinen Fall dann:
define sonnenuntergang_doif DOIF ([{sunset(-0)}]) (set gong_MP3 playTone 254)(set gong_MP3 playTone 017)
attr sonnenuntergang_doif room gong_ansagen
attr sonnenuntergang_doif wait 0,1


korrekt ?!

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

All-Ex

Hallo,

ich hatte ein Problem mit einem DOIF, das ich auf dieses Minimal-DOIF reduziert habe:

So funktioniert es:
([20:42])                      ## Um 20:42
(set PushMessage msg 'test')


Mit einem Kommentar in der letzten Zeile funktioniert es nicht:
([20:42])                      ## Um 20:42
(set PushMessage msg 'test')   ## Sende Nachricht


sondern meldet beim Speichern im Webfrontend test.doif DOIF: expected DOELSEIF or DOELSE:

Ich nutze # $Id: 98_DOIF.pm 9193 2015-09-02 07:08:58Z damian-s $