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

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.

Installer le module python BeautifulSoup

  • Installez le module complémentaire Supervisor »SSH et terminal Web »
  • Ouvrez le terminal à partir du menu principal de gauche
  • Utilisez la commande pip3 installer beautifulsoup4

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
    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: »{{ (États("sensor.bin_collections")|from_json())["noir"] }}'
           identifiant unique: "black_bin"
         brown_bin:
           classe_appareil: horodatage
           value_template: »{{ (États("sensor.bin_collections")|from_json())["marron"] }}'
           identifiant unique: "brown_bin"
         blue_bin:
           classe_appareil: horodatage
           value_template: »{{ (États("sensor.bin_collections")|from_json())["bleu"] }}'
           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

Nous avons trouvé cet utile? S'il vous plaît ne laissez-nous savoir en laissant tomber 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