18
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

KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 2: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

Logische Topologie

Visualisierung

Logic Engine

KNX®

TP

RF

EnOcean® 1-Wire® IP Bluetooth® …

Page 3: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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/

Page 4: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 5: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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)

Page 6: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

Verzeichnisstruktur

Basispfad

Konfigurationsdateien

„root“

Item-Defintionen

(eigene) Logiken

Konfiguration von sh.py

Konfiguration der Plugins

Steuerung von Logiken

Page 7: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 8: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 9: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 10: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 11: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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*)

Page 12: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 13: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 14: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

1-Wire Skalierbarkeit

60 DS18B20 1-Wire Temperatur-sensoren an einem Busmaster

4 Busmaster => 240 Sensoren

Page 15: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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

Page 16: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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.

Page 17: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

„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

Page 18: KNX, EnOcean und 1-Wire · Konfiguration # smarthome.conf lat = 51.514167 lon = 7.433889 elev = 500 tz = 'Europe/Berlin' item_change_log = yes Ortsangabe für Sonnenstand

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: [email protected] Internet: www.ing-budde.de

USt-IdNr.: DE 282081805