ReadingsGroup desiredTemperature auto???

Begonnen von Xaser, 30 Dezember 2015, 13:19:04

Vorheriges Thema - Nächstes Thema

Xaser

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

CoolTux

Mach mal ein list auf die Readingsgroup.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Xaser

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

CoolTux

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?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Xaser

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.

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rippi46

#6
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
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

JoeALLb

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.... ;-)
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

rippi46

Hi JoeAllb,

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

Gruß Rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

JoeALLb

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!!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

The-Holgi

Hallo,
ich habe bei meinen Max HT's das attribut keep auto gesetzt.


Gruß Holgi
Raspberry Pi 5

rippi46

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
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa