Wert beim Schalten in Datei schreiben

Begonnen von aficianado, 14 Juli 2015, 21:42:40

Vorheriges Thema - Nächstes Thema

aficianado

Hallo Miteinander,

ich bin FHEM-Neuling und möchte einen Ausgang schalten und habe dazu definiert in der fhem.cfg:

define LICHT dummy
attr LICHT room Ra-Pi
attr LICHT setList on off
attr LICHT webCmd on:off
#"echo 1 >/tmp/licht.txt"

Funktioniert prima mit dem Browser.
Jetzt hätte ich gerne beim Schalten den Zustand in die Datei /tmp/licht.txt geschrieben als 0 oder 1 und habe auch im Forum gefunden, dass man eine Datei mit dem shell-Befehl schreiben kann. Nur wo trage ich diesen ein?

Bin für jeden Tipp dankbar,

Gruß
RaPi3, esp8266, LoRa, Tasmota

JoWiemann

Hallo,

welchen Zweck verfolgst Du mit der Datei und warum reicht nicht ein FileLog http://fhem.de/commandref_DE.html#FileLog

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

aficianado

Hallo Jörg,

die Datei wird von einem anderen System gelesen, welches das Licht physikalisch schaltet.
Die Datei ist logisch damit das schaltende Device.

Danke + Gruß

RaPi3, esp8266, LoRa, Tasmota

Hollo

Das ändert aber doch nichts daran, dass ein passend konfiguriertes FileLog Deine Anforderungen erfüllen würde.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

aficianado

vielleicht verstehe ich das ja falsch, aber in der FHEM reference steht zu filelog:

define <name> FileLog <filename> <regexp>
Log events to <filename>. The log format is
    YYYY-MM-DD_HH:MM:SS <device> <event>

das deute ich so, dass Filelog einen Zeitstempel erwartet und ein Logfile liest.
Ich möchte aber nur den Schaltwert (0/1) von Licht in eine Datei schreiben.

Hättest Du bitte ein Beispiel für mich?

Danke + Gruß
RaPi3, esp8266, LoRa, Tasmota

Hollo

Ich glaube, ich habe es jetzt verstanden... der gesamte Dateiinhalt soll nur entweder 0 oder 1 sein!?

Wie greift denn Dein "Schalt-Device" auf die Daten zu (zyklisch, Anfrage, Dateihandling)?

Entweder könnte man dann vielleicht die "Abfrage" auf den aktuellen Status Deines Dummy umbiegen,
oder Du müsstest wirklich per kleinem Script bei Änderung des Dummy den passenden Eintrag generieren.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

JoWiemann

Hallo,

anbei eine minimal Lösung:

define FileLicht notify LICHT {}

Im DEF des neuen Device dann folgendes einfügen:

LICHT {
open (DATEI, ">>/opt/fhem/LICHT_on_off.txt") or die $!;
print DATEI $EVENT eq "on"?"1\n":"0\n";
close (DATEI);
}


Bitte den Pfad und den Dateinamen noch anpassen.

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

aficianado

Hallo Hollo,

danke für Deine Antwort.
Die Datei /tmp/licht.txt wird alle paar Sekunden von dem anderen System eingelesen.
Wenn ich genauer drüber nachdenke wäre es natürlich wünschenswert, wenn ich über FHEM die Datei auch einlesen könnte, um den Zustand des Schalters immer korrekt zu sehen, falls da jemand anderes mal was reinschreibt. Logisch wäre für mich (trotz fehlender FHEM-Kenntnisse), wenn das device kein dummy sondern die Datei wäre, letztlich verhält sich ja die Datei wie ein Sensor/Stellglied.
Wo finde ich denn Infos wie ein eigenes Device geschrieben wird, oder gibt es einfachere Wege?

Danke und Gruß
RaPi3, esp8266, LoRa, Tasmota

aficianado

Hallo Jörg,

das hört sich sehr gut an - Danke.
Ich nehme mal an, das define... schreibe ich in die fhem.cfg und die funktion licht am besten wohin?

Danke + Gruß
RaPi3, esp8266, LoRa, Tasmota

ph1959de

Zitat von: aficianado am 15 Juli 2015, 13:19:53
Ich nehme mal an, das define... schreibe ich in die fhem.cfg und die funktion licht am besten wohin?

Zum Thema "define" und "fhem.cfg" bitte mal hier nachlesen: Konfiguration.

Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

JoWiemann

Hallo,

das define ... bitte in die Fhem Kommandozeile schreiben. Mit Enter wird ein Device generiert. Auf das Def klicken, dann geht ein Eingabebereich auf. Dort den Code rein kopieren.

Grüße Jörg

PS: Bitte lies Dir doch einmal die Basics für Fhem im Wiki durch. Danke.
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

aficianado

wow, es funktioniert - Danke Jörg !!!!

Gruß
RaPi3, esp8266, LoRa, Tasmota

JoWiemann

Noch einen Hinweis.

Im Moment wird jeder Schaltvorgang in eine neue Zeile in die Datei geschrieben. Soll immer nur der aktuelle Schaltvorgang geschrieben werden, dann bitte den Code wie folgt anpassen:

LICHT {
open (DATEI, ">/opt/fhem/LICHT_on_off.txt") or die $!;
print DATEI $EVENT eq "on"?"1":"0";
close (DATEI);
}
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

aficianado

Hallo Jörg,

vielen Dank, das hatte ich bei meinem tail -f ...  noch gar nicht gemerkt. Jetzt geht es aber einwandfrei.
Zwei Kleinigkeiten sind mir noch aufgefallen:
a) nach einem Reboot des Linux-Systems war das FileLicht-script weg, wie bekomme ich das dauerhaft hin?
b) besteht eine Möglichkeit die Datei wiederum zyklisch rückzulesen, damit bei einer Zustandsänderung außerhalb von FHEM auch der Zustand des Lichtes auch in FHEM richtig angezeigt wird, bzw. wo kann ich dazu Infos finden? Oder wird das zu kompliziert?

Danke + Gruß
RaPi3, esp8266, LoRa, Tasmota

JoWiemann

Hast Du nach dem Anlegen des Devices oben Links auf Save geklickt? Ich lege Dir noch einmal eindringlich ans Herz die Grundlagen von Fhem im Wiki durch zu arbeiten.

Nun zu Deiner zweiten Frage. Wie wird denn der Status zurück geschrieben? Selbe Datei, andere Datei ?


Grüße Jörg

Gesendet von iPhone mit Tapatalk
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