Difference between revisions of "Nutzung in FHEM (Deutsch)"

From Ethersex_Wiki
Jump to: navigation, search
m (Grundlagen)
Line 7: Line 7:
 
== Grundlagen ==
 
== Grundlagen ==
  
Ausgehend von einem fertigen und per Telnet erreichbaren Ethersex muss in FHEM zuerst per define das entsprechende Device definiert werden.
+
Ausgehend von einem fertigen und per Telnet erreichbaren Ethersex muss in FHEM zuerst das entsprechende Device definiert werden.
 
<pre>
 
<pre>
 
define NETIO_WZ ECMD telnet 192.168.3.81:2701
 
define NETIO_WZ ECMD telnet 192.168.3.81:2701
Line 19: Line 19:
 
Die Definitionen für IC2272, Intertechno, HD44780-LCD, DHT22 und 1wire sind nun eingebunden. In den folgenden Abschnitten wird auf die einzelnen Devices näher eingegangen. Generell sind Pfade und IP-Adressen sowie übergebene Parameter noch entsprechend der eigenen Konfiguration anzupassen.
 
Die Definitionen für IC2272, Intertechno, HD44780-LCD, DHT22 und 1wire sind nun eingebunden. In den folgenden Abschnitten wird auf die einzelnen Devices näher eingegangen. Generell sind Pfade und IP-Adressen sowie übergebene Parameter noch entsprechend der eigenen Konfiguration anzupassen.
  
== 1-Wire Temperatursensoren ==
+
== [[Onewire_(Deutsch) | 1-Wire Temperatursensoren]] ==
  
 
todo
 
todo
Line 27: Line 27:
 
todo
 
todo
  
== [[BMP085 | BMP085/BMP180 Drucksensor]] ==
+
== [[BMP085 | BMP085/BMP180 Luftdrucksensor]] ==
  
 
Ethersex unterstützt den BMP085 (bzw. den BMP180; der Code ist identisch) über das [[I2C_(Deutsch) | I2C]]-Interface. Da der Sensor für 3.3V Betriebsspannung ausgelegt ist, muss entweder der I2C-Pegel angepasst oder der ATMega auf 3.3V adaptiert werden. Weiterhin sollte die Höhe über Null bekannt sein. Beispiel: Eine Abfrage per [[ECMD]] mit ''bmp085 pressnn 59000'' bedeutet, das ich 590m (59000cm) über NN wohne.  
 
Ethersex unterstützt den BMP085 (bzw. den BMP180; der Code ist identisch) über das [[I2C_(Deutsch) | I2C]]-Interface. Da der Sensor für 3.3V Betriebsspannung ausgelegt ist, muss entweder der I2C-Pegel angepasst oder der ATMega auf 3.3V adaptiert werden. Weiterhin sollte die Höhe über Null bekannt sein. Beispiel: Eine Abfrage per [[ECMD]] mit ''bmp085 pressnn 59000'' bedeutet, das ich 590m (59000cm) über NN wohne.  
Line 36: Line 36:
  
 
bmp085.classdef erstellen
 
bmp085.classdef erstellen
 
 
<pre>
 
<pre>
 
get BMP cmd {"bmp085 temp\n\000bmp085 pressnn 59000\n"}
 
get BMP cmd {"bmp085 temp\n\000bmp085 pressnn 59000\n"}
Line 53: Line 52:
 
}
 
}
 
</pre>
 
</pre>
 
 
Die Temperatur wird in °C mit einer Nachkommastelle gelesen, der Luftdruck in hPa bzw. mbar auf eine Nachkommastelle gerundet. Passende Readings werden erstellt. Das expect .* kann noch angepasst werden, um bei fehlerhaften Messwerten entsprechend zu reagieren.
 
Die Temperatur wird in °C mit einer Nachkommastelle gelesen, der Luftdruck in hPa bzw. mbar auf eine Nachkommastelle gerundet. Passende Readings werden erstellt. Das expect .* kann noch angepasst werden, um bei fehlerhaften Messwerten entsprechend zu reagieren.
  
Line 92: Line 90:
 
todo
 
todo
  
== Intertechno schalten mit RFM12 ==
+
== [[RFM12_ASK_(Deutsch) | Intertechno schalten mit RFM12]] ==
  
 
todo
 
todo
  
== IC2272 schalten mit RFM12 ==
+
== [[RFM12_ASK_(Deutsch) | IC2272 schalten mit RFM12]] ==
  
 
todo
 
todo
  
 
[[Category:Application|Application]]
 
[[Category:Application|Application]]

Revision as of 19:11, 6 August 2014

FHEM ist ein Hausautomations-Server von Rudolf Koenig et al. in Perl geschrieben, um diverse per Funk und Kabel angebundene Komponenten aus dem Bereich der Hausautomation zu steuern. Er ist lizensiert unter der GPL v2.

Das AVR-Net-IO von Pollin mit Ethersex dient als preisgünstiger Einstieg in die Hausautomatisierung. Über ECMD lassen sich dabei theoretisch alle in Ethersex vorhandenen Möglichkeiten nutzen, sofern in FHEM entsprechende ECMD-Devices definiert und eingebunden werden.

Grundlagen

Ausgehend von einem fertigen und per Telnet erreichbaren Ethersex muss in FHEM zuerst das entsprechende Device definiert werden.

define NETIO_WZ ECMD telnet 192.168.3.81:2701

Eine serielle Anbindung kann mit define <name> ECMD serial <SerialDevice>[<@BaudRate>] alternativ erfolgen.

Anschließend werden die erstellten .classdef-Konfigurationsdateien der einzelnen Funktionen dem System bekannt gemacht. In diesen .classdef-Dateien (Name und Endung sind frei wählbar!) wird die Schnittstelle zwischen FHEM und ECMD/Ethersex definiert. Dabei können mit perl übergebene Parameter und empfangene Daten bearbeitet sowie die in FHEM gebräuchlichen Readings erstellt werden.

attr NETIO_WZ classdefs RFM12_2272=/opt/fhem/FHEM/rfm12_2272.classdef:RFM12_IT=/opt/fhem/FHEM/rfm12_it.classdef:LCD=/opt/fhem/FHEM/lcd.classdef:DHT22=/opt/fhem/FHEM/dht22.classdef:1WIRE=/opt/fhem/FHEM/1wire.classdef

Die Definitionen für IC2272, Intertechno, HD44780-LCD, DHT22 und 1wire sind nun eingebunden. In den folgenden Abschnitten wird auf die einzelnen Devices näher eingegangen. Generell sind Pfade und IP-Adressen sowie übergebene Parameter noch entsprechend der eigenen Konfiguration anzupassen.

1-Wire Temperatursensoren

todo

DHT22 Temperatur-/Feuchtesensoren

todo

BMP085/BMP180 Luftdrucksensor

Ethersex unterstützt den BMP085 (bzw. den BMP180; der Code ist identisch) über das I2C-Interface. Da der Sensor für 3.3V Betriebsspannung ausgelegt ist, muss entweder der I2C-Pegel angepasst oder der ATMega auf 3.3V adaptiert werden. Weiterhin sollte die Höhe über Null bekannt sein. Beispiel: Eine Abfrage per ECMD mit bmp085 pressnn 59000 bedeutet, das ich 590m (59000cm) über NN wohne.

Die im Sensor verfügbare Temperatur wird parallel ausgelesen.

Einbindung in FHEM

bmp085.classdef erstellen

get BMP cmd {"bmp085 temp\n\000bmp085 pressnn 59000\n"}
get BMP expect ".*"
get BMP postproc {\
 s/(.*)\n(.*)\n/T: $1 P: $2/; $_;\
 my $hash  = $defs{%NAME};\
 my $temperature = $1/10;\
 my $pressure = sprintf("%.1f",$2/100);\
 my $state = "T: $temperature P: $pressure";\
 \
 readingsSingleUpdate($hash, "temperature", $temperature, 1);\
 readingsSingleUpdate($hash, "pressure", $pressure, 1);\
 readingsSingleUpdate($hash, "state", $state, 1);\
 \
}

Die Temperatur wird in °C mit einer Nachkommastelle gelesen, der Luftdruck in hPa bzw. mbar auf eine Nachkommastelle gerundet. Passende Readings werden erstellt. Das expect .* kann noch angepasst werden, um bei fehlerhaften Messwerten entsprechend zu reagieren.

Die classdef wird in FHEM eingebunden (mehrere .classdef mit Doppelpunkt trennen: siehe Grundlagen):

define NETIO_STK ECMD telnet 192.168.3.89:2701
attr NETIO_STK classdefs BMP=/opt/fhem/FHEM/bmp085.classdef

Der Sensor wird definiert:

define BMP180 ECMDDevice BMP
attr BMP180 IODev NETIO_STK

Das STATE kann mit Maßeinheiten versehen werden:

attr BMP180 stateFormat { sprintf("%s°C %shPa", ReadingsVal("BMP180","temperature",0), ReadingsVal("BMP180","pressure",0)) ;; }

Eine zyklische Messung alle 4 Minuten könnte so aussehen:

define Messung_BMP at +*00:04 get BMP180 BMP
attr Messung_BMP verbose 0

Dabei unterdrückt verbose 0 einen zusätzlichen (doppelten) Logeintrag des Messvorganges.

analoge Eingänge

todo

LTC1257 D/A-Wandler

todo

HD44780 Punktmatrixdisplays

todo

Intertechno schalten mit RFM12

todo

IC2272 schalten mit RFM12

todo