Hauptmenü

neues Modul DOIF

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

Vorheriges Thema - Nächstes Thema

Bombjack

Zitatregex lernen ! ;)
( http://www.myregextester.com/ )

Ich bemühe mich ja, danke für den hilfreichen Link!  :)

Damian

Update (Version 1.1)

-kein Abbruch wenn reading nicht vorhanden
-perl-Fehler werden abgefangen und protokolliert
-Mehr Statusinformationen in readings des Moduls (siehe screenshot)

Neue Version aus dem ersten Post laden. Vor dem Einspielen FHEM-stoppen und wieder starten (nicht reload anwenden, da Version nicht abwärtskompatibel).

Gruß

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

Groby

#77
Supi. Werde ich mich gleich an die "Arbeit" machen. Danke...

Update: shutdown restart mit [WetterStation.temperature] diesmal ohne Fehlermeldung - somit ist der bekannte Fehler gefixt!!!

kkoeniger

Danke! Confirmed.  :D
Meine 2 defines haben ein update und shutdown/restart problemlos überstanden. :)
LG,
Karl

Invers

Auch von mir vielen Dank. Funktioniert.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Michael

#80
Moin

Beitrag gelöscht.

Zu erst ging nichts mehr, warum jetzt weis ich nicht.

Vielen Dank für das Modul, es macht vieles einfacher.
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

satprofi

#81
hallo.
voerest danke für dein modul, macht die sache wirklich einfacher.

habe jetzt nur kurze frage zur bearbeitung im webif, muss man bei doelseif oder doelse auf einrückung,zeileinumbruch achten oder wird die bedingung richtig abgespeichert?

habe hier ein funktionierendes DOIF

([Pac:state] > 1700 and [HZ_Schlafzimmer_Weather:state] > 19.5) (set Klima_SZ off) DOELSE (set Klima_SZ on)


das ich abändern will auf

([Klima_WZ:state] eq "on") and ([Pac:state] > 1500 and [HZ_Schlafzimmer_Weather:state] > 19.5) (set Klima_SZ off) DOELSEIF ([Pac:state] > 1700 and [HZ_Schlafzimmer_Weather:state] > 19.5) (set Klima_SZ off) DOELSE (set Klima_SZ on)


wird mir aber mit folgender Fehlermeldung quittiert:

DOIF: no left bracket of commands: and ([Pac:state] > 1500 and [HZ_Schlafzimmer_Weather:state] > 19.5) (set Klima_SZ off) DOELSEIF ([Pac:state] > 1700 and [HZ_Schlafzimmer_Weather:state] > 19.5) (set Klima_SZ off) DOELSE (set Klima_SZ on)

ich wollte , wenn die Klima im WZ nicht läuft den Wert Pac auf 1500 regeln/abfragen.
wo ist da der fehler?

[edit] fehler vielleicht gefunden.

so muss es sein

([Klima_WZ] eq "on" and [Pac] > 1500 and [HZ_Schlafzimmer_Weather] > 19.5) (set Klima_SZ off) DOELSEIF ([Pac] > 1700 and [HZ_Schlafzimmer_Weather] > 19.5) (set Klima_SZ off) DOELSE (set Klima_SZ on)
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Groby

Hallo Damian,

ich bekomme mit v1.1 folgende Fehlermeldungen:

2014.06.30 16:52:02.289 1: readingsUpdate(DI_RolloBuero,last_error,no error) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.288 1: readingsUpdate(DI_RolloBuero,last_cmd_event,RolloBueroT) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.287 1: readingsUpdate(DI_RolloBuero,last_cmd,2) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.286 1: readingsUpdate(DI_RolloBuero,state,Sun2) missed to call readingsBeginUpdate first.


Dabei fällt mir auf, dass "DI_RolloBuero,state,Sun2" eigentlich "DI_RolloBuero,state,sun2" heissen müsste...

MfGroby

Damian

Zitat von: Groby am 30 Juni 2014, 17:08:55
Hallo Damian,

ich bekomme mit v1.1 folgende Fehlermeldungen:

2014.06.30 16:52:02.289 1: readingsUpdate(DI_RolloBuero,last_error,no error) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.288 1: readingsUpdate(DI_RolloBuero,last_cmd_event,RolloBueroT) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.287 1: readingsUpdate(DI_RolloBuero,last_cmd,2) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.286 1: readingsUpdate(DI_RolloBuero,state,Sun2) missed to call readingsBeginUpdate first.


Dabei fällt mir auf, dass "DI_RolloBuero,state,Sun2" eigentlich "DI_RolloBuero,state,sun2" heissen müsste...

MfGroby

Wie sieht bei dir die dazugehörige Definition von DI_RolloBuero aus?

Gruß

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

Groby


$hms ge [Slider_RolloBuero_sun] and $hms le [Slider_RolloBuero_sunset] and [RolloBueroT] eq"on" and [WetterStation:brightness]>=[LX_RolloBuero:lx] and [Buegeln] eq"off") (set RolloBueroT sun,{Log 1, "Triggering DI_RolloSun: sun ".ReadingsVal("WetterStation","brightness","")."(90/72)"}) DOELSEIF

($hms ge [Slider_RolloBuero_sun2] and $hms le [Slider_RolloBuero_sunset] and [RolloBueroT] eq"sun" and [Buegeln] eq"off") (set RolloBueroT sun2,{Log 1, "Triggering DI_RolloSun: sun2 ".ReadingsVal("WetterStation","brightness","")."(90/72)"}) DOELSEIF

($hms ge [Slider_RolloBuero_sun] and $hms le [Slider_RolloBuero_sunset] and [RolloBueroT] ne"on" and [WetterStation:brightness]<=[LX_RolloBuero:lx]/10*8  and [Buegeln] eq"off") (set RolloBueroT on,{Log 1, "Triggering DI_RolloSun: on ".ReadingsVal("WetterStation","brightness","")."(90/72)"}) DOELSEIF

(($hms gt [Slider_RolloBuero_sunset] or [Buegeln] eq"on") and [RolloBueroT] ne"on") (set RolloBueroT on,{Log 1, "Triggering DI_RolloSun: on ".ReadingsVal("WetterStation","brightness","")."(90/72)"}) DOELSE

({Log 1, "Triggering DI_RolloSun: ".ReadingsVal("WetterStation","brightness","")."(90/72)"})


ich habe auch noch ein Problem mit Bedingung #2 entdeckt, die nicht abgearbeitet wird wenn ich DOIF update und Bedingung #1 bereits erfüllt ist. In meinem Fall wenn RolloBueroT state schon "sun" hat, wurde sun2 nicht mehr ausgeführt. Starte ich allerdings von RolloBueroT "on" läufts wie geschmiert. -> Das wäre kritisch für den Fall das zwischen den einzelnen Bedingungen fhem neu startet oder die "def" verändert wird...

Ich hab da ber noch keinen roten Faden und werde das in einem weiteren "Feldversuch" testen...


Damian

Zitat von: Groby am 30 Juni 2014, 17:08:55
Hallo Damian,

ich bekomme mit v1.1 folgende Fehlermeldungen:

2014.06.30 16:52:02.289 1: readingsUpdate(DI_RolloBuero,last_error,no error) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.288 1: readingsUpdate(DI_RolloBuero,last_cmd_event,RolloBueroT) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.287 1: readingsUpdate(DI_RolloBuero,last_cmd,2) missed to call readingsBeginUpdate first.
2014.06.30 16:52:02.286 1: readingsUpdate(DI_RolloBuero,state,Sun2) missed to call readingsBeginUpdate first.


Sollte nicht mehr kommen: Version 1.2 im ersten Post.

Gruß

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

sentinel1

Hallo Damian,

ich habe eine Frage zu einer def.

define eingang_auto DOIF ([00:30] and [keymatic_eingangstuer] eq "unlocked" and &we) (set keymatic_eingangstuer lock)

warum steht bei next_timer=02.07.2014 00:30:00 ,ich möchte die Tür am Wochenende um 00:30 abschließen?

Gruß
Claudiu

Damian

Zitat von: sentinel1 am 01 Juli 2014, 02:22:34
Hallo Damian,

ich habe eine Frage zu einer def.

define eingang_auto DOIF ([00:30] and [keymatic_eingangstuer] eq "unlocked" and &we) (set keymatic_eingangstuer lock)

warum steht bei next_timer=02.07.2014 00:30:00 ,ich möchte die Tür am Wochenende um 00:30 abschließen?

Gruß
Claudiu

Zeitangaben werden immer täglich ausgeführt. Diese sind dann aber in Kombination mit anderen Bedingungen (z. B. $we) wahr oder eben nicht.

Es muss aber heißen $we und nicht &we - es ist eine Variable, genauso wie $hms für Zeitabfragen.

Gruß

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

Jens_B

Vielleicht solltest Du statt &we  mal so wie im Beispiel angegeben $we benutzen, so heißt die Variable nämlich.

Edit: ich sehe gerad Damian war schneller...

Gesendet von meinem iPhone mit Tapatalk
RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

Groby

Damian,

ich habe folgendes DI definiert:


($hms ge "06:00" and $hms le "08:15" and [Message] eq"0") (set Message 1) DOELSEIF
($hms ge "07:15" and $hms le "08:15" and [Message] eq"1") (set Message 2) DOELSEIF
($hms gt "08:15" and [Message] eq"2") (set Message 0)


Wenn cmd1 ausgeführt wurde also Message=1 und ich gebe set Message 0 über die cmd line aus, wird cmd1 nicht ausgeführt.

Ähnliches gilt wenn ich bei Message=2 set Message 0 eingebe, dann bleibt DI bei cmd1 stehen.

Müsste DI nicht nach ausführen von "set Message 1" sich selbst nocheinmal aufrufen und direkt "set Message 2" ausführen oder habe ich hier einen Denkfehler?

MfGroby