Autor Thema: komplexes Szenario - DOIF oder at/notify/watchdog  (Gelesen 1485 mal)

Offline Wuppi68

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2161
  • On the Highway to Shell
komplexes Szenario - DOIF oder at/notify/watchdog
« am: 14 Februar 2017, 12:07:40 »
Hallo Zusammen,

in Anlehnung an den Fread https://forum.fhem.de/index.php/topic,66830.0.html habe ich folgendes Szenario - welches mit Sicherheit auch andere haben ...

selber umgesetzt habe ich es noch nicht 8-) nur in Teilen

Was wäre der wahrscheinlich wartbarste/effizienteste/lesbare Ansatz dazu?

Verwendete Elemente
Rollade Fenster
Rollade Terassentür mit Statusmeldung (gekippt/offen/geschlossen)
Rauchmelder
Temperatur innen/aussen
Helligkeit innen/aussen
Harmony mit 8 Aktivitäten´
Licht

Was ich möchte
wenn Harmony = DVD|XBOX|BlueRay  wenn zu Hell, dann Licht aus und ggls. Rolladen auf Beschattung
Beschattung wenn es draußen zu hell und zu warm ist
Rolläden nach Zeit (Sonnenstand) rauf/runter fahren
Bei Rauchalarm --> Licht für 10 Minuten blinken und Rollade Terasse halb geöffnet (Fluchtmöglichkeit)
Wenn Terassentür gekippt, dann Rollade nur in "Lüftungsstellung"
Wenn Terassentür geöffnet Rollade hoch auf "Habachtstellung" bzw. wenn die runter gehen soll und Tür offen ist auch "Habachtstellung"

DOIF ?
AT/NOTIFY ?

Oder ein Kombination aus beiden?
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2681
  • RTFM
    • commandref
Antw:komplexes Szenario - DOIF oder at/notify/watchdog
« Antwort #1 am: 14 Februar 2017, 13:59:30 »
Ich komme da noch nicht so ganz mit. Und fasse zusammen:
- Bei Harmony möchtest du abdunkeln.
- Wenn es zu hell und/oder zu warm ist möchtest du abdunkeln
- Nachts sollen die Rolladen unten sein
- Bei Rauchalarm soll die Rollade halb geöffnet sein

Egal von wem die Rolladen gefahren werden sollen diese nur ...
- in Lüftungsstellung gehen, wenn die Terassentür gekippt ist
- in "Habachtstellung" gehen, wenn die Terassentür offen ist (wird die tür geschlossen soll der eigentiche Zustand hergestellt werden?)

Wenn die Terassentür geöffnet wird soll die Rollade in "Habachtstellung" gebracht werden
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im August 2019.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, WeekdayTimer
ToDo: adb, FluxLED

Offline Jorge3711

  • Full Member
  • ***
  • Beiträge: 283
Antw:komplexes Szenario - DOIF oder at/notify/watchdog
« Antwort #2 am: 14 Februar 2017, 16:07:24 »

Was ich möchte
wenn Harmony = DVD|XBOX|BlueRay  wenn zu Hell, dann Licht aus und ggls. Rolladen auf Beschattung
Beschattung wenn es draußen zu hell und zu warm ist
Rolläden nach Zeit (Sonnenstand) rauf/runter fahren
Bei Rauchalarm --> Licht für 10 Minuten blinken und Rollade Terasse halb geöffnet (Fluchtmöglichkeit)
Wenn Terassentür gekippt, dann Rollade nur in "Lüftungsstellung"
Wenn Terassentür geöffnet Rollade hoch auf "Habachtstellung" bzw. wenn die runter gehen soll und Tür offen ist auch "Habachtstellung"

DOIF ?
AT/NOTIFY ?

Oder ein Kombination aus beiden?

Wenn Du daraus die Eierlegendewollmilchsauautomation erstellen willst  (z.B. all das in ein DOIF) wird das wohl sehr unübersichtlich, oder ein Fall für Perl in myUtils. Ich für mich arbeite mit DOIFs, welche ich grob in Geräteklassen eingeteilt habe (Licht, Rollladen, usw.). D.h., ich habe ein DOIF für meine Rollladensteuerung, eines für meine Außenbeleuchtung, eines für meine Lichtsteuerung im Wohnzimmer, usw.

Für mich ist das sehr Übersichtlich und gut wartbar. Ob man nun mit einem Konglomerat aus at/notify oder mehreren DOIFs glücklich wird, muss jeder für sich entscheiden.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8527
  • eigentlich eher user wie "developer"
Antw:komplexes Szenario - DOIF oder at/notify/watchdog
« Antwort #3 am: 14 Februar 2017, 20:57:58 »
Wie von igami schon angemerkt, sind die Rahmenbedingungen nicht so ganz klar.

Nachfolgend aber mal, wie ich das mit den Jalousien der Terrassentüren - kein dauerhaftes vollständiges Schließen bei geöffneter Tür - bei mir gelöst habe:
CFGFN
   DEF        Jalousie_WZ:level.*|Terrassentuer_WZ:ope.* IF ([Jalousie_WZ:level]<65 and [Terrassentuer_WZ:state] eq "open") (set Jalousie_WZ 70)
   NAME       Automatik_Terrassentuer_WZ_Jalousie
   NOTIFYDEV  Jalousie_WZ,Terrassentuer_WZ
   NR         373
   NTFY_ORDER 50-Automatik_Terrassentuer_WZ_Jalousie
   REGEXP     Jalousie_WZ:level.*|Terrassentuer_WZ:ope.*
   STATE      2017-02-14 20:47:41
   TYPE       notify
Das mit der Lüftungsschlitze öffenen sähe praktisch gleich aus, nur andere Auslöseevents (tilt) und anderer Level.

Gruß, Beta-User
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline Jorge3711

  • Full Member
  • ***
  • Beiträge: 283
Antw:komplexes Szenario - DOIF oder at/notify/watchdog
« Antwort #4 am: 14 Februar 2017, 21:33:04 »

Nachfolgend aber mal, wie ich das mit den Jalousien der Terrassentüren - kein dauerhaftes vollständiges Schließen bei geöffneter Tür - bei mir gelöst habe:

Dann zeige ich mal mein Konstukt für diese Problemstellung mit DOIF-Lösung:

DOELSEIF ## 09 - Alle Rolllaeden runter (Terrassentuer ist zu)
  ([Buderus:OutdoorTemp] > "0.0" and [{sunset("HORIZON=-6.0",0,"16:00","22:00")}] and [tfk.og.terrasse] eq "closed")
  (set rollladen.* 25)
DOELSEIF ## 10 - Alle Rolllaeden runter, bis auf Terrassentür (Terrassentür ist offen)
  ([Buderus:OutdoorTemp] > "0.0" and [{sunset("HORIZON=-6.0",0,"16:00","22:00")}] and [tfk.og.terrasse] eq "open")
  (set rollladen.eg.* 25, set rollladen.og.kueche.* 25, set rollladen.og.ez 25, set rollladen.og.wz* 25)

Folgender Code sorgt dafür, dass der Rollladen der Terrassentür beim schließen automatisch auf den gewünschten Wert fährt und außerdem wieder hoch fährt, wenn die Tür geöffnet wird, wenn der Rollladen unten ist:

DOIF ## 01 - Alle Rolllaeden unten, Terrasse war offen und Rollladen schließt bei schließen der Tuer
  ([di.rollladen.automatik:cmd] eq "10" and [tfk.og.terrasse] eq "closed")
  (set rollladen.og.terrasse 25)
DOELSEIF ## 01 - Alle Rolllaeden unten, Terrasse war offen und Rollladen oeffnet bei oeffnen der Tuer
  ([di.rollladen.automatik:cmd] eq "10" and [tfk.og.terrasse] eq "open")
  (set rollladen.og.terrasse on)
DOELSEIF ## 03 - Alle Rolllaeden unten, Terrasse war zu und Rollladen oeffnet bei oeffnen der Tuer
  ([di.rollladen.automatik:cmd] eq "9" and [tfk.og.terrasse] eq "open")
  (set rollladen.og.terrasse on)
DOELSEIF ## 04 - Alle Rolllaeden unten, Terrasse war zu und Rollladen schließt bei schließen der Tuer
  ([di.rollladen.automatik:cmd] eq "9" and [tfk.og.terrasse] eq "closed")
  (set rollladen.og.terrasse 25)

Geht vielleicht über einen anderen Weg eleganter, ist für mich aber funktional und erfüllt seinen Zweck.

Offline Wuppi68

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2161
  • On the Highway to Shell
Antw:komplexes Szenario - DOIF oder at/notify/watchdog
« Antwort #5 am: 14 Februar 2017, 21:43:36 »
meine Terassentür habe ich folgendermaßen gestaltet ...

eno.soda.1:.* {

my $Command = '';

Log3 'noty.eno.soda.1', 2, "Event fired: $EVENT";

if (ReadingsVal('dummy.rollade.1', 'state', 'undefined') eq 'off' && $EVTPART0 eq 'handle:') {
if ($EVTPART1 eq 'oben' or $EVTPART1 eq 'up') {
# Griff gekippt
$Command = 'set hm.rollade.1 pct ' . AttrVal('hm.rollade.1', 'levelTilted', '25')
};

if ($EVTPART1 eq 'unten' or $EVTPART1 eq 'down') {
# Griff geschlossen
$Command = 'set hm.rollade.1 ' . AttrVal('hm.rollade.1', 'levelClose', '50')
};

if ($EVTPART1 eq 'rechts' or $EVTPART1 eq 'right') {
# Griff geoeffnet
$Command = 'set hm.rollade.1 ' . AttrVal('hm.rollade.1', 'levelWarning', '50')
};
fhem $Command;
}
elsif ($EVTPART0 eq 'buttonLeft:'  and $EVTPART1 eq 'pressed') { fhem 'set hm.rollade.1 up' }
elsif ($EVTPART0 eq 'buttonRight:' and $EVTPART1 eq 'pressed') { fhem 'set hm.rollade.1 down' }

}

in dem AT setzte ich noch die Variable ob die Rolläden oben bzw. unten sein müssen

Und ein paar vordefinierte Werte sind als Userattribut in den entsprechenden Devices hinterlegt
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Offline Wuppi68

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2161
  • On the Highway to Shell
Antw:komplexes Szenario - DOIF oder at/notify/watchdog
« Antwort #6 am: 14 Februar 2017, 21:50:15 »
Ich komme da noch nicht so ganz mit. Und fasse zusammen:
- Bei Harmony möchtest du abdunkeln.
- Wenn es zu hell und/oder zu warm ist möchtest du abdunkeln
- Nachts sollen die Rolladen unten sein
- Bei Rauchalarm soll die Rollade halb geöffnet sein

Egal von wem die Rolladen gefahren werden sollen diese nur ...
- in Lüftungsstellung gehen, wenn die Terassentür gekippt ist
- in "Habachtstellung" gehen, wenn die Terassentür offen ist (wird die tür geschlossen soll der eigentiche Zustand hergestellt werden?)

Wenn die Terassentür geöffnet wird soll die Rollade in "Habachtstellung" gebracht werden

stimmt - war nicht so klar  geschrieben :-(

Ist die Rollade "oben", dann soll wenn überhaupt nur die Beschattung triggern
Ist sie "unten" steht die Türe im Vordergrund gekippt, wegen Frischuft für den Kamin
die Habachtstellung ist nur die Rollade ein Stück rausgefahren
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

 

decade-submarginal