Markisensteuerung mit HM Funk-Rollladenaktor

Begonnen von DerFrickler, 08 Dezember 2016, 11:27:03

Vorheriges Thema - Nächstes Thema

DerFrickler

Hallo zusammen,

ich plane meine Markise in FHEM mit zu integrieren, das ganze dann über einen Funk-Rollladenaktor von Home Matic. Dazu folgende Frage im Vorfeld...

Ist es möglich die manuelle Schaltung (Ausfahren des Markise) über den Rolladenaktor gänzlich zu unterbinden wenn z.B. der Regensensor Regen anzeigt?

In diesem Fall sollte maximal das Einfahren der Markise möglich sein falls nicht bereits automatisch geschehen, jegliches Ausfahren aber unterbunden werden.

Hintergrund ist folgender: Ich möchte es gerne vermeiden dass am Schaltaktor manuell die Markise ausgefahren wird und FHEM aufgrund gemeldeten Regens direkt versucht dagegen zu halten und per Funk versucht die Markise erneut einzufahren.

Situationen wo das manuelle Ausfahren unterbunden werden soll sind (aktuell) folgende: Regen, Wind, Winter und Nacht.

Gruß und Danke!

martinp876

Ist inhihit verfügbar?
Du solltest also bei Regen erst einfahren, dann inhihit setzen.
Beachte, das von der zentrale aus eigentlich immer geschaltet werden kann. Also hier die Kommandos zumindest aus dem webcmd attr entfernen.
Und das ganze einmal testen, logisch

DerFrickler

Hallo,

da ich ja noch in der Planung bin, kann ich die Frage ob " inhihit verfügbar" ist nicht beantworten, aber im wiki konte ich folgendes finden:
set <name> off -> Schaltet den Aktor aus

wobei ich davon ausgehe dass es den kompletten Aktor deaktiviert. Ich werde dann aber Zeitnah den Schalter bestellen und es testen.

Was mich aber jetzt etwas ins Grübeln gebracht hat ist folgende Angabe:
Schaltvermögen: 1 A (Motorlast)

ich hätte jetzt durchaus bei aktivem Motor mit etwas mehr wie 1 A gerechnet. Verbaut habe ich eine Erhardt J, 4,5m Breite und 3m Ausfall, es soll hier ein somfy Motor verbaut sein... ich weiss leider nur nicht mit wieviel Nm. Laut somfy HomePage sollen die > 25 Nm auch Leistungen über 230 W haben. Hat hier jemand genauere Infos?

Gruß!

Deudi

Unlängst hat die Tochter abends bei Dunkelheit die Markise rausgefahren, da sie versehentlich den falschen Schalter betätigt hat. Ich habe irgendwann auf dem Tablet im Flur gesehen, dass die Markise draussen ist. Das von Martin erwähnte Setzen von inhibit funktioniert bei mir tadellos. Der Schalter bleibt jetzt blockiert bis wieder Markisenjahreszeit ist.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Deudi

@DerFrickler

set Markise off
deaktiviert den Aktor nicht, sondern fährt die Markise aus.

Ich habe eine Markilux 6m breit, 3m Ausfall unterglas an einem einfachen Rolladenaktor für Markenschalter. Funktioniert 1a.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Joker

Ich setze HM-LC-BL1-FM für meine Rollos ein und das inhibit funktioniert einwandfrei. Ich sperre den Aktor z.B. auch wenn die Terrassentür offen ist (nachdem der Rollo hochgefahren ist natürlich), damit nicht jemand auf die Idee kommt (Kinder etc.) per Taster den Rollo zu zu machen und ich steh dann draußen  ;D

DerFrickler

Gut, dann werde ich mal die notwendigen Komponenten ordern und die anstehenden Feiertage (Abende) nutzen um die Installation durchzuführen.

Insbesondere das Problem welches von Deudi angesprochen wurde soll damit auch gelöst werden. Die Schalter für die Markise und Jalousien befinden sich direkt übereinander und es sind natürlich auch die gleichen Schaltertypen verbaut. Da ist es schon mal passiert dass anstatt der Jalousie die Markise bei Starkregen ausgefahren wurde.

Mit dem Umbau sehen 1. beide optisch unterschiedlich aus und 2. wird ein nicht gewolltes Ausfahren verhindert.

Für Euch dann noch schöne Freiertage!

DerFrickler

Zitat von: martinp876 am 11 Dezember 2016, 09:44:59
Ist inhihit verfügbar?
Du solltest also bei Regen erst einfahren, dann inhihit setzen.
Beachte, das von der zentrale aus eigentlich immer geschaltet werden kann. Also hier die Kommandos zumindest aus dem webcmd attr entfernen.
Und das ganze einmal testen, logisch

Der Testaufbau steht und die ersten Erfahrungen konnten gemacht werden.  Dass (wie im wiki beschrieben) ein "set <name> off -> Schaltet den Aktor aus" die Markise lediglich einfährt, hätte ich jetzt nicht gedacht.. aber nun gut.

Was ich noch nicht getestet habe ist die Funktion des Tasters bei inhibit (der Adapteraufsatz ist noch nicht eingetroffen). Wenn nun aber inhibit auf set_on steht und ein Schalten von der Zentrale aus möglich ist, dann könnte man ja auch nahezu zeitgleich die Markise einfahren und das inhibit setzen? Das hat den Vorteil dass nicht irgendeine unterbel.... Person (man hat ja auch schon mal Besuch) das Einfahren der Markise verhindern kann, weil diese ja auch so toll vor Regen schützt. Das Ergebnis einer vor Regen schützenden Markise kann ich beim Nachbarn berachten.

Es gibt aktuell aktuell 3 Anwendungsfälle, die einen automatische Eingriff nötig machen:

1. Es regnet
2. Zu starker Wind
3. Sonnenuntergang

evtl. kommt dann noch die Jahreszeit mit dazu.

Es beginnt zu regnen / der Wind wird zu stark / die Dämmerung setzt ein und fhem setzt ein set Markise off und ein set Markise inhibit on ab. Sollte die Markise ausgefahren sein wird diese eingefahren, falls bereits eingefahren, dann greift das set Markise off halt ins leere...

Es hört auf zu regnen, der Wind flaut ab oder wir haben Sonnenaufgang und fhem setzt ein set Markise inhibit on, wenn keine der anderen Bedingungen greifen. Ein automatisches Ausfahren der Markise ist nicht vorgesehen.

Wie das ganze umsetzen? Eine Struktur (z.B. Markise.inhibit), die relevante Readings der jeweiligen Sensoren zusammenfasst. Dazu ein Notify, welches auf die relevanten Readings reagiert und dann in Abhängigkeit vom Status der Struktur das inhibit deaktiviert bzw die Markise einfährt und das inhibit aktiviert?

Oder alles in einem notify mit ReadingsVal auf alle relevanten Readings der Sensoren?

Wie habt Ihr das gelöst, bzw. was könnte man hier als ein best practice ansetzen?

Gruß!
Karsten

Joker

Zitat von: DerFrickler am 21 Dezember 2016, 11:03:44
Der Testaufbau steht und die ersten Erfahrungen konnten gemacht werden.  Dass (wie im wiki beschrieben) ein "set <name> off -> Schaltet den Aktor aus" die Markise lediglich einfährt, hätte ich jetzt nicht gedacht.. aber nun gut.
Das hat mich auch verwirrt, aber es ist einfach so dass off gleichbedeutend ist mit 0% und on gleichbedeutend mit 100%.

Zitat
Was ich noch nicht getestet habe ist die Funktion des Tasters bei inhibit (der Adapteraufsatz ist noch nicht eingetroffen). Wenn nun aber inhibit auf set_on steht und ein Schalten von der Zentrale aus möglich ist, dann könnte man ja auch nahezu zeitgleich die Markise einfahren und das inhibit setzen?
Ja, mache ich bei mir so. Sobald ich via notify die Info habe dass die Tür geöffnet wurde, wird der Rolle hochgefahren und inhibit gesetzt.

ZitatWie habt Ihr das gelöst, bzw. was könnte man hier als ein best practice ansetzen?
Best practice weiß ich jetzt nicht, aber ich kann mal so grob erläutern was ich gemacht habe:
- eine seperate Datei 99_myUtilsBlinds.pm, die alle Logik im Zusammenhang mit Rollos enthält
- diverse notifys die den Aufruf einer Funktion in der Datei zur Folge haben (Fenster geöffnet, Fenster geschlossen, Automatikmodus aktiviert/deaktiviert (dummy), Sonnenauf/untergang...)
- die Funktion in der Datei enthalten in perl die ausprogrammierte Logik (wenn ein Fenster geöffnet wurde, schau nach ob es eine Tür ist, setze den zugehören Rollauf 100%, setze inhibit...) etc.

Die Datei mit der Logik ist knapp 200 Zeilen lang, also durchaus noch übersichtlich und enthält meine gesamte Rollo Logik.

DerFrickler

#9
auch wenn es jetzt nicht mehr ganz zu HomeMatic passt....

ich habe es wie folgt gelöst:

jedes Relevante Device mit Informationen, die dazu führen dass die Markise von FHEM angesprochen werden muss, bekommt folgendes user-Reading.
inhibitBlindActuator

Diese Readings fasse ich zu einer Struktur zusammen. Benötigt man für einen anderen Autor eine andere Konstellation, dann schraubt man sich die neue Konstellation halt zusammen. Aktuell sind für meine Markise nur twilight und weather von Interesse:

Internals:
   ATTR       structInhibitBlindActuator
   CFGFN
   CHANGED
   DEF        structInhibitBlindActuator weather twilight
   NAME       structure.blindActuator.terrace.awning.inhibitBlindActuator
   NR         487
   NTFY_ORDER 50-structure.blindActuator.terrace.awning.inhibitBlindActuator
   STATE      anySet_on
   TYPE       structure
   Content:
     twilight set_on
     weather set_off
   Helper:
     Dblog:
       State:
         Dblog:
           TIME       1482610217.0263
           VALUE      anySet_on
   Readings:
     2016-12-24 21:13:25   LastDevice      twilight
     2016-12-24 21:13:25   LastDevice_Abs  twilight
     2016-12-24 21:13:25   state           anySet_on
Attributes:
   DbLogInclude state
   alias      Stellantrieb - Terrasse / Markise (inhibit)
   clientstate_behavior relative
   clientstate_priority anySet_on|set_on allSet_off|set_off
   event-on-change-reading .*
   group      Jalousie-/Markisenaktoren - Terrasse
   room       02 Jalousie-/Markisenaktoren


Dazu gibt es dann noch das notify, welches mir die Markise einfährt und inhibit an bzw, ausschaltet. Die Logs unten dienen lediglich zum Testen.

Internals:
   CFGFN
   DEF        structure.blindActuator.terrace.awning.inhibitBlindActuator:.* {

     Log 3, ("notify.blindActuator.terrace.awning.inhibit");;

     my $devName = $NAME;;
     Log 3, ("device name: $devName");;

     my $value = $EVTPART1;;
     Log 3, ("event value: $value");;

     my $wetter = ReadingsVal("weather","inhibitBlindActuator","unknown");;
     Log 3, ("inhibit state wetter: $wetter");;

     my $twilight = ReadingsVal("twilight","inhibitBlindActuator","unknown");;
     Log 3, ("inhibit state twilight: $twilight");;

     my $structure = ReadingsVal("structure.blindActuator.terrace.awning.inhibitBlindActuator","state","unknown");;
     Log 3, ("inhibit state structure: $structure");;

     #if not readable, expect that inhibit is to be set
     if (ReadingsVal("structure.blindActuator.terrace.awning.inhibitBlindActuator","state","anySet_on") eq "anySet_on") {

          #if not readable, expect that on is set
          if (ReadingsVal("blindActuator.terrace.awning","state","on") ne "off")
               { fhem ("set blindActuator.terrace.awning off")};

          { fhem ("set blindActuator.terrace.awning inhibit on")};

     } else {
          { fhem ("set blindActuator.terrace.awning inhibit off")};

     }
}
   NAME       notify.blindActuator.terrace.awning.inhibit
   NR         461
   NTFY_ORDER 50-notify.blindActuator.terrace.awning.inhibit
   REGEXP     .*:inhibitBlindActuator:.*
   STATE      2016-12-24 21:10:16
   TYPE       notify
   Readings:
     2016-12-24 21:09:02   state           active
Attributes:
   DbLogExclude .*
   alias      Stellantrieb - Terrasse / Markise (notify)
   group      Jalousie-/Markisenaktoren - Terrasse
   room       02 Jalousie-/Markisenaktoren


alternativ kann man auch auf die Struktur verzichten und die jeweiligen Readings in das Notify integrieren.

Gruß,
Karsten