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
Nächste Überarbeitung Beide Seiten der Revision
public:fhem_culresetter [2018/10/23 19:19]
admin [FHEM Konfiguration]
public:fhem_culresetter [2019/03/30 07:48]
admin [FHEM Konfiguration]
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>​
  
Zeile 92: Zeile 105:
 attr nanoCUL event-on-update-reading state attr nanoCUL event-on-update-reading state
 </​code>​ </​code>​
 +
 +Falls das o.g. DOIF nicht funktioniert,​ hier eine Alternative,​ welche die Zeit des letzten Datenempfangs beurteilt.
 +<​code>​
 +define WatchdogCUL 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