Shelly Temperatur-Addon für Shelly 1 / Shelly 1 PM
Preis: --
(Stand von: 2024/11/23 7:43 am - Details
×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.
)
0 neu0 gebraucht
  • Shelly 1 Addon, Shelly 1 Pm
(* = Affiliate-Link / Bildquelle: Amazon-Partnerprogramm)

Hallo meine lieben Freunde des gepflegten Kabelsalats.
Ich hab mal wieder etwas gebastelt, und zwar einen Barcode Scanner, der Name und Hersteller der gescannten EAN/GTIN Codes ermittelt und diese automatisch in die Einkaufsliste von Home Assistant einträgt.

Die Idee

Ich suchte nämlich schon länger nach einer Möglichkeit unseren Einkaufszettel bequemer zu füllen, ohne immer extra eine App zu starten und etwas tippen zu müssen. Die Idee entwickelte sich dann recht schnell in Richtung Barcode Scanner, denn so ziemlich alles was man kauft hat in der Regel eben eine eindeutige ID in Form von Strichcodes auf der Verpackung.

Jetzt stellte sich nur die Frage, woher bekomme ich den Namen des gescannten Produkts?

Nach kurzer Suche und einigen Tests bin ich bei zwei öffentlich nutzbaren Datenbanken gelandet, die auch eine API zur Verfügung stellen um eben Produktinformationen anhand einer EAN-Nummer gezielt abzufragen.
Und zwar „opengtindb.org“ und „openfoodfacts.org„. Beide sind für private Zwecke nahezu kostenlos. Openfoodfacts kostet wirklich gar nichts. Bei openGtinDB muss man eine private QueryID beantragen. Hier fordert der Inhaber allerdings, dass man mindestens 20€ Küste gegen Plastik zu spenden um die ID zu erhalten.


Video zum Barcodescanner für die Home Assistant Einkaufsliste

Natürlich habe ich das ganze Projekt auch wie immer noch einmal in einem Video zusammengefasst.

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

https://youtu.be/08J4WN4iDI0


Verwendete Bauteile

Gehäuse Druckdateien (STL)

https://www.thingiverse.com/thing:6016884


Platine

Die Platine könnt Ihr natürlich wie immer bei PCBWay fertigen lassen.
https://www.pcbway.com/project/shareproject/Barcode_scanner_made_for_ESPHome_bb9bba9a.html


Installation

Basisinstallation flashen

Über den folgenden Web-Installer könnt Ihr das Projekt direkt auf euren ESP32 Mini flashen.
Ggf. muss die Installation hier zwei mal gestartet werden, damit der ESP erkannt wird.

Dein Browser wird nicht unterstützt!
Die Installation kann nur über HTTPS erfolgen!


WLAN Zugang einrichten

Sobald das Projekt auf dem ESP ist, müsst Ihr noch noch die WLAN-Zugangsdaten angeben.
Sollte nach der Installation nicht automatisch der Dialog mit dem Punkt „Connect To WI-FI“ zu sehen sein, klickt einfach noch mal auf den Install-Button. Hier sollte euch jetzt „Connect To WI-FI“ angeboten werden um eure Wifi-Daten angeben zu können.

Projekt in ESPHome übernehmen (Adopt)

Anschließend wird der ESP automatisch im ESPHome erkannt und zum übernehmen angeboten.
Durch einen Klick auf „Adopt“ wird dann ein neues ESPHome Projekt mit dem Standard Code erzeugt.

Grundsätzlich kann man es jetzt direkt auf den ESP installieren. Ich würde aber empfehlen, mindestens noch eine Query-ID für die OpenGtinDB zu beantragen und diese über die Substitutions über rest_opentindb_queryid zu hinterlegen. Ansonsten wird nur der Demo-Account verwendet, welcher FÜR ALLE NUTZER in Summe auf 500 Anfragen/Tag limitiert ist.

Wer möchte kann auch direkt noch den Anzeigenamen (friendly_name) mit angeben.
Fügt dazu einfach die folgenden 3 Code-Zeilen am Anfang in euer Projekt ein und passt die queryid an eure angeforderte Benutzer-ID an.

substitutions:

  friendly_name: "Barcode Scanner"
  rest_opentindb_queryid: "400000000"

Alle Informationen zu den weiteren Einstellmöglichkeiten wie zum Beispiel bei abweichender Pin-Belegung findet Ihr im GitHub-Repository unter:
https://github.com/SmartHome-yourself/barcode-scanner-for-esphome

Solltet Ihr nicht die Standardeinträge “wifi_ssid” und “wifi_password” in eurer Secrets.yaml für ESPHome Projekte verwenden, müsst Ihr ebenfalls im Code noch euren WLAN-Zugang angeben.

Das Projekt erwartet im Ordner /homeassistant/esphome/_fonts noch die Schriftart Datei arial.ttf. Diese könnt ich euch einfach über Google suchen, herunterladen und am genannten Ort ablegen.

Flasht jetzt das Projekt erneut durch einen Klick auf „Install“ auf euren ESP.
Sofern euer Home Assistant nicht über HTTPS erreichbar ist, müsst Ihr dabei den USB-Anschluss eures Home Assistant (oder von dem Gerät auf dem euer ESPHome läuft) verwenden. Wenn ihr direkt OTA flashen wollt, müsst Ihr den API- Encryption-key aus dem generierten Code entfernen.

Alles was Ihr über das flashen eines ESPHome Projektes wissen müsst, habe ich auch noch einmal in diesem Video zusammengefasst:

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

https://www.youtube.com/watch?v=6aMtzjz_DLM

Solltet Ihr später noch einmal Änderungen am Projekt auf den ESP übertragen wollen, könnt ihr das ab jetzt immer OTA also einfach über WLAN erledigen.


Einrichtung des Barcode Scanners in Home Assistant

Zuerst müsst Ihr die Einkaufsliste in Home Assistant installieren, sofern Ihr diese noch nicht aktiviert habt.

Einkaufslisten-Sensor

Wenn Ihr der Liste später nur Einträge hinzufügen wollt, die noch nicht auf der Einkaufsliste vorhanden sind, benötigt Ihr noch einen Sensor. Diese Funktion bietet die Integration nämlich leider nicht von Haus aus.

Dazu tragt Ihr den folgenden Sensor in eurer configuration.yaml ein:

sensor:
  platform: command_line
  name: shopping_list
  command: python3 /config/shopping_list.py

Dieser Sensor nutzt ein Python-Script um die vorhandenen Daten der Einkaufsliste auszulesen und als Sensorwert zurückzuliefern.
Diese Datei müsst Ihr ebenfalls noch anlegen und den folgenden Code in die Datei kopieren.

#!/usr/local/bin/python
# coding: utf8
import json

with open('/config/.shopping_list.json') as data_file:
    shoppingListData = json.load(data_file)

content = u"ShoppingList:\n"
for entry in shoppingListData:
    if not entry['complete']:
        content += u"%s;\n" % entry['name']

content += u"\n"

print(content)

Nach einem Neustart von Home Assistant sollte der neue Sensor zur Verfügung stehen.


Automatisierung

Jetzt müsst Ihr nur noch die Automatisierung anlegen. Danach ist der Barcode-Scanner auch schon einsatzbereit. Die Automatisierung sollte in etwa so aussehen:

alias: Einkaufsliste Barcode Sensor
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.barcode_scanner_product
action:
  - if:
      - condition: not
        conditions:
          - condition: state
            entity_id: sensor.barcode_scanner_product
            state: unknown
    then:
      - if:
          - condition: not
            conditions:
              - condition: state
                entity_id: sensor.barcode_scanner_product
                state: unknown
                alias: Wurde Produkt gefunden?
              - condition: template
                value_template: >-
                  {{ states('sensor.barcode_scanner_product') in
                  states('sensor.shopping_list') }}
            alias: Wenn Produkt gefunden wurde und nicht bereits vorhanden
        then:
          - service: shopping_list.add_item
            data:
              name: "{{states('sensor.barcode_scanner_product')}}"


Wenn alles geklappt hat, sollte es das gewesen sein, und alle gescannten Produkte erscheinen ab sofort automatisch auf eurer Einkaufsliste.

Solltet Ihr Probleme bei der Umsetzung haben, schaut gerne auf unserem Discord vorbei. Dort kann euch sicher schnell geholfen werden.

Viel Spaß beim nachbauen!


ESPHome Tutorial Serie

Falls Ihr noch mehr über ESPHome wissen wollt, werft doch einfach mal einen Blick in meine ESPHome Tutorial Serie auf YouTube:

Playlist:
https://www.youtube.com/playlist?list=PLtEjuZQyAkqGAvHjsM6G295CsKXetm-_Z


Ansonsten findet Ihr auch jede Menge Informationen rund um ESPHome hier im Wiki: