Zuletzt angesehen:
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
public:fhem_culresetter [2018/10/23 19:19] admin [FHEM Konfiguration] |
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> | ||
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 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}} |