DomotiqueLes articles du blogTutoriaux

Tuto : Connecter Zendure SolarFlow à Home Assistant via MQTT

Bonjour à tous,
Cela fait maintenant quelques jours que je teste la solution solaire Zendure SolarFlow avec le HUB 2000 et forcément une de mes premières préoccupations avec ce genre de produit est de pouvoir le connecter avec ma domotique Home Assistant. Après quelques recherches et tests, je vous propose ici un petit tutoriel pour vous aider à récupérer les informations de mesures de ce kit d’autoconsommation solaire.

Récupération des informations de connexion

Zendure a eu l’intelligence de mettre à disposition un GitHub avec les informations pour récupérer les informations des produits SolarFlow et Superbes via MQTT mais si vous n’êtes pas un expert (comme moi), cela peut demander de longues recherches : https://github.com/Zendure/developer-device-data-report. Je vais m’efforcer de vous faciliter la vie.

Bien sur la première des choses à faire est de créer un compte sur l’application de Zendure, mais je passerai cette étape car je suppose que vous avez déjà réalisé lors de l’installation de vos produits Zendure.

Nous allons donc récuperer les appkey et secret nécessaire à l’identification via MQTT. Pour cela vous devez vous munir de l’email de votre compte Zendure et du numéro de série de votre SolarFlow (ou SuperBase). Puis dans une fenêtre de commande, il suffit de lancer la commande :

curl -H "Content-Type: application/json" -X POST -d '{"snNumber":"HO1XXXXXXXXX","account": "email@gmail.com"}' https://app.zendure.tech/v2/developer/api/apply

Si le retour est positif, vous devriez recevoir un message avec votre appkey et votre secret.

Afin de vérifier que tout est ok, nous allons tester que la connexion à MQTT. Pour cela j’utilise MQTT Explorer. Il suffit d’ajouter une connexion avec comme information :

  • host : mqtt.zen-iot.com
  • Username : le appkey récupéré précemment
  • Password : le secret récupéré précemment
  • dans la partie advanced : ajouter une ligne « APPKEY/# »

Après avoir sauvegarder et connecter, vous allez devoir attendre un peu afin de voir apparaitre les messages dans MQTT :

Si vous voyez bien des messages arriver dans MQTT, nous pouvons passer à l’étape suivante. Si ce n’est pas le cas, attendez… Les messages mettent beaucoup de temps à arriver surtout si votre SolarFlow est en mode « Veille »

Connexion entre MQTT Zendure et Home Assistant

Pour récupérer les données Zendure via MQTT dans Home Assistant, il y a 2 possibilités mais généralement vous n’aurez pas trop le choix du premier si vous utilisez déjà MQTT…

Configuration via l’interface

Le plus simple pour récupérer les données d’un provider MQTT est d’ajouter l’intégration MQTT dans Home Assistant mais uniquement si vous n’avez pas déjà configuré l’intégration MQTT.

Dans la page « Appareils et Services », cliquer sur le bouton ajouter une intégration puis sélectionner « MQTT »

Ensuite vous allez reprendre les informations que nous avons utilisé dans MQTT Explorer pour configurer la connexion.

Dans les options de configuration, il est important de remettre appkey dans la zone de « Préfixe de découverte » et bien sur d’activer la découverte

Logiquement vous devriez voir le nombre d’entités grandir avec le temps.

Et voila c’est terminé, il ne reste plus qu’à utiliser les données à la prochaine étape.

Configuration customisé de Mosquitto

Si vous avez déjà configuré l’intégration MQTT et que vous avez essayé le tutoiement ci dessus, vous avez reçu un message d’erreur « Déjà configuré. Une seule configuration possible. »

Nous allons donc ajouter une nouvelle source à notre broker Mosquitto, mais d’abord il faut vous assurer que la customisation de Mosquitto est possible. Pour cela, il faut vous rendre dans la configuration de l’addon Mosquitto et vous assurez que l’option active est à true et avoir mis un dossier de configuration (dans mon cas un répertoire mosquitto).

Ensuite il vous faudra parcourir les répertoires partagés de votre installation Home Assistant avec un explorateur de fichier. Vous avez plusieurs répertoire qui sont disponibles, le principale étant « config » ou vous avez surement déjà modifié des fichiers de config. Dans notre cas, nous devons aller dans le répertoire « share » et créer un répertoire « mosquitto » (reprendre le nom que vous avez mis dans la configuration ci dessus). Puis vous allez créer un fichier « zendure.conf ».

Il suffit maintenant d’éditer le fichier « zendure.conf » afin d’intégrer le code suivant :

connection external-bridge
address mqtt.zen-iot.com:1883
remote_username <APPKEY>
remote_password <SECRET>
clientid zendure

topic <APPKEY>/# in
topic # in 0 homeassistant/sensor/<APPKEY>/ <APPKEY>/sensor/device/

Nous allons ensuite redémarrer l’addon mosquitto, pour prendre en charge cette nouvelle source.

Si vous utilisez MQTT Explorer pour regarder votre Mosquitto Broker, vous devriez voir apparaitre un nouveau topic avec votre APPKEY. Si vous voyez comme moi, plein d’autre topic apparaitre, je pense que c’est un bug chez eux…

Nous avons donc les données du SolarFlow Zendure (ou Superbase) dans notre broker MQTT, il reste maintenant à les mettre en forme et les rendre disponibles. Pour cela, j’ai créer un certains nombre des sensor et switch dans ma configuration. A noter que je n’utilise pas le fichier « configuration.yaml » mais « mqtt.yaml » (qui est chargé dans configuration.yaml avec la ligne mqtt: !include mqtt.yaml ). Voici le code que j’utilise :

sensor:
  - name: "Electric Level"
    unique_id: "fpy2m7be_electriclevel"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    unit_of_measurement: "%"
    device_class: "battery"
    value_template: "{{ value_json.electricLevel }}"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Remain Out Time"
    unique_id: "fpy2m7be_remainouttime"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.remainOutTime | int }}"
    device_class: "duration"
    unit_of_measurement: "min"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Remain Input Time"
    unique_id: "fpy2m7be_remaininputtime"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.remainInputTime | int }}"
    device_class: "duration"
    unit_of_measurement: "min"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "SOC Set"
    unique_id: "fpy2m7be_socset"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    unit_of_measurement: "%"
    value_template: "{{ value_json.socSet | int / 10 }}"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Output Limit"
    unique_id: "fpy2m7be_outputlimit"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.outputLimit | int }}"
    unit_of_measurement: "W"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Solar Input Power"
    unique_id: "fpy2m7be_solarinputpower"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    unit_of_measurement: "W"
    device_class: "power"
    value_template: "{{ value_json.solarInputPower | int(0) }}"
    state_class: "measurement"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Pack Input Power"
    unique_id: "fpy2m7be_packinputpower"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    unit_of_measurement: "W"
    device_class: "power"
    value_template: "{{ value_json.packInputPower | int(0) }}"
    state_class: "measurement"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Output Pack Power"
    unique_id: "fpy2m7be_outputpackpower"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    unit_of_measurement: "W"
    device_class: "power"
    value_template: "{{ value_json.outputPackPower | int(0) }}"
    state_class: "measurement"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Output Home Power"
    unique_id: "fpy2m7be_outputhomepower"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    unit_of_measurement: "W"
    device_class: "power"
    value_template: "{{ value_json.outputHomePower | int(0) }}"
    state_class: "measurement"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Pack Num"
    unique_id: "fpy2m7be_packnum"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.packNum | int }}"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Pack State"
    unique_id: "fpy2m7be_packstate"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.packState | int }}"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Solar Power 1"
    unique_id: "fpy2m7be_solarpower1"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.solarPower1 | int(0) }}"
    unit_of_measurement: "W"
    device_class: "power"
    state_class: "measurement"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Solar Power 2"
    unique_id: "fpy2m7be_solarpower2"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.solarPower2 | int(0) }}"
    unit_of_measurement: "W"
    device_class: "power"
    state_class: "measurement"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Pass Mode"
    unique_id: "fpy2m7be_passmode"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.passMode | int }}"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Auto Recover"
    unique_id: "fpy2m7be_autorecover"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.autoRecover | int }}"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Hub State"
    unique_id: "fpy2m7be_hubstate"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: "{{ value_json.hubState | int }}"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Batterie CO4HLMEMA801269 maxTemp"
    unique_id: "fpy2m7be_batterie_1_maxtemp"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: >
      {% for i in value_json.packData %}
        {% if i.sn == "CO4HLMEMA801269" %}
          {{ (i.maxTemp | float - 273.15) | round(2) }}
        {% endif %}
      {% endfor %}
    unit_of_measurement: "°C"
    device_class: "temperature"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Batterie CO4HLMEMA801269 maxVol"
    unique_id: "fpy2m7be_batterie_1_maxvol"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: >
      {% for i in value_json.packData %}
        {% if i.sn == "CO4HLMEMA801269" %}
          {{ i.maxVol | float / 100 }}
        {% endif %}
      {% endfor %}
    unit_of_measurement: "V"
    device_class: "voltage"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Batterie CO4HLMEMA801269 minVol"
    unique_id: "fpy2m7be_batterie_1_minvol"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: >
      {% for i in value_json.packData %}
        {% if i.sn == "CO4HLMEMA801269" %}
          {{ i.minVol | float / 100 }}
        {% endif %}
      {% endfor %}
    unit_of_measurement: "V"
    device_class: "voltage"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - name: "Batterie CO4HLMEMA801269 socLevel"
    unique_id: "fpy2m7be_batterie_1_soclevel"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    value_template: >
      {% for i in value_json.packData %}
        {% if i.sn == "CO4HLMEMA801269" %}
          {{ i.socLevel | int }}
        {% endif %}
      {% endfor %}
    unit_of_measurement: "%"
    device_class: "battery"
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"


switch:
  - unique_id: "fpy2m7be_masterswitch"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    state_off: false
    command_topic: "<APPKEY>/Fpy2M7Be/masterSwitch/set"
    name: "Master Switch"
    device_class: "switch"
    value_template: "{{ value_json.masterSwitch | default('') }}"
    payload_on: true
    payload_off: false
    state_on: true
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

  - unique_id: "fpy2m7be_buzzerswitch"
    state_topic: "<APPKEY>/Fpy2M7Be/state"
    state_off: false
    command_topic: "<APPKEY>/Fpy2M7Be/buzzerSwitch/set"
    name: "Buzzer Switch"
    device_class: "switch"
    value_template: "{{ value_json.buzzerSwitch | default('') }}"
    payload_on: true
    payload_off: false
    state_on: true
    device: 
      name: "SolarFlow"
      identifiers: "<NUMERODESERIE>"
      manufacturer: "Zendure"
      model: "SmartPV Hub 2000 Controller"

attention à bien :

  • modifier le <APPKEY> et remplacer Fpy2M7Be par votre code unique pour chaque state_topic.
  • modifier le <NUMERODESERIE> dans identifiers
  • si vous voulez gérer les unique_id avec le code appareil, attention à mettre en minuscule ! sinon rien ne sera créer. Croyez mon expérience…

Après un redémarrage complet ou un rechargement de configuration des entités MQTT, si tout va bien, vous devriez avoir un nouvelle appareil disponible dans votre entité MQTT :

Exploitation et affichage des données dans Home Assistant

Maintenant que tout est disponible dans Home Assistant, il ne reste plus qu’a afficher cela. Je me suis fais une page en utilisant la nouvelle fonctionnalité type de vue « Sections » pour créer 3 sections : Production Solaire, Batterie et Consommation maison :

Voici le code si vous souhaitez vous en inspirer :

views:
  - type: sections
    max_columns: 4
    title: Zendure
    path: zendure2
    sections:
      - type: grid
        cards:
          - type: glance
            entities:
              - entity: sensor.solarflow_pack_state
              - entity: sensor.solarflow_hub_state
          - type: custom:apexcharts-card
            update_delay: 3s
            update_interval: 1min
            graph_span: 6h
            header:
              show: true
              title: Production Solaire
              show_states: true
              colorize_states: true
            all_series_config:
              stroke_width: 2
            yaxis:
              - id: first
                apex_config:
                  tickAmount: 5
                  title:
                    text: Power (Watts)
            series:
              - entity: sensor.solarflow_solar_input_power
                yaxis_id: first
                float_precision: 0
                unit: Watts
                fill_raw: zero
                group_by:
                  func: max
                  duration: 1m
            show:
              last_updated: true
          - type: custom:apexcharts-card
            update_delay: 3s
            update_interval: 1min
            graph_span: 6h
            header:
              show: true
              title: Solaire Input 1
              show_states: true
              colorize_states: true
            all_series_config:
              stroke_width: 2
            yaxis:
              - id: first
                apex_config:
                  tickAmount: 5
                  title:
                    text: Power (Watts)
            series:
              - entity: sensor.solarflow_solar_power_1
                yaxis_id: first
                float_precision: 0
                unit: Watts
                fill_raw: zero
                group_by:
                  func: max
                  duration: 1m
            show:
              last_updated: true
          - type: custom:apexcharts-card
            update_delay: 3s
            update_interval: 1min
            graph_span: 6h
            header:
              show: true
              title: Solaire Input 2
              show_states: true
              colorize_states: true
            all_series_config:
              stroke_width: 2
            yaxis:
              - id: first
                apex_config:
                  tickAmount: 5
                  title:
                    text: Power (Watts)
            series:
              - entity: sensor.solarflow_solar_power_2
                yaxis_id: first
                float_precision: 0
                unit: Watts
                fill_raw: zero
                group_by:
                  func: max
                  duration: 1m
            show:
              last_updated: true
          - type: horizontal-stack
            cards:
              - type: custom:mushroom-template-card
                primary: Buzzer Switch
                secondary: ''
                icon: >
                  {{
                  iif(is_state('switch.solarflow_buzzer_switch','on'),'mdi:flash',
                  'mdi:flash-off') }}
                entity: switch.solarflow_buzzer_switch
                icon_color: >
                  {{ iif(is_state('switch.solarflow_buzzer_switch','on'),
                  'green', 'red') }}
              - type: custom:mushroom-template-card
                primary: Buzzer Switch
                secondary: ''
                icon: >
                  {{
                  iif(is_state('switch.solarflow_master_switch','on'),'mdi:flash',
                  'mdi:flash-off') }}
                entity: switch.solarflow_buzzer_switch
                icon_color: >
                  {{ iif(is_state('switch.solarflow_master_switch','on'),
                  'green', 'red') }}
        title: Production Solaire
      - type: grid
        cards:
          - type: glance
            entities:
              - entity: sensor.solarflow_batterie_co4hlmema801269_maxtemp
              - entity: sensor.solarflow_batterie_co4hlmema801269_minvol
              - entity: sensor.solarflow_batterie_co4hlmema801269_maxvol
          - type: gauge
            entity: sensor.solarflow_electric_level
            min: 0
            max: 100
            needle: true
            segments:
              - from: 0
                color: '#800000'
              - from: 10
                color: '#db4437'
              - from: 50
                color: '#ffa600'
              - from: 90
                color: '#43a047'
              - from: 99
                color: '#209cee'
            name: Niveau de Batterie
          - type: custom:apexcharts-card
            update_delay: 3s
            update_interval: 1min
            graph_span: 6h
            header:
              show: true
              title: Batterie Total Restante
              show_states: true
              colorize_states: true
            all_series_config:
              stroke_width: 2
            yaxis:
              - id: first
                apex_config:
                  tickAmount: 5
                  title:
                    text: Charge (%)
            series:
              - entity: sensor.solarflow_electric_level
                yaxis_id: first
                float_precision: 0
                fill_raw: zero
                group_by:
                  func: max
                  duration: 1m
            show:
              last_updated: true
          - type: glance
            entities:
              - entity: sensor.solarflow_soc_set
              - entity: sensor.solarflow_remain_input_time
              - entity: sensor.solarflow_remain_out_time
        title: Batterie
      - type: grid
        cards:
          - type: glance
            entities:
              - entity: sensor.solarflow_output_limit
          - type: custom:apexcharts-card
            update_delay: 3s
            update_interval: 1min
            graph_span: 6h
            header:
              show: true
              title: SolarFlow -> Maison
              show_states: true
              colorize_states: true
            all_series_config:
              stroke_width: 2
            yaxis:
              - id: first
                apex_config:
                  tickAmount: 5
                  title:
                    text: Power (Watts)
            series:
              - entity: sensor.solarflow_output_home_power
                yaxis_id: first
                float_precision: 0
                unit: Watts
                fill_raw: zero
                group_by:
                  func: max
                  duration: 1m
            show:
              last_updated: true
          - type: custom:apexcharts-card
            update_delay: 3s
            update_interval: 1min
            graph_span: 6h
            header:
              show: true
              title: Conso Maison
              show_states: true
              colorize_states: true
            all_series_config:
              stroke_width: 2
            yaxis:
              - id: first
                apex_config:
                  tickAmount: 5
                  title:
                    text: Power (Watts)
            series:
              - entity: sensor.teleinfo_1
                yaxis_id: first
                float_precision: 0
                unit: Watts
                fill_raw: zero
                group_by:
                  func: max
                  duration: 1m
            show:
              last_updated: true
        title: Maison
    cards: []

Et voila, c’est fini pour ce tutoriel d’intégration des données Zendure SolarFlow dans Home Assistant. C’est vraiment appreciable que Zendure ai mis par défaut cette données à disposition mais malheureusement, je trouve que les données ne sont pas mis à jours assez souvent. Je constate un décalage de temps entre l’application sur mon smartphone et les données qui arrivent dans MQTT. De même, dommage de ne pas avoir de données sur l’énergie (en Wh) produit, consommé et stocké qui aurait pu être utilisées dans le Dashboard Energy de HA. Je sais que cela devrait être possible en créant des sensors sur base des sensor power mais comme ils ne sont pas assez mis à jour, je pense que l’info ne sera pas cohérente.

Bref, j’espère que ce tutoriel vous aura bien aidé, n’hésitez pas à me poser vos question dans les commentaires.

Julien

Passionné depuis mon plus jeune âge par les nouvelles technologies et doublé d’un acheteur compulsif, j’ai toujours adoré les nouveaux produits HighTech. Je m’aperçois que les « gadgets » deviennent plutôt des outils du quotidien voire du futur, mais le regard de beaucoup de personnes n’évolue pas aussi vite que les technologies. Qui n’a jamais fait face à la fameuse question « Ça sert à quoi? » en montrant sa nouvelle acquisition à son entourage.

Articles similaires

11 commentaires

  1. Bonjour,
    Merci pour la vulgarisation du git de zendure!
    Je viens de faire la manœuvre pour avoir mes key et secret mais j’ai une erreur 400
    Pourriez vous m’aider?

    {« code »:400, »success »:false, »data »:{}, »msg »: »JSON parse error: Cannot construct instance of `org.zendure.modules.openApi.dto.DeveloperApplyDto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (‘{snNumber:H01HLM********,account:*************@gmail.com}’); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `org.zendure.modules.openApi.dto.DeveloperApplyDto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (‘{snNumber:H01HLM*********,account:**********@gmail.com}’)\n at [Source: (PushbackInputStream); line: 1, column: 1] »}

    1. Hello
      est ce que tu as bien remplacé les valeurs pour ton serial number et ton email?
      j’ai l’impression que tu as utilisé directement la commande que j’ai mis avec mes valeurs anonymisées.

Laisser un commentaire

Bouton retour en haut de la page