Appeler un script toutes les 250 ms

Bonjour !

Mon problème

Ce n’est pas à proprement parler un problème, mais une recherche de piste à explorer. Je souhaite lancer un script python (peut éventuellement changer si besoin) plusieurs fois par secondes, ceci afin de communiquer avec une carte d’entrées / sorties sur Ethernet (marque Kincony 4E/4E et 8E/16S).

La commutation des sorties est assez aisée et peu se faire via différentes méthodes : NodeRed, binary_sensor (commande line) … Il « suffit » d’émettre une trame facile à comprendre (‹ RELAY-SET-1,2,1 › par exemple pour mettre à 1 le relais 2).

Le problème vient surtout des entrées. En effet, le module Kincony envoie bien une information en cas de passage d’une entrée de l’état 0 à l’état 1. Cependant:

  • Pas de différenciation des entrées activées : nécessité d’aller lire les entrées
  • Délai d’apparition de cette information très long : 2 à 3 secondes
  • Pas d’information lors du passage de 1 vers 0

Donc l’utilisation d’un bouton poussoir est exclue (l’information est trop fugace pour que le module renvoie l’information qu’une entrée à commutée), et même la détection d’information « lente » est problématique (imaginez que l’entrée est un capteur de niveau d’eau qui doit gérer la pompe d’un réservoir …).

La solution que j’ai trouvée consiste à questionner en permanence la carte sur l’état des entrées (et des sorties par la même occasion, car si une coupure survient, les sorties retombe à 0 et les indications de HA ne sont plus conformes).

J’ai essayé sous AppDaemon de convertir un plugin développé pour Domoticz, mais j’achoppe sur la gestion de la boucle d’interrogation de la carte. Un thread unique ralenti fortement AppDaemon, j’ai un peu de mal avec le multithread (et avec l’anglais pour comprendre comment fonctionne AppDaemon :grinning_face_with_smiling_eyes:)

Et enfin, la question que tout le monde attend :
Existe-t’il un moyen de lancer un script de manière régulière et avec une fréquence élevée ? Genre, toutes les 200 ms ?

Ma configuration

System Health

version core-2021.8.8
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.6
os_name Linux
os_version 5.10.53
arch armv7l
timezone Europe/Paris
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 6.2
update_channel stable
supervisor_version supervisor-2021.06.8
docker_version 20.10.6
disk_total 13.6 GB
disk_used 5.0 GB
healthy true
supported true
board odroid-xu4
supervisor_api ok
version_api ok
installed_addons File editor (5.3.3), Node-RED (10.0.0), Terminal & SSH (9.1.3), Samba share (9.5.1), AppDaemon 4 (0.7.0), ESPHome (2021.8.1), DHCP server (1.2)
Lovelace
dashboards 1
resources 2
views 2
mode storage

Merci beaucoup pour l’aide que vous pourriez m’apporter. J’espère que ce n’était pas dans la section Dev qu’il fallait que je post …

Je regarderai du côté de pyscript :

https://hacs-pyscript.readthedocs.io/en/latest/