Platform command line - lecture de fichier

bonjour à tous
nouveau problème:
j’ai:

sensor:
  - platform: command_line
    name: file_cmd_line
    # rajoute une , au debut de chaque ligne
    command: python3 -c "print(open('config/packages/ap_config.init').readlines())"

et: dans lovelace:

type: markdown
content: |
  {{states('sensor.file_cmd_line')}}

avec en permanence « unknown »

je précise que ca a marché plusieurs heures…
restart > idem
reboot de la machine > idem
? comment récupérer la lecture d’un simple fichier texte ?
PS le fichier existe bien, je peux l éditer dans vstudio.
Au secours…

Salut,

Le sensor il existe dans la liste des entités?
Et dans les outils de développement tu a bien une valeur?

oui
j ai bien la proposition automatique en tapant ’ sensor.’
ce qui est contrariant c’est que ca a bien fonctionné pendant 1 heure, puis ‹ unknown ›
malgré restart et/ou reload multiples…
image

& (c est cohérent)


& c est pas coherent, le fichier existe bel et bien

C’est curieux le unknown effectivement, Les questions qui me viennent.

Y’a une entrée dans les logs liée à ça?
Faudrait pas mettre des " autour de la commande?
Si tu entres la commande dans un terminal SSH sur le container, ça marche?

@AlexHass
merci de se pencher sur le probleme…
dans les log il y a bien une erreur sur la command line:

Command failed (with return code 1): python3 -c "print(open('config/packages/ap_config.init').readlines())"
9:26:00 AM – (ERROR) command_line - message first occurred at October 21, 2022 at 10:03:58 PM and shows up 683 times

qui explique l absence de retour (unknown), qui n’a pas d’explication en elle meme !
d autant que ça fonctionnait auparavant !

Faudrait vraiment essayer d’exécuter la commande dans une terminal pour confirmer que ça marche.
Y’a 2 choses qui me paraissent bizarre là:

  • La commande qui n’est pas entourée de " "
  • Le répertoire, d’après la doc les command line sont exécutées à partir du répertoire config. Et dans ta commande le répertoire passé à open commence avec config… ça devrait être packages…

merci.
ok je teste…
comment recharger les sensor sans restart ?

on progresse !!!
effectivement c’est une erreur de path:

sensor:
  - platform: command_line
    name: file_cmd_line
    command: python3 -c "print(open('packages/ap_config.init').readlines())"

ne genere plus d erreur
est donc lisible :slightly_smiling_face:
en revanche le format de la sortie est différent:
[‹ test et retest dernier mot\n ›]
je me souviens que j’avais aussi exploré:

  - platform: file
    name: file_natif
    file_path: /config/packages/ap_config.init

et la le path est le bon; avec /config/ au début

RESUME (RESOLU) 2022-10-22
ce qui fonctionne:
le texte de test ap_config.init:

test et retest dernier mot
ligne2
ligne3
ligne4

lecture d un texte par platform: command_line:

sensor:
  - platform: command_line
    name: file_cmd_line
    command: python3 -c "print(open('packages/ap_config.init').readlines())"

avec le PATH SANS /config/

avec platform: file:

sensor:
  - platform: file
    name: file_natif
    file_path: /config/packages/ap_config.init

PATH AVEC /config/

la carte de visualisation:

type: markdown
content: |
  {{states('sensor.file_cmd_line')}}
  {{states('sensor.file_natif')}}

le resultat copie d’écran:
image
avec donc par command_line: les différentes lignes accessibles, mais avec un format mal interprété (pas de retour a la ligne )
et avec file (natif)
UNIQUEMENT la derniere ligne (comme précisé dans la doc)
@AlexHass
merci

reste plus qu’a retrouver le format initial, par lignes ?

après quelques recherches, voici une methode pour afficher le sensor ligne par ligne:
donc, fichier à lire (4 lignes):

test et retest dernier mot
ligne2
ligne3
ligne4

sensor: platform: command_line

sensor:
  - platform: command_line
    name: file_cmd_line
    # commande Unix standard permettant de concaténer des fichiers
    # ainsi que d'afficher leur contenu sur la sortie standard
    # https://fr.wikipedia.org/wiki/Cat_(Unix)
    command: "cat packages/ap_config.init"

PATH à partir du PATH de HA: cad sans /config/

résultat bien formaté (la derniere ligne est répétée puisque j’ai laissé pour comparaison la meme procedure (lecture d un fichier) en mode natif, qui ne lit que la derniere ligne):
image

le code de la carte:

type: markdown
content: |
  {{states('sensor.file_cmd_line')}}
  -------------------
  {{states('sensor.file_natif')}}