Neues Modul: Rolladensteuerung

Begonnen von ThomasRamm, 11 Januar 2016, 00:00:21

Vorheriges Thema - Nächstes Thema

AndiL

... denn sie wissen nicht, was sie tun. ;)

Zitat von: dlinus am 20 Januar 2016, 12:19:56
ja, hatte ich auch getestet. leider bleiben die rolläden stumm :-(
(Rollowoli PortA0 PortA1 FS20rsu)

Ich vermute PortA0 PortA1 hast Du einfach so aus dem WIKI Beispiel übernommen und das gibt es bei deinem Rolladenknödel gar nicht?
Schau mal in Dein Logfile, das wird von Meldungen wimmeln, das Du erst mal was definieren sollst bevor es benutzt wird....

Wenn Du die zwei Ausgänge von Deinem Intertechnoding nicht explizit von Fhem aus schalten kannst geht es leider nicht.

Es sei den der Typ FS20rsu würde mit dem auch gehen.
Nach meinem Verständnis würde der allerdings vermutlich so definiert.

define Testrollo ROLLO Rollowoli FS20rsu

FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

grappa24

in diesem Forum fehlt eindeutig die "like" funktion, sonst hättest Du AndiL jetzt eines von mir bekommen  ;)
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

AndiL

FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

ThomasRamm

#123
Modul ROLLO_Automatik
Dieses Modul hilft mir meine ganzen Automatisierungsschnipsel zusammenzufassen. Einige Parameter sind im Moment noch fest im Code eingebaut, bei Interesse kann ich das ganze variabler gestalten.

define <Szenario Name> ROLLO_Automatik

Attribute:

Rolladen-positionen: welcher Rolladen soll welche Position haben wenn das Szenario aktiv wird?
   mehrere rollo können mit , getrennt pro position vorgegeben werden, andere positionsgruppen werden mit leerzeichen getrennt
Uhrzeit: die Uhrzeit zu der dieses Ereignis eintreten soll, kann auch eine Variable/dummy sein wie z.B. Sonnenaufgang. Die Variable muss im State eine Uhrzeit im Format [hh:mm:ss] enthalten.
Tage-aktiv: die Tage an denen dieses Szenario aktiv sein soll, wie Montag,Dienstag,Mittwoch... + Feiertag
Bedingung: weitere Bedingung die zum aktivieren des Szenario erfüllt sein muss, wobei die Bedingung folgendermaßen verarbeitet wird: <Variablename> <operator> <Wert (Zahl)>
Variablename muss im State wiederrum eine Zahl sein, die mit Zahl verglichen werden kann.

Set:

Aktivieren: startet dieses Szenario sofort
Prüfen: prüft die gesetzten Parameter und Startet das Szenario wenn sie wahr sind
ein: Aktiviert dieses Szenario
aus: deaktiviert dieses Szenario

Programmidee / Ablauf

Das Modul prüft täglich zur Attr-Uhrzeit folgende Bedingungen:
  Aktuellen Tag herausfinden, wobei:
  - if (Value('Kalender_Feiertage') ne "none") dann Heute = "Feiertag";
  - if (Value('kalender.urlaub') eq "ja") dann Heute = "Feiertag";
  -> sonst Heute = [Wochentag]

  prüfen ob Feiertag,oder [Wochentag] in Attr-Tage-aktiv vorhanden ist
  -> Wenn nein, Szenario NICHT aktivieren

  prüfen ob ich in der Oberfläche Ausschlafen aktiviert habe und das Szenario vor
  10:00Uhr aktiviert werden soll.
  -> Wenn nein, Szenario NICHT aktivieren

  prüfen ob Bedingung erfüllt ist laut Attr-Bedingung.
  -> Wenn nein, Szenario NICHT aktivieren

  Wenn alle prüfungen ok sind, dann Szenario starten:

  für jedes Rollo:
   Prüfen ob Rollo-Attribut: automatic-enabled = off
   -> Rollo NICHT fahren
   Prüfen ob Rollo-Attribut: automatic-delay > 0
      -> mithilfe eines neuen at_* wird das Rollo [n] Minuten später gestartet
   
  Alle Rollo auf die vorgegebene Position fahren

Um das ganze verständlicher zu machen habe ich ein paar Bilder meiner Editier-Oberfläche gepostet.
Ale Szenarien in sich sind unabhängig voneinander und werden zur vorgegebenen Zeit aktiviert.

Bild Automatik
Hier sieht man die von mir eingerichteten Szenarien, sowie den dummy "Pennen",
außerdem einen weiteren Dummy der mir das zuletzt gestartete Szenario anzeigt. (Falls ich mit anderen Modulen als Bedingung darauf zugreifen will)

Bild Szenario1 (Nacht (kalt))
Attribut Bedingung: Szenario wird nur gestartet wenn es unter +25°C sind. MeinWetter.heute.max ist ein Readingsproxy auf das Attribut '   
fc1_high_c' des Modul 'Weather'


Danach sieht man welche Rollo alle heruntergefahren werden sollen
Nächste Zeile zeigt die Tage an denen das Szenario aktiviert werden soll
Uhrzeit ist eine Variable in meinem fhem deren State die eigentliche Uhrzeit enthält, die sich täglich um sekunden/minuten verschiebt.

Bild Szenario2 (Nacht (warm))
Das Gegenstück von Nacht (kalt), insbesondere in der Bedingung erkennbar.
Ausserdem werden hier verschiedene Positionen angefahren, einige Rollo werden geschlossen, andere halb-offen gelassen und eines gar nicht geschlossen.

PS: Sonnenaufgang/Sonnenuntergang wird mithilfe des Sunrise Modul berechnet und abgespeichert (im wiki toll erklärt), ich werde dieses aber wohl durch das twilight-Modul ersetzen und die Zeiten durch ReadingsProxy dieses Moduls übernehmen.

Bild pennen
ist bei mir ein dummy ohne jede Verknüpfung

Es muss ausserdem noch ein 'device' Kalender_Feiertage geben, der "none" zurückgibt, oder einen beliebigen Wert (bei mir den Namen) eines heutigen Feiertags. Dies erledigt bei mir das Modul holiday, ebenfalls im wiki toll beschrieben

kalender.urlaub ist ein dummy der durch das google Kalender-Modul gefüllt wird, habe ich aber nicht so wirklich benutzt.

Gruß
Thomas

grappa24

Thomas,

können wir nicht für Typ3 noch gemeinsam ein Modul für diese blöden DOIFs zur Extern-Steuerung zusammen schreiben :)  ... ich komm da nicht weiter ...  :-\
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

ThomasRamm

Zitat von: grappa24 am 20 Januar 2016, 19:07:49
Thomas,

können wir nicht für Typ3 noch gemeinsam ein Modul für diese blöden DOIFs zur Extern-Steuerung zusammen schreiben :)  ... ich komm da nicht weiter ...  :-\

Können wir versuchen.
Brauche dazu aber noch ein paar infos.
Woher weiss fhem das dein Rollo fährt wenn es extern gestartet wurde?
Dein Kanal1 wird es wohl vermutlich nicht sein, da  du bei Typ 3 ein on für hochfahren, ein off für runterfahren auf demselben Kanal sendest. Oder hat dein Kanal weitere Stati die abgefragt werden können?

Gruß
Thomas


HoTi

Bin ich blind oder gibts die ROLLO_Automatik.pm nicht?!

Könnte da man noch ein realen Helligkeitswert, z.b. vom HM Bewegungsmelder mit aufnehmen?

Ich weiß... der wieder mit seinen Sonderwünschen  ;)

(http://forum.fhem.de/index.php?action=dlattach;topic=47202.0;attach=44702;image)
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

grappa24

#127
Zitat von: ThomasRamm am 20 Januar 2016, 23:27:55
Können wir versuchen.
Brauche dazu aber noch ein paar infos.
Woher weiss fhem das dein Rollo fährt wenn es extern gestartet wurde?
Dein Kanal1 wird es wohl vermutlich nicht sein, da  du bei Typ 3 ein on für hochfahren, ein off für runterfahren auf demselben Kanal sendest. Oder hat dein Kanal weitere Stati die abgefragt werden können?
Doch Thomas, meine Wandtaster senden genau diese vier Befehle an fhem

Kanal_1 off <-> hochfahren                                                     <-> Taster oben (langer Druck)
Kanal_1 on <-> runterfahren                                                   <-> Taster unten (langer Druck)
Kanal_2 on <-> Stop durch kurzen Impuls zum Runterfahren     <-> Taster unten (kurzer Druck)
Kanal_2 off <-> Stop durch kurzen Impuls zum Hochfahren       <-> Taster oben (kurzer Druck)

Beispiel: Ein langer Druck auf "Wandtaster unten" fährt mein Rollo runter und sendet "Rollo Kanal_1 on" an fhem, mit "set Rollo_Kanal_1 on" fahre ich das Rollo mit fhem runter ...

Hier meine manuelle Abwärtskontrolle als Beispiel:DOIF ([Kanal_1] eq "on" and [Rollo] ne "drive-down") (set Rollo extern geschlossen)
DOELSEIF ([Kanal_2] eq "off" and [Rollo] eq "drive-down") (set Rollo extern stop)
DOELSEIF ([Kanal_2] eq "on" and [Rollo] eq "drive-down") (set Rollo extern stop)
Funktioniert solange, wie man nicht zwischen extern abwärts und extern aufwärts wechselt bzw. solange man nicht zwischen externer und fhem-Steuerung wechselt ...

P.S. Im Wiki ist Typ3 m.E. nicht vollständig dokumentiert, die Befehle für Kanal 2 müssten wie folgt lauten:
Kanal 2 - on - Stoppt das Runterfahren und das Hochfahren (kurzer Impuls "runter")
Kanal 2 - off - Stoppt das Runterfahren und das Hochfahren (kurzer Impus "hoch")

P.P.S. Meine EIB/KNX Installation ist untypisch, weil auf einem EIB normalerweise auch die Stati für die Postition sind, die wurden bei mir aber leider nicht programmiert, so dass ich "nur" die o.a. vier Stati habe und auf das ROLLO-Modul angewiesen bin  ;)


FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

ThomasRamm

Zitat von: RettungsTim am 21 Januar 2016, 06:30:34
Bin ich blind oder gibts die ROLLO_Automatik.pm nicht?!

Könnte da man noch ein realen Helligkeitswert, z.b. vom HM Bewegungsmelder mit aufnehmen?

Ich weiß... der wieder mit seinen Sonderwünschen  ;)

(http://forum.fhem.de/index.php?action=dlattach;topic=47202.0;attach=44702;image)

Bist nicht Blind, habe es gerade im Beschreibungs-Post nachgeholt.
Den Helligkeitswert kann man als Bedingung aktuell schon mit aufnehmen. Willst du ihn als "Uhrzeit" benutzen wann morgens/abends die Rollos auf/zu sein sollen, oder als zusätzliche Bedingung (nur abends um 8, wenn helligkeit < x)

HoTi

Ich habe es derzeit hiernach aufgebaut:

http://www.fhemwiki.de/wiki/Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten

Da gibt es viel Luft für Fehler.

Also Funktionen die ich nutze, viele bzw. die meisten hast du schon drin: (Kopiert aus dem Wiki)


  • Automatik aktiv
  • Art (das will ich später mit dem Google Kalender ändern können. Urlaub und auf Feiertage reagieren)
  • Sonnenschutz. Ich habe an der Ost und Süden Differenz Temperatur Sensoren. Einen Sensor mit weißen und einem mit Schwarzen Schrumpfschlauch überzogen, die Differenz ergibt mir den
  • Sonneneinstrahlwert
  • Zeit hoch
  • Zeit hoch WE und Feiertage
  • Helligkeit runter
  • Zeit runter (Zu dieser Zeit fahren die Rollläden runter, egal ob der angegebene Helligkeitswert erreicht wurde)

Derzeit habe ich einen Schutz drin, wenn bei Türen der Sensor offen anzeigt fährt das Rollo nicht runter. Aussperrschutz!! (Ist echt doof beim Grillen wenn Plötzlich alle Rollos runter gehen und du kein Haustürschlüssel bei hast. Ein hoch auf den Fingerprint!)
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

rr725

#130
habe einmal das Modul getestet, weil ich die Funktion prikelnd finde, eine Position anfahren zu können.
Ein kleines Problem habe ich aber dabei.
Meine Aktoren reagieren auf on= auf, Off= ab. Noch einmal die gleiche Taste und die Rolläden bleiben stehen.
(Wohnzrollolli FS20rsu).
Gebe ich nun " Set Testrollo position 50" ein fährt das Rolo auch herunter, jedoch sofort wieder herauf.
Habe ich etwas übersehen, fehlt mir da ein Attribut ?!

ThomasRamm

DOIF Erläuterungen:

Die wichtigste info an alle: es muss das attribut "do:always" im DOIF gesetzt werden damit das ganze im Zusammenspiel funktioniert.

@grappa: versuch mal folgendes:

define kanal1_doif DOIF ([Kanal_1] eq "on" and [Rollo] ne "drive-down") (set Rollo extern geschlossen)
attr kanal1_doif do always

define kanal2_doif DOIF ([Kanal_2] and [Rollo] =~ "drive") (set Rollo extern stop)
attr kanal2_doif do always

ThomasRamm

@rr725: kannst du bei deinem ROLLO verbose=5 setzen, Rollo fahren und dein Log posten.
Ist bestimmt nur eine Kleinigkeit

Gruß Thomas

grappa24

Zitat von: ThomasRamm am 22 Januar 2016, 14:30:20
define kanal2_doif DOIF ([Kanal_2] and [Rollo] =~ "drive") (set Rollo extern stop)
attr kanal2_doif do always
wie wird hiebei meine externe Stop-Bedingung (Kanal_2 on bzw Kanal_2 off) erkannt? Ich bin zu doof für perl .... :-[
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

rr725

Zitat von: ThomasRamm am 22 Januar 2016, 14:32:16
@rr725: kannst du bei deinem ROLLO verbose=5 setzen, Rollo fahren und dein Log posten.
Ist bestimmt nur eine Kleinigkeit

Gruß Thomas

Hi Thomas,
es funktioniert nun alles bestens. Kann es sein, dass ich hier ein falsches Modul geladen hatte. Hab noch einmal das erste genommen, fhem neu gestartet und siehe da....    :D :) ;)

Vielen Dank, für das tolle Modul !!!!