fhem("set Rollo.EG.* ". ReadingsVal("DEVICENAME", "myUserAttr", "0")) - möglich?

Begonnen von FHEMAN, 30 Mai 2016, 22:24:37

Vorheriges Thema - Nächstes Thema

FHEMAN

Hallo zusammen,

ich steuere meine Rollläden über ein notify in der Art
fhem("set Rollo.EG.* $EVENT");
Jetzt habe ich an jedem Rollo ein UserAttribut namens LvlOnWinOpen. Damit möchte ich, dass der Rollladen bis zum dort hinterlegten %-Wert herunterfährt.
Kann ich nun ohne FOR-Schleifen einen Wert aus einem beliebigen Attribut des jeweiligen Geräts dem SET Befehl übergeben (siehe Topic)?

Mir ist klar, dass ich das "ausprogrammieren" kann. Aber mein Anspruch ist es ja, besser zu werden...

Danke und Gruß
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Ellert


dev0

Wenn ich Dich richtig verstehe, dann möchtest Du auf Event xyz reagieren und dann alle Rolläden in eine Position fahren, die jeweils im Attribut LvlOnWinOpen des Device gespeichert ist. Richtig?
Ohne Schleife geht das nicht, da Du für jedes Device diesen Wert auslesen musst.

So in der Art wird es funktionieren, Syntax zu "devspec" siehe command ref.

foreach my $dev (devspec2array("devspec")) {
  fhem("set $dev ". AttrVal($dev,'LvlOnWinOpen','?')
}

marvin78

Ich glaube nicht, dass er hier mehrere Rolläden auf einmal steuern möchte. Es geht wohl nur um den Rolladen, der auch das entsprechende notify triggert. Deshalb denke ich, dass $NAME und AttrVal schon die richtigen Stichwörter sind und man sich eine Schleife sparen kann.

EDIT: Aber das ist hier, wie so oft, wenn die Fragen unpräzise gestellt sind und man glaubt aus dem Code nur einen Abschnitt zeigen zu müssen. Die Antworten können variieren und am Ende doch noch nicht das gewünschte Ergebnis erzielen.

FHEMAN

dev0 hat es schon richtig verstanden. Ich trigger per UI einen Dummy jeweils für EG und OG, der per notify alle Rollläden der Etage schaltet (ich dachte, das geht alleine schon aus dem Wildcard Rollo.EG.* hervor.)
Ich hatte gehofft, es gibt so etwas elegantes wie :FILTER=ATTR=WERT - nur "umgekehrt".
Aber die Lösung von dev0 sieht auch brauchbar aus, vielen Dank dafür!
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

justme1968

nein. das geht (zur zeit) nicht. du kannst zwar im set mit [<decice>:<reading>] aufbringen reading zugreifen auch mit {(...)} perl code einbauen aber es gibt aktuell keine möglichkeit den aktuellen decice namen mit auszuwerten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968