Thermostat Widget und Structure

Begonnen von Bootscreen, 09 Februar 2016, 10:53:58

Vorheriges Thema - Nächstes Thema

Bootscreen

Moin,

ich hab mal ne Frage: Wie bekomme ich es hin das mir das Thermostat Widget die Temperatur und Position meiner Structure anzeigt?
Ich hab nämlich bei Räumen mit 2 HM Thermostaten ein Structure erstellt damit beide gleichzeitig geschaltet werden. Schalten kann ich diese auch über das thermostat widget. aber mir werden keine ist, soll bzw. valve werte angezeigt.

Weiß da jemand Rat?
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

Amenophis86

Also ich habe es bisher geschafft, dass die desired-temp und auch die gemessene Temperatur angezeigt wird. Die Valve lasse ich weg, warum wirst du gleich sehen.

Meine Structure ist wie folgt aufgebaut:


Internals:
   ATTR       room
   DEF        room WZ.Heizung.L_Clima WZ.Heizung.R_Clima AZ.Heizung_Clima EZ.Heizung_Clima
   NAME       WR.Heizung.Alle
   NR         466
   NTFY_ORDER 50-WR.Heizung.Alle
   STATE      T: 22.35 Einstellung: desired-temp 19
   TYPE       structure
   Content:
     AZ.Heizung_Clima 22.0
     EZ.Heizung_Clima 22.0
     WZ.Heizung.L_Clima 22.0
     WZ.Heizung.R_Clima 22.0
   Readings:
     2016-02-11 19:15:45   LastDevice      EZ.Heizung_Clima
     2016-02-11 19:15:45   LastDevice_Abs  EZ.Heizung_Clima
     2016-02-11 19:15:37   Temperatur      22.35
     2016-02-11 19:16:48   desired-temp    19
     2016-02-11 19:16:48   state           desired-temp 19
Attributes:
   alias      Wohnzimmer Heizung
   event-on-change-reading state,measured-temp,desired-temp,ValvePosition
   group      Heizung
   room       S_Wohnraum,Wohnzimmer
   stateFormat T: Temperatur Einstellung: state
   userattr   room_map structexclude
   webCmd     desired-temp


Das Reading Temperatur wirde über ein DOIF erzeugt, welches regelmäßig die Temperatur aller Thermostate zusammen rechnet, durch 4 (Da 4 Thermostate) teilt und dann mittels setreading ins Structure schreibt.

Das Reading disred-temp lasse ich über folgendes notify erstellen:


Internals:
   DEF        WR.Heizung.Alle:desired-temp.* setreading WR.Heizung.Alle desired-temp $EVTPART1
   NAME       WR.Heizung.Desired
   NOTIFYDEV  WR.Heizung.Alle
   NR         530
   NTFY_ORDER 50-WR.Heizung.Desired
   REGEXP     WR.Heizung.Alle:desired-temp.*
   STATE      2016-02-11 19:16:48
   TYPE       notify
   Readings:
     2016-02-11 19:07:59   state           active
Attributes:
   DbLogExclude .*


Das Widget habe ich wie folgt aufgebaut:

<div data-type="thermostat" data-device="WR.Heizung.Alle" data-get="desired-temp" data-temp="Temperatur" data-min="8" class="cell left"></div>

damit holt es sich über "desired-temp" die disred-temp und über "Temperatur" die errechnete Temperatur.


Vielleicht gibt es auch einen eleganteren Weg, aber ich habe erst heute mit der TabletUI angefangen und bisher noch nichts besseres gefunden.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Bootscreen

Hey,

dank dir. Das hat mir als Denkanstoß gefehlt.

ich hba mir jetzt ein Notify zusammengebaut was mir die Readings bei Änderungen der einzelnen Thermostate setzt. controlMode und desired-temp direkt und ValvePosition und measured-temp den Durchschnitt.
Die Namensgebung:
Heizung.Wohnzimmer.1_Clima Thermostat
Heizung.Wohnzimmer.2_Clima Thermostat
Heizung.Wohnzimmer_Clima Structure

Falls es jemand in Zukunft mal braucht, hier der Notify:
Heizung..*.1_Clima:controlMode:.*|Heizung..*.1_Clima:desired-temp:.*|Heizung..*.1_Clima:measured-temp:.*|Heizung..*.1_Clima:ValvePosition:.*|Heizung..*.2_Clima:controlMode:.*|Heizung..*.2_Clima:desired-temp:.*|Heizung..*.2_Clima:measured-temp:.*|Heizung..*.2_Clima:ValvePosition:.* {
my $struktur = $NAME;
$struktur =~ s/.1//;
$struktur =~ s/.2//;
my $value = $EVTPART1;
my $command = $EVTPART0;
$command =~ s/://;
if($command eq "measured-temp" or $command eq "ValvePosition")
{
my $device_1 = $struktur;
my $device_2 = $struktur;
$device_1 =~ s/_Clima/.1_Clima/;
$device_2 =~ s/_Clima/.2_Clima/;
my $value_1 = ReadingsVal($device_1,$command, "0");
my $value_2 = ReadingsVal($device_2,$command, "0");
if($value_1 == 0 and $value_2 == 0)
{
$value = 0;
}
else
{
if($command eq "ValvePosition")
{
$value = sprintf "%.0f",  (($value_1 + $value_2) / 2);
}
else
{
$value = sprintf "%.1f",  (($value_1 + $value_2) / 2);
}
}
}
fhem("setreading $struktur $command $value");
# Log 3, "$NAME: setreading $struktur $command $value";
}
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)