Erreur YAML

Bonjour à tous,
je regarde cette histoire de mise à jour. Un coup j’ai l’impression de comprendre et ensuite quand je corrige mon fichier sensors.yaml …je patine.
Pourriez-vous me guider, svp ?

Je vous soumet mon code d’origine:

# Température du CPU
  - platform: command_line
    name: RasPi CPU Temp
    command: "cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    value_template: "{{ value | multiply(0.001) | round(1) }}"

# Heures et Date
  - platform: time_date 
    display_options:
      - 'time'
      - 'date'
      
  - platform: template
    sensors:
       week_day:
         value_template: "{{ now().strftime('%A')}}"

       current_date:
        value_template: "{{ now().strftime('%d')}} {{ now().strftime('%B')}} {{ now().strftime('%Y')}}" 

       time_fr:
         value_template: "{{ now().strftime('%H:%M')}}"

       jour_fr:
         value_template: "{{ ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'][now().weekday()] }}"

       date_fr:
         value_template: "{% set months = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'] %} {{ now().day | string + ' ' + months[now().month-1]}} {{now().year }}"
         
# Temps d'écran
  - platform: history_stats
    name: TV SdJ allumée 
    entity_id: sensor.tv_salle_de_jeux_electricalmeasurement
    state: ">20"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"
    
  - platform: history_stats
    name: TV Salon allumée 
    entity_id: sensor.tv_salon_electricalmeasurement
    state: ">20"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

Merci de votre aide !

Bonjour,

Le plus simple est de créer un fichier command_line.yaml et d’y mettre le sensor pour la température du rPi avec la nouvelle syntaxe. Et de créer un fichier templates.yaml pour les sensors de jours avec la nouvelle syntaxe egalement.

Ensuite ajouter 2 lignes include dans configuration.yaml

Cordialement
Abel

je n’avais pas compris qu’il fallait aussi renommer les fichiers.
Même si ce n’est pas « propre » je croix que ça peux passer dans le modèle sensors.yaml

Pourriez-vous me montrer la syntaxe sur mon exemple, pour la T° et pour la date, SVP ?

Merci beaucoup

Est ce que ça fonctionne comme nouvelle syntaxe ?
Quelle est la différence entre Sensor, Binary Sensor et Template ?

Merci de votre aide

command_line:

# Température du CPU
  - sensor:
    name: RasPi CPU Temp
    command: "cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    value_template: "{{ value | multiply(0.001) | round(1) }}"


# Heures et Date
  - platform: time_date 
    display_options:
      - 'time'
      - 'date'
      
  - template:
    sensors:
       week_day:
         value_template: "{{ now().strftime('%A')}}"

       current_date:
        value_template: "{{ now().strftime('%d')}} {{ now().strftime('%B')}} {{ now().strftime('%Y')}}" 

       time_fr:
         value_template: "{{ now().strftime('%H:%M')}}"

       jour_fr:
         value_template: "{{ ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'][now().weekday()] }}"

       date_fr:
         value_template: "{% set months = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'] %} {{ now().day | string + ' ' + months[now().month-1]}} {{now().year }}"

Salut

Un template, c’est un « modèle » qui s’applique à plein de type.
Parmi les types, il y a justement

  • un sensor qui retourne une valeur quelconque, numérique ou texte
  • un binary_sensor qui retourne une valeur vrai/faux uniquement

Je patine sévère avec ce changement. Déjà la ré-écriture proposé dans mon dernier post ne fonctionne pas. Je n’ai plus mes infos ni température, ni ma carte Date & Heure.

J’ai donc créé un fichier command_line.yaml, avec l’appel command_line: !include command_line.yaml dans le fichier de configuration.

Pour l’insant j’ai retiré le Template pour limiter les erreurs. Mais HA ne rédémarre pas cette config, avec l’erreur suivante

Cannot quick reload all YAML configurations because the configuration is not valid: Invalid config for [command_line]: [command_line] is an invalid option for [command_line]. Check: command_line->command_line->0->command_line. (See /config/configuration.yaml, line 9).

Ci joint le texte de ma commande

command_line:

# Température du CPU
  - sensor:
      name: RasPi CPU Temp
      command: "cat /sys/class/thermal/thermal_zone0/temp"
      unit_of_measurement: "°C"
      value_template: "{{ value | multiply(0.001) | round(1) }}"

j’ai beau lire et relire les textes sous Command Line - Home Assistant, je ne comprend pas.
Une idée les amis ?

Salut,

Si tu mets command_line: dans command_line: !include command_line.yaml

Alors il ne faut pas le mettre en plus dans le fichier command_line.yaml. En plus tu dois commencer sans les 2 espaces. ça doit ressemble à ça

image

1 « J'aime »

Merci @Pulpy-Luke
J’ai pigé mon erreur.

Salut Tertous,

Je viens de tenter de régler l’erreur que j’ai également dans HA:

image

Cette ligne de code ci-dessous me sert à faire de la détection de mouvement sur ma caméra Foscam, pour ensuite m’envoyer des notifications sur mon téléphone.

binary_sensor:  
  - platform: command_line
    name: "Detection Caméra Cusine"
    command: 'curl -k --silent "http://192.168.1.XXX:88/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=foscamuser&pwd=password" | grep -oP "(?<=motionDetectAlarm>).*?(?=</motionDetectAlarm>)"'
    device_class: motion
    payload_on: "2"
    payload_off: "1"
    scan_interval: 3

J’ai essayé plusieurs choses mais je me retrouve avec une erreur quand je vérifie la configuration de Home Assistant… J’ai essayé genre:

command_line:
  - binary_sensor:
    name: "Detection Caméra Cusine"
    command: 'curl -k --silent "http://192.168.1.XXX:88/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=foscamuser&pwd=password" | grep -oP "(?<=motionDetectAlarm>).*?(?=</motionDetectAlarm>)"'
    device_class: motion
    payload_on: "2"
    payload_off: "1"
    scan_interval: 3

ou :

command_line:
  - sensor:
    name: "Detection Caméra Cusine"
    command: 'curl -k --silent "http://192.168.1.XXX:88/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=foscamuser&pwd=password" | grep -oP "(?<=motionDetectAlarm>).*?(?=</motionDetectAlarm>)"'
    device_class: motion
    payload_on: "2"
    payload_off: "1"
    scan_interval: 3

Quand j’enregistre dans le file éditor, j’ai un check OK :
image

Mais l’ors de la vérification de la configuration j’ai ceci:

Si une âme charitable pouvait me venir en aide car je suis pas un pro dans le domaine.

Merci d’avance.

Bonjour,
il te manque deux espaces.

command_line:
  - binary_sensor:
      name: "Detection Caméra Cusine"
      command: 'curl -k --silent "http://192.168.1.XXX:88/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=foscamuser&pwd=password" | grep -oP "(?<=motionDetectAlarm>).*?(?=</motionDetectAlarm>)"'
      device_class: motion
      payload_on: "2"
      payload_off: "1"
      scan_interval: 3

Salut @WarC0zes , merci beaucoup :pray: c’était bien ça, J’ai vraiment du mal avec ces histoires d’espace de début de ligne.

J’essaie de régler le même problème mais avec le switch de la détection de ma caméra, car en erreur aussi :

# Cuisine
- platform: command_line
  switches:
    detection_camera_cuisine:
      friendly_name: "Détection Caméra Cuisine"
      command_on: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
      command_off: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
      command_state: 'curl -k --silent "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=foscamuser&pwd=password" | grep -q "<isEnable>1</isEnable>"'
      #value_template: '{{ value == "1" }}'

Du coup j’ai essayé de corriger comme ceci:

# Cuisine
command_line:
  - switches:
      detection_camera_cuisine:
        friendly_name: "Détection Caméra Cuisine"
        command_on: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
        command_off: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
        command_state: 'curl -k --silent "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=foscamuser&pwd=password" | grep -q "<isEnable>1</isEnable>"'
        #value_template: '{{ value == "1" }}'

Mais il doit encore avoir un souci quelque part.

Merci encore d’avance pour ton aide

Bonjour,

Il faut écrire une fois command_line: dans le configuration.yaml et en dessous il mettre sensor, binary_sensor ou switch sans chaque fois rajouter command_line:.

exemple:

command_line:
  - binary_sensor:
      command: "cat /proc/sys/net/ipv4/ip_forward"
  - cover:
      command_open: move_command up garage
      command_close: move_command down garage
      command_stop: move_command stop garage
      name: Garage
  - sensor:
      command: SENSOR_COMMAND
  - sensor:
      command: SENSOR_COMMAND_2

Ensuite, ton code comprend friendly_name: "Détection Caméra Cuisine" qui n’est plus utiliser maintenant et est remplacer par name:

command_line:
  - switches:
      name: "Détection Caméra Cuisine"
      command_on: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
      command_off: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
      command_state: 'curl -k --silent "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=foscamuser&pwd=password" | grep -q "<isEnable>1</isEnable>"'
      #value_template: '{{ value == "1" }}'

@WarC0zes , Salut, effectivement ça fonctionne avec ce que tu m’as donné comme exemple et je t’en remercie:

command_line:
  - switches:
      name: "Détection Caméra Cuisine"
      command_on: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
      command_off: 'curl -k "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&linkage=130&snapInterval=3&sensitivity=1&triggerInterval=10&isMovAlarmEnable=1&isPirAlarmEnable=1&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=30&area1=30&area2=30&area3=30&area4=30&area5=30&area6=30&area7=0&area8=0&area9=0&usr=foscamuser&pwd=password"'
      command_state: 'curl -k --silent "https://192.168.1.XXX:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=foscamuser&pwd=password" | grep -q "<isEnable>1</isEnable>"'
      #value_template: '{{ value == "1" }}'

J’ai pas d’erreur à condition que le code se trouve dans le « configuration.yaml », par contre j’ai un fichier de config séparé nommé « switches.yaml » qui est appelé dans le fichier « configuration.yaml » avec:

switch: !include switches.yaml

Et quand je mets le code dans ce fichier « switches.yaml » j’ai ce message d’erreur :

Je dois encore me gourré quelque part ou oublier quelque chose. Je suis vraiment une quiche en yaml. Si tu pouvais m’éclairer une fois de plus ça serait top.

En tout cas merci pour ton aide!!

Ce switch: correspond a un switch template Template Switch - Home Assistant qui est différent d’un switch command_line. Tu ne peut pas le mettre dans le switches.yaml.

Tu peu séparer le command_line dans un fichier .yaml, comme l’explique @Pulpy-Luke dans ce post Erreur YAML - #27 par Pulpy-Luke

@WarC0zes Ok j’ai bien pigé le truc, je vas regarder tout ça, merci beaucoup pour ton aide :+1: :v: