logo

App update v2.9

We hebben een nieuwe update van de app (versie 2.0) uitgebracht waarmee het nog makkelijker is om meerdere omvormers uit te lezen uit onze publieke API en dit te verwerken in je eigen applicatie, denk hierbij aan HomeAssistant of Domoticz.

Hieronder de stappen voor het update en een klein voorbeeld van de nieuwe API structuur en hoe je dit bijvoorbeeld uit kan lezen in HomeAssistant.

Stap 1 - Installeer de update

Eerst dien je versie 2.9 van de app te hebben gëinstalleerd vanuit de App Store / Play Store.

Stap 2 - Installeer de nieuwe firmware

Na het update van de App kan je de Firmware van de module updaten. Dit kan je doen door naar settings - Daytopper Module te gaan en op de update knop te drukken.

Let erop dat je wel in het zelfde netwerk als de module moet zitten.

Stap 3 - Output API

Wanneer je zowel de App als de Firmware hebt geupdate en de module is opnieuw gestart, kan je de nieuwe output API gebruiken. Dit kan je doen door naar https://daytopper.local. Je ziet nu de output waarbij we de property solarReadings hebben toegevoegd. Dit is een object dat de gegevens van de verschillende omvormers bevat.

Onderstaand een voorbeeld van de output:

{
  "solarReadings": {
    "enphase": {
      "timestamp": 1745334603,
      "current": 369,
      "total": 9655909,
      "error": "",
      "loggerError": ""
    },
    "solax": {
      "timestamp": 1745334610,
      "current": 2102,
      "total": 18139100,
      "error": "",
      "loggerError": ""
    }
  },
  "solarReadingTotal": {
    "timestamp": 1745334610,
    "current": 2471,
    "total": 27795009,
    "error": "",
    "loggerError": ""
  },
  "system": {
    "chipId": "xxxxxxxxxxxxxx",
    "wifiHostname": "daytopper-xxxxxxx",
    "wifiStrengthRaw": -52,
    "wifiStrength": "Good",
    "firmwareVersion": 20,
    "cpuFrequency": "80 Mhz",
    "ip": "192.168.1.100",
    "upSince": "2025-04-15 12:44:11",
    "lastApiCall": 1745334613,
    "rebootReason": 1,
    "resetReasonCore0": "POWERON_RESET",
    "resetReasonCore1": "EXT_CPU_RESET"
  }
}

Stap 4 - koppelen aan HomeAssistant

Met deze output is het nu heel makkelijk om de data in te lezen in HomeAssistant. Dit kan je doen door de volgende configuratie toe te voegen aan je configuration.yaml bestand.

sensor:
  - platform: rest
    name: "Solar Daytopper API"
    resource: "http://daytopper.local"
    json_attributes:
      - solarReadings
    method: GET
    value_template: "{{ now().timestamp() }}"
    scan_interval: 60

En aan je template.yaml bestand kan je de daardwerkelijk omvormers als sensor toevoegen.

- sensor:
  - name: "Solar Solax Power"
    state: "{{ state_attr('sensor.solar_daytopper_api', 'solarReadings')['solax']['current'] }}"
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement

  - name: "Solar Solax Total"
    state: >-
      {% set current_value = states('sensor.solar_solax_total') | float(0) %}
      {% set new_value = current_value %}

      {% if state_attr('sensor.solar_daytopper_api', 'solarReadings') is defined and state_attr('sensor.solar_daytopper_api', 'solarReadings')['solax']['total'] is not none %}
        {% set api_value = (state_attr('sensor.solar_daytopper_api', 'solarReadings')['solax']['total'] / 1000) | round(2) %}
        {% if api_value > current_value %}
          {% set new_value = api_value %}
        {% endif %}
      {% endif %}

      {{ new_value }}
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: total_increasing

  - name: "Solar Enphase Power"
    state: "{{ state_attr('sensor.solar_daytopper_api', 'solarReadings')['enphase']['current'] }}"
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement

  - name: "Solar Enphase Total"
    state: >-
      {% set current_value = states('sensor.solar_enphase_total') | float(0) %}
      {% set new_value = current_value %}

      {% if state_attr('sensor.solar_daytopper_api', 'solarReadings') is defined and state_attr('sensor.solar_daytopper_api', 'solarReadings')['enphase']['total'] is not none %}
        {% set api_value = (state_attr('sensor.solar_daytopper_api', 'solarReadings')['enphase']['total'] / 1000) | round(2) %}
        {% if api_value > current_value %}
          {% set new_value = api_value %}
        {% endif %}
      {% endif %}

      {{ new_value }}
    unit_of_measurement: "kWh"
    device_class: energy
    state_class: total_increasing
    

Home assistant

Solar dashboard in HomeAssistant