Arduino Firmata: Unterschied zwischen den Versionen
K (links zur CommandRef) |
KKeine Bearbeitungszusammenfassung |
||
(12 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== | {{Hinweis|Device::Firmata Updates: Bis Oktober 2020 wurde eine Kopie des Perl-Moduls ''Device::Firmata'' als Teil von FHEM zur Verfügung gestellt, zuletzt die Version 0.64 aus 05/2018. In neueren Installation von FHEM ist das Modul nicht mehr enthalten. Die aktuelle Version des Moduls gibt es über [[#CPAN|CPAN]]. Bei bestehenden Installationen sollte die vorhandene Kopie des Moduls gelöscht und auf die aktuelle Version umgestellt werden (siehe Punkt 1 dieses {{Link2Forum|Topic=114552|Message=1087982|Linktext=Beitrag}}s im Forum). | ||
Für | }} | ||
{{Infobox Modul | |||
|ModPurpose=Schnittstelle für Firmata-Devices (USB, LAN, WiFi) | |||
|ModType=d | |||
|ModCmdRef=FRM | |||
|ModForumArea=Sonstige Systeme | |||
|ModTechName=10_FRM.pm | |||
|ModOwner=JensB ({{Link2FU|14024|Forum}}/[[Benutzer Diskussion:JensB|Wiki]]) | |||
}} | |||
== Firmata-Devices == | |||
Für Arduinos (und diverse kompatible Boards) gibt es eine Standardimplementierung des Kommunikationsprotokolls ''Firmata'' [https://github.com/firmata/protocol]. Mit Hilfe des Perl-Moduls ''Device::Firmata'', auch bekannt als perl-firmata [https://github.com/ntruchsess/perl-firmata], kann das Firmata-Protokoll in Perl genutzt werden und mit dem Modul [[#FRM|FRM]] auch in FHEM. | |||
Für die Kommunikation zwischen FHEM (Master) und Firmata-Device (Slave) stehen mehrere Schnittstellen zur Auswahl: RS-232, USB, Ethernet und WiFi. Insbesondere Ethernet und WiFi erlauben die Integration dezentraler IO-Periperie mit FHEM. | |||
Firmata ermöglicht es, mit nur geringen Arduino-Kenntnissen digitale und analoge Signale aus eigenen Schaltungen in FHEM zu verarbeiten. Dabei können Signale sowohl eingelesen als auch ausgegeben werden. Ein Verständnis der Bedienung der Arduino-IDE und elektronische Kenntnisse zum Anschluss von Sensoren und Aktoren sind natürlich erforderlich. | |||
=== Arduino IDE === | === Arduino IDE === | ||
Zur Installation von Firmware auf dem Firmata-Device wird natürlich erst mal die Arduino-IDE (Version 1.8 oder höher) benötigt [https://www.arduino.cc/en/main/software]. Die gibt es für die Betriebssysteme Windows, Mac OS X und Linux. | |||
Über die Bibliotheksverwaltung der Arduino-IDE (Menü 'Sketch'->'Bibliothek einbinden'->'Bibliotheken verwalten...') stehen verschiedene Firmware-Versionen von Firmata zur Auswahl. Im folgenden wird auf die Version "Firmata by Firmata Developers" und "ConfigurableFirmata by Firmata Developers" eingegangen. Diese beiden Versionen unterscheiden sich in den unterstützten Hardware-Funktionen: | |||
* Firmata: digitale und analoge I/Os, Servos, I2C | |||
* ConfigurableFirmata: zusätzlich 1-Wire und Schrittmotoren | |||
Bei ConfigurableFirmata ist es auch außerdem einfacher, nicht benötigte Funktionen zu deaktivieren, damit die Firmware möglichst wenig Speicher belegt. Wenn man den zusätzlichen Funktionsumfang von ConfigurableFirmata nicht benötigt, kann man mit etwas Geschick durch Auskommentieren von nicht benötigtem Code aus Firmata z.T. ein noch kompakteres Ergebnis erzielen (das ist aber nur etwas für Fortgeschrittene). | |||
Bei Firmata ist zwischen der Firmata-Protokoll-Version (z.B. 2.6.0) und der Version der jeweiligen Firmware (Firmata: z.B. 2.5.7, ConfigurableFirmata: z.B. 2.10.0) zu unterscheiden, die insbesondere bei ConfigurableFirmata voneinander unabhängig sind. | |||
Nach Installation der gewünschten Firmata-Firmware wählt man eines der funktionsfertigen Beispiele über das Arduino-IDE Menü 'Datei'->'Beispiele'->'Firmata' bzw. 'Datei'->'Beispiele'->'ConfigurableFirmata' aus. Je nach ausgewähltem Beispielprojekt sind noch Anpassungen direkt im Sketch oder in einer zusätzlichen Konfigurationsdatei erforderlich (z.B. um für Ethernet- und WiFi-Schnittstellen die Netzwerkparameter einzustellen). | |||
Über das Arduino-IDE Menü 'Werkzeuge'->'Bords' wählt man das Board aus, das dem eigenen Firmata-Device entspricht. Fehlt das Board in der Auswahl, kann die erforderliche Unterstützung oft über das Menü 'Werkzeuge'->'Bords'->'Boardverwalter...' nachinstalliert werden. Ansonsten hilft ein Blick auf die Hersteller-Webseiten des Boards. | |||
Arduino | |||
Arduino | Ist das Firmata-Device korrekt angeschlossen, drückt man den 'Upload'-Knopf (der mit dem Rechspfeil oben links), um den Arduino-Sketch zu kompilieren und auf das Board hochzuladen. Die Vorgehensweise zum Hochladen ist sehr stark davon abhängig, welches Board man verwendet und mit welcher Technik es angeschlossen ist. Bitte die jeweiligen Angaben des Board-Herstellers beachten. | ||
Wer zum ersten mal mit der Arduino-IDE arbeitet, sollte statt Firmata zunächst das Standard Arduino Beispielprojekt 'Blink' auswählen und es auf dem Firmata-Device installieren. Sobald das klappt, kann man mit Firmata weiter machen. | |||
=== Firmata mit Ethernet oder WiFi === | |||
Vor dem Kompilieren muss man unbedingt die Netzwerkparameter anpassen, d.h. die IP-Adresse des FHEM-Servers und den Port des FRM-Moduls eintragen (ggf. auch eine neue eindeutige MAC-Adresse), bei WiFi auch die SSID und den PSK. In älteren Firmata-Versionen und bei ConfigurableFirmata geschieht das direkt im Sketch. Aktuelle Firmata-Versionen haben dazu eine getrennte Konfigurationsdatei (ethernetConfig.h bzw. wifiConfig.h), so dass keine Änderungen am Sketch erforderlich sind. | |||
Falls der Speicherbedarf der kompilierten Firmware die Möglichkeiten des Boards übersteigt (insbesondere bei Verwendung eines ENC28J60-Ethernet-Shields [https://github.com/ntruchsess/arduino_uip] in Kombination mit einem "kleinen" Arduiono wie den Uno oder Nano) kann man bei Verwendung von ConfigurableFirmata nicht benötigten Features im Sketch auskommentieren. Wenn der Speicherbedarf nur "knapp" ausreicht, läuft die Firmware u.U. trotzdem nicht zuverlässig. | |||
Als ersten Funktionstest für die Netzwerkverbindung empfiehlt sich ein Ping von FHEM zum Firmata-Device. | |||
=== | === Sonderfälle === | ||
Je nach verwendetem Board sind u.U. individuelle Besonderheiten zu berücksichtigen. Hier ein paar Beispiele: | |||
Ein MEGA256 z.B. benutzt einen anderen Pin als SS (Slave select) zur Kommunikation mit dem Ethernetmodul. Man muss der Firmata im Setup mitteilen, welche Pins zu ignorieren sind, damit es keine Wechselwirkungen zwischen Firmata und Ethernet Library gibt. Das ist im ConfigurableFirmata-Sketch [https://github.com/firmata/arduino/blob/configurable/examples/ConfigurableFirmata/ConfigurableFirmata.ino] vorbereitet und muss (wenn man etwas anderes als ein Standard-Ethernetshield am Uno verwendet) geeignet angepasst werden (Beim Mega muss man z.B. den Pin 10 ignorieren und Pin 53 als hardcodiert auf Output stellen). Das gleiche gilt, wenn man eine andere Hardware (z.B. mit ENC28J60 anstelle des WizNet W5100 des Ethernetshields) benutzen möchte, die einen anderen Pin als CS/SS benutzt. | |||
== FHEM FRM-Device == | |||
Bei FHEM stellt ein FRM-Device (Modul 10_FRM.pm) für die FRM-Client-Devices die Schnittstelle (das IODev) zum Firmata-Device zur Verfügung. Jeder FRM-Client erlaubt die Konfiguration eines oder mehrerer Pins eines Firmata-Devices z.B. als analoger Eingang, digitaler Ausang oder I2C-Bus. Es können so viele FRM-Clients für ein FRM-Device definiert werden, bis alle Pins zugeordnet sind. Dabei muss man darauf achten, dass nicht alle Pins alle Ein-/Ausgabemöglichkeiten besitzen. Konfiguriert man einen Pin für einen nicht unterstützen Modus so gibt es bei aktuellen Firmata-Versionen eine Fehlermeldung. Ältere Versionen (vor 2.3) schlucken Fehlkonfigurationen aber der betreffende Pin funktioniert dann nicht. | |||
Vor dem Anlegen des FRM-Devices muss das Perl-Modul ''Device::Firmata'' installiert werden. Dies kann abhänig von den vorhandenen Voraussetzung und Vorlieben auf unterschiedliche Weise erfolgen, Details zur Installation und zum Update von Perl-Modulen finden sich im [[#CPAN|Artikel über CPAN]]. Eine mögliche Installationsvariante auf einem Raspberry Pi ist: | |||
<pre> | |||
sudo cpan install Device::Firmata | |||
</pre> | |||
Beispiele für das Anlegen eines FRM-Devices: | |||
<hr /> | <hr /> | ||
<nowiki># definiere FRM mit USB-Schnittstelle /dev/ttyUSB0, Baudrate 57600 ist Default für StandardFirmata | |||
FRM | define FIRMATA FRM /dev/ttyUSB0@57600</nowiki> | ||
<nowiki># definiere FRM mit TCP/IP-Schnittstelle auf Port 3030 | |||
define FIRMATA FRM 3030 global</nowiki> | |||
FRM öffnet bei Netzwerkverbindungen FHEM-seitig einen Serverport (dieser wird in der define-Zeile angegeben). 'global' muss zusätzlich angegeben werden, damit der Serversocket an alle IP-Adressen gebunden wird. Ohne 'global' sind nur Verbindungen für 'localhost' möglich. Das Firmata-Device verbindet sich aktiv zu diesem Port, sonst gilt im Prinzip alles was auch für den über USB angebunden Firmata-Device gilt. | |||
<nowiki># für alle analogen Eingangs-Pins | |||
attr FIRMATA sampling-interval 1000 # [ms] - maximal 16384 setzbar</nowiki> | |||
siehe auch: {{Link2CmdRef|Anker=FRM}} FRM | |||
Hat man mehrere FRM-Devices definiert, muss man nach dem Anlegen eines FRM-Client-Devices dessen Attribut ''IODev'' überprüfen und ggf. ändern, wenn das gewünschte FRM-Device nicht automatisch erkannt wurde. | |||
Es folgt eine Auflistung der generischen FRM-Client-Devices. Darüber hinaus gibe es noch mehrere spezialisierte FRM-Client-Devices, vor allem für I2C-Bus-Devices (siehe {{Link2CmdRef}}): | |||
=== 20_FRM_IN.pm === | === 20_FRM_IN.pm === | ||
Macht einen | |||
Macht einen Pin als digitalen Eingang nutzbar. | |||
siehe auch: | |||
<nowiki>define Firmata_IN FRM_IN 12 # definiert Pin 12 als digitalen Eingang</nowiki> | |||
siehe auch: {{Link2CmdRef|Anker=FRM_IN}} FRM_IN | |||
=== 20_FRM_OUT.pm === | === 20_FRM_OUT.pm === | ||
Macht einen | |||
Macht einen Pin als digitalen Ausgang nutzbar. | |||
siehe auch: | |||
<nowiki>define Firmata_OUT FRM_OUT 11 # definiert Pin 11 als digitalen Ausgang</nowiki> | |||
siehe auch: {{Link2CmdRef|Anker=FRM_OUT}} FRM_OUT | |||
=== 20_FRM_AD.pm === | === 20_FRM_AD.pm === | ||
Macht einen | |||
Macht einen Pin als analogen Eingang nutzbar. | |||
siehe auch: | |||
<nowiki>define Firmata_ANALOG FRM_AD 17 # definiert Pin 17 als analogen Eingang</nowiki> | |||
siehe auch: {{Link2CmdRef|Anker=FRM_AD}} FRM_AD | |||
=== 20_FRM_PWM.pm === | === 20_FRM_PWM.pm === | ||
Macht einen | |||
Macht einen Pin als analogen Ausgang nutzbar. Es wird ein pulsweitenmoduliertes Signal ausgegeben. | |||
siehe auch: | |||
define Firmata_ANALOG FRM_PWM 10 # definiert Pin 10 als PWM-Ausgang | |||
siehe auch: {{Link2CmdRef|Anker=FRM_PWM}} FRM_PWM | |||
=== 20_FRM_SERVO.pm === | === 20_FRM_SERVO.pm === | ||
Erlaubt die Ansteuerung | |||
Erlaubt die Ansteuerung eines analogen Modelbauservos über einen Pin per PWM. | |||
siehe auch: | |||
define Firmata_ANALOG FRM_SERVO 9 # definiert Pin 9 als Servo-Ausgang | |||
siehe auch: {{Link2CmdRef|Anker=FRM_SERVO}} FRM_SERVO | |||
=== 20_FRM_I2C.pm === | === 20_FRM_I2C.pm === | ||
<p>Erlaubt das | |||
siehe auch: | <p>Erlaubt das Lesen und Schreiben über den I2C-Bus am Firmata-Device.</p> | ||
=== | siehe auch: {{Link2CmdRef|Anker=FRM_I2C}}FRM_I2C | ||
<p> | |||
siehe auch: | === 20_FRM_RGB.pm === | ||
<p>Erlaubt das Ansteuern eines RGB-LED-Controller per PWM.</p> | |||
siehe auch: {{Link2CmdRef|Anker=FRM_RGB}}FRM_RGB | |||
=== 20_FRM_ROTENC.pm === | |||
<p>Erlaubt das Auswerten eines Drehgebers.</p> | |||
siehe auch: {{Link2CmdRef|Anker=FRM_ROTENC}}FRM_ROTENC | |||
=== 20_FRM_STEPPER.pm === | |||
<p>Erlaubt das Ansteuern eines Schrittmotors.</p> | |||
siehe auch: {{Link2CmdRef|Anker=FRM_STEPPER}}FRM_STEPPER | |||
=== OneWire-Firmata === | |||
<p>Der Artikel [[Arduino mit OneWireFirmata]] beschreibt, wie man am Firmata-Device angeschlossene 1-Wire Devices in FHEM einzubindet.</p> | |||
siehe auch: {{Link2CmdRef|Anker=OWX}} OWX | |||
[[Kategorie:Other_Components]] | [[Kategorie:Other_Components]] | ||
[[Kategorie:Arduino]] | [[Kategorie:Arduino]] | ||
[[Kategorie:HOWTOS]] | [[Kategorie:HOWTOS]] |
Aktuelle Version vom 8. Dezember 2022, 21:08 Uhr
FRM | |
---|---|
Zweck / Funktion | |
Schnittstelle für Firmata-Devices (USB, LAN, WiFi) | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Sonstige Systeme |
Modulname | 10_FRM.pm |
Ersteller | JensB (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Firmata-Devices
Für Arduinos (und diverse kompatible Boards) gibt es eine Standardimplementierung des Kommunikationsprotokolls Firmata [1]. Mit Hilfe des Perl-Moduls Device::Firmata, auch bekannt als perl-firmata [2], kann das Firmata-Protokoll in Perl genutzt werden und mit dem Modul FRM auch in FHEM.
Für die Kommunikation zwischen FHEM (Master) und Firmata-Device (Slave) stehen mehrere Schnittstellen zur Auswahl: RS-232, USB, Ethernet und WiFi. Insbesondere Ethernet und WiFi erlauben die Integration dezentraler IO-Periperie mit FHEM.
Firmata ermöglicht es, mit nur geringen Arduino-Kenntnissen digitale und analoge Signale aus eigenen Schaltungen in FHEM zu verarbeiten. Dabei können Signale sowohl eingelesen als auch ausgegeben werden. Ein Verständnis der Bedienung der Arduino-IDE und elektronische Kenntnisse zum Anschluss von Sensoren und Aktoren sind natürlich erforderlich.
Arduino IDE
Zur Installation von Firmware auf dem Firmata-Device wird natürlich erst mal die Arduino-IDE (Version 1.8 oder höher) benötigt [3]. Die gibt es für die Betriebssysteme Windows, Mac OS X und Linux.
Über die Bibliotheksverwaltung der Arduino-IDE (Menü 'Sketch'->'Bibliothek einbinden'->'Bibliotheken verwalten...') stehen verschiedene Firmware-Versionen von Firmata zur Auswahl. Im folgenden wird auf die Version "Firmata by Firmata Developers" und "ConfigurableFirmata by Firmata Developers" eingegangen. Diese beiden Versionen unterscheiden sich in den unterstützten Hardware-Funktionen:
- Firmata: digitale und analoge I/Os, Servos, I2C
- ConfigurableFirmata: zusätzlich 1-Wire und Schrittmotoren
Bei ConfigurableFirmata ist es auch außerdem einfacher, nicht benötigte Funktionen zu deaktivieren, damit die Firmware möglichst wenig Speicher belegt. Wenn man den zusätzlichen Funktionsumfang von ConfigurableFirmata nicht benötigt, kann man mit etwas Geschick durch Auskommentieren von nicht benötigtem Code aus Firmata z.T. ein noch kompakteres Ergebnis erzielen (das ist aber nur etwas für Fortgeschrittene).
Bei Firmata ist zwischen der Firmata-Protokoll-Version (z.B. 2.6.0) und der Version der jeweiligen Firmware (Firmata: z.B. 2.5.7, ConfigurableFirmata: z.B. 2.10.0) zu unterscheiden, die insbesondere bei ConfigurableFirmata voneinander unabhängig sind.
Nach Installation der gewünschten Firmata-Firmware wählt man eines der funktionsfertigen Beispiele über das Arduino-IDE Menü 'Datei'->'Beispiele'->'Firmata' bzw. 'Datei'->'Beispiele'->'ConfigurableFirmata' aus. Je nach ausgewähltem Beispielprojekt sind noch Anpassungen direkt im Sketch oder in einer zusätzlichen Konfigurationsdatei erforderlich (z.B. um für Ethernet- und WiFi-Schnittstellen die Netzwerkparameter einzustellen).
Über das Arduino-IDE Menü 'Werkzeuge'->'Bords' wählt man das Board aus, das dem eigenen Firmata-Device entspricht. Fehlt das Board in der Auswahl, kann die erforderliche Unterstützung oft über das Menü 'Werkzeuge'->'Bords'->'Boardverwalter...' nachinstalliert werden. Ansonsten hilft ein Blick auf die Hersteller-Webseiten des Boards.
Ist das Firmata-Device korrekt angeschlossen, drückt man den 'Upload'-Knopf (der mit dem Rechspfeil oben links), um den Arduino-Sketch zu kompilieren und auf das Board hochzuladen. Die Vorgehensweise zum Hochladen ist sehr stark davon abhängig, welches Board man verwendet und mit welcher Technik es angeschlossen ist. Bitte die jeweiligen Angaben des Board-Herstellers beachten.
Wer zum ersten mal mit der Arduino-IDE arbeitet, sollte statt Firmata zunächst das Standard Arduino Beispielprojekt 'Blink' auswählen und es auf dem Firmata-Device installieren. Sobald das klappt, kann man mit Firmata weiter machen.
Firmata mit Ethernet oder WiFi
Vor dem Kompilieren muss man unbedingt die Netzwerkparameter anpassen, d.h. die IP-Adresse des FHEM-Servers und den Port des FRM-Moduls eintragen (ggf. auch eine neue eindeutige MAC-Adresse), bei WiFi auch die SSID und den PSK. In älteren Firmata-Versionen und bei ConfigurableFirmata geschieht das direkt im Sketch. Aktuelle Firmata-Versionen haben dazu eine getrennte Konfigurationsdatei (ethernetConfig.h bzw. wifiConfig.h), so dass keine Änderungen am Sketch erforderlich sind.
Falls der Speicherbedarf der kompilierten Firmware die Möglichkeiten des Boards übersteigt (insbesondere bei Verwendung eines ENC28J60-Ethernet-Shields [4] in Kombination mit einem "kleinen" Arduiono wie den Uno oder Nano) kann man bei Verwendung von ConfigurableFirmata nicht benötigten Features im Sketch auskommentieren. Wenn der Speicherbedarf nur "knapp" ausreicht, läuft die Firmware u.U. trotzdem nicht zuverlässig.
Als ersten Funktionstest für die Netzwerkverbindung empfiehlt sich ein Ping von FHEM zum Firmata-Device.
Sonderfälle
Je nach verwendetem Board sind u.U. individuelle Besonderheiten zu berücksichtigen. Hier ein paar Beispiele:
Ein MEGA256 z.B. benutzt einen anderen Pin als SS (Slave select) zur Kommunikation mit dem Ethernetmodul. Man muss der Firmata im Setup mitteilen, welche Pins zu ignorieren sind, damit es keine Wechselwirkungen zwischen Firmata und Ethernet Library gibt. Das ist im ConfigurableFirmata-Sketch [5] vorbereitet und muss (wenn man etwas anderes als ein Standard-Ethernetshield am Uno verwendet) geeignet angepasst werden (Beim Mega muss man z.B. den Pin 10 ignorieren und Pin 53 als hardcodiert auf Output stellen). Das gleiche gilt, wenn man eine andere Hardware (z.B. mit ENC28J60 anstelle des WizNet W5100 des Ethernetshields) benutzen möchte, die einen anderen Pin als CS/SS benutzt.
FHEM FRM-Device
Bei FHEM stellt ein FRM-Device (Modul 10_FRM.pm) für die FRM-Client-Devices die Schnittstelle (das IODev) zum Firmata-Device zur Verfügung. Jeder FRM-Client erlaubt die Konfiguration eines oder mehrerer Pins eines Firmata-Devices z.B. als analoger Eingang, digitaler Ausang oder I2C-Bus. Es können so viele FRM-Clients für ein FRM-Device definiert werden, bis alle Pins zugeordnet sind. Dabei muss man darauf achten, dass nicht alle Pins alle Ein-/Ausgabemöglichkeiten besitzen. Konfiguriert man einen Pin für einen nicht unterstützen Modus so gibt es bei aktuellen Firmata-Versionen eine Fehlermeldung. Ältere Versionen (vor 2.3) schlucken Fehlkonfigurationen aber der betreffende Pin funktioniert dann nicht.
Vor dem Anlegen des FRM-Devices muss das Perl-Modul Device::Firmata installiert werden. Dies kann abhänig von den vorhandenen Voraussetzung und Vorlieben auf unterschiedliche Weise erfolgen, Details zur Installation und zum Update von Perl-Modulen finden sich im Artikel über CPAN. Eine mögliche Installationsvariante auf einem Raspberry Pi ist:
sudo cpan install Device::Firmata
Beispiele für das Anlegen eines FRM-Devices:
# definiere FRM mit USB-Schnittstelle /dev/ttyUSB0, Baudrate 57600 ist Default für StandardFirmata define FIRMATA FRM /dev/ttyUSB0@57600
# definiere FRM mit TCP/IP-Schnittstelle auf Port 3030 define FIRMATA FRM 3030 global
FRM öffnet bei Netzwerkverbindungen FHEM-seitig einen Serverport (dieser wird in der define-Zeile angegeben). 'global' muss zusätzlich angegeben werden, damit der Serversocket an alle IP-Adressen gebunden wird. Ohne 'global' sind nur Verbindungen für 'localhost' möglich. Das Firmata-Device verbindet sich aktiv zu diesem Port, sonst gilt im Prinzip alles was auch für den über USB angebunden Firmata-Device gilt.
# für alle analogen Eingangs-Pins attr FIRMATA sampling-interval 1000 # [ms] - maximal 16384 setzbar
siehe auch: commandref/FRM FRM
Hat man mehrere FRM-Devices definiert, muss man nach dem Anlegen eines FRM-Client-Devices dessen Attribut IODev überprüfen und ggf. ändern, wenn das gewünschte FRM-Device nicht automatisch erkannt wurde.
Es folgt eine Auflistung der generischen FRM-Client-Devices. Darüber hinaus gibe es noch mehrere spezialisierte FRM-Client-Devices, vor allem für I2C-Bus-Devices (siehe commandref):
20_FRM_IN.pm
Macht einen Pin als digitalen Eingang nutzbar.
define Firmata_IN FRM_IN 12 # definiert Pin 12 als digitalen Eingang
siehe auch: commandref/FRM_IN FRM_IN
20_FRM_OUT.pm
Macht einen Pin als digitalen Ausgang nutzbar.
define Firmata_OUT FRM_OUT 11 # definiert Pin 11 als digitalen Ausgang
siehe auch: commandref/FRM_OUT FRM_OUT
20_FRM_AD.pm
Macht einen Pin als analogen Eingang nutzbar.
define Firmata_ANALOG FRM_AD 17 # definiert Pin 17 als analogen Eingang
siehe auch: commandref/FRM_AD FRM_AD
20_FRM_PWM.pm
Macht einen Pin als analogen Ausgang nutzbar. Es wird ein pulsweitenmoduliertes Signal ausgegeben.
define Firmata_ANALOG FRM_PWM 10 # definiert Pin 10 als PWM-Ausgang
siehe auch: commandref/FRM_PWM FRM_PWM
20_FRM_SERVO.pm
Erlaubt die Ansteuerung eines analogen Modelbauservos über einen Pin per PWM.
define Firmata_ANALOG FRM_SERVO 9 # definiert Pin 9 als Servo-Ausgang
siehe auch: commandref/FRM_SERVO FRM_SERVO
20_FRM_I2C.pm
Erlaubt das Lesen und Schreiben über den I2C-Bus am Firmata-Device.
siehe auch: commandref/FRM_I2CFRM_I2C
20_FRM_RGB.pm
Erlaubt das Ansteuern eines RGB-LED-Controller per PWM.
siehe auch: commandref/FRM_RGBFRM_RGB
20_FRM_ROTENC.pm
Erlaubt das Auswerten eines Drehgebers.
siehe auch: commandref/FRM_ROTENCFRM_ROTENC
20_FRM_STEPPER.pm
Erlaubt das Ansteuern eines Schrittmotors.
siehe auch: commandref/FRM_STEPPERFRM_STEPPER
OneWire-Firmata
Der Artikel Arduino mit OneWireFirmata beschreibt, wie man am Firmata-Device angeschlossene 1-Wire Devices in FHEM einzubindet.
siehe auch: commandref/OWX OWX