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)
Mach mal ein list auf die Readingsgroup.
Grüße
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
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?
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.
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.
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
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.... ;-)
Hi JoeAllb,
hab mich damit leider noch nicht beschäftigt.
Wie würde das dann in meinem Fall aussehen.
Gruß Rippi
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!!
Hallo,
ich habe bei meinen Max HT's das attribut keep auto gesetzt.
Gruß Holgi
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