[FTUI3] Entwicklung Thermometer/Thermostat

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

Vorheriges Thema - Nächstes Thema

grossmaggul

ZitatEs hat nichts mit "Dinge schlecht reden" zu tun, wenn man ganz sachlich Dinge beim Namen nennt.
curt:"Das ist hier Alpha, höchstens frühes Beta. Es gibt keine Doku, alle naselang fliegt Dir irgendwas um die Ohren ..."

Das würde ich nicht gerade als sachliche Kritik ansehen, mal abgesehen davon, daß es nicht stimmt, daß es keine Doku gäbe.

Wie ich schonmal schrieb, wenn man nicht damit klar kommt, daß FTUI3 Betastatus hat und sich noch in Entwicklung befindet, dann sollte man einfach die Finger davon lassen und nicht rumnörgeln, wenn mal nicht alles so funktioniert, wie man sich das vorstellt.

Ich finde, dafür, daß Du außer Fragen, nichts zur Entwicklung beiträgst, Dein Anspruchsdenken teilweise etwas unverschämt.
FHEM auf Debian Buster Server, 2 x nanoCUL868, 1xnanoCUL465; Homematic, MAX, MiLight, HUE,  2 x Gosund SP1

curt

Zitat von: LuGu am 02 Februar 2022, 22:30:54
Das solltest du hinbekommen. Aber die Farben ... ;)

Hallo @LuGu,
Dein Konstrukt in Beitrag #102 war wunderschön, hat toll funktioniert und sah für meinen Geschmack, den Du offenbar nicht ganz teilst, toll aus.

Vor Tagen spielte ich mal wieder ein Update ein. Und seitdem sind diese schönen meter-Balken leider wieder hellblau. Und ich habe keine Ahnung warum das so ist, was ich ändern muss. Kannst Du das bitte sagen?
RPI 4 - Jeelink HomeMatic Z-Wave

LuGu

Zitat von: curt am 11 Februar 2022, 02:40:57
Hallo @LuGu,
Dein Konstrukt in Beitrag #102 war wunderschön, hat toll funktioniert und sah für meinen Geschmack, den Du offenbar nicht ganz teilst, toll aus.

Vor Tagen spielte ich mal wieder ein Update ein. Und seitdem sind diese schönen meter-Balken leider wieder hellblau. Und ich habe keine Ahnung warum das so ist, was ich ändern muss. Kannst Du das bitte sagen?

Hallo curt,

vermutlich hast du die Farben nicht wie von mir beschrieben in einer eigenen ftui-theme.css z.b. my ftui-theme.css deklariert, sondern direkt in der ftui-theme.css. Die wurde natürlich mit dem Update überschrieben.

  --lowcolor: #00FF00;
  --mediumcolor: #FFFF00;
  --highcolor: #8B0000;


Gruß LuGu
FHEM mit RPi3 (Visu über FTUI)
HMCCU mit piVCCU3 / MQTT2 mit zigbee2mqtt

setstate

Warum immer gleich eigenes Theme und user.css?
Wenn man als Anfänger vorm "geht-gar-nicht"-Problem steht, sollte man erstmal klein anfangen und ein Control aus den Examples kopieren und probieren.
Wenn das klappt, kann man darüber sprechen, wie man es etwas grüner und blauer bekommen kann.

curt

#124
@LuGu @setstate
Zitat von: LuGu am 11 Februar 2022, 10:36:50
vermutlich hast du die Farben nicht wie von mir beschrieben in einer eigenen ftui-theme.css z.b. my ftui-theme.css deklariert, sondern direkt in der ftui-theme.css. Die wurde natürlich mit dem Update überschrieben.

Negativ.
Dein kompletter Codevorschlag fand bei mir in user.css statt. Und funktionierte bis zum letzten großen Update wunderfein.

Und falls mein völlig inkompetenter Rat irgendwie von Belang sein sollte: Solche Nutzereinstellungen müssen in user.css passieren, wo denn sonst?

Zitat von: setstate am 11 Februar 2022, 10:45:09
Warum immer gleich eigenes Theme und user.css?

Das war gar nicht, ganz im Gegenteil war das ganz klein. Es gab kein eigenes Theme, die Einstellungen sind in user.css - wo sonst bitte?

Zitat von: setstate am 11 Februar 2022, 10:45:09Wenn man als Anfänger vorm "geht-gar-nicht"-Problem steht, sollte man erstmal klein anfangen und ein Control aus den Examples kopieren und probieren.

Das war ganz klein und klappte ganz hervorragend, es gibt da sogar Screenshots von mir. Umgesetzter Beitrag #102 wie gesagt, meinen realen Code kann ich gern nachreichen.

Zitat von: setstate am 11 Februar 2022, 10:45:09
Wenn das klappt, kann man darüber sprechen, wie man es etwas grüner und blauer bekommen kann.

Das Problem ist jetzt eher, dass Du den funktionierenden Teil (wir reden über meter mit Farbverlauf) wieder weggeschossen hast. (vgl Beitrag #102)

Ja mir ist völlig klar, dass das ein Seiteneffekt war, der nicht beabsichtigt wurde: Du hast das weggeschossen. Die Frage ist jetzt eher, ob man Farbverläufe wie von @LuGu vorgeschlagen überhaupt will - ich unterstelle der Einfachheit halber, dass Du willst, dass man Deine wirklich geniale Arbeit auch nutzt.

Ich weiß nicht, wie wir da weiterkommen, ich wurde ja schon heftig angegriffen. Lass es mich mal ganz profan sagen: Ich hätte es gern wieder so schön, wie ich es schon mal hatte - FTU3 gibt das ja offensichtlich her.

Heute ist wünschdirwas:
Ich möchte, dass der Code von LuGu wieder funktioniert. ABER NOCH BESSER wäre natürlich, wenn Du die Möglichkeit von frei wählbaren Farbverläufen gleich in meter (und wo auch immer) integrieren könntest.

Und vielleicht netterweise beschreiben, wie das dann real geht.

Sei herzlich -und mit großem Dank- gegrüßt.
RPI 4 - Jeelink HomeMatic Z-Wave

mr_petz

So.
Können wir hier wieder zum eigentlichen Thema zurückkehren?
Hier geht es nicht um das/den ftui-meter!
Solche Fragen darüber gehören in den Hauptthread!
Danke und LG

omnior

Zitat von: mr_petz am 07 Februar 2022, 18:15:41
Hi Robert.
Anderer Vorschlag um dein Problem zu lösen.
Du erstellst 2 mal das selbe Thermostat an gleicher Stelle, einmal mit device:tmHeating und einmal mit device:tmEnergySaveHeating als value.
Dann noch einen Button zum Umschalten der Modi worauf du dann mit [hidden] im Thermostat triggerst und so wird entweder das device:tmHeating oder device:tmEnergySaveHeating Thermostat angezeigt.
Das funktioniert. Wenn du da Hilfe brauchst beim einrichten, dann sag einfach Bescheid.
Das ist die einfachste Lösung und wir nutzen FTUI3 Boardmittel ;)
Das Runden mache ich noch rein.

LG mr_petz

ps. Der trigger reagiert dann auf fhem und den Button.

ich möchte nochmal auf deinen Vorschlag zurück kommen. Das Umschalten des Modus funktioniert wunderbar mit dem [hidden] aber ich verstehe noch nicht ganz wie ich es umsetzen kann zweimal einen Thermostat zu erstellen.
Das Problem ist ja, dass die Solltemperatur (die in der Mitte angezeigt wird) über desired-temp gesteuert wird. Dieses desired-temp bezieht sich aber immer nur auf den Heizmodus. Damit will ich sagen, auch wenn der Thermostat im Energiesparmodus ist, liefert desired-temp den Sollwert aus dem Heizmodus.
Die einzige Möglichkeit diesen Sollwert im Energiesparmodus zu verändern geht mit einem set device thermostatSetpointSet xx C 11 (dabei steht xx für die Temperatur, C für Celsius und 11 für den Energiesparmodus).

mr_petz

Hi Robert.
Als erstes...:
poste mal bitte deine Definitionen vom thermostat und von den buttons.
Als zweites...:
in desired-temp steht also immer der Heizmodus-Sollwert.
Wo steht denn der Energiesparmodus-Sollwert? Wird der nur durch dein set-Befehl zum desired-temp?
Wenn ja, kannst du dein set Befehl doch auch in den Button integrieren wo du den Energiesparmodus aktivierst.?
Wie gesagt, es fehlen noch paar Infos zum nachvollziehen.

LG mr_petz

omnior

mr_petz, der wird nie zum desired-temp. Desired-temp ist immer nur der Sollwert des Heizmodus.
Der Sollwert des Energiesparmodus kann nur gesetzt werden durch:
set device thermostatSetpointSet xx C 11
und er kann nur abgerufen werden durch:
get device setpoint 11

Hier das list des Thermostats:
Internals:
   DEF        e8edde56 46
   FUUID      5cff49d3-f33f-5aeb-fa31-fba46ce1ee105f46
   IODev      ZBoard
   LASTInputDev ZBoard
   MSGCNT     1164
   NAME       ZWave_THERMOSTAT_46
   NR         115
   STATE      <b>heating</b><br/><div style='color:red'>Ist:21.45 C </div>Batterie:100%
   STILLDONETIME 0
   TYPE       ZWave
   ZBoard_MSGCNT 1164
   ZBoard_RAWMSG 0004002e0643030b2200b4
   ZBoard_TIME 2022-02-11 14:22:25
   ZWaveSubDevice no
   cmdsPending 0
   homeId     e8edde56
   isWakeUp   
   lastMsgSent 1644585723.47818
   nodeIdHex  2e
   webCmd     desired-temp
   READINGS:
     2022-02-08 21:37:09   IODev           ZBoard
     2022-02-10 23:55:45   SEND_DATA       failed:00
     2021-06-12 14:24:01   UNPARSED        SENSOR_MULTILEVEL 06310724620a97
     2022-02-05 11:17:59   alarm           PowerManagement: Event cleared: Previous Events cleared
     2022-02-03 14:35:00   assocGroup_1    Max 1 Nodes ZBoard
     2022-02-03 14:34:12   assocGroups     1
     2022-02-10 20:40:58   battery         100 %
     2022-02-10 20:40:58   batteryPercent  100
     2022-02-10 20:40:58   batteryState    ok
     2022-02-03 17:40:12   configBacklight BacklightEnabled
     2022-02-03 17:40:12   configBatteryReport SendOnceADay
     2022-02-03 17:40:12   configLCDInvert Normal
     2022-02-03 17:40:13   configLCDTimeout 0
     2022-02-06 13:43:23   configMeasuredTemperatureOffset 236
     2022-02-03 17:40:13   configOpenWindowDetection HighSensibility
     2022-02-03 17:40:13   configTemperatureReportThreshold 1
     2022-02-03 17:40:13   configValveOpeningPercentageReport 1
     2022-02-11 12:29:16   desTempHeating  22.0
     2022-02-11 14:22:25   desTempSaving   18.0
     2020-10-15 22:55:31   desired-new     00
     2022-02-11 12:29:16   desired-temp    22.0
     2020-10-21 22:22:59   fwMd            fwMdManId: 0148, fwMdFwId_0: 0301, fwMdChkSum_0: e455, fwMdUpgradeable: ff, fwMdNrTarg: 01, fwMdFrqSize: 0028, fwMdFwId_1: 0001
     2021-01-06 06:30:39   luminance       10.35 %
     2019-12-17 09:02:32   model           EUROtronic EUR_SPIRITZ Wall Radiator Thermostat
     2019-12-17 09:02:32   modelConfig     eurotronic/eur_spiritz.xml
     2019-12-17 09:02:32   modelId         0148-0003-0001
     2022-02-03 17:41:14   neighborList    ZBoard ZWave_SWITCH_BINARY_47 ZWave_SWITCH_BINARY_67
     2022-02-03 17:41:48   neighborUpdate  done
     2019-12-30 19:18:34   power           33.2 W
     2021-10-08 10:02:41   protection      off
     2022-02-11 14:20:58   reportedState   dim 30
     2022-02-11 14:22:25   setpointTemp    18.0 C energySaveHeating
     2022-02-11 14:20:58   state           dim 30
     2022-02-07 17:26:46   swbStatus       0
     2022-02-11 14:20:59   temperature     21.45 C
     2022-02-11 12:29:16   thermostatMode  heating
     2022-02-07 00:21:19   thermostatSetpointSet 18 C 11
     2022-02-08 07:43:48   thermostatSetpointSupported heating energySaveHeating
     2022-02-10 23:56:04   timeToAck       6.037
     2022-02-11 14:22:25   transmit        NO_ACK
Attributes:
   IODev      ZBoard
   alias      Konoba Thermostat
   classes    ZWAVEPLUS_INFO ASSOCIATION ASSOCIATION_GRP_INFO VERSION MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY PROTECTION SENSOR_MULTILEVEL SWITCH_MULTILEVEL THERMOSTAT_MODE THERMOSTAT_SETPOINT BATTERY CONFIGURATION ALARM POWERLEVEL SECURITY SECURITY_S2 TRANSPORT_SERVICE SUPERVISION FIRMWARE_UPDATE_MD

   generateRouteInfoEvents 1
   icon       temp_control
   neighborListPos 406.25,442.05
   room       Konoba,ZWave
   sortby     36
   stateFormat <b>thermostatMode</b><br/><div style='color:red'>Ist:temperature </div>Batterie:batteryPercent%
   userReadings desTempHeating:setpointTemp.*heating {return ReadingsNum($name,"setpointTemp",0)},desTempSaving:setpointTemp.*energySaveHeating {return ReadingsNum($name,"setpointTemp",0)}
   userattr   heizt heizt_map structexclude
   vclasses   ALARM:8 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:1 POWERLEVEL:1 PROTECTION:1 SECURITY:1 SECURITY_S2:1 SENSOR_MULTILEVEL:5 SUPERVISION:1 SWITCH_MULTILEVEL:1 THERMOSTAT_MODE:3 THERMOSTAT_SETPOINT:3 TRANSPORT_SERVICE:2 VERSION:2 ZWAVEPLUS_INFO:2des Thermostats:


und hier die Buttons bzw. der Thermostat im FTUI3
      <!-- Temp Konoba -->
      <ftui-grid-tile row="2" col="2" height="4" width="4" shape="round">
        <ftui-label size="3" >Konoba</ftui-label>
        <ftui-thermostat style="--thermostat-temp-size:19px;--thermostat-value-size:19px;" [(value)]="ZWave_THERMOSTAT_46:desired-temp"
        [temp]="ZWave_THERMOSTAT_46:temperature | toNumber()" unit="°C" tofixed="1" decimals="1"
        [battery]="ZWave_THERMOSTAT_46:batteryPercent"
        [valve]="ZWave_THERMOSTAT_46:reportedState | part(2)"
        [humidity]="ZWave_SENSOR_MULTILEVEL_41:humidity | part(1)| round(0)"
        [color]="ZWave_THERMOSTAT_46:temperature | step('0: blue, 18: ok, 20: yellow, 22: orange, 30: danger')"
        size="110"
        type="handle" min="8" max="28" decimals="2" unit="°C" tofixed="1" has-old-style
        [readonly]="d_thermostatReadOnly | toBool()">
       </ftui-thermostat>
       <ftui-label size="3"  [text]="ZWave_THERMOSTAT_46:thermostatMode"></ftui-label>
       <ftui-button
       [hidden]="ZWave_THERMOSTAT_46:thermostatMode | map('heating: true, energySaveHeating: false')"
       [(value)]="ZWave_THERMOSTAT_46"
       fill="outline" style="width:auto;"
       shape="circle" color="green"
       states="tmHeating,tmEnergySaveHeating"
       @click="javascript:sendFhem('get ZWave_THERMOSTAT_46 thermostatMode')"
       >" Energiesparmodus "</ftui-button>
       <ftui-button
       [hidden]="ZWave_THERMOSTAT_46:thermostatMode | map('heating: false, energySaveHeating: true')"
       [(value)]="ZWave_THERMOSTAT_46"
       fill="outline" style="width:auto;"
       shape="circle" color="red"
       states="tmEnergySaveHeating,tmHeating"
       @click="javascript:sendFhem('get ZWave_THERMOSTAT_46 thermostatMode')"
       >" Heizmodus "</ftui-button>
      </ftui-grid-tile>

mr_petz

Mhhh.
Das wird im Modul schwierig.
Das setzen (set) würde ohne probleme gehen, aber das holen der SollTemp dann nicht. Da muss ich erst noch einiges Umstricken...
Mal schauen was wir da machen könnten...
LG

curt

Zitat von: omnior am 11 Februar 2022, 13:54:53
Das Problem ist ja, dass die Solltemperatur (die in der Mitte angezeigt wird) über desired-temp gesteuert wird.
...
Die einzige Möglichkeit diesen Sollwert im Energiesparmodus zu verändern geht mit einem set device thermostatSetpointSet xx C 11 (dabei steht xx für die Temperatur, C für Celsius und 11 für den Energiesparmodus).

Anmerkung: Auch die Solltemperatur für "normales" Heating kann man erinnerlich über die Langversion ändern. An Stelle der 11 (ich habe es nicht im Kopf, steht in einer PDF) ist dann 21 oder 12 oder so.
RPI 4 - Jeelink HomeMatic Z-Wave

omnior

Zitat von: curt am 12 Februar 2022, 23:49:07
Anmerkung: Auch die Solltemperatur für "normales" Heating kann man erinnerlich über die Langversion ändern. An Stelle der 11 (ich habe es nicht im Kopf, steht in einer PDF) ist dann 21 oder 12 oder so.

ja genau mit der 1, also:
set device thermostatSetpointSet xx C 1

mr_petz

#132
Hi Robert.
Ich habe mal eine Testversion für den ZWave. Ich hoffe da habe ich alles richtig verstanden.
Ein (value) braucht man hier nicht setzen.
Nur das (| part(1) ist hier nötig und muss gesetzt werden!):

[value]="ZWave_THERMOSTAT_46:setpointTemp | part(1)"
[mode]="ZWave_THERMOSTAT_46:thermostatMode"

und der Rest von dir.
Zur Erklärung:
Wenn [mode] gesetzt, dann wird je nach status von thermostatMode (heating,energySaveHeating) automatisch unterschieden ob die gesetzte SollTemp mit c 1 oder c 11 gesetzt und per get device setpoint nach 3sec geholt wird.
Den Modus umschalten kannst du ja weiterhin mit deinem Button.
Teste auch von der Fhemseite aus.
Im Anhang ist nur das script.
Sag bitte ob es so gehen würde.

LG mr_petz

omnior

#133
Zitat von: mr_petz am 17 Februar 2022, 21:53:25
Sag bitte ob es so gehen würde.
LG mr_petz

beim Umschalten erhalte ich folgende Fehlermeldung:
thermostat.component.js:128
TypeError:Cannot read properties of
undefined (reading 'id')

Bist du sicher, dass [value]="ZWave_THERMOSTAT_46:setpointTemp | part(1)" richtig ist? Denn der Get Befehl ist ja eigentlich
get ZWave_THERMOSTAT_46:setpoint

obwohl also der Befehl "setpoint" lautet bekommt man als Rückgabewert z.B.:
setpointTemp:18.0 C energySaveHeating
oder
setpointTemp:23.0 C heating
desired-temp:23.0

Vielleicht liegt es auch am Rückgabewert von get device thermostatMode? Hier kommt ja thermostatMode:energySaveHeating oder thermostatMode:heating zurück

Gruß Robert

mr_petz

#134
Ok. bei meinen test ist kein Fehler aufgetreten.
Habe eine geänderte Version oben angehangen. (https://forum.fhem.de/index.php/topic,123084.msg1208924.html#msg1208924)
Zeige dann auch wie du definiert hast und wo genau beim umschalten der Fehler passiert (button oder fhem).
get = [value]
set = (value)
Fehler Zeile 128 ist für den [mode]
LG

Edit:
Zitat
Vielleicht liegt es auch am Rückgabewert von get device thermostatMode? Hier kommt ja thermostatMode:energySaveHeating oder thermostatMode:heating zurück
Laut deinem List kommt heating oder energySaveHeating vom Reading thermostatMode zurück und darauf reagiere ich ja mit:

[mode]="ZWave_THERMOSTAT_46:thermostatMode"

Zitat
     2022-02-11 14:20:59   temperature     21.45 C
     2022-02-11 12:29:16   thermostatMode  heating
     2022-02-07 00:21:19   thermostatSetpointSet 18 C 11

Wenn das so nicht klappt, dann teste ich noch mit setpointTemp:23.0 C heating. Da muss ich halt das heating separieren...
Noch ein Hinweis. Ich teste hier immer offline mit dummys...