Ich habe eine alternative Idee zu einer Datenbank: Einen Key-Value Sensor
über die configuration.yaml (oder später als !include Datei)
template:
- sensor:
- name: "Barcode 2 Einkaufsliste"
unique_id: "barcode2einkaufsliste"
state: "initialized"
attributes:
"Würze flüssig 250 gr Flasche – MAGGI – 202ml": "Maggi"
"Mandarinen Klasse 1; Peru, Republik Südafrika": "Mandarinen"
"Dinkelmehl Type 630 Hell und Vielseitig": "Dinkelmehl"
"Dein Barcode Beispiel: Dein Einkaufslisten Artikelname"
Abfragen tut man die Wertepaare über
{% set barcode = "Dinkelmehl Type 630 Hell und Vielseitig" %}
{{ state_attr('sensor.barcode2einkaufsliste', barcode) }}
Nachteilig, Artikelname muß exakt dem im Wertepaar entsprechen.
Zumindestens, Groß/Kleinschreibung könnte man abfangen:
{% set barcode = "Dinkelmehl Type 630 Hell und Vielseitig" %}
{% set suche = barcode | lower %}
{% set attrs = states.sensor.barcode2einkaufsliste.attributes %}
{% set treffer = namespace(wert="Unbekannt") %}
{% for key, value in attrs.items() %}
{% if key | lower == suche %}
{% set treffer.wert = value %}
{% endif %}
{% endfor %}
{{ treffer.wert }}
Ich könnte mir das auch alles in einem Macro vorstellen, sowohl die Wertepaare als auch die Suchlogik
{% macro barcode_lookup(text) %}
{% set lookup = {
"Würze flüssig 250 gr Flasche – MAGGI – 202ml" | lower: "Maggi",
"Mandarinen Klasse 1; Peru, Republik Südafrika" | lower: "Mandarinen",
"Dinkelmehl Type 630 Hell und Vielseitig" | lower: "Dinkelmehl",
"Dein Barcode Beispiel" | lower: "Dein Einkaufslisten Artikelname"
} %}
{{ lookup.get(text | lower, "Unbekannt") }}
{% endmacro %}
Die Abfrage wäre denn
{%- from 'macros.jinja' import barcode_lookup as test -%}
{{ test("DINKELMEHL TYPE 630 HELL UND VIELSEITIG") }}
Ich hätte leichte Tendenz für das Macro weil Daten und gleichbleibende Logik zusammen.
EDIT:
Habe den Macro Code nachgebessert und getestet.