readingsGroup: commands soll den "setreading" statt "set" Befehl verwenden

Begonnen von All-Ex, 12 August 2022, 17:55:59

Vorheriges Thema - Nächstes Thema

All-Ex

Hallo zusammen,

ich habe eine readingsGroup, mit der ich verschiedene Readings meiner Rollladensteuerung ändern möchte. Die Definition lautet:
<Gerät>,<Level_pct >,<A_pct_half >,<A_pct_hotnight >,<A_pct_sunnyday > (rol\..*)..:level,!A_pct_half,!A_pct_hotnight,!A_pct_sunnyday

Die Readings, die mit A_ beginnen möchte ich in der readingsGroup ändern können. Dazu habe ich das commands-Attribut definiert:
{
level => 'pct:textFieldNL',
A_pct_half => 'A_pct_half:textFieldNL',
A_pct_hotnight => 'A_pct_hotnight:textFieldNL',
A_pct_sunnyday => 'A_pct_sunnyday:textFieldNL',
}


Nun führt commands immer einen set-Befehl aus, was bei level auch korrekt funktioniert und die Rollläden auf eine andere Position fährt.

Bei A_pct_half geht das jedoch nicht, denn dort soll der Inhalt des Readings A_pct_half aktualisiert werden. Es müsste also "setreading <device> A_pct_half xx" statt "set <device> xx" heißen.

Gibt es die Möglichkeit, dass commands auch Readings im entsprechenden Device ändert?


OdfFhem

@All-Ex

Zwei Beispiele, bei denen die Aktion selbst festgelegt wird:

commands { "ON" => "set $DEVICE OFF" }

commands { 'S1.on'  => 'setreading %DEVICE myReading off ' }


Im Prinzip könnte man auch -  durch ;; getrennt - mehrere FHEM-Kommandos absetzen.

All-Ex

Danke!

Aber wie kann ich im 2. Beispiel den Wert übergeben, der über das Webinterface im textField eingetragen wird?

Also etwas so:
commands { 'S1.on'  => 'setreading %DEVICE myReading <Inhalt von textField> ' }

OdfFhem

@All-Ex

Neben %DEVICE gibt es auch %VALUE. Den praktischen Einsatz kenne ich persönlich allerdings nur beim Gebrauch von readingsGroup-"Button".

Beim Vorhandensein von z.B. 3 Button könnte man statt

  'rgTest.1'=>'setreading %DEVICE testreading 1',
  'rgTest.2'=>'setreading %DEVICE testreading 2',
  'rgTest.3'=>'setreading %DEVICE testreading 3'

auch

  'rgTest'=>'setreading %DEVICE testreading %VALUE'

verwenden.

Deinen Fall habe ich mal versucht nachzustellen, allerdings ohne Erfolg.
commands dient scheinbar dazu, entweder einen set-Wertebereich oder eine Aktion vorzugeben.
Gibt man einen Wertebereich vor, hat man keinen Einfluss mehr auf die Aktion - set ist also vorprogrammiert.
Gibt man eine Aktion vor, fehlt eine alternative Möglichkeit zur Festlegung des Wertebereichs.