Dies ist eine alte Version des Dokuments!


CUL Resetter auf dem Raspberrys Pi einrichten

Viele FHEM User berichten von zeitweisen Problemen bei einem nanoCUL mit FTDI-Chip auf dem Arduino.
In den Foren wird viel spekuliert. Über billige FTDI-Clones aus China bis zu fehlender Test-Pin-Verbindung (Pins 3+4 verlöten). Aber dies alles hilft meistens nicht weiter und der nanoCUL hängt sich weiterhin auf. Ich bin der Meinung, dass es an der Firmware liegt. Diese hat einen Bug und irgendwann möchte ein Watchdog aufgrund einiger Fehler den Ardunino neu booten und der CUL bleibt in einer Endlos-Schleife hängen. Deswegen blinkt er auch schnell und ist nicht mehr ansprechbar. Dann hilft nur noch ein manuelles Entfernes und Wiedereinstecken des nanoCUL um diesen wieder in Betrieb nehmen zu können. Doof nur, wenn man nicht zuhause ist und die halbe Hausautomation nicht mehr funktioniert.

Der CUL-Resetter setzt genau hier ein und verschafft Abhilfe. Er resettet den nanoCUL, damit dieser wieder wie gewohnt funktioniert.
Über ein DOIF wird der CUL-Resetter nur dann ausgelöst, wenn der nanoCUL über 60 Sekunden im Zustand opened verweilt. Er resettet den nanoCUL und initialisiert ihn wieder.
Leider ist dies softwaretechnisch nicht möglich. Aber diese kleine Hardware wird einfach an den Raspberry Pi angeschlossen und hilft uns einen Woraround anzuwenden.

Nachfolgend die erforderliche Installation- und Konfiguration-Anleitung.


Hardware Installation

Der CUL-Resetter hat 3 Stck Dupont Kabel, welche an die GPIO-Schnittstelle des Raspberry Pi aufgesteckt werden.
Dazu wählt man die Anschlüsse 5V, GND und einen der GPIO-Pins. Hier im Beispiel wird GPIO-18 verwendet.



Software Installation

Zunächst das System updaten und WiringPi (Tool um die GPIO Schnittstellen vereinfacht anzusprechen) herunterladen.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git git-core
cd
git clone git://git.drogon.net/wiringPi

Danach WiringPi kompilieren.

cd wiringPi
./build

Nun ist WiringPi installiert und verfüghbar. Die Weitere Konfiguration wird im FHEM Webinterface vorgenommen.

FHEM Konfiguration

Wir erstellen zunächst einen dummy zum generellen Einschalten des nanoCUL.

define GPIO_18 dummy
attr GPIO_18 room Watchdog
attr GPIO_18 setList on off

Anschließend 2x notify zum ein/ausschalten.

Einschalten des nanoCUL:

define GPIO_18_on notify GPIO_18:on {system("/usr/bin/gpio export 18 out && /usr/bin/gpio -g write 18 1")}
attr GPIO_18_on room Watchdog

Ausschalten des nanoCUL:

define GPIO_18_off notify GPIO_18:off {system("/usr/bin/gpio export 18 out && /usr/bin/gpio -g write 18 0")}
attr GPIO_18_off room Watchdog

Nun folgt ein Watchdog für den Reset des nanoCUL.
Die Funktion ist folgende: Wechselt der nanoCUL für mehr als 60 Sekunden auf openend, dann wird der Strom des nanoCUL weggenommen und wieder zugeführt. Dies simuliert ein händisches aus/einstecken und der nanoCUL geht wieder auf initialized.
Der Pfad zum nanoCUL (/dev/serial/by.id/…) muss natürlich angepasst werden. Evtl. auch pushmsg anpassen/entfernen wenn nicht vorhanden.

define nanoCULWatchdog DOIF ( [nanoCUL:state] eq "opened" ) (\
\
	{\
	fhem("defmod nanoCUL CUL /dev/serial/by-id/none\@38400 0000");;\
	system("/usr/bin/gpio export 18 out");;\
	system("/usr/bin/gpio -g write 18 0");;\
	system("sleep 3");;\
	system("/usr/bin/gpio -g write 18 1");;\
	fhem("defmod nanoCUL CUL /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0\@38400 0000");;\
        fhem("set pushmsg msg 'fhem' 'nanoCUL wurde resettet, da 1min im Status opened'");
	}\
)\
DOELSE{}\
\

attr nanoCULWatchdog do always
attr nanoCULWatchdog repeatcmd 600
attr nanoCULWatchdog wait 60
attr nanoCULWatchdog room Watchdog

Navigation
Eigene Werkzeuge