webCmd dynamisch zuweisen

Begonnen von Ruckzuck, 09 März 2022, 20:48:34

Vorheriges Thema - Nächstes Thema

Ruckzuck

Hallo,

ich habe bei meinem Jalousienaktor eine Doppelbelegung für die Lamellenverstellung. Wenn die Jalousie in der Höhe verfährt, kann sie über den Kanal für die Lamellen gestoppt werden. Erst danach lassen sich die Lamellen über den Kanal in der Neigung verstellen.

Ich würde jetzt gerne das webCmd in Abhängigkeit des States auswechseln:

wenn STATE up oder down:     webCmd Auf:Ab:Stop
wenn STATE Stop:                  webCmd Auf:Ab:Öffnen:Schließen

EventMap und cmdIcon würde ich dann für alle 5 Befehle vorbereitet lassen. Ist das möglich?

hier noch mein cmdIcon: Auf:black_up Ab:black_down Öffnen:remotecontrol/black_btn_LEFT Schließen:remotecontrol/black_btn_RIGHT Stop:remotecontrol/black_btn_RED

Manuell habe ich es ausprobiert. Die Angezeigten Schaltflächen in der Weboberfläche folgen dem webCmd



betateilchen

Zitat von: Ruckzuck am 09 März 2022, 20:48:34
wenn STATE

Du meinst sicher nicht STATE (Internal) sondern state (reading), oder?

webCmd, eventMap usw. sind Attribute, die Du per notify ändern kannst.

Das heißt, Du baust ein notify auf (up|down) das die entsprechenden Attributwerte setzt
und ein zweites notify, das auf stop triggert und dann die Attributwerte umschreibt
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Ruckzuck

Hi,

vielen Dank für deine Antwort. Mit STATE meinte ich erstmal nur einen Bedingung für die Fallunterscheidung. Bei mir steckt diese Bedingung in zwei Readings des betreffenden Gerätes. Eines liefert "true" bei der Fahrt "auf" und das andere dann "true" bei der Fahrt "ab" (erster Wert für das Attribut webCmd). Wenn beide false sind, dann ist in WebCmd der zweite Wert zu setzen.

Führt der Weg nur über zwei notify, oder kann ich das auch über eine PERL Direktive innerhalb des Gerätes umsetzen? Also irgendwie
attr Jalousie webCmd {....}

in c wäre das:


if (var1 || var2){
   webCMD Wert 1
    }
    else if (!var1 && !var2)
    {
    webCMD Wert 2
    }

betateilchen

Du kannst in EINEM notify auch auf zwei (oder mehr) devices oder readings reagieren. Die Fallunterscheidung musst Du dann in dem Code machen, der von Deinem notify ausgeführt wird. Den Code lagert man dann sinnvollerweise in die 99_myUtils.pm aus.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Ruckzuck

ok...vielleicht reden wir aneinander vorbei. Braucht es zwingend ein notify um den code auszuführen? In den KNX Beispielen des Wikis finde ich folgendes Beispiel um über das stateCmd eine Funktion in der 99_myUtils.pm auszuführen:

attr Jal_Kueche stateCmd {Jal_stateCmd($name,$gadName,$state)}

Geht das auch analog innerhalb von webCmd?

Beta-User

Wenn es nicht unbedingt eine Änderung des webCmd-Attributs sein muss, hilft vielleicht eine (multi-line) Rückgabe von stateFormat-Perlcode iVm. devStateIcon. Für ZWave gäbe es auch ein Perl-devStateIcon-Beispiel mit dynamischen Icons...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors