0Collections de bacs dans Home Assistant

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 20-déc-2021

J'ai apporté une modification à la fois au script bash ET au modèle – le premier pour s'assurer que les packages requis sont disponibles et le second pour corriger un changement radical apporté 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 "Samba Share’ addon superviseur pour accéder aux fichiers de mon assistant personnel directement à partir de mon PC Windows – sauf si vous avez 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
    import sys
    import subprocess
    import pkg_resources
    
    required = {'belle soupe4', 'python-dateutil'}
    installé = {pkg.key pour pkg dans pkg_resources.working_set}
    manquant = obligatoire - installed
    
    if missing:
        python = sys.executable
        subprocess.check_call([python3, '-m', 'pip3', '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 changer 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. La mine 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: section) 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

Qu'est-ce que tu penses? Envoyez-nous un commentaire ci-dessous! Si vous souhaitez vous abonner s'il vous plaît utiliser le lien d'abonnement dans le menu en haut à droite. Vous pouvez également partager avec vos amis en utilisant les liens sociaux ci-dessous. À votre santé.

Laisser un commentaire