Hauptmenü

neues Modul DOIF

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

Vorheriges Thema - Nächstes Thema

chris1284

Moin, kann das Modul grundsätzlich mit solch einem Code abreiten?

DEF
([.*._hz_Clima:measured-temp] < 30) (set %DEVICE controlManu 16)


leider triggert es bei mir so nicht.
Ich möchte ein doif für alle Thermostate mit ähnlichem Namen ([**]_hz_Clima) verwenden und entsprechend im "do" teil das device steuern.

Damian

#661
Zitat von: chris1284 am 06 November 2014, 21:09:27
Moin, kann das Modul grundsätzlich mit solch einem Code abreiten?

DEF
([.*._hz_Clima:measured-temp] < 30) (set %DEVICE controlManu 16)


leider triggert es bei mir so nicht.
Ich möchte ein doif für alle Thermostate mit ähnlichem Namen ([**]_hz_Clima) verwenden und entsprechend im "do" teil das device steuern.

Reguläre Ausdrücke stellvertretend für den Namen eines Devices gibt es bei DOIF nicht, ebenso gibt es kein %DEVICE. Beides wird es bei DOIF voraussichtlich auch nie geben, da es intern eine direkte Abbildung auf Perl-Syntax ist. In Perl kann man genauso wenig z. B. a* < 30 abfragen.

So etwas lässt sich aber über eine structure in Verbindung mit DOIF realisieren. Zumindest bei on/off-Abfragen. Bei größer/kleiner-Vergleichen, dann eher nicht.


Gruß

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

der-Lolo

Zitat von: Damian am 06 November 2014, 15:08:58
Könnte ohne zusätzliche Timer so funktionieren :

define di_sono DOIF ([pl_soBad] eq "on")
(
IF ([pr_soBad] eq "present")
   (set Events add Bad Player erkannt)
ELSE
   (set pl_soBad off, define at_pl_soBad at +00:00:10 set pl_soBad on)
)
attr di_sono wait 120
attr di_sono do always


Gruß

Damian

Danke Dir Damian, das funktioniert wie erwartet.
Ich habe nun noch ein zusätzliches DOIF hinzugefügt um dem Presence Device zum richtigen Zeitpunkt ein disable 0 oder 1 geben zu können.

ZitatInternals:
   DEF        ([pl_soBad] eq "on") (
IF ([pr_soBad] eq "present")
   (set Events add Bad Player erkannt,attr pr_soBad disable 1)
ELSE
   (set pl_soBad off,set Events add Versuche den Player neu zu starten.., define at_pl_soBad at +00:00:05 set pl_soBad on)
)
   NAME       do_soBad

Internals:
   DEF        ([pl_soBad] eq "on") (set Events add Sonos Lautsprecher im Bad angeschaltet...,attr pr_soBad disable 0)
DOELSEIF ([pl_soBad] eq "off") (set Events add Sonos Bad ausgeschaltet...,attr pr_soBad disable 1)
   NAME       do_pl_soBad

Falls Du eine bessere Idee hast, geb bescheid.

DANKE!

Damian

Zitat von: der-Lolo am 06 November 2014, 23:47:20
Danke Dir Damian, das funktioniert wie erwartet.
Ich habe nun noch ein zusätzliches DOIF hinzugefügt um dem Presence Device zum richtigen Zeitpunkt ein disable 0 oder 1 geben zu können.

Falls Du eine bessere Idee hast, geb bescheid.

DANKE!

Kannst du so lassen. Mit der nächsten Version von DOIF wirst du das mit einem DOIF-Modul realisieren können.

Gruß

Damian

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

Spartacus

Guten morgen,
Ich habe immer noch ein Problem mit der Logik von DOIF.

Folgendes ist implementiert:
define GartenBeleuchtung DOIF (\
([17:00-22:30|56] or\
[17:00-22:30] and  [Feiertag:tomorrow] ne "none" or\
[17:00-21:00|01234] and [Feiertag:tomorrow] eq "none" or\
[17:00-02:00] and [Feiertag:state] eq "Silverster" \
) and [myTwilight:twilight_weather] <30) (set EnO_switch_FF94C082 on) DOELSE (set EnO_switch_FF94C082 off)
attr GartenBeleuchtung cmdState on|off
attr GartenBeleuchtung room Gartenlicht
attr GartenBeleuchtung wait 900:900


Fhem stürzt von Zeit zu Zeit einfach ab, bzw. ist ais irgendwelchen Gründen so start ausgelastet, dass nur noch ein Kill -9 hilft um es zu beenden (das liegt m.E. an der Verwendung vom Sonos Modul, das muss irgendwann mal auf einen separaten rpi).

Normalerweise geht das Gartenlicht irgendwann zwischen 17:00 und twilight_weather an. Wenn ich nun merke, dass sich hier nichts tut, ist fhem mal wieder abgestürzt. Wenn ich fhem nun neu starte, sollte eigentlich das DOIF greifen und die Gartenbeleuchtung direkt einschalten wenn die Bedingungen (ist nach 17:00 und twilight weather) erfüllt sind. Das passiert aber nicht! Anders ist es, wenn ich ein normales define at *17:00 nehme. Dann wird nach dem Neustart direkt geschaltet, wenn die Zeit von 17:00 erreicht ist.

Ist das "normal" mit dem DOIF oder kann man das abfangen?

Gruß,
Christian.
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Damian

#665
Zitat von: Spartacus am 07 November 2014, 08:33:29
Guten morgen,
Ich habe immer noch ein Problem mit der Logik von DOIF.

Folgendes ist implementiert:
define GartenBeleuchtung DOIF (\
([17:00-22:30|56] or\
[17:00-22:30] and  [Feiertag:tomorrow] ne "none" or\
[17:00-21:00|01234] and [Feiertag:tomorrow] eq "none" or\
[17:00-02:00] and [Feiertag:state] eq "Silverster" \
) and [myTwilight:twilight_weather] <30) (set EnO_switch_FF94C082 on) DOELSE (set EnO_switch_FF94C082 off)
attr GartenBeleuchtung cmdState on|off
attr GartenBeleuchtung room Gartenlicht
attr GartenBeleuchtung wait 900:900


Fhem stürzt von Zeit zu Zeit einfach ab, bzw. ist ais irgendwelchen Gründen so start ausgelastet, dass nur noch ein Kill -9 hilft um es zu beenden (das liegt m.E. an der Verwendung vom Sonos Modul, das muss irgendwann mal auf einen separaten rpi).

Normalerweise geht das Gartenlicht irgendwann zwischen 17:00 und twilight_weather an. Wenn ich nun merke, dass sich hier nichts tut, ist fhem mal wieder abgestürzt. Wenn ich fhem nun neu starte, sollte eigentlich das DOIF greifen und die Gartenbeleuchtung direkt einschalten wenn die Bedingungen (ist nach 17:00 und twilight weather) erfüllt sind. Das passiert aber nicht! Anders ist es, wenn ich ein normales define at *17:00 nehme. Dann wird nach dem Neustart direkt geschaltet, wenn die Zeit von 17:00 erreicht ist.

Ist das "normal" mit dem DOIF oder kann man das abfangen?

Gruß,
Christian.
Ja. In der ersten Version von DOIF wurde nach dem Neustart immer geschaltet - der letzte Zustand war egal. Das hatte den Nachteil, dass immer etwas ausgeführt wurde, obwohl es vor Herunterfahren des System bereits geschaltet wurde. Z. B. bei "Waschmaschine fertig" - das kann man hier im Thread irgendwo nachlesen. Nun wird der letzte Zustand des Moduls ausgewertet. Wenn das System abstürzt, dann wurde nichts gespeichert und damit stimmt der tatsächliche Zustand mit dem zuletzt gesetzten nicht überein. Das ist mir auch als negativ schon aufgefallen. Ich werde in der nächsten Version ein Attribut einführen, mit dem man festlegen kann, ob das Modul nach dem Neustart neu initialisiert werden soll - so wie in der ersten Version.

Gruß

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

igami


([17:00-22:30|56] or\
[17:00-22:30] and  [Feiertag:tomorrow] ne "none" or\
[17:00-21:00|01234] and [Feiertag:tomorrow] eq "none" or\
[17:00-02:00] and [Feiertag:state] eq "Silverster" \
)

da fehlen ganz bestimmt ein paar klammern, sonst passiert das ganze nie, da auf Silvester Neujahr folgt und nach Silvester aber kein Feiertag sein darf.
Überleg doch noch mal wann du genau schalten möchtest 5 ist Freitag 6 ist Samstag 0 ist Sonntag.

Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Damian

Zitat von: igami am 07 November 2014, 09:01:47

([17:00-22:30|56] or\
[17:00-22:30] and  [Feiertag:tomorrow] ne "none" or\
[17:00-21:00|01234] and [Feiertag:tomorrow] eq "none" or\
[17:00-02:00] and [Feiertag:state] eq "Silverster" \
)

da fehlen ganz bestimmt ein paar klammern, sonst passiert das ganze nie, da auf Silvester Neujahr folgt und nach Silvester aber kein Feiertag sein darf.
Überleg doch noch mal wann du genau schalten möchtest 5 ist Freitag 6 ist Samstag 0 ist Sonntag.

Grüße
Igami
Ich sehe keine Fehler, auch keine fehlenden Klammern. Man sollte natürlich die Reihenfolge der Operatoren kennen.

Gruß

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

igami

Wieder was gelernt, ich dachte bisher immer, dass ich sowas klammern muss wenn ich
(Bedingung1 or (Bedingung 2 and Bedingung3))
abfragen will.

Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

dancatt

and kommt vor or. wie punkt vor strich.
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

satprofi

HAllo.
Ich klink mich kurz ein, wie fragt man mit DOIF mytwilight:ss ab?
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 07 November 2014, 14:21:15
HAllo.
Ich klink mich kurz ein, wie fragt man mit DOIF mytwilight:ss ab?


kommt drauf an was du vorhast:

hier z. B. als Timer:

... DOIF ([{ReadingsVal("mytwilight","ss","")}])(set ...)


Gruß

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

satprofi

einfach schalten bei ereignis. mit notify klappts ja, wollte es mit DOIF mal austesten.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Puschel74

Und ein Beispiel aus der commandref anpassen ist zu schwer  ???
Ach so, hab ich doch galtt vergessen - seinen Wunsch hier posten und Damian wird dann schon den passenden Code dazu liefern.
Dann kannst du nur hoffen das Damian immer erreichbar ist.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

satprofi

Hallo.
Leider finde ich in der Commandref von DOIF kein Beispiel darüber.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram