Onduleur SOLAX POWER

Type installation : ODROID C4
Version HA : OS 5.9
Ver. Supervisor : 2020.12.7

Je lance un nouveau sujet. Je voudrais pouvoir afficher dans l’aperçu de HA les valeurs de tension, courant et autres récupérées de mon onduleur SOLAX POWER BOOST X1 5KVA.
Quelqu’un aurait-il une idée pour intégrer mon onduleur dans cet univers fantastique qui est HOME ASSISTANT ?

Ça, ça le fait pas :

?

J’ai le même problème.

j’ai déjà un « vieux » solax qui fonctionne très bien avec le module intégré de home assistant.
Ce « vieux » solax historise ses infos sur « solax portal »

J’ai reçu un nouveau solax , qui lui archive ses données sur « solax cloud » ,
mais surtout qui n’expose plus ses infos sur le wi-fi client. Donc incompatible avec le module home assistant
Le lien suivant donne une solution pour collecter les infos depuis le cloud
https://community.home-assistant.io/t/pv-solax-inverter-cloud-sensors-via-api/277874

C’est bien le cloud , mais limité a 1000 requêtes jour.

Par contre l’API est toujours disponible quand on est connecté au réseau wi-fi du solax , et connecté a son IP 5.8.8.8.
Ce qui permettrait d’utiliser le module home assistant solax

Mon HA est sur un raspberry connecté en rj45 utilisant la rom raspbian HA.
Mon idée serait d’ajouter un dongle wi-fi pour se connecter au réseau wi-fi du solax
Ainsi, j’aurais 2 interface IP sur mon raspberry : wifi pour les ip en 5.8.x.x et rj45 pour tout le reste

Je délire ou pas ? auriez-vous quelques liens pour noob pour ce paramétrage sur raspbian ?

Bonjour, quand est il de vos essais avec la connexion au réseau du dongle en 5.8.8.8 ? J’ai 2 onduleurs Solax, et j’aimerai bien rapporter les infos dans HA.
La solution de @Clemalex ne fonctionne pas :disappointed:

Merci.

Bonjour,

La solution de clemalex fonctionne toujours de mon coté.
juste bidouillé un peu la recup du total yeld de mon coté.
Et perso , pour la valeur « temps reel » j’ai une pince de mesure de mon ecocompteur.
Je ne suis pas partit sur une double interface web sur raspberry , la distribution HA étant plutot verrouillée et sécurisée.

Pour dépanner la solution de clemalex ,

  • Avez-vous bien accès a l’interface du site Solax Cloud ?
  • voyez-vous l’onduleur sur le site ?
  • avez-vous crée l’API token ?
  • avec token et nom onduleur , cela remonte bien le json quand vous mettez l’URL sur votre navigateur internet ?
sensor:
  - platform: rest
    scan_interval: 120
    resource: https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=202202221728123456789123456789&sn=SWxxxxxxxxx
    name: "Solax X1"
    json_attributes_path: "$.result"
    json_attributes:
      - yieldtoday
      - yieldtotal
      - acpower
      - uploadTime
      - inverterStatus
    value_template: '1'  # dummy value, not used; avoids the "State max length is 255 characters" error
  - platform: template
    sensors:
      solax_x1_today:
        friendly_name: "Solax X1 today"
        device_class: energy
        value_template: "{{ state_attr('sensor.solax_x1', 'yieldtoday') | float(-1) }}"
        unit_of_measurement: "kWh"
      solax_x1_total_raw:
        value_template: "{{ state_attr('sensor.solax_x1', 'yieldtotal') | float(-1) }}"
      solax_x1_total:
        friendly_name: "Solax X1 total"
        device_class: energy
        value_template: >-
          {% set truc = states('sensor.solax_x1_total_raw') | float(-1) %}
          {% set trub = states('sensor.solax_x1_total') | float(-1) %}
          {% if truc < 8000 %}  
              {{ trub }}
          {% else %} 
              {{ truc }}
          {% endif %}
        unit_of_measurement: "kWh"
      solax_x1_now:
        friendly_name: "Solax X1 now"
        device_class : power
        value_template: "{{ state_attr('sensor.solax_x1', 'acpower') | int(-1) }}"
        unit_of_measurement: "W"
      solax_x1_upload_time:
        friendly_name: "Solax X1 upload time"
        value_template: "{{ state_attr('sensor.solax_x1', 'uploadTime') | float(-1)  }}"
      solax_x1_status:
        friendly_name: "Solax X1 status"
        value_template: >
          {% if state_attr('sensor.solax_x1', 'inverterStatus') == '100' %}Wait
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '101' %}Check
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '102' %}Normal
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '103' %}Fault
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '104' %}Permanent Fault
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '105' %}Update
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '106' %}EPS Check
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '107' %}EPS
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '108' %}Self-test
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '109' %}Idle
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '110' %}Standby
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '111' %}Pv Wake Up Bat
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '112' %}Gen Check
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '113' %}Gen Run
          {% else %}I dont know{% endif %}

Bonjour,

  • Avez-vous bien accès a l’interface du site Solax Cloud ? = OUI
  • voyez-vous l’onduleur sur le site ? OUI
  • avez-vous crée l’API token ? OUI
  • avec token et nom onduleur , cela remonte bien le json quand vous mettez l’URL sur votre navigateur internet ? OUI

Merci pour votre réponse. Je creuse donc du côté de cette solution, mais étant novice, je ne sais pas comment intégrer ce code à HA.

Pour integrer le code , il faut le placer dans le fichier configuration.yaml

Ajoute un editeur de fichier a HA et tu y accedera directement

je galère grave pour intégrer mes 2 onduleurs. Je me base sur ce post : https://community.home-assistant.io/t/pv-solax-inverter-cloud-sensors-via-api/277874/35

Mais je ne sais pas ou mettre ce code :

## X3 ##
- platform: rest
  resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=202102060300yyyyyyy&sn=SWXXXXXXX
  name: "Solax X3"
  json_attributes_path: "$.result"
  json_attributes:
    - yieldtoday
    - yieldtotal
    - acpower
    - uploadTime
    - inverterStatus
  value_template: '1'  # dummy value, not used; avoids the "State max length is 255 characters" error
- platform: template
  sensors:
    solax_x3_today:
      friendly_name: "Solax X3 today"
      value_template: "{{ state_attr('sensor.solax_x3', 'yieldtoday') }}"
      unit_of_measurement: "KWh"
    solax_x3_total:
      friendly_name: "Solax X3 total"
      value_template: "{{ state_attr('sensor.solax_x3', 'yieldtotal') }}"
      unit_of_measurement: "KWh"
    solax_x3_now:
      friendly_name: "Solax X3 now"
      value_template: "{{ state_attr('sensor.solax_x3', 'acpower') }}"
      unit_of_measurement: "W"
    solax_x3_upload_time:
      friendly_name: "Solax X3 upload time"
      value_template: "{{ state_attr('sensor.solax_x3', 'uploadTime') }}"
    solax_x3_status:
      friendly_name: "Solax X3 status"
      value_template: >
        {% if state_attr('sensor.solax_x3', 'inverterStatus') == '100' %}Wait
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '101' %}Check
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '102' %}Normal
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '103' %}Fault
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '104' %}Permanent Fault
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '105' %}Update
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '106' %}EPS Check
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '107' %}EPS
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '108' %}Self-test
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '109' %}Idle
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '110' %}Standby
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '111' %}Pv Wake Up Bat
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '112' %}Gen Check
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '113' %}Gen Run
        {% else %}I dont know{% endif %}

## X1 ##
- platform: rest
  resource: https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=20210517200601yyyyyyyyyyyy&sn=SWXXXXXXXXX
  name: "Solax X1"
  json_attributes_path: "$.result"
  json_attributes:
    - yieldtoday
    - yieldtotal
    - acpower
    - uploadTime
    - inverterStatus
  value_template: '1'  # dummy value, not used; avoids the "State max length is 255 characters" error
- platform: template
  sensors:
    solax_x1_today:
      friendly_name: "Solax X1 today"
      value_template: "{{ state_attr('sensor.solax_x1', 'yieldtoday') }}"
      unit_of_measurement: "KWh"
    solax_x1_total:
      friendly_name: "Solax X1 total"
      value_template: "{{ state_attr('sensor.solax_x1', 'yieldtotal') }}"
      unit_of_measurement: "KWh"
    solax_x1_now:
      friendly_name: "Solax X1 now"
      value_template: "{{ state_attr('sensor.solax_x1', 'acpower') }}"
      unit_of_measurement: "W"
    solax_x1_upload_time:
      friendly_name: "Solax X1 upload time"
      value_template: "{{ state_attr('sensor.solax_x1', 'uploadTime') }}"
    solax_x1_status:
      friendly_name: "Solax X1 status"
      value_template: >
        {% if state_attr('sensor.solax_x1', 'inverterStatus') == '100' %}Wait
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '101' %}Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '102' %}Normal
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '103' %}Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '104' %}Permanent Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '105' %}Update
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '106' %}EPS Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '107' %}EPS
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '108' %}Self-test
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '109' %}Idle
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '110' %}Standby
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '111' %}Pv Wake Up Bat
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '112' %}Gen Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '113' %}Gen Run
        {% else %}I dont know{% endif %}

Si je l’intègre au fichier « configuration.yaml », j’ai ces erreurs =

Configuration non valide !

Erreurs de configuration
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 14, column 1

Mon fichier « configuration.yaml » complet :

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

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

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

## X3 ##
- platform: rest
  resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=202102060300yyyyyyy&sn=SWXXXXXXX
  name: "Solax X3"
  json_attributes_path: "$.result"
  json_attributes:
    - yieldtoday
    - yieldtotal
    - acpower
    - uploadTime
    - inverterStatus
  value_template: '1'  # dummy value, not used; avoids the "State max length is 255 characters" error
- platform: template
  sensors:
    solax_x3_today:
      friendly_name: "Solax X3 today"
      value_template: "{{ state_attr('sensor.solax_x3', 'yieldtoday') }}"
      unit_of_measurement: "KWh"
    solax_x3_total:
      friendly_name: "Solax X3 total"
      value_template: "{{ state_attr('sensor.solax_x3', 'yieldtotal') }}"
      unit_of_measurement: "KWh"
    solax_x3_now:
      friendly_name: "Solax X3 now"
      value_template: "{{ state_attr('sensor.solax_x3', 'acpower') }}"
      unit_of_measurement: "W"
    solax_x3_upload_time:
      friendly_name: "Solax X3 upload time"
      value_template: "{{ state_attr('sensor.solax_x3', 'uploadTime') }}"
    solax_x3_status:
      friendly_name: "Solax X3 status"
      value_template: >
        {% if state_attr('sensor.solax_x3', 'inverterStatus') == '100' %}Wait
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '101' %}Check
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '102' %}Normal
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '103' %}Fault
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '104' %}Permanent Fault
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '105' %}Update
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '106' %}EPS Check
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '107' %}EPS
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '108' %}Self-test
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '109' %}Idle
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '110' %}Standby
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '111' %}Pv Wake Up Bat
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '112' %}Gen Check
        {% elif state_attr('sensor.solax_x3', 'inverterStatus') == '113' %}Gen Run
        {% else %}I dont know{% endif %}

## X1 ##
- platform: rest
  resource: https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=20210517200601yyyyyyyyyyyy&sn=SWXXXXXXXXX
  name: "Solax X1"
  json_attributes_path: "$.result"
  json_attributes:
    - yieldtoday
    - yieldtotal
    - acpower
    - uploadTime
    - inverterStatus
  value_template: '1'  # dummy value, not used; avoids the "State max length is 255 characters" error
- platform: template
  sensors:
    solax_x1_today:
      friendly_name: "Solax X1 today"
      value_template: "{{ state_attr('sensor.solax_x1', 'yieldtoday') }}"
      unit_of_measurement: "KWh"
    solax_x1_total:
      friendly_name: "Solax X1 total"
      value_template: "{{ state_attr('sensor.solax_x1', 'yieldtotal') }}"
      unit_of_measurement: "KWh"
    solax_x1_now:
      friendly_name: "Solax X1 now"
      value_template: "{{ state_attr('sensor.solax_x1', 'acpower') }}"
      unit_of_measurement: "W"
    solax_x1_upload_time:
      friendly_name: "Solax X1 upload time"
      value_template: "{{ state_attr('sensor.solax_x1', 'uploadTime') }}"
    solax_x1_status:
      friendly_name: "Solax X1 status"
      value_template: >
        {% if state_attr('sensor.solax_x1', 'inverterStatus') == '100' %}Wait
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '101' %}Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '102' %}Normal
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '103' %}Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '104' %}Permanent Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '105' %}Update
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '106' %}EPS Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '107' %}EPS
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '108' %}Self-test
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '109' %}Idle
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '110' %}Standby
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '111' %}Pv Wake Up Bat
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '112' %}Gen Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '113' %}Gen Run
        {% else %}I dont know{% endif %}

Bonjour,

J’ai un peu avancé sur le sujet, j’ai fabriqué un nouveau dongle Wifi à base d’ESP32. Il permet de conserver l’envoie des données à Solax et d’avoir toujours son cloud à jour, mais il permet également d’avoir en temps réel via MQTT toutes les valeurs des onduleurs SOLAX, pour ma part :

  • 1 Solax X1 Boost 3 KW
  • 1 Solax X1 1.5 KW

Par contre comme je débute sous HA, l’intégration dans l’onglet énergie je patauge complètement.

Si une âme charitable pouvais m’aider :innocent:

Suite …

Quand j’essai de mettre cette entité en compteur j’ai ce message de défaut :

Classe d'appareil inattendue
Les entités suivantes n'ont pas la classe d'appareil attendue :
sensor.solax3_yield_total (energy_storage)
Dernière réinitialisation manquante
Les entités suivantes ont la classe d'état 'measurement' mais 'last_reset' est manquant :
sensor.solax3_yield_total

Bonjour,
j’ai également un onduleur Solax Boost. Je ne passe pas par le cloud pour récupérer les valeurs mais j’interroge directement le dongle au départ de HA.
voici mon code:

# Connexion à l'onduleur solax
sensor:
  - platform: rest
    authentication: digest
    scan_interval: 5
    resource: http://192.168.1.11/ #adresse ip de l'onduleur
    payload: "optType=ReadRealTimeData&pwd= XXX " #XXX est le password de la clé
    method: POST
    headers:
      X-Forwarded-For: 5.8.8.8
    name: "solax_rest_local"
    json_attributes:
      - type
      - SN
      - ver
      - Data
      - Information
    value_template: "OK" 

template:
  - sensor:
      - name: solax_local
        state: >
          {% if not state_attr('sensor.solax_rest_local', 'sn') == "XXX"  %}{{ now().strftime("%H:%M:%S") }}
          {% else %}{{ (states('sensor.solax_local')) }}{% endif %}
        attributes:
          sn: >-
            {% if not state_attr('sensor.solax_rest_local', 'sn') == "XXX" %}{{ (state_attr('sensor.solax_rest_local', 'sn')) }}
            {% else %}{{ (state_attr('sensor.solax_local', 'sn')) }}{% endif %}
          ver: >-
            {% if not state_attr('sensor.solax_rest_local', 'sn') == "XXX" %}{{ (state_attr('sensor.solax_rest_local', 'ver')) }}
            {% else %}{{ (state_attr('sensor.solax_local', 'ver')) }}{% endif %}
          type: >-
            {% if not state_attr('sensor.solax_rest_local', 'sn') == "XXX" %}{{ (state_attr('sensor.solax_rest_local', 'type')) }}
            {% else %}{{ (state_attr('sensor.solax_local', 'type')) }}{% endif %}
          Data: >-
            {% if not state_attr('sensor.solax_rest_local', 'sn') == "XXX" %}{{ (state_attr('sensor.solax_rest_local', 'Data')) }}
            {% else %}{{ (state_attr('sensor.solax_local', 'Data')) }}{% endif %}
          Information: >-
            {% if not state_attr('sensor.solax_rest_local', 'sn') == "XXX" %}{{ (state_attr('sensor.solax_rest_local', 'Information')) }}
            {% else %}{{ (state_attr('sensor.solax_local', 'Information')) }}{% endif %}

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

      - name: "Solax Energy today"
        unit_of_measurement: "kWh"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[13] /10 }}"
        device_class: energy
        icon: mdi:solar-panel

      - name: "Solax Energy Total"
        unit_of_measurement: "kWh"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[11] /10 }}"
        device_class: energy
        state_class: total_increasing
        icon: mdi:chart-line

      - name: "Solax DC Voltage"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[3] /10 | float  }}"
        unit_of_measurement: "V"
        device_class: "voltage"

      - name: "Solax DC Current"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[5] /10 }}"
        unit_of_measurement: "A"
        device_class: "current"

      - name: "Solax DC Power"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[7] }}"
        unit_of_measurement: "W"
        device_class: "power"
        icon: mdi:power-socket-de

      - name: "Solax AC Output Voltage"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[0] /10 }}"
        unit_of_measurement: "V"
        device_class: "voltage"

      - name: "Solax AC Current"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[1] /10 }}"
        unit_of_measurement: "A"
        device_class: "current"

      - name: "Solax AC Power"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[2] }}"
        unit_of_measurement: "W"
        device_class: "power"
        icon: mdi:power-socket-de

      - name: "Solax AC Frequency"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data')[9]/100  | float }}"
        unit_of_measurement: "Hz"
        device_class: "frequency"
        icon: mdi:music-clef-treble

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

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

      - name: "Solax Module SN"
        state: "{{ state_attr('sensor.solax_rest_local', 'sn') }}"

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

      - name: "Solax type"
        state: "{{ state_attr('sensor.solax_rest_local', 'type') }}"

      - name: "Solax Inverter SN"
        state: "{{ state_attr('sensor.solax_rest_local', 'SN') }}"

      - name: "Solax Inverter Information"
        state: "{{ state_attr('sensor.solax_rest_local', 'Information') }}"

      - name: "Solax Inverter Data"
        state: "{{ state_attr('sensor.solax_rest_local', 'Data') }}"

J’ai également eu des soucis avec l’intégration dans le module énergie.

Ce que j’ai fait, c’est créer un « compteur de services public » qui intègre la valeur « Solax energy today » et qui se remet à zéro toutes les heures. cela me donne donc la production horaire et le module énergie l’a acceptée sans soucis.

Manu

Bonjour @Manuel_De_Nicolo,

Je débute sous HA, en pleine migration Jeedom → HA.
Tout d’abord un grand merci pour ton code, je n’avais nul envie de faire un reverse proxy.

J’ai testé ce dernier en le collant dans mon configuration.yaml, les infos sont remontées aussitôt dans Outils de développement.
J’ai du supprimer ce code car cette manip m’a supprimé tout mes autres sensors (ils sont réapparus après la suppression du code lié au Solax).

Dans mon configuration.yaml j’ai un sensor: !include_sensors.yaml, j’ai essayé de coller le code à l’intérieur mais j’ai énormément d’erreurs.

Dans quel fichier .yaml a tu rentré ces lignes ? J’ai encore un peu de mal avec le YAML pour le moment mais ça va venir. :sweat_smile:

Merci par avance,
Sébastien

Bonjour @smoreau59 ,

Rendons à César… c’est un code que j’ai trouvé sur un forum et que j’ai retravaillé. Je ne voudrais pas m’en attribuer la paternité :wink: .
J’ai créé un répertoire packages, dans lequel j’ai créé un fichier onduleursolax.yaml et j’y ai mis le code.
J’ai ajouté le code suivant dans le fichier configuration.yaml :

homeassistant:
  packages: !include_dir_named packages

Et ça a roulé sans problèmes.

Je ne suis pas un pro du yaml mais sur ce forum il y a une mine d’infos et notamment le tuto de @Mcfly qui m’a permis d’organiser au mieux ma config:

Bonne journée,

Manu

Bonjour @Manuel_De_Nicolo,

parfait ça fonctionne à merveille :+1: et merci pour le tuto très complet, ça me sera très utile.
Je vois que DATA remonte pas mal d’info qui ne sont pas remontées dans les sensors (ex: prod MPPT1, MPPT2, etc…) je vais éditer le code. Si ça intéresse quelqu’un je peux partager ce dernier.

Encore merci et belle journée à toi.
Sébastien

Ca ne marche pas pour moi… J’ai un onduleur Solax X1 mini avec dongle wifi pocket. J’ai essayé la solution de @Manuel_De_Nicolo , j’ai recopié le code YAML dans ma conf HA, j’ai bien mis l’adresse IP du dongle sur mon réseau wifi après « resource: » (dans mon cas 192.168.1.32) , j’ai remplacé" partout les « XXX » par le code qui figure en dessous du QRcode du dongle…
J’ai bien les entités « solax… » qui se créent mais elle sont toutes dans l’état « unavailable » ou « unkknown », sauf
'operation mode" qui vaut « I don’t know » ,
« solax_local » qui contient l’heure courante,
et « solax_rest_local » qui vaut « OK ».
Je ne sais pas quoi faire… help !