HOWTO: Beschattung mit Sonoff (Tasmota) - Temperaturabhängig

Begonnen von Albi, 01 April 2018, 16:56:27

Vorheriges Thema - Nächstes Thema

Albi

Hallo zusammen,

ich habe hier mal ein kleines HOWTO geschrieben. Vorab, ich bin ein FHEM ANFÄNGER, es kann also sein, dass nicht alles Perfekt gemacht wurde und sicher gibt es Leute die über Sinn oder Unsinn des Projekts sich Gedanken machen. Für mich ist es halt ein Projekt das ich austesten wollte.
WICHTIG: Für alle Arbeiten, wie Flashen von Sonoff´s oder anklemmen von Markisen usw - STROM ausschalten, oder halt bei Arbeiten im 230V Netz! Am besten einen Elektriker, also Fachmann holen!

Vorwort:
Ich versuche hier eine elektrische Markise die unter einer Glasüberdachung montiert ist zu automatisieren. Die Markise hat eigene Endschalter eingebaut. Die Markise dient rein zur Beschattung, kann eben bei Wind und Regen ausgefahren bleiben, da eben ein Glasdach darüber ist. Sollte es jemand mit einer freistehenden Markise versuchen, ACHTUNG wegen Wind und Regen (in dem Fall müsste man mit weiteren Sensoren arbeiten oder das TWILIGHT Modul mit nutzen). Zudem sind alle Sonoff entweder unter dem Vordach montiert oder im Innenbereich, nur die Temperaturfühler sind im Freien verbaut (Sonoff sind nur für den Innenbereich geeignet).
Die Funktion der Automatisierung soll so ablaufen das eben ab einer bestimmten Temperatur die Markise raus oder rein gefahren wird. Mit einem "Schatten" und einem "Sonnen" Sensor wird der Unterschied abgefragt. Ist eben Sonne da, wird die Temperatur beim Sonnenfühler steigen, aber einer gewissen Differenz soll die Markise selbst rausfahren. Ist dann eben die Sonne weg (Abends oder Wolken) ist der Unterschied deutlich geringer und die Markise soll rein fahren.

Es kommen überall Sonoff Module zum Einsatz und somit ergibt sich folgende "Einkaufsliste"

- 2 Stück Sonoff TH10 mit Temperatursensor DS18B20 (Kosten für beide ca 23,00 Euro)
- 1 Sonoff Dual (Kosten ca 11,50 Euro)

Vorhandene Hardware/Software/Pakete

- Raspberry PI mit aktuellem Fhem
- MQTT Broker auf dem Fhem installiert
- HA-Bridge auf dem Fhem installiert (später für Alexa Echo zur Sprachsteuerung  ;) )
- Markise 230V mit Endschalter
- Jalousietaster (extern)

Vorbereitung:

- Alle drei Sonoff mit Tasmota Firmeware flashen - hierauf gehe ich nicht extra ein, das findet man im Wiki oder Google. Nur als kleiner Tipp, der "Dual" hat den Button 0 auf der Platine (GPIO zum flashen) und muss eben auf GND beim anstecken an den Programmer gelegt werden.
- Am Sonoff Dual die externen Pins nach Außen legen für die Taster, die sind auf der Platine beschrieben. Und auch GND einmal mit rauslegen
- Die Sonoff in über Weboberfläche (IP-Adresse des Sonoff) einstellen. Im Dual müssen die externen Taster (Switch 1 + 2) beim GPIO 0 und 9 eingestellt werden und die Sensoren bei den TH10. Und auch die MQTT Einstellungen müssen gemacht werden
- Alle drei Sonoff in Fhem als TASMOTA-DEVICE anlegen

Hier die Device List der TASMOTA_DEVICES

TH10 für Schattentemperatur
defmod Schatten TASMOTA_DEVICE sonoff-kalt /%topic%/%prefix%
attr Schatten IODev mqtt
attr Schatten icon weather_frost
attr Schatten room Markise
attr Schatten stateFormat {sprintf("Temperatur: %.1f C", ReadingsVal($name,"sensor-ds18b20-temperature",0))}
attr Schatten userReadings sensor-ds18b20-temperature


TH 10 für Sonnentemperatur
defmod Sonne TASMOTA_DEVICE sonoff-warm /%topic%/%prefix%
attr Sonne IODev mqtt
attr Sonne icon weather_sun
attr Sonne room Markise
attr Sonne stateFormat {sprintf("Temperatur: %.1f C", ReadingsVal($name,"sensor-ds18b20-temperature",0))}


Dual für die Markise Schalkanal REIN
defmod Sonoff_Markise_Rein TASMOTA_DEVICE sonoff-markise /%topic%/%prefix%
attr Sonoff_Markise_Rein IODev mqtt
attr Sonoff_Markise_Rein eventMap on:ON off:OFF
attr Sonoff_Markise_Rein icon fts_shutter_up
attr Sonoff_Markise_Rein publishSet on off sonoff-markise/cmnd/power1
attr Sonoff_Markise_Rein room Markise
attr Sonoff_Markise_Rein stateFormat result-power1
attr Sonoff_Markise_Rein webCmd on:off


Dual für die Markise Schaltkanal RAUS
defmod Sonoff_Markise_Raus TASMOTA_DEVICE sonoff-markise /%topic%/%prefix%
attr Sonoff_Markise_Raus IODev mqtt
attr Sonoff_Markise_Raus eventMap on:ON off:OFF
attr Sonoff_Markise_Raus icon fts_shutter_down
attr Sonoff_Markise_Raus publishSet on off sonoff-markise/cmnd/power2
attr Sonoff_Markise_Raus room Markise
attr Sonoff_Markise_Raus stateFormat result-power2
attr Sonoff_Markise_Raus webCmd on:off


Sind diese TASMOTA_DEVICE in FHEM angelegt. Sollten die Sensoren und der Dual bedienbar sein bzw. Temperatur überliefert werden. Zur Temperatur noch ein Tipp. Im Sonoff selbst auf der Weboberfläche kann man unter "Logging konfigurieren" einstellen in welchem Sekunden Abstand die Temperatur übertragen werden soll (default ist 30 Sekunden). Hier kann man später und auch zum testen das halt "träge" oder "schnell" machen.

Als nächstes nehmen wir uns den Sonoff DUAL vor, hier muss auf der Weboberfläche über die Konsole einiges eingestellt werden. Unter anderen, dass die Relais gegenseitig verriegelt sind, um eben sicher zu stellen, dass am Motor nie an beiden Eingängen Strom anliegen kann. Das wäre nämlich ein Motorschaden und die Markise wäre defekt. Daher also nochmal - ALLES AUF EIGENE GEFAHR! Ich habe alles erst getestet ob es auch sicher nicht passiert, dass beide Relais an sein können BEVOR ich die Markise angeschloßen hatte!

Also nun zum DUAL, in die Konsole wechseln und folgende Einstellungen vornehmen - In Klammer schreibe ich dazu was der Befehl macht, also nur Befehl eingeben!:
savedata 1 (Einstellung Ändern)
SwitchMode1 3 (Externer Taster-Button0 Schaltet Dual dauerhaft An oder Aus)
SwitchMode2 3 (Externer Taster-Button1 Schaltet Dual dauerhaft An oder Aus)
SetOption14 1 (WICHTIG: hiermit verrieglt man die beiden Relais, stellt sicher das nie beide an sind)
PulseTime1 169 (Hier wird nach 69 Sekunden das geschaltete Relais 1 wieder Ausgeschaltet)
PulseTime2 169 (Hier wird nach 69 Sekunden das geschaltete Relais 2 wieder Ausgeschaltet)
savedata 0 (geänderte Einstellungen werden gespeichert


Jetzt empfiehlt es sich es eben zu testen ob tatsächlich nur ein Ausgang vom Dual geschaltet wird. Die 69 Sekunden sind ein Beispiel, hier muss man eben den Wert nehmen wie lange die Markise zum Rein/Raus tatsächlich braucht um in der jeweiligen Endposition zu sein. Das ganze stellen wirspäter auch noch in Fhem ein. Aber sollte eben die Markise mit dem Externen Taster bedient werden, oder auch mal Fhem Offline sein (oder Ausfallen) bleibt eben extern trotzdem die Markise manuell bedienbar.


Jetzt zu Fhem:

Hier habe ich mich dem ROLLO Modul bedient und es entsprechend Konfiguriert. Anbei der Code

defmod Markise ROLLO
attr Markise autoStop 0
attr Markise commandDown set Sonoff_Markise_Raus ON
attr Markise commandStop set Sonoff_Markise_Raus,Sonoff_Markise_Rein OFF
attr Markise commandUp set Sonoff_Markise_Rein ON
attr Markise devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop position-100:fts_shutter_100:open position-90:fts_shutter_80:closed position-80:fts_shutter_80:closed position-70:fts_shutter_70:closed position-60:fts_shutter_60:closed position-50:fts_shutter_50:closed position-40:fts_shutter_40:open position-30:fts_shutter_30:open position-20:fts_shutter_20:open position-10:fts_shutter_10:open position-0:fts_shutter_10:closed
attr Markise excessBottom 2
attr Markise excessTop 4
attr Markise icon awning
attr Markise resetTime 0
attr Markise room Markise
attr Markise secondsDown 62
attr Markise secondsUp 62
attr Markise switchTime 1
attr Markise type normal
attr Markise webCmd open:closed:half:stop:position


Hier habe ich bei dem Attribute secondsDown/UP "62" eingetragen. Anscheinend zählen die Sonoff und Fhem die Sekunden schneller bzw langsamer  8) :o . Ich habe mich halt mir der Stoppuhr hingesetzt und getestet bis beide gleiche Zeiten hatten.



Jetzt zu der Automatisierung. An der Stelle möchte ich mich bei "CoolTux" bedanken, der mir hier extrem weitergeholfen hat mit dem DOIF.

Einmal die Temperaturunterschiede, eigentlich das Herzstück damit es automatisch geht. Das DOIF habe ich "MK_auto_Temp" benannt:

([Sonne:sensor-ds18b20-temperature:d] > 26 and [?Sonne:sensor-ds18b20-temperature:d] - [?Schatten:sensor-ds18b20-temperature:d] > 8 ) (set Markise closed) DOELSEIF ([Sonne:sensor-ds18b20-temperature:d] < 22) (set Markise open)
Jetzt wird bei einer Sonnentemperatur von über 26 C und bei einem Unterschied von mehr als 8 Grad zur Schattentemperatur der "Raus" Befehl gesendet. Und bei weniger als 22 C Sonne der "Rein" Befehl gesendet.



Dann habe ich ein weiteres DOIF angelegt, das im Winter oder bei niedrigen Temperaturen die Automatik abschaltet und auch wieder anschaltet bei wärmeren Temperaturen. Ob das überhaupt notwendig ist bin ich mir auch nicht ganz sicher. Aber wir hier im Süden haben schon mal im Winter kaltes Wetter und die Sonne kann trotzdem kräftig sein. Daher eben diese "Winterabschaltung".

Ich habe das DOIF "MK_auto_on_off" genannt:
([Schatten:sensor-ds18b20-temperature:d] < 15) (set MK_auto_Temp disable) DOELSEIF ([Schatten:sensor-ds18b20-temperature:d] > 18) (set MK_auto_Temp enable)
Also bei unter 15 C wird die Automatik abgeschaltet bei über 18 C wieder aktiviert.


So, das wars im Grunde schon. Somit denke ich könnte es gut klappen. Die Temperatur und Zeitwerte sind sicherlich noch anzupassen. Ich warte nun auf den Frühling/Sommer ;-)


Zur Installation (nochmal - Sicherung raus bei den Arbeiten!). Der Jalousietaster Extern wird mit einem Schwachstromkabel versorgt und geht direkt zum Sonoff Dual auf die Anschlüße der Externen Schalt GPIO´s. Der Dual wird mit 230V versorgt und die Markisen Stromleitung direkt am Dual mit aufgeklemmt. Neutralleiter und Erdungsleitungen ebenfalls miteinander verklemmt. Ich empfehle hier dringend dazu, einen Elektriker dazu zu holen! Da ich selber einer bin weiß ich was ich da tue!!!!!
Die beiden TH10 Sonoff habe ich einmal unter meinem Glasdach und den Fühler darüber an die Hausmauer geführt, der Fühler ist Wasserdicht. Hier muss ich noch sehen ob er nicht zu warm wird in der Sonne, evtl muss ich ihn noch in ein PVC Gehäuse verbauen (Außenfühler Heizung zb.)
Den Schatten TH10 habe ich in einem Geräteschuppen und den Fühler auf die Nordseite nach außen geführt.
Beide TH10 benötigen natürlich auch einen Stromanschluß.
Die beiden TH10 haben noch den Charme, dass sie ja einen freien Schaltkontakt haben. Hier überlege ich mir evtl. eine Beleuchtung oder ähnliches für die Terrasse noch mit Schalten zu lassen...

Bislang läuft es recht ordentlich. Nur die Temperaturwerte werde ich sicher noch besser Einstellen müssen.

Ich meine für 35-40 Euro ist das nicht zu teuer, denn Markise, Raspberry usw hatte ich ja alles schon im Einsatz ;-)

Gruß Albi

PS: Das ganze habe ich auch noch in mein TabletUI eingebunden. Also den REIN/RAUS jeweils als Switch eingefügt. Und auch die beiden Temperaturen lasse ich mir in TabletUI mit anzeigen. Weiter habe ich ebenfalls in der HA-Bridge ein Device angelegt, das eben den REIN/RAUS über Alexa ECHO bedienen lässt. Hier ein kleiner Tipp. "REIN hört sich wie EIN an und RAUS wie AUS" so kommt Alexa gut klar damit.

TODO:
- Anlegen eines Schalters in TabletUI das die Automatik deaktiviert/aktiviert. Evtl auch über DOIF
- Anlegen eines DOIF das den Externen Ausgang des Dual überwacht und somit ein externes Schalten (Alexa oder Taster) mitbekommt und es an das Rollo Modul mit gibt um eben immer den gleichen Status zu haben.


Fhem Raspberry3+

TabletUI mit Abfallkalender, der auch per Telegramm sendet - Verkehrsmeldung über Google, das per DOIF an Telegramm bei Störung meldet - Sonnoff mit Tasmota (mqtt) und Shelly (mqtt und mqtt2) - Alexa Verknüpfung - Benzinpreis auf Tablet UI über HTTPMOD - Wetter + Pollen

Albi

So, nachdem heute endlich die Sonne rausgekommen ist. Funktioniert einwandfrei. Inzwischen habe ich es auch in Tablet UI eingebunden und auch die Externen Taster werden überwacht.

Im ROLLO Wiki liegt hierzu eine Anleitung ganz unten - für die Externe Schalterüberwachung!

Tablet UI sieht so aus:
<li data-row="5" data-col="4" data-sizex="2" data-sizey="1">

<header>Markise</header>



<p><div class="row">

<div class="col">
<div data-type="label">Markise Rein</div>
<div data-type="switch" data-icon="oa-fts_shutter_up" data-device='Sonoff_Markise_Rein' data-set-on="on" data-set-off="off" class="green"></div>
</div>
<div class="col">
<div data-type="label">Markise Raus</div>
<div data-type="switch" data-icon="oa-fts_shutter_down" data-device='Sonoff_Markise_Raus' data-set-on="on" data-set-off="off" class="green"></div>
</div>
<div class="col">
<div data-type="label">Automatik</div>
<div data-type="switch" data-icon="oa-time_automatic" data-device='MK_Automatik' data-set-on="on" data-set-off="off" class="orange"></div>
</div>
<div class="col">
<p></p><div data-type="joinedlabel" data-device="Schatten" data-get='["NAME","sensor-ds18b20-temperature"]'> class=""</div>
<p></p><div data-type="joinedlabel" data-device="Sonne" data-get='["NAME","sensor-ds18b20-temperature"]'> class=""</div>
<p></p><div data-type="joinedlabel" data-device="Markise" data-get='["NAME","STATE"]'> class=""</div>
</div>

</div>

  </li>


Fhem Raspberry3+

TabletUI mit Abfallkalender, der auch per Telegramm sendet - Verkehrsmeldung über Google, das per DOIF an Telegramm bei Störung meldet - Sonnoff mit Tasmota (mqtt) und Shelly (mqtt und mqtt2) - Alexa Verknüpfung - Benzinpreis auf Tablet UI über HTTPMOD - Wetter + Pollen

Albi

Hi,

nachdem es in der "Hitze" momentan ja im Betrieb ist...

Folgender nachtrag:

Ich habe inzwischen ein Automatisches reinfahen angelegt, so dass die Markise unahbhängig von der Temretatur um 21 Uhr reinfährt, da um 21 Uhr eben Schatten auf meiner Terasse ist. So habe ich es wieder heller wenn ich draussen sitze.

Bisher funktioniert es fehlerfrei und ich bin sehr zufrieden.

Gruß Albi
Fhem Raspberry3+

TabletUI mit Abfallkalender, der auch per Telegramm sendet - Verkehrsmeldung über Google, das per DOIF an Telegramm bei Störung meldet - Sonnoff mit Tasmota (mqtt) und Shelly (mqtt und mqtt2) - Alexa Verknüpfung - Benzinpreis auf Tablet UI über HTTPMOD - Wetter + Pollen