HM-CC-RT-DN Reading Gruppe

Begonnen von TNT0068, 25 August 2014, 13:22:46

Vorheriges Thema - Nächstes Thema

l2r

so, hier der versprochene Code

einmal für die fhem.cfg
define rg_Thermostate readingsGroup <>,<Soll->,<Ist->,<Regler>,<Modus>,<Lock>,<Bat->,<Tages->,<>,<Werktag>,<>,<>,<>,<Samstag>,<>,<>,<>,<Sonntag>,<>,<>,<>,<Wochenplan>\
<>,<Temperatur>,<Temperatur>,<>,<>,<>,<teri>,<Temperatur>,<>,<start>,<>,<ende>,<>,<start>,<>,<ende>,<>,<start>,<>,<ende>,<>,<schreiben>\
.*_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@{getDevice($DEVICE)},battery@{getDevice($DEVICE)},imposible@{$DEVICE},<{getDayTemp($DEVICE)}>,state@d_dayTemp,impossible@{$DEVICE},<{getTime($DEVICE,"R_2_tempListMon","start")}>,state@d_workdayStart,impossible@{$DEVICE},<{getTime($DEVICE,"R_2_tempListMon","end")}>,state@d_workdayEnd,impossible@{$DEVICE},<{getTime($DEVICE,"R_0_tempListSat","start")}>,state@d_saturdayStart,impossible@{$DEVICE},<{getTime($DEVICE,"R_0_tempListSat","end")}>,state@d_saturdayEnd,impossible@{$DEVICE},<{getTime($DEVICE,"R_1_tempListSun","start")}>,state@d_sundayStart,impossible@{$DEVICE},<{getTime($DEVICE,"R_1_tempListSun","end")}>,state@d_sundayEnd,impossible@{$DEVICE},<%system_fhem_update>
attr rg_Thermostate commands { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE',  'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE',  'state' => 'state:',  'rg_Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
attr rg_Thermostate nameStyle style="font-weight:bold"
attr rg_Thermostate sortDevices 1
attr rg_Thermostate valueFormat { 'desired-temp' => "%0.1f &deg;;C", 'measured-temp' => "%0.1f &deg;;C", 'ValvePosition' => "%0.1f %%" }
attr rg_Thermostate 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'}
attr rg_Thermostate 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"' }}

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)}


und die 99_myUtils:
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")};
}
Wissen ist Macht.
Ich weiß nix.
Macht nix.

moemoe

Zitat von: elsi89 am 26 September 2014, 08:20:54
so, hier der versprochene Code

Kannst du da evtl. noch einen Screenshot dazupacken, das macht es immer anschaulicher.

Danke :)

Lukas

bin noch Anfänger,
den Code soweit eingetragen, aber irgendwas fehlt mir. Die einzelnen Werte werden gar nicht dargestellt und die Oberfläche sieht anders aus.
Müsste ich nicht noch etwas nachinstallieren? (s. Screenshot)

l2r

Hast du die aktuelle version installiert?
Ansonsten gib mal Update Check und danach Update ein

Spontan würde ich aber sagen dass du kein device ausliest.
Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Lukas

habe gerade update gemacht, es gab wirklich was neues für die readings, aber das Ergebnis sieht nicht anders aus.
Insgesamt habe ich 9 CC-RT-DN's (im Anhang ist ein Beispiel)
Kann das sein, dass mir zuerst eine Fronted fehlt wie hier:
http://www.fhemwiki.de/wiki/Neues_Charting_Frontend

moemoe

Kein Wunder dass du nichts siehst - zumindest falls du die Config 1:1 übernommen hast:

.*_Clima: – aber du hast kein Device, das auf _Clima endet.

l2r

Hi
Die Readingsgroup laut Code fragt Channel 4 an (*._Clima).
Du hast den umbenannt.
Entweder ergänzt du beim Namen ein "_Clima" (was ich tun würde)
Oder du passt die Definition der readingsgroup an.
Dann musst du das nur so wählen, dass allgemeingültig für alle Geräte ist
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Lukas

autsch!   :-[
nach dem Umbenennen hat's auch geklappt  ;D
Vielen Dank!

olli84

#38
Hallo,

habe gerade auch mal die Version mit Sonntag probiert.

Leider erscheinen bei mri keine drop-down felder - kann mir jemand helfen?

Vielen Dank!
Olli

Edit: Erledigt, einmal die Dummys durchschalten und schon tauchen die drop-downs auf... :)

Edit2: Jemand eine Idee wie ich in die readingsgroup noch den Boost-Button (schnell aufheizen) reinbekomme?

igami

Hier noch einmal eine kompaktere Version:


<>,<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>


Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Roaster

Wow! Gefällt mir gut - bin gerade am Nachbauen. Habe jedoch Max! Heizkörperthermostate.

Werden die Werte in den jeweiligen Thermostaten umgehend geändert, sobald eines dieser Drop-Down Felder geändert wird, oder kann man ein paar der Werte auf einmal verändern und zum Schluß dann gemeinsam an die Thermostate übertragen?

Gruß,
Michael

l2r

das übertragen geschieht erst mit Klick auf Zeitplan schreiben. (da hängt die Funktion setTimeTable($)) dran.

gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

igami

Hallo Michael,

wie Michael schon sagt, werden die Werte erst beim drücken auf 'Wochenplan schreiben', hier als fhem update Icon eingebunden geschrieben. Bei meiner Variante verwende ich aber nur einen Dummy für die Dropdowns alles Devices. Heißt ich kann einen Zeitplan eintragen und dann bei alles Devices die es haben sollen auf schreiben klicken.

Grüße
Igami aka Michael (ganz schön viele hier :D)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

olli84

seit neuestem habe ich mit der bisher super funktionierenden readingsGroup Probleme:

Bitte schaut euch mal die Anhänge an. Ich habe in der letzten Zeit nichts an der readingsGroup geändert.

Was soll das mit dem "Created by potrace 1.8, written by Peter Selinger 2001-2007 "

Die weisse Schrift ist so gewollt. :D

olli84

Jetzt antworte ich mal meinem eigenem Problem:

Den obigen Test habe ich auf der Arbeit gemacht. Dort habe ich einen Internet Explorer.

Hier daheim funktioniert es mit Chrome oder Firefox einwandfrei. Egal ob LAN oder Internet.

Komisch.  8)