Rolladensteuerung und Funk-Fenster-Drehgriffkontakt

Begonnen von puckthefly, 19 Juli 2014, 11:40:12

Vorheriges Thema - Nächstes Thema

puckthefly

Hallo,

ich brauche bitte Hilfe bei einem Szenario:

Im Wohnzimmer sind vier Rolläden (1x Türe und 3x Fenster), diese werden automatisch zu definierten Uhrzeiten hoch und runtergfahren - funktioniert einwandfrei.

Nun würde ich gerne im 1. Schritt einen Funk-Fenster-Drehgriffkontakt HM-Sec-RHS einbinden, dieser soll verhindern das das Rollo an der Türe runterfährt wenn die Türe geöffnet ist (ich will mich nicht aussperren).
Zudem hätte ich gerne das beim Kippen der Türe das Rollo sich leicht öffnet zum Lüften. Ich hab schon ein paar Threads gelesen, verstehe aber irgendwie nur Bahnhof.

Im 2. Schritt würde ich das auf die Fenster ausdehnen, hier würde mir "Lüften" reichen.

Was müsste ich an meiner Konfig ändern, aktuell sieht sie so aus:

Die Rollos habe ich in einer Gruppe zusammengefasst und lasse sie zeitgesteuert fahren (unten noch der Griffsensor):

define Jalousie_Alle structure room Jalousie_1 Jalousie_2 Jalousie_3 Jalousie_4
attr Jalousie_Alle room 1_EG_WZ
define Jalousie_Alle.JedenTag_an at *07:30:00 {fhem("set Jalousie_Alle on")}
attr Jalousie_Alle.JedenTag_an room 1_EG_WZ
define Jalousie_Alle.JedenTag_aus at *{sunset(0,"17:00","22:00")} set Jalousie_Alle off
attr Jalousie_Alle.JedenTag_aus room 1_EG_WZ
attr Jalousie_Alle eventMap on:Auf off:Zu stop:Stop 65:Halbschatten 40:Vollschatten 24:Lüften statusRequest:Status
attr Jalousie_Alle webCmd Auf:Zu:Stop:Halbschatten:Vollschatten:Lüften:Status

define Griffsensor_1_Terasse CUL_HM 21E96D
attr Griffsensor_1_Terasse .devInfo 910101
attr Griffsensor_1_Terasse .stc 80
attr Griffsensor_1_Terasse IODev HMLAN1
attr Griffsensor_1_Terasse actCycle 028:00
attr Griffsensor_1_Terasse actStatus alive
attr Griffsensor_1_Terasse autoReadReg 4_reqStatus
attr Griffsensor_1_Terasse expert 2_full
attr Griffsensor_1_Terasse firmware 2.1
attr Griffsensor_1_Terasse model HM-SEC-RHS
attr Griffsensor_1_Terasse peerIDs
attr Griffsensor_1_Terasse room 1_EG_WZ
attr Griffsensor_1_Terasse serialNr KEQ0550078
attr Griffsensor_1_Terasse subType threeStateSensor
define FileLog_Griffsensor_1_Terasse FileLog ./log/Griffsensor_1_Terasse-%Y.log Griffsensor_1_Terasse
attr FileLog_Griffsensor_1_Terasse logtype text
attr FileLog_Griffsensor_1_Terasse room 1_EG_WZ
define ActionDetector CUL_HM 000000
attr ActionDetector actCycle 600
attr ActionDetector event-on-change-reading .*


Über Tips würde ich mich freuen!

P.A.Trick

Ich habe mir dafür zwei Perl Funktionen gebaut!

Schaue mal ob du damit klar kommst!
Es müssen Homematic Komponenten sein und die Aktoren muessen das Schluesselwort Rollo im Namen enthalten!


#################################################
# $Id: 99_myUtilsRollos.pm 1932 2012-10-06 20:15:33Z ulimaass $
package main;

use strict;
use warnings;
use POSIX;

sub
myUtilsRollos_Initialize($$)
{
  my ($hash) = @_;
}

######################################
#
#####################################
sub rollos_runter()
{
my @rollos=devspec2array("TYPE=CUL_HM");


   foreach(@rollos) {
      if (/.*Rollo.*/) {
     
        # Pruefen ob Rollos schon unten sind
        if ( Value($_) eq "runter" ) {
          Log 3,"[rollos_runter] - Name: ".$_." ist schon unten - wird ignoriert!";
        }
        elsif ( Value($_) eq "20" ) {
          Log 3,"[rollos_runter] - Name: ".$_." ist zu 20% offen - wird ignoriert!";
        }
        elsif (Value("EG.WZ.Terrassentuer") eq "open" && $_ eq "EG.WZ.Rollo.Tuer") {
          Log 3, "[rollos_runter] - Name: ".$_." wird nicht heruntergefahren, da die Tuer auf ist!";
        }
        elsif ( Value($_) eq "hoch") {     

          if (Value("EG.WZ.Terrassentuer") eq "tilted" && $_ eq "EG.WZ.Rollo.Tuer") {
          Log 3, "[rollos_runter] - Name: ".$_." wird auf 20% heruntergefahren, da die Tuer gekippt ist!";
            fhem("set ".$_." 20");
          }
          else {
            Log 3,"[rollos_runter] - Name: ".$_." wird heruntergefahren!";
            fhem("set ".$_." runter");
          }
       }
      }
   }
}

######################################
#
#####################################
sub rollos_hoch()
{
   my @rollos=devspec2array("TYPE=CUL_HM");


   foreach(@rollos) {
      if (/.*Rollo.*/) {
     
        # Pruefen ob Rollos schon oben sind
        if ( Value($_) eq "hoch" ) {
          Log 3,"[rollos_hoch] - Name: ".$_." ist schon oben - wird ignoriert!";
        }
        else {
          Log 3,"[rollos_hoch] - Name: ".$_." wird hochgefahren!";
          fhem("set ".$_." hoch");
        }
       
      }
   }
}
1;
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Wuppi68

bei mir ist es ein dummy und ein wenig drum herum ...

define dummy.rollade.1 DUMMY

define RolladeWohnzimmerAuf AT *{sunrise(0,"06:00","07:00")} set hm.rollade.1 on;
set hm.rollade.2 on;
set dummy.rollade.1 on;


define RolladeWohnzimmerZu AT *{sunset(0,"19:00","23:00")} set hm.rollade.2 off;
IF ([hm.sec.1:state] eq "closed") (set hm.rollade.1 off);
set dummy.rollade.1 off


define hm.sec.1.open NOTIFY hm.sec.1:open IF ([dummy.rollade.1:state] eq "off") (set hm.rollade.1 pct 90)

define hm.sec.1.closed NOTIFY hm.sec.1:closed IF ([dummy.rollade.1:state] eq "off") (set hm.rollade.1 off)
FHEM unter Proxmox als VM

puckthefly

Hallo ihr zwei,

erst mal vielen Dank für eure Antworten, ich werde das mal testen!
Wobei ich keine Ahnung habe, wie das mit der Perl Variante funktioniert...

Ich geb noch mal Bescheid!

puckthefly

So habe nun zumindest die zweite Variante zum Laufen gebracht, die Perl Variante von P.A.Trick leider nicht.

Leider klappt es noch nicht ganz:

Die "notify" reagieren leider nicht "nur" in der Nacht, sondern auch am Tag, also beim Schließen des Griffes fährt der Rolladen zu...
Wie kann ich das ändern bzw. auf die Nacht beschränken?

Puschel74

Hallo,

isday() bzw. !isday()
Oder du prüfst direkt eine Uhrzeit ab - Codes dafür gibt es ja schon zur Genüge (hier im Forum und auch im Wiki).

Grüsse
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.

Deudi

Ich habe eine dummy Variable Rollladen_soll, die mittels sunset/rise auf offen oder geschlossen gesetzt wird. Somit kann man das Zufahren der Rollläden am Tage verhindern.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Wuppi68

Zitat von: puckthefly am 21 Juli 2014, 13:16:40
So habe nun zumindest die zweite Variante zum Laufen gebracht, die Perl Variante von P.A.Trick leider nicht.

Leider klappt es noch nicht ganz:

Die "notify" reagieren leider nicht "nur" in der Nacht, sondern auch am Tag, also beim Schließen des Griffes fährt der Rolladen zu...
Wie kann ich das ändern bzw. auf die Nacht beschränken?

Sorry für die Späte Antwort ...

der Dummy ist für den Sollzustand da ... On = Rollade auf, ist der Dummy noch nicht gesetzt, dann steht er auf Off und die Logik ist im "Nachtmodus". Das System braucht also einmal einen Startzustand ODER Du wartest einen der beiden ATs ab, damit der Zustand mit gesetzt wird.

Liebe Grüße aus Barcelona

Ralf
FHEM unter Proxmox als VM

puckthefly

Hallo zusammen,
die Lösung funktioniert nun eiwandfrei seit einigen Wochen, der Tip von Wuppi68 brachte bei mir den Durchbruch.
Danke an alle die geholfen haben :)
Grüße Stefan

Badflex

Hallo, ich habe jetzt die Perl variante von P.A.Trick eingebaut.
Leider geht das Rollo auch am Tage runter.

define Rollo_Flur_Auf at *{sunrise(-900,"07:55","09:00")} set Rollo_Flur on

define Rollo_Flur_Zu at *{sunset(-900,"17:00","21:30")} set Rollo_Flur off

habe ich in der cfg drin.
Kann mir vielleicht jemand sagen wie ich das kombiniere?

Danke schon mal.
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Puschel74

Hallo,

ZitatLeider geht das Rollo auch am Tage runter.
Was heisst das?
Den Ausführungszeitpunkt deiner at siehst du in FHEM und die werden zu dem dort angegeben Zeitpunkt ausgeführt.
Das siehst du im Logfile.

Was willst du kombinieren?

Und schon wieder die Nachfragen weil die Glaskugel zum polieren ist.

Grüße
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.

Badflex

Zitat von: Badflex am 13 November 2014, 10:17:27
Hallo, ich habe jetzt die Perl variante von P.A.Trick eingebaut.
Leider geht das Rollo auch am Tage runter.

define Rollo_Flur_Auf at *{sunrise(-900,"07:55","09:00")} set Rollo_Flur on

define Rollo_Flur_Zu at *{sunset(-900,"17:00","21:30")} set Rollo_Flur off

habe ich in der cfg drin.
Kann mir vielleicht jemand sagen wie ich das kombiniere?

Danke schon mal.

War wohl nicht ganz verständlich. Sorry

Also, ich hatte vorher die beiden sunrise und sunset Zeilen drinn. Funktioniert auch alles super.
Jetzt habe ich den Perl code von P.A.Trick ( siehe oben ) eingefügt, damit ich mich nicht aussperre wenn ich zufällig mal zur bestimmten Zeit rausgehen wenn das Rollo runter fährt.

Also wenn die Tür offen ist soll das Rollo erst runter fahren wenn ich die Tür wieder schließe.
Da hat mir die Perl variante gut gefallen da ich nicht 1000 dummys haben möchte.

Deswegen hatte ich gefragt,wie man am besten die beiden Sachen zusammenfügt.
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

P.A.Trick

#12
Zitat von: Badflex am 13 November 2014, 10:17:27
Hallo, ich habe jetzt die Perl variante von P.A.Trick eingebaut.
Leider geht das Rollo auch am Tage runter.

define Rollo_Flur_Auf at *{sunrise(-900,"07:55","09:00")} set Rollo_Flur on

define Rollo_Flur_Zu at *{sunset(-900,"17:00","21:30")} set Rollo_Flur off

habe ich in der cfg drin.
Kann mir vielleicht jemand sagen wie ich das kombiniere?

Danke schon mal.

Hi, versuche mal folgendes!

define Rollo_Flur_Auf at *{sunrise(-900,"07:55","09:00")} {rollos_hoch;}

define Rollo_Flur_Zu at *{sunset(-900,"17:00","21:30")} {rollos_runter;}


Du musst aber noch die Perl Funktion anpassen!
Bei mir heisst der Drehgriff EG.WZ.Terrassentuer und das Rollo EG.WZ.Rollo.Tuer
! Wenn du mir deine Namen nennst, kann ich das auch gerne für dich übernehmen und die Funktion
dementspechend abändern!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Badflex

Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Badflex

Ich hab das jetzt mal genau so eingefügt.

Leider kommt jetzt bei jedem aufruf von fhem:

Error messages while initializing FHEM:
configfile: Unknown command }, try help.
Unknown command }, try help.

Das gleiche steht auch wenn ich meine 99_myUtils.pm reloaden will.

Das einzige was ich dort geändert habe ist myUtilsRollos_Initialize($$) in myUtils_Initialize($$)
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo