FHEMduino: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Typos/Spelling)
 
(20 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Modul
{{Infobox Modul
|ModPurpose=Unterstützung für CUL-Klon auf Arduino-Basis
|ModPurpose=Empfang von 433 Mhz Funksignalen
|ModType=contrib
|ModType=contrib
|ModFTopic=17196
|ModFTopic=17196
Zeile 9: Zeile 9:
}}
}}
[[Datei:Fhemduino.png|200px|thumb|right|FHEMduino im EasyBox Gehäuse]]
[[Datei:Fhemduino.png|200px|thumb|right|FHEMduino im EasyBox Gehäuse]]
Der FHEMduino ist ein Low-Cost [[CUL]]-Klon der auf einem [http://arduino.cc/de/Main/ArduinoBoardNano Arduino Nano] basiert. Er wird mittels USB angeschlossen und ist primär dazu konzipiert, im 433MHz-Bereich zu arbeiten.
Der FHEMduino ist ein Low-Cost Funk Empfänger, der auf einem [http://arduino.cc/de/Main/ArduinoBoardNano Arduino Nano] basiert. Er wird mittels USB angeschlossen und ist primär dazu konzipiert, im 433MHz-Bereich zu arbeiten.


Mit [[SIGNALduino]] gibt es ein weiteres Modul, das diese Hardware unterstützt.
Der FHEMduino wird seit einiger Zeit nicht mehr weiter entwickelt.
 
Mit [[SIGNALduino]] gibt es eine weiterentwickelte Version dieses Konzeptes. Die Hardware kann 1:1 weiterverwendet werden, jedoch unterstützt der SIGNALduino eine größere Anzahl an Funkprotokollen und muss auch nicht selbst compiliert werden.


== Hardware ==
== Hardware ==
Zeile 34: Zeile 36:


== Unterstützte Geräte ==
== Unterstützte Geräte ==
Für die folgenden Geräte gibt es derzeit eine Unterstützung für den Betrieb mit Fhem:
Für die folgenden Geräte gibt es derzeit eine Unterstützung für den Betrieb mit FHEM:
{|class="wikitable"
{|class="wikitable"
! style="text-align:left;"| Produkt
! style="text-align:left;"| Produkt
Zeile 108: Zeile 110:


== Einbinden in FHEM ==
== Einbinden in FHEM ==
Fhem benötigt zunächst die perl Module aus:  
FHEM benötigt zunächst die perl Module aus:  
https://github.com/mdorenkamp/fhemduino_modules
https://github.com/mdorenkamp/fhemduino_modules


Diese werden in das FHEM Verzeichnis kopiert in dem auch alle anderen pm Dateien liegen. z.B. /opt/fhem/FHEM. Das Gerät wird angelegt mit dem Befehl
Diese werden in das FHEM Verzeichnis kopiert in dem auch alle anderen pm Dateien liegen. z.B. /opt/fhem/FHEM. Das Gerät wird zum Beispiel mit dem folgenden Befehl angelegt. '''Achtung''' die konkrete Schnittstellenbezeichnung ist vom jeweiligen System abhängig!


:<code>define Arduino FHEMduino /dev/serial/ttyUSB0/</code>
:<code>define Arduino FHEMduino /dev/serial/ttyUSB0/</code>
:<code>define Arduino FHEMduino /dev/ttyUSB0/</code>


besser (um beim Umstecken des USB-Port das Gerät nicht neu definieren oder Attribute ändern zu müssen) mit Angabe des genauen Namens:
besser (um beim Umstecken des USB-Port das Gerät nicht neu definieren oder Attribute ändern zu müssen) mit Angabe des genauen Namens:
:<code>define Arduino FHEMduino /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600</code>  
:<code>define Arduino FHEMduino /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600</code>  
Diese Befehle helfen beim suchen:
  ls -l /dev/ser*
  ls -l /dev/
  ls -l /dev/tty*


Nach dem Einbinden wird der FHEMDuino, falls er erkannt wird, im Status "Openend" angezeigt. Erst wenn die richtige Firmware auf dem Arduino ist, wird der Status "Initialized" angezeigt.
Nach dem Einbinden wird der FHEMDuino, falls er erkannt wird, im Status "Openend" angezeigt. Erst wenn die richtige Firmware auf dem Arduino ist, wird der Status "Initialized" angezeigt.


== Flashen des Ardunio mit der FHEMDuino Firmware ==
== Flashen des Arduino mit der FHEMDuino Firmware ==
# Falls avrdude noch nicht vorhanden ist kann man das z.B. so auf dem Fhem installieren:
# Falls avrdude noch nicht vorhanden ist kann man das z.B. so auf dem FHEM installieren:
:<code>sudo apt-get install avrdude</code>
:<code>sudo apt-get install avrdude</code>


Zeile 127: Zeile 135:
::https://github.com/mdorenkamp/fhemduino
::https://github.com/mdorenkamp/fhemduino


:3. Arduino IDE unter Windows installieren:
:3. Arduino IDE unter Windows/Linux mit grafischer Oberfläche installieren:
::https://www.arduino.cc/en/Main/Software
::https://www.arduino.cc/en/Main/Software


:4. Im Fhemduino GIT sind die nächsten Schritte beschrieben:
::Falls das Kompilieren nicht ordentlich abläuft könnte helfen, eine Arduino IDE Version kleiner 1.6.7 zu benutzen, download hier:
::https://www.arduino.cc/en/Main/OldSoftwareReleases
 
::Linux:
:::In der gewählten Arduino IDE im Menü Files.Preferences, Tab Settings, “show verbose output - during compilation” anklicken.
::<i>Es wird im Folgenden davon ausgegangen, dass die Firmware auf dem Linux-Rechner kompiliert wird, auf dem auch FHEM läuft, z.B. einem Raspberry Pi. </i>
 
:4. Im Fhemduino GIT sind die nächsten Schritte beschrieben, die auch für
::Linux gelten:
::How to compile with Arduino IDE unter Microsoft Windows:
::How to compile with Arduino IDE unter Microsoft Windows:
:::*Sync the repository from github or download the complete archive as a zip archive.
:::*Extract or copy all files from src and lib the files to a directory called fhemduino
:::*rename sketch.ino into fhemduino.ino. The name of the sketch must be the same as the directory where it resides.
:::*Look at the sketch.h file, to enable or disable features of the fhemduino.
:::*Open fhemduino.ino in the IDE and just compile it.


:::Sync the repository from github or download the complete archive as a zip archive.
:5. Es wurde ein Hexfile erzeugt.
:::Extract or copy all files from src and lib the files to a directory called fhemduino
::Windows:
:::rename sketch.ino into fhemduino.ino. The name of the sketch must be the same as the directory where it resides.
:::Es liegt im gleichen Ordner wie die Sourcen, z.B. fhemduino.cpp.standard.hex
:::Look at the sketch.h file, to enable or disable features of the fhemduino.
::Linux:
:::Open fhemduino.ino in the IDE and just compile it.
:::Im Konsolenfenster der Arduino IDE (schwarzes Feld unten im IDE-Fenster) wird bei erfolgreicher Kompilierung in der letzten Zeile der Pfad des Hexfiles angezeigt, in der Form "/tmp/build<sehr lange hex Zahl>/sketch_<datum>.ino.hex". Dafür hatten wir oben unter 3. den 'verbose' Modus aktiviert.  


:5. Jetzt wurde eine hex Datei erzeugt (liegt im gleichen Ordner wie die Sourcen). Z.B. fhemduino.cpp.standard.hex
::Dieses Hexfile umbenennen nach fhemduino.hex.
::Diese umbenennen nach fhemduino.hex, auf den FHEM-Rechner kopieren (z.B. per WinSCP nach /opt/fhem/fhemduino/hexfiles)
::Windows:
:::Das Hexfile auf den FHEM-Rechner kopieren (z.B. per WinSCP nach /opt/fhem/fhemduino/hexfiles)
::Linux:
:::Das Hexfile in das gewünschte Verzeichnis, z.B./opt/fhem/fhemduino/hexfiles verschieben.


:6. In Fhem ist der Fhemduino ja bereits mit dem Status "Open" vorhanden. Dieses Gerät hat einen Befehl flash der dann
:6. In FHEM ist der Fhemduino ja bereits mit dem Status "Open" vorhanden.
::etwa so aufgerufen wird:<br><code>fhemduino flash opt/fhem/fhemduino/hexfiles/fhemduino.hex</code><br>(je nachdem wo das .hex File abgelegt wurde).
::Mit <br><code>attr <myfhemduino> hexFile  /opt/fhem/fhemduino/hexfiles/fhemduino.hex</code><br>
::wird FHEM mitgeteilt, wo das Hexfile liegt. Der Pfad ist entsprechend der eigenen Installation anzupassen.  
::Der Fhemduino hat einen Befehl 'flash'. Er wird so aufgerufen :<br><code>set <myfhemduino> flash</code><br>


::Danach wird ein Log angezeigt. Wenn alles gut geht und man wählt nochmal den Fhemduino aus steht dort nicht mehr open sondern initialized.
:7. Danach wird ein Log angezeigt. Wenn alles gut ging und man wählt noch einmal den Fhemduino aus steht dort nicht mehr :'open' sondern 'initialized'.
::Die Funktion:<br><code>get fhemduino version</code><br> sollte jetzt etwas zurückgeben. Zum Beispiel => V 2.3v FHEMduino - compiled at Jun 26 2015 14:45:06
::Die Funktion:<br><code>get fhemduino version</code><br> sollte jetzt etwas zurückgeben. Zum Beispiel => V 2.3v FHEMduino - compiled at Jun 26 2015 14:45:06


== Readings ==
== Readings ==
Folgenden Readings sind im Moment in FHEMduino eingebunden:
Folgende Readings sind im Moment in FHEMduino eingebunden:
{|class="wikitable"
{|class="wikitable"
! style="text-align:left;"| Befehl
! style="text-align:left;"| Befehl
Zeile 158: Zeile 184:
|Ausgabe der Version mit Erstelldatum
|Ausgabe der Version mit Erstelldatum
|<Name> raw => V 1.0b1 FHEMduino - compiled at Nov 24 2015 15:58:41
|<Name> raw => V 1.0b1 FHEMduino - compiled at Nov 24 2015 15:58:41
|-
|get <Name> uptime
|Ausgabe der Zeit, welche der FHEMduino bereits aktiv ist
|<Name> uptime => 0 00:09:08
|-
|-
|get <Name> cmds
|get <Name> cmds
|Ausgabe der Parameter
|Ausgabe der Parameter
|<Name> cmds => V is R q
|<Name> cmds => V i f d h t R q
|-
|-
|get <Name> raw V
|get <Name> raw V
|Ausgabe der Version mit Erstelldatum
|Ausgabe der Version mit Erstelldatum
|<Name> raw => V 1.0b1 FHEMduino - compiled at Nov 24 2015 15:58:41
|<Name> raw => V 1.0b1 FHEMduino - compiled at Nov 24 2015 15:58:41
|-
|get <Name> raw i
|???
|<Name> raw => No answer
|-
|get <Name> raw f
|???
|<Name> raw => No answer
|-
|get <Name> raw d
|???
|<Name> raw => No answer
|-
|get <Name> raw h
|???
|<Name> raw => No answer
|-
|get <Name> raw t
|???
|<Name> raw => 00000001B
|-
|-
|get <Name> raw R
|get <Name> raw R
|
|???
|<Name> raw => R1481
|<Name> raw => R1481
|-
|get <Name> raw q
|???
|<Name> raw => No answer
|-
|-
|}
|}


== Set-Befehle ==
== Set-Befehle ==
Mit dem Befehl:<br><code>set <Name> flash <Verzeichnis><.hex-Datei></code><br>kann man den Arduino-Uno "flashen".
Mit dem Befehl:
<br>Beispiel:<br><code>set Arduino flash /opt/fhem/FHEM/fhemduino/fhemduion.hex</code>
:<code>set <Name> flash <Verzeichnis><.hex-Datei></code>
kann man den Arduino-Uno "flashen".<br>
Beispiel:
:<code>set Arduino flash /opt/fhem/FHEM/fhemduino/fhemduino.hex</code>


== Intertechno Steckdose definieren ==
== Intertechno Steckdose definieren ==
Befehl, um z.B. eine Intertechno Steckdose zu definieren:
Befehl, um z.B. eine Intertechno Steckdose zu definieren:
:<code>define IT_ST_1 Arduino_PT2262 0F00F0FFFF FF F0 </code>
:<code>define IT_ST_1 Arduino_PT2262 0F00F0FFFF FF F0 </code>
                                                                           
Berechnung der IT Codes gibt es hier: [[Intertechno_Code_Berechnung|InterTechno Code Berechnung]]
 
== Links ==
== Links ==
* [https://github.com/mdorenka/fhemduino/blob/master/src/sketch.ino FHEMduino Quellcode auf github]
* [https://github.com/mdorenka/fhemduino/blob/master/src/sketch.ino FHEMduino Quellcode auf github]

Aktuelle Version vom 28. Dezember 2017, 18:38 Uhr

FHEMduino
Zweck / Funktion
Empfang von 433 Mhz Funksignalen
Allgemein
Typ Contrib
Details
Dokumentation Thema
Support (Forum) Bastelecke
Modulname 00_FHEMduino.pm
Ersteller mdorenka (Forum /Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!
FHEMduino im EasyBox Gehäuse

Der FHEMduino ist ein Low-Cost Funk Empfänger, der auf einem Arduino Nano basiert. Er wird mittels USB angeschlossen und ist primär dazu konzipiert, im 433MHz-Bereich zu arbeiten.

Der FHEMduino wird seit einiger Zeit nicht mehr weiter entwickelt.

Mit SIGNALduino gibt es eine weiterentwickelte Version dieses Konzeptes. Die Hardware kann 1:1 weiterverwendet werden, jedoch unterstützt der SIGNALduino eine größere Anzahl an Funkprotokollen und muss auch nicht selbst compiliert werden.

Hardware

FHEMduino Schaltplan

Der FHEMduino basiert auf dem Arduino Nano. Die Wahl fiel hier auf den Nano, da dieser sehr klein ist und in einem DIL30-Sockel gesockelt werden kann. Ein weiterer Vorteil ist, dass wenn das entsprechende Hostsystem (beispielsweise ein Raspberry Pi) mächtig genug ist, der FHEMduino aus der Ferne programmiert werden kann. Die Stromversorgung erfolgt vollständig via USB. Als weitere Komponenten benötigt man einen Sender und Empfänger im gewünschten Frequenzspektrum. Hierzu kann auch eine bestehende Wetterstation oder Funkfernbedienung ausgeschlachtet werden.

Durch die geringe Anzahl an Bauteilen lässt sich der FHEMduino sehr gut auf einer Lochrasterplatine aufbauen und ist somit auch für Anwender, die mit dem Aufbau von Schaltungen weniger bewandert sind, gut bewältigbar.

Anbei eine Auswahl häufig verwendeter Komponenten. Diese sind alle (z.B. auf ebay) leicht zu finden:

  • Arduino: Nano FT232RL V3.0 ATmega328P 5V 16M USB Micro-controller Board für Arduino ca. 7€
  • Empfänger + Receiver Set: 433 Mhz RF Sender und Empfänger für Arduino Projekte ca. 2€
  • Ein etwas besserer Receiver: Super-heterodyne OOK Wireless Receiver Module Strong Interference 433MHZ-116dBm ca. 3 US$
  • Antenne: es wird ein 17 cm langer Draht benötigt (anlöten)

Software

Durch das Arduino-Framework können auch Einsteiger die Software um eigene Protokolle erweitern oder Funktionalitäten wie eine Status-LED oder 1-Wire-Module hinzufügen. Die Software muss sowohl die serielle Kommunikation als auch den Funkverkehr verarbeiten. Momentan werden lediglich fallende Flanken bei den Funksignalen aufgefangen und via Interrupt ausgewertet. Eine Erweiterung auf steigende Flanken ist jedoch geplant, um somit auch andere Protokolle auswerten zu können. Die Programmierung aus der Ferne kann mittels Inotool erledigt werden.

FHEM Modul

Die Verarbeitung innerhalb von FHEM funktioniert analog zum CUL Modul. Die beiden zu FHEMduino entwickelten Module sind prinzipiell Kopien bestehender CUL Module. Da sich auch die serielle Kommunikation an der des CUL orientiert, ist hier wenig Neuentwicklung nötig gewesen.

Unterstützte Geräte

Für die folgenden Geräte gibt es derzeit eine Unterstützung für den Betrieb mit FHEM:

Produkt (E)mpfangen
(S)enden
Hinweise Modul
PEARL NC7159 E 14_FHEMduino_NZ_WS.pm
LogiLink WS0002 E 14_FHEMduino_NZ_WS.pm
Conrad KW9010 E inkl. Prüfsummencheck 14_FHEMduino_KW9010.pm
technoline Wetterstation WS 6750/TX70DTH E 14_FHEMduino_KW9010.pm
LIFETEC E 14_FHEMduino_KW9010.pm
EZ6 Meteo E mit eigenem Modul; momentan nicht integriert (Protokolbeschreibung)
Technoline/Conrad LaCrosse Temperatur / Luftfeuchte Funksensoren TX2/3/4 E mittels des bereits integrierten Moduls in FHEM 14_CUL_TX.pm
EUROCHRON/Tchibo E 14_FHEMduino_EuroChr.pm
Flamingo FA20RF / ELRO RM150RF S/E 14_FHEMduino_FA20RF.pm
PT2262 (IT / ELRO switches) S/E 14_FHEMduino_PT2262.pm
Brennenstuhl BR 102-F S/E 14_FHEMduino_PT2262.pm
DCF-77 E 14_FHEMduino_DCF77.pm
Intertek (4x Funksteckdose bei Penny für 7 Euro) S/E verbauter Controller 8029-L2S 14_FHEMduino_PT2262.pm

Einbinden in FHEM

FHEM benötigt zunächst die perl Module aus: https://github.com/mdorenkamp/fhemduino_modules

Diese werden in das FHEM Verzeichnis kopiert in dem auch alle anderen pm Dateien liegen. z.B. /opt/fhem/FHEM. Das Gerät wird zum Beispiel mit dem folgenden Befehl angelegt. Achtung die konkrete Schnittstellenbezeichnung ist vom jeweiligen System abhängig!

define Arduino FHEMduino /dev/serial/ttyUSB0/
define Arduino FHEMduino /dev/ttyUSB0/

besser (um beim Umstecken des USB-Port das Gerät nicht neu definieren oder Attribute ändern zu müssen) mit Angabe des genauen Namens:

define Arduino FHEMduino /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600

Diese Befehle helfen beim suchen:

  ls -l /dev/ser*
  ls -l /dev/
  ls -l /dev/tty*

Nach dem Einbinden wird der FHEMDuino, falls er erkannt wird, im Status "Openend" angezeigt. Erst wenn die richtige Firmware auf dem Arduino ist, wird der Status "Initialized" angezeigt.

Flashen des Arduino mit der FHEMDuino Firmware

  1. Falls avrdude noch nicht vorhanden ist kann man das z.B. so auf dem FHEM installieren:
sudo apt-get install avrdude
2. Fhemduino Sourcen laden
https://github.com/mdorenkamp/fhemduino
3. Arduino IDE unter Windows/Linux mit grafischer Oberfläche installieren:
https://www.arduino.cc/en/Main/Software
Falls das Kompilieren nicht ordentlich abläuft könnte helfen, eine Arduino IDE Version kleiner 1.6.7 zu benutzen, download hier:
https://www.arduino.cc/en/Main/OldSoftwareReleases
Linux:
In der gewählten Arduino IDE im Menü Files.Preferences, Tab Settings, “show verbose output - during compilation” anklicken.
Es wird im Folgenden davon ausgegangen, dass die Firmware auf dem Linux-Rechner kompiliert wird, auf dem auch FHEM läuft, z.B. einem Raspberry Pi.
4. Im Fhemduino GIT sind die nächsten Schritte beschrieben, die auch für
Linux gelten:
How to compile with Arduino IDE unter Microsoft Windows:
  • Sync the repository from github or download the complete archive as a zip archive.
  • Extract or copy all files from src and lib the files to a directory called fhemduino
  • rename sketch.ino into fhemduino.ino. The name of the sketch must be the same as the directory where it resides.
  • Look at the sketch.h file, to enable or disable features of the fhemduino.
  • Open fhemduino.ino in the IDE and just compile it.
5. Es wurde ein Hexfile erzeugt.
Windows:
Es liegt im gleichen Ordner wie die Sourcen, z.B. fhemduino.cpp.standard.hex
Linux:
Im Konsolenfenster der Arduino IDE (schwarzes Feld unten im IDE-Fenster) wird bei erfolgreicher Kompilierung in der letzten Zeile der Pfad des Hexfiles angezeigt, in der Form "/tmp/build<sehr lange hex Zahl>/sketch_<datum>.ino.hex". Dafür hatten wir oben unter 3. den 'verbose' Modus aktiviert.
Dieses Hexfile umbenennen nach fhemduino.hex.
Windows:
Das Hexfile auf den FHEM-Rechner kopieren (z.B. per WinSCP nach /opt/fhem/fhemduino/hexfiles)
Linux:
Das Hexfile in das gewünschte Verzeichnis, z.B./opt/fhem/fhemduino/hexfiles verschieben.
6. In FHEM ist der Fhemduino ja bereits mit dem Status "Open" vorhanden.
Mit
attr <myfhemduino> hexFile /opt/fhem/fhemduino/hexfiles/fhemduino.hex
wird FHEM mitgeteilt, wo das Hexfile liegt. Der Pfad ist entsprechend der eigenen Installation anzupassen.
Der Fhemduino hat einen Befehl 'flash'. Er wird so aufgerufen :
set <myfhemduino> flash
7. Danach wird ein Log angezeigt. Wenn alles gut ging und man wählt noch einmal den Fhemduino aus steht dort nicht mehr :'open' sondern 'initialized'.
Die Funktion:
get fhemduino version
sollte jetzt etwas zurückgeben. Zum Beispiel => V 2.3v FHEMduino - compiled at Jun 26 2015 14:45:06

Readings

Folgende Readings sind im Moment in FHEMduino eingebunden:

Befehl Ausgabe Beispiel
get <Name> version Ausgabe der Version mit Erstelldatum <Name> raw => V 1.0b1 FHEMduino - compiled at Nov 24 2015 15:58:41
get <Name> uptime Ausgabe der Zeit, welche der FHEMduino bereits aktiv ist <Name> uptime => 0 00:09:08
get <Name> cmds Ausgabe der Parameter <Name> cmds => V i f d h t R q
get <Name> raw V Ausgabe der Version mit Erstelldatum <Name> raw => V 1.0b1 FHEMduino - compiled at Nov 24 2015 15:58:41
get <Name> raw i ??? <Name> raw => No answer
get <Name> raw f ??? <Name> raw => No answer
get <Name> raw d ??? <Name> raw => No answer
get <Name> raw h ??? <Name> raw => No answer
get <Name> raw t ??? <Name> raw => 00000001B
get <Name> raw R ??? <Name> raw => R1481
get <Name> raw q ??? <Name> raw => No answer

Set-Befehle

Mit dem Befehl:

set <Name> flash <Verzeichnis><.hex-Datei>

kann man den Arduino-Uno "flashen".
Beispiel:

set Arduino flash /opt/fhem/FHEM/fhemduino/fhemduino.hex

Intertechno Steckdose definieren

Befehl, um z.B. eine Intertechno Steckdose zu definieren:

define IT_ST_1 Arduino_PT2262 0F00F0FFFF FF F0

Berechnung der IT Codes gibt es hier: InterTechno Code Berechnung

Links