Hauptmenü

neues Modul DOIF

Begonnen von Damian, 21 Mai 2014, 15:53:18

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: maxritti am 26 Januar 2015, 16:27:20
Merkwürdigerweise ist das DOIF dann gar nicht angesprungen, als der BM motion gesendet hat.

Dann musst du mit Eventmonitor analysieren, welche Events nur bei Bewegung kommen.

Gruß

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

moonsorrox

ich bekomme folgendes nicht hin weil ich nicht weiß an welcher Stelle ich eine Zeit in den Code bringen muss..!

Mein DOIF arbeitet mit folgendem Code im DEF:
([ZeitsteuerungTV] eq "FHEM" and ([{sunset("CIVIL",-620,"16:35","22:30")}|12345] or [{sunset("CIVIL",-1220,"16:35","22:20")}|06]))
(set WZ_Lampe_TV on)
DOELSEIF ([ZeitsteuerungTV] eq "FHEM" and ([00:45|12345] or [01:15|06]) or ([Temperatur_Wohnzimmer:luminosity:] < 1.00))
(set WZ_Lampe_TV off)
DOELSEIF([ZeitsteuerungTV] eq "FHEM")(attr ZufallsTimerTVLED disable 1)
DOELSEIF([ZeitsteuerungTV] eq "Zufall")(attr ZufallsTimerTVLED disable 0)


Die zweite DOELSEIF Definition funktioniert so wie sie soll, jetzt habe ich eine automatische Abfrage der Helligkeit im Wohnzimmer eingebaut.
Damit möchte ich erreichen wenn ich Abends raus gehe und eine andere Lampe ausschalte - geht luminosity auf unter 1 - auch die TV Beleuchtung ausgeht und nun das "ABER" dieses soll nicht vor einer bestimmten Uhrzeit (z.B. 23:00 Uhr) passieren.
Das habe ich gestern bemerkt, denn wenn die Beleuchtung einschaltet und die Rollläden runter gehen geht die TV Beleuchtung aus wenn noch keine weitere Lampe an ist das möchte ich vermeiden...

Ich weiß jetzt nicht wo ich diese Zeit rein bringe, habe etliche Versuche hinter mir aber das klappt nicht  :-\
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

Brockmann

Zitat von: moonsorrox am 28 Januar 2015, 14:19:07
Ich weiß jetzt nicht wo ich diese Zeit rein bringe, habe etliche Versuche hinter mir aber das klappt nicht  :-\

Vielleicht so (ungetestet):

DOELSEIF ([ZeitsteuerungTV] eq "FHEM" and ([00:45|12345] or [01:15|06] or ([Temperatur_Wohnzimmer:luminosity:] < 1.00 and $hms gt "23:00:00")))

HoTi

Hallo zusammen,

ich habe nun von maxritti die Rolloschaltung nachgebaut. Funktioniert Prima! Danke maxritti.

Aber nun hab ich das Problem welches er auch schon hatte und jetzt anscheinend auch wieder.

Beim Speichern der cfg datei, oder bei neustart von FHEM verlieren meine DOIF die Uhrzeiten.
Folgendes Notify sollte es auffangen:

Zitatdefine ni_GlobalInitialized notify global:INITIALIZED trigger di_Rollo_SetTime

Funktioniert aber nicht :-( bzw. der Befehl trigger di_Rollo_SetTime alleine funktioniert nicht.

Jemand eine Idee woran das liegen könnte? Ausserdem wird das notify anscheinendn nicht beim speichern der cfg aufgerufen. Hat da jemand eine idee wie ich das abfange?


Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Damian

Zitat von: Brockmann am 28 Januar 2015, 15:03:58
Vielleicht so (ungetestet):

DOELSEIF ([ZeitsteuerungTV] eq "FHEM" and ([00:45|12345] or [01:15|06] or ([Temperatur_Wohnzimmer:luminosity:] < 1.00 and $hms gt "23:00:00")))



Schade nur, dass 00:00:00 kleiner ist als 23:00:00 ;)

Es muss erstmal klar sein in welchem Zeitraum (von bis) es passieren soll z. B. [23:00-10:00]. Dann kann man es angeben als:

...  ([Temperatur_Wohnzimmer:luminosity:] < 1.00 and [?23:00-10:00]) ...

Gruß

Damian

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

moonsorrox

Zitat von: Brockmann am 28 Januar 2015, 15:03:58
Vielleicht so (ungetestet):

Ok vielen Dank, ich habe das mal so mit Damians Änderung eingebaut und werde es jetzt testen. Is ja gleich soweit das es angehen sollte, also sollte es auch anbleiben und nicht schon wieder ausgehen, denn der luminosity Wert ist schon unter "1"

@Damian
vielen Dank
die zweite Zeit ist gedacht für was..?
Das er sieht das es für den heutigen Tag gilt und über Mitternacht, dann erst morgen wieder..?
Das habe ich nicht verstanden.
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 28 Januar 2015, 17:25:51
Ok vielen Dank, ich habe das mal so mit Damians Änderung eingebaut und werde es jetzt testen. Is ja gleich soweit das es angehen sollte, also sollte es auch anbleiben und nicht schon wieder ausgehen, denn der luminosity Wert ist schon unter "1"

@Damian
vielen Dank
die zweite Zeit ist gedacht für was..?
Das er sieht das es für den heutigen Tag gilt und über Mitternacht, dann erst morgen wieder..?
Das habe ich nicht verstanden.

Es sind Zeitintervalle (es gibt genügend Beispiele zu diesem Thema in der Commandref zu DOIF).

Ein Intervall hat ein Anfang und ein Ende. In diesem Beispiel ist das Zeitintervall von 23:00 Uhr bis 10:00 Uhr wahr in der sonstigen Zeit, also von 10:00 bis 23:00 Uhr ist es nicht wahr.

Gruß

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

moonsorrox

Zitat von: Damian am 28 Januar 2015, 17:57:03
Es sind Zeitintervalle (es gibt genügend Beispiele zu diesem Thema in der Commandref zu DOIF).

Ein Intervall hat ein Anfang und ein Ende. In diesem Beispiel ist das Zeitintervall von 23:00 Uhr bis 10:00 Uhr wahr in der sonstigen Zeit, also von 10:00 bis 23:00 Uhr ist es nicht wahr.
ich lese echt viel in der commandref zu deinem DOIF Modul weil ich es genial finde was man damit alles machen, habe erfolgreich schon mindestens 6 DOIF im Betrieb, aber manchmal ist es nicht so einfach... ;)

OK die Erklärung verstehe ich, dass war auch mein Fehler mit dem Anfang und dem Ende, deshalb habe ich das nicht hinbekommen, ich dachte nicht an Intervall, ich habe an eine feste Zeit gedacht..!! :-\
Danke dir Damian
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 28 Januar 2015, 18:03:40
ich lese echt viel in der commandref zu deinem DOIF Modul weil ich es genial finde was man damit alles machen, habe erfolgreich schon mindestens 6 DOIF im Betrieb, aber manchmal ist es nicht so einfach... ;)

Dann musst du dich dranhalten, im Durchschnitt hat ein DOIF-Nutzer 9 DOIF-Module definiert :)

Gruß

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

dieda

Dann bin ich ja nur Durchschnitt :-[
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

der-Lolo

DOIF ist halt wirklich genial - ich hab nicht gezählt wieviele ich habe, aber vom prinzip her gibt es für jeden Aktor eines. Dann gibt es zwei drei grössere die komplexere Dinge von der HMI aus schalten und z.b. auf zustände der Harmony reagieren.
Ein paar grundsätze muss man beachten - ich habe mir z.b. angewöhnt die DOELSEIFs mit den meisten bedingungen als erste in der DEF stehen zu haben, nach unten hin wirds immer schlanker - es wird ja schliesllich von oben nach unten abgearbeitet. Ausserdem habe ich meist den DOELSE mit einem eintrag in ein readingsHistory belegt damit ich feststellen kann das ein zustand noch nicht abgefangen ist...

Tolles Modul was Du uns hier beschert hast! Dein Dickes Dankeschön von mir dafür!

Rince

ZitatBeim Speichern der cfg datei, oder bei neustart von FHEM verlieren meine DOIF die Uhrzeiten.
Folgendes Notify sollte es auffangen:

Zitat
define ni_GlobalInitialized notify global:INITIALIZED trigger di_Rollo_SetTime

Funktioniert aber nicht :-( bzw. der Befehl
Code: [Auswählen]
trigger di_Rollo_SetTime
alleine funktioniert nicht.

Jemand eine Idee woran das liegen könnte? Ausserdem wird das notify anscheinendn nicht beim speichern der cfg aufgerufen. Hat da jemand eine idee wie ich das abfange?

Trigger dient nicht zum "scharf" stellen, sondern zum auslösen eines Notify.
Und es braucht einen Parameter, der dem Notify vorgespielt werden soll.

Das du nicht in der fhem.cfg rumschreben sollst, sondern über das DEF des Befehls hat dir schon wer nahe gelegt, oder?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

MaJu


Zitat von: RettungsTim am 28 Januar 2015, 15:30:58
Beim Speichern der cfg datei, oder bei neustart von FHEM verlieren meine DOIF die Uhrzeiten.
Auch das "oder" verwirrt mich. Das externe Speichern der fhem.cfg hat auf den laufenden Betrieb keine Auswirkungen, bis FHEM neu gestartet wird.

Wenn DOIFs und auch alles andere über die Weboberfläche erstellt und angepasst werden, können sie unmittelbar danach verwendet werden.

Ich bin der Meinung, aus dem Einsteigerleitfaden sollte man rausnehmen, das man in der Datei selber wildern kann. Das ist nichts für Einsteiger.
Erlebnisreiche Grüße aus Leipzig!

HoTi

Das ich darin selber "rumwilder" ist hier jetzt mal nicht mein Problem. Da ich gerade versuche mich daran zu gewöhnen die CFG nicht mehr von Hand zu bearbeiten haben ich das auch über die DEFs versucht.

Aber nochmal. Wenn FHEM neu gestartet wird. Sind die Zeiten auf Standard gestellt und nicht auf die vorherigen Einstellungen (Diese stehen aber noch im Frontend).

Zum zweiten sind die Zeiten ebenfalls weg wenn ich in der CFG "rumwilder" und dann die CFG speicher.

Zitat von: Rince am 29 Januar 2015, 05:02:06
Trigger dient nicht zum "scharf" stellen, sondern zum auslösen eines Notify.
Und es braucht einen Parameter, der dem Notify vorgespielt werden soll.

Heißt? Wie mach es es richtig das DOIF auzulösen?


*off topic*
Und da mich das nun nervt. Lese ich mir das mit der DB mal durch. Dann komm ich nicht mehr in versuchung und die Versionierung finde ich mehr als interessant, da ich das dann nicht mehr von Hand machen muss.
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

MaJu

Wenn ich nur über die Web-Oberfläche arbeite, drücke ich vorm FHEM-Neustart immer "save config". Dann werden auch die aktuellen Stati gespeichert. Wenn ich das mal vergesse merke ich das meist recht schnell, dass die Fenster-Anzeige nicht unbedingt stimmt ;-)

Das geht natürlich nicht, wenn man die cfg von Hand bearbeitet, denn dann würden die Änderungen ja durch FHEM wieder überschrieben.

Ich bin der Meinung, DB brauchst du nicht.

Das DOIF löst aus, wenn die Bedingung erfüllt ist. Der Aufbau von DOIF ist immer:
(in erster Klammer steht die Prüfung, die erfüllt sein muss) (in der zweiten Klammer steht der Befehl der ausgeführt werden soll wenn die Bedingung in Klammer 1 wahr ist)
DOELSEIF
(wieder erste Klammer mit Bedingung) (und zweite Klammer mit Befehl wenn die Bedingung2 wahr ist)
DOELSEIF
(es können beliebig viele DOELSEIF-Bedingungen angegeben werden) (und jeweils in der zweiten Klammer der Befehl)
DOELSE
(optional gibt es dann DOELSE, das ausgeführt wird wenn keine der IF/DOELSEIF-Bedingungen wahr ist. DOELSE darf natürlich nur eine Klammer haben, es gibt ja keine eigene Prüfung)
Erlebnisreiche Grüße aus Leipzig!