Autor Thema: readingsGroup: commands soll den "setreading" statt "set" Befehl verwenden  (Gelesen 277 mal)

Offline All-Ex

  • Developer
  • Full Member
  • ****
  • Beiträge: 208
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?


Offline OdfFhem

  • Hero Member
  • *****
  • Beiträge: 1167
@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.

Offline All-Ex

  • Developer
  • Full Member
  • ****
  • Beiträge: 208
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> ' }

Offline OdfFhem

  • Hero Member
  • *****
  • Beiträge: 1167
@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.