Zuletzt angesehen: • start
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:11] admin |
public:fhem_culresetter [2019/03/30 07:49] 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 11: | Zeile 11: | ||
\\ | \\ | ||
- | === 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|}} | ||
\\ | \\ | ||
\\ | \\ | ||
- | === Software Installation === | + | ==== Software Installation ==== |
Zunächst das System updaten und WiringPi (Tool um die GPIO Schnittstellen vereinfacht anzusprechen) herunterladen. \\ | Zunächst das System updaten und WiringPi (Tool um die GPIO Schnittstellen vereinfacht anzusprechen) herunterladen. \\ | ||
<code> | <code> | ||
Zeile 37: | Zeile 41: | ||
</code> | </code> | ||
Nun ist WiringPi installiert und verfüghbar. Die Weitere Konfiguration wird im FHEM Webinterface vorgenommen.\\ | 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. \\ | Wir erstellen zunächst einen **dummy** zum generellen Einschalten des nanoCUL. \\ | ||
<code> | <code> | ||
- | defmod GPIO_18 dummy | + | define GPIO_18 dummy |
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 49: | Zeile 56: | ||
Einschalten des nanoCUL: | Einschalten des nanoCUL: | ||
<code> | <code> | ||
- | defmod 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> | ||
Ausschalten des nanoCUL: | Ausschalten des nanoCUL: | ||
<code> | <code> | ||
- | defmod 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> | ||
- | wie folgt einen Watchdog für den Reset des nanoCUL's (Entweder über die Weboberfläche, oder in die fhem.cfg einfügen). \\ | + | 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. \\ |
- | 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> | ||
define nanoCULWatchdog DOIF ( [nanoCUL:state] eq "opened" ) (\ | define nanoCULWatchdog DOIF ( [nanoCUL:state] eq "opened" ) (\ | ||
\ | \ | ||
{\ | {\ | ||
- | 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 81: | 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}} |