[FTUI3] Entwicklung Thermometer/Thermostat

Begonnen von mr_petz, 23 September 2021, 18:17:49

Vorheriges Thema - Nächstes Thema

mr_petz

Hi@all.

Mein Beweggrund ist dieser:
https://forum.fhem.de/index.php/topic,115259.msg1142878.html#msg1142878.
Hier hatte ich schon eine Anfrage wegen RGB-Gradient gestellt. Jetzt möchte ich halt mein View wieder so aussehen lassen.

Ich habe mal auf Grundlage vom Volume3D-Knob, diesen um eine Temperaturanzeige erweitert. Das werde ich noch separieren als eigenes Modul für FTUI3.
Jetzt die Frage: Wer würde am Thermostat mit-/weiterentwickeln?
RGB-Gradient ist schon drin. readonly usw auch.
Ich weiss nicht was alles benötigt wird wegen Thermostatfunktion.
Benutzen werde ich es sonst nur als Thermometeranzeige (die dann readonly ist).
Also wer hat lust mitzumachen?

mfg mr_petz


Edit:
ist hier zu finden https://github.com/mr-petz/ftui/tree/addons

update thermostat.component.js https://raw.githubusercontent.com/mr-petz/ftui/addons/controls_ftui_addons.txt
update thermostat.component.css https://raw.githubusercontent.com/mr-petz/ftui/addons/controls_ftui_addons.txt

yersinia

Auch wenn ich dafür keinen Bedarf habe, muss ich hier mal eins los werden: geiler scheiß! 8)
Der Volume3D-Knob ist cool, einfach gut gemacht. Und von dort ein Thermostat-Widget abzuleiten ist eine mehr als gute Idee!

Was mir als erstes einfällt:
- für einen (Heizkörper-/Raum-/Klimaanlagen-)Thermostat benötigt man keine negativen Temperaturen (ich sehe, du hast es aktualsiert)
- der angezeigte Maximalwert sollte nicht auf x°C eingeschränkt werden (beim Thermometer auch nicht der Min-Wert)
- die Anzeige der gemessenen Ist-Temperatur sollte möglich sein (ggf auch von einem anderen Device) - eventuell auch gleich die Raumfeuchte?
- die Soll-Temperatur (ggf. auch von einem anderen Device - vergleiche HM-TC vs HM-RT-DN) sollte angezeigt werden können (insb wenn es ggf Verzug gibt)
- bei manchen Thermostaten gibt es den Wert der Ventilposition - wie zeigt man diesen am besten an
- Batteriestatus (wenn zB Batterie auf low) optional
- Anzeige der Fenster-offen-Erkennung optional
- readonly option hattest du ja schon erwähnt

Wenn man das widget nur als Thermometer verwendet, fallen einige sachen natürlich weg.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

mr_petz

Hi yersinia.

Du hast mir einen guten Überblick gegeben was zu tun ist/wäre.
Bin ja da auch schon am Aufbau. Ich benutze leider auch kein Thermostat. "Nur" den ebus für die Heizung. Da gibt es ja aber auch desired-temp bzw target-temp und measured-temp etc.. Da kann ich schon bissl testen. Batterie usw leider nicht. Da brauchen wir dann Unterstützer..

Zitat
- der angezeigte Maximalwert sollte nicht auf x°C eingeschränkt werden (beim Thermometer auch nicht der Min-Wert)
ist nicht begrenzt...

LG mr_petz

yersinia

Anbei zum spielen ein (um imho unwesentlichen Sachen) gekürztes list des HM-CC-RT-DN Clima channels (measured-temp, desired-temp und valve position):
Internals:
   DEF        51xxxx04
   FUUID      5c443cf3-f33f-3151-efb4-cc74658ab54ac216
   NAME       HM-CC-RT-DN_Clima
   NOTIFYDEV  global
   NR         90
   NTFY_ORDER 50-HM-CC-RT-DN_Clima
   STATE      T: 19.0 desired: 18.0 valve: 0
   TYPE       CUL_HM
   chanNo     04
   device     HM-CC-RT-DN
   .attraggr:
   .attreocr:
     measured-temp
     desired-temp
   .attrminint:
   Helper:
   READINGS:
     2019-01-11 17:49:21   .R-boostPeriod  5 min
     2019-01-11 17:49:21   .R-decalcTime   11:00
     2019-01-11 17:49:21   .R-decalcWeekday Sat
     2019-01-11 17:49:21   .R-reguExtI     15
     2019-01-11 17:49:21   .R-reguExtP     30
     2019-01-11 17:49:21   .R-reguExtPstart 30
     2019-01-11 17:49:21   .R-reguIntI     18
     2019-01-11 17:49:21   .R-reguIntP     33
     2019-01-11 17:49:21   .R-reguIntPstart 45
     2019-01-11 17:49:21   .R-showWeekday  off
     2019-01-11 17:49:21   .R-tempMax      30.5 C
     2019-01-11 17:49:21   .R-tempMin      4.5 C
     2019-01-11 17:49:21   .R-valveErrPos  15 %
     2019-01-11 17:49:21   .R-valveMaxPos  100 %
     2019-01-11 17:49:21   .R-winOpnDetFall 1.4 K
     2019-01-11 17:49:21   .R-winOpnMode   off
     2019-01-11 17:49:21   .R-winOpnPeriod 15 min
     2019-01-11 17:49:21   .R-winOpnTempI  12 C
     2021-09-24 08:53:22   .associatedWith HM-CC-RT-DN,HM-CC-RT-DN_Clima,HM-CC-RT-DN_ClimaTeam,HM-CC-RT-DN_Climate,HM-CC-RT-DN_Weather,HM-CC-RT-DN_WindowRec,HM-CC-RT-DN_remote
     2021-05-30 14:21:23   .peerListRDate  2021-05-30 14:21:23
     2021-05-20 13:34:23   CommandAccepted yes
     2019-01-11 17:49:21   R-boostPos      80 %
     2019-01-11 17:49:21   R-btnNoBckLight off
     2019-01-11 17:49:21   R-dayTemp       21 C
     2019-01-11 17:49:21   R-daylightSaveTime on
     2019-01-11 17:49:21   R-modePrioManu  all
     2019-01-11 17:49:21   R-modePrioParty all
     2019-01-11 17:49:21   R-nightTemp     17 C
     2019-01-11 17:49:21   R-noMinMax4Manu off
     2019-01-11 17:49:21   R-regAdaptive   on
     2019-01-11 17:49:21   R-showInfo      time
     2019-01-11 17:49:17   R-sign          off
     2019-01-11 17:49:21   R-tempOffset    0.0K
     2019-01-11 17:49:21   R-valveOffsetRt 0 %
     2019-01-11 17:49:21   R-winOpnBoost   off
     2021-05-30 14:21:28   R_0_tempListSat 12:00 18.0 24:00 18.0
     2021-05-30 14:21:28   R_1_tempListSun 12:00 18.0 24:00 18.0
     2021-05-30 14:21:28   R_2_tempListMon 12:00 18.0 24:00 18.0
     2021-05-30 14:21:28   R_3_tempListTue 12:00 18.0 24:00 18.0
     2021-05-30 14:21:28   R_4_tempListWed 12:00 18.0 24:00 18.0
     2021-05-30 14:21:28   R_5_tempListThu 12:00 18.0 24:00 18.0
     2021-05-30 14:21:28   R_6_tempListFri 12:00 18.0 24:00 18.0
     2021-05-30 14:21:28   R_tempList_State verified
     2021-05-30 14:21:24   RegL_01.        00:00 08:00
     2021-05-30 14:21:28   RegL_07.        00:00 01:2A 02:22 03:09 04:3D 05:18 06:03 07:00 08:16 09:07 0A:30 0B:00 0C:64 0D:0F 0E:05 0F:00 10:00 11:00 12:09 13:0E 14:48 15:90 16:49 17:20 18:4C 19:F0 1A:51 1B:14 1C:4D 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:48 2F:90 30:49 31:20 32:4C 33:F0 34:51 35:14 36:4D 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:48 49:90 4A:49 4B:20 4C:4C 4D:F0 4E:51 4F:14 50:4D 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:48 63:90 64:49 65:20 66:4C 67:F0 68:51 69:14 6A:4D 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:48 7D:90 7E:49 7F:20 80:4C 81:F0 82:51 83:14 84:4D 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:48 97:90 98:49 99:20 9A:4C 9B:F0 9C:51 9D:14 9E:4D 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:48 B1:90 B2:49 B3:20 B4:4C B5:F0 B6:51 B7:14 B8:4D B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:12 CB:21 CC:2D CD:0F CE:1E CF:1E
     2021-09-24 11:45:35   ValvePosition   0
     2021-09-24 11:45:35   boostTime       -
     2021-05-30 14:21:58   cfgState        ok
     2021-09-24 11:45:35   controlMode     auto
     2021-09-24 11:45:35   desired-temp    18.0
     2021-09-24 11:45:35   measured-temp   19.0
     2021-09-24 11:45:35   partyEnd        -
     2021-09-24 11:45:35   partyStart      -
     2021-09-24 11:45:35   partyTemp       -
     2021-05-20 13:34:23   recentStateType ack
     2021-09-24 11:45:35   state           T: 19.0 desired: 18.0 valve: 0
     2021-09-24 08:53:21   tempTmplSet     HM-CC-RT-DN_Clima
Attributes:
   model      HM-CC-RT-DN

Und vom HM-CC-RT-DN selbst (batteryLevel):
Internals:
   DEF        51xxxx
   FUUID      5c443cf3-f33f-3151-bf9f-82590899f73c23be
   IODev      nanoCUL_868_2_Net
   LASTInputDev nanoCUL_868_1
   MSGCNT     152
   NAME       HM-CC-RT-DN
   NOTIFYDEV  global
   NR         86
   NTFY_ORDER 50-HM-CC-RT-DN
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 HM-CC-RT-DN_Weather
   channel_02 HM-CC-RT-DN_Climate
   channel_03 HM-CC-RT-DN_WindowRec
   channel_04 HM-CC-RT-DN_Clima
   channel_05 HM-CC-RT-DN_ClimaTeam
   channel_06 HM-CC-RT-DN_remote
   READINGS:
     2020-10-01 13:15:10   .D-devInfo      00FFFF
     2020-10-01 13:15:10   .D-stc          59
     2018-12-16 09:51:02   .R-btnLock      off
     2018-12-16 09:51:02   .R-globalBtnLock off
     2018-12-16 09:51:02   .R-localResDis  off
     2018-12-16 09:51:02   .R-lowBatLimitRT 2.1 V
     2018-12-16 09:51:02   .R-modusBtnLock off
     2021-09-24 08:53:22   .associatedWith HM-CC-RT-DN,HM-CC-RT-DN_Clima,HM-CC-RT-DN_ClimaTeam,HM-CC-RT-DN_Climate,HM-CC-RT-DN_Weather,HM-CC-RT-DN_WindowRec,HM-CC-RT-DN_remote
     2021-09-24 11:51:10   .protLastRcv    20210924115110
     2021-09-24 09:03:20   Activity        alive
     2021-09-24 11:05:40   CommandAccepted yes
     2020-10-01 13:15:10   D-firmware      1.5
     2020-10-01 13:15:10   D-serialNr      NEQxxxxxx
     2021-09-24 08:53:20   IODev           nanoCUL_868_2_Net
     2020-05-16 13:52:18   PairedTo        0xA1B2C3
     2018-12-16 09:51:02   R-backOnTime    10 s
     2018-12-16 09:51:02   R-burstRx       on
     2018-12-16 09:51:02   R-cyclicInfoMsg on
     2018-12-16 09:51:02   R-cyclicInfoMsgDis 0
     2018-12-16 09:51:02   R-pairCentral   0xXXXXXX
     2020-05-16 13:52:18   RegL_00.        00:00 01:01 02:01 09:01 0A:A1 0B:B2 0C:C3 0E:0A 0F:00 11:00 12:15 16:00 18:00 19:00 1A:00
     2021-05-31 08:06:35   RegL_07.       
     2021-03-09 13:38:43   actuator        38
     2021-09-24 11:51:10   battery         ok
     2021-09-24 11:51:10   batteryLevel    2.7
     2021-05-30 14:21:58   cfgState        ok
     2021-09-24 10:59:30   commState       CMDs_done
     2021-03-09 13:38:43   desired-temp    19.0
     2021-03-09 13:38:43   measured-temp   20.3
     2021-09-24 11:51:10   motorErr        ok
     2020-05-16 13:50:03   powerOn         2020-05-16 13:50:03
     2020-05-16 13:50:03   recentStateType info
     2021-09-24 10:59:30   state           CMDs_done
     2021-09-24 10:59:30   time-request    -
   .mId       0095
   IOgrp      VCCU:nanoCUL_868_2_Net
   actCycle   000:10
   actStatus  alive
   autoReadReg 5_readMissing
   event-on-change-reading .*
   expert     defReg,rawReg
   firmware   1.5
   icon       hc_wht_regler
   model      HM-CC-RT-DN
   serialNr   NEQxxxxxx
   subType    thermostat
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Shadow3561

Moin,
Toll, dass du dich damit beschäftigst.
Das Thermostat-Widget ist das einzige was mir fehlt um endlich auf ftui3 um zu stellen.

Bei mir sieht das wie im Anhang aus.

Die oberen Reihen sind nur Infos
Das Widget zeigt in der Mitte gross die gewünschte Temp 20.5
darunter die Ventilposition 2% und
oben die Ist-Temp

so würde es zumindest für mich ausreichen.

<div data-type="thermostat" data-device="Heizung_WoZi"
    data-touch-height="150"
    data-touch-width="150"
    data-valve="Valve"
    data-get="state"
    data-temp="Temp"
    data-step="0.5"
        data-set="" class="small"></div>

mr_petz

#5
Ja danke für die Infos.
Könntet ihr mir noch bitte sagen ob der grip/Zeiger bedienbar ist? Oder was der für eine Funktion-/en hat?
Danke und lg mr_petz

Edit.
Ich vermute, dass der Zeiger zum setzen der solltemp und zum ausschalten vom Thermostat ist.
Wenn der Sollwert gesetzt wurde, dann wird der Anfang der Farbscala an den Ticks danach gesetzt.
Das Ende der Farbscala zeigt die Aktuelle Temperatur an.
Richtig???

Shadow3561

Du vermutest richtig.
über den Zeiger setzt man die Solltemperatur.
Die Farbscala verbindet quasi die eingestellte Soll,- mit der Ist-Temperatur.
Die Min und Max-Werte sollte man im Widget vorgeben können. Meine Thermostate gehen in der Error-Mode wenn ich versuche Werte zu senden die nicht zwischen 5 und 30 Grad sind. Wobei eine feste Vorgabe auch die Nachkommastelle .0 oder .5 sein muss.
Schön wäre noch wenn das Widget bei der Bedienung grösser wird zwecks besserer Einstellbarkeit.

Anbei noch einmal Bilder.

1. Regler ganz links
2. Regler rechts
3. Regler beim bedienen

mr_petz

Hi, nochmal eine Verständnisfrage bzw Vorschlag.
Würde es nicht mehr sinn machen (visuell), wenn beim Hochdrehen der SollTemp die Farbscala der Ticks grau bleibt und erst mit steigender Ist-Temperatur angeht?
So würde man sehen das die SollTemp noch nicht erreicht ist.
Der Zeiger hat dann trotzdem die entsprechende soll-Farbe...

Noch eine andere Frage. Kommen alle Readings wie Temp,Ventil,Batterie vom gleichen Device? Wenn ja, kann ich das gut umsetzen.
mfg mr_petz

yersinia

Zitat von: mr_petz am 27 September 2021, 09:38:21Würde es nicht mehr sinn machen (visuell), wenn beim Hochdrehen der SollTemp die Farbscala der Ticks grau bleibt und erst mit steigender Ist-Temperatur angeht?
So würde man sehen das die SollTemp noch nicht erreicht ist.
Der Zeiger hat dann trotzdem die entsprechende soll-Farbe...
Finde ich eine gute Idee, solange man die Differenz Ist zu Soll visuell gut sehen kann. Wie würdest du den Fall abbilden, wenn Soll < Ist (zB im Sommer) ist?

Zitat von: mr_petz am 27 September 2021, 09:38:21Kommen alle Readings wie Temp,Ventil,Batterie vom gleichen Device?
Bei der CUL_HM standard Konfiguration mit HMclassic imho ja wenn man dies direkt aus dem Stellantrieb (RT-DN) ausliest, bei TSCUL_HM nicht (siehe meine config weiter oben) - da werden einige Daten über verschiedene Channel -sprich: FHEM-Devices- geliefert.
Zusätzlich kann es sein, dass ich zwar verschiedene Stellantriebe (RT-DN) aber nur einen (Raum-)Thermostat (TC) habe. Dann möchte der Anwender zB nur die Soll/Ist-Temperatur vom TC und nicht vom RT-DN anzeigen.

Wie es bei anderen Stellantrieben (Zigbee? HmIP?) aussieht, kann ich nicht beurteilen.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

mr_petz

#9
Zitat von: yersinia am 27 September 2021, 10:32:54
Finde ich eine gute Idee, solange man die Differenz Ist zu Soll visuell gut sehen kann. Wie würdest du den Fall abbilden, wenn Soll < Ist (zB im Sommer) ist?

Wenn Soll<Ist, würde ich die Farbscala vom Soll zu Ist aktivieren.
Bei off könnte ich es auch mit off anzeigen und die Farbscala wäre da aus.
So dachte ich mir das.
Edit:
Anhang zum zeigen hinzugefügt...

Zitat von: yersinia am 27 September 2021, 10:32:54
Bei der CUL_HM standard Konfiguration mit HMclassic imho ja wenn man dies direkt aus dem Stellantrieb (RT-DN) ausliest, bei TSCUL_HM nicht (siehe meine config weiter oben) - da werden einige Daten über verschiedene Channel -sprich: FHEM-Devices- geliefert.
Zusätzlich kann es sein, dass ich zwar verschiedene Stellantriebe (RT-DN) aber nur einen (Raum-)Thermostat (TC) habe. Dann möchte der Anwender zB nur die Soll/Ist-Temperatur vom TC und nicht vom RT-DN anzeigen.

Wie es bei anderen Stellantrieben (Zigbee? HmIP?) aussieht, kann ich nicht beurteilen.

Ok. Dann müsste man mehre Device in der Config anlegen.
Ich kann immer das komplette oder mit get einzelne Readings vom Device auslesen.
Mal sehen wie ich das umsetzen werde...

Shadow3561

Also ich würde es schöner finden wenn die Scala auch farbig bleibt wenn Ist<Soll.

Mit freundlichen Grüßen

mr_petz

Nochmal zum Ist<Soll.
Neuer Vorschlag siehe Anhang.
Da sieht man auf jedenfall das geheizt wird bzw das es nach oben geht.
Ich bin immer noch der Meinung, das man hier einen visuellen Unterschied zu Soll<Ist machen sollte...
Was denkt ihr?

lg mr_petz

tom2966

Ja das mit dem Unterschie soll/ ist sehe ich auch so. So wie im Beispiel gefällt mir das sehr gut.

tom2966

By the way- wahrscheinlich stelle ich mich doof an- wo finde ich den Thermostat?

VG
Thomas

mr_petz

Zitat von: tom2966 am 30 September 2021, 15:14:58
By the way- wahrscheinlich stelle ich mich doof an- wo finde ich den Thermostat?

VG
Thomas

Sorry. Ist noch im Bau ;)