Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

Newbee

Hallo,

haben folgende Readings Group. Ist ein Bsp. aus diesem Beitrag https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888.
Leider werden aus für mich nicht verständlichen Gründen die pull-down (drop-down) Menüs nicht mehr angezeigt.

List auf die Readingsgroup:

Internals:
   CFGFN      /opt/fhem/FHEM/red.cfg
   DEF        <>,<Ist-,>,<Regler>,<Batterie>,<Tages->,<Werktag>,<>,<Wochenende>,<>,<Wochenplan>
<>,<Solltemperatur>,<Lock>,<Modus>,<Temperatur>,<start>,<ende>,<start>,<ende>,<schreiben>
.*_Clima:measured-temp,ValvePosition,batteryLevel@{getDevice($DEVICE)},imposible@{$DEVICE},<{getDayTemp($DEVICE)}>,<{getTime($DEVICE,"R_2_tempListMon","start")}>,<{getTime($DEVICE,"R_2_tempListMon","end")}>,<{getTime($DEVICE,"R_0_tempListSat","start")}>,<{getTime($DEVICE,"R_0_tempListSat","end")}>,state@{getDevice($DEVICE)},<br>,impossible@{$DEVICE},desired-temp,R-globalBtnLock@{getDevice($DEVICE)},imposible@{$DEVICE},controlMode,state@d_dayTemp,state@d_workdayStart,state@d_workdayEnd,state@d_saturdayStart,state@d_saturdayEnd,imposible@{$DEVICE},<%system_fhem_update>
   NAME       Thermostate
   NR         709
   NTFY_ORDER 50-Thermostate
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     BR_Thermostat_Clima 1
     DR_Thermostat_Clima 1
     FBR_Thermostat_Clima 1
     FBRn_Thermostat_Clima 1
     KIT_Thermostat_Clima 1
     LR_Thermostat_Clima 1
     MBR_Thermostat_Clima 1
     NBR_Thermostat_Clima 1
     RR_Thermostat_Clima 1
   Content2:
     BR_Thermostat 1
     BR_Thermostat_Clima 1
     DR_Thermostat 1
     DR_Thermostat_Clima 1
     FBR_Thermostat 1
     FBR_Thermostat_Clima 1
     FBRn_Thermostat_Clima 1
     KIT_Thermostat 1
     KIT_Thermostat_Clima 1
     LR_Thermostat 1
     LR_Thermostat_Clima 1
     MBR_Thermostat 1
     MBR_Thermostat_Clima 1
     NBR_Thermostat 1
     NBR_Thermostat_Clima 1
     OF_Thermostat 1
     RR_Thermostat 1
     RR_Thermostat_Clima 1
     d_dayTemp  1
     d_saturdayEnd 1
     d_saturdayStart 1
     d_workdayEnd 1
     d_workdayStart 1
   DEVICES:
     ARRAY(0x6fba0c8)
     ARRAY(0x67642d8)
     ARRAY(0x6763ba0)
     ARRAY(0x6e593f0)
     ARRAY(0x7039aa0)
     ARRAY(0x7021180)
     ARRAY(0x7023648)
     ARRAY(0x6fd9880)
     ARRAY(0x702a600)
     ARRAY(0x6869208)
     ARRAY(0x6722de0)
   DEVICES2:
     ARRAY(0x6fba0c8)
     ARRAY(0x67642d8)
     ARRAY(0x6763ba0)
     ARRAY(0x6e593f0)
     ARRAY(0x7039aa0)
     ARRAY(0x7021180)
     ARRAY(0x7023648)
     ARRAY(0x6fd9880)
     ARRAY(0x702a600)
     ARRAY(0x6869208)
     ARRAY(0x6722de0)
     ARRAY(0x6742d80)
     ARRAY(0x6fdc1a0)
     ARRAY(0x6e5e5c8)
     ARRAY(0x7025278)
     ARRAY(0x6ad3f68)
     ARRAY(0x6ad44f0)
     ARRAY(0x6761c58)
     ARRAY(0x6efc3d0)
     ARRAY(0x674ef78)
     ARRAY(0x674c5e0)
     ARRAY(0x6ece7b0)
     ARRAY(0x676c7a8)
     ARRAY(0x6ace660)
     ARRAY(0x6ad43a0)
     ARRAY(0x673d348)
     ARRAY(0x6841d30)
     ARRAY(0x6756ac0)
     ARRAY(0x701e3c0)
     ARRAY(0x675f008)
     ARRAY(0x7016560)
     ARRAY(0x675a728)
     ARRAY(0x7022ff0)
     ARRAY(0x6f754b0)
     ARRAY(0x6f00838)
     ARRAY(0x6f02990)
     ARRAY(0x6f5aef8)
     ARRAY(0x672fba0)
     ARRAY(0x6764590)
     ARRAY(0x674a828)
     ARRAY(0x6728300)
     ARRAY(0x6ececf0)
     ARRAY(0x6767040)
     ARRAY(0x673db10)
     ARRAY(0x6738b08)
     ARRAY(0x6755110)
     ARRAY(0x6763bb8)
     ARRAY(0x673fad8)
     ARRAY(0x6f599d0)
     ARRAY(0x6ec68f8)
     ARRAY(0x674be18)
     ARRAY(0x6e58d90)
     ARRAY(0x6764338)
     ARRAY(0x6e69ca0)
     ARRAY(0x6e5e268)
     ARRAY(0x6adc4a8)
     ARRAY(0x6ace558)
     ARRAY(0x6ad7030)
     ARRAY(0x6e2b0b8)
     ARRAY(0x6e5e5e0)
     ARRAY(0x6ace108)
   Fhem:
     lastDefChange 3
     last_update 1482922483.55619
   Helper:
     DEF
     commands   { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE',  'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE',  'state' => 'state:',  'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
     nameStyle  style="font-weight:bold"
     valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:lightblue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
     Positions:
       BR_Thermostat.batteryLevel 3:3
       BR_Thermostat.state 3:9
       BR_Thermostat_Clima.ValvePosition 3:2
       BR_Thermostat_Clima.controlMode 4:2
       BR_Thermostat_Clima.desired-temp 4:1
       BR_Thermostat_Clima.measured-temp 3:1
       DR_Thermostat.batteryLevel 5:3
       DR_Thermostat.state 5:9
       DR_Thermostat_Clima.ValvePosition 5:2
       DR_Thermostat_Clima.controlMode 6:2
       DR_Thermostat_Clima.desired-temp 6:1
       DR_Thermostat_Clima.measured-temp 5:1
       FBR_Thermostat.batteryLevel 7:3
       FBR_Thermostat.state 7:9
       FBR_Thermostat_Clima.ValvePosition 7:2
       FBR_Thermostat_Clima.controlMode 8:2
       FBR_Thermostat_Clima.desired-temp 8:1
       FBR_Thermostat_Clima.measured-temp 7:1
       FBRn_Thermostat_Clima.ValvePosition 9:2
       FBRn_Thermostat_Clima.controlMode 10:2
       FBRn_Thermostat_Clima.desired-temp 10:1
       FBRn_Thermostat_Clima.measured-temp 9:1
       KIT_Thermostat.batteryLevel 11:3
       KIT_Thermostat.state 11:9
       KIT_Thermostat_Clima.ValvePosition 11:2
       KIT_Thermostat_Clima.controlMode 12:2
       KIT_Thermostat_Clima.desired-temp 12:1
       KIT_Thermostat_Clima.measured-temp 11:1
       LR_Thermostat.batteryLevel 13:3
       LR_Thermostat.state 13:9
       LR_Thermostat_Clima.ValvePosition 13:2
       LR_Thermostat_Clima.controlMode 14:2
       LR_Thermostat_Clima.desired-temp 14:1
       LR_Thermostat_Clima.measured-temp 13:1
       MBR_Thermostat.batteryLevel 15:3
       MBR_Thermostat.state 15:9
       MBR_Thermostat_Clima.ValvePosition 15:2
       MBR_Thermostat_Clima.controlMode 16:2
       MBR_Thermostat_Clima.desired-temp 16:1
       MBR_Thermostat_Clima.measured-temp 15:1
       NBR_Thermostat.batteryLevel 17:3
       NBR_Thermostat.state 17:9
       NBR_Thermostat_Clima.ValvePosition 17:2
       NBR_Thermostat_Clima.controlMode 18:2
       NBR_Thermostat_Clima.desired-temp 18:1
       NBR_Thermostat_Clima.measured-temp 17:1
       OF_Thermostat.batteryLevel 9:3
       OF_Thermostat.state 9:9
       RR_Thermostat.batteryLevel 19:3
       RR_Thermostat.state 19:9
       RR_Thermostat_Clima.ValvePosition 19:2
       RR_Thermostat_Clima.controlMode 20:2
       RR_Thermostat_Clima.desired-temp 20:1
       RR_Thermostat_Clima.measured-temp 19:1
     Valueformat:
       ValvePosition %0.1f %%
       desired-temp %0.1f &deg;C
       measured-temp %0.1f &deg;C
     Valueicon:
       R-globalBtnLock.off secur_open@red
       R-globalBtnLock.off  secur_open@red
       R-globalBtnLock.on secur_locked@green
       R-globalBtnLock.on  secur_locked@green
       R-globalBtnLock.set_off  secur_open@orange
       R-globalBtnLock.set_on  secur_locked@orange
       battery.low batterie@red
       battery.ok batterie@green
       controlMode.auto sani_heating_automatic@green
       controlMode.manual sani_heating_manual@red
       controlMode.set_auto sani_heating_automatic@orange
       controlMode.set_manual sani_heating_manual@orange
     Values:
       formated:
         undef
         ARRAY(0x67f21c0)
         ARRAY(0x6e6a150)
         ARRAY(0x67f3928)
         undef
         undef
         undef
         undef
         undef
         ARRAY(0x7029f88)
       orig:
         undef
         ARRAY(0x6ad6c70)
         ARRAY(0x675b2e0)
         ARRAY(0x6fd0080)
         undef
         undef
         undef
         undef
         undef
         ARRAY(0x67e32d0)
       prefixsuffix:
         undef
         ARRAY(0x6e77400)
         ARRAY(0x7029d90)
         ARRAY(0x6fcb240)
         undef
         undef
         undef
         undef
         undef
         ARRAY(0x6fdf6d8)
Attributes:
   commands   { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE',  'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE',  'state' => 'state:',  'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
   nameStyle  style="font-weight:bold"
   room       Heating
   sortDevices 1
   valueFormat { 'desired-temp' => "%0.1f &deg;C", 'measured-temp' => "%0.1f &deg;C", 'ValvePosition' => "%0.1f %%" }
   valueIcon  { 'controlMode.auto' => 'sani_heating_automatic@green','controlMode.set_auto' => 'sani_heating_automatic@orange','controlMode.manual' => 'sani_heating_manual@red','controlMode.set_manual' => 'sani_heating_manual@orange', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red', 'R-globalBtnLock.on' => 'secur_locked@green', 'R-globalBtnLock.on ' => 'secur_locked@green', 'R-globalBtnLock.set_on ' => 'secur_locked@orange', 'R-globalBtnLock.off' => 'secur_open@red', 'R-globalBtnLock.off ' => 'secur_open@red', 'R-globalBtnLock.set_off ' => 'secur_open@orange'}
   valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:light blue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}


Die Werte für die Menüs sind in dummys abgelegt.

define d_dayTemp dummy
attr d_dayTemp room Unsorted
attr d_dayTemp setList state:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0
attr d_dayTemp webCmd state

define d_workdayStart dummy
attr d_workdayStart room Unsorted
attr d_workdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayStart webCmd state

define d_workdayEnd dummy
attr d_workdayEnd room Unsorted
attr d_workdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayEnd webCmd state

define d_saturdayStart dummy
attr d_saturdayStart room Unsorted
attr d_saturdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayStart webCmd state

define d_saturdayEnd dummy
attr d_saturdayEnd room Unsorted
attr d_saturdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayEnd webCmd state

define d_sundayStart dummy
attr d_sundayStart room Unsorted
attr d_sundayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayStart webCmd state

define d_sundayEnd dummy
attr d_sundayEnd room Unsorted
attr d_sundayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayEnd webCmd state

define ntfy_toggleControlMode notify ntfy_toggleControlMode {toggleMode($EVENT)}

define ntfy_toggleBtnLock notify ntfy_toggleBtnLock {toggleLock($EVENT)}

define ntfy_setTimeTable notify ntfy_setTimeTable {setTimeTable($EVENT)}


Ergänzend noch der MyUtils Code.

sub getDevice($){
my $device = shift;
return InternalVal($device,"device","error");
}

sub toggleMode($){
my $device = shift;
my $Mode = ReadingsVal($device,"controlMode","error");

if ($Mode eq "manual")
  {fhem("set $device controlMode auto")}
elsif ($Mode eq "auto")
  {fhem("set $device controlMode manual")}
elsif ($Mode eq "set_manual")
  {fhem("set $device controlMode auto")}
elsif ($Mode eq "set_auto")
  {fhem("set $device controlMode manual")};
}

sub toggleLock($){
my $device = shift;
my $lockState = ReadingsVal($device,"R-globalBtnLock","error");

if ($lockState eq "on "){
  {fhem("set $device regSet globalBtnLock off")}
  {fhem ("set $device getConfig")}}
elsif ($lockState eq "off "){
  {fhem("set $device regSet globalBtnLock on")}
  {fhem ("set $device getConfig")}}
elsif ($lockState eq "on"){
  {fhem("set $device regSet globalBtnLock off")}
  {fhem ("set $device getConfig")}}
elsif ($lockState eq "off"){
  {fhem("set $device regSet globalBtnLock on")}
  {fhem ("set $device getConfig")}}
else
  {return $lockState.$device};
}

sub getDayTemp($){
my $device = shift;
my $timeTable = ReadingsVal($device,"R_2_tempListMon","error Reading");
my $dayTemp = substr $timeTable, 17, 5;

return ($dayTemp." °C");
}

sub getTime($$$){
my $device = shift;
my $reading = shift;
my $status = shift;
my $timeTable = ReadingsVal($device,$reading,"error Reading");
my $time = "error Return";

if ($status eq "start")
  {$time = substr $timeTable, 0, 6}
elsif ($status eq "end")
  {$time = substr $timeTable, 11, 6}

return $time;
}
sub setTimeTable($){
my $device = shift;
my $dayTemp = ReadingsVal("d_dayTemp","state","dt error");
my $nightTemp = "15.0";
my $startWorkday = ReadingsVal("d_workdayStart","state","eds error");
my $endWorkday = ReadingsVal("d_workdayEnd","state","wde error");
my $startSaturday = ReadingsVal("d_saturdayStart","state","sds error");
my $endSaturday = ReadingsVal("d_saturdayEnd","state","sde error");
my $startSunday = ReadingsVal("d_sundayStart","state","snds error");
my $endSunday = ReadingsVal("d_sundayEnd","state","snde error");

{ fhem ("set $device tempListMon prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListTue prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListWed prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListThu prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListFri prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSat prep $startSaturday $nightTemp $endSaturday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSun exec $startSunday $nightTemp $endSunday $dayTemp 24:00 $nightTemp")};
}


Folgende Fehlermeldung bekomme ich im Log

PERL WARNING: Redundant argument in sprintf at ./FHEM/33_readingsGroup.pm line 529.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^batteryLevel@{ <-- HERE getDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^imposible@{ <-- HERE $DEVICE}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1:


Wer hat bitte eine Tipp für mich.

Danke vorab

Gruß
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

ChHerrm

Hallo! Ich habe ein Problem mit der Readingsgroup bezüglich eines Thermostats HM-CC-RT-DN, eingebunden per CCU2 an FHEM.

Mein aktueller Stand ist im Anhang zu sehen.

Hier der momentane Code, Probleme habe ich vor allem erstmal mit der Solltemperatur. Diese würde ich gerne per Dropdown-Menü einstellen. Scheint ja schon vielen Leuten gelungen sein, jedoch per desired-temp. Diese Option habe ich bei mir nicht gesehen, sondern wie im folgenden Code per "set %DEVICE datapoint 4.SET_TEMPERATURE 20.0" beispielsweise. Wie kann ich anstelle des festen Wertes eine Dropdownliste einbinden? :-/ Danke für eure Hilfe, ich tue mich mit der readingsgroup auch nach zahlreichen Versuchen noch extrem schwer. Meine Umsetzung zur Umschaltung von Auto / Manu / Boost funktioniert. Auch das Auslesen der Werte. Nicht funktionsfähig ist aber vor allem das Setzen der Temperatur


# Readinggroup der Werte
define HeizungRg readingsGroup <%sani_heating@D4BA90>,<>,<Soll>,<>,<Soll neu>,<>,<Ist>,<>,<Ventil>,<>,<Modus>,<>,<Batterie>,<>,<Boost>,<>,<Auto On>,<>,<Manu On>,<>,<An>,<>,<Aus>\
HM_HM_CC_RT_DN_NEQ1011241:<>,4.SET_TEMPERATURE,<>,<sollsetz>,<>,4.ACTUAL_TEMPERATURE,<>,4.VALVE_STATE,<>,<%sani_heating@D4BA90>,<>,<{if(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=3.0){"%measure_battery_100"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=2.7){"%measure_battery_75"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=2.5){"%measure_battery_50"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=2.2){"%measure_battery_25"}else{"%measure_battery_25"}}>,<>,<%sani_heating_boost>,<>,<%sani_heating_automatic>,<>,<%sani_heating_manual>,<>,<%general_an>,<>,<%general_aus>\
attr HeizungRg commands {"HeizungRg.sollsetz" => "set %DEVICE datapoint 4.SET_TEMPERATURE 20.0","HeizungRg.sani_heating_boost"=>"set %DEVICE Boost","HeizungRg.sani_heating_automatic"=>"set %DEVICE Auto","HeizungRg.sani_heating_manual"=>"set %DEVICE Manu","HeizungRg.general_an"=>"set %DEVICE on","HeizungRg.general_aus"=>"set %DEVICE off","HeizungRg.ubatterie"=>"get %DEVICE datapoint 4.BATTERY_STATE"}
attr HeizungRg eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/
attr HeizungRg group Raumklima
attr HeizungRg nameStyle style="color:white;;font-weight:bold"
attr HeizungRg nolinks 1
attr HeizungRg room Wohnzimmer
attr HeizungRg valueFormat {if(($READING eq "4.ACTUAL_TEMPERATURE")or( $READING eq "4.SET_TEMPERATURE") ){ "$VALUE °C"}elsif(($READING eq "4.VALVE_STATE")){"$VALUE %"}}

# Bad-Thermostat
define HM_HM_CC_RT_DN_NEQ1011241 HMCCUDEV NEQ1011241
attr HM_HM_CC_RT_DN_NEQ1011241 IODev HMLAN1
attr HM_HM_CC_RT_DN_NEQ1011241 alias Bad_Thermostat
attr HM_HM_CC_RT_DN_NEQ1011241 ccureadingfilter (^UNREACH|LOWBAT|TEMPERATURE|VALVE_STATE|CONTROL)
attr HM_HM_CC_RT_DN_NEQ1011241 ccureadingformat datapoint
attr HM_HM_CC_RT_DN_NEQ1011241 cmdIcon Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus
attr HM_HM_CC_RT_DN_NEQ1011241 controldatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1011241 event-on-change-reading .*
attr HM_HM_CC_RT_DN_NEQ1011241 eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/
attr HM_HM_CC_RT_DN_NEQ1011241 group Raumklima
attr HM_HM_CC_RT_DN_NEQ1011241 room Wohnzimmer
attr HM_HM_CC_RT_DN_NEQ1011241 stateFormat Temperatur: 4.ACTUAL_TEMPERATURE°C\
Batterie: 4.BATTERY_STATE[V]\
Ventil: 4.VALVE_STATE%
attr HM_HM_CC_RT_DN_NEQ1011241 statedatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1011241 stripnumber 1
attr HM_HM_CC_RT_DN_NEQ1011241 substexcl control
attr HM_HM_CC_RT_DN_NEQ1011241 substitute UNREACH,LOWBAT!(0|false):no,(1|true):yes;;CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
attr HM_HM_CC_RT_DN_NEQ1011241 webCmd control:Auto:Manu:Boost:on:off
attr HM_HM_CC_RT_DN_NEQ1011241 widgetOverride control:slider,3.5,0.5,30.5,1

hartenthaler

Zitat von: ChHerrm am 10 Januar 2017, 21:11:12
Hallo! Ich habe ein Problem mit der Readingsgroup bezüglich eines Thermostats HM-CC-RT-DN, eingebunden per CCU2 an FHEM.
...

...
define HM_HM_CC_RT_DN_NEQ1011241 HMCCUDEV NEQ1011241
attr HM_HM_CC_RT_DN_NEQ1011241 IODev HMLAN1
...

Ich habe ein Verständnisproblem: "eingebunden per CCU2" und "IODEV HMLAN1" passt doch nicht zusammen. Oder?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

ChHerrm

Ich glaube nicht, da bei mir alles gut läuft. Vlt aber auch etwas unklar da ich extra nicht den ganzen Brocken Code gepostet habe (der zumindest nichts mit der readingsgroup zu tun hatte).
Mein Problem habe ich inzwischen endlich gelöst, hier mal mein gesamter Code falls jemand mal auf ähnliche Probleme stößt. Im Anhang auch ne Darstellung davon.


# Homematic-Konfiguration

define HMLAN1 HMCCU 192.168.0.21
attr HMLAN1 rpcport 2001,9292
attr HMLAN1 rpcserver on
attr HMLAN1 stateFormat rpcstate/state
#attr HMLAN1 rpcinterval 5

#set HMLAN1 rpcserver on


# Schlafzimmer-Thermostat
define HM_HM_CC_RT_DN_NEQ1005861 HMCCUDEV NEQ1005861
attr HM_HM_CC_RT_DN_NEQ1005861 IODev HMLAN1
attr HM_HM_CC_RT_DN_NEQ1005861 alias Schlafzimmer
attr HM_HM_CC_RT_DN_NEQ1005861 ccureadingfilter (^UNREACH|LOWBAT|TEMPERATURE|VALVE_STATE|CONTROL|BATTERY_STATE)
attr HM_HM_CC_RT_DN_NEQ1005861 ccureadingformat datapoint
attr HM_HM_CC_RT_DN_NEQ1005861 cmdIcon Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus
attr HM_HM_CC_RT_DN_NEQ1005861 controldatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1005861 event-on-change-reading .*
attr HM_HM_CC_RT_DN_NEQ1005861 eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/
attr HM_HM_CC_RT_DN_NEQ1005861 stateFormat Temperatur: 4.ACTUAL_TEMPERATURE°C\
Batterie: 4.BATTERY_STATE[V]\
Ventil: 4.VALVE_STATE%
attr HM_HM_CC_RT_DN_NEQ1005861 statedatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1005861 stripnumber 1
attr HM_HM_CC_RT_DN_NEQ1005861 substexcl control
attr HM_HM_CC_RT_DN_NEQ1005861 substitute UNREACH,LOWBAT!(0|false):no,(1|true):yes;;CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
attr HM_HM_CC_RT_DN_NEQ1005861 webCmd control:Auto:Manu:Boost:on:off
attr HM_HM_CC_RT_DN_NEQ1005861 widgetOverride control:5.0,17.0,20.0,21.0,22.0

# Readinggroup der Werte
define HeizungRg readingsGroup <%sani_heating@D4BA90>,<Soll>,<Vorgabewert>,<Ist>,<Ventil>,<Modus>,<Batterie>,<Boost>,<Auto>,<Manu>,<An>,<Aus>\
HM_HM_CC_RT_DN_NEQ1011241:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>\
HM_HM_CC_RT_DN_NEQ1005861:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>\
HM_HM_CC_RT_DN_NEQ1011150:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>\
HM_HM_CC_RT_DN_NEQ1011157:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>
attr HeizungRg alias Heizungsübersicht
attr HeizungRg commands {'HeizungRg.sollsetz' => 'control:17.0,18.0,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,24.0,25.0',"HeizungRg.sani_heating_boost"=>"set %DEVICE Boost","HeizungRg.sani_heating_automatic"=>"set %DEVICE Auto","HeizungRg.sani_heating_manual"=>"set %DEVICE Manu","HeizungRg.general_an"=>"set %DEVICE on","HeizungRg.general_aus"=>"set %DEVICE off"}
attr HeizungRg eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost
attr HeizungRg group Raumklima
attr HeizungRg nameStyle style="color:white;;font-weight:bold"
attr HeizungRg room Wohnzimmer
attr HeizungRg sortDevices 1
attr HeizungRg valueFormat {if(($READING eq "4.ACTUAL_TEMPERATURE")or( $READING eq "4.SET_TEMPERATURE") ){ "$VALUE °C"}elsif(($READING eq "4.VALVE_STATE")){"$VALUE %"}}
attr HeizungRg valueIcon {if($READING eq "4.BATTERY_STATE" && $VALUE > 3.0){'measure_battery_100@green'}elsif($READING eq "4.BATTERY_STATE" && $VALUE > 2.8){'measure_battery_75@lightgreen'}elsif($READING eq "4.BATTERY_STATE" && $VALUE > 2.6){'measure_battery_50@yellow'}elsif($READING eq "4.BATTERY_STATE" && $VALUE >= 2.3){'measure_battery_25@orange'}elsif($READING eq "4.BATTERY_STATE" && $VALUE <= 2.2){'measure_battery_0@red'}elsif($READING eq "4.CONTROL_MODE" && $VALUE eq "AUTO"){'sani_heating_automatic@yellow'}elsif($READING eq "4.CONTROL_MODE" && $VALUE eq "MANU"){'sani_heating_manual@yellow'}elsif($READING eq "4.CONTROL_MODE" && $VALUE eq "BOOST"){'sani_heating_boost@red'}}
attr HeizungRg valueStyle {if($READING eq "4.VALVE_STATE" && $VALUE < 10){ 'style="color:blue;;;;font-weight:bold"'}elsif($READING eq "4.VALVE_STATE" && $VALUE >= 80){ 'style="color:red;;;;font-weight:bold"'}elsif($READING eq "4.ACTUAL_TEMPERATURE" && $VALUE < 19){ 'style="color:blue;;;;font-weight:bold"'}elsif($READING eq "4.ACTUAL_TEMPERATURE" && $VALUE >= 22){ 'style="color:red;;;;font-weight:bold"'}elsif($READING eq "4.SET_TEMPERATURE" && $VALUE < 19){ 'style="color:blue;;;;font-weight:bold"'}elsif($READING eq "4.SET_TEMPERATURE" && $VALUE >= 22){ 'style="color:red;;;;font-weight:bold"'}}

Newbee

Mit der Bitte um HILFE: Habe das Problem immer noch und komme einfach nicht dahinter......

Zitat von: Newbee am 29 Dezember 2016, 08:44:00
Hallo,

haben folgende Readings Group. Ist ein Bsp. aus diesem Beitrag https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888.
Leider werden aus für mich nicht verständlichen Gründen die pull-down (drop-down) Menüs nicht mehr angezeigt.

List auf die Readingsgroup:

Internals:
   CFGFN      /opt/fhem/FHEM/red.cfg
   DEF        <>,<Ist-,>,<Regler>,<Batterie>,<Tages->,<Werktag>,<>,<Wochenende>,<>,<Wochenplan>
<>,<Solltemperatur>,<Lock>,<Modus>,<Temperatur>,<start>,<ende>,<start>,<ende>,<schreiben>
.*_Clima:measured-temp,ValvePosition,batteryLevel@{getDevice($DEVICE)},imposible@{$DEVICE},<{getDayTemp($DEVICE)}>,<{getTime($DEVICE,"R_2_tempListMon","start")}>,<{getTime($DEVICE,"R_2_tempListMon","end")}>,<{getTime($DEVICE,"R_0_tempListSat","start")}>,<{getTime($DEVICE,"R_0_tempListSat","end")}>,state@{getDevice($DEVICE)},<br>,impossible@{$DEVICE},desired-temp,R-globalBtnLock@{getDevice($DEVICE)},imposible@{$DEVICE},controlMode,state@d_dayTemp,state@d_workdayStart,state@d_workdayEnd,state@d_saturdayStart,state@d_saturdayEnd,imposible@{$DEVICE},<%system_fhem_update>
   NAME       Thermostate
   NR         709
   NTFY_ORDER 50-Thermostate
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     BR_Thermostat_Clima 1
     DR_Thermostat_Clima 1
     FBR_Thermostat_Clima 1
     FBRn_Thermostat_Clima 1
     KIT_Thermostat_Clima 1
     LR_Thermostat_Clima 1
     MBR_Thermostat_Clima 1
     NBR_Thermostat_Clima 1
     RR_Thermostat_Clima 1
   Content2:
     BR_Thermostat 1
     BR_Thermostat_Clima 1
     DR_Thermostat 1
     DR_Thermostat_Clima 1
     FBR_Thermostat 1
     FBR_Thermostat_Clima 1
     FBRn_Thermostat_Clima 1
     KIT_Thermostat 1
     KIT_Thermostat_Clima 1
     LR_Thermostat 1
     LR_Thermostat_Clima 1
     MBR_Thermostat 1
     MBR_Thermostat_Clima 1
     NBR_Thermostat 1
     NBR_Thermostat_Clima 1
     OF_Thermostat 1
     RR_Thermostat 1
     RR_Thermostat_Clima 1
     d_dayTemp  1
     d_saturdayEnd 1
     d_saturdayStart 1
     d_workdayEnd 1
     d_workdayStart 1
   DEVICES:
     ARRAY(0x6fba0c8)
     ARRAY(0x67642d8)
     ARRAY(0x6763ba0)
     ARRAY(0x6e593f0)
     ARRAY(0x7039aa0)
     ARRAY(0x7021180)
     ARRAY(0x7023648)
     ARRAY(0x6fd9880)
     ARRAY(0x702a600)
     ARRAY(0x6869208)
     ARRAY(0x6722de0)
   DEVICES2:
     ARRAY(0x6fba0c8)
     ARRAY(0x67642d8)
     ARRAY(0x6763ba0)
     ARRAY(0x6e593f0)
     ARRAY(0x7039aa0)
     ARRAY(0x7021180)
     ARRAY(0x7023648)
     ARRAY(0x6fd9880)
     ARRAY(0x702a600)
     ARRAY(0x6869208)
     ARRAY(0x6722de0)
     ARRAY(0x6742d80)
     ARRAY(0x6fdc1a0)
     ARRAY(0x6e5e5c8)
     ARRAY(0x7025278)
     ARRAY(0x6ad3f68)
     ARRAY(0x6ad44f0)
     ARRAY(0x6761c58)
     ARRAY(0x6efc3d0)
     ARRAY(0x674ef78)
     ARRAY(0x674c5e0)
     ARRAY(0x6ece7b0)
     ARRAY(0x676c7a8)
     ARRAY(0x6ace660)
     ARRAY(0x6ad43a0)
     ARRAY(0x673d348)
     ARRAY(0x6841d30)
     ARRAY(0x6756ac0)
     ARRAY(0x701e3c0)
     ARRAY(0x675f008)
     ARRAY(0x7016560)
     ARRAY(0x675a728)
     ARRAY(0x7022ff0)
     ARRAY(0x6f754b0)
     ARRAY(0x6f00838)
     ARRAY(0x6f02990)
     ARRAY(0x6f5aef8)
     ARRAY(0x672fba0)
     ARRAY(0x6764590)
     ARRAY(0x674a828)
     ARRAY(0x6728300)
     ARRAY(0x6ececf0)
     ARRAY(0x6767040)
     ARRAY(0x673db10)
     ARRAY(0x6738b08)
     ARRAY(0x6755110)
     ARRAY(0x6763bb8)
     ARRAY(0x673fad8)
     ARRAY(0x6f599d0)
     ARRAY(0x6ec68f8)
     ARRAY(0x674be18)
     ARRAY(0x6e58d90)
     ARRAY(0x6764338)
     ARRAY(0x6e69ca0)
     ARRAY(0x6e5e268)
     ARRAY(0x6adc4a8)
     ARRAY(0x6ace558)
     ARRAY(0x6ad7030)
     ARRAY(0x6e2b0b8)
     ARRAY(0x6e5e5e0)
     ARRAY(0x6ace108)
   Fhem:
     lastDefChange 3
     last_update 1482922483.55619
   Helper:
     DEF
     commands   { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE',  'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE',  'state' => 'state:',  'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
     nameStyle  style="font-weight:bold"
     valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:lightblue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
     Positions:
       BR_Thermostat.batteryLevel 3:3
       BR_Thermostat.state 3:9
       BR_Thermostat_Clima.ValvePosition 3:2
       BR_Thermostat_Clima.controlMode 4:2
       BR_Thermostat_Clima.desired-temp 4:1
       BR_Thermostat_Clima.measured-temp 3:1
       DR_Thermostat.batteryLevel 5:3
       DR_Thermostat.state 5:9
       DR_Thermostat_Clima.ValvePosition 5:2
       DR_Thermostat_Clima.controlMode 6:2
       DR_Thermostat_Clima.desired-temp 6:1
       DR_Thermostat_Clima.measured-temp 5:1
       FBR_Thermostat.batteryLevel 7:3
       FBR_Thermostat.state 7:9
       FBR_Thermostat_Clima.ValvePosition 7:2
       FBR_Thermostat_Clima.controlMode 8:2
       FBR_Thermostat_Clima.desired-temp 8:1
       FBR_Thermostat_Clima.measured-temp 7:1
       FBRn_Thermostat_Clima.ValvePosition 9:2
       FBRn_Thermostat_Clima.controlMode 10:2
       FBRn_Thermostat_Clima.desired-temp 10:1
       FBRn_Thermostat_Clima.measured-temp 9:1
       KIT_Thermostat.batteryLevel 11:3
       KIT_Thermostat.state 11:9
       KIT_Thermostat_Clima.ValvePosition 11:2
       KIT_Thermostat_Clima.controlMode 12:2
       KIT_Thermostat_Clima.desired-temp 12:1
       KIT_Thermostat_Clima.measured-temp 11:1
       LR_Thermostat.batteryLevel 13:3
       LR_Thermostat.state 13:9
       LR_Thermostat_Clima.ValvePosition 13:2
       LR_Thermostat_Clima.controlMode 14:2
       LR_Thermostat_Clima.desired-temp 14:1
       LR_Thermostat_Clima.measured-temp 13:1
       MBR_Thermostat.batteryLevel 15:3
       MBR_Thermostat.state 15:9
       MBR_Thermostat_Clima.ValvePosition 15:2
       MBR_Thermostat_Clima.controlMode 16:2
       MBR_Thermostat_Clima.desired-temp 16:1
       MBR_Thermostat_Clima.measured-temp 15:1
       NBR_Thermostat.batteryLevel 17:3
       NBR_Thermostat.state 17:9
       NBR_Thermostat_Clima.ValvePosition 17:2
       NBR_Thermostat_Clima.controlMode 18:2
       NBR_Thermostat_Clima.desired-temp 18:1
       NBR_Thermostat_Clima.measured-temp 17:1
       OF_Thermostat.batteryLevel 9:3
       OF_Thermostat.state 9:9
       RR_Thermostat.batteryLevel 19:3
       RR_Thermostat.state 19:9
       RR_Thermostat_Clima.ValvePosition 19:2
       RR_Thermostat_Clima.controlMode 20:2
       RR_Thermostat_Clima.desired-temp 20:1
       RR_Thermostat_Clima.measured-temp 19:1
     Valueformat:
       ValvePosition %0.1f %%
       desired-temp %0.1f &deg;C
       measured-temp %0.1f &deg;C
     Valueicon:
       R-globalBtnLock.off secur_open@red
       R-globalBtnLock.off  secur_open@red
       R-globalBtnLock.on secur_locked@green
       R-globalBtnLock.on  secur_locked@green
       R-globalBtnLock.set_off  secur_open@orange
       R-globalBtnLock.set_on  secur_locked@orange
       battery.low batterie@red
       battery.ok batterie@green
       controlMode.auto sani_heating_automatic@green
       controlMode.manual sani_heating_manual@red
       controlMode.set_auto sani_heating_automatic@orange
       controlMode.set_manual sani_heating_manual@orange
     Values:
       formated:
         undef
         ARRAY(0x67f21c0)
         ARRAY(0x6e6a150)
         ARRAY(0x67f3928)
         undef
         undef
         undef
         undef
         undef
         ARRAY(0x7029f88)
       orig:
         undef
         ARRAY(0x6ad6c70)
         ARRAY(0x675b2e0)
         ARRAY(0x6fd0080)
         undef
         undef
         undef
         undef
         undef
         ARRAY(0x67e32d0)
       prefixsuffix:
         undef
         ARRAY(0x6e77400)
         ARRAY(0x7029d90)
         ARRAY(0x6fcb240)
         undef
         undef
         undef
         undef
         undef
         ARRAY(0x6fdf6d8)
Attributes:
   commands   { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE',  'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE',  'state' => 'state:',  'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
   nameStyle  style="font-weight:bold"
   room       Heating
   sortDevices 1
   valueFormat { 'desired-temp' => "%0.1f &deg;C", 'measured-temp' => "%0.1f &deg;C", 'ValvePosition' => "%0.1f %%" }
   valueIcon  { 'controlMode.auto' => 'sani_heating_automatic@green','controlMode.set_auto' => 'sani_heating_automatic@orange','controlMode.manual' => 'sani_heating_manual@red','controlMode.set_manual' => 'sani_heating_manual@orange', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red', 'R-globalBtnLock.on' => 'secur_locked@green', 'R-globalBtnLock.on ' => 'secur_locked@green', 'R-globalBtnLock.set_on ' => 'secur_locked@orange', 'R-globalBtnLock.off' => 'secur_open@red', 'R-globalBtnLock.off ' => 'secur_open@red', 'R-globalBtnLock.set_off ' => 'secur_open@orange'}
   valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:light blue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}


Die Werte für die Menüs sind in dummys abgelegt.

define d_dayTemp dummy
attr d_dayTemp room Unsorted
attr d_dayTemp setList state:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0
attr d_dayTemp webCmd state

define d_workdayStart dummy
attr d_workdayStart room Unsorted
attr d_workdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayStart webCmd state

define d_workdayEnd dummy
attr d_workdayEnd room Unsorted
attr d_workdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayEnd webCmd state

define d_saturdayStart dummy
attr d_saturdayStart room Unsorted
attr d_saturdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayStart webCmd state

define d_saturdayEnd dummy
attr d_saturdayEnd room Unsorted
attr d_saturdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayEnd webCmd state

define d_sundayStart dummy
attr d_sundayStart room Unsorted
attr d_sundayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayStart webCmd state

define d_sundayEnd dummy
attr d_sundayEnd room Unsorted
attr d_sundayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayEnd webCmd state

define ntfy_toggleControlMode notify ntfy_toggleControlMode {toggleMode($EVENT)}

define ntfy_toggleBtnLock notify ntfy_toggleBtnLock {toggleLock($EVENT)}

define ntfy_setTimeTable notify ntfy_setTimeTable {setTimeTable($EVENT)}


Ergänzend noch der MyUtils Code.

sub getDevice($){
my $device = shift;
return InternalVal($device,"device","error");
}

sub toggleMode($){
my $device = shift;
my $Mode = ReadingsVal($device,"controlMode","error");

if ($Mode eq "manual")
  {fhem("set $device controlMode auto")}
elsif ($Mode eq "auto")
  {fhem("set $device controlMode manual")}
elsif ($Mode eq "set_manual")
  {fhem("set $device controlMode auto")}
elsif ($Mode eq "set_auto")
  {fhem("set $device controlMode manual")};
}

sub toggleLock($){
my $device = shift;
my $lockState = ReadingsVal($device,"R-globalBtnLock","error");

if ($lockState eq "on "){
  {fhem("set $device regSet globalBtnLock off")}
  {fhem ("set $device getConfig")}}
elsif ($lockState eq "off "){
  {fhem("set $device regSet globalBtnLock on")}
  {fhem ("set $device getConfig")}}
elsif ($lockState eq "on"){
  {fhem("set $device regSet globalBtnLock off")}
  {fhem ("set $device getConfig")}}
elsif ($lockState eq "off"){
  {fhem("set $device regSet globalBtnLock on")}
  {fhem ("set $device getConfig")}}
else
  {return $lockState.$device};
}

sub getDayTemp($){
my $device = shift;
my $timeTable = ReadingsVal($device,"R_2_tempListMon","error Reading");
my $dayTemp = substr $timeTable, 17, 5;

return ($dayTemp." °C");
}

sub getTime($$$){
my $device = shift;
my $reading = shift;
my $status = shift;
my $timeTable = ReadingsVal($device,$reading,"error Reading");
my $time = "error Return";

if ($status eq "start")
  {$time = substr $timeTable, 0, 6}
elsif ($status eq "end")
  {$time = substr $timeTable, 11, 6}

return $time;
}
sub setTimeTable($){
my $device = shift;
my $dayTemp = ReadingsVal("d_dayTemp","state","dt error");
my $nightTemp = "15.0";
my $startWorkday = ReadingsVal("d_workdayStart","state","eds error");
my $endWorkday = ReadingsVal("d_workdayEnd","state","wde error");
my $startSaturday = ReadingsVal("d_saturdayStart","state","sds error");
my $endSaturday = ReadingsVal("d_saturdayEnd","state","sde error");
my $startSunday = ReadingsVal("d_sundayStart","state","snds error");
my $endSunday = ReadingsVal("d_sundayEnd","state","snde error");

{ fhem ("set $device tempListMon prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListTue prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListWed prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListThu prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListFri prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSat prep $startSaturday $nightTemp $endSaturday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSun exec $startSunday $nightTemp $endSunday $dayTemp 24:00 $nightTemp")};
}


Folgende Fehlermeldung bekomme ich im Log

PERL WARNING: Redundant argument in sprintf at ./FHEM/33_readingsGroup.pm line 529.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^batteryLevel@{ <-- HERE getDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^imposible@{ <-- HERE $DEVICE}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1:


Wer hat bitte eine Tipp für mich.

Danke vorab

Gruß
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

clumsy

hallo

ich bin nun seit tagen am suchen und versuchen und riskier jetzt halt trotzde, eine frage zu stellen die evtl. schonmal beantwortet ist..

ich möchte in einer ganz einfachen readingsGroup den Wert, resp das Icon dazu vor dem Namen anzeigen, also sowas wie:
define info.battlevel readingsGroup .*:batteryLevel|[Bb]attery

anstatt
<name> <wert/icon> <datum>
möchte ich
<wert/icon>  <name> <datum>

ich habs über einen umweg mit dem attribut nameIcon geschafft, indem ich das umbiege und via perl-code den Wert resp. das Icon anzeige, ist aber recht umständlich...
attr info.battlevel nameIcon {
'battery' => (ReadingsVal($DEVICE,$READING,undef) eq 'ok') ? 'radio_checked@0CFB0C' : 'radio_checked@FB5909'
}

was hab ich übersehen, kann das einfacher gemacht werden?

vielen dank für allfällige hilfe schon im voraus...

PeterS

Hallo

Wie kann ich eine Readingsgroup genauso anzeigen wie einen Dummy (ohne Einrückungund den Wert rechtsbündig) ?

Beide devices sollten doch eigentlich gleich anzeigt werden (siehe Beispiel), oder ?

Gruss Peter


define check_dummy dummy
attr check_dummy eventMap on:on off:off
attr check_dummy group demo
attr check_dummy room demo

define check_readingsgroup readingsGroup check_dummy
attr check_readingsgroup group demo
attr check_readingsgroup mapping {'check_dummy' => 'readingsgroup'}
attr check_readingsgroup noheading 1
attr check_readingsgroup notime 1
attr check_readingsgroup room demo
attr check_readingsgroup style style="border:0px;;box-shadow:none"
attr check_readingsgroup valueStyle style="text-align:right"

justme1968

@clumsy: du musst auf den mehrspalten modus wechseln.

du kannst mit +NAME das internal NAME als normale spalte anzeigen. alles zusammen könnte dann etwa so aussehen:

define <rg> readingsGroup .*:FILTER=battery=.+:battery,+NAME,<{ReadingsTimestamp($DEVICE,"battery","")}@battery>
attr <rg> nonames 1


den filter musst du anpassen und/oder mehrere solcher blöcke im define angeben.

@PeterS: nein. beides ist nicht gleich. readingsGroup ist was die anzeige angeht kein normales device sondern selber schon eine art gruppe. wenn du diese noch mal in eine gruppe steckst wird eine ebene zusätzlich eingerückt. man kann nur per css etwas spielen und das unauffälliger machen: https://wiki.fhem.de/wiki/ReadingsGroup#readingsGroup_in_einer_Gruppe.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

clumsy

vielen dank!! klappt!! das "attr nonames 1" war wohl mein problem. das hatte ich übersehen/vergessen.... war wohl zu spät zu viel... danke auf jedenfall für den hinweis!

tomspatz

Eine readingsgroup wird bei im Raum immer als letztes angezeigt.
Die Sortierung ist auch nicht über den alias oder den rg Namen zu ändern, ist halt immer unten.
Kann man das ändern?
LG
Tom

Heuberg

Das geht  ;D. Habe es erst heute so eingestellt. Ich habe der readingsGroup das Attribut "group" gesetzt. Mit einem Namen, der im Raum ganz oben erscheint.

Viele Grüße
Rainer
HM, MAX, MySensors, Fronius, Conbee II, ZigBee, VCONTROL, Modbus, RPi, AVM

Peedy2495

Hallo,
ich hab hier einen seltsamen Fehler bei folgendem Code:

define wz_silent_tON dummy
attr wz_silent_tON alias Ruhe
attr wz_silent_tON event-on-change-reading .*

define wz_silent_tOFF dummy
attr wz_silent_tOFF event-on-change-reading .*

define vh_wz_t readingsGroup wz_silent_tON:,<von>,state@wz_silent_tON,<bis>,state@wz_silent_tOFF
attr vh_wz_t cellStyle { "r:1,c:0"=>'style="font-weight:bold"' \
}
attr vh_wz_t commands { \
'state' => ":time" \
}
attr vh_wz_t group Heizung Wohnzimmer
attr vh_wz_t noheading 1
attr vh_wz_t nolinks
attr vh_wz_t room EG Wohnzimmer


beim ändern einer der beiden Zeiten steht plötzlich HTML-Code statt des eingestellten Wertes drin (siehe Anhang).
Nach einem reload der Seite ist jedoch der eingestellte Zeitwert richtig eingetragen.

Eigentlich hatte ich ursprünglich vor, die beiden Zeitwerte in readings nur eines Devices zu hinterlegen.
da aber meine Frage in einem anderen Thread noch unbeantwortet blieb, gehen mir so langsam die Ideen aus, wie ich die grunsätzliche Problemstellung lösen kann.

Reinerlein

Hallo Andre,

ich habe seit einem kürzlichen Update ein Problem mit berechneten Werten mittel "alwaysTrigger" auf "2".

Folgendes ist meine Definition:

define heizung_Sammler_Stellventile readingsGroup <Name>,<Modus>,<Wunschtemperatur>,<Ventilstellung> <hr> type=HeatingThermostat:mode,desiredTemperature,valveposition <hr> heizung_Sammler_Stellventile:<Max.&nbsp;Ventilstellung>,<>,<>,$max(:3)@ventilmax

attr heizung_Sammler_Stellventile userattr event-on-change-reading
attr heizung_Sammler_Stellventile alias Heizung Stellventile
attr heizung_Sammler_Stellventile alwaysTrigger 2
attr heizung_Sammler_Stellventile event-on-change-reading .*
attr heizung_Sammler_Stellventile nameStyle style="font-weight: bold;;"
attr heizung_Sammler_Stellventile valueFormat { desiredTemperature => "%.1f °C", valveposition => "%i %", ventilmax => "%i %" }
attr heizung_Sammler_Stellventile valueStyle { desiredTemperature => 'style="text-align:right"', valveposition => 'style="text-align:right"', ventilmax => 'style="text-align:right"' }

Damit werden mir alle Max Heizungsthermostate mit ihren Ventilstellungen angezeigt.
Ziel ist, die maximale Ventilstellung zu ermitteln, damit ich danach meine Heizungsanlage einregeln kann (eine Bedarfssteuerung).

Früher wurde das Ventilmax-Reading stets bei Änderung irgendeiner Ventilstellung aktualisiert. Mittlerweile nur noch, wenn die Readingsgroup selbst angezeigt wird.
Das ist natürlich blöd, da deswegen heute Nacht die Heizungsanlage aus geblieben ist :(

Kann ich da irgendwas machen, bzw. habe ich etwas fehlerhaft bezogen auf die aktuelle Version eingestellt?
Danke schon mal im Vorraus...

Grüße
Reiner

justme1968

@Peedy2495: zeig mal bitte einen vorher/nacher screenshot

@Reinerlein: ich denke ich habe das problem behoben.

die ursache war das direkt nach einem fhem neu start fhemweb noch keine seite ausgeliefert hatte und deshalb eine interne variable noch nicht gesetzt wurde. um einen die entsprechende perl meldung im log zu vermeiden habe ich die komplette initialisierung übersprungen. das hat dann leider auch die readings und events unterdrückt.

ab morgen im update.

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

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

Peedy2495

Hallo & danke das du dir das mal anschauen willst ...

also bevor ich etwas einstellen will, ist nach dem Ersten laden der Seite alles ok ...

danach ist, wie schon erwähnt, der html-Code drin.
Was ich jedoch nun gesehen habe ist, dass manchmal kurz der neue Wert angezeigt wird, jedoch danach der html-Code hinein geschrieben wird.

beim öffnen mit dem enthaltenen html-Code im Anzeigefeld sind auch alle Slider auf "0"

Ich hoffe, es hilft bei der Suche ...


Bis bald ... Peedy