summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/home/ham
diff options
context:
space:
mode:
Diffstat (limited to 'makefu/2configs/home/ham')
-rw-r--r--makefu/2configs/home/ham/automation/light_buttons.nix28
-rw-r--r--makefu/2configs/home/ham/automation/urlaub.nix6
-rw-r--r--makefu/2configs/home/ham/automation/welcome.txt.j22
-rw-r--r--makefu/2configs/home/ham/default.nix2
-rw-r--r--makefu/2configs/home/ham/docker.nix30
-rw-r--r--makefu/2configs/home/ham/intents/default.nix35
-rw-r--r--makefu/2configs/home/ham/intents/music_chooser.txt.j213
-rw-r--r--makefu/2configs/home/ham/intents/statusbericht.txt.j237
-rw-r--r--makefu/2configs/home/ham/lib/default.nix5
-rw-r--r--makefu/2configs/home/ham/light/wohnzimmer.nix27
-rw-r--r--makefu/2configs/home/ham/media/firetv.nix22
-rw-r--r--makefu/2configs/home/ham/mqtt.nix2
-rw-r--r--makefu/2configs/home/ham/multi/kurzzeitwecker.nix172
-rw-r--r--makefu/2configs/home/ham/sensor/outside.nix11
14 files changed, 256 insertions, 136 deletions
diff --git a/makefu/2configs/home/ham/automation/light_buttons.nix b/makefu/2configs/home/ham/automation/light_buttons.nix
index 1892917c4..460d48bc4 100644
--- a/makefu/2configs/home/ham/automation/light_buttons.nix
+++ b/makefu/2configs/home/ham/automation/light_buttons.nix
@@ -1,10 +1,12 @@
let
inherit (import ../lib) btn_cycle_light;
+ schlafzimmer_komode = "light.schlafzimmer_komode_osram";
+ schlafzimmer_button = "sensor.schlafzimmer_btn2_click";
in {
services.home-assistant.config.automation = [
# (btn_cycle_light "light.arbeitszimmerbeleuchtung" "arbeitszimmer_btn1")
- (btn_cycle_light "light.schlafzimmer_komode_osram" "schlafzimmer_btn2" 128)
+
{
alias = "toggle keller";
trigger = {
@@ -32,21 +34,35 @@ in {
service = "light.toggle";
data = {
entity_id = "light.keller_osram";
- brightness = 50;
+ brightness = 25;
};
};
}
# (btn_cycle_light "light.wohnzimmerbeleuchtung" "wohnzimmer_btn3")
{
- alias = "Turn of all lights via schlafzimmer_btn2 double click";
+ alias = "Dim Toggle schlafzimmer komode";
trigger = {
platform = "state";
- entity_id = "sensor.schlafzimmer_btn2_click";
+ entity_id = schlafzimmer_button;
+ to = "single";
+ };
+ action = {
+ service = "light.toggle";
+ entity_id = schlafzimmer_komode;
+ brightness = 1;
+ };
+ }
+ {
+ alias = "Bright Toggle schlafzimmer komode";
+ trigger = {
+ platform = "state";
+ entity_id = schlafzimmer_button;
to = "double";
};
action = {
- service = "light.turn_off";
- entity_id = "all";
+ service = "light.toggle";
+ entity_id = schlafzimmer_komode;
+ brightness = 255;
};
}
];
diff --git a/makefu/2configs/home/ham/automation/urlaub.nix b/makefu/2configs/home/ham/automation/urlaub.nix
index 019e65d25..abfe5031d 100644
--- a/makefu/2configs/home/ham/automation/urlaub.nix
+++ b/makefu/2configs/home/ham/automation/urlaub.nix
@@ -6,7 +6,7 @@
let
schranklicht = [
"light.wohnzimmer_schrank_osram"
- "light.wohnzimmer_komode_osram"
+ # "light.wohnzimmer_komode_osram"
];
weihnachtslicht = "light.wohnzimmer_fenster_lichterkette_licht";
fernsehlicht = "light.wled";
@@ -31,8 +31,8 @@ in
automation =
[
(turn_on schranklicht "-00:30:00")
- #(turn_on weihnachtslicht "-00:30:00")
- (turn_on fernsehlicht "-00:00:00")
+ (turn_on weihnachtslicht "-00:00:00")
+ #(turn_on fernsehlicht "-00:00:00")
{ alias = "Always turn off the urlaub lights at ${final_off}";
trigger = [
diff --git a/makefu/2configs/home/ham/automation/welcome.txt.j2 b/makefu/2configs/home/ham/automation/welcome.txt.j2
index 76091b868..d2a2b573b 100644
--- a/makefu/2configs/home/ham/automation/welcome.txt.j2
+++ b/makefu/2configs/home/ham/automation/welcome.txt.j2
@@ -7,7 +7,7 @@ Heute ist {{ weekday }}, du solltest gar nicht arbeiten!
{% else %}
Willkommen auf Arbeit Felix.
{% endif -%}
-Das aktuell gewählte Projekt ist {{ states("sensor.felix_project") }}.
+Dein Projekt ist {{ states("sensor.felix_project") }}.
{% set inside = states("sensor.wohnzimmer_temp_temperature") | float | round(2) -%}
{% set outside = states("sensor.dark_sky_temperature") | float | round(2) -%}
diff --git a/makefu/2configs/home/ham/default.nix b/makefu/2configs/home/ham/default.nix
index ca5fcd17c..98269959d 100644
--- a/makefu/2configs/home/ham/default.nix
+++ b/makefu/2configs/home/ham/default.nix
@@ -17,6 +17,7 @@ in {
./zigbee2mqtt.nix
# ./multi/flurlicht.nix
./multi/kurzzeitwecker.nix
+ ./intents
./multi/the_playlist.nix
./multi/heizung.nix
# ./multi/fliegen-couter.nix
@@ -92,6 +93,7 @@ in {
{ type = "homeassistant"; }
];
};
+ tasmota = {};
binary_sensor = [
{ platform = "workday";
name = "Arbeitstag";
diff --git a/makefu/2configs/home/ham/docker.nix b/makefu/2configs/home/ham/docker.nix
new file mode 100644
index 000000000..e8a47dbbb
--- /dev/null
+++ b/makefu/2configs/home/ham/docker.nix
@@ -0,0 +1,30 @@
+{ config, pkgs, lib, ... }:
+let
+ confdir = "/var/lib/homeassistant-docker";
+in {
+ imports = [
+ ./nginx.nix
+ ./mqtt.nix
+ ./signal-rest
+ ./signal-rest/service.nix
+ ];
+
+ networking.firewall.allowedTCPPorts = [ 8123 ];
+ state = [ "/var/lib/hass/known_devices.yaml" ];
+ virtualisation.oci-containers.containers.hass = {
+ image = "homeassistant/home-assistant:latest";
+ environment = {
+ TZ = "Europe/Berlin";
+ UMASK = "007";
+ };
+ extraOptions = ["--net=host" ];
+ volumes = [
+ "${confdir}:/config"
+ #"/data/music:/config/media"
+ ];
+ };
+ systemd.tmpfiles.rules = [
+ #"f ${confdir}/docker-run 0770 kiosk kiosk - -"
+ "d ${confdir} 0770 kiosk kiosk - -"
+ ];
+}
diff --git a/makefu/2configs/home/ham/intents/default.nix b/makefu/2configs/home/ham/intents/default.nix
new file mode 100644
index 000000000..24594b4a2
--- /dev/null
+++ b/makefu/2configs/home/ham/intents/default.nix
@@ -0,0 +1,35 @@
+{
+ services.home-assistant.config = {
+ intent_script = {
+ GetTime.speech.text = ''
+ Es ist {{ now().hour }} Uhr {{ now().minute }}
+ '';
+ GutenMorgen.speech.text = ''
+ Einen wunderschönen Guten Morgen wünsche ich dir
+ '';
+ WieGehtEsDir.speech.text = ''
+ Mir geht es sehr gut, und dir?
+ '';
+ Statusreport.speech.text = builtins.readFile ./statusbericht.txt.j2;
+ StartMusic = {
+ speech.text = "Spiele {{ music }} musik";
+ action_async = [
+ {
+ service = "media_player.play_media";
+ data_template = {
+ entity_id = "media_player.{{ _intent.siteId }}";
+ media_content_id = builtins.readFile ./music_chooser.txt.j2;
+ media_content_type = "music";
+ };
+ }
+ ];
+ };
+ GetWeather = {
+ #speech.text = ''
+ # {{ states('sensor.openweathermap_weather') }} bei {{ states('sensor.openweathermap_temperature') }} Grad
+ #'';
+ speech.text = "{{ states('sensor.swr_prognose') }}";
+ };
+ };
+ };
+}
diff --git a/makefu/2configs/home/ham/intents/music_chooser.txt.j2 b/makefu/2configs/home/ham/intents/music_chooser.txt.j2
new file mode 100644
index 000000000..b66ed2721
--- /dev/null
+++ b/makefu/2configs/home/ham/intents/music_chooser.txt.j2
@@ -0,0 +1,13 @@
+{% if music == "lounge" -%}
+https://cast1.asurahosting.com/proxy/julien/stream.mp3
+{% elif music == "lassulus" -%}
+http://radio.lassul.us:8000/radio.mp3
+{% elif music == "groove" -%}
+http://ice2.somafm.com/groovesalad-128.mp3
+{% elif music == "swr3" -%}
+https://liveradio.swr.de/sw282p3/swr3/play.mp3
+{% elif music == "swr1" -%}
+https://liveradio.swr.de/sw282p3/swr1bw/play.mp3
+{% elif music == "radio" -%}
+https://liveradio.swr.de/sw282p3/swr1bw/play.mp3
+{% endif %}
diff --git a/makefu/2configs/home/ham/intents/statusbericht.txt.j2 b/makefu/2configs/home/ham/intents/statusbericht.txt.j2
new file mode 100644
index 000000000..c17ad455c
--- /dev/null
+++ b/makefu/2configs/home/ham/intents/statusbericht.txt.j2
@@ -0,0 +1,37 @@
+{% set arbeit_heute = is_state("binary_sensor.arbeitstag","on") -%}
+{% set weekday = ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][now().weekday()] -%}
+{% set is_friday = now().weekday() == 4 %}
+
+Dies ist deine Persönliche Zusammenfassung
+{% set inside = states("sensor.wohnzimmer_temp_temperature") | float | round(2) -%}
+{% set outside = states("sensor.dark_sky_temperature") | float | round(2) -%}
+{% set arbeit_morgen = is_state("binary_sensor.arbeitstag_morgen","on") -%}
+
+Die Wetteraussichten: {{ states("sensor.dark_sky_hourly_summary") | replace(".","")}} bei {{ states("sensor.dark_sky_temperature") }} Grad mit {{ states("sensor.dark_sky_humidity") | round(0) }}% Luftfeuchtigkeit.
+{% if states("calendar.abfall_papiermuell") == "on" %}
+Heute ist Papiermuell, bring noch schnell dein Papier raus
+{% endif %}
+{% if states("calendar.abfall_restmuell") == "on" %}
+Ausserdem ist heute Restmuell.
+{% endif -%}
+
+{% if ( outside < inside ) and ( outside > 18 ) %}
+Draussen ist es gerade {{ ((inside - outside) | round(1) )}} gerade kühler
+{% endif -%}
+
+{% set current_count = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_count") %}
+{% for i in range(current_count) %}
+{% set idx = i + 1 %}
+ {% set headline = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_headline") %}
+ {% set description = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_description") %}
+ {% set level = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_level") %}
+ {% set time_start = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_start") %}
+ {% set time_end = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_end") %}
+Wetterwarnung {{idx}}: {{ headline }} Stufe {{level}} von {{ time_start.strftime("%H:%M") ~ " bis " ~ time_end.strftime("%H:%M") }} Uhr
+
+{{ description }}
+{% endfor %}
+
+{% if is_friday %}
+Endlich ist Freitag!
+{% endif -%}
diff --git a/makefu/2configs/home/ham/lib/default.nix b/makefu/2configs/home/ham/lib/default.nix
index cf1c32abd..0d89d1e9e 100644
--- a/makefu/2configs/home/ham/lib/default.nix
+++ b/makefu/2configs/home/ham/lib/default.nix
@@ -27,12 +27,11 @@ in
#}
{ delay.seconds = 1; }
{ delay = ''
- {% set duration = state_attr("${entity}","media_duration") %}
- {% set seconds = duration % 60 %}
+ {% set duration = state_attr("${entity}","media_duration") or 0 %}
+ {% set seconds = (duration % 60 ) %}
{% set minutes = (duration / 60)|int % 60 %}
{% set hours = (duration / 3600)|int %}
{{ "%02i:%02i:%02i"|format(hours, minutes, seconds)}}
-
'';
}
{
diff --git a/makefu/2configs/home/ham/light/wohnzimmer.nix b/makefu/2configs/home/ham/light/wohnzimmer.nix
index 554d1f8ce..7fc7af038 100644
--- a/makefu/2configs/home/ham/light/wohnzimmer.nix
+++ b/makefu/2configs/home/ham/light/wohnzimmer.nix
@@ -6,10 +6,30 @@ let
wohnzimmer_deko = [
"light.wohnzimmer_fernseher_led_strip" # led um fernseher
"light.wohnzimmer_lichterkette_led_strip" # led um fernsehwand
- "light.kinderzimmer_lichterkette_licht" # led um fenster
+ "light.wohnzimmer_fenster_lichterkette_licht" # led um fenster
];
in {
imports = [ ./tint_wohnzimmer.nix ];
+ services.home-assistant.config.scene = [
+ { name = "Wohnzimmer Abendlicht";
+ id = "living_room_evening";
+ entities = {
+ "light.wohnzimmer_komode_osram_light" = {
+ state = "on";
+ brightness = 128;
+ };
+ "light.wohnzimmer_schrank_osram_light" = {
+ state = "on";
+ brightness = 128;
+ };
+ "light.wohnzimmer_fenster_lichterkette_licht" = "on";
+ "light.wohnzimmer_fernseher_led_strip" = {
+ state = "on";
+ };
+ };
+
+ }
+ ];
services.home-assistant.config.wled = {};
services.home-assistant.config.light = [
{
@@ -22,6 +42,11 @@ in {
name = "Wohnzimmer Deko";
entities = wohnzimmer_deko;
}
+ {
+ platform = "group";
+ name = "living_room_lights";
+ entities = wohnzimmerbeleuchtung ++ wohnzimmer_deko;
+ }
];
}
diff --git a/makefu/2configs/home/ham/media/firetv.nix b/makefu/2configs/home/ham/media/firetv.nix
index fc33346cd..e2ac1ef76 100644
--- a/makefu/2configs/home/ham/media/firetv.nix
+++ b/makefu/2configs/home/ham/media/firetv.nix
@@ -3,11 +3,11 @@ let
in {
services.home-assistant.config = {
notify = [
- {
- platform = "nfandroidtv";
- name = "FireTV Wohnzimmer Notification";
- host = firetv_stick;
- }
+ #{
+ #platform = "nfandroidtv";
+ #name = "FireTV Wohnzimmer Notification";
+ #host = firetv_stick;
+ #}
];
media_player = [
#{
@@ -16,12 +16,12 @@ in {
# host = firetv_stick;
#}
# Configuration needs to be done by hand via web interface "integration"
- { platform = "androidtv";
- name = "FireTV Stick Android";
- device_class = "firetv";
- host = firetv_stick;
- port = 5555;
- }
+ #{ platform = "androidtv";
+ # name = "FireTV Stick Android";
+ # device_class = "firetv";
+ # host = firetv_stick;
+ # port = 5555;
+ #}
];
};
}
diff --git a/makefu/2configs/home/ham/mqtt.nix b/makefu/2configs/home/ham/mqtt.nix
index 5e668e7a0..9c4b4147e 100644
--- a/makefu/2configs/home/ham/mqtt.nix
+++ b/makefu/2configs/home/ham/mqtt.nix
@@ -5,7 +5,7 @@
services.mosquitto = {
enable = true;
persistence = false;
- settings.max_keepalive = 60;
+ settings.max_keepalive = 1060;
listeners = [
{
port = 1883;
diff --git a/makefu/2configs/home/ham/multi/kurzzeitwecker.nix b/makefu/2configs/home/ham/multi/kurzzeitwecker.nix
index a0748e205..1e6fae90c 100644
--- a/makefu/2configs/home/ham/multi/kurzzeitwecker.nix
+++ b/makefu/2configs/home/ham/multi/kurzzeitwecker.nix
@@ -9,128 +9,80 @@
let
button = "sensor.zigbee_btn2_click";
notify = "notify.signal_home";
+ # für {{ _intent.siteId }} - name of the rhasspy instance: arbeitszimmer
in
{
services.home-assistant.config = {
- timer.kurzzeitwecker =
- {
- name = "Zigbee Kurzzeitwecker";
- duration = 300;
+ automation = [];
+ timer.kurzzeitwecker = {
+ name = "Wecker Wohnung";
};
- script.add_5_minutes_to_kurzzeitwecker =
- {
- alias = "Add 5 minutes to kurzzeitwecker";
- sequence = [
- { service = "timer.pause";
- entity_id = "timer.kurzzeitwecker";
- }
- { service = "timer.start";
- data_template = {
- entity_id = "timer.kurzzeitwecker";
- duration = ''
- {% set r = state_attr('timer.kurzzeitwecker', 'remaining') ~ '-0000' %}
- {% set t = strptime(r, '%H:%M:%S.%f%z') %}
- {{ (as_timestamp(t) + 300) | timestamp_custom('%H:%M:%S', false) }}
- '';
- };
- }
- ];
+ timer.wecker_arbeitszimmer = {
+ name = "Wecker Arbeitszimmer";
};
- automation =
- [
- {
- alias = "Start Timer 5min";
- trigger = {
- platform = "state";
- entity_id = button;
- to = "single";
- };
- condition =
- { condition = "state";
- entity_id = "timer.kurzzeitwecker";
- state = "idle";
- };
-
+ timer.wecker_wohnzimmer = {
+ name = "Wecker Wohnzimmer";
+ };
+ intent = {};
+ intent_script = {
+ TimerjobStart = {
+ speech.text = ''
+ {% set h = hours|default('0')|string %}
+ {% set m = minutes|default('0')|string %}
+ {% if h == "0" %}
+ Wecker gestellt {{ m }} Minuten
+ {% elif m == "0" %}
+ Wecker gestellt {{ h }} Stunden
+ {% else %}
+ Wecker gestellt {{ h }} Stunden und {{ m }} Minuten
+ {% endif %}
+ '';
action = [
- { service = "timer.start";
- entity_id = "timer.kurzzeitwecker";
- data.duration = "00:05:00";
- }
{
- service = notify;
- data.message = "Timer gestartet {{state_attr('timer.kurzzeitwecker', 'remaining') }}, verbleibend ";
- }
- ];
- }
- {
- alias = "Add Timer 5min";
- trigger = {
- platform = "state";
- entity_id = button;
- to = "single";
- };
- condition =
- { condition = "state";
- entity_id = "timer.kurzzeitwecker";
- state = "active";
- };
+ service = "timer.start";
+
+ data.entity_id = "timer.kurzzeitwecker";
+ data.duration = ''
+ {% set h = hours|default("0")|int %}
+ {% set m = minutes|default("0")|int %}
+ {{ "%02d" | format(h) }}:{{ "%02d" | format(m) }}:00
+ '';
- action = [
- { service = "homeassistant.turn_on";
- entity_id = "script.add_5_minutes_to_kurzzeitwecker";
- }
- {
- service = notify;
- data.message = ''Timer um 5 minuten verlängert, {{ state_attr('timer.kurzzeitwecker', 'remaining') | truncate(9,True," ") }} verbleibend '';
}
];
- }
- {
- alias = "Stop timer on double click";
- trigger = [
- {
- platform = "state";
- entity_id = button;
- to = "double";
- }
- {
- platform = "state";
- entity_id = button;
- to = "triple";
- }
- ];
- condition =
- {
- condition = "state";
- entity_id = "timer.kurzzeitwecker";
- state = "active";
- };
-
+ };
+ TimerjobRemaining = {
+ speech.text = ''
+ {% set timer = states('timer.kurzzeitwecker') %}
+ {% if timer == 'idle' %}
+ Wecker läuft nicht
+ {% elif timer == 'active' %}
+ {% set remaining = as_timestamp( state_attr('timer.kurzzeitwecker','finishes_at') )-( as_timestamp(now())) %}
+ {% set s = ((remaining % 60)) | int %}
+ {% set m = ((remaining % 3600) / 60) | int %}
+ {% set h = ((remaining % 86400) / 3600) | int %}
+ {% if h == 0 %}
+ Es verbleiben {{ m }} Minuten und {{ s }} Sekunden
+ {% elif m == 0 %}
+ Es verbleiben {{ h }} Stunden
+ {% elif m == 0 and h == 0 %}
+ Es verbleiben {{ s }} Sekunden
+ {% else %}
+ Es verbleiben {{ h }} Stunden {{ m }} Minuten
+ {% endif %}
+ {% endif %}
+ '';
+ };
+ TimerjobStop = {
+ speech.text = ''
+ Wecker gestoppt
+ '';
action = [
- {
- service = "timer.cancel";
- entity_id = "timer.kurzzeitwecker";
- }
- {
- service = notify;
- data.message = "Timer gestoppt, abgebrochen";
+ { service = "timer.cancel";
+ data.entity_id = "timer.kurzzeitwecker";
}
];
- }
- {
- alias = "Timer Finished";
- trigger = {
- platform = "event";
- event_type = "timer.finished";
- event_data.entity_id = "timer.kurzzeitwecker";
- };
- action = [
- {
- service = notify;
- data.message = "Timer beendet";
- }
- ];
- }
- ];
+ };
+ };
};
}
diff --git a/makefu/2configs/home/ham/sensor/outside.nix b/makefu/2configs/home/ham/sensor/outside.nix
index e7467617b..061c4e981 100644
--- a/makefu/2configs/home/ham/sensor/outside.nix
+++ b/makefu/2configs/home/ham/sensor/outside.nix
@@ -40,5 +40,16 @@
{ platform = "accuweather";
api_key = "!secret accuweather";
}
+ { platform = "scrape";
+ resource = "https://www.swr.de/wetter/wetter-liste-swr-100.html";
+ name = "SWR Prognose";
+ select = "p[data-refresh=\"weather-headline\"]";
+ }
+ { platform = "scrape";
+ resource = "https://www.swr.de/wetter/wetter-liste-swr-100.html";
+ name = "SWR Prognose Langtext";
+ select = "p[data-refresh=\"weather-text\"]";
+ }
+
];
}