Forum Francophone Home Assistant

[RESOLU] Ligne de commande : réponse trop longue

bonjour,

je reviens sur mes lignes de commandes ! encore !

je voulais connaitre le niveau de signal de ma clé USB GSM via gammu
j’ai donc fait un ‹ sensor › comme cela :

sensor gsm:
  - platform: command_line
    name: infos gsm
    command: ssh -i /config/.ssh/id_rsa -o StrictHostKeyChecking=no -q stephane@192.168.20.96 'gammu monitor 1'
    scan_interval: 3600

le souci est que la commande me retourne :

Activation infos SMS entrant : Aucune erreur.
Activation d’info sur CB entrant : Aucune erreur.
Activation infos appels : Aucune erreur.
Activation infos USSD : Aucune erreur.
SIM phonebook : 0 utilisé, 250 libre
Own numbers : 1 utilisé, 4 libre
niveau batterie : 0 pourcent
Etat de charge : batterie connecté et en recharge
Puissance du signal : -81 dBm
Niveau du réseau : 48 pourcent
SIM SMS statut : 1 utilisé, 0 non lu, 50 emplacements
État SMS du téléphone : 4 utilisé, 0 non lu, 23 emplacements
État réseau : réseau domestique
Réseau : 208 15 (Free Mobile, France), LAC D70, CID 2C77
etat du réseau par paquets : réseau domestique
réseau par paquets : 208 15 (Free Mobile, France), LAC D70, CID 2C77
GPRS : attaché

et moi je n’ai besoin que de la valeur ‹ Puissance du signal ›

en fait dans mon log de HA j’ai une erreur :
homeassistant.exceptions.InvalidStateError: Invalid state encountered for entity id: sensor.infos_gsm. State max length is 255 characters.

donc est ce qu’il y a une solution coté HA ou peut être qu’il vaut mieux chercher coté script SH qui me retournerait directement ma valeur ?

Je me répond a moi-même !

voilà ce qu’il faut faire :

sensor gsm:
  - platform: command_line
    name: infos gsm
    command: ssh -i /config/.ssh/id_rsa -o StrictHostKeyChecking=no -q stephane@192.168.20.96 'gammu monitor 1 | grep signal | sed -e "s/ //g" | cut -d':' -f2 | cut -d'd' -f1'
    scan_interval: 3600
    unit_of_measurement: "dBm"

quelques grep et sed et voilà ma puissance de signal qui remonte dans HA !
toujours aussi passionnant cette ligne de commande !

1 J'aime

Bien joué !!!
Merci pour le partage :ok_hand:

Bonjour,

Well done :wink: @steph96

Tu peux faire plus court :

| grep signal | awk '{print $5}'

1 J'aime

:+1:
au top pepite !

cette réduction fonctionne parfaitement et j’ai découvert une nouvelle commande !

Bonjour,

De rien :wink:

[HS]
awk, commande très puissante :wink: Gros avantage, la reconnaissance automatique des caractères de séparation :wink:
[/HS]