OpenEPaperLink 2.75
HomeAssistant: 2024.11.3 bzw. 2024.12.5
Wir sammeln hier ein paar Code Schnipsel für openepaperlink Displays.
Ich habe folgende Displays hier:
2x Solum ST-GR29000
und jetzt neu 2.6″ 296×152 und 2.2″ 212×104.
Alle sind mit openepaperlink geflasht.
In Homeassistant nutze ich die OpenEPaperLink integration for Home Assistant (HACS).
Als erstes muss man die Batterien so aus einem Tag entfernen und dann die Kontakte kurzschließen, Batterien wieder einsetzen.
Tipp: Das Batteriefach läst sich super mit einer Münze öffnen.
Dann suchen die Tags den Accesspoint und lassen sich dann auch in HA finden.
Die findet ihr auf der AP-Webseite. Bei mir waren die Content / Camera Bilder nicht vorhanden. Es hat mir geholfen, die Tags einmal neuzustarten.
Für den Neustart auf die AP Webseite gehen, den Tag auswählen, unten Rechts auf den kleinen Pfeil klicken und auf „reboot“ klicken. Sollte das auch nicht funktionieren, einmal den AP neustarten. Dazu auf Einstellungen und „Reboot AP“ anklicken.
Hier Beispielcode für diese Kachel
0000032C9BFB3E17 ist die MAC-Adresse von eurem Tag.
type: horizontal-stack
cards:
- type: entities
entities:
- entity: sensor.0000032C9BFB3E17_battery
name: Batterie
- entity: sensor.0000032C9BFB3E17_last_seen
name: Wann
- entity: sensor.0000032C9BFB3E17_rssi
name: Signal
title: weiß groß
grid_options:
columns: full
rows: 4
Picture Entität:
show_state: false
show_name: false
camera_view: live
type: picture-entity
entity: camera.0000032C9BFB3E17_content
Linksammlung:
With drawcustom
, you can create an image in Home Assistant and send the rendered image to an OpenEpaperLink AP:
https://github.com/OpenEPaperLink/Home_Assistant_Integration/blob/0.5.0.8/docs/drawcustom/supported_types.md
YAML Sammlung: Stundenplan, Müllplan, Telegram message
https://github.com/queeek/HomeassistantAutomations/tree/main/OpenEPaper
YAML Sammlung – Flight Radar, DWD, Pflanzen etc.
Müllabholung – aktueller STand
Als Müll Schedule nutze ich: https://github.com/mampfes/hacs_waste_collection_schedule
target:
entity_id:
- open_epaper_link.0000032C7E413E1D
data:
background: white
rotate: 0
payload:
- type: text
value: >-
{{ states('sensor.naechster') }} {{ 'Tag:' if is_state('sensor.naechster', '1') else 'Tage:' }}
{{(states.sensor.naechster.attributes.values() | list)[0] |
replace('Restabfall', 'Restmüll') }}
font: ppb.ttf
x: 5
"y": 10
size: 20
color: |
{{ 'red' if is_state('sensor.naechster', '1') else 'black' }}
- type: icon
value: >
{{ 'battery-100' if states('sensor.0000032c7e413e1d_battery')|int >= 90
else 'battery-50' }}
x: 280
"y": 0
size: 14
color: >
{{ 'black' if states('sensor.0000032c7e413e1d_battery')|int >= 90 else
'red' }}
- type: text
value: Bio
font: ppb.ttf
x: 15
"y": 60
size: 16
color: |
{{ 'red' if is_state('sensor.biotonne', '1') else 'black' }}
- type: text
value: "{{ states('sensor.biotonne') }}"
font: ppb.ttf
x: 5
"y": 130
size: 22
color: |
{{ 'red' if is_state('sensor.biotonne', '1') else 'black' }}
- type: icon
value: >
{% set bioabfall_wert = states('sensor.biotonne') | string |
replace('Bioabfall ', '') | replace('in ', '') | replace(' tagen', '')
%} {% if bioabfall_wert == '1' %}
delete-alert-outline
{% elif bioabfall_wert == '2' %}
delete-clock-outline
{% elif bioabfall_wert == '3' %}
delete-empty-outline
{% elif bioabfall_wert == '4' %}
delete-variant
{% elif bioabfall_wert == '5' %}
delete-outline
{% else %}
delete-sweep-outline
{% endif %}
x: 3
"y": 70
size: 60
color: |
{{ 'red' if is_state('sensor.biotonne', '1') else 'black' }}
- type: text
value: Gelb
font: ppb.ttf
x: 80
"y": 60
size: 16
color: |
{{ 'red' if is_state('sensor.gelbersack', '1') else 'black' }}
- type: text
value: >-
{{ states('sensor.gelbersack') | replace('Leichtverpackungen in ', '') |
replace('tagen', 'Tage') }}
font: ppb.ttf
x: 75
"y": 130
size: 22
color: |
{{ 'red' if is_state('sensor.gelbersack', '1') else 'black' }}
- type: icon
value: >
{% set gelbetonne_wert = states('sensor.gelbersack') | string |
replace('Leichtverpackungen ', '') | replace('in ', '') | replace('
tagen', '') %} {% if gelbetonne_wert == '1' %}
delete-alert-outline
{% elif gelbetonne_wert == '2' %}
delete-clock-outline
{% elif gelbetonne_wert == '3' %}
delete-empty-outline
{% elif gelbetonne_wert == '4' %}
delete-variant
{% elif gelbetonne_wert == '5' %}
delete-outline
{% else %}
delete-sweep-outline
{% endif %}
x: 72
"y": 70
size: 60
color: |
{{ 'red' if is_state('sensor.gelbersack', '1') else 'black' }}
- type: text
value: Rest
font: ppb.ttf
x: 155
"y": 60
size: 16
color: |
{{ 'red' if is_state('sensor.restabfall', '1') else 'black' }}
- type: text
value: >-
{{ states('sensor.restabfall') | replace('Restabfall ', '') |
replace('in ', '') | replace('tagen', 'Tage') }}
font: ppb.ttf
x: 155
"y": 130
size: 22
color: |
{{ 'red' if is_state('sensor.restabfall', '1') else 'black' }}
- type: icon
value: >
{% set restabfall_wert = states('sensor.restabfall') | string |
replace('Restabfall ', '') | replace('in ', '') | replace(' tagen', '')
%} {% if restabfall_wert == '1' %}
delete-alert-outline
{% elif restabfall_wert == '2' %}
delete-clock-outline
{% elif restabfall_wert == '3' %}
delete-empty-outline
{% elif restabfall_wert == '4' %}
delete-variant
{% elif restabfall_wert == '5' %}
delete-outline
{% else %}
delete-sweep-outline
{% endif %}
x: 150
"y": 70
size: 60
color: |
{{ 'red' if is_state('sensor.restabfall', '1') else 'black' }}
- type: text
value: Papier
font: ppb.ttf
x: 225
"y": 60
size: 16
color: |
{{ 'red' if is_state('sensor.altpapier', '1') else 'black' }}
- type: text
value: "{{ states('sensor.altpapier') }}"
font: ppb.ttf
x: 225
"y": 130
size: 22
- type: icon
value: >
{% set papier_wert = states('sensor.altpapier') %} {% if papier_wert ==
'1' %}
delete-alert-outline
{% elif papier_wert == '2' %}
delete-clock-outline
{% elif papier_wert == '3' %}
delete-empty-outline
{% elif papier_wert == '4' %}
delete-variant
{% elif papier_wert == '5' %}
delete-outline
{% else %}
delete-sweep-outline
{% endif %}
x: 220
"y": 70
size: 60
color: |
{{ 'red' if is_state('sensor.altpapier', '1') else 'black' }}
action: open_epaper_link.drawcustom
Was ich gerne anzeigen möchte:
– ÖPNV-Abfahrten (Nutzung von https://github.com/Nisbo/another_mvg oder https://github.com/OpenEPaperLink/Home_Assistant_Integration/wiki/MVV-Departure-Display)
– Anzeige von Müllabholung
– Bambulab A1 mini Sensordaten
– …
Dinge die mir aufgefallen sind:
- „Display a copy“ funktioniert nur bei Displays gleichen Types/Größe, ansonsten traten Artefakte auf.