ma ham: use new home-assistant merge function
This commit is contained in:
parent
e04ae7a314
commit
78fc347be0
@ -7,27 +7,31 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
sec = seconds: { delay.seconds = seconds; };
|
sec = seconds: { delay.seconds = seconds; };
|
||||||
in [
|
in
|
||||||
{
|
{
|
||||||
alias = "Nightly reboot of firetv";
|
services.home-assistant.config.sensor =
|
||||||
trigger = {
|
[
|
||||||
platform = "time";
|
{
|
||||||
at = "03:00:00";
|
alias = "Nightly reboot of firetv";
|
||||||
};
|
trigger = {
|
||||||
action = [
|
platform = "time";
|
||||||
(cmd "reboot")
|
at = "03:00:00";
|
||||||
(sec 90) # go to my music because apparently select_source does not seem to always work
|
};
|
||||||
(cmd "HOME")
|
action = [
|
||||||
(sec 2)
|
(cmd "reboot")
|
||||||
(cmd "DOWN")
|
(sec 90) # go to my music because apparently select_source does not seem to always work
|
||||||
(sec 2)
|
(cmd "HOME")
|
||||||
(cmd "DOWN")
|
(sec 2)
|
||||||
(sec 2)
|
(cmd "DOWN")
|
||||||
(cmd "ENTER")
|
(sec 2)
|
||||||
(sec 4)
|
(cmd "DOWN")
|
||||||
(cmd "RIGHT")
|
(sec 2)
|
||||||
(sec 2)
|
(cmd "ENTER")
|
||||||
(cmd "RIGHT")
|
(sec 4)
|
||||||
];
|
(cmd "RIGHT")
|
||||||
}
|
(sec 2)
|
||||||
]
|
(cmd "RIGHT")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
@ -2,7 +2,12 @@ let
|
|||||||
cred = import <secrets/ham/nextcloud-calendar>;
|
cred = import <secrets/ham/nextcloud-calendar>;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
platform = "caldav";
|
services.home-assistant.config.calendar =
|
||||||
inherit (cred) username password;
|
[
|
||||||
url = "https://o.euer.krebsco.de/remote.php/dav";
|
{
|
||||||
|
platform = "caldav";
|
||||||
|
inherit (cred) username password;
|
||||||
|
url = "https://o.euer.krebsco.de/remote.php/dav";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
@ -4,39 +4,27 @@
|
|||||||
## wake-on-lan server
|
## wake-on-lan server
|
||||||
##
|
##
|
||||||
let
|
let
|
||||||
upkgs = (import <nixpkgs-unstable> {}).pkgs;
|
prefix = (import ./lib).prefix;
|
||||||
hlib = (import ./lib);
|
|
||||||
prefix = hlib.prefix;
|
|
||||||
tasmota = hlib.tasmota;
|
|
||||||
firetv_stick = "192.168.1.24";
|
firetv_stick = "192.168.1.24";
|
||||||
hassdir = "/var/lib/hass";
|
hassdir = "/var/lib/hass";
|
||||||
zigbee = import ./multi/zigbee2mqtt.nix;
|
|
||||||
#flurlicht = import ./multi/flurlicht.nix;
|
|
||||||
kurzzeitwecker = import ./multi/kurzzeitwecker.nix;
|
|
||||||
firetv_restart = import ./multi/firetv_restart.nix;
|
|
||||||
the_playlist = import ./multi/the_playlist.nix;
|
|
||||||
fliegen-counter = import ./multi/fliegen-couter.nix;
|
|
||||||
# switch
|
|
||||||
# automation
|
|
||||||
# binary_sensor
|
|
||||||
# sensor
|
|
||||||
# input_select
|
|
||||||
# timer
|
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./mqtt.nix
|
./mqtt.nix
|
||||||
|
./zigbee2mqtt/default.nix
|
||||||
|
|
||||||
|
# hass config
|
||||||
|
./zigbee2mqtt/hass.nix
|
||||||
|
# ./multi/flurlicht.nix
|
||||||
|
./multi/kurzzeitwecker.nix
|
||||||
|
./multi/the_playlist.nix
|
||||||
|
./multi/fliegen-couter.nix
|
||||||
|
./device_tracker/openwrt.nix
|
||||||
|
./sensor/outside.nix
|
||||||
|
./calendar/nextcloud.nix
|
||||||
|
./automation/firetv_restart.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
services.home-assistant = {
|
services.home-assistant = {
|
||||||
package = (upkgs.home-assistant.overrideAttrs (old: {
|
|
||||||
doCheck = false;
|
|
||||||
checkPhase = ":";
|
|
||||||
installCheckPhase = ":";
|
|
||||||
})).override {
|
|
||||||
extraPackages = ps: with ps; [
|
|
||||||
python-forecastio jsonrpc-async jsonrpc-websocket mpd2 pkgs.picotts androidtv
|
|
||||||
];
|
|
||||||
};
|
|
||||||
config = {
|
config = {
|
||||||
influxdb = {
|
influxdb = {
|
||||||
database = "ham";
|
database = "ham";
|
||||||
@ -48,8 +36,6 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = {};
|
config = {};
|
||||||
input_select = zigbee.input_select; # dict
|
|
||||||
timer = zigbee.timer // kurzzeitwecker.timer; # dict
|
|
||||||
homeassistant = {
|
homeassistant = {
|
||||||
name = "Home"; time_zone = "Europe/Berlin";
|
name = "Home"; time_zone = "Europe/Berlin";
|
||||||
latitude = "48.7687";
|
latitude = "48.7687";
|
||||||
@ -60,12 +46,10 @@ in {
|
|||||||
conversation = {};
|
conversation = {};
|
||||||
history = {};
|
history = {};
|
||||||
logbook = {};
|
logbook = {};
|
||||||
counter = fliegen-counter.counter;
|
|
||||||
logger = {
|
logger = {
|
||||||
default = "info";
|
default = "info";
|
||||||
};
|
};
|
||||||
rest_command = {}
|
rest_command = {};
|
||||||
// the_playlist.rest_command;
|
|
||||||
tts = [
|
tts = [
|
||||||
{ platform = "google_translate";
|
{ platform = "google_translate";
|
||||||
language = "de";
|
language = "de";
|
||||||
@ -81,7 +65,7 @@ in {
|
|||||||
# "platform": "broadcast",
|
# "platform": "broadcast",
|
||||||
# "api_key": "", # talk to Botfather /newbot
|
# "api_key": "", # talk to Botfather /newbot
|
||||||
# "allowed_chat_ids": [ ID ] # curl -X GET # https://api.telegram.org/bot<YOUR_API_TOKEN>/getUpdates
|
# "allowed_chat_ids": [ ID ] # curl -X GET # https://api.telegram.org/bot<YOUR_API_TOKEN>/getUpdates
|
||||||
#}
|
# }
|
||||||
(builtins.fromJSON
|
(builtins.fromJSON
|
||||||
(builtins.readFile <secrets/hass/telegram-bot.json>))
|
(builtins.readFile <secrets/hass/telegram-bot.json>))
|
||||||
];
|
];
|
||||||
@ -101,7 +85,6 @@ in {
|
|||||||
];
|
];
|
||||||
sun.elevation = 247;
|
sun.elevation = 247;
|
||||||
recorder = {};
|
recorder = {};
|
||||||
device_tracker = (import ./device_tracker/openwrt.nix);
|
|
||||||
media_player = [
|
media_player = [
|
||||||
{ platform = "FireTV Stick kodi";
|
{ platform = "FireTV Stick kodi";
|
||||||
host = firetv_stick;
|
host = firetv_stick;
|
||||||
@ -149,25 +132,12 @@ in {
|
|||||||
monitored_conditions = [ "ping" "download" "upload" ];
|
monitored_conditions = [ "ping" "download" "upload" ];
|
||||||
}
|
}
|
||||||
# https://www.home-assistant.io/cookbook/automation_for_rainy_days/
|
# https://www.home-assistant.io/cookbook/automation_for_rainy_days/
|
||||||
]
|
];
|
||||||
++ ((import ./sensor/outside.nix) {inherit lib;})
|
|
||||||
++ the_playlist.sensor
|
|
||||||
++ zigbee.sensor ;
|
|
||||||
frontend = { };
|
frontend = { };
|
||||||
calendar = [ (import ./calendar/nextcloud.nix) ];
|
|
||||||
# light = flurlicht.light;
|
|
||||||
http = { };
|
http = { };
|
||||||
switch = [];
|
switch = [];
|
||||||
automation = []
|
automation = [];
|
||||||
++ (import ./automation/firetv_restart.nix)
|
script = { };
|
||||||
++ kurzzeitwecker.automation
|
|
||||||
#++ flurlicht.automation
|
|
||||||
++ the_playlist.automation
|
|
||||||
++ fliegen-counter.automation
|
|
||||||
++ zigbee.automation;
|
|
||||||
script =
|
|
||||||
{ }
|
|
||||||
// kurzzeitwecker.script; # dict
|
|
||||||
};
|
};
|
||||||
enable = true;
|
enable = true;
|
||||||
configDir = hassdir;
|
configDir = hassdir;
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
[
|
{
|
||||||
{ platform = "luci";
|
services.home-assistant.config.device_tracker =
|
||||||
host = "192.168.1.5";
|
[
|
||||||
username = "root";
|
{ platform = "luci";
|
||||||
password = import <secrets/hass/router.nix>;
|
host = "192.168.1.5";
|
||||||
interval_seconds = 30; # instead of 12seconds
|
username = "root";
|
||||||
consider_home = 300; # 5 minutes timeout
|
password = import <secrets/hass/router.nix>;
|
||||||
new_device_defaults.track_new_devices = true;
|
interval_seconds = 30; # instead of 12seconds
|
||||||
}
|
consider_home = 300; # 5 minutes timeout
|
||||||
]
|
new_device_defaults.track_new_devices = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
@ -15,53 +15,57 @@ let
|
|||||||
data.entity_id = "counter.${for}_fliegen";
|
data.entity_id = "counter.${for}_fliegen";
|
||||||
}) incr;
|
}) incr;
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
counter = {
|
{
|
||||||
felix_fliegen = {};
|
services.home-assistant.config =
|
||||||
misa_fliegen = {};
|
{
|
||||||
|
counter = {
|
||||||
|
felix_fliegen = {};
|
||||||
|
misa_fliegen = {};
|
||||||
|
};
|
||||||
|
automation = [
|
||||||
|
(fly_swat "misa" "btn1" "single" 1)
|
||||||
|
(fly_swat "misa" "btn1" "double" 2)
|
||||||
|
(fly_swat "misa" "btn1" "triple" 3)
|
||||||
|
(fly_swat "felix" "btn2" "single" 1)
|
||||||
|
(fly_swat "felix" "btn2" "double" 2)
|
||||||
|
(fly_swat "felix" "btn2" "triple" 3)
|
||||||
|
{
|
||||||
|
alias = "Send Fly Counter Update";
|
||||||
|
trigger = [
|
||||||
|
{
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "counter.felix_fliegen";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "counter.misa_fliegen";
|
||||||
|
#above = -1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
action = {
|
||||||
|
service = "mqtt.publish";
|
||||||
|
data_template = { # gauge-style
|
||||||
|
payload = "{{ trigger.to_state.state }}";
|
||||||
|
topic = "${hlib.prefix}/flycounter/{{ trigger.to_state.object_id }}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
alias = "Reset Fly counters on midnight";
|
||||||
|
trigger = {
|
||||||
|
platform = "time";
|
||||||
|
at = "01:00:00";
|
||||||
|
};
|
||||||
|
action = [
|
||||||
|
{ service = "counter.reset";
|
||||||
|
data.entity_id = "counter.misa_fliegen";
|
||||||
|
}
|
||||||
|
{ service = "counter.reset";
|
||||||
|
data.entity_id = "counter.felix_fliegen";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
automation = [
|
|
||||||
(fly_swat "misa" "btn1" "single" 1)
|
|
||||||
(fly_swat "misa" "btn1" "double" 2)
|
|
||||||
(fly_swat "misa" "btn1" "triple" 3)
|
|
||||||
(fly_swat "felix" "btn2" "single" 1)
|
|
||||||
(fly_swat "felix" "btn2" "double" 2)
|
|
||||||
(fly_swat "felix" "btn2" "triple" 3)
|
|
||||||
{
|
|
||||||
alias = "Send Fly Counter Update";
|
|
||||||
trigger = [
|
|
||||||
{
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "counter.felix_fliegen";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "counter.misa_fliegen";
|
|
||||||
#above = -1;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
action = {
|
|
||||||
service = "mqtt.publish";
|
|
||||||
data_template = { # gauge-style
|
|
||||||
payload = "{{ trigger.to_state.state }}";
|
|
||||||
topic = "${hlib.prefix}/flycounter/{{ trigger.to_state.object_id }}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
alias = "Reset Fly counters on midnight";
|
|
||||||
trigger = {
|
|
||||||
platform = "time";
|
|
||||||
at = "01:00:00";
|
|
||||||
};
|
|
||||||
action = [
|
|
||||||
{ service = "counter.reset";
|
|
||||||
data.entity_id = "counter.misa_fliegen";
|
|
||||||
}
|
|
||||||
{ service = "counter.reset";
|
|
||||||
data.entity_id = "counter.felix_fliegen";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
@ -8,125 +8,128 @@
|
|||||||
# notify.telegrambot
|
# notify.telegrambot
|
||||||
let
|
let
|
||||||
button = "sensor.zigbee_btn2_click";
|
button = "sensor.zigbee_btn2_click";
|
||||||
in {
|
in
|
||||||
timer.kurzzeitwecker =
|
{
|
||||||
{
|
services.home-assistant.config = {
|
||||||
name = "Zigbee Kurzzeitwecker";
|
timer.kurzzeitwecker =
|
||||||
duration = 300;
|
|
||||||
};
|
|
||||||
script.add_5_minutes_to_kurzzeitwecker =
|
|
||||||
{
|
{
|
||||||
alias = "Add 5 minutes to kurzzeitwecker";
|
name = "Zigbee Kurzzeitwecker";
|
||||||
sequence = [
|
duration = 300;
|
||||||
{ service = "timer.pause";
|
};
|
||||||
entity_id = "timer.kurzzeitwecker";
|
script.add_5_minutes_to_kurzzeitwecker =
|
||||||
}
|
{
|
||||||
{ service = "timer.start";
|
alias = "Add 5 minutes to kurzzeitwecker";
|
||||||
data_template = {
|
sequence = [
|
||||||
|
{ service = "timer.pause";
|
||||||
entity_id = "timer.kurzzeitwecker";
|
entity_id = "timer.kurzzeitwecker";
|
||||||
duration = ''
|
}
|
||||||
{% set r = state_attr('timer.kurzzeitwecker', 'remaining') ~ '-0000' %}
|
{ service = "timer.start";
|
||||||
{% set t = strptime(r, '%H:%M:%S.%f%z') %}
|
data_template = {
|
||||||
{{ (as_timestamp(t) + 300) | timestamp_custom('%H:%M:%S', false) }}
|
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) }}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
automation =
|
||||||
|
[
|
||||||
|
{
|
||||||
|
alias = "Start Timer 5min";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = button;
|
||||||
|
to = "single";
|
||||||
};
|
};
|
||||||
|
condition =
|
||||||
|
{ condition = "state";
|
||||||
|
entity_id = "timer.kurzzeitwecker";
|
||||||
|
state = "idle";
|
||||||
|
};
|
||||||
|
|
||||||
|
action = [
|
||||||
|
{ service = "timer.start";
|
||||||
|
entity_id = "timer.kurzzeitwecker";
|
||||||
|
data.duration = "00:05:00";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
service = "notify.telegrambot";
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
|
||||||
|
action = [
|
||||||
|
{ service = "homeassistant.turn_on";
|
||||||
|
entity_id = "script.add_5_minutes_to_kurzzeitwecker";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
service = "notify.telegrambot";
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
|
||||||
|
action = [
|
||||||
|
{
|
||||||
|
service = "timer.cancel";
|
||||||
|
entity_id = "timer.kurzzeitwecker";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
service = "notify.telegrambot";
|
||||||
|
data.message = "Timer gestoppt, abgebrochen";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
alias = "Timer Finished";
|
||||||
|
trigger = {
|
||||||
|
platform = "event";
|
||||||
|
event_type = "timer.finished";
|
||||||
|
event_data.entity_id = "timer.kurzzeitwecker";
|
||||||
|
};
|
||||||
|
action = [
|
||||||
|
{
|
||||||
|
service = "notify.telegrambot";
|
||||||
|
data.message = "Timer beendet";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
automation =
|
|
||||||
[
|
|
||||||
{
|
|
||||||
alias = "Start Timer 5min";
|
|
||||||
trigger = {
|
|
||||||
platform = "state";
|
|
||||||
entity_id = button;
|
|
||||||
to = "single";
|
|
||||||
};
|
|
||||||
condition =
|
|
||||||
{ condition = "state";
|
|
||||||
entity_id = "timer.kurzzeitwecker";
|
|
||||||
state = "idle";
|
|
||||||
};
|
|
||||||
|
|
||||||
action = [
|
|
||||||
{ service = "timer.start";
|
|
||||||
entity_id = "timer.kurzzeitwecker";
|
|
||||||
data.duration = "00:05:00";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
service = "notify.telegrambot";
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
|
|
||||||
action = [
|
|
||||||
{ service = "homeassistant.turn_on";
|
|
||||||
entity_id = "script.add_5_minutes_to_kurzzeitwecker";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
service = "notify.telegrambot";
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
|
|
||||||
action = [
|
|
||||||
{
|
|
||||||
service = "timer.cancel";
|
|
||||||
entity_id = "timer.kurzzeitwecker";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
service = "notify.telegrambot";
|
|
||||||
data.message = "Timer gestoppt, abgebrochen";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
alias = "Timer Finished";
|
|
||||||
trigger = {
|
|
||||||
platform = "event";
|
|
||||||
event_type = "timer.finished";
|
|
||||||
event_data.entity_id = "timer.kurzzeitwecker";
|
|
||||||
};
|
|
||||||
action = [
|
|
||||||
{
|
|
||||||
service = "notify.telegrambot";
|
|
||||||
data.message = "Timer beendet";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
@ -7,77 +7,80 @@
|
|||||||
# automation
|
# automation
|
||||||
# sensor
|
# sensor
|
||||||
{
|
{
|
||||||
rest_command = {
|
services.home-assistant.config =
|
||||||
good_song = {
|
{
|
||||||
url = "http://prism.r:8001/good";
|
rest_command = {
|
||||||
method = "POST";
|
good_song = {
|
||||||
};
|
url = "http://prism.r:8001/good";
|
||||||
bad_song = {
|
method = "POST";
|
||||||
url = "http://prism.r:8001/skip";
|
};
|
||||||
method = "POST";
|
bad_song = {
|
||||||
|
url = "http://prism.r:8001/skip";
|
||||||
|
method = "POST";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
automation = [
|
||||||
|
{
|
||||||
|
alias = "playlist song publish";
|
||||||
|
trigger = {
|
||||||
|
#platform = "event";
|
||||||
|
#event_data.entity_id = "sensor.the_playlist_song";
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "sensor.the_playlist_song";
|
||||||
|
};
|
||||||
|
action = {
|
||||||
|
service = "mqtt.publish";
|
||||||
|
data = {
|
||||||
|
topic = "/ham/the_playlist/song";
|
||||||
|
payload_template = "{{ states.sensor.the_playlist_song.state }}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
alias = "playlist upvote on button";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "binary_sensor.playlist_button_good";
|
||||||
|
from = "off";
|
||||||
|
to = "on";
|
||||||
|
};
|
||||||
|
action.service = "rest_command.good_song";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
alias = "playlist downvote on button";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "binary_sensor.playlist_button_bad";
|
||||||
|
from = "off";
|
||||||
|
to = "on";
|
||||||
|
};
|
||||||
|
action.service = "rest_command.bad_song";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
sensor = [
|
||||||
|
{ platform = "rest";
|
||||||
|
name = "pl";
|
||||||
|
resource = "http://prism.r:8001/current";
|
||||||
|
scan_interval = 30;
|
||||||
|
value_template = "1";
|
||||||
|
json_attributes = [ "name" "filename" "youtube" ];
|
||||||
|
}
|
||||||
|
{ platform = "template";
|
||||||
|
sensors = {
|
||||||
|
the_playlist_song = {
|
||||||
|
friendly_name = "Current Song";
|
||||||
|
value_template = ''{{ states.sensor.pl.attributes['name'] }}'';
|
||||||
|
};
|
||||||
|
the_playlist_url = {
|
||||||
|
friendly_name = "Song Youtube URL";
|
||||||
|
value_template = ''{{ states.sensor.pl.attributes['youtube'] }}'';
|
||||||
|
};
|
||||||
|
the_playlist_filename = {
|
||||||
|
friendly_name = "Song Filename";
|
||||||
|
value_template = ''{{ states.sensor.pl.attributes['filename'] }}'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
automation = [
|
|
||||||
{
|
|
||||||
alias = "playlist song publish";
|
|
||||||
trigger = {
|
|
||||||
#platform = "event";
|
|
||||||
#event_data.entity_id = "sensor.the_playlist_song";
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "sensor.the_playlist_song";
|
|
||||||
};
|
|
||||||
action = {
|
|
||||||
service = "mqtt.publish";
|
|
||||||
data = {
|
|
||||||
topic = "/ham/the_playlist/song";
|
|
||||||
payload_template = "{{ states.sensor.the_playlist_song.state }}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
alias = "playlist upvote on button";
|
|
||||||
trigger = {
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "binary_sensor.playlist_button_good";
|
|
||||||
from = "off";
|
|
||||||
to = "on";
|
|
||||||
};
|
|
||||||
action.service = "rest_command.good_song";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
alias = "playlist downvote on button";
|
|
||||||
trigger = {
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "binary_sensor.playlist_button_bad";
|
|
||||||
from = "off";
|
|
||||||
to = "on";
|
|
||||||
};
|
|
||||||
action.service = "rest_command.bad_song";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
sensor = [
|
|
||||||
{ platform = "rest";
|
|
||||||
name = "pl";
|
|
||||||
resource = "http://prism.r:8001/current";
|
|
||||||
scan_interval = 30;
|
|
||||||
value_template = "1";
|
|
||||||
json_attributes = [ "name" "filename" "youtube" ];
|
|
||||||
}
|
|
||||||
{ platform = "template";
|
|
||||||
sensors = {
|
|
||||||
the_playlist_song = {
|
|
||||||
friendly_name = "Current Song";
|
|
||||||
value_template = ''{{ states.sensor.pl.attributes['name'] }}'';
|
|
||||||
};
|
|
||||||
the_playlist_url = {
|
|
||||||
friendly_name = "Song Youtube URL";
|
|
||||||
value_template = ''{{ states.sensor.pl.attributes['youtube'] }}'';
|
|
||||||
};
|
|
||||||
the_playlist_filename = {
|
|
||||||
friendly_name = "Song Filename";
|
|
||||||
value_template = ''{{ states.sensor.pl.attributes['filename'] }}'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,25 @@
|
|||||||
{lib,...}: [
|
{lib,...}:
|
||||||
{ platform = "darksky";
|
|
||||||
api_key = lib.removeSuffix "\n"
|
{
|
||||||
(builtins.readFile <secrets/hass/darksky.apikey>);
|
services.home-assistant.config.sensor =
|
||||||
language = "de";
|
[
|
||||||
monitored_conditions = [
|
{ platform = "darksky";
|
||||||
"summary" "icon"
|
api_key = lib.removeSuffix "\n"
|
||||||
"nearest_storm_distance" "precip_probability"
|
(builtins.readFile <secrets/hass/darksky.apikey>);
|
||||||
"precip_intensity"
|
language = "de";
|
||||||
"temperature" # "temperature_high" "temperature_low"
|
monitored_conditions = [
|
||||||
"apparent_temperature"
|
"summary" "icon"
|
||||||
"hourly_summary" # next 24 hours text
|
"nearest_storm_distance" "precip_probability"
|
||||||
"humidity"
|
"precip_intensity"
|
||||||
"pressure"
|
"temperature" # "temperature_high" "temperature_low"
|
||||||
"uv_index"
|
"apparent_temperature"
|
||||||
];
|
"hourly_summary" # next 24 hours text
|
||||||
units = "si" ;
|
"humidity"
|
||||||
scan_interval = "00:30:00";
|
"pressure"
|
||||||
}
|
"uv_index"
|
||||||
]
|
];
|
||||||
|
units = "si" ;
|
||||||
|
scan_interval = "00:30:00";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
14
makefu/2configs/ham/zigbee2mqtt/osram.nix
Normal file
14
makefu/2configs/ham/zigbee2mqtt/osram.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
availability_topic: /ham/zigbee/bridge/state
|
||||||
|
command_topic: /ham/zigbee/flur_arbeitszimmer_osram2/set
|
||||||
|
|
||||||
|
- platform: "mqtt"
|
||||||
|
state_topic: "zigbee2mqtt/<FRIENDLY_NAME>"
|
||||||
|
availability_topic: "zigbee2mqtt/bridge/state"
|
||||||
|
payload_on: true
|
||||||
|
payload_off: false
|
||||||
|
value_template: "{{ value_json.battery_low}}"
|
||||||
|
device_class: "battery"
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user