[Gelöst] Geräteliste in einem Dummy als DropDown

Begonnen von Gear, 25 Juni 2018, 02:11:35

Vorheriges Thema - Nächstes Thema

Gear

Hallo Zusammen,

ich habe ein paar Geräte, die bei mir die Leistung mitmessen, was alles auch klappt.
Nun möchte ich gerne in einem Dummy ein paar Sachen einstellen können, die dem Device readings zuweisen.
Zum einen den Standby Wattverbrauch und wie lange dieser anliegen muss um das Gerät abzuschalten.

Z.B. will ich, dass mein 3D Drucker sich nach 15 min abschaltet, da dies die zeit ist, bis das HotEnd abgekühlt ist.

Sprich in dem Dummy brache ich einen Slider (Watt:slider,0,1,100) und 2 Dropdown-Menüs:

DropDown 1: Alle Leistungsmessgeräte
DropDown 2: Alle Geräte, für die Verknüfung zum ausschalten der Gerätes.

Ich habe 2 Devices für ON/OFF und Leistungsmessung.

Kann ich solche Dropdowns in ein Dummy machen oder ist das nicht möglich?

Ich würde das gerne so machen, da ich keine Readings von Hand machen will und auch nicht jedem Leistungsmessgerät einen Slider hinzufügen möchte.


Ich hoffe ihr könnt mir helfen.

Beste Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Ellert

Ich habe nicht genau verstanden, was Du realisieren möchtest, aber wenn Du über Widgets Werte vorgeben möchtest, um damit Geräte zu steuern, dann funktioniert es im Prinzip so:

Du richtest Eingabe-Widgets (Slider,Select, usw.) in einem Gerät (Dummy, DOIF, DOIF mit uiTable, oder readingsGroup) ein.

Dann erstellst Du die Logik, die auf die Änderung der Widgets reagiert (notify, at, DOIF). Diese Logik löst dann entsprechende Aktionen (durch Befehle, set, attr, usw.)  in den zu steuernden Geräten aus.

Nach diesem Prinzip kannst Du auch die Widgets aktualisieren. Dazu erstellst Du eine Logik, die auf das Anlegen und Löschen (Events des Gerätes global) von Geräten reagiert. Die Aktion, die diese Logik aus löst, ist die Ausführung einer Perl-Funktion, welche die entsprechenden Widget aktualisiert.

Hier ein paar Links als Handwerkszeug
http://fhem.de/commandref_DE.html#dummy
http://fhem.de/commandref_DE.html#DOIF
http://fhem.de/commandref_DE.html#notify
http://fhem.de/commandref_DE.html#at
https://wiki.fhem.de/wiki/DevelopmentModuleAPI#devspec2array
http://fhem.de/commandref_DE.html#devspec
http://fhem.de/commandref_DE.html#global

Gear

War schon etwas spät gestern Abend, sry... =O

Also im eigentlichen will ich gerne in einem Dummy ein DropDown haben in dem ich meine Geräte die z.B. "ABC.*" heißen gelistet werden.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Ellert


Gear

Danke, das löst sogar andere Fragen die ich noch hatte zu anderen DIngen! =)

Ich hab aber jedoch nicht die Lösung oder eine Hilfe gefunden zu meinem Problem.

attr Dummy.Leistungs.Shutdown setList Device:red,green,blue,yellow

Ich möchte in der DropDown keine Statische "Liste" haben, sondern eine Dynamische in der alle Geräte die z.B. hierrüber gefunden werden.
foreach my $Dev (devspec2array("NAME=.*.Lm('MCU'||'Pow')..*"))
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Ellert

#5
Dann musst Du Dir eine Logik basteln, die zu bestimmten globalen Events das Attribut setList aktualisiert, sonst bleibt die Liste statisch.

z.B. mit DOIF
(["^global$:^RENAME"]) {fhem("attr DeinDummy setList device:select,".join(",",devspec2array("NAME=.*.Lm('MCU'||'Pow')..*")),1)}

und das Attribut do auf always setzen.

Damit wird die Liste aktualisiert wenn Du Geräte umbenennst.

Gear

Ok, super Danke! =D
Hat mir weitergeholfen!
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <