FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Xaser am 30 Dezember 2015, 13:19:04

Titel: ReadingsGroup desiredTemperature auto???
Beitrag von: Xaser am 30 Dezember 2015, 13:19:04
Hallo,

ich habe ein kleines Problem mit den ReadingsGroup.... Ich habe mir ein ReadingsGroup für meine Heizungssteuerung gebastelt (aus dem WIKI geklaut). Da ich meine Heizungsthermostate nur über "set .... desiredTemperature auto xx" steuern möchte, bekomme ich jetzt ein kleines Problem. Der Befehl für die commands passt irgendwie nicht.
Es funktioniert:
'heatingInfo.sollsetz'=>'desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0'

Es funktionert nicht:
'heatingInfo.sollsetz'=>'set $Device desiredTemperature auto:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0'

Wie bekomme ich es hin, das ich eine Auswahlliste in der readingsgroup habe und dort die einstellbare Temperatur immer mit "desiredTemperature auto" gesendet wird?


Vielleicht kannst du mir ja noch hierbei helfen:

http://forum.fhem.de/index.php/topic,46366.0.html (http://forum.fhem.de/index.php/topic,46366.0.html)
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: CoolTux am 30 Dezember 2015, 13:31:24
Mach mal ein list auf die Readingsgroup.



Grüße
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: Xaser am 30 Dezember 2015, 13:40:11
Internals:
   DEF        <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Ventil>,<Modus>,<Bat>,<RSSI>,<LF>
Wandthermostat_Wohnzimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Wohnzimmer","temperature","")}>,<>,mode,battery,RSSI,<{ReadingsVal("Temperatur_Wohnzimmer","humidity","")}>
Thermostat_Wohnzimmer1:desiredTemperature,<>,<>,valveposition,mode,battery,RSSI
Thermostat_Wohnzimmer2:desiredTemperature,<>,<>,valveposition,mode,battery,RSSI
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Kueche:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Kueche","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Kueche","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Schlafzimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Schlafzimmer","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Schlafzimmer","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Bad:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Bad","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Bad","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Arbeitszimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Arbeitszimmer","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Arbeitszimmer","humidity","")}>
   NAME       heatingInfo
   NR         387
   NTFY_ORDER 50-heatingInfo
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     Thermostat_Arbeitszimmer 1
     Thermostat_Bad 1
     Thermostat_Kueche 1
     Thermostat_Schlafzimmer 1
     Thermostat_Wohnzimmer1 1
     Thermostat_Wohnzimmer2 1
     Wandthermostat_Wohnzimmer 1
   Content2:
   DEVICES:
     ARRAY(0x3c94378)
     ARRAY(0x3bfc930)
     ARRAY(0x3ec52c8)
     ARRAY(0x3c87860)
     ARRAY(0x380dc98)
     ARRAY(0x25cd3b0)
     ARRAY(0x3960058)
     ARRAY(0x3c92370)
     ARRAY(0x3c940f0)
     ARRAY(0x3bdcf58)
     ARRAY(0x3eb45f0)
     ARRAY(0x3e9b338)
   Fhem:
     lastDefChange 22
     last_update 1451479161.35502
   Helper:
     DEF
     Commands:
       heatingInfo.sollsetz desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0
       mode.auto  set %DEVICE desiredTemperature manual
       mode.manual set %DEVICE desiredTemperature auto
     Positions:
       Thermostat_Arbeitszimmer.RSSI 12:7
       Thermostat_Arbeitszimmer.battery 12:6
       Thermostat_Arbeitszimmer.desiredTemperature 12:1
       Thermostat_Arbeitszimmer.mode 12:5
       Thermostat_Arbeitszimmer.valveposition 12:4
       Thermostat_Bad.RSSI 10:7
       Thermostat_Bad.battery 10:6
       Thermostat_Bad.desiredTemperature 10:1
       Thermostat_Bad.mode 10:5
       Thermostat_Bad.valveposition 10:4
       Thermostat_Kueche.RSSI 6:7
       Thermostat_Kueche.battery 6:6
       Thermostat_Kueche.desiredTemperature 6:1
       Thermostat_Kueche.mode 6:5
       Thermostat_Kueche.valveposition 6:4
       Thermostat_Schlafzimmer.RSSI 8:7
       Thermostat_Schlafzimmer.battery 8:6
       Thermostat_Schlafzimmer.desiredTemperature 8:1
       Thermostat_Schlafzimmer.mode 8:5
       Thermostat_Schlafzimmer.valveposition 8:4
       Thermostat_Wohnzimmer1.RSSI 3:7
       Thermostat_Wohnzimmer1.battery 3:6
       Thermostat_Wohnzimmer1.desiredTemperature 3:1
       Thermostat_Wohnzimmer1.mode 3:5
       Thermostat_Wohnzimmer1.valveposition 3:4
       Thermostat_Wohnzimmer2.RSSI 4:7
       Thermostat_Wohnzimmer2.battery 4:6
       Thermostat_Wohnzimmer2.desiredTemperature 4:1
       Thermostat_Wohnzimmer2.mode 4:5
       Thermostat_Wohnzimmer2.valveposition 4:4
       Wandthermostat_Wohnzimmer.RSSI 2:7
       Wandthermostat_Wohnzimmer.battery 2:6
       Wandthermostat_Wohnzimmer.desiredTemperature 2:1
       Wandthermostat_Wohnzimmer.mode 2:5
     Values:
       formated:

         ARRAY(0x37a9dc8)


         ARRAY(0x3bfbb08)
         ARRAY(0x3963850)
         ARRAY(0x395d200)
         ARRAY(0x3c2d3e0)
       orig:

         ARRAY(0x3ca8518)


         ARRAY(0x25cdd70)
         ARRAY(0x25cd8a8)
         ARRAY(0x3b2ec00)
         ARRAY(0x3c0ea98)
       prefixsuffix:

         ARRAY(0x3be9b78)


         ARRAY(0x3c824a8)
         ARRAY(0x3c8fc98)
         ARRAY(0x35057c8)
         ARRAY(0x3c8f218)
Attributes:
   commands   {
'heatingInfo.sollsetz'=>'desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0',
"mode.manual"=>"set %DEVICE desiredTemperature auto","mode.auto"=>"set %DEVICE desiredTemperature manual",
}
   room       30_Heizung
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: CoolTux am 30 Dezember 2015, 13:47:34
Ich verstehe ehrlich gesagt nicht wieso Du so ein der brauchst? Ist der Thermostat im Automodus und Du schlatest eine neue Temperatur, geht dann der Thermostat dadurch in den manual Modus?
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: Xaser am 30 Dezember 2015, 13:55:50
Richtig. Wenn ich die Temperatur einstelle, springt das Thermostat auf manual. Wenn ich aber "desiredTemperature auto" sende, ändert sich die Temperatur und springt beim nächsten Schaltpunkt im Wochenprofil wieder zurück.
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: CoolTux am 30 Dezember 2015, 14:28:19
An ok. Schade ich dachte es geht anders. Aber mit dem set bla bla geht es glaube so nicht. Müssen wir mal schauen ob da jemand ne Idee hat. Am besten André, der ist der Author des Modules glaube.
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: rippi46 am 12 Januar 2016, 10:07:39
Hallo Xaser,

wollt schon vor längerer Zeit auch das Beispiel aus der readingsGroup-Wiki umsetzen. Da ich aber hauptsächlich MAX-Thermostate im Einsatz habe, bin ich auf die gleichen Problem gestoßen, das beim ändern der desiredTemperature sich der Mode von Auto auf Manual änderte.
Falls du noch keine Lösung hast, kann ich Dir meine Lösung vorstellen.

Ich habe für jeden Thermostaten ein Dummy und ein Notify erstellt.
hier ein Beispiel
define MD_MAX_0775ef dummy
attr MD_MAX_0775ef alias Büro
attr MD_MAX_0775ef room Demo
attr MD_MAX_0775ef setList state:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0
attr MD_MAX_0775ef webCmd state

define MDN_MAX_0775ef notify MD_MAX_0775ef.* {\
  my $valtemp = "$EVENT";;\
  my $device = "MAX_0775ef";;\
  my $cmd = 'set '.$device.' desiredTemperature auto '.$valtemp;;\
  fhem($cmd);;\
}


Anschließend habe ich in der readingsGroup nicht das MAX-Device angegeben sondern den MAXDummy. und die Werte vom DEVICE über Reading@Device eingebunden.
Auch gibt es bei MAX keine vernünftige Umschaltung zwischen auto und manual.

Ich habe in meine readingsGroup immer ein DEVICE bei dem sich der Mode verändert sobald man die Temperatur verstellt und ein DEVICE bei dem der Mode erhalten bleibt.

redingsGroup
define heatingInfo readingsGroup <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Regler>,<Modus>,<Lock>,<Bat>,<RSSI>,<Luftfeuchtigkeit>,<Fenster>\
MAX_07dc3e:desiredTemperature,<sollsetzmax>,temperature,<>,mode,<>,battery,RSSI,humidity@CUL_TCM97001_170,state@MAX_0499fc\
HM_3F6484_Clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3F6484,batteryLevel@HM_3F6484,+cul868_RSSI@HM_3F6484,<>,<>\
MAX_07794a:desiredTemperature,<sollsetzmax>,temperature,valveposition,mode,<>,battery,RSSI,<>,<>\
MD_MAX_07794a:desiredTemperature@MAX_07794a,<sollsetzmax2>,temperature@MAX_07794a,valveposition@MAX_07794a,mode@MAX_07794a,<>,battery@MAX_07794a,RSSI@MAX_07794a,<>,<>\
MAX_0775ef:desiredTemperature,<sollsetzmax>,temperature,valveposition,mode,<>,battery,RSSI@MAX_0775ef,humidity@CUL_TCM97001_150,<>\
MD_MAX_0775ef:desiredTemperature@MAX_0775ef,<sollsetzmax2>,temperature@MAX_0775ef,valveposition@MAX_0775ef,mode@MAX_0775ef,<>,battery@MAX_0775ef,RSSI@MAX_0775ef,humidity@CUL_TCM97001_150,<>

attr heatingInfo cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:16px"'}

attr heatingInfo commands {'heatingInfo.sollsetz'=>'desired-temp:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0',\
"controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual",\
"R-globalBtnLock.on"=>"set %DEVICE regSet globalBtnLock off",\
"R-globalBtnLock.off"=>"set %DEVICE regSet globalBtnLock on",\
'heatingInfo.sollsetzmax'=>'desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0',\
'heatingInfo.sollsetzmax2'=>'state:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0',\
"mode.manual"=>"set %DEVICE desiredTemperature auto","mode.auto"=>"set %DEVICE desiredTemperature %desiredTemperature"}

attr heatingInfo mapping {HM_3F6484_Clima=>"Flurheizung",\
MAX_07794a=>"Kind1_Hand",\
MD_MAX_07794a=>"Kind1_Auto",\
MAX_0775ef=>"Büro_Hand",\
MD_MAX_0775ef=>"Büro_Auto"}

attr heatingInfo room Demo

attr heatingInfo valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10}\
elsif($READING eq "valveposition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10}\
elsif($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100}\
elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25}\
else{$VALUE=0}}}

attr heatingInfo valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF',\
'controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02',\
'mode.manual' => 'sani_heating_manual@795CFF',\
'mode.auto' => 'sani_heating_automatic@FFC13A', 'mode.boost' => 'sani_heating_boost@FB0C02',\
'humidity'=>'humidity@6FD9FB', 'R-globalBtnLock.on'=>'secur_locked@F7301D',\
'state.closed' => 'fts_window_1w@lightgreen', 'state.opened' => 'fts_window_1w_open@red',\
'R-globalBtnLock.off'=>'secur_open@0CFB0C','ValvePosition.0' => 'sani_heating_level_0@002AE0',\
'ValvePosition.10' => 'sani_heating_level_10@F8D53D','ValvePosition.20' => 'sani_heating_level_20@FF9341',\
'ValvePosition.30' => 'sani_heating_level_30@F17F3F','ValvePosition.40' => 'sani_heating_level_40@E46C3C',\
'ValvePosition.50' => 'sani_heating_level_50@DE3B3A','ValvePosition.60' => 'sani_heating_level_60@A30D2D',\
'ValvePosition.70' => 'sani_heating_level_70@B40A23','ValvePosition.80' => 'sani_heating_level_80@C40619',\
'ValvePosition.90' => 'sani_heating_level_90@D4030F','ValvePosition.100' => 'sani_heating_level_100@E50005',\
'valveposition.0' => 'sani_heating_level_0@002AE0',\
'valveposition.10' => 'sani_heating_level_10@F8D53D','valveposition.20' => 'sani_heating_level_20@FF9341',\
'valveposition.30' => 'sani_heating_level_30@F17F3F','valveposition.40' => 'sani_heating_level_40@E46C3C',\
'valveposition.50' => 'sani_heating_level_50@DE3B3A','valveposition.60' => 'sani_heating_level_60@A30D2D',\
'valveposition.70' => 'sani_heating_level_70@B40A23','valveposition.80' => 'sani_heating_level_80@C40619',\
'valveposition.90' => 'sani_heating_level_90@D4030F','valveposition.100' => 'sani_heating_level_100@E50005',\
'batteryLevel.100'=>'measure_battery_100@0CFB0C','batteryLevel.75'=>'measure_battery_75@42BC0A',\
'batteryLevel.50'=>'measure_battery_50@F5FF10','batteryLevel.25'=>'measure_battery_25@FB5909',\
'batteryLevel.0'=>'measure_battery_0@E50005',\
'battery.ok'=>'measure_battery_100@0CFB0C','battery.low'=>'measure_battery_0@E50005',\
'controlMode.set_boost' => 'hourglass',\
'controlMode.set_auto' => 'hourglass','controlMode.set_manual' => 'hourglass',\
'mode.set_boost' => 'hourglass',\
'mode.set_auto' => 'hourglass','mode.set_manual' => 'hourglass',\
'R-globalBtnLock.set_on' => 'hourglass','R-globalBtnLock.set_off' => 'hourglass'}

attr heatingInfo valueStyle {if($READING eq "temperature")\
{my $t=$VALUE;;;;my $d=ReadingsVal($DEVICE,'desiredTemperature',0);;;;\
if($t-$d>=1){'style="color:rgb(251,63,11);;;;"'}\
elsif($t-$d<=-1){'style="color:rgb(79,58,251);;;;"'}\
else{'style="color:rgb(12,251,12);;;;"'}} \
elsif($READING eq "measured-temp")\
{my $t=$VALUE;;;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;;;\
if($t-$d>=1){'style="color:rgb(251,63,11);;;;"'}\
elsif($t-$d<=-1){'style="color:rgb(79,58,251);;;;"'}\
else{'style="color:rgb(12,251,12);;;;"'}}}
attr heatingInfo valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C",\
"desiredTemperature"=>" °C","temperature"=>" °C",\
"ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)",\
"valveposition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)",\
"humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % RH",\
"batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}


Und so sollte es dann aussehen


Gruß rippi
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: JoeALLb am 12 Januar 2016, 14:50:49
Das Device könntest Du auch mit einem Regexp ermitteln (in deinem Fall das "MDN_" vorne abschneiden) und somit würde ein notify für alle thermostate ausreichen.... ;-)
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: rippi46 am 12 Januar 2016, 15:28:24
Hi JoeAllb,

hab mich damit leider noch nicht beschäftigt.
Wie würde das dann in meinem Fall aussehen.

Gruß Rippi
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: JoeALLb am 12 Januar 2016, 16:34:01
define MDN_MAX_ALL notify MD_MAX_.* {\
  my $newname = $NAME =~ s/MDN_//r ;;\
  my $cmd = 'set '.$newname.' desiredTemperature auto '.$EVENT;;\
  fhem($cmd);;\
}


In etwa so, ist aber ungetestet!!
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: The-Holgi am 12 Januar 2016, 20:02:06
Hallo,
ich habe bei meinen Max HT's das attribut keep auto gesetzt.


Gruß Holgi
Titel: Antw:ReadingsGroup desiredTemperature auto???
Beitrag von: rippi46 am 13 Januar 2016, 16:22:30
Hallo,

habe mein Define der readingsGroup nach dem Tip von JoeALLb noch etwas angepasst.

Mein notify für die MAX-Thermostate:
define MDN_MAX_ALL notify MD_MAX_.* {\
  my $newname = $NAME =~ s/MD_//r ;;\
  my $cmd = 'set '.$newname.' desiredTemperature auto '.$EVENT;;\
  fhem($cmd);;\
}
attr MDN_MAX_ALL room Demo


Mein define der readingsGroup:
define heatingInfo readingsGroup <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Regler>,<Modus>,<Lock>,<Bat>,<RSSI>,<Luftfeuchtigkeit>,<Fenster>\
HM_3F6484_Clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3F6484,batteryLevel@HM_3F6484,+cul868_RSSI@HM_3F6484,<>,<>\
MD_MAX_......:desiredTemperature@{($DEVICE=~s/MD_//r)},<sollsetzmax2>,temperature@{($DEVICE=~s/MD_//r)},valveposition@{($DEVICE=~s/MD_//r)},mode@{($DEVICE=~s/MD_//r)},<>,battery@{($DEVICE=~s/MD_//r)},RSSI@{($DEVICE=~s/MD_//r)},humidity@{('CUL_TCM97001_'.$DEVICE=~s/MD_//r)},state@{('FD_'.$DEVICE=~s/MD_//r)}


der Rest ist gleich geblieben

Gruß Rippi