AVR-NET-IO

Seitenversionierung:
Version 1.022.01.2011Initialversion
Version 1.104.11.2013Ergänzungen
Version 1.224.11.2013Ergänzungen
Dr. Boris Neubert omega@online.de
Hausautomation
Home

Zusammenfassung

Unsere Hausautomation beruht auf den Systemen FS20 und X10. Die Steuerung erfolgt mittels eines Hausautomationsservers und der Software FHEM. Ziel war es, die von der Firma Velux stammenden funkferngesteuerten Rolladen (Abbildung der Fernsteuerungen: rechts) für drei Dachflächenfenster in die Hausautomation zu integrieren. Da mit fhem ansprechbare Interfaces von der Firma Velux nicht angeboten werden, wurde das im folgenden beschriebene Interface selbst entwickelt.

Hardware

Eine Entschlüsselung des Protokolls der Funkfernbedienung und dessen Implementierung in der culfw zwecks Nutzung eines Gerätes aus der CUL-Familie von busware wurde gar nicht erst versucht. Stattdessen sollten die Fernbedienungen selbst fernbedient werden.

Dazu kommt das Board AVR-NET-IO von Pollin zum Einsatz. Der im Bausatz mitgelieferte Mikrocontroller wurde durch einen ATMega644 von Atmel ersetzt, um für künftige Erweiterungen gewappnet zu sein. Der Mikrocontroller wurde mit der Firmware Ethersex versehen. Aus dem Intranet heraus kann über telnet ein Dialog mit der Firmware geführt werden, wobei die Skriptsprache ECMD (Ethersex Command) verwendet wird.

Von den beiden Versorgungsspannungen des AVR-NET-IO werden 3,3 V abgegriffen, um die Fernbedienungen und die im folgenden beschriebene Schaltung zu versorgen.

Die Platinen der Fernbedienungen werden aus ihren Gehäusen genommen und die 3V-Knopfzellen entfernt. Die Anschlüsse für die Versorgungsspannung sowie die Anschlußleitungen der drei Taster werden paarweise herausgeführt. Mit den drei Tastern wird der Rolladen, der an die Fernbedienung angelernt wurde, hochgefahren, angehalten oder heruntergefahren.

Das Schalten der Taster übernehmen bilaterale Analogschalter, von denen jeweils vier in einem IC vom Typ SN74HC4066 stecken. Es werden insgesamt drei ICs benötigt, um alle 12 Taster zu betätigen.

Um I/O-Pins am AVR-NET-IO zu sparen und sicherzustellen, daß immer nur eine Taste gleichzeitig gedrückt werden kann, erfolgt die Ansteuerung der SN74HC4066 mit zwei 3-to-8-Line-Dekodern/Demultiplexern vom Typ 74HCT238. Insgesamt 9 der 16 Ausgangsleitungen werden mit den Steuereingängen der Analogschalter verbunden. Von Port 2 des ATMega, der auf der 25-poligen Sub-D-Buchse des AVR-NET-IO herausgeführt wird, werden dann vier Bits fü die Bestimmung des zu schaltenden Steuereingangs und ein Bit für das eigentliche Betätigen der Taste verwendet.

Das folgende Bild zeigt den Aufbau des Prototyps mit einem Dekoder und einem Analogschalter auf einem Experimentierboard.

Das folgende Bild zeigt den Aufbau der produktiven Version mit zwei Dekodern und drei Analogschaltern auf einer Platine.

Die Verdrahtung kann mit der folgenden Schemadarstellung sowie für die konkreten Pinbelegungen den Bauteilebeschreibungen (auf den einschlägigen Seiten im Internet verfügbar) nachgestellt werden. Einen Schaltplan haben wir leider nicht erstellt.

Die roten Punkte zeigen an, wo Verbindungen zwischen den beiden Dekodern und den drei Analogschaltern hergestellt werden müssen. Dabei werden die Schaltausgänge der Dekoder nach aufsteigenden Nummern beginnend beim unteren Dekoder den Analogschaltern nach aufsteigenden Schalterbezeichnungen beginnend mit dem unteren Schalter zugewiesen.

Die lila Punkte zeigen an, an welchen Anschlüssen die Analogschalter mit den Fernbedienungen verbunden werden. die Schaltausgänge der Schalter sind nach aufsteigender Schalterbezeichnung beginnend mit dem unteren Schalter mit den Hoch-/Halt-/Runter-Tastern der Fernbedienungen verbunden.

Die gelben Punkte A0, A1, A2, A3 (Adresse), EN (Enable) sind mit den I/O-Pins 0 bis 4 des AVR-NET-IO zu verbinden. Die untenstehende Logiktabelle zeigt an, wie die Dekoderanschlüsse A0, A1, A2, A3, E1, E2, E3 mit diesen Adressierungsanschlüssen und dem Enable-Anschluß kombiniert sind. Der NPN-Transistor BC337 mit dem Widerstand R1 (einige kΩ) dient dabei zur Logikumkehr des EN-Signals.

Logiktabelle:

A0 A1 A2 A3 EN 0 1
74HCT238' A0 A1 A2 E1 E2 E3
74HCT238'' A0 A1 A2 E3 E2 E1
Adresse 0 bis 7 schaltet die Ausgänge Y0 bis Y7 von 74HCT238'.
Adresse 8 bis 15 schaltet die Ausgänge Y0 bis Y7 von 74HCT238''.

Der Dekoder 74HCT238 schaltet den durch die Adresse (A0 A1 A2) definierten Ausgang auf 1, wenn sich aus der Kombination von (E1 E2 E3) eine logische 1 ergibt (siehe Datenblatt für die Logikfunktion). E1 bzw. E3 werden benutzt, damit mit dem Adreßbit A3 der eine oder der andere Dekoder ausgewählt wird. E3 und E1 sind fest auf 1 oder 0 gelegt. Die logische 1 zum Schalten des durch die Adresse (A0 A1 A2) spezifizierten Ausgangs Y0 bis Y7 des einen oder des anderen Dekoders kommt dann zustande, wenn E2 auf logisch 0 gelegt wird. Dazu zieht der Transistor den über den Pullup-Widerstand R1 normalerweise auf 1 gelegten Eingang auf 0.

Software

Client

Der ATMega644 wurde mit einer aktuellen Version von Ethersex versehen. Dabei wurde ECMD sowie der wait-Befehl und die Portsteuerung einkompiliert. Bei den Fuses ist darauf zu achten, daß JTAG abgeschaltet ist, weil sonst nicht alle Pins von Port 2 genutzt werden können.

Server

fhem wurde um die Module ECMD und ECMDDevice erweitert. Diese Module ermöglichen es, das AVR-NET-IO als physikalisches Gerät zu definieren und jede Fernbedienung als logisches Gerät. Die Klassendefinition für die Geräteklasse VeluxRC (Velux Remote Control) sieht wie folgt aus:
# Self-made interface for Velux Remote Control
# 2011-01-17bn
#

# these are the numbers of the buttons as hex chars from 0 to f;
params btnup btnstop btndown

# setter definitions for opening, stopping and closing the shutters
set up cmd {"io set ddr 2 ff\nio set port 2 1%btnup\nwait 1000\nio set port 2 00"}
set stop cmd {"io set ddr 2 ff\nio set port 2 1%btnstop\nwait 1000\nio set port 2 00"}
set down cmd {"io set ddr 2 ff\nio set port 2 1%btndown\nwait 1000\nio set port 2 00"}
Die Definition in der Konfigurationsdatei von fhem lautet wie folgt:
define AVRNETIO ECMD telnet 192.168...:2701
attr AVRNETIO room I-Interfaces
set AVRNETIO classdef VeluxRC .../VeluxRC.classdef

# Velux Rolladen
define 3.kiz.roll ECMDDevice VeluxRC 1 0 2
attr 3.kiz.roll room 3-DG
define 3.kiz.roll.log FileLog /data/Homeautomation/logs/cache/3.kiz.roll.log 3.kiz.roll:.*
attr 3.kiz.roll.log room 3-DG
Um die Rolladen dann abhängig vom Sonnenstand und Wochentag zu öffnen und zu schließen, werden diese Kommandos verwendet:
define at.sunrise.3.kiz.roll.wd at *{sunrise(1800,"06:20")} { fhem("set 3.kiz.roll up") if(!$we) }
define at.sunrise.3.kiz.roll.we at *{sunrise(1800,"08:00")} { fhem("set 3.kiz.roll up") if($we) }
define at.sunset.3.kiz.roll.1 at *{sunset(-1800,"00:00","19:30:00")} set 3.kiz.roll down