Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

public:fhem_culresetter [2018/10/29 09:12]
admin
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 Workaround anzuwenden. \\ 
-\\ 
-Nachfolgend die erforderliche Installation- und Konfiguration-Anleitung. \\  ​ 
-\\ 
-\\ 
  
-==== Hardware Installation ==== 
-Der CUL-Resetter hat 3 Stck beschriftete Dupont Kabel, welche an die GPIO-Schnittstelle des Raspberry Pi aufgesteckt werden. \\ 
-{{:​public:​cul-resetter2.jpg?​300|}} 
- 
-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|}} 
-  ​ 
- 
-Anschließend wird der USB-Adapter in einen der USB-Ports am Raspberry eingesteckt und der nanoCUL auf den Adapter. \\ 
-Auch wenn der Raspberry bereits gestartet ist, wird der nanoCUL noch nicht mit Strom versorgt und zeigt **disconnected**. Dies ändert sich nach der nachfolgenden Konfiguration in FHEM.\\ 
-{{:​public:​cul-resetter7.jpg?​500|}} 
-\\ 
-\\ 
-==== 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 
-attr GPIO_18 icon RPi 
-</​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 
-attr GPIO_18_on icon audio_shuffle 
-</​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 
-attr GPIO_18_off icon audio_shuffle 
-</​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. \\ 
-\\ 
- 
-=== Automatismus === 
-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',''​);;​\ 
-        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");;\ 
- 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 
-attr Watchdog_nanoCUL icon control_reboot 
-</​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