Je suis nouveau avec HA et je cherche votre aide pour trouver une meilleur solution optimisée. je m’explique :
J’ai un fichier csv dans lequel j’ai X dates journalière sous forme Y-m-d h:m:s, je souhaite être notifier par HA (Mobile, telegram ou autre chose pas encore décidé) dés que le timestamp de HA est égal à une des dates du fichier csv de la journée.
Par exemple: si l’heure dans HA est : 02/02/2022 13:55:19 ou 02/02/2022 18:55:19 ou 02/02/2022 12:56:19 je souhaite déclencher une notif.
Pour traiter cette demande, j’ai plusieurs méthodes mais je sais pas laquelle est meilleur et surtout peut être il existe d’autres solutions plus intéressantes d’où mon post.
Les solutions que je vois pour traiter ça :
1 - Soit je développe une appli externe à HA et qui via un cron envoi en RESTful notification, l’avantage de cette solution HA sera juste notifie pour déclencher une action.
2 - Soit via une appli externe à HA exposer le flux csv en json et lancer un cron qui se lance chaque minute dans HA qui vérifier si le temps de HA est égal à une de mes dates et si c’est le cas déclencher une notifications, l’inconvénient de cette solution je dois tourner le cron dans HA chaque minutes et je trouve ça pas top.
Vous avez d’autres solutions ou un avis sur le sujet.
Merci de votre retour
Ma configuration
System Health
version
core-2021.12.10
installation_type
Home Assistant OS
dev
false
hassio
true
docker
true
user
root
virtualenv
false
python_version
3.9.7
os_name
Linux
os_version
5.10.91
arch
x86_64
timezone
Europe/Paris
Home Assistant Community Store
GitHub API
ok
Github API Calls Remaining
5000
Installed Version
1.21.0
Stage
running
Available Repositories
966
Downloaded Repositories
6
AccuWeather
can_reach_server
ok
remaining_requests
41
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 7.2
update_channel
stable
supervisor_version
supervisor-2022.01.1
docker_version
20.10.9
disk_total
30.8 GB
disk_used
5.8 GB
healthy
true
supported
true
board
ova
supervisor_api
ok
version_api
ok
installed_addons
Samba share (9.5.1), SSH & Web Terminal (10.0.2), Studio Code Server (4.1.0), Home Assistant Google Drive Backup (0.105.2), Node-RED (10.4.0), Terminal & SSH (9.3.0), Mosquitto broker (6.0.1)
Perso, je ferai ça avec Nodered + cron plus (node-red-contrib-cron-plus (node) - Node-RED)
Tu lis le CSV dans nodered avec le contenu de ce que tu as lu tu paramètres les exécutions programmées grâce a cron plus.
Afin de pouvoir t’aider au mieux, il faudrait que je sache la manière dont est récupéré ce fichier et si celui-ci est déposé sur le serveur HA.
Si le fichier est présent sur le serveur, tu peux appeler un script python next_trigger.py qui te retourne la prochaine date :
import csv
from datetime import datetime
next_date = []
with open('file.csv') as csv_file:
csv_reader = csv.DictReader(csv_file,delimiter=';')
for row in csv_reader:
for key in ['date1', 'date2', 'date3']:
if datetime. strptime(row[key], '%Y-%m-%d %H:%M:%S') > datetime.now():
next_date.append(row[key])
print(next_date[0])
Tu créés un sensor qui va exécuter ce script python (par défaut toutes les 60s) :
sensor:
- platform: command_line
name: next trigger
command: "python3 next_trigger.py"
Tu créés un input_datetime nommé next_trigger dans ton fichier de qui va te permettre de déclencher une automatisation :
Mon csv contient les données d’une année complète et je peux le déposer chaque an dans le serveur HA pas de soucis sur ce point.
Pour le format je peux le changer en json si c’est plus simple d l’intégrer dans HA
Mon but est d’avoir 05 sensor dans HA (hour1, hour2, hour3, hour4, hour5) sous format hh:mm exemple 18:30, et après je peux déclencher des notifications si l’heure system est égale à l’un des sonsors (hour1, hour2, hour3, hour4, hour5).