Solax X3-Hybrid G4 Wifi Firmware Solax module fw version 3.003.02 Home Assistant Integration

Hi, Is there any possibility to adopt this code for X3-MIC/PRO without batteries. I’m a little confused about the data being pulled directly from the wifi stick. The first 18 data are OK, but beyond that I can’t figure out where to look for “Summary and statistic sensors”, “Today’s statistics” and “Total values for Energy panel”. Which is the correct row to get this data?
e.g. this is my data now when not producing:
Data: >-
[0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3958, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65069, 65535, 20417, 0, 44174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Compare the values in the data array, when you find the correct value in the data array count the column (88) it is in (easiest to use excel), keep in mind the first column is 0 and the figures in the arrays never have decimals, so you need to compare without decimals and then divide it in the sensor (/100)
just an example:

  • name: “Solax Grid in total”
    state: “{{state_attr(‘sensor.solax’, ‘Data’)[88]) | float / 100 }}”
    unit_of_measurement: “kWh”
    device_class: “energy”

Did you find any other changes for the X3-MIC-G2 inverters?
I’m waiting for the electrician to connect mine to the grid so at the moment I only get very limited info from the rest api (it powers up on DC but goes into error GRID error).

Hi all, I have tried this method to get the data locally, and not via Cloud API. I encounter 2 problems:

  1. when I try the URL in a browser to check the output of my Solax via URL http://5.8.8.8/optType=ReadRealTimeData&pwd=SW… I get an error Page not Found.
  1. I get an error when i am editing the templates.yaml:
    Property platform is not allowed
    Property sensors is not allowed

I didn’t had a previous templates.yaml file so I made a new file and put ‘template: !:include templates.yaml’ in configuration.yaml.

In the logs of HA I see a warning: REST result could not be parsed as JSON.

I have a Solax X1 Boost (X1-5.0-T) invertor, firmware 2.034.06. The setup-page is working fine, so it is not a network related issue.

What is going wrong?

By the way: I came across another solution where it is not neccessary to connect via Wifi to Solax invertor. It works via MQTT and a DNS spoof to redirect the data send to cloud to your local MQTT server.

I’m more of a conceptual guy, so I don’t know it this is a good alternative to the solution in this post.

More info about the MQTT thing:
Local SolaX data | Blue Duck Valley Rd (juju.nz)

runedegroot/SolaxMQTTBridge: Bridge to connect Solax inverters with MQTT and Home Assistant (github.com)

1 Like

trying the local api IP plus payload link in a browser, it wants me to log in, is there something wrong with the settings or does the payload pass this.

On the USB Stick you have the username and the password, its in the QR Code

the QR code on the wifi dongle? it returns the SN.

I’m in the process of buying an photovoltaic with SOLAX inverter. Currently including PocketLan Adapter. Is this solution also working via Ethernet or should I chance my order to PocketWifi?

I have tried the LAN adapter and i didn’t get it working. Only Wifi Adapter works.

Hi colleague. I have an X3-PRO Series inverter X3-10.0P-T-D with Solax Pocket Wifi V2.0 with firmare 2.034.06 (modded, unlocked firmare by ChriSoft).
Home Assistant 2023.2.5
Supervisor 2023.01.1
Operating System 9.5

I get a normal response from my inverter to the request from my LAN.
curl -d "optType=ReadRealTimeData&pwd=XXXXXX" -X POST http://192.168.1.192

{"sn":"SWXXXXXXXX","ver":"2.034.06","type":7,"Data":[2477,2484,2559,28,28,29,672,656,713,7340,7354,15,14,1035,994,5000,5003,5000,2,22156,1,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,8,10000,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,65516,65535,42498,4,27669,57,2041,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],		"Information":[10.000,7,"MU103TH4222001",1,1.27,1.02,1.30,1.02,0.00,1]}

I added lines from 1 and 2 posts to my configuration.yml. I replaced all XXXXXX with my numbers.
After adding the section rest:, HA receives all the data, I see this in the logs.
But when I add the second part, where the lines are:
- platform: template
sensors:
###Solax
- name: solax (and etc)
Then when checking the configuration, I get the following error:

Configuration invalid!
Error loading /config/configuration.yaml: while parsing a block mapping
in "/config/configuration.yaml", line 3, column 1
expected <block end>, but found '-'
in "/config/configuration.yaml", line 46, column 1

What am I doing wrong?
My configuration.yaml attached
Many thanks.

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
#
#
#
#
## solax REST command inserted below
### Solax REST command online sensor ###
rest:
  - authentication: digest
    scan_interval: 30
    resource: http://192.168.1.192/                      # IP of Solax Pocket WIFI V2 w/moded 
    payload: "optType=ReadRealTimeData&pwd=XXXXXX"       # The real password has been replaced with XXXXXX
    method: POST
    headers: 
      Content-Type: "application/x-www-form-urlencoded"
    sensor:
      - name: "solax_rest_data"
        json_attributes:
        - sn
        - ver
        - type
        - Data
        - Information
        value_template: 'OK'  # dummy value, not used; avoids the "State max length is 255 characters" error
## solax REST command inserted above
#
#
# solax templates inserted below
- platform: template
  sensors:

###Solax
  - name: solax
    state: > 
            {% if state_attr('sensor.solax_rest_data', 'sn') == "SWXXXXXXXX"  %}{{ now() }}
            {% else %}{{ (states('sensor.solax')) }}{% endif %}
    attributes: 
      sn: >-
            {% if state_attr('sensor.solax_rest_data', 'sn') == "SWXXXXXXXX" %}{{ (state_attr('sensor.solax_rest_data', 'sn')) }}
            {% else %}{{ (state_attr('sensor.solax', 'sn')) }}{% endif %}
      ver: >-
          {% if state_attr('sensor.solax_rest_data', 'sn') == "SWXXXXXXXX" %}{{ (state_attr('sensor.solax_rest_data', 'ver')) }}
          {% else %}{{ (state_attr('sensor.solax', 'ver')) }}{% endif %}
      type: >-
          {% if state_attr('sensor.solax_rest_data', 'sn') == "SWXXXXXXXX" %}{{ (state_attr('sensor.solax_rest_data', 'type')) }}
          {% else %}{{ (state_attr('sensor.solax', 'type')) }}{% endif %}
      Data: >-
          {% if state_attr('sensor.solax_rest_data', 'sn') == "SWXXXXXXXX" %}{{ (state_attr('sensor.solax_rest_data', 'Data')) }}
          {% else %}{{ (state_attr('sensor.solax', 'Data')) }}{% endif %}
      Information: >-
          {% if state_attr('sensor.solax_rest_data', 'sn') == "SWXXXXXXXX" %}{{ (state_attr('sensor.solax_rest_data', 'Information')) }}
          {% else %}{{ (state_attr('sensor.solax', 'Information')) }}{% endif %}

###AC detailed information
  - name: "Solax L1 Voltage"
    state: "{{ state_attr('sensor.solax', 'Data')[0] | int(default=2300) / 10}}"
    unit_of_measurement: "V"
    device_class: "voltage"

  - name: "Solax L2 Voltage"
    state: "{{ state_attr('sensor.solax', 'Data')[1] | int(default=2300) / 10}}"
    unit_of_measurement: "V"
    device_class: "voltage"

  - name: "Solax L3 Voltage"
    state: "{{ state_attr('sensor.solax', 'Data')[2] | int(default=2300) / 10 }}"
    unit_of_measurement: "V"
    device_class: "voltage"

  - name: "Solax L1 Current"
    state: >
      {% if state_attr('sensor.solax', 'Data')[3] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[3] - 65536) | int(default=0) / 10 }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[3] | int(default=0) / 10 }}{% endif %}
    unit_of_measurement: "A"
    device_class: "current"

  - name: "Solax L2 Current"
    state: >
      {% if state_attr('sensor.solax', 'Data')[4] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[4] - 65536) | int(default=0) / 10 }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[4] | int(default=0) / 10 }}{% endif %}
    unit_of_measurement: "A"
    device_class: "current"

  - name: "Solax L3 Current"
    state: >
      {% if state_attr('sensor.solax', 'Data')[5] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[5] - 65536) | int(default=0) / 10 }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[5] | int(default=0) / 10 }}{% endif %}
    unit_of_measurement: "A"
    device_class: "current"

  - name: "Solax L1 Power"
    state: >
      {% if state_attr('sensor.solax', 'Data')[6] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[6] - 65536) | int(default=0) }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[6] | int(default=0) }}{% endif %}
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax L2 Power"
    state: >
      {% if state_attr('sensor.solax', 'Data')[7] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[7] - 65536) | int(default=0) }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[7] | int(default=0) }}{% endif %}
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax L3 Power"
    state: >
      {% if state_attr('sensor.solax', 'Data')[8] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[8] - 65536) | int(default=0) }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[8] | int(default=0) }}{% endif %}
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax Total AC Power"
    state: >
      {% if state_attr('sensor.solax', 'Data')[9] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[9] - 65536) | int(default=0) }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[9] | int(default=0) }}{% endif %}
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax L1 Frequency"
    state: "{{ state_attr('sensor.solax', 'Data')[16] | int(default=5000) / 100}}"
    unit_of_measurement: "Hz"
    device_class: "frequency"

  - name: "Solax L2 Frequency"
    state: "{{ state_attr('sensor.solax', 'Data')[17] | int(default=5000) / 100}}"
    unit_of_measurement: "Hz"
    device_class: "frequency"

  - name: "Solax L3 Frequency"
    state: "{{ state_attr('sensor.solax', 'Data')[18] | int(default=5000) / 100}}"
    unit_of_measurement: "Hz"
    device_class: "frequency"

### Solax Summary and statistic sensors ###
  - name: "Solax Feed-in Power"
    state: >
      {% if state_attr('sensor.solax', 'Data')[34] > 32767 %}{{ state_attr('sensor.solax', 'Data')[34] - 65536 }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[34] }}{% endif %}
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax Consumption"
    state: >
      {% if state_attr('sensor.solax', 'Data')[47] > 32767 %}{{ state_attr('sensor.solax', 'Data')[47] - 65536 }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[47] }}{% endif %}
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax Energy total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[69] * 65536) + state_attr('sensor.solax', 'Data')[68]) | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

### Today's statistics ###
  - name: "Solax Grid out today"
    state: "{{ state_attr('sensor.solax', 'Data')[90] | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Grid in today"
    state: "{{ state_attr('sensor.solax', 'Data')[92] | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Battery discharge today"
    state: "{{ state_attr('sensor.solax', 'Data')[78] | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Battery charge today"
    state: "{{ state_attr('sensor.solax', 'Data')[79] | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Energy today"
    state: "{{ state_attr('sensor.solax', 'Data')[82] | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Energy incl battery today"
    state: "{{ state_attr('sensor.solax', 'Data')[70] | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

### Total values for Energy panel - needs customization in customize.yaml ###
  - name: "Solax Solar energy total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[81] * 65536) + state_attr('sensor.solax', 'Data')[80]) | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Grid out total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[87] * 65536) + state_attr('sensor.solax', 'Data')[86]) | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Grid in total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[89] * 65536) + state_attr('sensor.solax', 'Data')[88]) | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Consumption total"
    state: "{{ state_attr('sensor.solax', 'Data')[88] | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Battery discharge total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[75] * 65536) + state_attr('sensor.solax', 'Data')[74]) | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Battery charge total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[77] * 65536) + state_attr('sensor.solax', 'Data')[76]) | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

### PV detailed information ###      
  - name: "Solax PV1 Voltage"
    state: "{{ state_attr('sensor.solax', 'Data')[10] | int(default=0) / 10}}"
    unit_of_measurement: "V"
    device_class: "voltage"

  - name: "Solax PV2 Voltage"
    state: "{{ state_attr('sensor.solax', 'Data')[11] | int(default=0) / 10}}"
    unit_of_measurement: "V"
    device_class: "voltage"
    
  - name: "Solax PV1 Current"
    state: "{{ state_attr('sensor.solax', 'Data')[12] | int(default=0) / 10 }}"
    unit_of_measurement: "A"
    device_class: "current"
    
  - name: "Solax PV2 Current"
    state: "{{ state_attr('sensor.solax', 'Data')[13] | int(default=0) / 10 }}"
    unit_of_measurement: "A"
    device_class: "current"

  - name: "Solax PV1 Power"
    state: "{{ state_attr('sensor.solax', 'Data')[14] | int(default=0) }}"
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax PV2 Power"
    state: "{{ state_attr('sensor.solax', 'Data')[15] | int(default=0) }}"
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax Total PV Power"
    state: "{{ (states('sensor.solax_pv1_power')|int + states('sensor.solax_pv2_power')|int) }}"
    unit_of_measurement: "W"
    device_class: "power"

### Battery detailed information ###      
  - name: "Solax Battery Voltage"
    state: "{{ state_attr('sensor.solax', 'Data')[39] | float / 100}}"
    unit_of_measurement: "V"
    device_class: "voltage"

  - name: "Solax Battery Current"
    state: >
      {% if state_attr('sensor.solax', 'Data')[40] > 32767 %}{{ (state_attr('sensor.solax', 'Data')[40] - 65536) / 100 }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[40] / 100 }}{% endif %}
    unit_of_measurement: "A"
    device_class: "current"

  - name: "Solax Battery Power"
    state:  >
      {% if state_attr('sensor.solax', 'Data')[41] > 32767 %}{{ state_attr('sensor.solax', 'Data')[41] - 65536 }}
      {% else %}{{ state_attr('sensor.solax', 'Data')[41] }}{% endif %}
    unit_of_measurement: "W"
    device_class: "power"

  - name: "Solax Battery SoC"
    state: "{{ state_attr('sensor.solax', 'Data')[103] | int(default=0) }}"
    unit_of_measurement: "%"

  - name: "Solax Battery Remain Energy"
    state: "{{ state_attr('sensor.solax', 'Data')[106] | int(default=0) / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Battery Temperature"
    state: "{{ state_attr('sensor.solax', 'Data')[105] | int(default=0) }}"
    unit_of_measurement: "C"
    device_class: "temperature"

  - name: "Solax Battery BMS status"
    state:  >
      {% if state_attr('sensor.solax', 'Data')[45] | int == 1 %}OK
      {% else %}Fail{% endif %}
    unit_of_measurement: "%"

### Total values for Energy panel - needs customization in customize.yaml ###
  - name: "Solax Solar energy total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[81] * 65536) + state_attr('sensor.solax', 'Data')[80]) | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"
    state_class: total_increasing

  - name: "Solax Grid out total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[87] * 65536) + state_attr('sensor.solax', 'Data')[86]) | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Grid in total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[89] * 65536) + state_attr('sensor.solax', 'Data')[88]) | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Consumption total"
    state: "{{ state_attr('sensor.solax', 'Data')[88] | float / 100 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Battery discharge total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[75] * 65536) + state_attr('sensor.solax', 'Data')[74]) | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

  - name: "Solax Battery charge total"
    state: "{{ ((state_attr('sensor.solax', 'Data')[77] * 65536) + state_attr('sensor.solax', 'Data')[76]) | float / 10 }}"
    unit_of_measurement: "kWh"
    device_class: "energy"

### Invertor modes, states ###
  - name: "Solax Battery Operation Mode"
    state: >
      {%   if state_attr('sensor.solax', 'Data')[168] == 0 %}Self Use Mode
      {% elif state_attr('sensor.solax', 'Data')[168] == 1 %}Force Time Use
      {% elif state_attr('sensor.solax', 'Data')[168] == 2 %}Back Up Mode
      {% elif state_attr('sensor.solax', 'Data')[168] == 3 %}Feed-in Priority
      {% else %}I dont know{% endif %}

  - name: "Solax Inverter Operation Mode"
    state: >
      {%   if state_attr('sensor.solax', 'Data')[19] ==  0 %}Waiting
      {% elif state_attr('sensor.solax', 'Data')[19] ==  1 %}Checking
      {% elif state_attr('sensor.solax', 'Data')[19] ==  2 %}Normal
      {% elif state_attr('sensor.solax', 'Data')[19] ==  3 %}Off
      {% elif state_attr('sensor.solax', 'Data')[19] ==  4 %}Permanent Fault
      {% elif state_attr('sensor.solax', 'Data')[19] ==  5 %}Updating
      {% elif state_attr('sensor.solax', 'Data')[19] ==  6 %}EPS Check
      {% elif state_attr('sensor.solax', 'Data')[19] ==  7 %}EPS Mode
      {% elif state_attr('sensor.solax', 'Data')[19] ==  8 %}Self Test
      {% elif state_attr('sensor.solax', 'Data')[19] ==  9 %}Idle
      {% elif state_attr('sensor.solax', 'Data')[19] == 10 %}Standby
      {% else %}I dont know{% endif %}

### Invertor and management module information ###
  - name: "Solax Module SN"
    state: "{{ state_attr('sensor.solax', 'sn') }}"

  - name: "Solax module fw version"
    state: "{{ state_attr('sensor.solax', 'ver') }}"

  - name: "Solax type"
    state: >  # Other Solax invertor type are described in web API manual
      {% if state_attr('sensor.solax', 'type') == 14 %}X3-Hybrid G4
      {% else %}Other{% endif %}

  - name: "Solax Inverter SN"
    state: "{{ state_attr('sensor.solax', 'Information')[2] }}"

  - name: "Solax Inverter Nominal Power"
    state: "{{ state_attr('sensor.solax', 'Information')[0] | float | round(1) }}"
    unit_of_measurement: "kW"

### Test parameters ###
  - name: "Solax Inverter Temperature inner ?"
    state: "{{ state_attr('sensor.solax', 'Data')[46] | int(default=0) }}"
    unit_of_measurement: "C"
    device_class: "temperature"

  - name: "Solax Inverter Temperature ?"
    state: "{{ state_attr('sensor.solax', 'Data')[54] | int(default=0) }}"
    unit_of_measurement: "C"
    device_class: "temperature"
#
# solax templates inserted above
#
#
#
#
sensor:
  - platform: rest
    resource: https://api.weatherlink.com/v1/(...url next skipped...)

    scan_interval: 300
    name: weatherlink
    json_attributes:
        - temp_c
        - relative_humidity
        - pressure_mb
        - rain_day_in
        - wind_degrees
        - temp_in_f
        - wind_mph
        - solar_radiation
        - davis_current_observation

    value_template: '{{ value_json.weatherlink }}'
  - platform: template
    sensors:

      davis_outside_temp:
        unique_id: davis_temp_out
        friendly_name: 'Davis street temperature'
        unit_of_measurement: '°C'
        device_class: 'temperature'
        value_template: "{{ state_attr('sensor.weatherlink', 'temp_c') }}"

      davis_luftfeuchte:
        unique_id: davis_luftfeuchte
        friendly_name: 'Davis_Luftfeuchte'
        unit_of_measurement: '%'
        device_class: 'humidity'
        value_template: "{{ state_attr('sensor.weatherlink', 'relative_humidity') }}"

      davis_inside_temp:
        unique_id: davis_temp_in
        friendly_name: 'Davis temperature inside'
        value_template: '{{ ((states.sensor.weatherlink.attributes["davis_current_observation"]["temp_in_f"] | float - 32) * (5/9)) | round(1) }}'
        unit_of_measurement: '°C'
        device_class: 'temperature'

      davis_wind_kmh:
        unique_id: davis_kmh
        friendly_name: 'Davis_Wind'
        unit_of_measurement: 'Km/h'
        value_template: "{{ ((state_attr('sensor.weatherlink', 'wind_mph') |float) * 1.61 )|round(1)}}"

      davis_wind_richtung:
        unique_id: davis_wind_richtung
        friendly_name: 'Davis wind direction'
        unit_of_measurement: '°'
        value_template: "{{ state_attr('sensor.weatherlink', 'wind_degrees') }}"

      davis_solar:
        unique_id: davis_solar
        friendly_name: 'Davis_Solar'
        unit_of_measurement: 'w/m²'
        value_template: '{{ states.sensor.weatherlink.attributes["davis_current_observation"]["solar_radiation"]  }}'

      davis_regen:
        unique_id: davis_regen
        friendly_name: 'Davis rainfall'
        device_class: water
        unit_of_measurement: 'mm'
        value_template: '{{ ((states.sensor.weatherlink.attributes["davis_current_observation"]["rain_day_in"] | float * 25.4)) | round(1) }}'

      davis_luftdruck:
        unique_id: davis_luftdruck
        friendly_name: 'Davis pressure' 
        unit_of_measurement: 'hPa'
        value_template: "{{ state_attr('sensor.weatherlink', 'pressure_mb') }}"
        device_class: 'pressure'

Have a look on the template example, i think the “-” shouldn’t be in front of the template

template:

  • sensor:
    • name:

I personal prefer to have the templates split in the extra file, as it makes the configuration file smaller.

hey. I finally got this to work, thank you for your work.

i notice that the data differs slightly with the App data? Is this normal or is something off with the calculations?

Yes, i also have a very small difference. Today in home assistant: 42,2kWh and Solax shows 41,5kWh. But there is no calculation done in the code, its just a daily delta of the full production.

just saw that i have the section ### Total values for Energy panel - needs customization in customize.yaml ### twice in the code of the template.
Removed it from the original post.

Ah ok. Well good, then its not just me. I couldnt tell what the values did with the data.

Thx again for this, its nice to pair this accuracy with my power meter values.

So today is the first day after installing this and i dont seem to have any data in the app. The integration into HA is working fine, but the app doesnt have any data and lists the device as offline. Is this a common thing or is something wierd going on. Confirmed with a friend that its not an overall solax app thing.

My thinking is that when production started and the system came online from wait mode, it didnt connect properly, but worked testerday when the connection was established beforehand

To be honest, i never use the solax app, only home assistant. Just checked now, app seems fine.
But i have an alert set so in case my system goes offline i get a mail.
That only happened once at the early start.

Ok. I tried reconnecting the PocketWifi to the wifi. HA is pulling the data through the wifi connection so it shouldnt be that. Hopefully its a one time thing.

Solax servers are pretty unreliable and seeing the Solax app having issues to connect or get data is pretty common I would say.
That’s why we all strive to get the data locally and not from the cloud…