Wie wird ein Arduino Nano mit Firmata geflasht, mit dem iMac und dem Firmata-Testprogramm getestet und in Fhem auf dem Raspberry Pi eingebunden?

Als ich diesen Beitrag gelesen hatte, hatte ich Lust, auch mal was mit Firmata zu machen. Mit dem Firmata Protokoll kann man einfach auf alle Ein und Ausgänge zugreifen ohne ein eigenes Protokoll zu entwickeln.

Also einen Arduino Nano aus der Bastelkiste geholt und ihn mit dem Firmata Standard Sketch geflasht. Das wird ja ganz gut in dieser Anleitung beschrieben.

Arduino flashen

Also über die Arduino IDE den Standard Firmata flashen:
Firmata flashen

Quicktest


Nun ein Quicktest über den iMac (Windows analog) und dem Firmata-Testprogramm.
Dazu eine Fassung für den Nano:
Fassung
Und da den Nano einstecken:
20140611-215205-78725591.jpg
Den Nano in den USB-Port des iMac gesteckt. Dann das Firmata-Testprogram downloaden und über das Icon starten:
Bildschirmfoto 2014-06-11 um 21.33.06
Dann den passenden Seriellen USB-Port über das Port-Menü auswählen:
Bildschirmfoto 2014-06-11 um 21.57.28
Jetzt wird die Gui des Testprogramm angezeigt:
Bildschirmfoto 2014-06-11 um 21.33.21

Zum schnellen Testen, drücken wir auf den Qutput Button zu PIN 13, an den ist die interne rote LED angeschlossen, und schon leuchtet sie ROT:
20140611-215206-78726411.jpg

Wenn das erfolgreich getestet wurde, kann der Nano an den rPI angeschlossen werden oder auch über das Testprogramm weiter verwendet werden.

Einbindung in Fhem

Dazu muss die passende USB Schnittstelle gefunden werden.

Wie kann die „richtige“ Schnittstelle auf dem Raspberry Pi gefunden werden?

Auf der Konsole ein ls -la /dev/serial/by-id/ eingeben und die passende merken.
ls dev

Diese Einträge in der fhem.cfg ergänzen mit der „richtigen“ USB-Schnittstelle und restarten.

# IO-Device
define FIRMATA FRM /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A9SV31TT-if00-port0@57600
attr FIRMATA alias Firmata-Controller
attr FIRMATA group Firmata
attr FIRMATA room Firmata

# Eingang Pin 12 abfragen
define Eingang12 FRM_IN 12
attr Eingang12 IODev FIRMATA
attr Eingang12 alias Eingang_Pin_12
attr Eingang12 group Firmata
attr Eingang12 room Firmata
attr Eingang12 stateFormat {"zuletzt: ".ReadingsTimestamp('Eingang12','reading','')}

# Ausgang pin 11 als Relais-Steuerung
define Ausgang11 FRM_OUT 11
attr Ausgang11 IODev FIRMATA
attr Ausgang11 alias Ausgang_Pin_11
attr Ausgang11 group Firmata
attr Ausgang11 room Firmata
attr Ausgang11 stateFormat value

In Fhem wird nun ein neuer Raum Firmata angezeigt und folgende Details:
Bildschirmfoto 2014-06-09 um 22.39.07

Fortsetzung folgt…