Hauptmenü

neues Modul DOIF

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

Vorheriges Thema - Nächstes Thema

The-Holgi

Zitat von: Puschel74 am 02 November 2014, 15:43:26

Aber es geht eben auch mit DOIF - und damit noch eleganter als mit notify.
Und auserdem hast du vermutlich noch ein zweites zum abschalten  ::)
Das braucht Holgi nicht da er alles in einem DOIF hat - was aber auch wieder in einem notify geht aber nichtmehr so elegant aussieht.


Genau darum ging es mir, hatte es vorher auch mit 2 notify´s laufen.

Gruß Holgi
Raspberry Pi 5

cotecmania

Hallo,

Bin auch DOIF-Neuling und wollte eine Ansage mit WebViewControl realisieren, wenn ich nach Hause komme.
Das soll aber nur tagsüber passieren.

define DI_AnwesenheitJo DOIF ([08:00-22:00] and [Handy_JoS3] eq "present") (set WandTablet ttsSay Hallo Tschoooo.)

Ging ein paar Tage gut, aber als ich mal nach 22:00 Uhr nach Hause kam hörte ich nichts, was ja ok war.
Nur leider wurde ich dann am nächtsen Morgen um 8:00 Uhr mit dem Spruch geweckt.

Hat die Reihenfolge auch was zu sagen ? Muss ich zuerst "present" abfragen und dann mit der Zeit "verunden"?
Oder was mache ich falsch ?

Gruss
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

Damian

Zitat von: cotecmania am 02 November 2014, 20:44:44
Hallo,

Bin auch DOIF-Neuling und wollte eine Ansage mit WebViewControl realisieren, wenn ich nach Hause komme.
Das soll aber nur tagsüber passieren.

define DI_AnwesenheitJo DOIF ([08:00-22:00] and [Handy_JoS3] eq "present") (set WandTablet ttsSay Hallo Tschoooo.)

Ging ein paar Tage gut, aber als ich mal nach 22:00 Uhr nach Hause kam hörte ich nichts, was ja ok war.
Nur leider wurde ich dann am nächtsen Morgen um 8:00 Uhr mit dem Spruch geweckt.

Hat die Reihenfolge auch was zu sagen ? Muss ich zuerst "present" abfragen und dann mit der Zeit "verunden"?
Oder was mache ich falsch ?

Gruss

Bei Zeitintervallen wird am Anfang und am Ende getriggert, bei dir also um 8:00 und 22:00 Uhr. Das ist in den meisten Fällen auch so erwünscht. Wenn du keine Zeit-Triggerung wünschst, dann musst du die $hms-Variable benutzen, hier also:


define DI_AnwesenheitJo DOIF ($hms gt "08:00" and $hms lt "22:00" and [Handy_JoS3] eq "present") (set WandTablet ttsSay Hallo Tschoooo.)

Gruß

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

Brockmann

Hallo Damian,

Zitat von: DamianBei Zeitintervallen wird am Anfang und am Ende getriggert, bei dir also um 8:00 und 22:00 Uhr. Das ist in den meisten Fällen auch so erwünscht. Wenn du keine Zeit-Triggerung wünschst, dann musst du die $hms-Variable benutzen, hier also:

kann sogar sein, dass ich das schonmal vorgeschlagen habe:
Man könnte solche Szenarien (und die kommen gar nicht sooo selten vor, ich habe jedenfalls auch sowas) in DOIF recht elegant erschlagen, wenn es eine Möglichkeit gäbe, Bedingungen als non-trigger zu definieren. Nur mal als Idee:

define DI_AnwesenheitJo DOIF (![08:00-22:00] and [Handy_JoS3] eq "present") (set WandTablet ttsSay Hallo Tschoooo.)

Das ! vor dem [ würde DOIF so interpretieren, dass diese Bedingung zwar geprüft wird, wenn dieser Zweig getriggert wird, aber dass eben keine eigenen Trigger für den Zeitintervall definiert werden.
Dann hätte man genau das gewünschte Verhalten, ohne die intuitive DOIF-Ebene verlassen zu müssen. Funktionell wäre es dasselbe, aber wesentlich benutzerfreundlicher, oder?

Damian

Zitat von: Brockmann am 03 November 2014, 08:36:51
Hallo Damian,

kann sogar sein, dass ich das schonmal vorgeschlagen habe:
Man könnte solche Szenarien (und die kommen gar nicht sooo selten vor, ich habe jedenfalls auch sowas) in DOIF recht elegant erschlagen, wenn es eine Möglichkeit gäbe, Bedingungen als non-trigger zu definieren. Nur mal als Idee:

define DI_AnwesenheitJo DOIF (![08:00-22:00] and [Handy_JoS3] eq "present") (set WandTablet ttsSay Hallo Tschoooo.)

Das ! vor dem [ würde DOIF so interpretieren, dass diese Bedingung zwar geprüft wird, wenn dieser Zweig getriggert wird, aber dass eben keine eigenen Trigger für den Zeitintervall definiert werden.
Dann hätte man genau das gewünschte Verhalten, ohne die intuitive DOIF-Ebene verlassen zu müssen. Funktionell wäre es dasselbe, aber wesentlich benutzerfreundlicher, oder?

Gut dass wir auf das Thema kommen. In meiner Todo-Liste habe ich bereits "kein Trigger" für Readings vor längerer Zeit aufgenommen. Meine erste Idee war auch das Ausrufungszeichen gewesen. Allerdings würde das bei Programmierern "das Gegenteil von" bedeuten und das ist es nicht.
Daher habe ich nach anderen Zeichen gesucht, das sind meine letzten Aufzeichnungen:

-Readings ohne Trigger [NoTrigger:...] oder [#...] oder ['...] oder [^...]

So etwas würde man dann auf Zeiten übertragen.

Gruß

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

Brockmann

Zitat von: Damian am 03 November 2014, 09:39:53
-Readings ohne Trigger [NoTrigger:...] oder [#...] oder ['...] oder [^...]
Ja, das Symbol dafür will gut überlegt sein. Das ! war auch nur eine spontane Idee.

  • [#...] wäre wohl auch suboptimal, weil es in der fhem.cfg Kommentare einleitet.
  • ['...] könnte bei Editoren mit Syntaxhighlighting unangenehme Nebenwirkungen haben, oder?
  • [^...] Dagegen spricht wohl nichts, wobei ich dieses Zeichen wegen der Eingabe immer etwas nervig finde (es erscheint ja erst beim nächste Zeichen mit).
Bleibt sonst aber auch nicht viel übrig, was man auf deutschen wie englischen Tastaturen ohne weiteres tippen kann.

Damian

Zitat von: Brockmann am 03 November 2014, 10:14:10
Ja, das Symbol dafür will gut überlegt sein. Das ! war auch nur eine spontane Idee.

  • [#...] wäre wohl auch suboptimal, weil es in der fhem.cfg Kommentare einleitet.
  • ['...] könnte bei Editoren mit Syntaxhighlighting unangenehme Nebenwirkungen haben, oder?
  • [^...] Dagegen spricht wohl nichts, wobei ich dieses Zeichen wegen der Eingabe immer etwas nervig finde (es erscheint ja erst beim nächste Zeichen mit).
Bleibt sonst aber auch nicht viel übrig, was man auf deutschen wie englischen Tastaturen ohne weiteres tippen kann.

Ja, das sehe ich auch so. Das Dach kann bei regulären Ausdrücken auch eine Verneinung sein, deshalb kam ich drauf, es ist aber ungünstig zum Eingeben. Vielleicht hat jemand noch eine Eingebung. Es will gut überlegt sein, wenn es einmal steht, wird man das ganze "FHEM"-Leben damit konfrontiert.

Gruß

Damian

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

The-Holgi

Zitat von: Damian am 02 November 2014, 13:06:02


define Kugel_Wohn DOIF ([FS20_S8_B] eq "on" or [FS20_S8_B] eq "dimup") (set Wohnzimmer_Kugel on) DOELSE(set Wohnzimmer_Kugel off)

Hm, einen Schönheitsfehler gibt es noch.
Ich lasse die Lampe bei Sonnenuntergang anschalten, wenn ich dann versuche über die Fernbedienung auszuschalten muß man zuerst den on Taster betätigen.
Raspberry Pi 5

Damian

Zitat von: The-Holgi am 04 November 2014, 06:26:37
Hm, einen Schönheitsfehler gibt es noch.
Ich lasse die Lampe bei Sonnenuntergang anschalten, wenn ich dann versuche über die Fernbedienung auszuschalten muß man zuerst den on Taster betätigen.

Dann musst du:

attr Kugel_Wohn do always

setzen.

Die Erklärung kannst du im ersten Beispiel in der Commandref von DOIF nachlesen.

Gruß

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

The-Holgi

Ach ja, natürlich. Danke für den Tipp.
Raspberry Pi 5

satprofi

Hallo. Wieviel DOIF verträgt fhem? Ich habe ca 20 und fhem friert jetzt öfters ein. Heisst , pausiert ca. 10-15 min. Auch über webif nicht erreichbar.

Gesendet von meinem GT-I9300

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

Zitat von: satprofi am 04 November 2014, 10:24:25
Hallo. Wieviel DOIF verträgt fhem? Ich habe ca 20 und fhem friert jetzt öfters ein. Heisst , pausiert ca. 10-15 min. Auch über webif nicht erreichbar.

Gesendet von meinem GT-I9300

Beliebig. Das Stichwort ist sleep. Ich habe dir schon mal etwas zu diesem Problem geschrieben siehe:

http://forum.fhem.de/index.php/topic,27848.msg207674.html#msg207674

Hast du es auch befolgt?

Gruß

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

satprofi

:schäm: nein. Habs übersehen. Aber denn tipp hab ich von hier.ist ja kein perl-sleep

Gesendet von meinem GT-I9300

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

Wobei mein sleep nur vormittags läuft.die freezer aber den ganzen tag

Gesendet von meinem GT-I9300

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

Zitat von: satprofi am 04 November 2014, 12:52:26
Wobei mein sleep nur vormittags läuft.die freezer aber den ganzen tag

Gesendet von meinem GT-I9300

Ich würde die sleeps bei DOIF zunächst alle rausnehmen und ggf. gegen at ersetzen. Was du sonst alles im System definiert hast, kann ich natürlich nicht sagen. Es wird in der nächsten Version von DOIF ein wait geben, welches man statt sleep zwischen den Kommandos einsetzen kann.

Die Sache mit dem sleep-Problem habe ich auch erst später bemerkt, wahrscheinlich liegt es daran, dass ich die FHEM-Kommandos intern einzeln per  fhem ("...") aufrufe, das war in den Anfängen von DOIF mal anders gewesen.

Gruß

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