Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

public:fhem_culresetter [2018/10/25 06:59]
admin [FHEM Konfiguration]
public:fhem_culresetter [2019/08/07 16:30]
Zeile 1: Zeile 1:
-===== 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.\\ 
-\\ 
-{{:​public:​cul-resetter-1.jpg?​800|}} 
-  ​ 
- 
- 
-\\ 
-\\ 
-==== Software Installation ==== 
-Zunächst das System updaten und WiringPi (Tool um die GPIO Schnittstellen vereinfacht anzusprechen) herunterladen. \\ 
-<​code>​ 
-sudo apt-get update 
-sudo apt-get upgrade 
-sudo apt-get install git git-core 
-cd 
-git clone git://​git.drogon.net/​wiringPi 
-</​code>​ 
- 
-Danach WiringPi kompilieren. \\ 
-<​code>​ 
-cd wiringPi 
-./build 
-</​code>​ 
-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. \\ 
- 
-<​code>​ 
-define GPIO_18 dummy 
-attr GPIO_18 room Watchdog 
-attr GPIO_18 setList on off 
-</​code> ​ 
- 
-Anschließend 2x notify zum ein/​ausschalten. \\ 
- 
-Einschalten des nanoCUL: 
-<​code>​ 
-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 
-</​code>​ 
- 
-Ausschalten des nanoCUL: 
-<​code>​ 
-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 
-</​code>​ 
- 
-Nun können wir bereits den CUL-Resetter händisch über FHEM schalten. Steckt man einen nanoCUL an, leuchtet desssen LED sobald man den dummy einschaltet. \\ 
-\\ 
- 
-Anschließend konfigurieren wir einen Watchdog für den automatischen 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. \\ 
- 
-<​code>​ 
-define nanoCULWatchdog DOIF ( [nanoCUL:​state] eq "​opened"​ ) (\ 
-\ 
- {\ 
-        my $culpath = InternalVal('​nanoCUL','​DEF',''​);;​\ 
-        $culpath=~s/​@/​\\@/;;​ \\  
- 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 $culpath"​);;​\ 
-        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 
-</​code>​ 
- 
-Als letztes muss die FHEM Konfiguration des nanoCUL noch leicht erweitert werden, damit die Zustandsänderung einen Event erzeugt. ​  \\ 
-<​code>​ 
-attr nanoCUL event-on-change-reading state 
-attr nanoCUL event-on-update-reading state 
-</​code>​ 

Navigation
Eigene Werkzeuge