1440 lines
54 KiB
YAML
1440 lines
54 KiB
YAML
- alias: 7.5 Inch Dashboard
|
||
description: Dashboard mit Wetter, News, Abfallkalender etc.
|
||
triggers:
|
||
- trigger: time
|
||
at: 05:00:00
|
||
- trigger: time
|
||
at: '15:30:00'
|
||
conditions: []
|
||
actions:
|
||
- alias: Get events 0 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') }}'
|
||
end_date_time: '{{today_at(''00:00'') + timedelta(days=1)}}'
|
||
response_variable: cal_day_0
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDARHERE.COM
|
||
action: calendar.get_events
|
||
- alias: Get events 1 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') + timedelta(days=1) }}'
|
||
end_date_time: '{{ today_at(''00:00'') + timedelta(days=2) }}'
|
||
response_variable: cal_day_1
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDARHERE.COM
|
||
action: calendar.get_events
|
||
- alias: Get events 2 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') + timedelta(days=2) }}'
|
||
end_date_time: '{{ today_at(''00:00'') + timedelta(days=3) }}'
|
||
response_variable: cal_day_2
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDARHERE.COM
|
||
action: calendar.get_events
|
||
- alias: Get events 4 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') + timedelta(days=3) }}'
|
||
end_date_time: '{{ today_at(''00:00'') + timedelta(days=4) }}'
|
||
response_variable: cal_day_3
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDARHERE.COM
|
||
action: calendar.get_events
|
||
- alias: Extract events from all calendars
|
||
variables:
|
||
events_day0: "{{ cal_day_0.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
events_day1: "{{ cal_day_1.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
events_day2: "{{ cal_day_2.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
events_day3: "{{ cal_day_3.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
count0: "{% if (events_day0 | count == 0) %}\n 1\n{% else %}\n {{ events_day0\
|
||
\ | count }}\n{% endif %}\n"
|
||
count1: "{% if (events_day1 | count == 0) %}\n 1\n{% else %}\n {{ events_day1\
|
||
\ | count }}\n{% endif %}\n"
|
||
count2: "{% if (events_day2 | count == 0) %}\n 1\n{% else %}\n {{ events_day2\
|
||
\ | count }}\n{% endif %}\n"
|
||
count3: "{% if (events_day3 | count == 0) %}\n 1\n{% else %}\n {{ events_day3\
|
||
\ | count }}\n{% endif %}\n"
|
||
gap_header: 230
|
||
gap_line: 1
|
||
gap_days: 1
|
||
gap_title: 16
|
||
gap_text: 16
|
||
days:
|
||
- Montag
|
||
- Dienstag
|
||
- Mittwoch
|
||
- Donnerstag
|
||
- Freitag
|
||
- Samstag
|
||
- Sonntag
|
||
months:
|
||
- Januar
|
||
- Februar
|
||
- März
|
||
- April
|
||
- Mai
|
||
- Juni
|
||
- Juli
|
||
- August
|
||
- September
|
||
- Oktober
|
||
- November
|
||
- Dezember
|
||
- alias: Send generated Agenda to OEPL
|
||
metadata: {}
|
||
data:
|
||
rotate: 0
|
||
dry-run: false
|
||
payload:
|
||
- type: rectangle
|
||
x_start: 0
|
||
x_end: 800
|
||
y_start: 0
|
||
y_end: 25
|
||
width: 0
|
||
fill: black
|
||
- type: text
|
||
value: '{% set days = {''Monday'':''Montag'',''Tuesday'':''Dienstag'',''Wednesday'':''Mittwoch'',''Thursday'':''Donnerstag'',''Friday'':''Freitag'',''Saturday'':''Samstag'',''Sunday'':''Sonntag''}
|
||
%} {% set months = {''01'':''Januar'',''02'':''Februar'',''03'':''März'',''04'':''April'',''05'':''Mai'',''06'':''Juni'',''07'':''Juli'',''08'':''August'',''09'':''September'',''10'':''Oktober'',''11'':''November'',''12'':''Dezember''}
|
||
%} {% set now_ts = as_timestamp(now()) %} {% set weekday = days[now_ts |
|
||
timestamp_custom(''%A'')] %} {% set day = now_ts | timestamp_custom(''%d'')
|
||
%} {% set month = months[now_ts | timestamp_custom(''%m'')] %} {% set year
|
||
= now_ts | timestamp_custom(''%Y'') %} {% set time = now_ts | timestamp_custom(''%H:%M'')
|
||
%} Heute ist der {{ weekday }}, der {{ day }}. {{ month }} {{ year }}. Zuletzt
|
||
aktualisiert {{ time }} Uhr.
|
||
|
||
'
|
||
x: 5
|
||
y: 5
|
||
size: 16
|
||
font: ../../media/greenscreen.ttf
|
||
color: white
|
||
- type: text
|
||
value: Witz des Tages
|
||
x: 400
|
||
y: 190
|
||
size: 18
|
||
font: ../../media/8bitwonder.ttf
|
||
color: gray
|
||
- type: text
|
||
value: "{% set jokes = [\n \"Wie nennt man einen Bumerang, der nicht zurückkommt?\
|
||
\ Ein Stock.\",\n \"Wie nennt man einen Schneemann in der Wüste? Eine Pfütze.\"\
|
||
,\n \"Was ist grün u£nd steht vor der Tür? Ein Klopfsalat!\",\n \"Was\
|
||
\ ist orange und klingelt an der Tür? Eine Wanderine!\",\n \"Was ist grün,\
|
||
\ hüpft durch den Wald und ist sehr leise? Ein Ninja-Frosch!\",\n \"Warum\
|
||
\ können Geister so schlecht lügen? Sie sind zu leicht durchschaubar!\"\
|
||
,\n \"Ein Witz über Zeitreisen. Aber du wirst ihn nicht mögen. Du hast\
|
||
\ gestern schon darüber gelacht!\",\n \"Wie nennt man einen Bumerang der\
|
||
\ nicht zurück kommt? Einen Stock!\",\n \"Mama: Wo ist das Sieb? Fritzchen:\
|
||
\ Hab es weggeworfen - da waren so viele Löcher drin.\",\n \"Wichtige Erkenntnis\
|
||
\ nach dem Urlaub: Gebräunte Haut macht 3kg schwerer!\",\n \"Kunde zum\
|
||
\ Verkäufer: Werfen Sie mir einen Fisch zu! Verkäufer: Warum? Kunde: Dann\
|
||
\ kann ich sagen, ich hätte ihn gefangen!\",\n \"Dingdong! 'Hi, wir sammeln\
|
||
\ fürs Kinderheim. Haben Sie etwas abzugeben'? Kevin, Justin – kommt mal\
|
||
\ her!\",\n \"Treffen sich zwei Unsichtbare. Sagt der eine zum anderen:\
|
||
\ Lange nicht gesehen!\",\n \"Egal wie viele CDs du hast, Carl Benz hatte\
|
||
\ Mercedes.\",\n \"Sagt die Mutter zur Tochter: 'Wenn du um 11 nicht im\
|
||
\ Bett bist, komm nach Hause!'\",\n \"Was macht man, wenn eine Blondine\
|
||
\ eine Handgranate nach einem wirft? Sicherheitsstöpsel ziehen und zurückwerfen!\"\
|
||
,\n \"Wie kommt die Blondine an Marmelade? Sie schält einen Berliner.\"\
|
||
,\n \"Egal wie viel du Ursula schuldest - du kannst dir was Von der Leyen.\"\
|
||
,\n \"Warum haben Ostfriesen-Toiletten keine Türen? Damit keiner durchs\
|
||
\ Schlüsselloch guckt!\",\n \"Wie wird bei Ostfriesen das Bild schärfer?\
|
||
\ Sie streuen Pfeffer auf den Fernseher!\",\n \"Ein Bahnwitz: Weiß aber\
|
||
\ nicht, ob der ankommt.\",\n \"Was ist weiß und stört beim Frühstück?\
|
||
\ Eine Lawine!\",\n \"Was ist Grün, hat 6 Beine und fliegt auf dich zu?\
|
||
\ Ein Billardtisch!\",\n \"Opas letzte Worte: Hör auf an der Leiter zu\
|
||
\ wackeln!\",\n \"Warum stehen Flamingos auf einem Bein? Sonst fallen sie\
|
||
\ um!\",\n \"Was ist rot und schlecht für Zähne? Ein Ziegelstein!\",\n\
|
||
\ \"Was ist gelb, hat einen Arm und kann nicht schwimmen? Ein Bagger!\"\
|
||
,\n \"Warum ist Hühnchen nicht vegan? Weil da Ei drin ist!\",\n \"Warum\
|
||
\ gehen Ameisen nicht in die Kirche? Weil sie In-Sekten sind!\",\n \"Chuck\
|
||
\ Norris kennt die letzte Ziffer von Pi!\",\n \"Was ist pink und behindert?\
|
||
\ Ein Flamongo!\",\n \"Heute war Schrottwichteln im Kindergarten. Wir sind\
|
||
\ jetzt Kevins Eltern.\",\n \"Wie nennt man falsche Werfer? Scheinwerfer!\"\
|
||
,\n \"Hab mich vorhin hier ausgesperrt! War ganz schön aus dem Häuschen...\"\
|
||
,\n \"Wie heißt der Bruder vom Werwolf? Warumwolf.\",\n \"Kunde: Würde\
|
||
\ gern einen Baum kaufen. Verkäufer: Sorry, da müssen Sie ins Stammhaus,\
|
||
\ wir sind nur die Zweigstelle!\",\n \"Was ist ein Cowboy ohne Pferd? Ein\
|
||
\ Sattelschlepper!\",\n \"Wie nennt man einen Spanier ohne Auto? Carlos.\"\
|
||
,\n \"Welche Handwerker essen am meisten? Die Maurer. Sie verputzen ganze\
|
||
\ Häuser!\",\n \"Geht ein Dalmatiner einkaufen. Verkäuferin: Sammeln sie\
|
||
\ Punkte?\",\n \"Was macht ein arbeitsloser Schauspieler? Spielt keine\
|
||
\ Rolle.\",\n \"Was ist die Mehrzahl von Rettich? Meerrettich!\",\n \"\
|
||
Mein Hund kennt alle Straßen in- und auswendig! Ich nenne ihn Google Mops.\"\
|
||
,\n \"Gestern habe ich einen Joghurt fallen lassen. Er war nicht mehr haltbar!\"\
|
||
,\n \"Was ist grün und sitzt auf dem Klo? Ein Kacktus.\",\n \"Wie nennt\
|
||
\ man Sonnenuntergang auf Finnisch? Hellsinki!\",\n \"Treffen sich zwei\
|
||
\ Holzwürmer. Sagt der eine stolz: Mein Sohn arbeitet jetzt in der Bank.\"\
|
||
,\n \"Ich habe meinem Freund einen Limonaden-Witz erzählt. Fanta lustig!\"\
|
||
,\n \"Wenn ein Professor einen Sandwich macht, ist der dann wissenschaftlich\
|
||
\ belegt?\",\n \"Über Tofu macht man keine Witze! Das ist geschmacklos.\"\
|
||
,\n \"Was macht ein Lebra Kranker in der Disco ? Er lässt die Fetzen fliegen.\"\
|
||
,\n \"Anton, findest du, dass ich eine schlechte Mutter bin? Ich heiße\
|
||
\ Paul!\",\n \"Was versteht man unter einer Turbine? Nichts. Viel zu laut!\"\
|
||
,\n \"Anderer Begriff für Abtreibung: Entfernter Verwandter.\",\n \"Was\
|
||
\ sagt ein Chemiker, dem ein Goldbarren auf den Fuß fällt? AU!\",\n \"\
|
||
Was ist weiß und stört beim essen? Eine Lawine!\",\n \"Wie war die Stimmung\
|
||
\ in der DDR? Sie hielt sich in Grenzen.\",\n \"Was ist weiss und kann\
|
||
\ nicht fliegen? Waschmaschine.\",\n \"Was ist weiß und brummt? Eine Biene\
|
||
\ Mayo.\",\n \"Der Unterschied zwischen Mann und Frau? Wenn Frauen sagen\
|
||
\ Rich mal! riecht es meistens gut.\",\n \"Nichts ist unmöglich! Ach ja?\
|
||
\ Dann sag mal B mit offenem Mund!\",\n \"Wie nennt man einen Lehrling\
|
||
\ beim Zoll? Filz-Stift!\",\n \"Chuck Norris hat den Niagara Fall gelöst.\"\
|
||
,\n \"Was macht eine Blondine, die sich die Ohren zuhält? Sie versucht,\
|
||
\ einen Gedanken festzuhalten.\",\n \"Wollte Spiderman anrufen, aber der\
|
||
\ hatte kein Netz.\",\n \"Was macht ein Salafist im Treppenhaus? Hochgehen.\"\
|
||
,\n \"Wie nennt man jemanden, der so tut als würde er etwas werfen? Scheinwerfer!\"\
|
||
,\n \"Chuck Norris kann durch Null teilen.\",\n \"Was liegt am Strand\
|
||
\ und spricht undeutlich? – Eine Nuschel.\",\n \"Google fragt bei Chuck\
|
||
\ Norris nach der Antwort.\",\n \"Genießen Sie Ihren Urlaub vom ersten\
|
||
\ Tag an in vollen Zügen. Fahren Sie mit der Bahn.\",\n \"Kunde: Acht Semmeln\
|
||
\ bitte. Verkäufer: Soll ich sie einpacken? Kunde: Nein! Ich jongliere damit\
|
||
\ bis zur Haustür.\",\n \"Warum hat man im Wald so schlechten Empfang?\
|
||
\ Überall nur Zwei-ge!\",\n \"Unsere Familie ist sehr musikalisch! Meine\
|
||
\ Schwester ist schon vor der Geburt flöten gegangen!\"\n] %} {% set joke\
|
||
\ = jokes | random %} {% set chunks = [] %} {% set remaining = joke %}\n\
|
||
{# Erste Zeile (sucht den letzten Leerzeichen vor Zeile 40) #} {% if remaining|length\
|
||
\ > 40 %}\n {% set cut = remaining[:40].rfind(' ') +1 %}\n {% set chunks\
|
||
\ = chunks + [remaining[:cut]|trim] %}\n {% set remaining = remaining[cut:]\
|
||
\ %}\n{% else %}\n {% set chunks = chunks + [remaining] %}\n {% set remaining\
|
||
\ = '' %}\n{% endif %}\n{# Zweite Zeile #} {% if remaining and chunks|length\
|
||
\ < 3 %}\n {% if remaining|length > 40 %}\n {% set cut = remaining[:40].rfind('\
|
||
\ ') +1 %}\n {% set chunks = chunks + [remaining[:cut]|trim] %}\n \
|
||
\ {% set remaining = remaining[cut:] %}\n {% else %}\n {% set chunks\
|
||
\ = chunks + [remaining] %}\n {% set remaining = '' %}\n {% endif %}\n\
|
||
{% endif %}\n{# Dritte Zeile #} {% if remaining and chunks|length < 3 %}\n\
|
||
\ {% set chunks = chunks + [remaining[:40]|trim] %}\n{% endif %}\n{{ chunks|join('\\\
|
||
n') }}"
|
||
x: 400
|
||
y: 210
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
color: black
|
||
- type: icon
|
||
value: "{% set state = states('sensor.pirate_weather_daily') %} {% if state\
|
||
\ == 'clear-night' %}\n mdi:weather-night\n{% elif state == 'cloudy' %}\n\
|
||
\ mdi:weather-cloudy\n{% elif state == 'fog' %}\n mdi:weather-fog\n{%\
|
||
\ elif state == 'hail' %}\n mdi:weather-hail\n{% elif state == 'lightning'\
|
||
\ %}\n mdi:weather-lightning\n{% elif state == 'lightning-rainy' %}\n \
|
||
\ mdi:weather-lightning-rainy\n{% elif state == 'partlycloudy' %}\n mdi:weather-partly-cloudy\n\
|
||
{% elif state == 'pouring' %}\n mdi:weather-pouring\n{% elif state == 'rainy'\
|
||
\ %}\n mdi:weather-rainy\n{% elif state == 'snowy' %}\n mdi:weather-snowy\n\
|
||
{% elif state == 'snowy-rainy' %}\n mdi:weather-snowy-rainy\n{% elif state\
|
||
\ == 'sunny' %}\n mdi:weather-sunny\n{% elif state == 'windy' %}\n mdi:weather-windy\n\
|
||
{% elif state == 'windy-variant' %}\n mdi:weather-windy-variant\n{% else\
|
||
\ %}\n mdi:weather-cloudy\n{% endif %}\n"
|
||
x: 5
|
||
y: 80
|
||
size: 50
|
||
color: black
|
||
- type: icon
|
||
value: "{% set state = states('sensor.pirate_weather_daily') %} {% if state\
|
||
\ == 'clear-night' %}\n mdi:weather-night\n{% elif state == 'cloudy' %}\n\
|
||
\ mdi:weather-cloudy\n{% elif state == 'fog' %}\n mdi:weather-fog\n{%\
|
||
\ elif state == 'hail' %}\n mdi:weather-hail\n{% elif state == 'lightning'\
|
||
\ %}\n mdi:weather-lightning\n{% elif state == 'lightning-rainy' %}\n \
|
||
\ mdi:weather-lightning-rainy\n{% elif state == 'partlycloudy' %}\n mdi:weather-partly-cloudy\n\
|
||
{% elif state == 'pouring' %}\n mdi:weather-pouring\n{% elif state == 'rainy'\
|
||
\ %}\n mdi:weather-rainy\n{% elif state == 'snowy' %}\n mdi:weather-snowy\n\
|
||
{% elif state == 'snowy-rainy' %}\n mdi:weather-snowy-rainy\n{% elif state\
|
||
\ == 'sunny' %}\n mdi:weather-sunny\n{% elif state == 'windy' %}\n mdi:weather-windy\n\
|
||
{% elif state == 'windy-variant' %}\n mdi:weather-windy-variant\n{% else\
|
||
\ %}\n mdi:weather-cloudy\n{% endif %}\n"
|
||
x: 195
|
||
y: 80
|
||
size: 50
|
||
color: black
|
||
- type: text
|
||
value: Wettervorhersage
|
||
x: 5
|
||
y: 35
|
||
size: 18
|
||
font: ../../media/8bitwonder.ttf
|
||
color: gray
|
||
- type: text
|
||
value: Heute
|
||
x: 5
|
||
y: 59
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
- type: text
|
||
value: Morgen
|
||
x: 195
|
||
y: 59
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
color: black
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.pirate_weather_daily'', ''forecast'')[0].temperature
|
||
| round(0)}}°C'
|
||
x: 70
|
||
y: 85
|
||
size: 26
|
||
font: ../../media/at4.ttf
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.pirate_weather_daily'', ''forecast'')[0].templow
|
||
| round(0)}}°C'
|
||
x: 70
|
||
y: 115
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
- type: text
|
||
value: '{% set rain = state_attr(''sensor.pirate_weather_daily'', ''forecast'')[0].precipitation_probability
|
||
| round(0) %} Regen? {{ rain }}%'
|
||
x: 5
|
||
y: 140
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.pirate_weather_daily'', ''forecast'')[1].temperature
|
||
| round(0)}}°C'
|
||
x: 255
|
||
y: 85
|
||
size: 26
|
||
font: ../../media/at4.ttf
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.pirate_weather_daily'', ''forecast'')[1].templow
|
||
| round(0)}}°C'
|
||
x: 265
|
||
y: 115
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
- type: text
|
||
value: '{% set rain = state_attr(''sensor.pirate_weather_daily'', ''forecast'')[1].precipitation_probability
|
||
| round(0) %} Regen? {{ rain }}%'
|
||
x: 195
|
||
y: 140
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
- type: line
|
||
x_start: 165
|
||
x_end: 165
|
||
y_start: 60
|
||
y_end: 155
|
||
width: 1
|
||
fill: black
|
||
dashed: true
|
||
- type: text
|
||
value: '{{ states(''sensor.wohnzimmer_temperatur_2'') | int }}°C'
|
||
x: 65
|
||
y: 175
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
- type: icon
|
||
value: mdi:sofa
|
||
x: 10
|
||
y: 160
|
||
size: 40
|
||
- type: text
|
||
value: '{{ states(''sensor.terrasse_temperatur'') | int }}°C'
|
||
x: 185
|
||
y: 175
|
||
size: 16
|
||
font: ../../media/at4.ttf
|
||
- type: icon
|
||
value: mdi:home-export-outline
|
||
x: 130
|
||
y: 160
|
||
size: 40
|
||
- type: text
|
||
value: Google Kalender
|
||
x: 5
|
||
y: 210
|
||
size: 18
|
||
font: ../../media/8bitwonder.ttf
|
||
color: gray
|
||
- type: text
|
||
value: '{{ days[today_at(''00:00'').weekday()] }} {{ today_at(''00:00'').day
|
||
}}. {{ months[today_at(''00:00'').month-1] }} '
|
||
font: ../../media/Linik_Bold.ttf
|
||
x: 5
|
||
y: '{{ gap_header + 2.5 * gap_line}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day0 | count > 0 %}\n {% for event in (events_day0 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #24h - {{ event.summary\
|
||
\ | regex_replace(find='[^\\x00-\\x7F]', replace='') }}\n {% else %}\n\
|
||
\ #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y') !=\
|
||
\ as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary | regex_replace(find='[^\\\
|
||
x00-\\x7F]', replace='') }}\n {% endif -%}\n {% endfor -%}\n{% else\
|
||
\ %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/at4.ttf
|
||
start_y: '{{ gap_header + gap_title + 0 * gap_line}}
|
||
|
||
'
|
||
delimiter: '#'
|
||
size: 16
|
||
offset_y: 16
|
||
x: 5
|
||
- type: text
|
||
value: '{{ days[(today_at(''00:00'')+ timedelta(days=1)).weekday()] }} {{
|
||
(today_at(''00:00'') + timedelta(days=1)).day }}. {{ months[(today_at(''00:00'')+
|
||
timedelta(days=1)).month-1] }}'
|
||
font: ../../media/Linik_Bold.ttf
|
||
x: 5
|
||
y: '{{ gap_header + gap_title + gap_days + ((count0 + 1) * gap_text)}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day1 | count > 0 %}\n {% for event in (events_day1 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #24h - {{ event.summary\
|
||
\ | regex_replace(find='[^\\x00-\\x7F]', replace='') }}\n {% else %}\n\
|
||
\ #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y') !=\
|
||
\ as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary | regex_replace(find='[^\\\
|
||
x00-\\x7F]', replace='') }}\n {% endif -%}\n {% endfor -%}\n{% else\
|
||
\ %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/at4.ttf
|
||
start_y: '{{ gap_header + 1.5 * gap_title + 1 * gap_line + gap_days + ((count0
|
||
+ 1 ) * gap_text)}}
|
||
|
||
'
|
||
offset_y: 16
|
||
delimiter: '#'
|
||
size: 16
|
||
x: 5
|
||
color: black
|
||
- type: text
|
||
visible: '{{true if (count0+count1+count2) < 9 else false}}'
|
||
value: '{{ days[(today_at(''00:00'')+ timedelta(days=2)).weekday()] }} {{
|
||
(today_at(''00:00'') + timedelta(days=2)).day }}. {{ months[(today_at(''00:00'')+
|
||
timedelta(days=2)).month-1] }} '
|
||
font: ../../media/Linik_Bold.ttf
|
||
x: 5
|
||
y: '{{ gap_header + 2 * gap_title + 4 * gap_line + gap_days + + (((count0
|
||
+ 1) + (count1 + 1)) * gap_text)}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day2 | count > 0 %}\n {% for event in (events_day2 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #24h - {{ event.summary\
|
||
\ | regex_replace(find='[^\\x00-\\x7F]', replace='') }}\n {% else %}\n\
|
||
\ #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y') !=\
|
||
\ as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary | regex_replace(find='[^\\\
|
||
x00-\\x7F]', replace='') }}\n {% endif -%}\n {% endfor -%}\n{% else\
|
||
\ %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/at4.ttf
|
||
start_y: '{{ gap_header + 3 * gap_title + 1 * gap_line + gap_days + (((count0
|
||
+ 1) + (count1 + 1)) * gap_text)}}
|
||
|
||
'
|
||
offset_y: 16
|
||
delimiter: '#'
|
||
size: 16
|
||
x: 5
|
||
color: black
|
||
visible: '{{true if (count0+count1+count2) < 9 else false}}'
|
||
- type: text
|
||
visible: '{{true if (count0+count1+count2+count3) < 7 else false}}'
|
||
value: '{{ days[(today_at(''00:00'') + timedelta(days=3)).weekday()] }} {{
|
||
(today_at(''00:00'') + timedelta(days=3)).day }}. {{ months[(today_at(''00:00'')+
|
||
timedelta(days=3)).month-1] }} '
|
||
font: ../../media/Linik_Bold.ttf
|
||
x: 5
|
||
y: '{{ gap_header + 3 * gap_title + 4 * gap_line + gap_days + + (((count0
|
||
+ 1) + (count1 + 1) + (count2 + 1)) * gap_text)}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day3 | count > 0 %}\n {% for event in (events_day3 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #24h - {{ event.summary\
|
||
\ | regex_replace(find='[^\\x00-\\x7F]', replace='') }}\n {% else %}\n\
|
||
\ #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y') !=\
|
||
\ as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary | regex_replace(find='[^\\\
|
||
x00-\\x7F]', replace='') }}\n {% endif -%}\n {% endfor -%}\n{% else\
|
||
\ %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/at4.ttf
|
||
start_y: '{{ gap_header + 4 * gap_title + 1 * gap_line + gap_days + (((count0
|
||
+ 1) + (count1 + 1) + (count2 + 1)) * gap_text)}}
|
||
|
||
'
|
||
offset_y: 16
|
||
delimiter: '#'
|
||
size: 16
|
||
x: 5
|
||
visible: '{{true if (count0+count1+count2+count3) < 7 else false}}'
|
||
color: black
|
||
- type: text
|
||
value: Abfallkalender
|
||
x: 400
|
||
y: 35
|
||
size: 18
|
||
font: ../../media/8bitwonder.ttf
|
||
color: gray
|
||
- type: text
|
||
value: 'Biomüll-Abholung: {{ states(''sensor.biomull'') }}'
|
||
x: 450
|
||
y: 65
|
||
size: 16
|
||
color: black
|
||
font: ../../media/at4.ttf
|
||
- type: icon
|
||
value: bio
|
||
x: 400
|
||
y: 50
|
||
size: 40
|
||
- type: text
|
||
value: 'Restmüll-Abholung: {{ states(''sensor.restmull'') }}'
|
||
x: 450
|
||
y: 105
|
||
size: 16
|
||
color: black
|
||
font: ../../media/at4.ttf
|
||
- type: icon
|
||
value: trash-can-outline
|
||
x: 400
|
||
y: 90
|
||
size: 40
|
||
- type: text
|
||
value: 'Gelber Sack-Abholung: {{ states(''sensor.gelber_sack'') }}'
|
||
x: 450
|
||
y: 145
|
||
size: 16
|
||
color: black
|
||
font: ../../media/at4.ttf
|
||
- type: icon
|
||
value: recycle
|
||
x: 400
|
||
y: 130
|
||
size: 40
|
||
- type: text
|
||
value: Schlagzeilen
|
||
x: 400
|
||
y: 300
|
||
size: 17
|
||
font: ../../media/8bitwonder.ttf
|
||
color: gray
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.tagesschau'', ''entries'')[0].title | regex_replace(''(.{1,40})(\\s+|$)'',
|
||
''\\1\n'') }}'
|
||
x: 400
|
||
y: '{{ y1 }}'
|
||
color: black
|
||
size: 14
|
||
font: ../../media/at4.ttf
|
||
spacing: 0.5
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.tagesschau'', ''entries'')[1].title | regex_replace(''(.{1,40})(\\s+|$)'',
|
||
''\\1\n'') }}'
|
||
x: 400
|
||
y: '{{ y2 }}'
|
||
color: black
|
||
font: ../../media/at4.ttf
|
||
size: 14
|
||
spacing: 0.5
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.tagesschau'', ''entries'')[2].title | regex_replace(''(.{1,30})(\\s+|$)'',
|
||
''\\1\n'') }}'
|
||
x: 400
|
||
y: '{{ y3 }}'
|
||
color: black
|
||
font: ../../media/at4.ttf
|
||
size: 14
|
||
spacing: 0.5
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.tagesschau'', ''entries'')[3].title | regex_replace(''(.{1,30})(\\s+|$)'',
|
||
''\\1\n'') }}'
|
||
x: 400
|
||
y: '{{ y4 }}'
|
||
color: black
|
||
font: ../../media/at4.ttf
|
||
size: 14
|
||
spacing: 0.5
|
||
- type: rectangle
|
||
x_start: 0
|
||
x_end: 800
|
||
y_start: 455
|
||
y_end: 480
|
||
width: 0
|
||
fill: black
|
||
- type: text
|
||
value: Wolle gratitsch WLAN? Guckstu da ->
|
||
x: 365
|
||
y: 461
|
||
size: 14
|
||
font: ../../media/greenscreen.ttf
|
||
color: white
|
||
- type: qrcode
|
||
data: WIFI:S:YOURWLANSSID;T:WPA;P:YOURWLANPASSWORD;;
|
||
x: 710
|
||
y: 395
|
||
boxsize: 2
|
||
border: 2
|
||
color: black
|
||
bgcolor: white
|
||
action: open_epaper_link.drawcustom
|
||
target:
|
||
device_id:
|
||
- DEVICEID
|
||
- DEVICEID
|
||
mode: single
|
||
variables:
|
||
line_count_0: '{{ (state_attr(''sensor.tagesschau'', ''entries'')[0].title |
|
||
regex_replace(''(.{1,40})(\\s+|$)'', ''\\1\n'') | replace(''\n'', ''§'')).split(''§'')
|
||
| length }}'
|
||
line_count_1: '{{ (state_attr(''sensor.tagesschau'', ''entries'')[1].title |
|
||
regex_replace(''(.{1,40})(\\s+|$)'', ''\\1\n'') | replace(''\n'', ''§'')).split(''§'')
|
||
| length }}'
|
||
line_count_2: '{{ (state_attr(''sensor.tagesschau'', ''entries'')[2].title |
|
||
regex_replace(''(.{1,30})(\\s+|$)'', ''\\1\n'') | replace(''\n'', ''§'')).split(''§'')
|
||
| length }}'
|
||
line_count_3: '{{ (state_attr(''sensor.tagesschau'', ''entries'')[3].title |
|
||
regex_replace(''(.{1,30})(\\s+|$)'', ''\\1\n'') | replace(''\n'', ''§'')).split(''§'')
|
||
| length }}'
|
||
line_count_4: '{{ (state_attr(''sensor.tagesschau'', ''entries'')[4].title |
|
||
regex_replace(''(.{1,45})(\\s+|$)'', ''\\1\n'') | replace(''\n'', ''§'')).split(''§'')
|
||
| length }}'
|
||
y1: 325
|
||
y2: '{{ y1 + (line_count_0 * 14) }}'
|
||
y3: '{{ y2 + (line_count_1 * 14) }}'
|
||
y4: '{{ y3 + (line_count_2 * 14) }}'
|
||
y5: '{{ y4 + (line_count_3 * 14) }}'
|
||
- alias: ABFALLKALENDER
|
||
description: ''
|
||
triggers:
|
||
- trigger: time
|
||
at: 00:00:01
|
||
conditions:
|
||
- condition: time
|
||
after: 04:00:00
|
||
before: '22:00:00'
|
||
enabled: true
|
||
actions:
|
||
- alias: Send generated Agenda to OEPL
|
||
metadata: {}
|
||
data:
|
||
rotate: 0
|
||
dry-run: false
|
||
payload:
|
||
- type: text
|
||
value: '{{ as_timestamp(now()) | timestamp_custom(''%d%m%H%M'') }}'
|
||
x: 332
|
||
y: 2
|
||
size: 10
|
||
- type: text
|
||
value: Abfallkalender
|
||
x: 112
|
||
y: 4
|
||
size: 16
|
||
color: black
|
||
font: ../../media/Bungee.ttf
|
||
- type: line
|
||
x_start: 0
|
||
x_end: 384
|
||
y_start: 25
|
||
y_end: 25
|
||
width: 1
|
||
fill: black
|
||
- type: text
|
||
value: Biomüll
|
||
x: 28
|
||
y: 80
|
||
size: 16
|
||
color: black
|
||
- type: icon
|
||
value: bio
|
||
x: 41
|
||
y: 30
|
||
size: 40
|
||
- type: text
|
||
value: '{{ states(''sensor.biomull'') }}'
|
||
x: '{{ ((128 - (states(''sensor.biomull'') | length * 7.8)) / 2) | int ~ ''''
|
||
}}'
|
||
y: 110
|
||
size: 20
|
||
font: ../../media/Abel-Regular.ttf
|
||
- type: text
|
||
value: '{{ states(''sensor.biomull_datum'') }}'
|
||
x: '{{ ((128 - (states(''sensor.biomull_datum'') | length * 8.5)) / 2) | int
|
||
~ '''' }}'
|
||
y: 145
|
||
size: 20
|
||
font: ../../media/Abel-Regular.ttf
|
||
- type: line
|
||
x_start: 128
|
||
x_end: 128
|
||
y_start: 35
|
||
y_end: 175
|
||
width: 1
|
||
dashed: true
|
||
fill: black
|
||
- type: text
|
||
value: Restmüll
|
||
x: 50%
|
||
y: 87
|
||
size: 16
|
||
anchor: mm
|
||
color: black
|
||
- type: icon
|
||
value: trash-can-outline
|
||
x: 173
|
||
y: 35
|
||
size: 40
|
||
- type: text
|
||
value: '{{ states(''sensor.restmull'') }} '
|
||
x: 50%
|
||
anchor: mm
|
||
y: 118
|
||
size: 20
|
||
color: black
|
||
font: ../../media/Abel-Regular.ttf
|
||
- type: text
|
||
value: '{{ states(''sensor.restmull_datum'') }} '
|
||
x: 50%
|
||
anchor: mm
|
||
y: 153
|
||
size: 20
|
||
color: black
|
||
font: ../../media/Abel-Regular.ttf
|
||
- type: line
|
||
x_start: 256
|
||
x_end: 256
|
||
y_start: 35
|
||
y_end: 175
|
||
width: 1
|
||
dashed: true
|
||
fill: black
|
||
- type: text
|
||
value: Gelber Sack
|
||
x: 267
|
||
y: 80
|
||
size: 16
|
||
color: black
|
||
- type: icon
|
||
value: recycle
|
||
x: 300
|
||
y: 30
|
||
size: 40
|
||
- type: text
|
||
value: '{{ states(''sensor.biomull'') }}'
|
||
x: '{{ (256 + ((128 - (states(''sensor.biomull'') | length * 8)) / 2)) | int
|
||
~ '''' }}'
|
||
y: 110
|
||
size: 20
|
||
font: ../../media/Abel-Regular.ttf
|
||
- type: text
|
||
value: '{{ states(''sensor.biomull_datum'') }}'
|
||
x: '{{ (256 + ((128 - (states(''sensor.biomull_datum'') | length * 8.5)) /
|
||
2)) | int ~ '''' }}'
|
||
y: 145
|
||
size: 20
|
||
font: ../../media/Abel-Regular.ttf
|
||
color: black
|
||
target:
|
||
device_id: xxxxxxxxxxxxxxxxx
|
||
action: open_epaper_link.drawcustom
|
||
mode: restart
|
||
- alias: BIG 3 - Google Kalender
|
||
description: ''
|
||
triggers:
|
||
- trigger: time_pattern
|
||
hours: '1'
|
||
conditions: []
|
||
actions:
|
||
- alias: Get events 0 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') }}'
|
||
end_date_time: '{{today_at(''00:00'') + timedelta(days=1)}}'
|
||
response_variable: cal_day_0
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDAR
|
||
action: calendar.get_events
|
||
- alias: Get events 1 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') + timedelta(days=1) }}'
|
||
end_date_time: '{{ today_at(''00:00'') + timedelta(days=2) }}'
|
||
response_variable: cal_day_1
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDAR
|
||
action: calendar.get_events
|
||
- alias: Get events 2 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') + timedelta(days=2) }}'
|
||
end_date_time: '{{ today_at(''00:00'') + timedelta(days=3) }}'
|
||
response_variable: cal_day_2
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDAR
|
||
action: calendar.get_events
|
||
- alias: Get events 4 day(s) from now
|
||
data:
|
||
start_date_time: '{{ today_at(''00:00'') + timedelta(days=3) }}'
|
||
end_date_time: '{{ today_at(''00:00'') + timedelta(days=4) }}'
|
||
response_variable: cal_day_3
|
||
target:
|
||
entity_id:
|
||
- calendar.YOURGOOGLECALENDAR
|
||
action: calendar.get_events
|
||
- alias: Extract events from all calendars
|
||
variables:
|
||
events_day0: "{{ cal_day_0.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
events_day1: "{{ cal_day_1.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
events_day2: "{{ cal_day_2.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
events_day3: "{{ cal_day_3.values() | map(attribute='events') | list | sum(start=[])}}\
|
||
\ \n"
|
||
count0: "{% if (events_day0 | count == 0) %}\n 1\n{% else %}\n {{ events_day0\
|
||
\ | count }}\n{% endif %}\n"
|
||
count1: "{% if (events_day1 | count == 0) %}\n 1\n{% else %}\n {{ events_day1\
|
||
\ | count }}\n{% endif %}\n"
|
||
count2: "{% if (events_day2 | count == 0) %}\n 1\n{% else %}\n {{ events_day2\
|
||
\ | count }}\n{% endif %}\n"
|
||
count3: "{% if (events_day3 | count == 0) %}\n 1\n{% else %}\n {{ events_day3\
|
||
\ | count }}\n{% endif %}\n"
|
||
gap_header: 5
|
||
gap_line: 1
|
||
gap_days: 1
|
||
gap_title: 10
|
||
gap_text: 16
|
||
days:
|
||
- Montag
|
||
- Dienstag
|
||
- Mittwoch
|
||
- Donnerstag
|
||
- Freitag
|
||
- Samstag
|
||
- Sonntag
|
||
months:
|
||
- Januar
|
||
- Februar
|
||
- März
|
||
- April
|
||
- Mai
|
||
- Juni
|
||
- Juli
|
||
- August
|
||
- September
|
||
- Oktober
|
||
- November
|
||
- Dezember
|
||
- alias: Send generated Agenda to OEPL
|
||
metadata: {}
|
||
data:
|
||
rotate: 0
|
||
dry-run: false
|
||
payload:
|
||
- type: icon
|
||
value: "{% set state = states('sensor.pirate_weather_daily') %} {% if state\
|
||
\ == 'clear-night' %}\n mdi:weather-night\n{% elif state == 'cloudy' %}\n\
|
||
\ mdi:weather-cloudy\n{% elif state == 'fog' %}\n mdi:weather-fog\n{%\
|
||
\ elif state == 'hail' %}\n mdi:weather-hail\n{% elif state == 'lightning'\
|
||
\ %}\n mdi:weather-lightning\n{% elif state == 'lightning-rainy' %}\n \
|
||
\ mdi:weather-lightning-rainy\n{% elif state == 'partlycloudy' %}\n mdi:weather-partly-cloudy\n\
|
||
{% elif state == 'pouring' %}\n mdi:weather-pouring\n{% elif state == 'rainy'\
|
||
\ %}\n mdi:weather-rainy\n{% elif state == 'snowy' %}\n mdi:weather-snowy\n\
|
||
{% elif state == 'snowy-rainy' %}\n mdi:weather-snowy-rainy\n{% elif state\
|
||
\ == 'sunny' %}\n mdi:weather-sunny\n{% elif state == 'windy' %}\n mdi:weather-windy\n\
|
||
{% elif state == 'windy-variant' %}\n mdi:weather-windy-variant\n{% else\
|
||
\ %}\n mdi:weather-cloudy\n{% endif %}\n"
|
||
x: 40
|
||
y: 27
|
||
size: 50
|
||
color: black
|
||
- type: text
|
||
value: YOUR HOMETOWN
|
||
x: '{% set col_width = 130 %} {% set char_width = 11 %} {# Je nach Font und
|
||
Größe anpassen! #} {% set text = "YOUR HOMETOWN" %} {{ ((col_width - (text|length
|
||
* char_width)) // 2) }}
|
||
|
||
'
|
||
y: 7
|
||
size: 16
|
||
font: ../../media/Bungee.ttf
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.pirate_weather_daily'', ''forecast'')[0].temperature
|
||
}}°C'
|
||
x: 15
|
||
y: 85
|
||
size: 20
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.pirate_weather_daily'', ''forecast'')[0].templow
|
||
}}°C'
|
||
x: 15
|
||
y: 105
|
||
size: 16
|
||
- type: text
|
||
value: '{{ state_attr(''sensor.pirate_weather_daily'', ''forecast'')[0].precipitation_probability
|
||
| round(0) }}%'
|
||
x: 90
|
||
y: 105
|
||
size: 16
|
||
- type: icon
|
||
value: mdi:weather-rainy
|
||
x: 90
|
||
y: 85
|
||
size: 16
|
||
- type: text
|
||
value: '{{ as_timestamp(now()) | timestamp_custom(''%d%m%H%M'') }}'
|
||
x: 332
|
||
y: 2
|
||
size: 10
|
||
font: ../../media/GothamRnd_Bold.ttf
|
||
- type: icon
|
||
value: mdi:sofa
|
||
x: 15
|
||
y: 130
|
||
size: 30
|
||
- type: text
|
||
value: '{{ states(''SENSOR.LIVINGROOMTEMPERATURE'') | int }}°C'
|
||
x: 10
|
||
y: 164
|
||
size: 16
|
||
- type: icon
|
||
value: mdi:home-export-outline
|
||
x: 80
|
||
y: 130
|
||
size: 30
|
||
- type: line
|
||
x_start: 63
|
||
x_end: 63
|
||
y_start: 130
|
||
y_end: 180
|
||
width: 1
|
||
fill: black
|
||
- type: text
|
||
value: '{{ states(''SENSOR.OUTDOORTEMPERATURE'') | int }}°C'
|
||
x: 80
|
||
y: 164
|
||
size: 16
|
||
- type: line
|
||
x_start: 5
|
||
x_end: 125
|
||
y_start: 125
|
||
y_end: 125
|
||
width: 1
|
||
fill: black
|
||
- type: line
|
||
x_start: 130
|
||
x_end: 130
|
||
y_start: 5
|
||
y_end: 180
|
||
width: 1
|
||
dashed: false
|
||
fill: black
|
||
- type: text
|
||
value: '{{ days[today_at(''00:00'').weekday()] }} {{ today_at(''00:00'').day
|
||
}}. {{ months[today_at(''00:00'').month-1] }} '
|
||
font: ../../media/Bungee.ttf
|
||
x: 140
|
||
y: '{{ gap_header + 2.5 * gap_line}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day0 | count > 0 %}\n {% for event in (events_day0 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #Ganztägig - {{ event.summary\
|
||
\ }}\n {% else %}\n #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary }}\n {% endif -%}\n\
|
||
\ {% endfor -%}\n{% else %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/Abel-Regular.ttf
|
||
start_y: '{{ gap_header + gap_title + 0 * gap_line}}
|
||
|
||
'
|
||
delimiter: '#'
|
||
size: 16
|
||
offset_y: 16
|
||
x: 140
|
||
- type: text
|
||
value: '{{ days[(today_at(''00:00'')+ timedelta(days=1)).weekday()] }} {{
|
||
(today_at(''00:00'') + timedelta(days=1)).day }}. {{ months[(today_at(''00:00'')+
|
||
timedelta(days=1)).month-1] }}'
|
||
font: ../../media/Bungee.ttf
|
||
x: 140
|
||
y: '{{ gap_header + gap_title + gap_days + ((count0 + 1) * gap_text)}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day1 | count > 0 %}\n {% for event in (events_day1 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #Ganztägig - {{ event.summary\
|
||
\ }}\n {% else %}\n #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary }}\n {% endif -%}\n\
|
||
\ {% endfor -%}\n{% else %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/Abel-Regular.ttf
|
||
start_y: '{{ gap_header + 1.5 * gap_title + 1 * gap_line + gap_days + ((count0
|
||
+ 1 ) * gap_text)}}
|
||
|
||
'
|
||
offset_y: 16
|
||
delimiter: '#'
|
||
size: 16
|
||
x: 140
|
||
color: black
|
||
- type: text
|
||
visible: '{{true if (count0+count1+count2) < 9 else false}}'
|
||
value: '{{ days[(today_at(''00:00'')+ timedelta(days=2)).weekday()] }} {{
|
||
(today_at(''00:00'') + timedelta(days=2)).day }}. {{ months[(today_at(''00:00'')+
|
||
timedelta(days=2)).month-1] }} '
|
||
font: ../../media/Bungee.ttf
|
||
x: 140
|
||
y: '{{ gap_header + 2 * gap_title + 4 * gap_line + gap_days + + (((count0
|
||
+ 1) + (count1 + 1)) * gap_text)}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day2 | count > 0 %}\n {% for event in (events_day2 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #Ganztägig - {{ event.summary\
|
||
\ }}\n {% else %}\n #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary }}\n {% endif -%}\n\
|
||
\ {% endfor -%}\n{% else %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/Abel-Regular.ttf
|
||
start_y: '{{ gap_header + 3 * gap_title + 1 * gap_line + gap_days + (((count0
|
||
+ 1) + (count1 + 1)) * gap_text)}}
|
||
|
||
'
|
||
offset_y: 16
|
||
delimiter: '#'
|
||
size: 16
|
||
x: 140
|
||
color: black
|
||
visible: '{{true if (count0+count1+count2) < 9 else false}}'
|
||
- type: text
|
||
visible: '{{true if (count0+count1+count2+count3) < 7 else false}}'
|
||
value: '{{ days[(today_at(''00:00'') + timedelta(days=3)).weekday()] }} {{
|
||
(today_at(''00:00'') + timedelta(days=3)).day }}. {{ months[(today_at(''00:00'')+
|
||
timedelta(days=3)).month-1] }} '
|
||
font: ../../media/Bungee.ttf
|
||
x: 140
|
||
y: '{{ gap_header + 3 * gap_title + 4 * gap_line + gap_days + + (((count0
|
||
+ 1) + (count1 + 1) + (count2 + 1)) * gap_text)}}
|
||
|
||
'
|
||
size: 16
|
||
color: black
|
||
- type: multiline
|
||
value: "{% if events_day3 | count > 0 %}\n {% for event in (events_day3 |\
|
||
\ sort(attribute='start') | list) -%} \n {% if as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') == \"00:00\"%}\n #Ganztägig - {{ event.summary\
|
||
\ }}\n {% else %}\n #{% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.start)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }} {% endif %}{{as_timestamp(event.start)\
|
||
\ | timestamp_custom('%H:%M') }} - {% if as_timestamp(event.start) | timestamp_custom('%d%m%y')\
|
||
\ != as_timestamp(event.end) | timestamp_custom('%d%m%y') %}{{ days[(as_timestamp(event.end)\
|
||
\ | timestamp_custom('%w') | int)-1][:3] }}{% endif %} {{as_timestamp(event.end)\
|
||
\ | timestamp_custom('%H:%M') }}: {{ event.summary }}\n {% endif -%}\n\
|
||
\ {% endfor -%}\n{% else %}\n #Ingenting\n{% endif -%}\n"
|
||
font: ../../media/Abel-Regular.ttf
|
||
start_y: '{{ gap_header + 4 * gap_title + 1 * gap_line + gap_days + (((count0
|
||
+ 1) + (count1 + 1) + (count2 + 1)) * gap_text)}}
|
||
|
||
'
|
||
offset_y: 16
|
||
delimiter: '#'
|
||
size: 16
|
||
x: 140
|
||
visible: '{{true if (count0+count1+count2+count3) < 7 else false}}'
|
||
color: black
|
||
target:
|
||
device_id: xxxxxxxxxxxxxxxxxx
|
||
action: open_epaper_link.drawcustom
|
||
mode: restart
|
||
- alias: Witz und Zitat des Tages
|
||
description: Zeigt täglich einen Witz + Zitat in 6 Zeilen (stabil formatiert)
|
||
triggers:
|
||
- trigger: time
|
||
at: 00:00:01
|
||
conditions: []
|
||
actions:
|
||
- data:
|
||
background: white
|
||
rotate: 0
|
||
dry-run: false
|
||
payload:
|
||
- type: text
|
||
value: Witz des Tages
|
||
x: 5
|
||
y: 5
|
||
size: 16
|
||
font: ../../media/Bungee.ttf
|
||
color: black
|
||
- type: line
|
||
x_start: 0
|
||
x_end: 380
|
||
y_start: 22
|
||
y_end: 22
|
||
width: 1
|
||
dashed: false
|
||
fill: black
|
||
- type: text
|
||
value: '{{ line1 }}'
|
||
x: 10
|
||
y: 28
|
||
size: 16
|
||
font: ../../media/Abel-Regular.ttf
|
||
color: black
|
||
- type: text
|
||
value: '{{ line2 }}'
|
||
x: 10
|
||
y: 46
|
||
size: 16
|
||
font: ../../media/Abel-Regular.ttf
|
||
color: black
|
||
- type: text
|
||
value: '{{ line3 }}'
|
||
x: 10
|
||
y: 64
|
||
size: 16
|
||
font: ../../media/Abel-Regular.ttf
|
||
color: black
|
||
- type: line
|
||
x_start: 0
|
||
x_end: 380
|
||
y_start: 108
|
||
y_end: 108
|
||
width: 1
|
||
dashed: false
|
||
fill: black
|
||
- type: text
|
||
value: Zitat des Tages
|
||
x: 5
|
||
y: 92
|
||
size: 16
|
||
font: ../../media/Bungee.ttf
|
||
color: black
|
||
- type: text
|
||
value: '{{ quote_line1 }}'
|
||
x: 10
|
||
y: 115
|
||
size: 16
|
||
font: ../../media/Abel-Regular.ttf
|
||
color: black
|
||
- type: text
|
||
value: '{{ quote_line2 }}'
|
||
x: 10
|
||
y: 133
|
||
size: 16
|
||
font: ../../media/Abel-Regular.ttf
|
||
color: black
|
||
- type: text
|
||
value: '{{ quote_line3 }}'
|
||
x: 10
|
||
y: 151
|
||
size: 16
|
||
font: ../../media/Abel-Regular.ttf
|
||
color: black
|
||
- type: text
|
||
value: '{{ as_timestamp(now()) | timestamp_custom(''%d%m%H%M'') }}'
|
||
x: 332
|
||
y: 2
|
||
size: 10
|
||
font: ../../media/GothamRnd_Bold.ttf
|
||
target:
|
||
device_id: xxxxxxxxxxxxxxxx
|
||
action: open_epaper_link.drawcustom
|
||
variables:
|
||
jokes:
|
||
- - Warum können Geister so schlecht lügen?
|
||
- Weil man durch sie hindurchsieht!
|
||
- Die Ausreden sind durchsichtig wie Glas!
|
||
- - Was macht ein Pirat am Computer?
|
||
- Enter drücken - er ist doch ein Seemann!
|
||
- 'Lieblingsprogramm: Arrrrr-drobe Reader!'
|
||
- - Ein Witz über Zeitreisen.
|
||
- Aber du wirst ihn nicht mögen.
|
||
- Du hast gestern schon darüber gelacht!
|
||
- - Warum tragen Wissenschaftler keine Brille?
|
||
- Weil sie alles unter die Lupe nehmen!
|
||
- ''
|
||
- - Wie nennt man einen Bumerang ohne Rückkehr?
|
||
- Einen Stock!
|
||
- ''
|
||
- - 'Mama: Wo ist das Sieb?'
|
||
- 'Fritzchen: Hab es weggeworfen - da waren'
|
||
- so viele Löcher drin.
|
||
- - 'Wichtige Erkenntnis nach dem Urlaub:'
|
||
- Gebräunte Haut macht 3kg schwerer!
|
||
- ''
|
||
- - 'Mann an der Theke:'
|
||
- Werfen Sie mir einen Fisch zu!
|
||
- Dann kann ich sagen, ich hätte ihn gefangen!
|
||
- - 'Türklingel: Wir sammeln fürs Kinderheim.'
|
||
- Haben Sie etwas abzugeben?
|
||
- Kevin, Justin – kommt mal her!
|
||
- - Warum hat der Computer Hunger?
|
||
- Er will ständig Cookies!
|
||
- Aber bitte ohne Viren!
|
||
- - 'Lehrer: 75% haben eine 5 im Test!'
|
||
- 'Fritzchen: So viele sind wir gar nicht!'
|
||
- ''
|
||
- - Treffen sich zwei Unsichtbare.
|
||
- Lange nicht gesehen!
|
||
- ''
|
||
- - Egal wie viele CDs du hast,
|
||
- Carl Benz hatte Mercedes.
|
||
- ''
|
||
- - 'Mutter zur Tochter am Samstag:'
|
||
- Wenn du um 11 nicht im Bett bist,
|
||
- komm nach Hause!
|
||
- - Blondine wirft Handgranate?
|
||
- Sicherheitsstöpsel ziehen und zurückwerfen.
|
||
- ''
|
||
- - Was ist unter der Kellertreppe?
|
||
- Eine Blondine beim Verstecken!
|
||
- ''
|
||
- - Wie kommt die Blondine an Marmelade?
|
||
- Sie schält einen Berliner.
|
||
- ''
|
||
- - Egal wie viel du Ursula schuldest,
|
||
- du kannst dir was Von der Leyen.
|
||
- ''
|
||
- - Ostfriesen-Toiletten ohne Türen?
|
||
- Damit keiner durchs Schlüsselloch guckt!
|
||
- ''
|
||
- - Wie wird bei Ostfriesen das Bild schärfer?
|
||
- Sie streuen Pfeffer drauf.
|
||
- ''
|
||
- - Ein Bahnwitz...
|
||
- Weiß nicht, ob der ankommt.
|
||
- ''
|
||
- - Warum sind Süchtige pleite?
|
||
- Zu hohe Fixkosten.
|
||
- ''
|
||
- - Was ist weiß und stört beim Frühstück?
|
||
- Eine Lawine!
|
||
- ''
|
||
- - Grün, 6 Beine, fliegt auf dich zu?
|
||
- Ein Billardtisch!
|
||
- ''
|
||
- - 'Opas letzte Worte:'
|
||
- Hör auf an der Leiter zu wackeln!
|
||
- ''
|
||
- - Warum stehen Flamingos auf einem Bein?
|
||
- Sonst fallen sie um!
|
||
- ''
|
||
- - Was ist rot und schlecht für Zähne?
|
||
- Ein Ziegelstein!
|
||
- ''
|
||
- - Gelb, ein Arm, kann nicht schwimmen?
|
||
- Ein Bagger!
|
||
- ''
|
||
- - Warum ist Hühnchen nicht vegan?
|
||
- Weil da Ei drin ist!
|
||
- ''
|
||
- - Warum gehen Ameisen nicht in die Kirche?
|
||
- Weil sie Insekten sind!
|
||
- ''
|
||
- - Was ist pink und behindert?
|
||
- Ein Flamongo!
|
||
- ''
|
||
- - 'Zwei Fakten über mich:'
|
||
- 1. Penis wie 6 Nuggets
|
||
- 2. Hausverbot bei McDonalds
|
||
- - Schrottwichteln im Kindergarten.
|
||
- Wir sind jetzt Kevins Eltern.
|
||
- ''
|
||
- - Wie nennt man falsche Werfer?
|
||
- Scheinwerfer!
|
||
- ''
|
||
- - 'Prostituierte am Bahnhof:'
|
||
- Macht alles für 30 Euro.
|
||
- Verlegt jetzt bei mir Laminat.
|
||
quotes:
|
||
- - Die einzige Konstante im Leben ist die Veränderung.
|
||
- Heraklit
|
||
- - Wer Fehler macht, zeigt Initiative.
|
||
- Unbekannt
|
||
- - Optimisten leben länger. Pessimisten länger gesund.
|
||
- Joachim Fuchsberger
|
||
- - Der frühe Vogel fängt den Wurm,
|
||
- aber die zweite Maus bekommt den Käse.
|
||
- Deutsche Weisheit
|
||
- - Du bist nie zu alt, um jung zu sein.
|
||
- Walt Disney
|
||
- - Leben ist das, was passiert,
|
||
- während du andere Pläne machst.
|
||
- John Lennon
|
||
- - Die Dosis macht das Gift.
|
||
- Paracelsus
|
||
- - Man sieht nur mit dem Herzen gut.
|
||
- Antoine de Saint-Exupéry
|
||
- - Wer kämpft, kann verlieren.
|
||
- Wer nicht kämpft, hat schon verloren.
|
||
- Bertolt Brecht
|
||
- - Das Gegenteil von gut ist gut gemeint.
|
||
- Kurt Tucholsky
|
||
- - Nichts ist mächtiger als eine Idee,
|
||
- deren Zeit gekommen ist.
|
||
- Victor Hugo
|
||
- - Ich bin ein Teil von jener Kraft,
|
||
- die stets das Böse will und stets das Gute schafft.
|
||
- Goethe
|
||
- - Wer andere kennt, ist klug.
|
||
- Wer sich kennt, ist weise.
|
||
- Laotse
|
||
- - Glück ist das Einzige, was sich verdoppelt,
|
||
- wenn man es teilt.
|
||
- Albert Schweitzer
|
||
- - Die Wahrheit ist dem Menschen zumutbar.
|
||
- Ingeborg Bachmann
|
||
- - Humor ist der Knopf, der verhindert,
|
||
- dass uns der Kragen platzt.
|
||
- Joachim Ringelnatz
|
||
- - Nur wer erwachsen wird und Kind bleibt,
|
||
- ist ein Mensch.
|
||
- Erich Kästner
|
||
- - Die Grenzen meiner Sprache bedeuten
|
||
- die Grenzen meiner Welt.
|
||
- Ludwig Wittgenstein
|
||
- - Phantasie ist wichtiger als Wissen,
|
||
- denn Wissen ist begrenzt.
|
||
- Albert Einstein
|
||
- - Man liebt zuletzt seine Begierde,
|
||
- und nicht das Begehrte.
|
||
- Friedrich Nietzsche
|
||
- - Die Welt wird nicht bedroht von den Bösen,
|
||
- sondern von denen, die das zulassen.
|
||
- Albert Einstein
|
||
- - Das Leben ist zu kurz für lange Gesichter.
|
||
- Robert Gernhardt
|
||
- - Wer keine Visionen hat,
|
||
- sollte zum Augenarzt gehen.
|
||
- Helmut Schmidt
|
||
- - Die Kunst ist, einmal mehr aufzustehen,
|
||
- als man umgeworfen wird.
|
||
- Winston Churchill
|
||
- - Es gibt nichts Gutes,
|
||
- außer man tut es.
|
||
- Erich Kästner
|
||
- - Wer glaubt, etwas zu sein,
|
||
- hat aufgehört, etwas zu werden.
|
||
- Sokrates
|
||
- - Das Geheimnis der Langeweile ist,
|
||
- alles zu sagen, was man weiß.
|
||
- Voltaire
|
||
- - Wer andere beurteilt,
|
||
- arbeitet nicht an sich selbst.
|
||
- Buddha
|
||
- - Weniger ist mehr.
|
||
- Ludwig Mies van der Rohe
|
||
- - Die Wahrheit liegt im Auge
|
||
- des Betrachters.
|
||
- Mark Twain
|
||
- - Nichts ist so beständig wie der Wandel.
|
||
- Heraklit
|
||
- - Wer die Wahrheit sagt,
|
||
- braucht ein schnelles Pferd.
|
||
- Chinesisches Sprichwort
|
||
- - Man muss noch Chaos in sich haben,
|
||
- um einen tanzenden Stern zu gebären.
|
||
- Nietzsche
|
||
- - 'Die größte Entscheidung deines Lebens:'
|
||
- Dass du es ändern kannst.
|
||
- Albert Camus
|
||
- - Tue Gutes und rede darüber.
|
||
- Konrad Adenauer
|
||
- - 'Das Leben ist wie ein Fahrrad:'
|
||
- Um die Balance zu halten, musst du fahren.
|
||
- Albert Einstein
|
||
- - Die beste Antwort auf Wut ist Schweigen.
|
||
- Mahatma Gandhi
|
||
- - Wer die Vergangenheit kontrolliert,
|
||
- kontrolliert die Zukunft.
|
||
- George Orwell
|
||
- - Man sieht die Sonne untergehen,
|
||
- und doch ist es immer plötzlich.
|
||
- Pablo Neruda
|
||
- - Die Freiheit des Einzelnen endet dort,
|
||
- wo die Freiheit des Anderen beginnt.
|
||
- Immanuel Kant
|
||
- - Habe den Mut,
|
||
- dich deines eigenen Verstandes zu bedienen!
|
||
- Immanuel Kant
|
||
- - Alles Einfache ist falsch.
|
||
- Alles Komplexe ist unbrauchbar.
|
||
- Paul Valéry
|
||
- - Wer schreibt, der bleibt.
|
||
- Altes Sprichwort
|
||
- - Zweifel sind der Beginn der Weisheit.
|
||
- René Descartes
|
||
- - Die Zukunft gehört denen,
|
||
- die an ihre Träume glauben.
|
||
- Eleanor Roosevelt
|
||
- - Handle nur nach der Maxime,
|
||
- die ein allgemeines Gesetz werden kann.
|
||
- Immanuel Kant
|
||
- - Der Weg ist das Ziel.
|
||
- Konfuzius
|
||
- - Erst denken, dann handeln.
|
||
- Altes Sprichwort
|
||
- - Wer A sagt, muss nicht B sagen.
|
||
- Er kann auch erkennen, dass A falsch war.
|
||
- Bertolt Brecht
|
||
- - Die Kunst liegt darin,
|
||
- öfter aufzustehen als umgeworfen zu werden.
|
||
- Konfuzius
|
||
joke: '{{ jokes | random }}'
|
||
quote: '{{ quotes | random }}'
|
||
line1: '{{ joke[0] }}'
|
||
line2: '{{ joke[1] }}'
|
||
line3: '{{ joke[2] }}'
|
||
quote_line1: '{{ quote[0] }}'
|
||
quote_line2: '{{ quote[1] }}'
|
||
quote_line3: '{{ quote[2] }}'
|
||
mode: single
|