State in Fhem

2,265 views
Skip to first unread message

Ralf

unread,
Nov 30, 2012, 4:45:54 PM11/30/12
to fhem-...@googlegroups.com
gerade versuche ich mich ein wenig in Fhem einzuarbeiten und wollte meine Lichtszenen realisieren. Dabei soll ein Taster durch mehrmaliges drücken verschiedene Lichtszenen (3) auslösen.
Also bräuchte ich eine Variable, die hochgezählt wird und dann im notify ausgewertet werden kann.

Wie geht das? Kann ich als Variable attr-Werte verwenden? Aber wie lese ich die dann wieder aus?

Danke schonmal im Vorraus!

UliM

unread,
Nov 30, 2012, 4:57:13 PM11/30/12
to fhem-...@googlegroups.com
Hi,
hier gibt's ne Vorlage:
http://www.fhemwiki.de/wiki/Schalten_von_2_Lampen_mit_einem_Taster
Viel Erfolg!
Gruß, Uli

gmb

unread,
Nov 30, 2012, 5:31:10 PM11/30/12
to fhem-...@googlegroups.com
Also bräuchte ich eine Variable, die hochgezählt wird und dann im notify ausgewertet werden kann.

Ich würde einfach einen Dummy (siehe unter "Details": Helper modules - dummy) definieren. 
Dann hat man auch gleich eine Anzeige, welcher Status gesetzt wird. 
Benutze ich z.B., um verschiedene Heizungseinstellungen auszuwählen oder morgens in mehreren Stufen Heizung, Licht und Radio einzuschalten (und Fehlauslösungen auszufiltern).

Gerhard

tobias.faust

unread,
Dec 1, 2012, 1:33:02 AM12/1/12
to fhem-...@googlegroups.com
vieleicht hilft dir das logische "sequence" Device weiter?  schau mal in die commandref

Ralf

unread,
Dec 2, 2012, 7:57:40 AM12/2/12
to fhem-...@googlegroups.com
Hi!

Danke für alle Ideen. Mit dieser Hilfe war es mir möglich folgenden Notify umzusetzen:

lichtszene {
  my $val = AttrVal("lichtszene", "dummy", "1");
  $val = $val+1;
  if ($val==5) {$val = 1;};
  $cmd = "attr lichtszene dummy ".$val;
  fhem $cmd;
  if ($val==1) {
    print "lichtszene 1: Tischlampe\n";
    fhem "set licht.tisch on";
    fhem "set licht.decke off";
  }
  if ($val==2) {
    print "lichtszene 2: Deckenspots\n";
    fhem "set licht.tisch off";
    fhem "set licht.decke on";
  }
  if ($val==3) {
    print "lichtszene 3: alles an\n";
    fhem "set licht.tisch on";
    fhem "set licht.decke on";
  }
  if ($val==4) {
    print "lichtszene 4: alles aus\n";
    fhem "set licht.tisch off";
    fhem "set licht.decke off";
  }
}

Der Anfang sieht etwas holprig aus: Fhem ersetzt wohl den Modulo-Operator (%) durch den aktuellen Status... und wie man ihn escaped habe ich so schnell nicht rausgefunden. Deshalb dieser etwas komplizierte code um Modulo nachzubilden.
Ich muss jetzt auch feststellen, dass Fhem auf dem Raspberry Pi etwas träge reagiert. Kann man das noch irgendwie "beschleunigen"? Der Raspberry scheint sich eher zu langweilen - daran liegt es wohl nicht...

Gruss,
Ralf
Message has been deleted

UliM

unread,
Dec 2, 2012, 10:05:06 AM12/2/12
to fhem-...@googlegroups.com


Am Sonntag, 2. Dezember 2012 13:57:40 UTC+1 schrieb Ralf:
Fhem ersetzt wohl den Modulo-Operator (%) durch den aktuellen Status... und wie man ihn escaped habe ich so schnell nicht rausgefunden.
Siehe http://fhem.de/commandref.html#notify
  • The character % will be replaced with the received event, e.g. with on or off or measured-temp: 21.7 (Celsius)
    It is advisable to put the % into double quotes, else the shell may get a syntax error.
  • The character @ will be replaced with the device name.
  • To use % or @ in the text itself, use the double mode (%% or @@).


Da das als notify schon recht lang ist, evtl besser in eine separate Datei auslagern, siehe http://www.fhemwiki.de/wiki/99_myUtils_anlegen


Gruß, Uli

Ralf

unread,
Dec 2, 2012, 1:04:44 PM12/2/12
to fhem-...@googlegroups.com
Super! Danke!

Ralf

unread,
Dec 2, 2012, 1:07:28 PM12/2/12
to fhem-...@googlegroups.com
Habe aus einem anderen post mal den Tipp genutzt den Loglevel hoch zu setzen (attr global verbose 5). Dabei erkennt man, dass bei jedem Event auf dem Bus anscheinend alle Logfiles durchgegangen werden.
Durch das Autocreate wird zu jeder EIB Adresse ein Logfile angelegt - das waren dann viele Logfiles.
Ich habe jetzt erstmal die ANzahld er Logfiles reduziert und siehe da: die Reaktionszeit ist schon um einiges besser geworden!

Gruss,
Ralf

On Sunday, 2 December 2012 15:58:09 UTC+1, Prof. Dr. Peter A. Henning wrote:
Die so genannte "Trägheit" liegt hier wohl daran, dass dieses Programm eben nicht in einem Perl-Modul steht, sondern in einer Konfigurationsdatei.

LG

pah
Reply all
Reply to author
Forward
0 new messages