Je développe ma configuration de maison intelligente basée sur Home Assistant depuis environ un an maintenant (depuis son départ de SmartThings) et après une courbe d'apprentissage initiale abrupte, je suis très satisfait de l'assistant domestique, alors j'ai commencé à travailler pour étendre les choses qu'il fait car je suis convaincu qu'il offre une base à long terme pour ma maison intelligente. Une chose que je voulais ajouter était les données de collecte des bacs pour me rappeler quel bac est dû quand. Comme je vis à Sheffield, je devais extraire ces données du fournisseur externe des autorités locales (Veolia). Les détails suivants comment j'ai fait cela, s'appuyant beaucoup sur le travail d'autres qui l'ont déjà fait pour d'autres régions
Mise à jour 10 août 2022
J'ai modifié le script pour le rendre compatible avec l'assistant domestique après le passage à Python 3
Mise à jour 20-déc-2021
J'ai modifié à la fois ce script bash ET le modèle - le premier pour s'assurer que les packages requis sont disponibles et le second pour corriger une modification radicale apportée par les versions récentes de l'assistant domestique
J'ai utilisé un script que j'ai modifié à partir de divers exemples sur un Fil de support HA par RobBrad. Pour que ce script s'exécute, j'avais besoin d'installer le module beautifulsoup sur home-assistant.
Ajouter un script
- J'utilise le module de supervision «Samba Share» pour accéder aux fichiers de mon assistant personnel directement à partir de mon PC Windows - à moins que vous n'ayez déjà une méthode d'accès préférée, je vous recommande de faire de même
- naviguer vers \\adresse-ip ha config
- créer un scripts python dossier
- Créez un nouveau script python dans ce dossier - j'ai appelé le mien bin_collection.py
- Insérez le script suivant
importer système sous-processus d'importation importer pkg_resources requis = {'belle soupe4', 'python-dateutil', 'demandes'} installé = {pkg.key pour pkg dans pkg_resources.working_set} manquant = obligatoire - importer système sous-processus d'importation importer pkg_resources requis =: importer système sous-processus d'importation importer pkg_resources requis =([python, '-m', 'pépin', 'installer', *manquant], stdout=sous-processus.DEVNULL) depuis bs4 importer BeautifulSoup import date / heure depuis l'analyseur d'importation de données demandes d'importation importer json url = 'https://wasteservices.sheffield.gov.uk/property/############ ' page = requests.get(URL) si page.status_code != 200: Sortie(1) soupe = BeautifulSoup(page.text, "html.parser") out = {} bh3s = soup.find_all(«td», class_ ="Nom du service") bpds = soup.find_all(«td», class_ ="prochain service") pour i dans la gamme(seulement(bpds)): bin_colour = str(bh3s[je].Contenu[3]).plus bas().Divisé(»>»)[1].Divisé('')[0] en dehors[bin_colour] = parser.parse(bpds[je].Contenu[2].bande().Divisé(»,»)[0]).strftime(«% Y-% m-% d») impression(json.dumps(en dehors))
- Vous devrez remplacer le ############ avec le numéro unique de votre propriété que je vous expliquerai comment obtenir à l'étape suivante
Obtenez votre adresse unique
- Accédez à https://wasteservices.sheffield.gov.uk/property/
- Entrez votre code postal et sélectionnez votre adresse dans la liste
- Notez la nouvelle URL. Utilisez-le dans la ligne URL du script ci-dessus - la seule partie que vous devrez modifier est le 12 numéro de chiffre à la fin
Appelez votre script depuis configuration.yaml
- Une simple entrée dans configuration.yaml suffit pour exécuter le script
- Vous voudrez peut-être ajuster la fréquence de la course. Le mien coule une fois par jour.
capteur: - Plate-forme: ligne de commande Nom: "Collections de bacs" commander: "python3 /config/python-scripts/bin_collection.py" scan_interval: 86400 command_timeout: 60 #nécessaire car le site Web est lent à répondre et expirera souvent s'il est laissé par défaut
Créez des entités pour chaque type de chutier à l'aide de configuration.yaml
- Immédiatement sous la section ci-dessus (donc toujours sous le capteur: sec-tion) ajouter ce qui suit
- Plate-forme: modèle capteurs: black_bin: classe_appareil: horodatage value_template: »{{ l'heure du strp((États("sensor.bin_collections")|from_json())["noir"], "%A-%m-%d") | as_local }}' identifiant unique: "black_bin" brown_bin: classe_appareil: horodatage value_template: »{{ l'heure du strp((États("sensor.bin_collections")|from_json())["marron"], "%A-%m-%d") | as_local }}' identifiant unique: "brown_bin" blue_bin: classe_appareil: horodatage value_template: »{{ l'heure du strp((États("sensor.bin_collections")|from_json())["bleu"], "%A-%m-%d") | as_local }}' identifiant unique: "blue_bin"
Afficher les résultats sur le front-end
- Pour afficher les résultats sur le front-end, ajoutez simplement une carte avec le 3 capteurs dessus (spécifiquement sensor.black_bin, sensor.blue_bin, et sensor.brown_bin)
- Notez que vous devrez peut-être redémarrer l'assistant domestique pour charger les nouveaux capteurs que vous avez ajoutés à configuration.yaml
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”