FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Gunther am 27 April 2020, 22:11:45

Titel: Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: Gunther am 27 April 2020, 22:11:45
Folgende Anforderung möchte ich umsetzen:

Ich habe verschiedene Devices wie Lampen und Steckdosen.

Nun möchte ich diesen mitgeben können, ob sie bei einer Hausstatusänderung ausgeschaltet werden sollen.
Meine Idee ist es drei Userattribute zu nutzen:
aus_schlafen
aus_abwesend
aus_urlaub


jeweils ja und nein

Nun möchte ich in einem DOIF auf Statusänderungen reagieren und generell alle Devices mit "ja" beim entsprechenden Status/Statuswechsel ausschalten.
Davon verspreche ich mir, dass ich bei weiteren Geräten nicht das DOIF anpassen muss, sondern einfach Attribute hinzufüge.

1.) Wie mache ich das im DOIF, dass ich Geräte mit diesen Attributen abschalte?

Außerdem möchte ich die Attribute per Schalter ändern können (ja <--> nein).
2.) Wie kann ich ein Attribut setzen per set-Befehl? Finde leider in der commandref nur setdefaultattr
Ich verstehe den Befehl nicht. Folgendes geht nicht:
setdefaultattr lamp aus_abwesend nein

3.) Oder bin ich hier auf einem falschen Weg? Macht es mehr Sinn über Userreadings nachzudenken oder gibt es noch etwas Besseres?
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: Gunther am 27 April 2020, 22:27:12
ok, 1.) klappt so:
set aus_abwesend=ja:FILTER=state=an aus
Schaltet alle Devices in denen das Attribut "aus_abwesend" auf "ja" steht und die gerade "an" sind "aus"
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: amenomade am 27 April 2020, 22:31:15
1:DOIF ([@"":state:$_ eq "on" and AttrVal($name,"aus_abwesend","") eq "ja"]) reagiert bei Statusänderung auf "on" von allen Devices, die ein Attr aus_schlafen auf "ja" haben.
Die Lösung von Gunther kann dann im Befehl kommen, um nur die betroffene Devices zu schalten

2: ein Attribut kannt man nicht per set Befehl setzen. Der Befehl heisst "attr". Eine Änderung eines Attributs benötigt dann ein "save" der Konfig. Alternativ nutzt man ein reading, den man mit "setreading" setzt.

Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: Gunther am 27 April 2020, 22:55:18
Danke,

folgendes klappt schonmal:
defmod doif_userreading_lampe_schalten DOIF ([test_Status:"^2$"]) (set aus_abwesend=ja:FILTER=state=an aus)\
DOELSEIF ([test_Status:"^3$"]) (set aus_schlafen=ja:FILTER=state=an aus)\
DOELSEIF ([test_Status:"^4$"]) (set aus_urlaub=ja:FILTER=state=an aus)
attr doif_userreading_lampe_schalten do always


Jetzt ist die Frage, wie ich geschickt die Attribute per Tablet UI setzen kann?
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: amenomade am 27 April 2020, 23:00:43
Zitat von: Gunther am 27 April 2020, 22:55:18
Danke,

folgendes klappt schonmal:
defmod doif_userreading_lampe_schalten DOIF ([test_Status:"^2$"]) (set aus_abwesend=ja:FILTER=state=an aus)\
DOELSEIF ([test_Status:"^3$"]) (set aus_schlafen=ja:FILTER=state=an aus)\
DOELSEIF ([test_Status:"^4$"]) (set aus_urlaub=ja:FILTER=state=an aus)
attr doif_userreading_lampe_schalten do always


Jetzt ist die Frage, wie ich geschickt die Attribute per Tablet UI setzen kann?
Du willst das per Tablet UI setzen? Dann rate ich wieder von einem Attribut ab. Nimm eher ein Reading. Sonst jedes Mal, wenn Du es in Tablet UI setzt, hast Du in Fhem das Fragezeichen bei "Save config"

Wenn Du unbedingt ein attr willst, dann einfach das Parameter data-cmd="attr" setzen (Widget Push, oder Checkbox, oder Switch o.ä)
Genauso kann man auch data-cmd="setreading" setzen. Das Gute mit dem Reading ist, dass TabletUI den jetzigen Wert auch zeigen kann...
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: Gunther am 27 April 2020, 23:08:08
OK danke, dann denke ich um.

1.) Wie sieht dann der alternative Befehl zu dem mit dem Attribut aus?
set aus_schlafen=ja:FILTER=state=an aus)

2.) Wie kann ich denn ein Reading in der FHEM Oberfläche mit Auswahlwerten versehen und per "Schalter" setzen?
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: amenomade am 27 April 2020, 23:16:02
set a:aus_schlafen=ja:FILTER=state=an aus für ein Attribut
set r:aus_schlafen=ja:FILTER=state=an aus für ein Reading

Siehe https://fhem.de/commandref_DE.html#devspec
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: amenomade am 27 April 2020, 23:22:44
Und zu 2.: mit setList für ein DOIF oder ein dummy. Für andere Geräte ist es nicht so einfach
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: Gunther am 27 April 2020, 23:27:02
Danke Dir! Setze mich die Tage mal dran!
Titel: Antw:Bestimmte Devices bei Hausstatus schalten (Userattribut oder Userreading)
Beitrag von: Gunther am 02 Mai 2020, 16:24:44
Hat wunderbar funktioniert. Danke! Toll, wie Ihr hier unterstützt!

Hier meine Lösung inkl. Tablet UI Umsetzung:
https://forum.fhem.de/index.php?topic=110810.msg1049608#msg1049608 (https://forum.fhem.de/index.php?topic=110810.msg1049608#msg1049608)