S7 Beispielkonfiguration: Unterschied zwischen den Versionen

Aus FHEMWiki
(→‎Sensorik mit OWX: PWM hinzugefügt)
Zeile 277: Zeile 277:


==FHEM-S5-Heizungssteuerung neu anlegen==
==FHEM-S5-Heizungssteuerung neu anlegen==
Nachdem die S5-Unterstützung fester Bestandteil von FHEM ist und vorher auch keine Probleme mit dem verwendeten S7-Modul auftraten, geht es jetzt ans Eingemachte - die Steuerung der Heizung. Die Steuerung soll nun (fast) ausschließlich von FHEM erledigt werden. Die S5 dient hier nur noch als "dumme" Ausgangsklemme für die  von FHEM gesteuerten Aktoren. Damit soll der Aufwand und die Komplexität der Steuerung reduziert werden. Eine Anpassung des S5-Programms soll so kaum noch notwendig sein. Damit entfällt auch das lästige Umstecken der PG-Schnittstelle.  
Nachdem die S5-Unterstützung fester Bestandteil von FHEM ist und vorher auch keine Probleme mit dem verwendeten S7-Modul auftraten, geht es jetzt ans Eingemachte - die Steuerung der Heizung. Die Steuerung soll nun (fast) ausschließlich von FHEM erledigt werden, weil es damit leichter möglich ist umfangreiche Abhängigkeiten abzubilden und entsprechenden Module fertig zur Verfügung stehen. Die S5 dient hier nur noch als "dumme" Ausgangsklemme für die  von FHEM gesteuerten Aktoren. Damit soll der Aufwand und die Komplexität der Steuerung reduziert werden. Eine Anpassung des S5-Programms soll so kaum noch notwendig sein, um auch das lästige Umstecken der PG-Schnittstelle zu erledigen.  
===Sensorik mit OWX===
===Sensorik mit OWX===
Im ersten Schritt habe ich die bisherige analoge Temperaturmessung mit [http://www.sprut.de/electronic/temeratur/temp.htm gemultiplexten B511] am Analogeingang der SPS durch [https://wiki.fhem.de/wiki/Kategorie:1-Wire Sensoren am 1-Wire-Bus] ersetzt, um mehr Messtellen ohne aufwändige Kalibrierung und Verkabelung zu bedienen und auch die Luftfeuchte und die solare Einstrahlung zu messen. FHEM stellt die zwei weitgehend getrennten Module owserver und OWX zur Unterstützung des 1-Wire-Busses zur Verfügung. Nach erfolgreichen Tests ist es OWX geworden, weil hier ohne Umwege über zum Teil [https://forum.fhem.de/index.php?topic=56881.0 haklige Fremdsoftware-Installationen] direkt mit Perl auf den Bus zugegriffen wird. Bisher läuft das Verfahren stabil.
Im ersten Schritt habe ich die bisherige analoge Temperaturmessung mit [http://www.sprut.de/electronic/temeratur/temp.htm gemultiplexten B511] am Analogeingang der SPS durch [https://wiki.fhem.de/wiki/Kategorie:1-Wire Sensoren am 1-Wire-Bus] ersetzt, um mehr Messtellen ohne aufwändige Kalibrierung und Verkabelung zu bedienen und auch die Luftfeuchte und die solare Einstrahlung zu messen. FHEM stellt die zwei weitgehend getrennten Module owserver und OWX zur Unterstützung des 1-Wire-Busses zur Verfügung. Nach erfolgreichen Tests ist es OWX geworden, weil hier ohne Umwege über zum Teil [https://forum.fhem.de/index.php?topic=56881.0 haklige Fremdsoftware-Installationen] direkt mit Perl auf den Bus zugegriffen wird. Bisher läuft das Verfahren stabil.
Zeile 291: Zeile 291:
*Status von OneWire  unter Unsorted im WEB-Interface muss Active sein,
*Status von OneWire  unter Unsorted im WEB-Interface muss Active sein,
*ersten Sensor einzeln an den Bus geklemmt,
*ersten Sensor einzeln an den Bus geklemmt,
*in der Detailansicht get Onewire devices ausgewählt,
*in der Detailansicht {{Taste|get}} Onewire {{Taste|devices}} ausgewählt,
*die erscheinende Liste mit dem ersten Sensor in die Textdatei owx1 kopiert,
*die erscheinende Liste mit dem ersten Sensor in die Textdatei owx1 kopiert,
*owx1 als owx-uebersicht gespeichert und den Zweck des Sensors ergänzt,
*owx1 als owx-uebersicht gespeichert und den Zweck des Sensors ergänzt,
Zeile 297: Zeile 297:
*shutdown restart ausgeführt, damit OWX den ersten Sensor vergisst,
*shutdown restart ausgeführt, damit OWX den ersten Sensor vergisst,
*nächsten Sensor zusätzlich an den Bus geklemmt,
*nächsten Sensor zusätzlich an den Bus geklemmt,
*In der Detailansicht  wieder get Onewire devices ausgewählt,
*In der Detailansicht  wieder {{Taste|get}} Onewire {{Taste|devices}} ausgewählt,
*die erscheinende Liste in die Textdatei owx2 kopiert,
*die erscheinende Liste in die Textdatei owx2 kopiert,
*Dateien owx1 und owx2 mit Meld (diff-Programm) verglichen, um den zweiten Sensor zu separieren,
*Dateien owx1 und owx2 mit Meld (diff-Programm) verglichen, um den zweiten Sensor zu separieren,
Zeile 325: Zeile 325:
===Heizkreis-Regelung mit PWM===
===Heizkreis-Regelung mit PWM===


Die Ansteuerung der 230-V-Heizkreis-Thermoantriebe wird ohne Änderung übernommen. Sie werden direkt mit einer kontaktlosen S5-230-V-Ausgabebaugruppe geschaltet. [[Datei:Fhem-s5-ta.png]]
Die Ansteuerung der 230-V-Heizkreis-Thermoantriebe habe ich ohne Änderung aus der alten SPS-Steuerung übernommen. Sie werden direkt mit einer kontaktlosen S5-230-V-Ausgabebaugruppe geschaltet. [[Datei:Fhem-s5-ta.png]]
[[Datei:6es5451-8md11.jpg]]


Das Modul [https://wiki.fhem.de/w/index.php?title=Steuerung_einer_Fussbodenheizung_mit_dem_PWM-Modul&redirect=no FHEM-PWM] ist für die Einzelraumregelung von geschalteten Fußbodenheizungen vorgesehen. Es liest einen Temperatursollwert aus den Voreinstellungen, bildet daraus und aus der gemessenen IST-Raumtemperatur eine Regelabweichung und schaltet entsprechend die Heizkreise so, dass der SOLL-Wert schnell und ohne nennenswertes Überschwingen erreicht wird.
Das Modul [https://wiki.fhem.de/w/index.php?title=Steuerung_einer_Fussbodenheizung_mit_dem_PWM-Modul&redirect=no FHEM-PWM] ist für die Einzelraumregelung von geschalteten Fußbodenheizungen vorgesehen. Es liest einen Temperatursollwert aus den Voreinstellungen, bildet daraus und aus der gemessenen IST-Raumtemperatur eine Regelabweichung und schaltet entsprechend die Heizkreise so, dass der SOLL-Wert schnell und ohne nennenswertes Überschwingen erreicht wird.

Version vom 26. Dezember 2016, 11:37 Uhr

Dieser Artikel beschreibt eine Beispielkonfiguration für die SPS-Hardware Siemens S5. Ausgangspunkt ist eine in 20 Jahren gewachsene S5-95U-Haussteuerung. Inzwischen wurde begonnen diese um eine FHEM-Anbindung zu ergänzen. Ich demonstriere die vorhandenen Möglichkeiten, indem ich meinen Arbeitsfortschritt hier dokumentiere.

Status von S5-Ausgängen in FHEM anzeigen

Nachdem der FHEM-Host z.B. ein Raspberry Pi über die normale Programmierleitung wie hier beschrieben verbunden ist, können auf der FHEM-Kommandozeile im WEB-Interface folgende Befehle eingegeben werden.

Bei mir wird die biologische Nachklärung des Abwassers mit einem Launhardt-Reaktor erledigt. Drei Pumpen werden durch die S5-Ausgänge A13.0 .. A13.2 zeitgesteuert geschaltet. In FHEM soll der Status der Ausgänge angezeigt werden. Dazu müssen nur die betreffenden Ausgänge in FHEM bekannt gemacht werden. Änderungen am S5-Programm sind nicht notwendig.

define s5test S7 S5 /dev/ttyAMA0
define Abpumpen S7_DRead outputs 0 13.0
attr Abpumpen IODev s5test
attr Abpumpen icon icoBaum
attr Abpumpen room Abwasser
attr Abpumpen sortby 03
define Umpumpen S7_DRead outputs 0 13.1
attr Umpumpen IODev s5test
attr Umpumpen icon audio_repeat
attr Umpumpen room Abwasser
attr Umpumpen sortby 02
define Zupumpen S7_DRead outputs 0 13.2
attr Zupumpen IODev s5test
attr Zupumpen icon scene_toilet_alternat
attr Zupumpen room Abwasser
attr Zupumpen sortby 01

Launhardt-web.png

vorhandene S5-Lampensteuerung um FHEM ergänzen

Das S5-Programm für das Schalten der Beleuchtung mittels Taster soll auch bei ausgefallenem FHEM funktionieren wie bisher. Dazu schaltet FHEM spezielle Merker, die dann per ODER mit den anderen Eingängen verknüpft werden, hier Merker M 65.0 (vier ergänzte Zeilen):

NETZWERK   12           Arbeitszimmer
00AC      :U(                                      
00AD      :U(                              
00AE      :O   E  64.7                              Taster im Arbeitszimmer
00AF      :O   M  65.0                              Merker für FHEM
00B0      :)                               
00B1      :UN  M  61.4                              Flankenmerker
00B2      :S   A  65.7                              Lampe Arbeiten Giebel
00B3      :U(                               
00B4      :O   E  64.7                              Taster im Arbeitszimmer
00B5      :O   M  65.0                              Merker für FHEM
00B6      :)                               
00B7      :U   M  61.4                              Flankenmerker
00B8      :R   A  65.7                              Lampe Arbeiten Giebel
00B9      :U   A  65.7                              Lampe Arbeiten Giebel
00BA      :)
00BB      :UN  E  64.7                              Taster im Arbeitszimmer
00BC      :UN  M  65.0                              Merker für FHEM
00BD      :S   M  61.4                              Flankenmerker
00BE      :UN  E  64.7                              Taster im Arbeitszimmer
00BF      :UN  M  65.0                              Merker für FHEM
00C0      :UN  A  65.7                              Lampe Arbeiten Giebel
00C1      :R   M  61.4                              Flankenmerker
00C2      :NOP 0 
          :***

zugehörige FHEM-Konfiguration:

define s5test S7 S5 /dev/ttyAMA0                    #FHEM Hardwarezugriff konfigurieren
define M65.0 S7_DWrite flags 0 65.0                 #S5-Merker M65.0 für FHEM-Schreibzugriff
attr M65.0 IODev s5test                             #M65.0 an /dev/ttyAMA0 ist gemeint
attr M65.0 eventMap /on-for-timer 1 /trigger:tasten #1-s-Impuls außerdem Web: trigger -> tasten 
attr M65.0 icon light_pendant_light                 #Standard-Icon ersetzen
attr M65.0 room Arbeitszimmer                       #Raumzuordnung zur optischen Gruppierung
attr M65.0 webCmd tasten                            #Button auf Weboberfläche gelabelt als "tasten"

Das Merkerbyte 65 muss für den FHEM-Schreibzugriff reserviert sein. Die Lampe kann nun zusätzlich über das Webinterface oder die Smartphone-App geschaltet werden.

Namenskonvention für S5-FHEM-Projekt

Um ein gewachsenes Projekt mit erträglichem Aufwand in die neue Zeit zu retten, dabei die Übersicht nicht zu verlieren, hat sich in Anlehnung an FISCHER-NET.DE ein strukturiertes Namensschema bewährt. Die langen FHEM-Namen passen nur als Symbolik-Kommentar in die S5.

Der Aufbau der Namen: A.B.C.D

A 	  	Ort im Gebäude oder auf dem Grundstück
B 	  	Raum oder nähere Örtlichkeit
C 	  	Gerät
D               Zweck

Heizungsvorlauf Temperatursensor im Obergeschoss: OG.hr.DS1820.Hz_VL

Rollladen im Schlafzimmer öffnen: OG.sz.M1763.RlHo

A  	        ID 	  	Beschreibung
 	  	KG 	  	Kellergeschoß
 	  	EG 	  	Erdgeschoß
 	  	OG 	  	Obergeschoß
 	  	SB 	  	Spitzboden
 	  	AB 	  	Außenbereich 
 	  	  	  	 
B 	  	ID 	  	Beschreibung
 	  	wa 	  	Wanne
                du              Dusche
 	  	wz 	  	Wohnen, Weg
 	  	fl 	  	Flur
 	  	cp 	  	Carport
 	  	hr 	  	Heizung
 	  	hv	  	Holzvergaser
 	  	k	  	Keller
 	  	ku 	  	Küche
 	  	sz 	  	Straße
 	  	sz 	  	Schlafen
 	  	  	  	 
C 	        <Gerätename>

D               <Zweck>

FHEM-S5-Lampensteuerung tastbar um ein/aus ergänzen

Bei einem Wandtaster kann entschieden werden, welchen Zustand die Lampe hat, weil man sie sieht. Anders beim Webinterface, hier wäre ein gezieltes ein- bzw. ausschalten besser, weil man eventuell entfernt handelt. Damit läßt sich auch eine zentrales Licht-AUS bzw. eine Alarmbeleuchtung mit ALLES-AN realisieren. Je ein 16-Bit-Word wird für das Tasten, das Einschalten bzw. das Ausschalten vorgesehen. Das reicht für maximal 16 Lampen. Hier also das MW164 für Tasten, MW166 für Ein und MW168 für AUS. M164.7 für das Tasten, M166.7 für EIN und M168.7 für AUS der Giebellampe. Die notwendigen Konfigurationen für weitere Lampen können so innerhalb der fhem.cfg kopiert und brauchen nur minimal angepasst werden. Ich empfehle vor Manipulationen der fhem.cfg unter Umgehung des dafür vorgesehenen Webinterfaces unbedingt ein Backup dieser Datei anzufertigen.

S5-Programm nochmals ergänzt

NETZWERK   12           Arbeitszimmer
00AC      :O(
00AD      :U(                                       
00AE      :U(
00AF      :O   -AzLiGt                     E64.7    Lichttaster
00B0      :O   -M 164.7                    M164.7   OG.Az.M1647.LaGiTast FHEM
00B1      :)
00B2      :UN  -AzLaGf                     M61.4    Flankenmerker
00B3      :)
00B4      :O   -M 166.7                    M166.7   OG.Az.M1667.LaGiEin FHEM
00B5      :S   -AzLaG                      A65.7    Lampe Arbeiten Giebel
00B6      :O(
00B7      :U(
00B8      :O   -AzLiGt                     E64.7    Lichttaster
00B9      :O   -M 164.7                    M164.7   OG.Az.M1647.LaGiTast FHEM
00BA      :)
00BB      :U   -AzLaGf                     M61.4    Flankenmerker
00BC      :)
00BD      :O   -M 168.7                    M168.7   OG.Az.M1667.LaGiAus FHEM
00BE      :R   -AzLaG                      A65.7    Lampe Arbeiten Giebel
00BF      :U   -AzLaG                      A65.7    Lampe Arbeiten Giebel
00C0      :)
00C1      :UN  -AzLiGt                     E64.7    Lichttaster
00C2      :UN  -M 164.7                    M164.7   OG.Az.M1647.LaGiTast FHEM
00C3      :S   -AzLaGf                     M61.4    Flankenmerker
00C4      :UN  -AzLiGt                     E64.7    Lichttaster
00C5      :UN  -M 164.7                    M164.7   OG.Az.M1647.LaGiTast FHEM
00C6      :UN  -AzLaG                      A65.7    Lampe Arbeiten Giebel
00C7      :R   -AzLaGf                     M61.4    Flankenmerker
00C8      :NOP 0

FUP-Giebellampe.png

zugehöriger Abschnitt aus der fhem.cfg

define s5test S7 S5 /dev/ttyAMA0
define OG.az.M1647.LichtGtast S7_DWrite flags 0 164.7
attr OG.az.M1647.LichtGtast IODev s5test
attr OG.az.M1647.LichtGtast alias Giebellampe
attr OG.az.M1647.LichtGtast eventMap /on-for-timer 1 /trigger:tasten
attr OG.az.M1647.LichtGtast icon light_pendant_light
attr OG.az.M1647.LichtGtast room Arbeitszimmer
attr OG.az.M1647.LichtGtast webCmd tasten
define OG.az.M1667.LichtGaus S7_DWrite flags 0 166.7
attr OG.az.M1667.LichtGaus IODev s5test
attr OG.az.M1667.LichtGaus alias Giebellampe.aus
attr OG.az.M1667.LichtGaus eventMap /on-for-timer 1 /trigger:tasten
attr OG.az.M1667.LichtGaus icon light_light
attr OG.az.M1667.LichtGaus room Arbeitszimmer
attr OG.az.M1667.LichtGaus webCmd tasten
define OG.az.M1687.LichtGein S7_DWrite flags 0 168.7
attr OG.az.M1687.LichtGein IODev s5test
attr OG.az.M1687.LichtGein alias Giebellampe.an
attr OG.az.M1687.LichtGein eventMap /on-for-timer 1 /trigger:tasten
attr OG.az.M1687.LichtGein icon light_light_dim_100
attr OG.az.M1687.LichtGein room Arbeitszimmer
attr OG.az.M1687.LichtGein webCmd tasten

Das FHEM-Gerät trägt nun einen strukturierten Namen, um es leicht zuordnen zu können. Auf der grafischen Oberfläche ist dies durch die Raumzuordung überflüssig. Hier wird der Alias Giebellampe verwendet. Außerdem kann man es gezielt aus- bzw. eintasten.

Ergebnis Giebellampe2.png

FHEM-S5-Rolladensteuerung ergänzen

In meiner S5 existiert bisher ein Programm welches nur einen Taster mit hoch - stop - runter - stop verwendet. Bei der Rolladensteuerung über das Webinterface ist es sinnvoller je einen Button für das Hochfahren, einen für das Runterfahren und einen für STOP zu konfigurieren. Wie bei der Lampenschaltung soll sich auch hier ein zentrales HOCH bzw. RUNTER für alle vorhandenen Rolläden realisieren lassen. Dazu werden in der S5 das Merkerbyte MB176 bzw. M176.3 für HOCH und MB178 bzw. M178.3 für RUNTER und MB177 bzw. M177.3 für STOP für den FHEM-Zugriff konfiguriert. Damit sind maximal acht Rollläden .0 bis .7 möglich.

S5-Programm

NETZWERK   2            RL Schlafen hoch
0012      :O(
0013      :O   -XRUPS                      M19.2    Tasterauswertung RL Schlafen hoc
0014      :O   -M 176.3                    M176.3   OG.Sz.M1763.RlHo FHEM
0015      :)
0016      :UN  -RDNS                       A10.5    Ausgang RLaden runter Schlafen
0017      :L   KT 030.2
0019      :SA  T  5                                 Timer Schlafen hoch
001A      :O   -RDNS                       A10.5    Ausgang RLaden runter Schlafen
001B      :O   -XRDNS                      M19.3    Tasterauswertung RL Schlafen run
001C      :O   -RStopS                     M19.4    RL Stop
001D      :O   -M 177.3                    M177.3   OG.Sz.M1763.RlStop FHEM
001E      :O   -M 178.3                    M178.3   OG.Sz.M1763.RlRu FHEM
001F      :R   T  5                                 Timer Schlafen hoch
0020      :NOP 0
0021      :NOP 0
0022      :U   T  5                                 Timer Schlafen hoch
0023      :=   -RUPS                       A10.4    Ausgang RLaden hoch Schlafem
0024      :***
       
NETZWERK   3            RL Schlafen runter
0025      :O(
0026      :O   -XRDNS                      M19.3    Tasterauswertung RL Schlafen run
0027      :O   -M 178.3                    M178.3   OG.Sz.M1763.RlRu FHEM
0028      :)
0029      :UN  -RUPS                       A10.4    Ausgang RLaden hoch Schlafen
002A      :L   KT 030.2
002C      :SA  T  6                                 Timer Schlafen runter
002D      :O   -RUPS                       A10.4    Ausgang RLaden hoch Schlafen
002E      :O   -XRUPS                      M19.2    Tasterauswertung RL Schlafen hoc
002F      :O   -RStopS                     M19.4    RL Stop
0030      :O   -M 177.3                    M177.3   OG.Sz.M1763.RlStop FHEM
0031      :O   -M 176.3                    M176.3   OG.Sz.M1763.RlHo FHEM
0032      :R   T  6                                 Timer Schlafen runter
0033      :NOP 0
0034      :NOP 0
0035      :U   T  6                                 Timer Schlafen runter
0036      :=   -RDNS                       A10.5    Ausgang RLaden runter Schlafen
0037      :***
      

FUP-RL.png

Der Motorschutz-Timer sorgt dafür, dass die Stromversorgung nach der maximalen Laufzeit abgeschaltet wird.

zugehöriger Abschnitt aus der fhem.cfg

Die Zeilen mit event-min-interval und .*:600 event-on-change-reading state dienen wie im [S7-Wiki] beschrieben der Geschwindigkeitsverbesserung.

define OG.sz.M1763.RlHo S7_DWrite flags 0 176.3
attr OG.sz.M1763.RlHo IODev s5test
attr OG.sz.M1763.RlHo alias Rollladen.hoch
attr OG.sz.M1763.RlHo event-min-interval .*:600
attr OG.sz.M1763.RlHo event-on-change-reading state
attr OG.sz.M1763.RlHo eventMap /on-for-timer 1 /trigger:tasten
attr OG.sz.M1763.RlHo icon rc_UP
attr OG.sz.M1763.RlHo room Schlafen
attr OG.sz.M1763.RlHo sortby 01
attr OG.sz.M1763.RlHo webCmd tasten

define OG.sz.M1773.RlStop S7_DWrite flags 0 177.3
attr OG.sz.M1773.RlStop IODev s5test
attr OG.sz.M1773.RlStop alias Rollladen.stop
attr OG.sz.M1773.RlStop event-min-interval .*:600
attr OG.sz.M1773.RlStop event-on-change-reading state
attr OG.sz.M1773.RlStop eventMap /on-for-timer 1 /trigger:tasten
attr OG.sz.M1773.RlStop icon rc_REC
attr OG.sz.M1773.RlStop room Schlafen
attr OG.sz.M1773.RlStop sortby 02
attr OG.sz.M1773.RlStop webCmd tasten

define OG.sz.M1783.RlRu S7_DWrite flags 0 178.3
attr OG.sz.M1783.RlRu IODev s5test
attr OG.sz.M1783.RlRu alias Rollladen.runter
attr OG.sz.M1783.RlRu event-min-interval .*:600
attr OG.sz.M1783.RlRu event-on-change-reading state
attr OG.sz.M1783.RlRu eventMap /on-for-timer 1 /trigger:tasten
attr OG.sz.M1783.RlRu icon rc_DOWN
attr OG.sz.M1783.RlRu room Schlafen
attr OG.sz.M1783.RlRu sortby 03
attr OG.sz.M1783.RlRu webCmd tasten

Ergebnis

Rl-web.png

Der Rolladen kann nun über das Webinterface auf beliebigen Geräten gezielt geschlossen bzw. geöffnet werden.

FHEM-S5-Bewässerungssteuerung ergänzen

Bisher können vier Gartenschläuche mit Perlschläuchen über Magnetventile per Taster bzw. Zeitschaltung betrieben werden. Zusätzlich soll warmes Wasser zugemischt werden können, um eine Überhitzung der Dachkollektoren zu verhindern. Die Zeitschaltung ist nur äußerst unkomfortabel über einen Datenbaustein zu konfigurieren und wurde daher kaum benutzt. Im Ergebnis lief das Wasser im Garten oft unkontrolliert über viele Stunden. Ziel mit FHEM ist eine deutliche Verbesserung. Zunächst wird die Einschaltzeit per FHEM auf 90 min begrenzt.

Schaltplan der Bewässerung

wird fortgesetzt wenn es wieder wärmer ist ..

FHEM-S5-Heizungssteuerung neu anlegen

Nachdem die S5-Unterstützung fester Bestandteil von FHEM ist und vorher auch keine Probleme mit dem verwendeten S7-Modul auftraten, geht es jetzt ans Eingemachte - die Steuerung der Heizung. Die Steuerung soll nun (fast) ausschließlich von FHEM erledigt werden, weil es damit leichter möglich ist umfangreiche Abhängigkeiten abzubilden und entsprechenden Module fertig zur Verfügung stehen. Die S5 dient hier nur noch als "dumme" Ausgangsklemme für die von FHEM gesteuerten Aktoren. Damit soll der Aufwand und die Komplexität der Steuerung reduziert werden. Eine Anpassung des S5-Programms soll so kaum noch notwendig sein, um auch das lästige Umstecken der PG-Schnittstelle zu erledigen.

Sensorik mit OWX

Im ersten Schritt habe ich die bisherige analoge Temperaturmessung mit gemultiplexten B511 am Analogeingang der SPS durch Sensoren am 1-Wire-Bus ersetzt, um mehr Messtellen ohne aufwändige Kalibrierung und Verkabelung zu bedienen und auch die Luftfeuchte und die solare Einstrahlung zu messen. FHEM stellt die zwei weitgehend getrennten Module owserver und OWX zur Unterstützung des 1-Wire-Busses zur Verfügung. Nach erfolgreichen Tests ist es OWX geworden, weil hier ohne Umwege über zum Teil haklige Fremdsoftware-Installationen direkt mit Perl auf den Bus zugegriffen wird. Bisher läuft das Verfahren stabil.

Zunächst benötigt man eine von OWX unterstützte Hardware, um auf den 1-Wire-Bus zuzugreifen. Ich habe mich für die zuverlässigere Variante Raspi -> USB -> 1-wire über einen DS9097U kompatiblen Adapter und gegen die wackligere Varianten entschieden. Nützlich dazu war die Anleitung von waschto.eu.

Emblem-question-yellow.svgUm die Ausfallsicherheit der Temperaturmessung zu erhöhen, sollte das verwendete USB-Devices so wie hier beschrieben fest dem Adapter zugeordnet werden. Sonst kann es passieren, dass beim Umstecken von USB-Geräten unbemerkt der gesamte Bus ausfällt.


Empfehlenswerte kombinierte Sensoren für Temperatur und Luftfeuchtigkeit bzw. Einstrahlung habe ich hier gekauft. Für die restlichen Temperaturmesstellen sind es fertig konfektionierte DS1820 mit Hülse geworden, wie man sie sehr preiswert bei z.B. ebay bekommt.

Viel Zeit kann man vertrödeln, wenn man die korrekte Busverkabelung als Nebensache ansieht. Korrekt sieht sie entsprechend der Diskussion im Forum so aus: Korrekte 1-wire Verkabelung.jpg Diese LSA+ Boxen habe ich für den direkten Anschluss bzw. für über max. 3 m lange Stubs von konfektionierten Sensoren verwendet und sonst Abzweige in Feuchtraumabzweigdosen mit Data-Return-Ader über Leuchtenklemmen hergestellt. Noch besser ist womöglich die im Forum empfohlenen Variante. Mögliche Problemlösungen sind hier dokumentiert. Als Leitungsmaterial für die gewählte Verbindungstechnik hat sich bei mir für ca. 100 m, Telefonleitung für feste Verlegung YStY 2x2x0,6 bewährt.

Bei der Sensor-Installation bin ich mit Hilfe der OWX-Automatik schrittweise vorgegangen, um die Übersicht zu behalten:

  • Status von OneWire unter Unsorted im WEB-Interface muss Active sein,
  • ersten Sensor einzeln an den Bus geklemmt,
  • in der Detailansicht get Onewire devices ausgewählt,
  • die erscheinende Liste mit dem ersten Sensor in die Textdatei owx1 kopiert,
  • owx1 als owx-uebersicht gespeichert und den Zweck des Sensors ergänzt,
  • config nicht gespeichert!, um Sensoren immer wieder komplett neu abzufragen,
  • shutdown restart ausgeführt, damit OWX den ersten Sensor vergisst,
  • nächsten Sensor zusätzlich an den Bus geklemmt,
  • In der Detailansicht wieder get Onewire devices ausgewählt,
  • die erscheinende Liste in die Textdatei owx2 kopiert,
  • Dateien owx1 und owx2 mit Meld (diff-Programm) verglichen, um den zweiten Sensor zu separieren,
  • Differenz in owx-uebersicht einfügt und Zweck ergänzt,
  • Differenz nach owx1 übernommen, für den neuen IST-Zustand,
  • usw. usf.
  • erst wenn der letzte Sensor erkannt wurde, fhem.cfg gespeichert,
  • Sensoren entsprechend dem Benennungsschema und Zweck umbenannt:
rename OWX_20_FF0939521603 OG.hr.DS1820.Hz

fhem.cfg Ausschnitt komplett mit Zuordnung und Lastoptimierung für den FHEM-Host:

define OG.hr.DS1820.Hz_VL OWTHERM DS18B20 FF0939521603
attr OG.hr.DS1820.Hz_VL IODev OneWire
attr OG.hr.DS1820.Hz_VL alias Hz-VL
attr OG.hr.DS1820.Hz_VL event-min-interval 60
attr OG.hr.DS1820.Hz_VL event-on-change-reading temperature:0.3
attr OG.hr.DS1820.Hz_VL group FBH-Mischer,Fußboden
attr OG.hr.DS1820.Hz_VL model DS18B20
attr OG.hr.DS1820.Hz_VL room Heizung
attr OG.hr.DS1820.Hz_VL sortby 01

Erfolgskontrolle: Owx-ergebnis.png

Heizkreis-Regelung mit PWM

Die Ansteuerung der 230-V-Heizkreis-Thermoantriebe habe ich ohne Änderung aus der alten SPS-Steuerung übernommen. Sie werden direkt mit einer kontaktlosen S5-230-V-Ausgabebaugruppe geschaltet. Fhem-s5-ta.png 6es5451-8md11.jpg

Das Modul FHEM-PWM ist für die Einzelraumregelung von geschalteten Fußbodenheizungen vorgesehen. Es liest einen Temperatursollwert aus den Voreinstellungen, bildet daraus und aus der gemessenen IST-Raumtemperatur eine Regelabweichung und schaltet entsprechend die Heizkreise so, dass der SOLL-Wert schnell und ohne nennenswertes Überschwingen erreicht wird.

zurück zum [Ausgangs-Artikel]