DOIF neue Features (Sleep-Alternative)

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

Vorheriges Thema - Nächstes Thema

Ellert

@mfeske: Die alte Variante funktioniert, wenn Du das Semikolon hinter den sleep-Befehlen gegen ein Komma austauschst.

Damian

Zitat von: Ellert am 25 August 2015, 09:22:07
@mfeske: Die alte Variante funktioniert, wenn Du das Semikolon hinter den sleep-Befehlen gegen ein Komma austauschst.

Das wäre ungünstig, dann steht das ganze System für die angegebene Zeit. Sleep muss immer ein Semikolon für den folgenden Befehl haben.

Gruß

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

Ellert

@Damian: Danke für den Hinweis, das war mir nicht bewusst. Mit Semikolon klappt die Verzögerung bei mir auch nicht. Jetzt verstehe ich auch die Notwendigkeit der Sleep-Alternative.

@mfeske: In der neuen Variante müsste es ungetestet, im Ausführungsteil so aussehen:
(set gong_MP3 playTone 008, set Rolladen01 on) (set Rolladen01 on, set Rolladen02 on) (set Rolladen02 on)

und das Attribut wait setzen:
attr rolladen_kurz_down_doif wait 0,6,5

mfeske

.. werde ich gleich heute abend testen, danke.
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)

Virsacer

Hey,

beim Start bekomme ich noch diese Meldungen im Log:

2015.08.28 20:48:25 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.08.28 20:48:25 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.08.28 20:48:25 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.

v.i.p.e.r

Hi,

wenn ich ein DoIF wie folgt definiert habe:


([FS20_e4e401:&STATE] eq "on") (set HUEDevice4 pct 100)

Jetzt habe ich das Problem, dass wenn ich meinen FS20 Schalter schaltet in der Readings toggle steht und ich deswegen auf die Internal zugreife wo dank untoggle direkt on oder off steht.  Also :&STATE statt :state. Allerdings scheint es mir so, dass er trotzdem auf den reading Wert zugreift. Denn im DOIF erscheint immer in den Readings des DoIF's: e_FS20_e4e401_state toggle

Kann das ein Bug sein?


Damian

Zitat von: v.i.p.e.r am 28 August 2015, 22:26:12
Hi,

wenn ich ein DoIF wie folgt definiert habe:


([FS20_e4e401:&STATE] eq "on") (set HUEDevice4 pct 100)

Jetzt habe ich das Problem, dass wenn ich meinen FS20 Schalter schaltet in der Readings toggle steht und ich deswegen auf die Internal zugreife wo dank untoggle direkt on oder off steht.  Also :&STATE statt :state. Allerdings scheint es mir so, dass er trotzdem auf den reading Wert zugreift. Denn im DOIF erscheint immer in den Readings des DoIF's: e_FS20_e4e401_state toggle

Kann das ein Bug sein?

Bei &STATE wird intern das Internal benutzt, wenn ein beliebiger Trigger des Devices kommt, insb. auch vom Reading state. Ein Trigger vom Internal STATE ist im Event nicht erkennbar. Bei mir erscheint mit einem Dummy FS auch das Reading e_FS_STATE. Ist vielleicht Device spezifisch.

Gruß

Damian

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

Damian

#127
Zitat von: Virsacer am 28 August 2015, 20:52:57
Hey,

beim Start bekomme ich noch diese Meldungen im Log:

2015.08.28 20:48:25 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.08.28 20:48:25 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.08.28 20:48:25 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.


Sollte mit der neuen Version nur noch kommen, wenn nach der Initilialisierungsphase die entsprechenden Dummys für Zeitintervalle immer noch nicht definiert sind.

Gruß

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

Damian

Zitat von: Ellert am 12 August 2015, 16:25:14
Bei der Verwendung der 98_DOIF.pm von gestern wurde die folgende bereits bestehende zweizeilige Definition nicht ausgeführt:
define VolTV_di DOIF ([osmc] eq "opened")({system "irsend SEND_ONCE receiver d-tv/cbl_alternative"},{system "irsend -#12 SEND_ONCE receiver KEY_VOLUMEUP"},set UE40D7090 connect)\
DOELSEIF ([osmc] eq "disconnected") (set UE40D7090 connect,{system "irsend -#12 SEND_ONCE receiver KEY_VOLUMEDOWN"})


Mit der gleichen einzeilig geschriebenen Definition gibt es keine Fehlermeldung und das DOIF wird korrekt ausgeführt.
define VolTV_di DOIF ([osmc] eq "opened")({system "irsend SEND_ONCE receiver d-tv/cbl_alternative"},{system "irsend -#12 SEND_ONCE receiver KEY_VOLUMEUP"},set UE40D7090 connect) DOELSEIF ([osmc] eq "disconnected") (set UE40D7090 connect,{system "irsend -#12 SEND_ONCE receiver KEY_VOLUMEDOWN"})

Der Fehler lässt sich mit dem Versuch nachstellen, im DEF-Editor die folgende Definition auf zwei Zeilen umzubrechen:
define m_di DOIF ([m] == 1) (set m #a) DOELSEIF ([m] == 2) (set m #b)

Es erscheint dann die Fehlermeldung:
Ich vermute es liegt an der Raute (#),  die evtl. als Kommentar interpretiert wird.

Eine mehrzeile Definition wäre für mich weiterhin wünschenswert, da die Übersichtlichkeit erhöht wird.

Verdoppeln ## oder \# hilft nicht.

Ich würde mich freuen, wenn ich einen Tip bekommen könnte, wie ich die Raute auch in mehrzeiligen Definitionen verwenden kann.

Ich denke, ich werde Kommentare nur mit ## erlauben, in der Hoffnung, dass ## sonst nirgendwo vorkommt.

Gruß

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

Virsacer

Zitat von: Damian am 29 August 2015, 08:01:52
Sollte mit der neuen Version nur noch kommen, wenn nach der Initilialisierungsphase die entsprechenden Dummys für Zeitintervalle immer noch nicht definiert sind.
Und das heißt?
Ich nutze die aktuelle SVN Version und habe alle DOIFs in der fhem.cfg ganz am Ende stehen...
Also sind alle (eigenen) Dummys und referenzierten Devices vorher definiert - muss man für die Zeitintervalle selbst Dummys anlegen, oder wie meinst du das?

Zitat von: Damian am 29 August 2015, 09:52:16
Ich denke, ich werde Kommentare nur mit ## erlauben, in der Hoffnung, dass ## sonst nirgendwo vorkommt.
Was ist mit /* */ ?

Damian

Zitat von: Virsacer am 29 August 2015, 11:01:02
Und das heißt?
Ich nutze die aktuelle SVN Version und habe alle DOIFs in der fhem.cfg ganz am Ende stehen...
Also sind alle (eigenen) Dummys und referenzierten Devices vorher definiert - muss man für die Zeitintervalle selbst Dummys anlegen, oder wie meinst du das?
Was ist mit /* */ ?

Die SVN-Version hat da ja ein Problem, das Problem wurde mit der angehängten Version im ersten Post behoben (ich werde sie bald einchecken).

/* */ wäre eine Alternative, allerdings wird gerade in Perl oft # als Kommentarzeichen zeilenweise benutzt. Hierbei kann man nichts vergessen, weil man nichts schließen muss.

Gruß

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

Ellert

/* */ könnte evtl. als regulärer Ausdruck in verwendet werden.

Damian

Aktuelle Version wurde eingecheckt. Kommentare beginnen mit ##. Aktualisierte Commandref zu neuen Features beachten.

Gruß

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

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FunkOdyssey

Dann werde ich mal vorsichtshalber alle meine Kommentare schnell überarbeiten, damit es morgen beim Update nicht knallt.