Vitoconnect - Verbesserte Version

Begonnen von stefanru, 14 Dezember 2024, 23:32:17

Vorheriges Thema - Nächstes Thema

stefanru

Hi Uron,

danke für die Rückmeldung!
Dachte schon das interessiert keinen ;-)

Oh cool du bekommst ein hotGas value!
Welches Gerät hast du?
Ich habe eine Vitocal 250 AH und das reading existiert bei mir ist aber 0:
heating.compressors.0.sensors.temperature.hotGas.value 0

Kannst du mal einen Screenshot von deiner Anlage schicken, nur damit ich ein Gefühl bekomme?
Das ganze ist schwierig wenn die Viessmann API bei jeder Anlage andere Daten sendet.

Der Doppelkreis ist mir auch nicht ganz klar wird aber im Viessmann Kälteschema genauso angezeigt.
Vielleicht hat ja jemand hier im Forum eine Idee?

Fürs Tablet UI werde ich noch etwas bauen dass das Schema als html zurück gegeben wird wie im SolarForecast modul.
Zur Zeit komme ich leider nicht dazu.
Aber ich werde das wenn ich etwas Zeit finde noch einbauen und dann eine neue Version releasen.

Danke und Gruß,
Stefan



FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

uron

Ach vom Display des Gerätes selbst kommt das Anlagenschema, so eine neue Anlage habe ich leider nicht. Meine Vitocal 200-S AWB-E-AC 201.D16 hat kein Grafikdisplay  >:(
Jetzt verstehst du vielleicht, warum ich mich über deine Modulerweiterung freue.
Ich liefere aber dennoch den Screenshot meiner Anlage.
Mini-PC (FHEM im Container unter Proxmox)  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, Mini-PC (ioBroker im Container unter Proxmox)

stefanru

Danke,

ja genau die Vitocal haben das im Service Menü versteckt.
Soweit ich weiß aber auch ältere WP im Servicemenü unter Diagnose.

Schade dass bei dir so viele Werte fehlen.
Du nutzt Raw Readings?

Seltsam dass sogar die Außentemperatur fehlt.
Hat dein Gerät andere Readings?

Hier mal das Mapping im Modul, vielleicht kannst du mal schauen warum dir diese Readings fehlen, bzw. ob die ein anderes Mapping benötigen würdest:

    my %map = (
        '%out_tmp%'        => $fmt->('heating.sensors.temperature.outside.value', ' °C', 1),
        '%evp_tmp%'        => $fmt->('heating.evaporators.0.sensors.temperature.liquid.value', ' °C', 1),
        '%evp_tmp_over%'   => $fmt->('heating.evaporators.0.sensors.temperature.overheat.value', ' °C', 1),
        '%comp_in%'        => $fmt->('heating.compressors.0.sensors.temperature.inlet.value', ' °C', 1),
        '%comp_out%'       => $fmt->('heating.compressors.0.sensors.temperature.outlet.value', ' °C', 1),
        '%comp_motor%'     => $fmt->('heating.compressors.0.sensors.temperature.motorChamber.value', ' °C', 1),
        '%eco_tmp%'        => $fmt->('heating.economizers.0.sensors.temperature.liquid.value', ' °C', 1),
        '%cond_tmp%'       => $fmt->('heating.condensors.0.sensors.temperature.liquid.value', ' °C', 1),
        '%heat_suppl%'     => $fmt->('heating.secondaryCircuit.sensors.temperature.supply.value', ' °C', 1),
        '%heat_return%'    => $fmt->('heating.sensors.temperature.return.value', ' °C', 1),
        '%dhw_tmp%'        => $fmt->('heating.dhw.sensors.temperature.hotWaterStorage.value', ' °C', 1),
        '%heat_tmp%'       => $fmt->('heating.buffer.sensors.temperature.main.value', ' °C', 1),

        '%comp_pres%'      => $fmt->('heating.compressors.0.sensors.pressure.inlet.value', ' bar', 2),
        '%heat_pres%'      => $fmt->('heating.sensors.pressure.supply.value', ' bar', 1),
        '%high_pres%'      => 'kein Wert',

        '%comp_speed%'     => $fmt->('heating.compressors.0.speed.current.value', ' %', 0),
        '%fan0%'           => $fmt->('heating.primaryCircuit.fans.0.current.value', ' %', 0),
        '%fan1%'           => $fmt->('heating.primaryCircuit.fans.1.current.value', ' %', 0),
        '%valve0%'         => $fmt->('heating.sensors.valve.0.expansion.target.value', ' %', 0),
        '%valve1%'         => $fmt->('heating.sensors.valve.1.expansion.target.value', ' %', 0),
        '%pump1%'          => $fmt->('heating.boiler.pumps.internal.current.value', ' %', 0),
        '%allengra%'       => $fmt->('heating.sensors.volumetricFlow.allengra.value', ' l/h', 0),

        '%inv_tmp%'        => $fmt->('heating.inverters.0.sensors.temperature.powerModule.value', ' °C', 1),
        '%inv_watt%'       => $fmt->('heating.inverters.0.sensors.power.output.value', ' W', 0),
        '%inv_amp%'        => $fmt->('heating.inverters.0.sensors.power.current.value', ' A', 1),
        '%comp_oil%'       => $fmt->('heating.compressors.0.sensors.temperature.oil.value', ' °C', 1),


Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

uron

Readings habe ich ohne Ende, ohne dass ich sie wirklich übersetzen kann - auch doppelte. Ich müsste mal eine Vergleichstabelle machen, die meine und deine Werte spiegelt.
Beispiel: das Reading "Außentemperatur" (ja. so im Klartext) steht aktuell bei 3.6, das entspricht dem Wert, der durch ein anderes Thermometer gemessen wird.
In den Readings findet sich unter nachfolgenden EInträgen der gleiche Wert wieder
- heating.cop.heating.value
- heating.cop.total.value
Hab am Do eine OP und werde mich nächste Woche der Vergleichstabelle mal in Ruhe annehmen können! Ideal wäre natürlich zu wissen, welche Werte sich hinter den Platzhaltern in meiner Grafik verbergen, vielleicht finde ich sie bei mir dann ja schneller.
Mini-PC (FHEM im Container unter Proxmox)  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, Mini-PC (ioBroker im Container unter Proxmox)

stefanru

Ok,

das wäre sehr interessant.
Ich habe versucht die Variablen Namen sprechend zu halten und ich kann dir aktuelle daten von mir geben.
comp = compressor
inv = inverter
evp = evaporator
eco = economizer

Wenn du mir passende Mappings bei deinem Gerät lieferst baue ich es oder verknüpft ein.
Heißt er nimmt die Werte die da sind und du bekommst auch überall Zahlen in der Grafik.
Wäre toll wenn du mir einige mappings raussuchen könntest, ich baue es dann sehr gerne ein.

Viel Erfolg bei deiner OP und ich freue mich auf deine Mappings.
Wenn du irgendwie beim Mappen Hilfe brauchst melde dich bei mir.

Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

uron

Beim "Mappen stehe ichg auf dem Schlauch" Wie bekomme ich entsprechende Liste, die du verwerten kannst oder sind das die Readings?
Wenn du mir bis morgen Mittag Rückmeldung gibst, liefere ich noch vor der OP!
Für huete bin ich aber raus!
Mini-PC (FHEM im Container unter Proxmox)  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, Mini-PC (ioBroker im Container unter Proxmox)

stefanru

Hi Uron,

ist für mich nicht eilig.
Tablet UI Integration habe ich geschafft ;-)
Sobald ich ein Moment Zeit habe lade ich es hoch mit Erklärung.

Zu deinem mapping:
Siehe oben mein post mit my map =
Das sind meine Datenpunkte.
z.B.
'%comp_out%'       => $fmt->('heating.compressors.0.sensors.temperature.outlet.value', ' °C', 1),

Meine Variable heißt comp_out für Compressor Ausgang und in meiner API ist das heating.compressors.0.sensors.temperature.outlet.value.
Du nennst mir nun deinen passenden Wert dazu und ich mappe beide je nachdem was vorhanden ist.
Damit bekommst du dann dort auch eine Anzeige.

Falls es dir sonst wie weiterhilft hier die Variablen auch im Bild.
Ich würde aber versuchen die Liste oben my map jeden Wert auf einen passenden von dir zu mappen.

FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

uron

Sorry, ich stehe auf dem Schlauch:
Wenn ich die fehlenden Readings in meiner Anlage benennen soll, müsste ich wissen, welche deiner Werte in meiner Grafik fehlen. Kannst du mir die nennen, dann erst kann ich auf die Suche gehen.
Beispiel: an welcher Stelle in der Grafik erscheint dein Wert "'%comp_out%'      => $fmt->('heating.compressors.0.sensors.temperature.outlet.value', ' °C', 1),"
Mini-PC (FHEM im Container unter Proxmox)  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, Mini-PC (ioBroker im Container unter Proxmox)

uron

#443
So, mit der Grafik und den eingetragenen Datenpunkten habe ich per SuFu Ählichkeiten in meinen Readings gesucht und gerade mal zwei Datenpunkte, die über das Modul hereinkommen bei mir gefunden:
Dein '%out_tmp%' => $fmt->('heating.sensors.temperature.outside.value', ' °C', 1), ist bei mir im Reading "Aussentemperatur" -  schlicht und einfach "Aussentemperatur". Der ursprünglich oben angegebene Datenpunkt "heating.cop.total.value" ist falsch!

Der Punkt '%dhw_tmp%' => $fmt->('heating.dhw.sensors.temperature.hotWaterStorage.value', ' °C', 1), ist bei mir sicher gleichzusetzen mit dem Datenpunkt heating.dhw.sensors.temperature.hotWaterStorage.top.value, ein anderer Datenpunkt mit "bottom" ist "not connected", also bleibt nur der "top"!

Das wars! Ich hatte früher auch mal im ioBroker den Adapter "viessmannapi" auf einem Parallelsystem mitlaufen und ich hatte das Gefühl, der hat mehr Datenpunkte geliefert, leider bekomme ich den Adapter im Moment aber nicht mehr ans Laufen, sonst könnte ich mir dort die Datenpunkte zu FHEM holen. Da bleibe ich demnächst am Ball.

NACHTRAG: Mittlerweile hab ich doch noch den ioB-Adapter zum Laufen gebracht und habe damit Zugriff auf viel mehr Datenpunkte. Es bleiben die Zuordnungsprobleme zu deinem Mapping, da die Datenpunkte andere Bezeichungen haben:
Beispiel: Dein Datenpunkt  '%heat_pres%' => $fmt->('heating.sensors.pressure.supply.value', ' bar', 1),
Dazu finde ich in meiner Anlage heating.sensors.pressure.hotGas.properties.value.value und heating.sensors.pressure.suctionGas.properties.value.value aber keinen Pfad mit "pressure.supply...."
Welcher Wert nun gemappt werden sollte, weiß ich nicht!
Ähnliches zeigt sich an vielen anderen Stellen, eine 1:1-Übersetzung fällt deshalb schwer!

Ach ja, und das Thema "Außentemperatur" finde ich im ioB noch unter einem anderen Ort.
Bleibt die Frage wie ich weiter vorgehen sollte, da das Mappen wahrscheinlich sehr anlagenspezifisch ist und du es ja nicht für jeden Anwender umschreiben kannst!?
Mini-PC (FHEM im Container unter Proxmox)  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, Mini-PC (ioBroker im Container unter Proxmox)

stefanru

Hi uron,
naja ich würde erstmal versuchen einfach mehrere Datenpunkte abzufragen.
Z.b. bei der %out_tmp%
Da würde ich versuchen:
heating.sensors.temperature.outside.value wenn da nichts kommt dann den von dir vorgeschlagenen Aussentemperatur.

Aber dazu habe ich eine Frage, Außentemperatur kann es eigentlich nicht geben, da alle mappings bei Viessmann englisch sind.
Bist du sicher dass du das Modul mit:
vitoconnect_raw_readings 1
betreibst?

Das wäre schon Vorraussetzung, ich möchte hier nicht noch das alte Mapping dazwischen haben.

Viel Erfolg für die OP und melde dich einfach danach wenn es wieder geht bei mir.

Gruß,
Stefan

FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

uron

#445
Eine letzte Aktion vorerst:
Woher die deutschsprachigen Readings kommen, bekomme ich nicht mehr zusammen, eingerichtet hatte ich die Anlage vor ein paar Jahren.
vitoconnect_raw_readings 1 habe ich jetzt erst aktiviert und nun die Readings einmal in der Anlage als pdf (anonymisiert) beigefügt - vielleicht siehst du ja mehr.
Die schedule habe ich zum Zwecke von mehr Übersicht hier herausgelöscht!

Bis demnächst und Danke für die guten Wünsche, wird schon werden!

Sehe gerade: WW-Termperatur erscheint jetzt auch in der Grafik!
Mini-PC (FHEM im Container unter Proxmox)  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, Mini-PC (ioBroker im Container unter Proxmox)

stefanru

Naja,

bevor ich das Modul übernommen habe wurde alles auf deutsche Bezeichner gemapped.
Das Problem damit ist dass Viessmann öfter an der API dreht und diese Mappings von Viessmann API zu eigenen deutschen Namen veralltet.
Auch hat Viessmann mittlerweile wegen des EU Data acts ganz viele neue Readings eingeführt.

Am besten ist es das Modul nur mit raw readings zu betreiben.
Du hast dann keine deutschen kurz Bezeichner aber dafür alle API Endpoints genau wie Viessmann sie liefert.

Ich schau mir dein PDF mal an und lass uns einfach nochmal reden wenn du zurück bist, viel Glück.

Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

Schlimbo

Hallo Stefan,

vielen Dank für die Erweiterung des Moduls um das Anlagenschema. Das gefällt mir wirklich sehr gut  :) 👍

Meine Wärmepumpe (Vitocal 200-S) liefert teilweise abweichende Readings. Für einige Werte gibt es bei mir auch mehrere Readings, die immer denselben Wert liefern. Ich habe deshalb einmal eine Zuordnung zu deinen Variablen gemacht.

Die meisten Sensoren besitzen zusätzlich ein Status-Reading, das anzeigt, ob der Sensor vorhanden ist oder nicht (connected / notConnected).
Eventuell könntest du das auswerten und bei notConnected automatisch auf ein alternatives Reading mappen.

Ein Beispiel:
Bei %heat_tmp% liefert die API bei mir zwar das Reading heating.buffer.sensors.temperature.main.value, der zugehörige Status steht aber auf notConnected.
Das passende Reading wäre in meinem Fall dann heating.bufferCylinder.sensors.temperature.top.value.

Weitere Punkte:

  • Für %fan0% und %fan1% gibt es bei mir nur ein einziges Reading: heating.primaryCircuit.sensors.rotation.value
  • %evp_tmp_over% wird im Anlagenschema der Wärmepumpe mit der Einheit K (nicht °C) angegeben
  • Für %comp_motor% passt bei mir das Reading: heating.compressors.0.sensors.temperature.ambient.value
  • %comp-Speed% → heating.compressors.0.sensors.power.value
  • %high_pres% → heating.sensors.pressure.hotGas.value


Anbei meinen Versuch, die Readings zuzuordnen, sowie ein Foto des Anlagenschemas meiner Wärmepumpe.

1 - %out_tmp%

Reading: heating.sensors.temperature.outside.value
Status: heating.sensors.temperature.outside.status → connected
Beschreibung: Lufteintrittstemperatur
Einheit: °C

2.1 - %fan0%

Reading: heating.primaryCircuit.sensors.rotation.value
Status: heating.primaryCircuit.sensors.rotation.status → connected
Beschreibung: Drehzahl Ventilator 1(oben) Primärquelle
Einheit: %

2.2 - %fan1%

Reading: heating.primaryCircuit.sensors.rotation.value
Beschreibung: Drehzahl Ventilator 2 (unten) Primärquelle
Einheit: %

3  - %evp_tmp_over% 

°C --> K Wert ???  Überhitzung = Sauggastemperatur – Verdampfungstemperatur

Reading: heating.evaporators.0.sensors.temperature.overheat.value
Status: heating.evaporators.0.sensors.temperature.overheat.status → connected
Beschreibung: Sauggasüberhitzung
Einheit: °C

4 - %comp_pres%

Reading: heating.sensors.pressure.suctionGas.value
Status: heating.sensors.pressure.suctionGas.status → connected
Reading: heating.compressors.0.sensors.pressure.inlet.value
Status: heating.compressors.0.sensors.pressure.inlet.status → connected
Beschreibung: Sauggasdruck auf der Niederdruckseite des Kältekreises
Einheit: bar

5 - %comp_in%

Reading: heating.sensors.temperature.suctionGas.value
Status: heating.sensors.temperature.suctionGas.status → connected
Reading: heating.compressors.0.sensors.temperature.inlet.value
Status: heating.compressors.0.sensors.temperature.inlet.status → connected
Beschreibung: Sauggastemperatur (vor Verdichter)
Einheit: °C

6 - %comp_motor%

Reading: heating.compressors.0.sensors.temperature.ambient.value 
Status: heating.compressors.0.sensors.temperature.ambient.status → connected
Beschreibung: Umgebungstemperatur im Verdichtergehäuse ???
Einheit: °C

7 - %comp-Speed%

Reading: heating.compressors.0.sensors.power.value
Status: heating.compressors.0.sensors.power.status → connected
Beschreibung: Verdichtersleistung
Einheit: %

8 - %comp_oil%

Reading: kein Reading verfügbar
Beschreibung: Öltemperatur des Verdichters
Einheit: °C

9 - %inv_temp%

Reading: kein Reading verfügbar
Beschreibung: Temperatur im Inverter Power Modul ???
Einheit: °C

10 - %inv_watt%

Reading: kein Reading verfügbar
Beschreibung: Elektrische Leistungsaufnahme des Verdichters
Einheit: W

11 - %inv_amp%

Reading: kein Reading verfügbar
Beschreibung: Aktuelle Stromaufnahme
Einheit: A

12 - %comp_out%

Reading: heating.sensors.temperature.hotGas.value
Status: heating.sensors.temperature.hotGas.status → connected
Reading: heating.compressors.0.sensors.temperature.outlet.value
Status: heating.compressors.0.sensors.temperature.outlet.status → connected
Beschreibung: Heißgastemperatur (nach Verdichter)
Einheit: °C

13 - %high_pres%

Reading: heating.sensors.pressure.hotGas.value
Status: heating.sensors.pressure.hotGas.status → connected
Beschreibung: Verflüssigungsdruck
Einheit: bar

14 - %cond_tmp%

Reading: ??
Beschreibung: Flüssiggastemperatur
Einheit: °C

15 - %valve1%

Reading: kein Reading verfügbar
Beschreibung: Elektronisches Expansionsventil
Einheit: %

16 - %eco_tmp%

Reading: ??
Beschreibung: Temperatur des verflüssigten Kältemittels nach dem Verflüssiger
Einheit: °C

17 - %valve0%

Reading: kein Reading verfügbar
Beschreibung: ??
Einheit: %

18 - %evp_tmp%

Reading: heating.sensors.temperature.liquidGas.value 
Status: heating.sensors.temperature.liquidGas.status → connected
Reading: heating.evaporators.0.sensors.temperature.liquid.value
Status: heating.evaporators.0.sensors.temperature.liquid.status → connected
Beschreibung: Sauggastemperatur (nach Verdampfer)
Einheit: °C

19 - %heat_suppl%

Reading: heating.secondaryCircuit.sensors.temperature.supply.value
Status: heating.secondaryCircuit.sensors.temperature.supply.status → connected
Beschreibung: Vorlauftemperatur Sekundärkreis
Einheit: °C

20 - %pump1%

Reading: kein Reading verfügbar
Beschreibung: Leistung Sekundärpumpe
Einheit: %

21 - %heat_return

Reading: heating.sensors.temperature.return.value
Status: heating.sensors.temperature.return.status → connected
Beschreibung: Rücklauftemperatur Sekundärkreis
Einheit: °C

22 - %dhw_tmp%

Reading: heating.dhw.sensors.temperature.dhwCylinder.top.value
Reading: heating.dhw.sensors.temperature.dhwCylinder.value
Reading: heating.dhw.sensors.temperature.hotWaterStorage.top.value
Reading: heating.dhw.sensors.temperature.hotWaterStorage.value
Beschreibung: Temperatur des Warmwasserspeichers
Einheit: °C

23 - %heat_tmp%

# Reading: heating.buffer.sensors.temperature.main.value  --> heating.buffer.sensors.temperature.main.status  notConnected
# Reading: heating.bufferCylinder.sensors.temperature.main.value  --> heating.bufferCylinder.sensors.temperature.main.status  notConnected
Reading: heating.bufferCylinder.sensors.temperature.top.value  --> heating.bufferCylinder.sensors.temperature.top.status  connected
Beschreibung: Temperatur Pufferspeicher
Einheit: °C

24 - %allengra%

Reading: kein Reading verfügbar
Beschreibung: Druck Wasser
Einheit: bar

25 - %heat_pres%

Reading: kein Reading verfügbar
Beschreibung: Durchfluss Heizkreis
Einheit: l/h

Viele Grüße
Schlimbo

stefanru

Hi Schlimbo,

wow Vielen Dank!
Da habt ihr ja eine völlig andere Grafik als bei den One Base Geräten

Ich werde versuchen deine Readings bei mir einzubauen.
Dann schauen wir mal wie das aussieht.
Ich schaue wie ich dazu komme.

Hat deine Anlage nur einen Fan? Oder auch zwei?

Kannst du mir eventuell noch ein Bild von meiner jetzigen Grafik bei dir schicken?

Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

Schlimbo

Hi Stefan,

meine Anlage hat auch 2 Lüfter, im Anlagenschema der VITOTRONIC werden diese auch einzeln angezeigt, aber über die API bekomme ich nur einen Wert.
Habe gerade mal ziemlich Zeitgleich ein Bild der VITOTRONIC, deiner Grafik und ein Device List gemacht, um die Zuordnung besser zu erkenne.
(Aufgrund der Datenübermittlung zur API und zu FHEM laufen die Werte aber leicht auseinander)

Internals:
   DEF        xxxxxxxx xxx 120
   FUUID      67xxxxxxxxca-195xxxxxxxxxxxx2ax
   FVERSION   98_vitoconnect.pm:v1.1.1-s29593/2025-01-29
   NAME       vitoconnect
   NR         437
   Redirect_URI http://localhost:4200/
   STATE      last update: 2026-02-06 08:46:40
   TYPE       vitoconnect
   apiKey     xxxxxxxxx
   counter    0
   eventCount 2860
   intervall  120
   login      ok
   refresh_token xxxxxxxxxxxxxxxxxxxxxx
   timeout    15
   user       xxxxxxxxxx
   HELPER:
     PACKAGE    main
     VERSION    1.0.5
     VERSION_API unused
     VERSION_CTZ unused
     VERSION_ErrCodes unused
     VERSION_SMUtils 1.28.3
   OLDREADINGS:
   READINGS:
     2026-02-06 08:46:40   device.messages.errors.counter.d6.value 0
     2026-02-06 08:46:40   device.messages.logbook.entries VERDICHTER1, 182, Heizkreis, Inverter_DCbus_ripple, WAERMEPUMPE1, 41, 2026-02-06T08:35:36.000Z, PRIMAERQUELLE1, 120, Heizkreis, PRIMARY_IN, WAERMEPUMPE1, 20, 2026-02-06T08:33:36.000Z, SEK_PUMPE1, 120, Heizkreis, PRIMARY_IN, INTERN_HW_PUFFER, 100, 2026-02-06T08:33:36.000Z, KAELTEKR_UMKEHR, 2, Heizkreis, Inverter_Under_voltage, WAERMEPUMPE1, 0, 2026-02-06T07:14:51.000Z, KAELTEKR_UMKEHR, 4, Heizkreis, Inverter_Autotune_fault, WAERMEPUMPE1, 1, 2026-02-06T07:14:08.000Z
     2026-02-06 08:46:40   device.serial.value 7xxxxxxxxxxxxxxxx
     2026-02-06 08:46:40   heating.boiler.sensors.temperature.commonSupply.status notConnected
     2026-02-06 08:46:40   heating.boiler.serial.value 7xxxxxxxxxxxxxxxx
     2026-02-06 08:46:40   heating.buffer.sensors.temperature.main.status notConnected
     2026-02-06 08:46:40   heating.buffer.sensors.temperature.top.status connected
     2026-02-06 08:46:40   heating.buffer.sensors.temperature.top.value 28.9
     2026-02-06 08:46:40   heating.bufferCylinder.sensors.temperature.main.status notConnected
     2026-02-06 08:46:40   heating.bufferCylinder.sensors.temperature.top.status connected
     2026-02-06 08:46:40   heating.bufferCylinder.sensors.temperature.top.value 28.9
     2026-02-06 08:46:40   heating.burners.enabled
     2026-02-06 08:46:40   heating.circuits.1.active 1
     2026-02-06 08:46:40   heating.circuits.1.circulation.pump.status on
     2026-02-06 08:46:40   heating.circuits.1.frostprotection.status on
     2026-02-06 08:46:40   heating.circuits.1.heating.curve.shift 0
     2026-02-06 08:46:40   heating.circuits.1.heating.curve.slope 0.3
     2026-02-06 08:46:40   heating.circuits.1.heating.schedule.active 1
     2026-02-06 08:46:40   heating.circuits.1.heating.schedule.entries [{"mon":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"tue":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"wed":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"thu":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"fri":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"sat":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"sun":{"mode":"normal","start":"00:00","end":"24:00","position":0}}]
     2026-02-06 08:46:40   heating.circuits.1.name
     2026-02-06 08:46:40   heating.circuits.1.name.name
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.active.value dhwAndHeatingCooling
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.cooling.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.dhw.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.dhwAndHeatingCooling.active 1
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.forcedNormal.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.forcedReduced.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.normalStandby.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.modes.standby.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.active.value normal
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.comfort.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.comfort.demand unknown
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.comfort.temperature 20
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.eco.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.eco.temperature 23
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.fixed.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.normal.active 1
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.normal.demand unknown
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.normal.temperature 23
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.reduced.active 0
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.reduced.demand unknown
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.reduced.temperature 16
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.screedDrying.heatpump.useApproved 0
     2026-02-06 08:46:40   heating.circuits.1.operating.programs.standby.active 0
     2026-02-06 08:46:40   heating.circuits.1.sensors.temperature.supply.status connected
     2026-02-06 08:46:40   heating.circuits.1.sensors.temperature.supply.value 29.7
     2026-02-06 08:46:40   heating.circuits.1.temperature.levels.max 45
     2026-02-06 08:46:40   heating.circuits.1.temperature.levels.min 15
     2026-02-06 08:46:40   heating.circuits.1.temperature.value 30.2
     2026-02-06 08:46:40   heating.circuits.1.type heatingCircuit
     2026-02-06 08:46:40   heating.circuits.enabled 1
     2026-02-06 08:46:40   heating.circuits.internal
     2026-02-06 08:46:40   heating.compressors.0.active 1
     2026-02-06 08:46:40   heating.compressors.0.phase heating
     2026-02-06 08:46:40   heating.compressors.0.power.value 16
     2026-02-06 08:46:40   heating.compressors.0.sensors.power.status connected
     2026-02-06 08:46:40   heating.compressors.0.sensors.power.value 63
     2026-02-06 08:46:40   heating.compressors.0.sensors.pressure.inlet.status connected
     2026-02-06 08:46:40   heating.compressors.0.sensors.pressure.inlet.value 6.4
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.ambient.status connected
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.ambient.value 16.4
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.inlet.status connected
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.inlet.value -0.2
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.outlet.status connected
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.outlet.value 64.4
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.overheat.status connected
     2026-02-06 08:46:40   heating.compressors.0.sensors.temperature.overheat.value 6.7
     2026-02-06 08:46:40   heating.compressors.0.statistics.hours 2599.1
     2026-02-06 08:46:40   heating.compressors.0.statistics.load.hoursLoadClassFive 419
     2026-02-06 08:46:40   heating.compressors.0.statistics.load.hoursLoadClassFour 881
     2026-02-06 08:46:40   heating.compressors.0.statistics.load.hoursLoadClassOne 232
     2026-02-06 08:46:40   heating.compressors.0.statistics.load.hoursLoadClassThree 819
     2026-02-06 08:46:40   heating.compressors.0.statistics.load.hoursLoadClassTwo 174
     2026-02-06 08:46:40   heating.compressors.0.statistics.starts 3613
     2026-02-06 08:46:40   heating.compressors.enabled 0
     2026-02-06 08:46:40   heating.condensors.0.sensors.temperature.subcooling.status notConnected
     2026-02-06 08:46:40   heating.configuration.buffer.temperature.max.value 60
     2026-02-06 08:46:40   heating.configuration.dhw.temperature.dhwCylinder.max.value 60
     2026-02-06 08:46:40   heating.configuration.dhw.temperature.hotWaterStorage.max.value 60
     2026-02-06 08:46:40   heating.configuration.dhwHeater.useApproved 0
     2026-02-06 08:46:40   heating.configuration.heatingRod.dhw.useApproved 0
     2026-02-06 08:46:40   heating.configuration.heatingRod.heating.useApproved 0
     2026-02-06 08:46:40   heating.configuration.smartGrid.heatingRod.approvedLevel 3
     2026-02-06 08:46:40   heating.configuration.temperature.outside.DampingFactor.value 180
     2026-02-06 08:46:40   heating.controller.serial.value [VUC]
     2026-02-06 08:46:40   heating.coolingCircuits.0.type.value VC 200-S Emerson
     2026-02-06 08:46:40   heating.cop.cooling.value 6.1
     2026-02-06 08:46:40   heating.cop.dhw.value 3.1
     2026-02-06 08:46:40   heating.cop.green.value 0
     2026-02-06 08:46:40   heating.cop.heating.value 3.7
     2026-02-06 08:46:40   heating.cop.total.value 3.4
     2026-02-06 08:46:40   heating.device.mainECU.runtime 47375310
     2026-02-06 08:46:40   heating.dhw.active 1
     2026-02-06 08:46:40   heating.dhw.charging.active 0
     2026-02-06 08:46:40   heating.dhw.configuration.temperature.dhwCylinder.max.value 60
     2026-02-06 08:46:40   heating.dhw.oneTimeCharge.active 0
     2026-02-06 08:46:40   heating.dhw.pumps.circulation.schedule.active 1
     2026-02-06 08:46:40   heating.dhw.pumps.circulation.schedule.entries [{"mon":{"mode":"on","start":"00:00","end":"24:00","position":0}},{"tue":{"mode":"on","start":"00:00","end":"24:00","position":0}},{"wed":{"mode":"on","start":"00:00","end":"24:00","position":0}},{"thu":{"mode":"on","start":"00:00","end":"24:00","position":0}},{"fri":{"mode":"on","start":"00:00","end":"24:00","position":0}},{"sat":{"mode":"on","start":"00:00","end":"24:00","position":0}},{"sun":{"mode":"on","start":"00:00","end":"24:00","position":0}}]
     2026-02-06 08:46:40   heating.dhw.pumps.circulation.status on
     2026-02-06 08:46:40   heating.dhw.schedule.active 1
     2026-02-06 08:46:40   heating.dhw.schedule.entries [{"mon":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"tue":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"wed":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"thu":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"fri":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"sat":{"mode":"normal","start":"00:00","end":"24:00","position":0}},{"sun":{"mode":"normal","start":"00:00","end":"24:00","position":0}}]
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.dhwCylinder.bottom.status notConnected
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.dhwCylinder.status connected
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.dhwCylinder.top.status connected
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.dhwCylinder.top.value 46.1
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.dhwCylinder.value 46.1
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.hotWaterStorage.bottom.status notConnected
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.hotWaterStorage.status connected
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.hotWaterStorage.top.status connected
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.hotWaterStorage.top.value 46.1
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.hotWaterStorage.value 46.1
     2026-02-06 08:46:40   heating.dhw.sensors.temperature.outlet.status notConnected
     2026-02-06 08:46:40   heating.dhw.status on
     2026-02-06 08:46:40   heating.dhw.temperature.hysteresis.switchOffValue 5
     2026-02-06 08:46:40   heating.dhw.temperature.hysteresis.switchOnValue 5
     2026-02-06 08:46:40   heating.dhw.temperature.hysteresis.value 5
     2026-02-06 08:46:40   heating.dhw.temperature.main.value 50
     2026-02-06 08:46:40   heating.dhw.temperature.temp2.value 55
     2026-02-06 08:46:40   heating.evaporators.0.sensors.temperature.liquid.status connected
     2026-02-06 08:46:40   heating.evaporators.0.sensors.temperature.liquid.value 32.7
     2026-02-06 08:46:40   heating.evaporators.0.sensors.temperature.overheat.status connected
     2026-02-06 08:46:40   heating.evaporators.0.sensors.temperature.overheat.value 3.8
     2026-02-06 08:46:40   heating.heatingRod.runtime.levelOne 268
     2026-02-06 08:46:40   heating.heatingRod.runtime.levelTwo 269
     2026-02-06 08:46:40   heating.operating.programs.holiday.active 0
     2026-02-06 08:46:40   heating.operating.programs.holiday.end
     2026-02-06 08:46:40   heating.operating.programs.holiday.start
     2026-02-06 08:46:40   heating.primaryCircuit.sensors.rotation.status connected
     2026-02-06 08:46:40   heating.primaryCircuit.sensors.rotation.value 91
     2026-02-06 08:46:40   heating.primaryCircuit.sensors.temperature.return.status notConnected
     2026-02-06 08:46:40   heating.primaryCircuit.sensors.temperature.supply.status connected
     2026-02-06 08:46:40   heating.primaryCircuit.sensors.temperature.supply.value 1.2
     2026-02-06 08:46:40   heating.secondaryCircuit.sensors.temperature.supply.status connected
     2026-02-06 08:46:40   heating.secondaryCircuit.sensors.temperature.supply.value 33.7
     2026-02-06 08:46:40   heating.sensors.pressure.hotGas.status connected
     2026-02-06 08:46:40   heating.sensors.pressure.hotGas.value 21.2
     2026-02-06 08:46:40   heating.sensors.pressure.suctionGas.status connected
     2026-02-06 08:46:40   heating.sensors.pressure.suctionGas.value 6.4
     2026-02-06 08:46:40   heating.sensors.temperature.hotGas.status connected
     2026-02-06 08:46:40   heating.sensors.temperature.hotGas.value 64.4
     2026-02-06 08:46:40   heating.sensors.temperature.liquidGas.status connected
     2026-02-06 08:46:40   heating.sensors.temperature.liquidGas.value 32.7
     2026-02-06 08:46:40   heating.sensors.temperature.outside.status connected
     2026-02-06 08:46:40   heating.sensors.temperature.outside.value 1.4
     2026-02-06 08:46:40   heating.sensors.temperature.return.status connected
     2026-02-06 08:46:40   heating.sensors.temperature.return.value 28.5
     2026-02-06 08:46:40   heating.sensors.temperature.suctionGas.status connected
     2026-02-06 08:46:40   heating.sensors.temperature.suctionGas.value -0.2
     2026-02-06 08:46:40   state           last update: 2026-02-06 08:46:40
     2026-02-06 08:46:40   ur_HK-Solltemperatur_Mode 1
     2026-02-06 08:46:40   ur_HK2-Betriebsart_nr 4
     2026-02-06 08:46:40   ur_HK2-Solltemperatur 23
     2026-02-06 08:46:40   ur_error_code   0
     2026-02-06 08:46:40   ur_error_level  0
     2026-02-06 08:46:40   ur_error_severity normal operation
     2026-02-06 08:46:40   ur_ventilation.active.level 2
     2026-02-06 08:46:40   ur_ventilation.active.volumeFlow 130
     2026-02-06 08:46:40   ventilation.active 1
     2026-02-06 08:46:40   ventilation.heatExchanger.frostprotection.status off
     2026-02-06 08:46:40   ventilation.operating.modes.active.value ventilation
     2026-02-06 08:46:40   ventilation.operating.modes.standard.active 0
     2026-02-06 08:46:40   ventilation.operating.modes.standby.active 0
     2026-02-06 08:46:40   ventilation.operating.modes.ventilation.active 1
     2026-02-06 08:46:40   ventilation.operating.programs.active.value levelTwo
     2026-02-06 08:46:40   ventilation.operating.state.demand ventilation
     2026-02-06 08:46:40   ventilation.operating.state.level levelTwo
     2026-02-06 08:46:40   ventilation.operating.state.reason schedule
     2026-02-06 08:46:40   ventilation.quickmodes.comfort.active 0
     2026-02-06 08:46:40   ventilation.quickmodes.eco.active 0
     2026-02-06 08:46:40   ventilation.quickmodes.holiday.active 0
     2026-02-06 08:46:40   ventilation.quickmodes.holiday.end
     2026-02-06 08:46:40   ventilation.quickmodes.holiday.start
     2026-02-06 08:46:40   ventilation.schedule.active 1
     2026-02-06 08:46:40   ventilation.schedule.entries [{"mon":{"mode":"levelTwo","start":"00:00","end":"24:00","position":0}},{"tue":{"mode":"levelTwo","start":"00:00","end":"24:00","position":0}},{"wed":{"mode":"levelTwo","start":"00:00","end":"24:00","position":0}},{"thu":{"mode":"levelTwo","start":"00:00","end":"24:00","position":0}},{"fri":{"mode":"levelTwo","start":"00:00","end":"24:00","position":0}},{"sat":{"mode":"levelTwo","start":"00:00","end":"24:00","position":0}},{"sun":{"mode":"levelTwo","start":"00:00","end":"24:00","position":0}}]
     2026-02-06 08:46:40   ventilation.volumeFlow.current.input.value 235
     2026-02-06 08:46:40   ventilation.volumeFlow.current.output.value 225
   devices:
     763xxxxxxxxx:
       gatewayType VitoconnectOPTO2
       installationId xxxxxx
       version    2.51.5.0
Attributes:
   event-min-interval ur_HK2-Solltemperatur:3600,heating.sensors.temperature.outside.value:3600,heating.circuits.1.temperature.value:3600
   event-on-change-reading .*
   loxone     ja
   oldreadings ur_error_severity
   room       Viessmann
   userReadings ur_HK2-Betriebsart_nr {
my $Betriebsart = ReadingsVal($name, 'heating.circuits.1.operating.modes.active.value', '0');
my $Betriebsart_nr = 0;
$Betriebsart_nr = 1 if($Betriebsart eq "standby");
$Betriebsart_nr = 2 if($Betriebsart eq "dhw");
$Betriebsart_nr = 3 if($Betriebsart eq "dhwAndHeating");
$Betriebsart_nr = 4 if($Betriebsart eq "dhwAndHeatingCooling");
return $Betriebsart_nr
},
ur_HK2-Solltemperatur {
my $Solltemperatur_normal = ReadingsVal($name, 'heating.circuits.1.operating.programs.normal.temperature', '0');
my $Solltemperatur_eco = ReadingsVal($name, 'heating.circuits.1.operating.programs.eco.temperature', '0');
my $Solltemperatur_comfort = ReadingsVal($name, 'heating.circuits.1.operating.programs.comfort.temperature', '0');
my $Solltemperatur_reduziert = ReadingsVal($name, 'heating.circuits.1.operating.programs.reduced.temperature', '0');
my $Solltemperatur_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.normal.active', '0');
my $Solltemperatur_eco_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.eco.active', '0');
my $Solltemperatur_comfort_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.comfort.active', '0');
my $Solltemperatur_reduziert_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.reduced.active', '0');
my $Solltemperatur = "unknown";
$Solltemperatur = $Solltemperatur_normal if ($Solltemperatur_aktiv == 1);
$Solltemperatur = $Solltemperatur_eco if ($Solltemperatur_eco_aktiv == 1);
$Solltemperatur = $Solltemperatur_comfort if ($Solltemperatur_comfort_aktiv == 1);
$Solltemperatur = $Solltemperatur_reduziert if ($Solltemperatur_reduziert_aktiv == 1);
return $Solltemperatur
},
ur_HK-Solltemperatur_Mode {
my $Solltemperatur_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.normal.active', '0');
my $Solltemperatur_eco_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.eco.active', '0');
my $Solltemperatur_comfort_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.comfort.active', '0');
my $Solltemperatur_reduziert_aktiv = ReadingsVal($name, 'heating.circuits.1.operating.programs.reduced.active', '0');
my $Mode = 0;
$Mode = 1 if ($Solltemperatur_aktiv == 1);
$Mode = 2 if ($Solltemperatur_eco_aktiv == 1);
$Mode = 3 if ($Solltemperatur_comfort_aktiv == 1);
$Mode = 4 if ($Solltemperatur_reduziert_aktiv == 1);
return $Mode
},
ur_ventilation.active.level {
my $level = 0;
$level = 0 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelOff");
$level = 1 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelOne");
$level = 2 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelTwo");
$level = 3 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelTree");
$level = 4 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelFore");
return $level
},
ur_ventilation.active.volumeFlow {
my $level = 0;
$level = 0 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelOff");
$level = 1 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelOne");
$level = 2 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelTwo");
$level = 3 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelTree");
$level = 4 if (ReadingsVal($name, 'ventilation.operating.state.level', '0') eq "levelFore");
my $Level0volumeFlow = ReadingsVal($name, 'ventilation.operating.programs.standby.volumeFlow', '0');
my $Level1volumeFlow = ReadingsVal($name, 'ventilation.operating.programs.levelOne.volumeFlow', '0');
my $Level2volumeFlow = ReadingsVal($name, 'ventilation.operating.programs.levelTwo.volumeFlow', '0');
my $Level3volumeFlow = ReadingsVal($name, 'ventilation.operating.programs.levelThree.volumeFlow', '0');
my $Level4volumeFlow = ReadingsVal($name, 'ventilation.operating.programs.levelFour.volumeFlow', '0');
$Level0volumeFlow = 0;
$Level1volumeFlow = 50;
$Level2volumeFlow = 130;
$Level3volumeFlow = 180;
$Level4volumeFlow = 235;
my $volumeFlow = 0;
$volumeFlow = $Level0volumeFlow if($level == 0);
$volumeFlow = $Level1volumeFlow if($level == 1);
$volumeFlow = $Level2volumeFlow if($level == 2);
$volumeFlow = $Level3volumeFlow if($level == 3);
$volumeFlow = $Level4volumeFlow if($level == 4);
return $volumeFlow
},
ur_error_code {
  my $raw = ReadingsVal($name, 'device.messages.errors.raw.entries', '');
  return "0" if ($raw eq "");        # Falls leer, gib 0 zurück

  # Zerlege den String an den Kommas (mit optionalen Leerzeichen)
  my @fields = split(/,\s*/, $raw);
 
  # Das zweite Element (Index 1) enthält den Fehlercode, ansonsten 0
  my $code = defined($fields[1]) && ($fields[1] ne "") ? $fields[1] : "0";
 
  return $code;
},
ur_error_severity {
  my $raw = ReadingsVal($name, 'device.messages.errors.raw.entries', '');
  return "normal operation" if ($raw eq "");
  my @fields = split(/,\s*/, $raw);
  return defined($fields[2]) && ($fields[2] ne "") ? $fields[2] : "normal operation";
},
ur_error_level {
  my $raw = ReadingsVal($name, 'device.messages.errors.raw.entries', '');
  return "0" if ($raw eq "");
  my @fields = split(/,\s*/, $raw);
  my $severity = defined($fields[2]) ? $fields[2] : "";
  if ($severity eq "note") {
    return "1";
  }
  elsif ($severity eq "warning") {
    return "2";
  }
  elsif ($severity eq "error") {
    return "3";
  }
  elsif ($severity eq "criticalError") {
    return "4";
  }
  else {
    return "5";
  }
}

   vitoconnect_installationID xxxxxx
   vitoconnect_raw_readings 1
   vitoconnect_serial 7xxxxxxxxxxxxxxxx
   vitoconnect_showKaeltekreislauf 1

Gruß
Schlimbo