HomeMatic Asksin Library: Unterschied zwischen den Versionen

Aus FHEMWiki
K (→‎Library: Link auf ersten Threadbeitrag (Fundstelle für download der Library) ergänzt.)
K (Kleinen Umgangstipp zur Arduino-IDE eingefügt.)
Zeile 23: Zeile 23:
Die Library besteht aus 4 Dateien:
Die Library besteht aus 4 Dateien:


''sketch_aug05a.ino'' ist der Userbereich. Hier kann man die gerätespezifischen Funktionen programmieren.
* ''sketch_aug05a.ino'' ist der Userbereich. Hier kann man die gerätespezifischen Funktionen programmieren.


''register.h'' ist der Config-Bereich. Im oberen Teil sind die Variablen für Seriennummer usw. Im unteren Teil kommen die Registerdefinitionen rein. Also die Config für List0, List1 usw.
* ''register.h'' ist der Config-Bereich. Im oberen Teil sind die Variablen für Seriennummer usw. Im unteren Teil kommen die Registerdefinitionen rein. Also die Config für List0, List1 usw.
Es gibt ein Config-Tool in Perl. Die Gerätedefinition wird in dem Tool gemacht, der Output in die ''register.h'' kopiert und gut.  
Es gibt ein Config-Tool in Perl. Die Gerätedefinition wird in dem Tool gemacht, der Output in die ''register.h'' kopiert und gut.  


''asksin.cpp'' und ''asksin.h'', das ist der HM-Kommunikationsbereich. Jegliches HM-Handling soll hier statt finden und keinen Usereingriff benötigen.
* ''asksin.h'' (die Kopfzeilen des eigentlichen Programms) und  
 
* ''asksin.cpp'', das ist der HM-Kommunikationsbereich. Jegliches HM-Handling soll hier statt finden und keinen Benutzereingriff benötigen.
 
Da der eigentliche Sketch den Namen ''sketch_aug05a.ino'' trägt, das Verzeichnis, in dem die ''gezippten'' Dateien entpackt werden, aber nach dem Schema ''TTMMJJ-sketch_aug05a'' (TT = Tag, MM = Monat und JJ = Jahr der Veröffentlichung der Lib) benannt ist, sollten Sie den Verzeichnisnamen auf ''sketch_aug05a'' umbenennen. Ansonsten können Sie den Sketch nach dem Öffnen der Arduino-IDE nicht öffnen. Der Name des Haupt-Sketches und des Verzeichnisses müssen also gleich sein.


Weiteres, auch zur Funktionsweise, siehe [http://forum.fhem.de/index.php/topic,14140.msg102672.html#msg102672 hier] und [http://forum.fhem.de/index.php/topic,14140.msg104644.html#msg104644 hier] (Forenbeiträge).
Weiteres, auch zur Funktionsweise, siehe [http://forum.fhem.de/index.php/topic,14140.msg102672.html#msg102672 hier] und [http://forum.fhem.de/index.php/topic,14140.msg104644.html#msg104644 hier] (Forenbeiträge).

Version vom 16. November 2013, 20:59 Uhr

Asksin Library für HomeMatic

Bitte beachten: 1. Entwurf und noch ausbaubedürftig. Es fehlen noch einige Inhalte, Anmerkungen usw. usf.

Sinn bzw. Ziel

Ziel ist es, eine Arduino-Library (lib) zu entwickeln mit der es möglich ist, eigene Hardware auf Basis eines Arduino in ein HomeMatic-Netzwerk einzubinden. Es soll mit dieser lib auch möglich sein, vorhandene HM-Aktoren mit eigener Hardware zu peeren, so dass eine Interaktion zwischen den Geräten auch ohne laufendem Fhem-Server möglich ist.

Später soll sie vielleicht auch die Grundlage sein um vorhandene HomeMatic-Hardware neu zu programmieren.

Stand 12. November 2013 wird ein HomeMatic-Dimmer abgebildet. Das wird aber nicht der einzige Einsatzzweck bleiben.

Software

Arduino

Da es sich um eine Arduino-Library handelt, müssen Sie sich für deren Nutzung eine entsprechende Entwicklungsumgebung einrichten. Diese gibt es für Linux, Mac und Windows.

Library

Die Library ist seit dem 16. November 2013 in der jeweils aktuellsten Fassung im ersten Threadbeitrag zu finden. Die Verwendung der Library unterliegt der CC-BY-NC-SA-Lizenz.

Die Library besteht aus 4 Dateien:

  • sketch_aug05a.ino ist der Userbereich. Hier kann man die gerätespezifischen Funktionen programmieren.
  • register.h ist der Config-Bereich. Im oberen Teil sind die Variablen für Seriennummer usw. Im unteren Teil kommen die Registerdefinitionen rein. Also die Config für List0, List1 usw.

Es gibt ein Config-Tool in Perl. Die Gerätedefinition wird in dem Tool gemacht, der Output in die register.h kopiert und gut.

  • asksin.h (die Kopfzeilen des eigentlichen Programms) und
  • asksin.cpp, das ist der HM-Kommunikationsbereich. Jegliches HM-Handling soll hier statt finden und keinen Benutzereingriff benötigen.

Da der eigentliche Sketch den Namen sketch_aug05a.ino trägt, das Verzeichnis, in dem die gezippten Dateien entpackt werden, aber nach dem Schema TTMMJJ-sketch_aug05a (TT = Tag, MM = Monat und JJ = Jahr der Veröffentlichung der Lib) benannt ist, sollten Sie den Verzeichnisnamen auf sketch_aug05a umbenennen. Ansonsten können Sie den Sketch nach dem Öffnen der Arduino-IDE nicht öffnen. Der Name des Haupt-Sketches und des Verzeichnisses müssen also gleich sein.

Weiteres, auch zur Funktionsweise, siehe hier und hier (Forenbeiträge).

Beispiel der Ausgaben:

Folgende Ausgabe erscheint nach dem Übertragen des Sketches ("arduinisch" für Programm) auf den Arduino im Terminalfenster der Arduino-IDE:

Port open
CC1101_init: 12..............................................3 - ready

Available commands:
  p                - start pairing with master
  b[0] b[n] s      - send a string, b[0] is length (50 bytes max)

  i[0]. i[1]. e    - show eeprom content, i[0]. start address, i[1]. length
  i[0]. b[1] f     - write content to eeprom, i[0]. address, i[1] byte
  c                - clear eeprom complete, write 0 from start to end

  t                - gives an overview of the device configuration

  $nn for HEX input (e.g. $AB,$AC ); b[] = byte, i[]. = integer

Serial: PS00000001, Model ID: 00 57 , HMID: 2F B7 4A
Paired: F1 47 12

FreeMem: 1232 byte's

Und so sieht das ganze auf Ihrem Bildschirm aus:

Ansicht der Arduino IDE und des Terminal-Fensters mit den Ausgaben der Asksin Library

Hardware

Als Ersatz für die HomeMatic Sensoren und Aktoren kommen Panstamps oder Arduino Pro Mini (mit 3,3 V, dazu gleich mehr) zusammen mit Transceivern aus dem Frequenzbereich 868 MHz zum Einsatz.

Panstamp

Vorteile:

  • Transceiver on-board
  • klein
  • preiswert

Nachteile:

  • nicht immer/überall verfügbar

Arduino Pro Mini 3,3 V mit separatem Transceiver

Bitte achten Sie darauf, nur Arduino Pro Minis mit 3,3 V zu verwenden, da die Transceiver-Module auch nur mit dieser Spannung arbeiten. Es gehen zwar notfalls auch Arduino-Boards mit 5 Volt, aber die Spannungsversorgung und Signal-/Datenleitungen der Transceiver-Module müssen dann per "Level-Converter" angepasst werden.

Vorteile:

  • verfügbar

Nachteile:

  • teurer als Panstamps
  • Volumen größer als Panstamps

Transceiver-Module

Beim Panstamp ist das Modul bereits on-board. Am preiswertesten fährt man bei den Arduinos mit den Bausätzen vom HomeMatic HM-LC-SW1-BA-PCB oder vom MAX! Fensterkontakt.

Module aus dem FS20-Bereich funktionieren nicht, da diese eine andere Signalmodulation haben. RFM12-Module können ebenfalls nicht verwendet werden. Auch die "CC1101 w/ co-processor shield for Arduino" von Busware werden nicht unterstützt.

Transceiver - links kurz und breit, rechts lang und schmal
HomeMatic HM-LC-Sw1-BA-PCB

Kurzes, aber breites Transceiver-Modul. Die 1-reihigen Löt-Kontakte haben allerdings einen Abstand von 2 mm, was bei der Anbringung von Pfostenleisten berücksichtigt werden muss (üblicher sind 2,54 mm).

Siehe nebenstehendes Foto links.

MAX! Fensterkontakt

Längeres aber schmaleres Transceiver-Modul. Die 2-reihigen Kontakte haben das üblichere Raster von 2,54 mm, jedoch sind schon einige Löterfahrungen erforderlich um das Modul sauber zu entlöten.

Siehe nebenstehendes Foto rechts.

CC1101

Die CC1101-Module sind regulär für den 433MHz Bereich gedacht, können aber auf 868 MHz umgestellt werden. Dies geht allerdings zu Lasten der Sende- und Empfangsleistung.

Verbindung Transceiver mit Arduino Pro Mini

Zur Zeit (November 2013) gelten folgende Pin-Belegungen:

Breites Modul
Verkabelung des breiten Transceiver-Moduls mit einem Arduino Pro Mini 3,3 V
TRX868 - Pins von links nach rechts (metallisches Abschirmblech - im Schema gelb - sichtbar, Antenne oben)
 1   2   3   4   5   6   7   8
2 mm Raster (!)

         Arduino         
TRX868   ProMini 3.3V!  Beschreibung     Farbe
=================================================
1           11          SPI Mosi         weiß
2           13          SPI SCK          violett
3           12          SPI MISO         grün
4 (n.c.)    (3)         PWM -LED-GND     ---
5            2          GDO0             gelb
6           10          SPI chip select  blau
7           GND         GND              schwarz
8           VCC         3.3V             rot
=================================================

TRX868-Pin 4 ist GDO2 und war anfangs mit Pin 3 des Arduino verbunden. GDO2 wird nicht mehr verwendet und Pin 3 (PWM) kann nun anderweitig genutzt werden.


Schmales Modul
Verkabelung des schmalen Transceiver-Moduls mit einem Arduino Pro Mini 3,3 V
TRX868 - Pins von links nach rechts (metallisches Abschirmblech - im Schema gelb - sichtbar, Antenne oben)
 1   3   5   7
 2   4   6   8
2,54 mm Raster
         Arduino         
TRX868   ProMini 3.3V!  Beschreibung     Farbe
=================================================
1         VCC           3.3V
2         GND           GND
3          11           SPI Mosi
4          13           SPI SCK
5          12           SPI MISO
6 (n.c.)   (3)          -- frei --
7           2           GD00 
8          10           SPI chip select
=================================================

Der Arduino-Pin 3 (PWM) ist nun frei für die eigene Verwendung und kann z.B. als GND für eine zu dimmende LED eingesetzt werden

< Schema folgt >

Links

Foren-Thread
MAX! Fensterkontakt Bausatz]
HomeMatic Schaltaktor Bausatz