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
define n1 notify global:SHUTDOWN { my $v = Value("dummy");; `echo $v > /tmp/dummy.status` }
Analog zu SHUTDOWN gibt es auch ein INITIALIZED.
Danke Rudolf,
werde ich morgen mal antesten :D
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 !
:(
Bau doch das notify auf INITIALIZED auf und setzte damit den Dummy auf ON
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.
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
googlen?
http://perldoc.perl.org/functions/open.html (http://perldoc.perl.org/functions/open.html)
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
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") } }
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" :-\
@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
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 ...
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?
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!
Dann brauchst Du doch das File gar nicht erst einlesen, sondern einfach nur prüfen, ob es überhaupt existiert oder nicht. Das ist doch noch viel einfacher.
unless (-f "server/pfad/log.dat") { mach irgendwas }
Du hast es praktisch schon geschrieben:
Zitatfhem:dialout 0644 mein Script dagegen root:root 0644.
Stichworte:
1. chown (Change Owner), rate mal auf welche Werte?
2. chmod (Change Mode), rate bitte auch hier auf welche Werte?
Bitte nicht falsch verstehen, das ich Dir keine fertige Lösung präsentieren, aber damit würdest Du weniger lernen. Deshalb sind obige "?" auch NICHT ironisch gemeint!
Zu Lesen;
https://wiki.ubuntuusers.de/chown (https://wiki.ubuntuusers.de/chown)
https://wiki.ubuntuusers.de/chmod (https://wiki.ubuntuusers.de/chmod)
@Wernieman @betateilchen
ist ja schön dass ihr helfen wollt, aber ihr seid komplett auf den falschen Weg!
Eure Lösungsangebote befassen sich nicht mit dem was ich will!
Keines eurer Kommentare ist bis jetzt für mich hilfreich!
Ich bitte euch entweder den ganzen Thread nochmal ganz genau durchzulesen, oder keine Kommentare mehr abzugeben, weil das hier nur zumüllt und später
keiner mehr weiß worum es überhaupt geht.
ALSO BITTE, erst lesen, dann verstehen und dann kann von mir aus gepostet werden!
Zitat von: Tom111 am 31 August 2015, 15:05:13
Eure Lösungsangebote befassen sich nicht mit dem was ich will!
(http://www.champstyle.net/images/smiley/vogelzeig.gif)
Du willst Dein spezielles statefile mit dem Eigentümer fhem:dialout versehen. Und sowohl Wernieman als auch ich haben Dir den dazu notwendigen Befehl "chown" genannt.
Der Einzige, der hier offenbar keine Ahnung hat, worum es geht, bist wohl eher Du.
Ok. Ich bin hier raus.
@Tom111
Ich darf aus Deinem Beitrag Zitieren:
Nur noch das Problem mit den Rechten krieg ich (noch) nicht hin!
Darauf haben betateilchen und ich Dir etwas geschrieben.
Siehe bitte auch meinen Kommentar:
Bitte nicht falsch verstehen, das ich Dir keine fertige Lösung präsentieren, aber damit würdest Du weniger lernen
Damit hat sich Dein Beitrag übrigens erledigt:
Ich bitte euch entweder den ganzen Thread nochmal ganz genau durchzulesen
Bitte berücksichtige Deinerseits DEINEN Beitrag!
Ich darf betateilchen Zitieren:
Ok. Ich bin hier raus.
Nun zu meiner Lösung für das Problem was hier geschildert war:Zitat von: Tom111 am 31 August 2015, 14:00:21
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.
Die Lösung ist ein Eintrag in der Datei
rc.local:
su - fhem --shell /bin/bash --command "/usr/local/bin/Monitor.py"
Was einige nicht verstanden haben, weil sie zu faul waren den Thread von Anfang an durchzulesen.
Aber ich bedanke mich ganz herzlich bei Rudi, der in der Lage war mein Problem zu verstehen.
Danke auch an JoWiemann, wenn ich deine Idee weiter verfolgt hätte, würde es sicherlich auch klappen, nur Rudis Lösung war einfacher umzusetzen.
Ich werde den kompletten Code sowie die Absicht hinter dieser Idee morgen in den Bereich
Codeschnipsel stellen,
sicherlich wird der eine oder andere sowas gebrauchen können.
viele Grüße
Tom