Hauptmenü

neues Modul DOIF

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

Vorheriges Thema - Nächstes Thema

Bombjack

Nein, das ist ja das seltsame. Das Rollo ist einige Minuten nach dem define (vermutlich als Yahoo Wetter aktualisiert wurde) auf 20% gefahren,  Status war cmd_1.

Damian

Zitat von: Bombjack am 28 Juni 2014, 22:08:59
Nein, das ist ja das seltsame. Das Rollo ist einige Minuten nach dem define (vermutlich als Yahoo Wetter aktualisiert wurde) auf 20% gefahren,  Status war cmd_1.

Und steht immer noch auf cmd_1?

Wie oft kommen die Events?

Wichtig zu wissen ist, dass deine zweite definierte Bedingung nur ausgelöst wird, wenn auch myTwilight ein Event auslöst.

Gruß

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

Bombjack

Da es sich um unser Schlafzimmmer Rollo handelt, habe ich das DOIF jetzt erstmal wieder rausnehmen müssen. Sonst gibt´s gleich Ärger mit meiner Frau ;) Ich probier das morgen nochmal und gebe dann Feedback.

Ich fange ja gerade erst an mit FHEM und PERL, ist der DOIF Ausdruck für das beschriebene Ziel denn grundsätzlich in Ordnung? Das die zweite Bedingung nur bei einem Twilight Event auslöst, ist schon okay denke ich. Das Rollo soll ja einfach nur wieder hoch wenn die Sonne im Westen steht und nicht unten stehen bleiben.

Damian

Zitat von: Bombjack am 28 Juni 2014, 22:26:45
Da es sich um unser Schlafzimmmer Rollo handelt, habe ich das DOIF jetzt erstmal wieder rausnehmen müssen. Sonst gibt´s gleich Ärger mit meiner Frau ;) Ich probier das morgen nochmal und gebe dann Feedback.

Ich fange ja gerade erst an mit FHEM und PERL, ist der DOIF Ausdruck für das beschriebene Ziel denn grundsätzlich in Ordnung? Das die zweite Bedingung nur bei einem Twilight Event auslöst, ist schon okay denke ich. Das Rollo soll ja einfach nur wieder hoch wenn die Sonne im Westen steht und nicht unten stehen bleiben.

Das sollte für die Problemstellung kein Problem sein. Nach deiner Definition kann der Rolladen nicht unten sein, weil nach deiner Aussage z. Zt. compasspoint gleich  "west-northwest" und nicht gleich "west" ist und für den DOELSE-Fall hast du nichts definiert.

Testen kannst du übrigens immer zuerst an Aktoren (Dummys oder Lampen), die mit deiner Frau nicht kollidieren :)
 
Gruß

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

Bombjack

ZitatDas sollte für die Problemstellung kein Problem sein. Nach deiner Definition kann der Rolladen nicht unten sein, weil nach deiner Aussage z. Zt. compasspoint gleich  "west-northwest" und nicht gleich "west" ist und für den DOELSE-Fall hast du nichts definiert.

Genau das war ja der Anlass für meinen Post, lt. Log ist das Rollo um 21:10 einige Minuten nach der DOIF Definition auf 20% gefahren und der Status war anschließend cmd_1.

2014.06.28 21:10:58 3: CUL_HM set sz_Jalousie 20

ZitatTesten kannst du übrigens immer zuerst an Aktoren (Dummys oder Lampen), die mit deiner Frau nicht kollidieren :)

Leider ist mein Setup noch sehr überschaubar und besteht gerade mal aus dem einen Rollo Aktor und einem Temperatursensor, wie gesagt ich übe noch. Die Großbestellung wird erst ausgelöst wenn das Minimalsetup zufriedenstellend läuft  :) Das mit dem Dummy klingt gut, wenn ich jetzt noch wüsste wie ich einen anlege...ich werde mich dazu mal einlesen. Kann ich das DOIF Modul irgendwie dazu bewegen einige Statusmeldungen auszugeben, insbesondere welche Readings verarbeitet werden wenn ein Event feuert?

Damian

Zitat von: Bombjack am 28 Juni 2014, 23:04:39
Kann ich das DOIF Modul irgendwie dazu bewegen einige Statusmeldungen auszugeben, insbesondere welche Readings verarbeitet werden wenn ein Event feuert?

kommt beim nächsten größeren Update :)

Gruß

Damian

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

Bombjack

Zitatkommt beim nächsten größeren Update :)

Klingt gut  :)

Also, das mit dem Dummy habe ich hinbekommen. Gleiches Problem wie vorher: Nach dem ersten Twilight Event ist der DOIF Status cmd_1, wie kann denn das sein bei den Bedingungen?

Internals
CFGFN
DEF
([MeinWetter:temp_c] > 20 and [myTwilight:compasspoint] =~ m/south/i and ([MeinWetter:condition] eq "sonnig" or [MeinWetter:condition] eq "heiter" or [MeinWetter:condition] =~ m/klar or [MeinWetter:condition] eq "teilweise wolkig")) (set DI_dummy 20) DOELSEIF ([myTwilight:compasspoint] eq "west") (set DI_dummy on)
NAME
DI_set_dummy
NR
99
NTFY_ORDER
50-DI_set_dummy
STATE
cmd_1
TYPE
DOIF
Readings
state
cmd_1
2014-06-28 23:18:47

Damian

Zitat von: Bombjack am 28 Juni 2014, 23:26:09
Klingt gut  :)

Also, das mit dem Dummy habe ich hinbekommen. Gleiches Problem wie vorher: Nach dem ersten Twilight Event ist der DOIF Status cmd_1, wie kann denn das sein bei den Bedingungen?

Internals
CFGFN
DEF
([MeinWetter:temp_c] > 20 and [myTwilight:compasspoint] =~ m/south/i and ([MeinWetter:condition] eq "sonnig" or [MeinWetter:condition] eq "heiter" or [MeinWetter:condition] =~ m/klar or [MeinWetter:condition] eq "teilweise wolkig")) (set DI_dummy 20) DOELSEIF ([myTwilight:compasspoint] eq "west") (set DI_dummy on)
NAME
DI_set_dummy
NR
99
NTFY_ORDER
50-DI_set_dummy
STATE
cmd_1
TYPE
DOIF
Readings
state
cmd_1
2014-06-28 23:18:47


z. Zt. fehlen mir die Analysemöglichkeiten. Du kannst die erste Bedingung bis auf eine oder zwei Abfragen reduzieren und testen und dann immer weiter ausbauen, bis du ein Fehlverhalten feststellst, dann hast du die Fehlerquelle lokalisiert.

Gruß

Damian


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

Bombjack

#68
ZitatDu kannst die erste Bedingung bis auf eine oder zwei Abfragen reduzieren und testen und dann immer weiter ausbauen, bis du ein Fehlverhalten feststellst, dann hast du die Fehlerquelle lokalisiert.

Ohne den MeinWetter:condition Block ist das Ergebnis wie erwartet cmd_3, ein DOIF nur mit dem MeinWetter:condition Block ergibt ebenfalls cmd_3. Sobald ich jedoch die Bedingungsblöcke kombiniere, kommt wieder cmd_1 dabei raus, auch wenn ich das umstelle (MeinWetter:condition Block nach vorne)...ich bin ratlos  :( Kann es sein dass Dein Modul mit den geschachtelten Klammern nicht klar kommt?

herrmannj

Hi

dort
..[MeinWetter:condition] =~ m/klar or.. scheint die regex falsch

vg
jörg

Bombjack

hmm nachdem ich diesen Teil herausgenommen habe, ist der State tatsächlich auf cmd_3 gesprungen. Ich wollte damit "klar" und "überwiegend klar" abfangen, was stimmt denn mit dem Ausdruck nicht? Und warum wird dadurch der gesamte cmd_1 Block wahr?

Damian

Zitat von: Bombjack am 29 Juni 2014, 01:57:07
Und warum wird dadurch der gesamte cmd_1 Block wahr?

Ganz einfach, weil die Perl-Fehlermeldung noch nicht sauber abgefangen wurde. Wird demnächst im Log erscheinen und es wird dann logischerweise nicht geschaltet.

Gruß

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

AndyOne

Hallo Damien,

ich habe auch ein Problem die DOIF Schaltung Rebootsicher zu bekommen. Ich sehe den Eintrag für meinen SonnenschutzAuto in der fhem.cfg wenn ich "Save Config" mache, aber beim Laden gibt es dann doch Fehler und es wird nicht geladen. Gestern hatten wir einen Stromausfall, ich poste mal das Logfile nach dem wir wieder Strom hatten. Den DOIF Befehl musste ich heute aus einer externen Sicherung wieder in die Befehlszeile schreiben.

VG Andy

Zitat2014.06.28 23:28:22 1: Including fhem.cfg
2014.06.28 23:28:22 3: telnetPort: port 7072 opened
2014.06.28 23:28:25 3: WEB: port 8083 opened
2014.06.28 23:28:25 3: WEBphone: port 8084 opened
2014.06.28 23:28:25 3: WEBtablet: port 8085 opened
2014.06.28 23:28:25 2: eventTypes: loaded 199 events from ./log/eventTypes.txt
2014.06.28 23:28:26 3: Opening CUL_0 device /dev/ttyACM0
2014.06.28 23:28:27 3: Setting CUL_0 baudrate to 38400
2014.06.28 23:28:27 3: CUL_0 device opened
2014.06.28 23:28:27 3: CUL_0: Possible commands: BCFiAZEGMKURTVWXefmltux
2014.06.28 23:28:27 2: Switched CUL_0 rfmode to HomeMatic
2014.06.28 23:28:35 1: define SonnenschutzAuto SonnenschutzAuto DOIF ([Aussen_Temp:temperature]> 25 and $hms gt "12:00" and $hms lt "17:45") (set WZ_RL_West_links 14%, set WZ_RL_West_mitte 15%,set WZ_RL_West_rechts 15%) DOELSEIF (([Aussen_Temp:temperature]< 24 and $hms gt "12:00" and $hms lt "17:45") or ($hms lt "12:00" or $hms gt "17:45")) (set WZ_RL_West_links on, set WZ_RL_West_mitte on,set WZ_RL_West_rechts on): SonnenschutzAuto DOIF: unknown reading: Aussen_Temp:temperature
2014.06.28 23:28:35 3: Please define SonnenschutzAuto first
2014.06.28 23:28:35 1: Including ./log/fhem.save
2014.06.28 23:28:36 1: configfile: SonnenschutzAuto DOIF: unknown reading: Aussen_Temp:temperature
Please define SonnenschutzAuto first
statefile: Please define SonnenschutzAuto first
Please define SonnenschutzAuto first
2014.06.28 23:28:36 1: usb create starting
2014.06.28 23:28:37 1: usb create end
2014.06.28 23:28:37 2: Error messages while initializing FHEM: configfile: SonnenschutzAuto DOIF: unknown reading: Aussen_Temp:temperature Please define SonnenschutzAuto first statefile: Please define SonnenschutzAuto first Please define SonnenschutzAuto first
2014.06.28 23:28:37 0: Server started with 97 defined entities (version $Id: fhem.pl 6080 2014-06-07 16:12:09Z rudolfkoenig $, os linux, user fhem, pid 2039)
2014.06.28 23:28:39 3: Device Aussen_Temp added to ActionDetector with 000:10 time

Damian

Zitat von: AndyOne am 29 Juni 2014, 08:46:00
Hallo Damien,

ich habe auch ein Problem die DOIF Schaltung Rebootsicher zu bekommen. Ich sehe den Eintrag für meinen SonnenschutzAuto in der fhem.cfg wenn ich "Save Config" mache, aber beim Laden gibt es dann doch Fehler und es wird nicht geladen. Gestern hatten wir einen Stromausfall, ich poste mal das Logfile nach dem wir wieder Strom hatten. Den DOIF Befehl musste ich heute aus einer externen Sicherung wieder in die Befehlszeile schreiben.

VG Andy

Reading noch nicht da - Problem bekannt. Ist bereits behoben, kommt wahrscheinlich heute noch als Update.

Gruß

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

herrmannj

Zitat von: Bombjack am 29 Juni 2014, 01:57:07
Ich wollte damit "klar" und "überwiegend klar" abfangen,
regex lernen ! ;)
( http://www.myregextester.com/ )

enthält "klar":
=~/.*klar.*/
(trifft auch "deklaration)

enthält "klar" als einzelnes Wort:
=~/.*\bklar\b.*/

endet mit "klar":
=~/.*klar$/

ZitatUnd warum wird dadurch der gesamte cmd_1 Block wahr?
keene Ahnung, aber ich denke: "input kaputt" (Bedingungen) -> Ergebnis kaputt  8)

vg
Jörg