Heizung IST/SOLL in einer Zeile

Begonnen von rogerknop, 04 Februar 2018, 16:46:51

Vorheriges Thema - Nächstes Thema

rogerknop

Hallo,
es gibt einige Themen zur Darstellung der Heizungskontrolle mit KNX, aber leider schaffe ich keine einfache Darstellung.
Ich habe 2 KNX Adressen für Ist und Soll Temperatur.
Diese werden beide auch korrekt angezeigt.
Nun habe ich schon Screenshots gesehen, wie man das Ganze schöner in einer Zeile darstellen kann.
Mein Favorit wäre:
Name    /   Ist Temperatur nur Anzeige    /   Soll Temperatur Eingabefeld mit kleinem Pfeil hoch und runter (um die Temperatur in 0,5er Schritten zu verändern)
Gibt es hierzu keine einfache Lösung?
Meine derzeitige cfg sieht so aus:

define Arbeit.Temp.Soll KNX 4/1/0:dpt9.001
attr Arbeit.Temp.Soll IODev KNX
attr Arbeit.Temp.Soll group Temperatur Arbeitszimmer
attr Arbeit.Temp.Soll icon temp_temperature
attr Arbeit.Temp.Soll room Arbeitszimmer,Temperatur
attr Arbeit.Temp.Soll webCmd :

define Arbeit.Temp KNX 4/2/0:dpt9.001
attr Arbeit.Temp IODev KNX
attr Arbeit.Temp group Temperatur Arbeitszimmer
attr Arbeit.Temp icon temp_temperature
attr Arbeit.Temp room Arbeitszimmer,Temperatur
attr Arbeit.Temp webCmd :


Ich wäre für Tipps sehr dankbar!
Grüße, Roger

Andi291

Servus!

Geht beispielsweise so:

define rtr_eg_gaeste KNX 8/1/25:dpt9.001:sollwertv 8/1/24:dpt5:status 8/1/26:dpt1:heizbetrieb 8/1/27:dpt5.001:stellgrroh 8/1/28:dpt1:stellgr 8/1/29:dpt9.001:solltemp 8/1/30:dpt9.001:isttemp
attr rtr_eg_gaeste IODev knxd
attr rtr_eg_gaeste group Raumtemperaturregelung
attr rtr_eg_gaeste room Dummies
attr rtr_eg_gaeste stateCmd {$state = sprintf("%s", ReadingsVal($name,"sollwertv-get","undef"));;}
attr rtr_eg_gaeste webCmd :

define rtr_grp_eg_gaeste readingsGroup rtr_eg_gaeste:.*[status|sollwertv|solltemp|isttemp|stellgrroh|stellgr]-get
attr rtr_grp_eg_gaeste commands {'sollwertv-get' => 'value:slider,-2.4,0.2,2.4,1'}
attr rtr_grp_eg_gaeste group Raumtemperaturregelung
attr rtr_grp_eg_gaeste mapping {\
'status-get' => 'Status', 'sollwertv-get' => 'Sollwertverschiebung', 'solltemp-get' => 'Solltemperatur',\
'isttemp-get' => 'Isttemperatur', 'stellgrroh-get' => 'Stellgr&oumlsse', 'stellgr-get' => 'Status Aktor'\
}
attr rtr_grp_eg_gaeste noheading 1
attr rtr_grp_eg_gaeste nolinks 1
attr rtr_grp_eg_gaeste notime 1
attr rtr_grp_eg_gaeste room G&aumlstezimmer
attr rtr_grp_eg_gaeste valueFormat {\
  if ($READING =~ /status-get/) {\
      my $tempVal = $VALUE;;\
      if ($VALUE & 0x20) {$tempVal = 'heizen';;} else {$tempVal = 'kuehlen'};;\
      if ($VALUE & 0x1) {$tempVal = $tempVal . '-komfort';;}\
      elsif ($VALUE & 0x2) {$tempVal = $tempVal . '-standby';;}\
      elsif ($VALUE & 0x4) {$tempVal = $tempVal . '-nacht';;}\
      return $tempVal;;\
  } else {return $VALUE;;}\
}


rogerknop

Hallo,
ja das hatte ich auch schon gefunden.
Aber ich habe bei mir nur 2 Adressen: Soll- und Ist-Temperatur.
Ich bekomme das mit den anderen Adressen nicht gebacken.
Benötige ich die unbedingt?
Ich denke mir Ist- und Soll- Temperatur sollten doch reichen?
Ist ReadOnly für den aktuellen Stand und Soll ist änderbar auf den gewünschten Wert.
Habe ich hier irgendwo noch einen Denkfehler?
Danke & Grüße,
  Roger

Andi291

Naja, natürlich braucht es das nicht alles...Must halt ausmisten. War ein Beispiel aus dem "Leben".

define rtr_eg_gaeste KNX 8/1/25:dpt9.001:sollwertv 8/1/24:dpt5:status
attr rtr_eg_gaeste stateCmd {$state = sprintf("%s", ReadingsVal($name,"sollwertv-get","undef"));;}
attr rtr_eg_gaeste webCmd :

define rtr_grp_eg_gaeste readingsGroup rtr_eg_gaeste:.*[status|sollwertv]-get


rogerknop

Hallo,
ich habe es mal ausgedünnt, aber es wird nun nix mehr angezeigt.
Hier meine aktuelle cfg:

define rtr_eg_gaeste KNX 4/1/0:dpt9.001:sollwertv 4/2/0:dpt5:status 4/2/0:dpt9.001:isttemp
attr rtr_eg_gaeste IODev KNX
attr rtr_eg_gaeste group Raumtemperaturregelung
attr rtr_eg_gaeste room Dummies
attr rtr_eg_gaeste stateCmd {$state = sprintf("%s", ReadingsVal($name,"sollwertv-get","undef"));;}
attr rtr_eg_gaeste webCmd :

define rtr_grp_eg_gaeste readingsGroup rtr_eg_gaeste:.*[status|sollwertv]-get
attr rtr_grp_eg_gaeste commands {'sollwertv-get' => 'value:slider,-2.4,0.2,2.4,1'}
attr rtr_grp_eg_gaeste group Raumtemperaturregelung
attr rtr_grp_eg_gaeste mapping {\
'status-get' => 'Status', 'sollwertv-get' => 'Sollwert', 'isttemp-get' => 'Istwert'\
}
attr rtr_grp_eg_gaeste noheading 1
attr rtr_grp_eg_gaeste nolinks 1
attr rtr_grp_eg_gaeste notime 1
attr rtr_grp_eg_gaeste room Arbeitszimmer,Temperatur
attr rtr_grp_eg_gaeste valueFormat {\
  if ($READING =~ /status-get/) {\
      my $tempVal = $VALUE;;\
      if ($VALUE & 0x20) {$tempVal = 'heizen';;} else {$tempVal = 'kuehlen'};;\
      if ($VALUE & 0x1) {$tempVal = $tempVal . '-komfort';;}\
      elsif ($VALUE & 0x2) {$tempVal = $tempVal . '-standby';;}\
      elsif ($VALUE & 0x4) {$tempVal = $tempVal . '-nacht';;}\
      return $tempVal;;\
  } else {return $VALUE;;}\
}


Es wird dann nur angezeigt Status  "heizen-nacht"
Sorry, aber ich raff es immer noch nicht.

Wie oft wird denn das valueFormat aufgerufen?
Irgendwie möchte ich ja 3 Informationen haben:
1. Ist-Temperatur
2. Soll-Temperatur
3. UI-Control zum Ändern der Soll-Temperatur

Für das Ändern der Soll-Temperatur benötige ich ja keine Verschiebung, sondern den neuen aktuellen Wert.
Oder ist der Slider die Verschiebung auf den neuen aktuellen Wert?
Wo bzw. wie wird er geschrieben.

Sorry, aber ich bin hier in Sachen attr Hardcore Development noch ein Anfänger.
Ich versuche immer alles in meine 99_myUtils auszulagern, damit ich in dem mir bekannt Perl Umfeld bin :-)

Danke & Grüße, Roger

rogerknop

Hallo,

leider komme ich hier nicht weiter.  :-\

Im Wiki von readingsGroup habe ich genau meinen Anwendungsfall gefunden.
Hier das Bild: https://wiki.fhem.de/w/images/8/8c/RgHeizung2.png
Hier das Wiki: https://wiki.fhem.de/wiki/ReadingsGroup
Nur ohne Act, ohne Window und ohne Batterie. Aber mit meinen KNX Adressen.
Hier mein aktueller Stand (Arbeit.Temp und Arbeit.Temp.Soll sind hierbei meine beiden KNX Heizungsadressen für Ist und Soll):

define Heizungswerte2 readingsGroup <%sani_heating>,< >,<Ist>,<Soll> Arbeit.Temp:getG1,Arbeit.Temp.Soll:getG1,<{HeizungUpDown($DEVICE,"up")}@soll>,desired-new,<{HeizungUpDown($DEVICE,"down")}@soll>
attr Heizungswerte2 room Temperatur
#attr Heizungswerte2 nameStyle style="color:yellow;font-weight:bold" - wenn einkommentiert kommt beim Speichern ein Fehler
#attr Heizungswerte2 valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'window.closed' => 'fts_window_1w@lightgreen', 'window.open' => 'fts_window_1w_open@red'}
attr Heizungswerte2 valueStyle {($VALUE eq "00")?'style="visibility:hidden"':}


Kann mir jemand helfen, wie ich die Wiki Lösung mit KNX umsetzen kann?

Danke & Grüße, Roger

docm

Hallo,
ich löse so etwas mit WidgetOverride. Finde ich einfacher als ReadingsGroup.
Siehe auch meinen Beitrag im Forum hier: https://forum.fhem.de/index.php/topic,82821.0.html

Eine Anzeige in Textform ist auch über das Attribut stateFormat möglich. -> commandRef

Viele Grüße
Andreas

visionsurfer

Moin Roger,

hast du bei dir eigentlich alles lösen können. Ich möchte gerade endlich auch mal die Steuerung meiner Heizung über KNX in Fhem einbauen.

Könntest du deine Lösung mal posten ?

Grüße,
Visionsurfer

rogerknop

Hallo Visionsurfer,

ich habe alle KNX Heizungen so definiert:

define Kueche_Temp_Soll KNX 4/1/2:dpt9.001
setuuid Kueche_Temp_Soll 5c7ab74f-f33f-d8f3-51f8-8c740dc92c77da63
attr Kueche_Temp_Soll IODev KNX
define Kueche_Temp_Ist KNX 4/2/2:dpt9.001
setuuid Kueche_Temp_Ist 5c7ab74f-f33f-d8f3-0283-c83179c5cb8ca57d
attr Kueche_Temp_Ist IODev KNX
attr Kueche_Temp_Ist alexaName Küchenthermometer
attr Kueche_Temp_Ist genericDeviceType thermometer
attr Kueche_Temp_Ist homebridgeMapping CurrentTemperature:reading=state
attr Kueche_Temp_Ist room Alexa
define Kueche_Temp KNX 4/1/2:dpt9.001 4/2/2:dpt9.001
setuuid Kueche_Temp 5c7ab74f-f33f-d8f3-077b-811fd4bad2909647
attr Kueche_Temp IODev KNX
attr Kueche_Temp alias Küche Temperatur
attr Kueche_Temp group Küche,Heizungswerte KNX
attr Kueche_Temp icon temp_temperature
attr Kueche_Temp room EG,Temperatur
attr Kueche_Temp sortby 901
attr Kueche_Temp stateFormat {'Ist: '.ReadingsVal("Kueche_Temp_Ist","getG1","").' / Soll: '.ReadingsVal("Kueche_Temp_Soll","getG1","")}
attr Kueche_Temp webCmd :


Im Anhang ein Bild, wie es aussieht.

Ich hoffe, das hilft dir weiter.

Grüße, Roger

visionsurfer

Hallo Roger,

vielen Dank. Das hilft mir sehr weiter.

Weil ich habe ja die ganzen Gruppenadressen und nun bin ich am überlegen wie ich das alles realisieren kann.
Dein Code hilft mir sehr, weil ich davon viel ableiten kann.

ABER....

Das ist ja quasi nur die Anzeige. Wie machst du die Steuerung ? Kannst du in FHEM auch die Soll Wert neu definieren ? Also kannst du irgendwo einstellen, dass du jetzt gerne 22 Grad hättest ? Ich habe in anderen Threads gesehen, dass manche das mit Slider und Co realiseren, aber dann sehr kompliziert mit Ready Proxys usw. Da hab ich keine Ahnung von.

Lässt du dir die Werte nur Anzeigen oder steuerst du auch was über FHEM ?

Grüße,
Visionsurfer

JoeALLb

Kurze Idee: Ich würde nicht für jede Gruppenadresse ein eigenes Device in FHEM erzeugen, sondern zusammengehörige GADs zu einem Heizkreis zusammenfassen,
da es (mir) sonst zu unübersichtlich wird...
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

visionsurfer

Hmmmm, ok. Aber was heißt für jede Gruppenadresse ?
In der Küche habe ich mehrere Gruppenadressen für soll, ist, Ventil, Rückmeldung und sonst noch was.
Das ist doch ein Heizkreislauf? Klar, würde ich für diese Gruppenadressen nicht immer eigenes device anlegen, aber grundsätzlich würde ich es so wie @rogerknop machen. Nur weiß ich nicht wie ich dann die soll Temperatur einstellen kann.

rogerknop

Hallo,
ich zeige die Werte nur an und ändere die Werte nicht.
@JoeALLb: Das hört sich gut an. Hast Du dafür ein Beispiel?
Grüße, Roger

visionsurfer

Hi,

ah ok. Schade. Weil grundsätzlich gefällt mir deine Lösung gut, bzw. ich kapiere was da steht und die Zusammenhänge.

Nur hätte ich gerne auch am liebsten daneben eine + / - Taste um die Werte im 0,5er Schritt zu ändern, bzw. den Sollwert eintragen zu können.

Grüße,
Visionsurfer

JoeALLb

#14
Du bist in KNX, dort ist es eher üblich, eine eigene Gruppenadresse für (+0.5°, -0.5°) zu haben, also "relatives dimmen", anstatt den wert komplett zu setzen.
(also genau die +-- taste!
Beides geht, wie genau es sich verhält, hängt auch von deinem aktor ab.

Mein Beispiel im anderen Thread (https://forum.fhem.de/index.php/topic,99856.msg932507.html#msg932507)
zeigt das (die letzten 2 spalten, also + und -). Damit kann ich die Raumtemperatur relativ erhöhen/absenken.

Klar geht das andere auch, kam mir dann aber unpraktisch vor. (funktioniert aber in dem Beispiel noch als drittletzte spalte, temp-comfort.


das hier als beispiel sollte helfen.

defmod XXX KNX 1/1/17:dpt9.001:heizkr-measured:nosuffix\
5/1/67:dpt9.001:heizkr-return:get:nosuffix\
5/1/37:dpt9.001:heizkr-desired:nosuffix\
5/1/107:dpt9.001:heizkr-comfort:nosuffix\
\
5/1/47:dpt5.001:ventil:nosuffix\
5/1/57:dpt1.001:zwang-open:set:nosuffix\
5/1/87:dpt1.001:sperren-close:nosuffix\
\
5/1/147:dpt1.001:sollwertverschiebung:nosuffix\
\
5/1/27:dpt20.102:heizModus:nosuffix\
\
5/1/77:dpt9.001:heizkr-estrich:get:nosuffix\
\
5/1/247:dpt16:Diagnose:get:nosuffix
attr XXX eventMap /sperren-close on:heizkr-desired zu/\
zwang-open on:heizkr-desired auf/\
\
sollwertverschiebung off:sollwertverschiebung.-/\
sollwertverschiebung off:sollwertverschiebung..*/\
sollwertverschiebung on:sollwertverschiebung/
attr XXX webCmd sollwertverschiebung:heizkr-comfort
attr XXX widgetOverride widgetOverride:textField-long\
stateCmd:textField-long\
eventMap:textField-longputCmd:textField-long sollwertverschiebung:uzsuSelect,+,- heizkr-comfort:uzsuSelectRadio,21,22,23
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