Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
public:fhem_culresetter [2018/10/23 19:16]
admin
public:fhem_culresetter [2019/08/07 16:30] (aktuell)
Zeile 5: Zeile 5:
 Der **CUL-Resetter** setzt genau hier ein und verschafft Abhilfe. Er resettet den nanoCUL, damit dieser wieder wie gewohnt 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.\\ Ü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. \\+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. \\  ​ Nachfolgend die erforderliche Installation- und Konfiguration-Anleitung. \\  ​
Zeile 12: Zeile 12:
  
 ==== Hardware Installation ==== ==== Hardware Installation ====
-Der CUL-Resetter hat 3 Stck Dupont Kabel, welche an die GPIO-Schnittstelle des Raspberry Pi aufgesteckt werden. \\ +Der CUL-Resetter hat 3 Stck beschriftete ​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-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|}} {{:​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|}}
 \\ \\
 \\ \\
Zeile 45: Zeile 49:
 attr GPIO_18 room Watchdog attr GPIO_18 room Watchdog
 attr GPIO_18 setList on off attr GPIO_18 setList on off
 +attr GPIO_18 icon RPi
 </​code> ​ </​code> ​
  
Zeile 53: Zeile 58:
 define GPIO_18_on notify GPIO_18:on {system("/​usr/​bin/​gpio export 18 out && /​usr/​bin/​gpio -g write 18 1")} 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 room Watchdog
 +attr GPIO_18_on icon audio_shuffle
 </​code>​ </​code>​
  
Zeile 59: Zeile 65:
 define GPIO_18_off notify GPIO_18:off {system("/​usr/​bin/​gpio export 18 out && /​usr/​bin/​gpio -g write 18 0")} 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 room Watchdog
 +attr GPIO_18_off icon audio_shuffle
 </​code>​ </​code>​
  
-Nun folgt ein Watchdog für den Reset des nanoCUL.\\ +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. \\ 
-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. \\+ 
 +=== Automatismus === 
 +Jetzt 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**,​ wird der Strom des nanoCUL weggenommen und wieder zugeführt. Dies simuliert ein händisches aus/​einstecken und der nanoCUL geht wieder auf **initialized**. \\  
 +Die Zeile mit der **pushmsg** ​muss man anpassen ​oder entfernen wenn der Service ​nicht vorhanden ​ist, also nicht benutzt wird. \\
  
 <​code>​ <​code>​
Zeile 69: Zeile 80:
 \ \
  {\  {\
- fhem("​defmod nanoCUL CUL /​dev/​serial/​by-id/​none\@38400 0000"​);;​\+        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 export 18 out"​);;​\
  system("/​usr/​bin/​gpio -g write 18 0");;\  system("/​usr/​bin/​gpio -g write 18 0");;\
- system("​sleep 3");;\+ sleep 3;;\
  system("/​usr/​bin/​gpio -g write 18 1");;\  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("​defmod nanoCUL CUL $culpath");;\
         fhem("​set pushmsg msg '​fhem'​ '​nanoCUL wurde resettet, da 1min im Status opened'"​);​         fhem("​set pushmsg msg '​fhem'​ '​nanoCUL wurde resettet, da 1min im Status opened'"​);​
  }\  }\
Zeile 85: Zeile 97:
 attr nanoCULWatchdog wait 60 attr nanoCULWatchdog wait 60
 attr nanoCULWatchdog room Watchdog attr nanoCULWatchdog room Watchdog
 +attr Watchdog_nanoCUL icon control_reboot
 </​code>​ </​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>​
 +
 +Falls das o.g. DOIF nicht funktioniert,​ hier eine Alternative,​ welche die Zeit des letzten Datenempfangs beurteilt.
 +<​code>​
 +define nanoCULWatchdog DOIF ( time() - time_str2num(ReadingsTimestamp("​nanoCUL","​state","​0"​)) > 15 ) (set pushmsg msg '​fhem'​ '​nanoCUL hat mehr als 15 min kein Update erhalten - Bitte prüfen!'​)
 +</​code>​
 +
 +
 +{{:​public:​cul-resetter-fhem.jpg?​600}}

Navigation
Eigene Werkzeuge