HomeMatic Asksin Library: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Erste Bilder eingefügt)
K (Hinweis auf verschiedene Funkchips hinzugefügt)
 
(18 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Todo|Bitte beachten: 1. Entwurf und noch ausbaubedürftig. Es fehlen noch einige Inhalte, Anmerkungen usw. usf.}}
'''Asksin Library für HomeMatic'''
'''Asksin Library für HomeMatic'''
<ins>Bitte beachten: 1. Entwurf und noch ausbaubedürftig. Es fehlen noch einige Inhalte, Anmerkungen usw. usf.</ins>


== Sinn bzw. Ziel ==
== 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.
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 <ins>vielleicht</ins> auch die Grundlage sein um vorhandene HomeMatic-Hardware neu zu programmieren.
Später soll sie <ins>vielleicht</ins> 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 [http://forum.fhem.de/index.php/topic,14140.msg106875.html#msg106875 Einsatzzweck] bleiben.
Stand 12. November 2013 wird ein HomeMatic-Dimmer abgebildet. Das wird aber nicht der einzige {{Link2Forum|Topic=14140|Message=106875|LinkText=Einsatzzweck}} bleiben.


== Software ==
== Software ==
Zeile 15: Zeile 15:
=== Arduino ===
=== Arduino ===


Da es sich um eine Arduino-Library handelt, müssen Sie sich für deren Nutzung eine entsprechende [http://arduino.cc/de/Guide/Environment Entwicklungsumgebung] einrichten. Diese gibt es für [http://arduino.cc/en/Main/Software Linux, Mac und Windows].
Da es sich um eine Arduino-Library handelt, müssen Sie sich für deren Nutzung eine entsprechende [http://arduino.cc/de/Guide/Environment Entwicklungsumgebung] einrichten. Diese gibt es für [http://arduino.cc/en/Main/Software Linux, OS X und Windows].


=== Library ===
=== Library ===


In dem unter ''Links'' angegebenen Foren-Thread finden Sie die jeweils neueste Version der Library in den jeweils letzten Beiträgen. Ob dies auf Dauer so bleibt, wird sich zeigen. Die Verwendung der Library erfolgt unter der [http://creativecommons.org/licenses/by-nc-sa/3.0/de/ CC-BY-NC-SA-Lizenz].
Die Library ist seit dem 16. November 2013 in der jeweils aktuellsten Fassung im {{Link2Forum|Topic=14140|Message=88923|LinkText=ersten Threadbeitrag}} zu finden. Die Verwendung der Library unterliegt der [http://creativecommons.org/licenses/by-nc-sa/3.0/de/ 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.
 
* ''asksin.h'' (die Kopfzeilen des eigentlichen Programms) und


== Hardware ==
* ''asksin.cpp'', das ist der HM-Kommunikationsbereich. Jegliches HM-Handling soll hier statt finden und keinen Benutzereingriff benötigen.
 
Für die ''register.h'' gibt es ein Config-Tool in Perl (noch nicht verfügbar). Die Gerätedefinition wird in diesem Tool vorgenommen, der Output in die ''register.h'' kopiert und gut.
 
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 {{Link2Forum|Topic=14140|Message=102672|LinkText=hier}} und {{Link2Forum|Topic=14140|Message=104644|LinkText=hier}} (Forenbeiträge).
 
'''Beispiel der Ausgaben:'''
 
Folgende Ausgabe erscheint nach dem Übertragen des Sketches ("arduinisch" für Programm) auf den Arduino im seriellen Terminal 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: [[Datei:2013-11-12 - Asksin-Screenshot - CutUSM1200x802_85P.jpeg|500px|mini|right|Ansicht der Arduino IDE und des Seriellen-Ausgabefensters mit den Ausgaben der Asksin Library]]


Als Ersatz für die HomeMatic Sensoren und Aktoren kommen [http://www.panstamp.com/ Panstamps] oder [http://arduino.cc/de/Main/ArduinoBoardProMini Arduino Pro Mini] (mit 3,3 V, dazu gleich mehr) zusammen mit Transceivern aus dem Frequenzbereich 868 MHz zum Einsatz.
'''Achtung:''' Um in der seriellen Konsole (Aufruf per Klick auf das Lupensymbol rechts oben im Fenster der IDE) die Ausgaben zu sehen, müssen Sie noch die Baud-Rate rechts unten im Fenster von 9.600 auf 57.600 ändern (dies ist die im Asksin-Sketch eingestellte Datenübertragungsrate). Bei einer verkehrten Baud-Rate erscheinen maximal irgendwelche Sonderzeichen.


=== Panstamp ===
== Hardware ==
Als Ersatz für die HomeMatic Sensoren und Aktoren kommen panStamps [http://www.panstamp.com/ (Hersteller Webseite] / [[panStamp|Wiki Artikel)]] oder [http://arduino.cc/de/Main/ArduinoBoardProMini Arduino Pro Mini] (mit 3,3 V, dazu gleich mehr) zusammen mit Transceivern aus dem Frequenzbereich 868 MHz zum Einsatz.


=== panStamp ===
Vorteile:
Vorteile:
* Transceiver on-board
* Transceiver on-board
* klein
* preiswert
* preiswert


Zeile 42: Zeile 85:


Nachteile:
Nachteile:
* teurer als Panstamps
* teurer als panStamps
* Volumen größer als Panstamps
* Volumen größer als panStamps


==== Transceiver-Module ====
==== 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 [[MAX#Fensterkontakte|vom MAX! Fensterkontakt]].


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 <ins>nicht</ins>, da diese eine andere Signalmodulation haben. RFM12-Module können ebenfalls <ins>nicht</ins> verwendet werden. Auch die "CC1101 w/ co-processor shield for Arduino" von Busware werden <ins>nicht</ins> unterstützt.


[[Datei:Tranceiver_CutGradScaleUSM800x600_85P_IMGP8367.JPG|200px|thumb|right|Transceiver - links kurz und breit, rechts lang und schmal]]
[[Datei:Tranceiver_CutGradScaleUSM800x600_85P_IMGP8367.JPG|200px|thumb|right|Transceiver - links kurz und breit, rechts lang und schmal]]


===== HomeMatic HM-LC-Sw1-BA-PCB =====
===== 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).


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 =====
===== 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.


Längeres aber schmaleres Transceiver-Modul. Die '''2'''-reihigen Kontakte haben den üblicheren Abstand von 2,54 mm, jedoch sind schon einige Löterfahrungen erforderlich um das Modul sauber zu entlöten.
Siehe nebenstehendes Foto rechts.


===== CC1101 =====
===== CC1101 =====


< Erläuterungen folgen >
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.
 
===== Achtung, verschiedene Funkchips =====
 
Es gibt beide Modulausführungen (breit und schmal) mit Funkchip CC1101 von Texas Instruments (-TI) und SiliconLabs (-SL).
 
'''Nur''' die '''-TI''' Variante ist mit Stand 10/2020 für AskSinPP geeignet, die -SL Variante wird nicht unterstützt!
 
siehe auch:
[https://github.com/pa-pa/AskSinPP/issues/210 How is it possible to use the AskSinPP libary with the original trx-868 RF module]


==== Verbindung Transceiver mit Arduino Pro Mini ====
==== Verbindung Transceiver mit Arduino Pro Mini ====


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


===== Breites Modul =====
===== Breites Modul =====
Zeile 71: Zeile 126:
[[Datei:2013-11-13 - Fritzing-Screenshot - breit - CutUSM_800x600_85P.jpeg|200px|thumb|right|Verkabelung des breiten Transceiver-Moduls mit einem Arduino Pro Mini 3,3 V]]
[[Datei:2013-11-13 - Fritzing-Screenshot - breit - CutUSM_800x600_85P.jpeg|200px|thumb|right|Verkabelung des breiten Transceiver-Moduls mit einem Arduino Pro Mini 3,3 V]]


  TRX868 - Pins von links nach rechts  
  TRX868 - Pins von links nach rechts (metallisches
Abschirmblech - im Schema gelb - sichtbar, Antenne oben)
   1  2  3  4  5  6  7  8
   1  2  3  4  5  6  7  8
2 mm Raster (!)
          2 mm Raster (!)
   
   
           Arduino         
           Arduino         
Zeile 81: Zeile 138:
  2          13          SPI SCK          violett
  2          13          SPI SCK          violett
  3          12          SPI MISO        grün
  3          12          SPI MISO        grün
  4 (n.c.)     3         PWM -LED-GND    ---
  4 (n.c.)   (3)        PWM -LED-GND    ---
  5            2          GDO0            gelb
  5            2          GDO0            gelb
  6          10          SPI chip select  blau
  6          10          SPI chip select  blau
Zeile 88: Zeile 145:
  =================================================
  =================================================
   
   
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.
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 =====
===== Schmales Modul =====
[[Datei:2013-11-13 - Fritzing-Screenshot - schmal -CutUSM_800x601_85P.jpeg|200px|thumb|right|Verkabelung des schmalen Transceiver-Moduls mit einem Arduino Pro Mini 3,3 V]]


< Tabelle folgt >
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 >
< Schema folgt >


== Links ==
== Links ==
 
* {{Link2Forum|Topic=14140|LinkText=Foren-Thread}}
[http://forum.fhem.de/index.php/topic,14140.0.html Foren-Thread]
* [http://www.elv.de/max-fensterkontakt-arr.html MAX! Fensterkontakt Bausatz]]
* [http://www.elv.de/homematic-schaltaktor-fuer-batteriebetrieb-komplettbausatz.html HomeMatic Schaltaktor Bausatz]


[[Kategorie:HomeMatic_Components]]
[[Kategorie:HomeMatic_Components]]

Aktuelle Version vom 19. Oktober 2020, 14:01 Uhr

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


Asksin Library für HomeMatic

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, OS X 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.
  • 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.

Für die register.h gibt es ein Config-Tool in Perl (noch nicht verfügbar). Die Gerätedefinition wird in diesem Tool vorgenommen, der Output in die register.h kopiert und gut.

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 seriellen Terminal 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 Seriellen-Ausgabefensters mit den Ausgaben der Asksin Library

Achtung: Um in der seriellen Konsole (Aufruf per Klick auf das Lupensymbol rechts oben im Fenster der IDE) die Ausgaben zu sehen, müssen Sie noch die Baud-Rate rechts unten im Fenster von 9.600 auf 57.600 ändern (dies ist die im Asksin-Sketch eingestellte Datenübertragungsrate). Bei einer verkehrten Baud-Rate erscheinen maximal irgendwelche Sonderzeichen.

Hardware

Als Ersatz für die HomeMatic Sensoren und Aktoren kommen panStamps (Hersteller Webseite / Wiki Artikel) 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.

Achtung, verschiedene Funkchips

Es gibt beide Modulausführungen (breit und schmal) mit Funkchip CC1101 von Texas Instruments (-TI) und SiliconLabs (-SL).

Nur die -TI Variante ist mit Stand 10/2020 für AskSinPP geeignet, die -SL Variante wird nicht unterstützt!

siehe auch: How is it possible to use the AskSinPP libary with the original trx-868 RF module

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