QCells Q.Home energy dashboard questions

*** EDIT *** Everythings working now. All code in this first post has been changed to correct some quirks. Full installation instructions can be found some posts below:

— Original post —

This is my first thread here and I’m really learning HA these days. So any help is highly appreciated. And please, english is not my native language - so please don’t laugh :wink:

With a mix of several forum entries here I got my QCell Q.Home mostly working. But there are some questions regarding the energy dashboard left:

  1. On the energy dashboard certain values are negative. It seems that these values are turned upside down. If you look at my code below I create positive values as advised for these values. Where do the negative values on the energy dashboard come from?

  2. The graph shows all dots traveling (and values for all directions) even if the values for some directions are ‘0’. What am I doing wrong?

Many thanks in advance.

My collected solution:

How to call the QCells Cloud (max. 5 min intervall):

https://qhome-ess-g3.q-cells.eu/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxx&sn=yyyyyyyy

The result of this call:

{"success":true,"exception":"Query success!","result":{"inverterSN":"zzzzzzzz","sn":"yyyyyyyy","acpower":641.0,"yieldtoday":4.7,"yieldtotal":141.9,"feedinpower":0.0,"feedinenergy":44.98,"consumeenergy":17.15,"feedinpowerM2":0.0,"soc":24.0,"peps1":0.0,"peps2":0.0,"peps3":0.0,"inverterType":"14","inverterStatus":"102","uploadTime":"2022-11-03 09:55:19","batPower":568.0,"powerdc1":639.0,"powerdc2":636.0,"powerdc3":null,"powerdc4":null,"batStatus":"0"}}

secrets.yaml:

#xxxxxxxx=Token
#yyyyyyyy=Wifi serial
qcells_cloud: https://qhome-ess-g3.q-cells.eu/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxx&sn=yyyyyyyy

configuration.yaml:

sensor:
  - platform: rest
    name: QCells Cloud
    resource: !secret qcells_cloud
    method: GET
    scan_interval: 300
    timeout: 60
    value_template: 'OK'
    json_attributes_path: "$.result"
    json_attributes:
      - sn
      - acpower
      - yieldtoday
      - yieldtotal
      - feedinpower
      - feedinenergy
      - consumeenergy
      - feedinpowerM2
      - soc
      - peps1
      - peps2
      - peps3
      - inverterType
      - inverterStatus
      - uploadTime
      - batPower
      - powerdc1
      - powerdc2
      - powerdc3
      - powerdc4
      - batStatus
  - platform: template
    sensors:
      qcells_cloud_sn:
        friendly_name: "QCells Unique identifier of communication module"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'sn') }}"
      qcells_cloud_acpower:
        friendly_name: "QCells Inverter AC power total"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'acpower') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_yieldtoday:
        friendly_name: "QCells Inverter AC energy out daily"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'yieldtoday') }}"
        unit_of_measurement: "kWh"
        device_class: energy
      qcells_cloud_yieldtotal:
        friendly_name: "QCells Inverter AC energy out total"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'yieldtotal') }}"
        unit_of_measurement: "kWh"
        device_class: energy
      qcells_cloud_feedinpower:
        friendly_name: "QCells Grid power total"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'feedinpower') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_feedinenergy:
        friendly_name: "QCells Grid energy to Grid total"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'feedinenergy') }}"
        unit_of_measurement: "kWh"
        device_class: energy
      qcells_cloud_consumeenergy:
        friendly_name: "QCells Grid energy from Grid total "
        value_template: "{{ state_attr('sensor.qcells_cloud', 'consumeenergy') }}"
        unit_of_measurement: "kWh"
        device_class: energy
      qcells_cloud_feedinpowerm2:
        friendly_name: "QCells Inverter Meter2 AC power total"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'feedinpowerM2') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_soc:
        friendly_name: "QCells BMS energy SOC"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'soc') }}"
        unit_of_measurement: "%"
      qcells_cloud_peps1:
        friendly_name: "QCells Inverter AC EPS power 1"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'peps1') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_peps2:
        friendly_name: "QCells Inverter AC EPS power 2"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'peps2') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_peps3:
        friendly_name: "QCells Inverter AC EPS power 3"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'peps3') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_invertertype:
        friendly_name: "QCells Inverter Type"
        value_template: >-
          {% if state_attr('sensor.qcells_cloud', 'inverterType') == "1" %}
            X1-LX
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "2" %}
            X-Hybrid
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "3" %}
            X1-Hybiyd/Fit
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "4" %}
            X1-Boost/Air/Mini
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "5" %}
            X3-Hybiyd/Fit
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "6" %}
            X3-20K/30K
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "7" %}
            X3-MIC/PRO
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "8" %}
            X1-Smart
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "9" %}
            X1-AC
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "10" %}
            A1-Hybrid
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "11" %}
            A1-Fit
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "12" %}
            A1-Grid
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "13" %}
            J1-ESS
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "14" %}
            X3-Hybrid-G4
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "15" %}
            X1-Hybrid-G4
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "16" %}
            X3-MIC/PRO-G2
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "17" %}
            X1-SPT
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "18" %}
            X1-Boost/Mini-G4
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "19" %}
            A1-HYB-G2
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "20" %}
            A1-AC-G2
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "21" %}
            A1-SMT-G2
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "22" %}
            X3-FTH
          {% elif state_attr('sensor.qcells_cloud', 'inverterType') == "23" %}
            X3-MGA-G2
          {% else %}
            Unknown
          {% endif %}
      qcells_cloud_inverterstatus:
        friendly_name: "QCells Inverter status"
        value_template: >-
          {% if state_attr('sensor.qcells_cloud', 'inverterStatus') == "100" %}
            Wait Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "101" %}
            Check Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "102" %}
            Normal Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "103" %}
            Fault Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "104" %}
            Permanent Fault Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "105" %}
            Update Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "106" %}
            EPS Check Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "107" %}
            EPS Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "108" %}
            Self-Test Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "109" %}
            Idle Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "110" %}
            Standby Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "111" %}
            Pv Wake Up Bat Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "112" %}
            Gen Check Mode
          {% elif state_attr('sensor.qcells_cloud', 'inverterStatus') == "113" %}
            Gen Run Mode
          {% else %}
            Unknown status
          {% endif %}
      qcells_cloud_uploadtime:
        friendly_name: "QCells Update time"
        value_template: "{{ as_timestamp(state_attr('sensor.qcells_cloud', 'uploadTime')) | timestamp_local }}"
        device_class: timestamp
      qcells_cloud_batpower:
        friendly_name: "QCells Inverter DC Battery power total"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'batPower') }}"
        unit_of_measurement: "W"
        device_class: battery
      qcells_cloud_powerdc1 :
        friendly_name: "QCells Inverter DC PV power MPPT1"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'powerdc1') }}"
        device_class: power
        unit_of_measurement: "W"
      qcells_cloud_powerdc2:
        friendly_name: "QCells Inverter DC PV power MPPT2"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'powerdc2') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_powerdc3:
        friendly_name: "QCells Inverter DC PV power MPPT3"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'powerdc3') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_powerdc4:
        friendly_name: "QCells Inverter DC PV power MPPT4"
        value_template: "{{ state_attr('sensor.qcells_cloud', 'powerdc4') }}"
        unit_of_measurement: "W"
        device_class: power
      qcells_cloud_batstatus:
        friendly_name: "QCells BMS Status"
        value_template: >-
          {% if state_attr('sensor.qcells_cloud', 'batStatus') == "0" %}
            Self Use Mode
          {% elif state_attr('sensor.qcells_cloud', 'batStatus') == "1" %}
            Force Time Use
          {% elif state_attr('sensor.qcells_cloud', 'batStatus') == "2" %}
            Back Up Mode
          {% elif state_attr('sensor.qcells_cloud', 'batStatus') == "3" %}
            Feed-in Priority
          {% else %}
            Unknown status
          {% endif %}
# Adding all possible solar strings to one value
      qcells_cloud_powerdc_sum:
        friendly_name: "QCells Inverter DC PV power sum"
        value_template: "{{ states('sensor.qcells_cloud_powerdc1') | float(default=0) + states('sensor.qcells_cloud_powerdc2') | float(default=0) + states('sensor.qcells_cloud_powerdc3') | float(default=0) + states('sensor.qcells_cloud_powerdc4') | float(default=0) }}"
        unit_of_measurement: "W"
        device_class: power
# Calculate house load because this is not part of the Cloud result
      qcells_cloud_house_load:
        friendly_name: QCells Cloud House Load
        value_template: "{{ states('sensor.qcells_cloud_feedinpowerm2') | float(default=0) + states('sensor.qcells_cloud_acpower') | float(default=0) - states('sensor.qcells_cloud_feedinpow
er') | float(default=0) }}"
        unit_of_measurement: W
        device_class: power
# Battery is being charged
      qcells_cloud_battery_charge:
        friendly_name: QCells Cloud Battery Charge
        value_template: >
          {% if states('sensor.qcells_cloud_batpower') | float(default=0) > 0 %}
            {{ states('sensor.qcells_cloud_batpower') | float(default=0) }}
          {% else %}
            0
          {% endif %}
        unit_of_measurement: W
        device_class: power
# Battery is being discharged
      qcells_cloud_battery_discharge:
        friendly_name: QCells Cloud Battery Discharge
        value_template: >
          {% if states('sensor.qcells_cloud_batpower') | float(default=0) < 0 %}
            {{ states('sensor.qcells_cloud_batpower') | float(default=0) | abs }}
          {% else %}
            0
          {% endif %}
        unit_of_measurement: W
        device_class: power
# Feed to grid
      qcells_cloud_grid_feed:
        friendly_name: QCells Cloud Grid Feed
        value_template: >
          {% if states('sensor.qcells_cloud_feedinpower') | float(default=0) > 0 %}
            {{ states('sensor.qcells_cloud_feedinpower') | float(default=0) }}
          {% else %}
            0
          {% endif %}
        unit_of_measurement: W
        device_class: power
# Load from grid
      qcells_cloud_grid_load:
        friendly_name: QCells Cloud Grid Load
        value_template: >
          {% if states('sensor.qcells_cloud_feedinpower') | float(default=0) < 0 %}
            {{ states('sensor.qcells_cloud_feedinpower') | float(default=0) | abs }}
          {% else %}
            0
          {% endif %}
        unit_of_measurement: W
        device_class: power
# Q-Save 9.1 --> 8300W usable minus 10% minimum load multiplied by soc
# E.g. 35% soc --> 2614.5 W
      qcells_cloud_battery_usable:
        friendly_name: QCells Cloud Battery usable
        value_template: "{{ 8300 * (max(states('sensor.qcells_cloud_soc') | float(default=0) - 10, 0) / 100) }}"
        unit_of_measurement: W
        device_class: power
# Solar plus usable battery added
      qcells_cloud_solar_plus_battery_total:
        friendly_name: QCells Cloud Solar plus Battery total
        value_template: "{{ states('sensor.qcells_cloud_powerdc_sum') | float + states('sensor.qcells_cloud_battery_usable') | float }}"
        unit_of_measurement: W
        device_class: power

The values for batPower and feedinpower return negative values from the cloud call if battery is discharging or house is loading from grid. As I learned these need to be changed to positive values. That’s what I’ve done in my code above.

After that I did add Riemann sum integral helpers (via GUI) for my own calculated values (Solar, House Load, Battery Charge/Discharge and Grid Load/Feed). I did use “left”, “(k)ilo”, “(d)ay” and “decimal=2” as settings. These integrations are added to the corresponding energy dashboard values.

2 Likes

I could fix it myself. The calculations for “Battery charge/discharge” and “Grid feed/load” were wrong. I fixed it in the code above.

With that correction it’s working perfect here.

Hi there,

thank you for your post - I guess I am trying to solve the same problem, maybe you are even using the same components (as I saw from your screenshot, you have a German environment and I am in Germany too). Could you please elaborate a bit more (for dummy users/aka “beginners” :-)) how you got your environment working in HA?

All help is appreciated.

Thanks,
André

Try to call the QCells URL in my first post. You need two parameters to replace xxxxxxxx and yyyyyyyy. You get the token-id from within the QCells cloud (Menu: Service > API). You’ll find the serialnumber on your WLAN stick attached to the QCells Matebox (or in Cloud under Gerät > Wechselrichter > Registrierungsnummer). Does this work for you? We can go further after you got a result. And yes, I’m from Germany.

Top half of working Energy Dashboard:

Some entities from the code above:

Did you know you can get real time data out of these Inverters with a RS485 - USB adaptor or preferably a RS485 - Ethernet Adaptor.

These Inverters are just rebranded SolaX Gen4’s

1 Like

Thanks. Yes, I know. But I have 0% (zero) knowledge about hardware but a mass of software skills. I don’t want to touch or configure these beasts. A 5 min delay (that shows the complete data from the past 5 minutes) is fine for me.

1 Like

Thank you so much for the quick reply - and sorry for my delay, the weekend was even more busy then the week (thanks to my three kids :smile:).

Yes, I got the QCells URL working with the two parameters … but to be honest I don’t know how to integrate the result of the API call into home assistant …

André

Thanks for the tip, that would make the results even more accurate. Do you have any suggestions of which hardware to get for that?

Have a look in the Wiki Home · wills106/homeassistant-solax-modbus Wiki · GitHub there are links for the RS485 Adaptor and installation notes. Just follow along with the SolaX Gen4 as that’s what your Inverter is.

1 Like

Thanks, will do!

If you want to go the COM Port way, just do it. To be honest, working with cables, creating own ethernet ports and screwing things in and out of a inverter scares me to death.

If there does exist a working AIO device - COM-Port, matching two cables for my inverter (H34B model) pre-assembled, LAN-Port ready to fit into a switch - I would pay for it.

If you want to go the QCells/Solax Cloud way, just tell me.

I would very much prefer the cloud way, at LEAST for the beginning. These COM-Ethernet boxes seem to be more of a testing-environment and not cheap as I found out :slight_smile: So - any of your help still very much appreciated. 5 min accuracy is not too bad to beginn with :wink:

Ok.

1.) Do you know where the main directory of the HA software is located on your system? This directory does contain files like “automations.yaml” and/or “configuration.yaml”.

2.) Do you know how to manipulate files on your system?

If yes to both:

1.) Make a backup of the “configuration.yaml” file and a backup of the “secrets.yaml” file (if it already exists). With these copies you can always go back to the current state of HA. Just copy the backup files over the manipulated files in case of emergency.

2.) Start with the creation/manipulation of a file called “secrets.yaml”. If it does exist already, just change it - else create an empty file. Append the contents marked as “secrets.yaml” from my first post into that file and change the URL to the URL that does work for you. Save the “secrets.yaml” file.

3.) Look into the file called “configuration.yaml”. Is there somewhere a line with the text “sensor:” starting at the very first column?

3a.) If not: Copy the complete content marked as “configuration.yaml” from my first post into that file right above the first line at the bottom containing the text “!include”.

3b.) If the text “sensor:” does exist at the very first column somewhere in your “configuration.yaml”: Copy the complete content marked as “configuration.yaml” from my first post below that line starting with “sensor:” at the very first column. You need to leave out the first line containing “sensor:” from my contents in that case.

3c.) In my code you’ll find a calculation that starts with “8300 * 0.9”. 8300 represents the usable W of my three Q-Save Batteries. Depending on your installation you need to change that to 5500, 8300 or 11000:

4.) Navigate in your HA to the menu entry “Entwicklerwerkzeuge”. Under the Tab “YAML” you’ll see a link “Konfiguration prüfen”. Hit that. It will output “Success” in green or “Failure” in red.

On “failure” we need to investigate the error. Please post the error message here. Remember: You can always go back with your backup files.


5.) Only on success!!! Restart HA. It’s the link on the right “Neu starten”.

After the restart you should see the QCells sensors on “Einstellungen → Geräte & Dienste → Entitäten”. Filter for QCells and they will appear. Give them at least 5 minutes to show values on their “Info” tabs because five minutes is the intervall to fetch data from the QCells cloud.

6.) Now we need to add 5 (five) “Helpers” (Einstellungen → Geräte & Dienste → Helfer) of type “Integration - RiemannIntegralSensor”. The five sensors you need to create these Helpers for are:

QCells Cloud Battery Charge
QCells Cloud Battery Discharge
QCells Cloud Grid Feed
QCells Cloud Grid Load
QCells Inverter DC PV power sum

Simply add " kh" to the Helper Names in these five dialog, choose “left”, “2 digits”, “Kilo” and “Hour” as parameters always.

Create them as follows (example on QCells Cloud Battery Charge):

At the end it looks like that:

After that everything is working. Hit “Einstellungen → Dashboards ->Energy”. Here you can add the Helpers (those with the trailing “kh”) to “QCells Cloud Battery Charge kh”, “QCells Cloud Battery Discharge kh” in the Battery section. In addition add the “QCells Inverter DC PV power sum kh” to the Solar section. If you’ve setup a weather card, simply add that as solar forecast.

Now we are hitting a point where you need to decide if you want to track cost and income. If you want - look at this example for cost and income:

template:  
  - sensor:
    - name: "Strompreis"
      unit_of_measurement: "EUR/kWh"
      icon: mdi:currency-eur
      state: >
        {% if now().strftime("%Y%m%d") >= "20230101" %}
          {{ 0.5498 }}
        {% elif now().strftime("%Y%m%d") >= "20220801" %}
          {{ 0.305 }}
        {% elif now().strftime("%Y%m%d") >= "20220701" %}
          {{ 0.2371 }}
        {% elif now().strftime("%Y%m%d") >= "20200401" %}
          {{ 0.2814 }}
        {% elif now().strftime("%Y%m%d") >= "20190401" %}
          {{ 0.2582 }}
        {% else %}
          {{ 0 }}
        {% endif %}

  - sensor:
    - name: "Einspeisevergütung Strom"
      unit_of_measurement: "EUR/kWh"
      icon: mdi:currency-eur
      state: >
        {% if now().strftime("%Y%m%d") >= "20190604" %}
          {{ 0.1095 }}
        {% else %}
          {{ 0 }}
        {% endif %}

If you don’t want to track cost and income simply add “QCells Cloud Grid Feed” as “Zurück ins Netz” and “QCells Cloud Grid Load” as “Netzverbrauch” in the Energy Dashboard settings. It looks like that then:

I you want, you can now add additional cards of your choice everywhere ony your dashboards for these sensors (this time without the trailing “kh”):

QCells Inverter DC PV power sum → current Solar production (W)
QCells BMS energy SOC → current battery level (%)
QCells Inverter DC Battery power total → what’s going in or out of battery (W, +/-)
QCells Grid power total → what’s going in or out from/to the net (W, +/-)
QCells Cloud House Load → load of your home (W)
QCells Cloud Solar plus Battery total → total of current solar production and battery capacity
… and a lot more

4 Likes

Wow!!! Thank you so much for your efforts … really much appreciated. I will go through this step by step tonight or tomorrow at the latest and provide feedback. THANKS! so far.

Yeah, I guess you’ll need to print my two posts :wink:

I absolutely did :slight_smile: Thank you again for this massive post - it worked flawlessly!!! I got it up and running. For everybody trying to follow this great guide as well, just one hint: You (obviously) cannot add the helpers to the “Energy-dashboard” unless they received their first data from the cloud. In my case I cannot add the helpers for “battery discharge” and “grid load” just because I am not using my battery at the moment and I am not receiving energy from the grid (meaning I am producing enough with my panels at the moment).

REALLY appreciate the help! Thanks again!

Glad it worked for you.

One thought: I’m not pretty sure if you should keep that battery sensors then in “configuration.yaml”. I did “default” most of the data to “0”. That means they will work - but produce “0”. If you keep these sensors and you add the battery later I have no idea how that changes the meaning of values.

So if you don’t have batteries ATM, I would comment (“#” in the first column) these complete blocks:

qcells_cloud_battery_charge:
qcells_cloud_battery_discharge:
qcells_cloud_battery_usable:
qcells_cloud_solar_plus_battery_total:

I wrote that massive post to keep that knowledge for me and others.

1 Like

Dear welcomeha,

Thanks for spending a lot of time writing this post. I followed your explanations to a point where I get the sensor data of my PV system from the cloud. It would be great if you also could share the configuration behind your graphs like “Energieverbrauch” and “Energieverteilung”. Your dashboards are in a perfect shape. Not sure if there is also a yaml that describes the configurations, or if they have to be build using a graphical interface ? Any additional hints about the visualisation are very much appreciated…

best regards,
Harald

This is not from me. If you add the correct entities to the “Energy Dashboard” (shown above) they are presented by HA itself.

Hello,

first of all I would like to thank you for your great work and the detailed instructions! It was very helpful for me!

I have now built everything into my Homeassitant and get the data from the cloud.

Unfortunately, I have a problem with the values when the cloud is not available for a short time. Zero values are then always saved which break my graphs. Do you have an idea how to solve this? It would be sufficient for me if no measuring point is generated at all when the cloud is not available.