Devices mit Readings als Switch ansteuern?

Begonnen von Morgennebel, 13 Dezember 2016, 15:36:58

Vorheriges Thema - Nächstes Thema

Morgennebel

Moin Moin,


(ich hoffe, der Titel ist halbwegs sinnvoll)

Ich habe eine 1-Wire 8-fach Relaiskarte names EG.Heizung.8Relais:


Internals:
   DEF        29.3D5516000000
   IODev      RPi1Wire
   LAST_READ_FAILED 0
   NAME       EG.Heizung.8Relais
   NOTIFYDEV  global
   NR         913
   NTFY_ORDER 50b-EG.Heizung.8Relais
   STATE      ???
   TYPE       OWDevice
   Readings:
     2016-11-28 11:51:14   PIO.0           off
     2016-10-16 16:38:59   PIO.1           off
     2016-12-13 15:25:29   PIO.3           on
     2016-12-12 04:09:06   PIO.4           on
     2016-10-16 16:34:16   PIO.5           off
     2016-12-13 15:31:48   PIO.6           0
     2016-12-13 15:31:48   PIO.7           0
     2016-01-17 12:07:07   PIO.ALL         0
     2016-01-17 12:31:56   latch.0         ON
   Fhem:
     address    29.3D5516000000
     alerting   1
     bus        bus.1
     interfaces state
     getters:
       PIO.0
       PIO.1
       PIO.2
       PIO.3
       PIO.4
       PIO.5
       PIO.6
       PIO.7
       PIO.ALL
       PIO.BYTE
       address
       crc8
       family
       id
       latch.0
       latch.1
       latch.2
       latch.3
       latch.4
       latch.5
       latch.6
       latch.7
       latch.ALL
       latch.BYTE
       locator
       por
       power
       r_address
       r_id
       r_locator
       sensed.0
       sensed.1
       sensed.2
       sensed.3
       sensed.4
       sensed.5
       sensed.6
       sensed.7
       sensed.ALL
       set_alarm
       strobe
       type
     polls:
       sensed.0
       sensed.1
       sensed.2
       sensed.3
       sensed.4
       sensed.5
       sensed.6
       sensed.7
     setters:
       LCD_H/clear
       LCD_H/home
       LCD_H/message
       LCD_H/onoff
       LCD_H/screen
       LCD_H/screenyc
       LCD_M/clear
       LCD_M/home
       LCD_M/message
       LCD_M/onoff
       LCD_M/screen
       LCD_M/screenyc
       PIO.0
       PIO.1
       PIO.2
       PIO.3
       PIO.4
       PIO.5
       PIO.6
       PIO.7
       PIO.ALL
       PIO.BYTE
       latch.0
       latch.1
       latch.2
       latch.3
       latch.4
       latch.5
       latch.6
       latch.7
       latch.ALL
       latch.BYTE
       por
       set_alarm
       strobe
     state:
       sensed.0
       sensed.1
       sensed.2
       sensed.3
       sensed.4
       sensed.5
       sensed.6
       sensed.7
Attributes:
   IODev      RPi1Wire
   event-min-interval PIO.3:180
   model      DS2408
   room       EG.HWR,OWDevice


bei dem ich mittels set EG.Heizung.8Relais <Reading> <on|off>, also z.B. set EG.Heizung.8Relais PIO.4 on ein einzelnes Relais an- oder ausschalten kann.

Es handelt sich also um einen set-Befehl mit 2 Argumenten (Reading und Status).

Gibt es einen Weg, dieses nur mit einem Argument anzusteuern (also z.B. set EG.Heizung.8Relais:PIO.3 on (was leider nicht geht)?

Das würde mir den Umweg mit einem Dummy und einem DOIF ersparen, wobei der dummy von anderen Modulen geschaltet wird und das DOIF dann das Relais ansteuert...

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

marvin78

Schau dir mal readingsProxy an. Insbesondere das Attribut setFn.

Morgennebel

Perfekt. Danke für den Hinweis. Jetzt nur noch lesen und austesten...

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Morgennebel

Zitat von: marvin78 am 13 Dezember 2016, 15:38:29
Schau dir mal readingsProxy an. Insbesondere das Attribut setFn.

Ich verstehe die Doku nicht 100%. Aus dem Wiki, Abschnitt https://wiki.fhem.de/wiki/ReadingsProxy#1-Wire_8-fach_switch_.28DS2408.29_mit_OWSWITCH_als_Output_.28erster_Kanal.29


  define SchalterA readingsProxy OWX:xxx
  attr SchalterA setFn {($CMD eq "on")?"output A off":"output A on"}
  attr SchalterA setList on off
  attr SchalterA valueFn {($VALUE == 0)?"off":"on"}
  attr SchalterA webCmd on:off


Sollte es nicht heissen

   attr SchalterA setFn {($CMD eq "on")?"output A on":"output A off"} ?

Der ?-Operator springt in das erste Kommando, wenn die Bedingung wahr ist, oder?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

marvin78

Es kommt immer darauf an, was man erreichen will. Ggf. ist hier ja etwas gedreht. Manchmal muss man on auf off mappen und umgekehrt.