Jeder kennt das Problem, dass es im Sommer in der Wohnung immer zu Heiß wird. Daher möchte ich eine kleine Anleiten für das Steuern von elektrischbetrieben Rolladenmotoren per Funk geben.
Folgende Software/Hardware habe ich verwendet:
Für die Installation des FHEM Servers empfehle ich euch die folgenden Webseiten:
Als nächstes muss der zWave Stick von Aeotec in FHEM installiert werden. Sobald FHEM korrekt installiert ist kann der USB stick eingesteckt und sollte dann auch automatisch erkannt werden und zu FHEM hinzu gefügt worden sein. Siehe FHEM wiki zWave.
Der Roller Shutter 2 von Fibaro kann direkt hinter dem Rolladenschalter montiert werden. Hierzu muss der Rolladenschlater ausgebaut und wie in dem Auszug aus der Anleitung verbunden werden. Dieses sollte unbedingt von einem Fachmann durchgeführt werden, da es sich um 230V handelt und diese sind ja bekanntlich Lebensgefährlich. Also bitte von einer Fachkraft installieren lassen!
Bei der Installation ist auf den korrekten Anschluss der "auf" und "ab" Leitung für den Motor und der Schalterwippe zu achten. Falls dieser nicht richtig ist merkt man es später in dem FHEM "99" für Rolladen oben und "0" für unten Anzeigt. In diesem Fall einfach S1 mit S2 und Q1 mit Q2 vertauschen.
Die Art des Rolladenschalters kann später per Konfiguration geändert werden (Taster, Wechselschalter). In meinem fall benötige ich einen Wechselschalter.
Die Integration und grundsätzlichen Steuerungen des "Roller Shutters" werden in der FHEM Wiki für den FGR-222 behandelt.
Nach der Erfolgreichen Integration in FHEM sollte euer FileLog so ähnlich aussehen:
1 2 3 4 5 |
2017-05-15_20:54:49 ZWave_SWITCH_MULTILEVEL_5 associationAdd 3 1 2017-05-15_20:54:49 ZWave_SWITCH_MULTILEVEL_5 modelId: xxxx-xxxx-xxxx 2017-05-15_20:54:49 ZWave_SWITCH_MULTILEVEL_5 model: FIBARO System FGRM222 Roller Shutter Controller 2 2017-05-15_20:54:49 ZWave_SWITCH_MULTILEVEL_5 modelConfig: fibaro/fgrm222.xml 2017-05-15_20:55:16 ZWave_SWITCH_MULTILEVEL_5 off |
danach muss der Rolladen noch eine Kallibrierungsfahrt machen:
1 2 3 |
set <device> configByte 29 1 wobei <device> hier ZWave_SWITCH_MULTILEVEL_5 ist |
Dieses perl script kann den Roller-Shutter 2 in Abhängigkeit vom Sonnenstand und der Sonneneinstrahlung steuern. Es wird einfach als Notifier in FHEM eingebunden. Am besten, man editiert die fhem.cfg direkt und fügt folgende Zeilen ein:
Zudem wird das Modul "Twilight" benötigt um den Sonnenstand zu erfassen. Hierzu hilf natürlich auch die FHEM Wiki Twilight.
Die einzelnen Schritte:
Installation von Twilight für azimuth definition:
#### Definition of Twilight
define Sonne_Ilbenstadt Twilight <Längengrad> <Breitengrad> <Indoor_Horizont> <Yahoo-Wetter-ID>
attr Sonne_Ilbenstadt icon weather_sunrise
attr Sonne_Ilbenstadt room Wetter
1. define Auto_Shutter_Wohnzimmer_Seite notify Sonne_Ilbenstadt:azimuth:.*
2. {Auto_Shutter_Zwave("ZWave_SWITCH_MULTILEVEL_3","Rolladen_Wohnzimmer_Seite_position", "Rolladen_Wohnzimmer_Seite_Beschattung_Aktiv",50,110,200,5600,1000)}
$zwave_device, ->
"ZWave_SWITCH_MULTILEVEL_3"
$Rolladen_Position_var, ->
"Rolladen_Wohnzimmer_Seite_position"
$Rolladen_Beschattung_Aktiv_var, ->
"Rolladen_Wohnzimmer_Seite_Beschattung_Aktiv"
$shutter_level,->
50
$azimuth_on,->
110
$azimuth_off,->
200
$pv_power_on,->
5600
$pv_power_off->
1000
$zwave_device
|
Name des ZWave devices in FHEM welches gesteuert werden soll |
$Rolladen_Position_var
|
Variable in FHEM, hier wird die vorherige Position des Rolladens gespeichert, um nach der Beschattung den "alten" zustand wieder herszustellen |
$Rolladen_Beschattung_Aktiv_var
|
Variable in FHEM, signalisiert über den Notifier hinaus, ob die Beschattung schon Aktiviert worden ist. |
$shutter_level
|
Prozentuale Beschattung. (Rolladen Position bei Beschattung) |
$azimuth_on
|
Beschattung aktiv ab azimuth |
$azimuth_off
|
Beschattung deaktivieren ab azimuth |
$pv_power_on
|
Beschattung aktiv schalten wenn PV-Power (bei mir der Strom vom Dach) eine bestimmte schlwelle überschreitet. Hier kann natürlich auch ein Helligkeitssensor eingesetzt werden. |
$pv_power_off
|
Beschattung deaktivieren wenn PV-Power keliner als vorgabe ist. |
Der folgende Abschnitt enthält das komplette Perl Modul für FHEM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
set package main; use strict; use warnings; use POSIX; sub mySmartHomeUtils_Initialize($$) { my ($hash) = @_; } ########################################################## # Shutter auto control with zwave modules # sub Auto_Shutter_Zwave($$$$$$$$) { my ($zwave_device, $Rolladen_Position_var, $Rolladen_Beschattung_Aktiv_var, $shutter_level, $azimuth_on, $azimuth_off, $pv_power_on, $pv_power_off) = @_; my $Beschattung_Aktiv=ReadingsVal($Rolladen_Beschattung_Aktiv_var,"state",0); my $Rolladen_Position=ReadingsVal($Rolladen_Position_var,"state",0); my $azimuth=ReadingsVal("Sonne_Ilbenstadt","azimuth",0); my $pv=ReadingsVal("Strom_PVAnlage", "AVERAGE", 0); my $Automatische_Beschattung_Aktiv=ReadingsVal("Automatische_Beschattung_Aktiv","state",0); my $Rolladen_actual_position; # Rolladen Wonzimmer Seite per Sonnenstand&PV-Ertrag schalten # Einschalten wenn Sonnenstand und PV Ertrag OK if ($Automatische_Beschattung_Aktiv eq 1) { # activate auto shutter only if $Automatische_Beschattung_Aktiv=activ # readout shutter position and compare it to the required value. if (($azimuth > $azimuth_on) && ($azimuth < $azimuth_off) && ($pv > $pv_power_on) && ($Beschattung_Aktiv eq 0)) { fhem "get $zwave_device position"; # readout positon of shutter sleep 2; $Beschattung_Aktiv = 1; $Rolladen_Position = ReadingsVal($zwave_device, "position",0); fhem ("set $Rolladen_Position_var $Rolladen_Position"); # save value of shutter position befor activation of auto mode and store it in FHEM variable fhem ("set $Rolladen_Beschattung_Aktiv_var $Beschattung_Aktiv"); # set shutter_auto for current shutter and store it in FHEM variable fhem "set Telegram message Beschattung aktiv $pv $azimuth $Beschattung_Aktiv"; # send Telgram message to user # set shutter level only when actual position of shutter is lower than the defined $shutter_level if ($shutter_level > $Rolladen_Position) { fhem "set $zwave_device dim $shutter_level"; } }; # Ausschalten wenn Sonnenstand und PV Ertrag KO if (((($azimuth_on > $azimuth_on) && ($azimuth < $azimuth_off) && ($pv < $pv_power_off)) || ($azimuth > $azimuth_off)) && ($Beschattung_Aktiv eq 1)) { $Beschattung_Aktiv = 0; fhem ("set $Rolladen_Beschattung_Aktiv_var $Beschattung_Aktiv"); # set FHEM varialbe outside of notify function fhem "get $zwave_device position"; # readout positon of shutter sleep 1; $Rolladen_actual_position = ReadingsVal($zwave_device, "position",0); # restore value only if the shutter was not changed during the activation. if ($Rolladen_actual_position = $zwave_device) { fhem "set $zwave_device dim $Rolladen_Position"; } fhem "set Telegram message Beschattung deaktiv: $pv $azimuth $Beschattung_Aktiv"; }; # Ausschalten wenn Sonnenstand > $azimuth_off if (($azimuth > $azimuth_off) && ($Beschattung_Aktiv eq 1)) { fhem "set Telegram message Beschattung deaktiv > $azimuth_off: $pv $azimuth $Beschattung_Aktiv"; fhem "get $zwave_device position"; # readout positon of shutter sleep 1; $Rolladen_actual_position = ReadingsVal($zwave_device, "position",0); # restore value only if the shutter was not changed during the activation. if ($Rolladen_actual_position = $zwave_device) { fhem "set $zwave_device dim $Rolladen_Position"; } $Beschattung_Aktiv = 0; fhem ("set $Rolladen_Beschattung_Aktiv_var $Beschattung_Aktiv"); # set FHEM varialbe outside of notify function }; }; } 1; |