FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: sylvester am 24 Februar 2014, 21:30:01

Titel: Dummy auf Undefiniert abfragen
Beitrag von: sylvester am 24 Februar 2014, 21:30:01
Hallo!

Kann mir jemand verraten, wie ich einen dummy oder auch fs20 auf undefiniert abfrage?

Also so etwas wie:

{if (Licht == ???) set Licht off}

Vielen Dank im voraus

Stephan
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: franky08 am 24 Februar 2014, 21:47:07
Hallo, ein dummy hat doch einen definierten Zustand, entweder on oder off oder hell/dunkel ..., wenn dein angelegter dummy einen undefinierten Zustand hat, dann setz ihn doch einfach auf definiert. set <name> dummy on oder was du brauchst.

VG
Frank
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: sylvester am 24 Februar 2014, 21:52:35
Hallo Frank,

ja, das kann ich natürlich machen.
Ich fände es aber deutlich sauberer, wenn das FHEM beim Neustart prüft, ob für alle Geräte / Dummies Werte vorliegen. Falls nicht, soll es einen von mir definierten Zustand schalten.
(Ich musste gerade mein FHEM neu einrichten. Dann waren natürlich alle Zustände weg und ich musste alle von Hand wieder eingeben. Das muss doch auch eleganter gehen.)

Ich habe eh am Ende der Config eine Initialisierung, die zum Beispiel die Watchdogs antriggert und die Wochentimer und Heizungstimer ansteuert.

Viele Grüße

Stephan
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: franky08 am 24 Februar 2014, 21:57:56
Normalerweise ist das in der state gespeichert, aber beim neueinrichten wird da nichts drinn sein. Da bin ich auch überfragt.

VG
Frank
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: sylvester am 24 Februar 2014, 23:18:04
Ginge so etwas?


#{if (! (Value("WZ_Deckenfluter")               eq ("on"|"On"|"off"|"Off"))) { fhem("set WZ_Deckenfluter off") }}
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: franky08 am 24 Februar 2014, 23:24:01
Probier es aus   8)
Wenn nicht Wert Deckenfluter gleich on ODER! ON ODER!.... denke mal das geht nicht aber ich bin kein Perl Experte  :-\
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: gero am 25 Februar 2014, 08:45:41
So sollte es gehen:

{if(ReadingsVal("Licht","state","undef") eq "undef"){Log 3, "Licht state not set";;fhem("set Licht off")}}

Gruß,
Gero

Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: sylvester am 25 Februar 2014, 23:05:27
Hallo Gero,

vielen Dank für den Tipp. Das scheint in der Tat zu funktionieren. Man muss allerdings vorher die fhem.save per Hand einbinden, da dies in der cfg-Datei immer als letztes passiert.

Ich habe allerdings ein seltsames Phänomen:
Wenn ich den Befehl einmal eintrage, klappt es.
Stehen zwei Befehle der gleichen Art hintereinander, bekomme ich eine leere Fehlermeldung???? Dabei sind die Befehle einzeln aber richtig.
Hat dafür jemand eine Erklärung?

Viele Grüße

Stephan
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: gero am 26 Februar 2014, 05:45:19
Eine Erklärung dafür habe ich auch nicht. Aber es wäre insgesamt sauberer, wenn du das initialisieren deiner Devices an ein notify für global INITIALIZED hängst und den Perl-Code in die myUtils auslagerst.

Gruß,
Gero
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: sylvester am 26 Februar 2014, 07:50:07
Hallo Gero,

jetzt hast du mich abgehängt. Kannst du vielleicht ein kurzes Beispiel für die cfg und myUtils machen?

Der Ablauf muss doch eigentlich folgender sein:
1. Configuration laden
2. fhem.save laden
3. fs20 Steckdosen, dummies, ... initialisieren, falls sie keinen gültigen Wert haben
4. Wochen-Timer, Heizungs-Timer aktualisieren (hier werden teilweise dummies als Bedingung verwendet
5. Watchdogs einmalig antriggern

Viele Grüße

Stephan
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: gero am 26 Februar 2014, 08:04:05
Kann ich leider erst morgen machen. Bin heute den ganzen Tag unterwegs.

Gruß,
Gero
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: gero am 27 Februar 2014, 07:24:29
Zitat von: sylvester am 26 Februar 2014, 07:50:07
Hallo Gero,

jetzt hast du mich abgehängt. Kannst du vielleicht ein kurzes Beispiel für die cfg und myUtils machen?

Der Ablauf muss doch eigentlich folgender sein:
1. Configuration laden
2. fhem.save laden
3. fs20 Steckdosen, dummies, ... initialisieren, falls sie keinen gültigen Wert haben
4. Wochen-Timer, Heizungs-Timer aktualisieren (hier werden teilweise dummies als Bedingung verwendet
5. Watchdogs einmalig antriggern

Viele Grüße

Stephan

Hier wie versprochen ein kurzes Beispiel:

fhem.cfg:

define Licht.dummy dummy
attr Licht.dummy setList state:on,off
attr Licht.dummy webCmd state

define UserInit.notify notify global:INITIALIZED {myInit()}


in 99_myUItils.pm

sub myInit()
{
  fhem("set Licht.dummy off") if(ReadingsVal("Licht.dummy","state","undef") eq "undef");
}


Vielleicht geht es auch einfacher und schöner.

Zu deinem Ablauf:
1. und 2. wird automatisch erledigt.
3. wird nach global INITIALIZED getriggert (siehe Beispielcode)
4. und 5. kannst du ebenfalls dort dranhängen.

Gruß,
Gero
Titel: Antw:Dummy auf Undefiniert abfragen
Beitrag von: sylvester am 02 März 2014, 20:19:12
Hallo Gero,

vielen Dank für das Beispiel.
Habe es gerade eingebaut. :)

Viele Grüße

Stephan