View
14
Download
0
Category
Preview:
Citation preview
IBBCape Ausgewählte Konfigurationsbeispiele für eine
Systemintegration mit smarthome.py
1-Wire
Ingenieurbüro Budde Dipl. Ing. Robert Budde Brücherhofstr. 131 44267 Dortmund Deutschland
Logische Topologie
Visualisierung
Logic Engine
KNX®
TP
RF
EnOcean® 1-Wire® IP Bluetooth® …
Installation
Linux-Installation ◦ Gerätespezifisch (x86, arm, ...)
eibd (KNX®) ◦ https://www.auto.tuwien.ac.at/~mkoegler/index.php/bcusdk
owfs (1-Wire®) ◦ http://owfs.org/
smarthome.py (EnOcean® + Logic Engine) ◦ http://mknx.github.io/smarthome/
…
Fertige Datenträgerabbilder
komplettes Homeautomation-Gateway ◦ Linux-Kernel 3.14.35-ti-r55
◦ Debian Jessie (testing) rootfs
◦ eibd (gestartet/überwacht via SystemD)
◦ owserver (gestartet/überwacht via SystemD)
◦ smarthome.py develop Develop-Branch, aktuellste Software
per „git pull“ aktualisierbar
gestartet/überwacht via SystemD
◦ smartVISU trunk (2.8) trunk, aktuellste Software
per „svn update“ aktualisierbar
◦ automatischer Zeitabgleich per NTP
◦ deutsche Lokalisation (de_DE.UTF-8)
Download: http://ing-budde.de/?page_id=171
Workflow
„headless“ System ◦ Kein Display/ keine Tastatur
◦ Konfiguration/Wartung/Backup über ssh
◦ Zugriff von Windows-Betriebsystemen:
„Putty“ (ssh-Console)
„WinSCP“ (ssh/scp-basierter „Explorer“)
Zyklus 1. Konfigurationsdateien öffnen, editieren und speichern
2. Per ssh-Console smarthome.py neu starten
3. (ggfl. per interaktiver Console debuggen)
Verzeichnisstruktur
Basispfad
Konfigurationsdateien
„root“
Item-Defintionen
(eigene) Logiken
Konfiguration von sh.py
Konfiguration der Plugins
Steuerung von Logiken
Konfiguration
# smarthome.conf
lat = 51.514167
lon = 7.433889
elev = 500
tz = 'Europe/Berlin'
item_change_log = yes
Ortsangabe für Sonnenstand / Zeitzone
# plugin.conf
[knx]
class_name = KNX
class_path = plugins.knx
host = 127.0.0.1
port = 6720
# send_time = 600
# time_ga = 1/1/1
# date_ga = 1/1/2
busmonitor = yes
[visu]
class_name = WebSocket
class_path = plugins.visu
smartvisu_dir = /var/www/html/smartVISU
acl = rw
[sql]
class_name = SQL
class_path = plugins.sqlite
[ow]
class_name = OneWire
class_path = plugins.onewire
host = 127.0.0.1
port = 4304
[enocean]
class_name = EnOcean
class_path = plugins.enocean
serialport = /dev/ttyS4
#[dlms]
# class_name = DLMS
# class_path = plugins.dlms
# serialport = /dev/ttyS1
# update_cycle = 20
[cli]
class_name = CLI
class_path = plugins.cli
ip = 0.0.0.0
update = True
- Adresse/Port eibd
- Zeitservice - Busmonitor
- smartVISU - Pfad - Zugriffsrechte
- SQLite für Logging
- Adresse/Port OWServer
- UART-Verb. TCM310
Beispiel EnOcean-KNX
Umschalten von KNX-Aktoren per EnOcean-Taster (PTM215)
[Hobbyraum]
[[Deckenleuchte]]
type = bool
enocean_rx_id = 0029894A
enocean_rx_eep = F6_02_01
enocean_rx_key = AO
enocean_rocker_action = toggle
enocean_rocker_sequence = released within 0.8
knx_dpt = 1
knx_send = 1/0/3
knx_cache = 1/0/4
[[Steckdosen]]
type = bool
enocean_rx_id = 0029894A
enocean_rx_eep = F6_02_01
enocean_rx_key = AI
enocean_rocker_action = toggle
enocean_rocker_sequence = released within 0.8
knx_dpt = 1
knx_send = 3/0/60
knx_cache = 3/0/61
Beispiel 1-Wire-KNX
Senden von Temperaturmesswerten auf den KNX-Bus (und eine Squeezebox)
[[Temperatursensor]]
[[[Temperatur]]]
type = num
sqlite = true
ow_addr = 28.30819F030000
ow_sensor = T12
knx_dpt = 9
knx_send = 6/3/200
knx_reply = 6/3/200
squeezebox_send = 00:04:20:27:ca:1f show line1:Aussentemperatur line2:{}C centered:1 duration:30
Weitere Item-Beispiele (1)
[iAQ_Stick]
[[PPM]]
type = num
sqlite = init
sqlite_null_value = 0
iaqstick_id = H02004-266272
iaqstick_info = ppm
[VR100]
[[Reinigung]]
type = bool
vr100_cmd = Clean
[[[Spot]]]
type = bool
vr100_cmd = Clean Spot
[[Batterie]]
[[[Fuellstand]]]
type = num
sqlite = true
vr100_info = GetCharger FuelPercent
[[[Alle_Zugaenge]]]
type = bool
eval = and
eval_trigger = *_Flur.*tuer.verriegelt | Garage.Tor_*.Status_Position_unten
[Wechselrichter]
[[Einspeiseleistung]]
type = num
sqlite = true
sma = AC_P_TOTAL
knx_dpt = 7
knx_init = 6/4/50
USB-Luftgütesensor (iaqstick*)
Vorwerk Kobold VR100 Saugroboter (vr100*)
Logische Verknüpfungen mit Wildcards
SMA SunnyBoy 5000TL-21 PV-Wechselrichter (sma*)
*Originalauthor, unter GPL-Lizenz
Weitere Item-Beispiele (2)
[Waermepumpe]
[[Aussentemperatur]]
type = num
sqlite = yes
modbus_slaveaddr = 0x01
modbus_regplc = 0x03
modbus_regaddr = 433
modbus_datatype = VT_R4
[[Quellentemperatur]]
[[[Eingang]]]
type = num
sqlite = yes
modbus_slaveaddr = 0x01
modbus_regplc = 0x04
modbus_regaddr = 529
modbus_datatype = VT_R4
[[Squeezebox]]
squeezebox_playerid = 00:04:20:27:ca:1f
[[[Power]]]
type = bool
squeezebox_send = <playerid> power {}
squeezebox_recv = <playerid> prefset server power
squeezebox_init = <playerid> power
[[[Volume_Up]]]
type = bool
enforce_updates = true
squeezebox_send = <playerid> button volup
[Stromzaehler]
[[Bezug]]
[[[Energie]]]
type = num
cache = yes
dlms_obis_code = 1.8.1
Landis+Gyr ZMD120 SmartMeter (dlms*)
Logitech Squeezebox Internetradio (squeezebox*)
Waterkotte Ai1+ Wärmepumpe (modbus*)
Beispiel-Logiken (1)
[nachtbeleuchtung]
name = Nachtbeleuchtung
filename = nachtbeleuchtung.py
watch_item = *.Automatikschalter:nacht_helligkeitswert | Zentralfunktion.Nachtmodus | Kueche.Bewegung
[elternbad_handtuchheizung]
filename = elternbad_handtuchheizung.py
crontab = 45 5 * 0,1,2,3,4 | 45 6 * 5,6
watch_item = Elternbad.Temperatur.*_Vorlauf
[elternbad_beleuchtung]
filename = elternbad_beleuchtung.py
watch_item = Elternbad.Temperatur.*_Vorlauf
[warmwasser_zirkulation]
name = 'Warmwasser-Zirkulation'
filename = warmwasser_zirkulation.py
crontab = 0 6 * 0,1,2,3,4 | 0 7 * 5,6
watch_item = *.Bewegung:inhouse
[tv_logik]
name = 'TV-Logik'
filename = tv_logik.py
watch_item = Vorratsraum.Multimedia.TV_PVR.Stromwert |
Wohnzimmer.Deckenstrahler.Automatikschalter.Helligkeitswert_unterschritten
[tagesfalle]
filename = tagesfalle.py
crontab = init | 00 21 * *
watch_item = EG_Flur.Haustuer.verriegelt
Beispiel-Logiken (2)
# Aussenbeleuchtung (Eingang & Terrassen) automatisch an bei Dunkelheit und (Zeitfenster oder Tür/Schiebetür auf)
[aussenbeleuchtung]
name = 'Aussenbeleuchtung'
filename = aussenbeleuchtung.py
# Aufruf mit init automatisch aufgrund Abfrage von Schwellwert-Item
# spätestens Automatik-Freigabe um 07:00 und frühestens Automatik-Freigabe deaktivieren um 19:00
crontab = sunrise-6<07:00 = morgen | 19:00<sunset-12 = abend
watch_item = Wetterstation.Daemmerung.Schwellwert_unterschritten | EG_Flur.Haustuer.geoeffnet |
Wohnzimmer.Fenster.Schiebetuer_*_verriegelt
# Einfahrtbeleuchtung automatisch an bei Dunkelheit und einem geöffneten Garagentor
[einfahrtbeleuchtung]
name = 'Einfahrtbeleuchtung'
filename = einfahrtbeleuchtung.py
watch_item = Wetterstation.Daemmerung.Schwellwert_unterschritten | Garage.Tor_*.Status_Position_unten
# Raffstoren-Automatikobjekt am Aktor wird bei geöffneter Tür deaktiviert (und hinterher ggfl. wieder aktiviert)
[raffstoren_automatiksteuerung]
name = 'Raffstoren-Automatiksteuerung'
filename = raffstoren_automatiksteuerung.py
watch_item = Wohnzimmer.Fenster.Schiebetuer_*_verriegelt
[ema]
name = 'EMA'
filename = ema.py
watch_item = *_Flur.EMA.Scharfschaltung_Extern* | Garage.Tor_*.Status_Position_unten |
EG_Flur.Haustuer.geoeffnet | EG_Flur.Haustuer.verriegelt | *.Fenster.*_verriegelt | *.Bewegung:inhouse |
EMA.Signalgeber_aussen.Sabotage
[kueche_steckdosen]
name = 'Küche'
filename = kueche_steckdosen.py
crontab = 0 6 * * = an | 0 23 * * = aus
watch_item = EMA.Status.extern_scharf
1-Wire Skalierbarkeit
60 DS18B20 1-Wire Temperatur-sensoren an einem Busmaster
4 Busmaster => 240 Sensoren
Varianten des IBBCape
• KNX • über aktuellen Siemens TPUART2-ASIC • Galvanische Trennung vom restlichen Cape • direkte serielle Anbindung an den eibd, ohne Umwege z.B. über USB
• 1-Wire • vier unabhängige 1-Wire-Busse über je einen dedizierten original Maxim DS2484
Busmaster-ASIC • zusätzlicher DS18B20 zur Temperaturüberwachung und direkte Funktionstests • Phoenix Contact PTSM Steckersystem: verpolungssicher, steckbar, für flexible und starre
Leitungen, ohne Schrauben • jede Steckverbindung verfügt direkt über 5V, Datenleitung und Masse
• EnOcean (nur Variante –KOE) • original Enocean Gatewaycontroller TCM310 • direkte Kompatibilität zu Lösungen die mit dem EnOcean USB300 USB-Stick funktionieren • RP-SMA-Stecker für den Anschluß einer Antenne
• Elektronische Haushaltszähler (eHZ / Smart Metering) • RJ12-Buchse für den Lesekopf, z.B. von volkszähler.org • mit Schutzbeschaltung und 5V Versorgung
IBB-KOE IBB-KO
KNX-Module
SVP2KNX
KNX-Modul für Dorma SVP Motorschlösser - Öffnungsimpuls - Tagesfalle - Stati
- Geschlossen - Verriegelt - Klinke - Tagesfalle
KNX-AS
Akustischer Signalgeber für KNX - Speisung
ausschließlich vom KNX
- 10 verschiedene Tonfolgen frei programmierbar
- Direkt per GA abspielbar
HM2KNX
KNX-Modul für Hörmann Supramatic 2 & 3 - Auf/Zu/Stop - Lüften + Licht an - Sperre Handbedien. - Stati
- Auf/Zu/Lüften - „Fährt“ - uvm.
„Open Hardware“
24306-onewire-platine-messung-luftfeuchtigkeit
- Layout - Sammelbestellung - Detaillierte
Aufbau(Löt)Anleitung
1-Wire Feuchtesensor
26825-edisen-touch-sensoren-an-busankoppler-2-fach-für-45-euro - Stückliste - Bauanleitung - Programmieranleitung für
Busankoppler
EDISEN Touch-Sensoren - 1-4 Edisen Touchsensoren
direkt am KNX-Busankoppler - Versorgung über KNX
Rechtliches
Ingenieurbüro Budde Dipl. Ing. Robert Budde Brücherhofstr. 131 44267 Dortmund Deutschland
Alle Markennamen, Warenzeichen und eingetragenen Warenzeichen, die in dieser Präsentation verwendet werden, sind Eigentum Ihrer rechtmäßigen Eigentümer. Sie dienen hier nur der Beschreibung bzw. der Identifikation der jeweiligen Firmen, Produkte und Dienstleistungen.
1-Wire ist eingetragene Marke der Maxim Integrated Products, Inc. KNX ist eingetragene Marke der KNX Association Brüssel. EnOcean und das EnOcean-Logo sind eingetragene Warenzeichen der EnOcean GmbH. Alle anderen Markenzeichen oder registrierte Marken sind Eigentum der jeweiligen Inhaber.
Telefon: +49 231 284 8 284 E-Mail: admin@ing-budde.de Internet: www.ing-budde.de
USt-IdNr.: DE 282081805
Recommended