# Problème exécution script Python

**URL:** <https://forum.hacf.fr/t/probleme-execution-script-python/36928>\
**Category:** Entraide Home Assistant\
**Tags:** python-script\
**Created:** [Février 19, 2024, 11:40 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928 "2024-02-19T23:40:57Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 19, 2024, 11:40 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/1 "2024-02-19T23:40:57Z")

</div>

Bonjour,

J’essai de lancer un script python, mais j’ai une erreur sans explication claire que voici

```auto
Logger: homeassistant.setup
Source: setup.py:221
First occurred: 00:22:36 (1 occurrences)
Last logged: 00:22:36

Setup failed for 'python_scripts': Integration not found.

```

En cherchant sur le forum, j’ai vu ce test mais sans succès vu qu’il y a une erreur

 ![image](https://forum.hacf.fr/uploads/default/original/3X/c/f/cf5c977d92edd94c54a1953a30bcb748296a4870.png)

Le fichier avec le script est bien dans le dossier \config\python\_scripts  
Voici mon Configuration.yaml

```auto

# Loads default set of integrations. Do not remove.
homeassistant:
  packages: !include_dir_named packages/
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
#command_line: !include command_line.yaml

python_scripts:

```

Et voici le Script en question qui est issu d’ici

> **[GitHub - imeon-community/Imeon-to-MQTT: A python script to extract values...](https://github.com/imeon-community/Imeon-to-MQTT)**
>
> A python script to extract values from the inverter and inject them in an MQTT server. Typical use case for Home assistant or Jeedom. - imeon-community/Imeon-to-MQTT

```auto
#!/usr/bin/python

import requests
import requests.exceptions
import json
import time
from paho.mqtt import client as mqtt_client

LOGIN_URL = "http://xxxxxxxxxxxxxxx/login"
DATA_URL1 = "http://xxxxxxxxxxxxxxxxx/battery-status"
DATA_URL2 = "http://xxxxxxxxxxxxxxxx/imeon-status"
DATA_URL3 = "http://xxxxxxxxxxxxxxx/data-lithium"
EMAIL = "xxxxxx" # default Imeon login
PASSWORD = "xxxxxxxx" # default Imeon pass
broker = 'xxxxxxxxx'
port = xxxxxxx
sensor_topic = "homeassistant/Imeon/sensor" # or wherever else you want to send it, will work oob with the provided home assitant config
status_topic = "homeassistant/Imeon/status" # or wherever else you want to send it, will work oob with the provided home assitant config
client_id = "xxxxxxxxxx"
username = "xxxxxxxxxx"
password = "xxxxxxxxxxx"
debug = False # True will display the output on your tty
payload = {}

def connect_mqtt():
    def on_connect(client, userdata, flags, rc):
      if debug:
        if rc == 0:
            print("Connected to MQTT Broker!")
        else:
            print("Failed to connect, return code %d\n", rc)
    client = mqtt_client.Client(client_id)
    client.username_pw_set(username, password)
    client.on_connect = on_connect
    client.connect(broker, port)
    return client

def publish(client, msg, topic):
  while True:
    try:
      result = client.publish(topic, msg, qos=0, retain=False)
      status = result[0]
      if debug:
        if status == 0:
           print(f"Sent `{msg}` to topic `{topic}`")
        else:
           print(f"Failed to send message to topic {topic}")

    except Exception as err:
      print("Waiting 5 seconds to reconnect to MQTT server... (" + str(err)+")")
      time.sleep(5)
      continue
    break

def poll_imeon_data():
  global payload
  session = requests.Session()

  try:
      resp = session.post(LOGIN_URL, data={"email" : EMAIL , "passwd": PASSWORD}, timeout=2)
      data1 = session.get(DATA_URL1, timeout=2)
      data2 = session.get(DATA_URL2, timeout=2)
      data3 = session.get(DATA_URL3, timeout=2)

      resp.raise_for_status()
      data1.raise_for_status()
      data2.raise_for_status()
      data3.raise_for_status()

      values1 = data1.json()
      values2 = data2.json()
      values3 = data3.json()

      payload["Timestamp"] = str(time.ctime())
      payload["Battery_status"] = str(values1['bat_status'])
      #payload["Battery_state"] = str(values2['state_battery']['message'])
      payload["Battery_activity"] = str(values2['state_battery']['class'])
      payload["Battery_current"] = str(values3['battery-current'])
      payload["Battery_tension"] = str(values3['battery-tension'])
      payload["Battery_temperature"] = str(values3['tmp-bat'])
      payload["Battery_charge"] = str(values3['bms-soc'])
      payload["Battery_error"] = str(values3['error'])
      payload["Battery_warning"] = str(values3['warning'])

      A = str(values2['state_grid']['message'])
      B = str(values2['state_meter']['message'])
      C = str(values2['state_pv']['message'])

      payload["Grid_state"] = A.rstrip(A[-1])
      payload["Meter_state"] = B.rstrip(A[-1])
      payload["PV_state"] = C.rstrip(A[-1])

      payload["Meter_status"] = str(values2['state_meter']['class'])
      payload["Inverter_state"] = str(values2['state_inverter']['message'])
      payload["State_timeline"] = str(values2['state_timeline']['detail'])
      payload["Error_history"] = str(values1['error_history'][0])

      if debug:
        for x in payload:
          print(x, " : ", payload[x])

  except Exception as err:
      print("Imeon is eating glue again... (" + str(err)+")")
      #time.sleep(10)
      #continue
      raise SystemExit
    #break

def run():
    global payload
    
    client = connect_mqtt()
    client.loop_start()
    client.will_set(status_topic, payload="offline", qos=0, retain=False)
    poll_imeon_data()
    publish(client, "online", status_topic)
    publish(client, json.dumps(payload), sensor_topic)
    client.loop_stop()

if __name__ == ' __main__':
    run()

```

Je vous remercie par avance pour la future aide apporter

---

<div class="post-metadata">

**Author:** ![Herbs](https://forum.hacf.fr/user_avatar/forum.hacf.fr/herbs/32/8029_2.png) [@Herbs](https://forum.hacf.fr/u/Herbs)\
**Post date:** [Février 20, 2024, 12:09 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/2 "2024-02-20T00:09:23Z")

</div>

Salut @Yoyouri

De mémoire dans configuration.yaml c’est sans le «&nbsp;s&nbsp;» :

```auto
python_script:

```

[EDIT] depuis la [doc](https://www.home-assistant.io/integrations/python_script/#writing-your-first-script-reading-input-and-logging-the-activity)

![image](https://forum.hacf.fr/uploads/default/original/3X/4/4/4445396f140d327e5948f5be41d95e2a29c30d3d.png)

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 12:21 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/3 "2024-02-20T00:21:24Z")

</div>

Salut  
Merci pour cette réponse, je test en direct

Alors je n’es plus l’erreur par contre je n’ai aucune données qui remonte dans l’Outils de développement Etat

De plus je n’ai pas trouver où mettre le `crontab` indiqué dans le lien

```auto
Then just run this python script with a crontab like : */5 * * * * /usr/bin/python /usr/local/python/imeon-stats.py >/dev/null 2>&1 (provided as an exemple in the repo as well)

```

Merci par avance

---

<div class="post-metadata">

**Author:** ![Herbs](https://forum.hacf.fr/user_avatar/forum.hacf.fr/herbs/32/8029_2.png) [@Herbs](https://forum.hacf.fr/u/Herbs)\
**Post date:** [Février 20, 2024, 12:29 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/4 "2024-02-20T00:29:59Z")

</div>

Déjà, si tu vas dans les outils de dev, onglet «&nbsp;services&nbsp;» tu sais lancer le script sans erreur :

![image](https://forum.hacf.fr/uploads/default/original/3X/4/1/4186c3edbb70cbcd44569665546b41c957aafcb9.png)

Parce qu’à vrai dire j’ai un doute sur le fait que le gars le fasse tourner directement sur HA.

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 12:36 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/5 "2024-02-20T00:36:30Z")

</div>

Voilà ce que j’ai

![image](https://forum.hacf.fr/uploads/default/original/3X/7/f/7f700373464413e2ca8749b21392903603b83c21.png)

![image](https://forum.hacf.fr/uploads/default/original/3X/0/3/03faca281cbf1e7b360224d3f6a4a0f198227df8.png)

A première vu j’ai un problème de Librairie

> [@Herbs](#):
>
> Parce qu’à vrai dire j’ai un doute sur le fait que le gars le fasse tourner directement sur HA.

Peut-être !  
J’ai lu sur la doc du Script celà  
` It is not possible to use Python imports with this integration. If you want to do more advanced scripts, you can take a look at [AppDaemon](https://appdaemon.readthedocs.io/en/latest/) or [pyscript](https://github.com/custom-components/pyscript)`  
J’ai installé Appdeamon, mais ensuite je n’ai pas compris comment l’utiliser

---

<div class="post-metadata">

**Author:** ![Herbs](https://forum.hacf.fr/user_avatar/forum.hacf.fr/herbs/32/8029_2.png) [@Herbs](https://forum.hacf.fr/u/Herbs)\
**Post date:** [Février 20, 2024, 12:51 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/6 "2024-02-20T00:51:07Z")

</div>

> [@Yoyouri](#):
>
> It is not possible to use Python imports with this integration.

Effectivement j’avais oublié ce détail 😕

Par contre, tous les modules importés dans ce script sont bien présents de base dans HA.

Je t’envoie en mp un truc à tenter 😉

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 12:54 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/7 "2024-02-20T00:54:27Z")

</div>

> [@Herbs](#):
>
> Je t’envoie en mp un truc à tenter 😉

Ok merci d’avance

Et au besoin ça peut attendre demain

---

<div class="post-metadata">

**Author:** ![vincen](https://forum.hacf.fr/user_avatar/forum.hacf.fr/vincen/32/84998_2.png) [@vincen](https://forum.hacf.fr/u/vincen)\
**Post date:** [Février 20, 2024, 7:25 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/8 "2024-02-20T07:25:38Z")

</div>

Je te conseille d’aller plutôt par la voie Pyscript si tu veux exécuter des scripts Python depuis HA directement 😉 Cela marche bien mieux et plus facile à débugger aussi !

> **[GitHub - custom-components/pyscript: Pyscript adds rich Python scripting to HASS](https://github.com/custom-components/pyscript)**
>
> Pyscript adds rich Python scripting to HASS. Contribute to custom-components/pyscript development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 11:33 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/9 "2024-02-20T11:33:32Z")

</div>

Salut

> [@vincen](#):
>
> Je te conseille d’aller plutôt par la voie Pyscript si tu veux exécuter des scripts Python depuis HA directement 😉 Cela marche bien mieux et plus facile à débugger aussi !

Je viens d’essayer, ça semble plus parlant mais j’ai cette erreur dans les logs

```auto

Logger: aiohttp.server
Source: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:421
First occurred: 11:18:58 (2 occurrences)
Last logged: 11:52:08

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 350, in data_received
    messages, upgraded, tail = self._request_parser.feed_data(data)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "aiohttp/_http_parser.pyx", line 557, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadStatusLine: 400, message:
  Invalid method encountered:

    b'\x16\x03\x01'
      ^

```

---

<div class="post-metadata">

**Author:** ![vincen](https://forum.hacf.fr/user_avatar/forum.hacf.fr/vincen/32/84998_2.png) [@vincen](https://forum.hacf.fr/u/vincen)\
**Post date:** [Février 20, 2024, 11:51 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/10 "2024-02-20T11:51:19Z")

</div>

> [@Yoyouri](#):
>
> Je viens d’essayer, ça semble plus parlant mais j’ai cette erreur dans les logs

Cela ressemble à une erreur de parsing ou de syntaxe dans ton script 😕

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 11:53 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/11 "2024-02-20T11:53:14Z")

</div>

> [@vincen](#):
>
> Cela ressemble à une erreur de parsing ou de syntaxe dans ton script 😕

Ok mais comment la résoudre !!  
Déjà que j’ai du mal avec le code YAML alors avec du python je ne vois pas comment le résoudre moi-même

---

<div class="post-metadata">

**Author:** ![bastgau](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bastgau/32/46175_2.png) [@bastgau](https://forum.hacf.fr/u/bastgau)\
**Post date:** [Février 20, 2024, 11:57 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/12 "2024-02-20T11:57:23Z")

</div>

Ca ressemble à un problème d’encodage des caractères. Il faut identifier sur quelle ligne l’erreur se situe.

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 12:13 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/13 "2024-02-20T12:13:52Z")

</div>

Est-ce que ça pourrait être du fait que je n’ai pas mis de crontab comme indiqué sur le lien Github ?

---

<div class="post-metadata">

**Author:** ![bastgau](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bastgau/32/46175_2.png) [@bastgau](https://forum.hacf.fr/u/bastgau)\
**Post date:** [Février 20, 2024, 12:17 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/14 "2024-02-20T12:17:36Z")

</div>

Non pas du tout, cela n’a rien à voir avec la crontab.

J’aurai tendance à dire que cela se passe ici :

```python
      resp = session.post(LOGIN_URL, data={"email" : EMAIL , "passwd": PASSWORD}, timeout=2)
      data1 = session.get(DATA_URL1, timeout=2)
      data2 = session.get(DATA_URL2, timeout=2)
      data3 = session.get(DATA_URL3, timeout=2)

```

Tu peux activer le debug en indiquant :

```python
debug = True

```

au lieu de

```python
debug = False

```

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 12:44 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/15 "2024-02-20T12:44:36Z")

</div>

> [@bastgau](#):
>
> Tu peux activer le debug en indiquant :

Je viens de le faire et j’ai redémarré HA  
Mais ayant des avertissements je ne vois pas dans la liste l’exécution du script

Comment faut-il faire pour le lancer manuellement ?

---

<div class="post-metadata">

**Author:** ![bastgau](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bastgau/32/46175_2.png) [@bastgau](https://forum.hacf.fr/u/bastgau)\
**Post date:** [Février 20, 2024, 1:04 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/16 "2024-02-20T13:04:33Z")

</div>

> After starting Home Assistant, use the Service tab in the Developer Tools page to call the service pyscript.hello\_world with parameters

[https://hacs-pyscript.readthedocs.io/en/stable/tutorial.html#writing-your-first-script](https://hacs-pyscript.readthedocs.io/en/stable/tutorial.html#writing-your-first-script)

Il faut remplacer «&nbsp;hello\_world&nbsp;» par le nom de ton script.

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 2:27 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/17 "2024-02-20T14:27:41Z")

</div>

Voici l’erreur que j’ai

```auto

Logger: aiohttp.server
Source: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:421
First occurred: 14:35:05 (3 occurrences)
Last logged: 14:54:13

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 350, in data_received
    messages, upgraded, tail = self._request_parser.feed_data(data)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "aiohttp/_http_parser.pyx", line 557, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadStatusLine: 400, message:
  Invalid method encountered:

    b'\x16\x03\x01'
      ^

```

Mais pas plus d’info qu’avant à moins qu’il y ai une façon particulière pour accéder aux debugs !!

---

<div class="post-metadata">

**Author:** ![bastgau](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bastgau/32/46175_2.png) [@bastgau](https://forum.hacf.fr/u/bastgau)\
**Post date:** [Février 20, 2024, 3:21 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/18 "2024-02-20T15:21:18Z")

</div>

Il faudrait exécuter et tester le script en dehors de HA maison bon il faut mettre en place la stack pour ça.

---

<div class="post-metadata">

**Author:** ![Yoyouri](https://forum.hacf.fr/user_avatar/forum.hacf.fr/yoyouri/32/19995_2.png) [@Yoyouri](https://forum.hacf.fr/u/Yoyouri)\
**Post date:** [Février 20, 2024, 4:43 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/19 "2024-02-20T16:43:54Z")

</div>

Ok, mais faut faire comment ?

---

<div class="post-metadata">

**Author:** ![bastgau](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bastgau/32/46175_2.png) [@bastgau](https://forum.hacf.fr/u/bastgau)\
**Post date:** [Février 20, 2024, 8:39 UTC](https://forum.hacf.fr/t/probleme-execution-script-python/36928/20 "2024-02-20T20:39:34Z")

</div>

Désolé, je vais passer mon tour. Je ne vais pas avoir le temps.

[Page suivante](https://forum.hacf.fr/t/probleme-execution-script-python/36928.md?page=2)
