Shell_command et script python

Bonjour

J’ai un souci avec une automatisation qui lance un script.
Mon fichier shell_command.yaml
shell_pronote_cron: /config/script_shell/cron_pronote.sh

Le script /config/script_shell/cron_pronote.sh

#!/bin/bash
python3 /config/script_python/Pronote2Homeassistant/pronote.py 2>&1
echo $(date) >> /config/script_python/Pronote2Homeassistant/pronote.log 2>&1

L’automatisation qui semble fonctionner puisque les logs sont renseignés

alias: "Schedule: Pronote check"
description: Mise à jour des sensors pronote
trigger:
  - platform: time_pattern
    minutes: /20
condition: []
action:
  - service: shell_command.shell_pronote_cron
    data: {}
mode: single

Le fichier pronote.log enregistre bien les heures d’execution mais la première ligne ne fonctionne pas. Mais si je le lance à la main depuis la console, tout fonctionne !
Une idée ?

System Information

version core-2023.2.2
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.90
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4970
Installed Version 1.30.0
Stage waiting
Available Repositories 1195
Downloaded Repositories 4
AccuWeather
can_reach_server ok
remaining_requests 21
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.5
update_channel stable
supervisor_version supervisor-2023.01.1
agent_version 1.4.1
docker_version 20.10.22
disk_total 30.8 GB
disk_used 3.4 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons SSH & Web Terminal (13.0.2), File editor (5.5.0)
Dashboards
dashboards 2
resources 3
views 2
mode storage
Recorder
oldest_recorder_run 31 janvier 2023 à 22:59
current_recorder_run 7 février 2023 à 14:19
estimated_db_size 311.53 MiB
database_engine sqlite
database_version 3.38.5

Ma configuration


Texte à remplacer par votre configuration

Comment récupérer ma configuration :
Dans votre HA, Menu latéral Paramètres > Système > Corrections puis les trois petits points en haut a droite > Informations Système puis une fois en bas Copier


je pense qu’il doit pas connaître le chemin pour accéder a python3
Met le PATH complet pour tester

Je viens de tester avec le path (/usr/bin/python3), même résultat :confused:

J’ai aussi testé
/usr/bin/python -m /config/script_python/Pronote2Homeassistant/pronote.py 2>&1
Puis en séparant en deux commandes distincts dans shell_command.yaml
Rien n’y fait. Il y a un truc qui m’échappe !

Pour trouver la « bonne » commande, il faut être connecté dans le container HA. L’exécution se fait depuis ce container. Il faut que la commande que tu veux lancer marche dans ce contexte-là.
C’est comme ça que tu testes?

En effet, je crois que j’ai un début de réponse dans le sujet concernant pronote
Je débute avec HA OS (avec HA tout cours d’ailleurs) et je n’avais pas saisi tout ça !

Ca fait partie de la logique des containers à intégrer. Tout ce qui s’y exécute est propre au contexte de ce container. Les exécutables, les chemins, les librairies,…
Ou les accès ssh sortant qui nécessitent un clé dans le « bon » répertoire.

Dans ton cas, si tu lances depuis le container et ce que tu as vu dans l’autre post est bien le problème, tu vas avoir un message d’erreur indiquant que telle ou telle librairie manque.

La solution est bien là, merci pour ces explications. Je comprends donc qu’en fait, je suis passé d’une version container à une version HA OS, et en fait, c’est un OS (alpine) que je ne maitrise pas trop avec des containers :worried:
Je me demande si je ferais pas mieux de revenir sur mon OS et gérer moi même les container.
Si j’ai bien compris, ce serait une installation supervisée.

Oui et non :slight_smile:
Si tu gères les containers à la main, alors tu es en mode Home Assistant Container (voir Installation - Home Assistant)

Si tu veux utiliser ton OS (debian) mais avoir les add-on, le superviseur… alors c’est ça Home Assistant Supervised.

Personnellement, je trouve que HA Supervised est une solution bancale.
Ca part du postulat que tu es suffisamment compétent pour installer debian sur ta plateforme matérielle (avec docker et le reste). Mais, pas assez pour gérer le tout à la main et comprendre ce qui se passe. C’est un compromis que je ne comprends pas trop. La bonne nouvelle c’est qu’il y a quatre méthodes d’installation. La mauvaise, c’est qu’il faut arriver à choisir la « bonne ».

Et la bonne pour l’un n’est pas la bonne pour l’autre…

Pas tout à fait tout: il y a des répertoires partagées, comme /config par exemple. Par contre, ce qui touche à l’OS et ses paquets, c’est effectivement « dédié » au conteneur.

L’avantage de HAOS est qu’on ne s’occupe plus du système, et il y a les AddOns (Modules complémentaires).
Perso, je trouves que c’est plus simple à maintenir.

Pour maintenir la configuration de la console, ses paquets et les modules python, je me suis concocté un script:

Presque. Le /config est partagé quand tu décides explicitement qu’il doit l’être. Et le /config vu du container peut être un chemin totalement différent sur le serveur.
Par défaut, « rien » n’est partagé…

Chacun son sale goût :slight_smile: comme aurait dit ma grand-mère.
C’est ce que j’indiquais dans un mail précédent il n’y a pas de réponse universelle et absolue. Il faut choisir « sa » méthode d’installation et comprendre ce que ça signifie. Et, ça ne n’est pas si simple.

Dans HAOS - comme c’est géré - c’est partagé par défaut. Si on gère ses propres conteneurs, il faut bien sûr mettre ces options soi-même.
D’ailleurs, le scruot et …/pronote.log étaient bien visibles dans la console bien que générés dans un autre conteneur (sous HAOS).

Effectivement, j’ai écrit « Perso » pour indiquer que c’est un goût personnel.