eigenes StateFile zum Auslagern für ein Dummy

Begonnen von Tom111, 30 August 2015, 21:30:11

Vorheriges Thema - Nächstes Thema

Tom111

Hallo,

Frage:
ist es möglich beim Beenden von FHEM den aktuellen Status eines Dummys in eine eigene Datei zu speichern und nicht in "fhem.save" ?
Meine Absicht dahinter:
Ein Dummy hat den Status OFF, dieser Status bleibt bestehen auch wenn FHEM neu gestartet wird.
Wird aber nicht nur FHEM neu gestartet sondern der Raspberry Pi rebootet, dann soll der Status des Dummys ON sein.
Das kann ich dadurch erreichen, dass ich vor dem Start von FHEM die Dummy_State_Datei durch ein Script entweder neu beschreiben lasse
oder diese Datei lösche (sollte beides aufs gleiche rauskommen).

Also Frage, ist es möglich?

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

rudolfkoenig

define n1 notify global:SHUTDOWN { my $v = Value("dummy");; `echo $v > /tmp/dummy.status` }

Analog zu SHUTDOWN gibt es auch ein INITIALIZED.

Tom111

FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

Tom111

Habs heute schon getestet,

also die Datei wird von FHEM erzeugt und im Ordner /tmp abgelegt.

Beim Neustart des Raspberry Pi wird genau diese Datei automatisch durch ein Script erzeugt und ein ON reingeschrieben.
Der Dummy aber nimmt diesen Status nicht an, d.h. er steht nach dem Neustart immer noch auf OFF !
:(
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

igami

Bau doch das notify auf INITIALIZED auf und setzte damit den Dummy auf ON
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

betateilchen

Das Problem ist doch ein ganz anderes. Die separat angelegte Datei wird beim Starten von fhem nicht automatisch berücksichtigt. Dafür musst Du schon selbst sorgen. Aus diesem Grund hatte Rudi doch schon darauf hingewiesen, dass Du analog zu SHUTDOWN auch noch auf INITIALZED reagieren musst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tom111

Zitat von: igami am 31 August 2015, 06:10:12
Bau doch das notify auf INITIALIZED auf und setzte damit den Dummy auf ON

Ja danke für den Hinweis, sowas dachte ich mir schon,

aber LEUTE, wie soll ein normaler Endanwender von FHEM das auch nur im entferntesten hinbekommen ???

Hilfreich wäre ein Beispiel, so wie Rudi in seinem ersten Post mir ein Beispiel zum Schreiben einer Datei geliefert hat.
Ohne ein Beispielscript wie der Inhalt einer Datei gelesen und ausgewertet werden kann komme ich nun mal keinen Schritt weiter.

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V


JoWiemann

Zitat von: Tom111 am 31 August 2015, 11:18:27
Hilfreich wäre ein Beispiel, so wie Rudi in seinem ersten Post mir ein Beispiel zum Schreiben einer Datei geliefert hat.
Ohne ein Beispielscript wie der Inhalt einer Datei gelesen und ausgewertet werden kann komme ich nun mal keinen Schritt weiter.

Vielleicht hilft das ja weiter: http://forum.fhem.de/index.php/topic,39156.msg313154.html#msg313154

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

rudolfkoenig

Zitatein normaler Endanwender von FHEM das auch nur im entferntesten hinbekommen
Ein normaler Endanwender (damit wird wohl jemand ohne Programmierkenntnisse gemeint) sollte nicht erwarten, sowas selbst loesen zu koennen. Er kann auch nicht erwarten, unbekannte Geraete ins System integrieren zu koennen. Ich wuesste gerne, wie man solche Wuensche in den sog. benutzerfreundlichen Systemen loest. Sonst:
define n2 notify global:INITIALIZED { my $v = `cat /tmp/dummy.status`;; if($v) { chomp($v);; fhem("set dummy $v") } }

betateilchen

Zitat von: rudolfkoenig am 31 August 2015, 11:57:53

Ein normaler Endanwender (damit wird wohl jemand ohne Programmierkenntnisse gemeint)


Das widerspricht aber der Idee, als "normaler Endanwender" ein Skript auf OS-Ebene zu erstellen, mit dem die spezielle state-Datei manipuliert wird...

Zitat von: Tom111Das kann ich dadurch erreichen, dass ich vor dem Start von FHEM die Dummy_State_Datei durch ein Script entweder neu beschreiben lasse

Ich glaube eher, wir haben hier mal wieder einen Fall von "bitte gebt mir eine copy&paste-fähige Lösung, weil ich zu faul bequem zum Selberdenken oder gar Dokulesen bin"  :-\
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tom111

@betateilchen
ich geb da mal kein Kommentar drauf ab!

Zitat von: rudolfkoenig am 31 August 2015, 11:57:53
Ein normaler Endanwender (damit wird wohl jemand ohne Programmierkenntnisse gemeint) sollte nicht erwarten, sowas selbst loesen zu koennen. Er kann auch nicht erwarten, unbekannte Geraete ins System integrieren zu koennen. Ich wuesste gerne, wie man solche Wuensche in den sog. benutzerfreundlichen Systemen loest. Sonst:
define n2 notify global:INITIALIZED { my $v = `cat /tmp/dummy.status`;; if($v) { chomp($v);; fhem("set dummy $v") } }

vielen Dank Rudi,
nachdem ich das ganze WE an diesem Problem saß klappt es nun "FAST" perfekt, ich kämpfe nur noch mit den Dateirechten von meinem Script und das von fhem erstellte.
das von FHEM erstellte Script im /tmp Ordner hat die Attribute fhem:dialout 0644 mein Script dagegen root:root 0644.
Bei einem Neustart des Raspberry Pi wird das Script also vom System angelegt, dieses kann aber dann nicht mehr bei einem shutdown restart von FHEM überschrieben werden.
es gibt jetzt mehrere Möglichkeiten das zu bewerkstelligen, die beste wäre natürlich dass das vom System erstellte Script als user fhem und group dialout schreibt.

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

Wernieman

Wobei Dir klar ist, das alle Dateien im tmp-Ordner nach einem Neustart gelöscht sein könnten?

Deshalb heißt der Ordner auch tmp .. wie eben in Temporär ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

betateilchen

Zitat von: Tom111 am 31 August 2015, 14:00:21

die beste wäre natürlich dass das vom System erstellte Script als user fhem und group dialout schreibt.


Und was hindert Dein Skript daran, genau das zu tun? Der zugehörige Befehl heißt chown, die manpage dazu findest Du sicher selbst.


@Wernieman das verschwundene statefile kommt sicher bald als nächste Frage, wollen wir wetten?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tom111

Zitat von: Wernieman am 31 August 2015, 14:14:51
Wobei Dir klar ist, das alle Dateien im tmp-Ordner nach einem Neustart gelöscht sein könnten?

Deshalb heißt der Ordner auch tmp .. wie eben in Temporär ...

Genau DAS ist meine Absicht, ich werde meine Intention schildern sobald ich alles im Griff habe!

Nur noch das Problem mit den Rechten krieg ich (noch) nicht hin!
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V