summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2019-04-17 20:46:58 +0200
committermakefu <github@syntax-fehler.de>2019-04-17 20:46:58 +0200
commitbccb2fd4e51448a2e9794acd47e7df16339f64aa (patch)
tree7ab3b753abc25989d8c75cda3d9c52ecbb7520ba
parent6fa6659b8fc5d2e00131aa470408a17c9002ac75 (diff)
ma bureautomation: refactor
-rw-r--r--makefu/2configs/bureautomation/automation/bureau-shutdown.nix42
-rw-r--r--makefu/2configs/bureautomation/automation/hass-restart.nix31
-rw-r--r--makefu/2configs/bureautomation/automation/nachtlicht.nix72
-rw-r--r--makefu/2configs/bureautomation/hass.nix27
-rw-r--r--makefu/2configs/bureautomation/light/statuslight.nix5
-rw-r--r--makefu/2configs/bureautomation/ota.nix15
-rw-r--r--makefu/2configs/bureautomation/sensor/tasmota_firmware.nix16
7 files changed, 154 insertions, 54 deletions
diff --git a/makefu/2configs/bureautomation/automation/bureau-shutdown.nix b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
index c632a9e6..d54d9762 100644
--- a/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
+++ b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
@@ -5,14 +5,40 @@
entity_id = "group.team";
from = "not_home";
to = "home";
+ for.seconds = 30;
};
- action = {
- service = "homeassistant.turn_on";
- entity_id = [
- "switch.fernseher"
- "switch.feuer"
- ];
- };
+ action = [
+ {
+ service = "homeassistant.turn_on";
+ entity_id = [
+ "switch.fernseher"
+ "switch.feuer"
+ ];
+ }
+ {
+ service = "media_player.kodi_call_method";
+ data = {
+ entity_id = "media_player.kodi";
+ method = "Player.Open";
+ item.partymode = "music";
+ };
+ }
+ {
+ service = "tts.google_say";
+ entity_id = "media_player.kodi";
+ data = {
+ message = "Willkommen in deinem Lieblingsbüro";
+ language = "de";
+ };
+ }
+ {
+ service = "notify.telegrambot";
+ data = {
+ title = "Bureau Startup";
+ message = "Willkommen {{ trigger.platform }}";
+ };
+ }
+ ];
}
{ alias = "Turn off Fernseher after last in group left";
trigger = [
@@ -42,7 +68,7 @@
service = "notify.telegrambot";
data = {
title = "Bureau Shutdown";
- message = "All devices are turned off due to {{ trigger.platform }} - {{ trigger }}";
+ message = "All devices are turned off due to {{ trigger.platform }}";
};
}
];
diff --git a/makefu/2configs/bureautomation/automation/hass-restart.nix b/makefu/2configs/bureautomation/automation/hass-restart.nix
new file mode 100644
index 00000000..be16f696
--- /dev/null
+++ b/makefu/2configs/bureautomation/automation/hass-restart.nix
@@ -0,0 +1,31 @@
+[
+ { alias = "State on HA start-up";
+ trigger = {
+ platform = "homeassistant";
+ event = "start";
+ };
+ action = [
+ # Startup State
+ { service = "mqtt.publish";
+ data = {
+ topic = "/bam/sonoffs/cmnd/state";
+ payload = "";
+ };
+ }
+ # Firmware Version
+ { service = "mqtt.publish";
+ data = {
+ topic = "/bam/sonoffs/cmnd/status";
+ payload = "2";
+ };
+ }
+ # Will trigger restart of all devices!
+ #{ service = "mqtt.publish";
+ # data = {
+ # topic = "sonoffs/cmnd/SetOption59"; # configure sending state on power change
+ # payload = "1";
+ # };
+ #}
+ ];
+ }
+]
diff --git a/makefu/2configs/bureautomation/automation/nachtlicht.nix b/makefu/2configs/bureautomation/automation/nachtlicht.nix
index 2becd4a3..ec6fa20c 100644
--- a/makefu/2configs/bureautomation/automation/nachtlicht.nix
+++ b/makefu/2configs/bureautomation/automation/nachtlicht.nix
@@ -1,43 +1,35 @@
[
- {
- alias = "Turn off Nachtlicht on sunrise";
- trigger =
- {
- platform = "sun";
- event = "sunrise";
- };
- action =
- {
- service = "homeassistant.turn_off";
- entity_id = [ "group.nachtlicht" ];
- };
- }
+ # TODO: trigger if it is before dusk and somebody arives but nachtlichter are
+ # off from last day
+ # TODO: do not have nachtlicht turned on at night
+ {
+ alias = "Turn on Nachtlicht at dusk"; # when it gets dim
+ trigger =
+ { platform = "numeric_state";
+ entity_id = "sun.sun";
+ value_template = "{{ state.attributes.elevation }}";
+ below = 10;
- {
- alias = "Turn on Nachtlicht on motion and dusk";
- trigger =
- {
- platform = "state";
- entity_id = "binary_sensor.motion";
- to = "on";
- };
- condition = # 'when dark'
- {
- condition = "or";
- conditions = [
- { condition = "sun";
- after = "sunset";
- after_offset = "-00:45:00"; # on dusk
- }
- { condition = "sun";
- before = "sunrise";
- }
- ];
- };
- action =
- {
- service = "homeassistant.turn_on";
- entity_id = [ "group.nachtlicht" ];
- };
- }
+ };
+ action =
+ { service = "homeassistant.turn_on";
+ entity_id = [ "group.nachtlicht" ];
+ };
+ }
+ {
+ alias = "Turn off Nachtlicht at dawn";
+ trigger =
+ { platform = "sun";
+ event = "sunrise";
+ offset = "01:30:00"; # on dawn
+ };
+ # TODO: when somebody is still in the buero
+ # condition =
+ #{
+ #};
+ action =
+ { service = "homeassistant.turn_off";
+ entity_id = [ "group.nachtlicht" ];
+ };
+ }
]
diff --git a/makefu/2configs/bureautomation/hass.nix b/makefu/2configs/bureautomation/hass.nix
index 4e5fe7b6..02465520 100644
--- a/makefu/2configs/bureautomation/hass.nix
+++ b/makefu/2configs/bureautomation/hass.nix
@@ -6,6 +6,7 @@ in {
state = [ "/var/lib/hass/known_devices.yaml" ];
services.home-assistant = {
enable = true;
+ package = pkgs.home-assistant.override { python3 = pkgs.python36; };
config = {
homeassistant = {
name = "Bureautomation";
@@ -13,8 +14,14 @@ in {
latitude = "48.8265";
longitude = "9.0676";
elevation = 303;
+ auth_providers = [
+ { type = "homeassistant";}
+ { type = "legacy_api_password";}
+ { type = "trusted_networks";
+ # allow_bypass_login = true;
+ }
+ ];
};
-
mqtt = {
broker = "localhost";
port = 1883;
@@ -79,7 +86,8 @@ in {
sensor =
(import ./sensor/espeasy.nix) ++
((import ./sensor/outside.nix) {inherit lib;}) ++
- (import ./sensor/influxdb.nix);
+ (import ./sensor/influxdb.nix) ++
+ (import ./sensor/tasmota_firmware.nix);
camera =
(import ./camera/verkehrskamera.nix);
@@ -89,12 +97,22 @@ in {
# (import ./person/team.nix );
frontend = { };
- http = { };
+ http = {
+ # TODO: https://github.com/home-assistant/home-assistant/issues/16149
+ api_password = "sistemas";
+ trusted_networks = [
+ "127.0.0.1/32"
+ "192.168.8.0/24"
+ "::1/128"
+ "fd00::/8"
+ ];
+ };
conversation = {};
history = {};
logbook = {};
tts = [ { platform = "google";} ];
recorder = {};
+ sun = {};
telegram_bot = [
(builtins.fromJSON
(builtins.readFile <secrets/hass/telegram-bot.json>))
@@ -156,8 +174,10 @@ in {
outside = [
# "sensor.ditzingen_pm10"
# "sensor.ditzingen_pm25"
+ "sensor.dark_sky_icon"
"sensor.dark_sky_temperature"
"sensor.dark_sky_humidity"
+ "sensor.dark_sky_uv_index"
# "sensor.dark_sky_pressure"
"sensor.dark_sky_hourly_summary"
"device_tracker.router"
@@ -169,6 +189,7 @@ in {
# home-assistant
automation = (import ./automation/bureau-shutdown.nix) ++
(import ./automation/nachtlicht.nix) ++
+ (import ./automation/hass-restart.nix) ++
(import ./automation/10h_timer.nix);
device_tracker = (import ./device_tracker/openwrt.nix );
};
diff --git a/makefu/2configs/bureautomation/light/statuslight.nix b/makefu/2configs/bureautomation/light/statuslight.nix
index 0acab728..31f52f49 100644
--- a/makefu/2configs/bureautomation/light/statuslight.nix
+++ b/makefu/2configs/bureautomation/light/statuslight.nix
@@ -20,7 +20,7 @@ let
payload_not_available= "Offline";
# brightness
brightness_state_topic = "/bam/${topic}/tele/STATE";
- brightness_value_template = "{{value_json.Dimmer}}";
+ brightness_value_template = "{{value_json.Dimmer|default(100)}}";
brightness_command_topic = "/bam/${topic}/cmnd/Dimmer";
brightness_scale = 100;
# color
@@ -30,9 +30,8 @@ let
rgb_command_template = "{{ '%02x%02x%02x' | format(red, green, blue)}}";
# effects
effect_state_topic = "/bam/${topic}/tele/STATE";
- effects_value_template = "{{value_json.Scheme}}";
+ effects_value_template = "{{value_json.Scheme|default(0)}}";
effect_command_topic = "/bam/${topic}/cmnd/Scheme";
- effect_value_template = "{{ value_json.Scheme }}";
effect_list = [
0 # single color for LED light
1 # start wake up sequence (same as Wakeup)
diff --git a/makefu/2configs/bureautomation/ota.nix b/makefu/2configs/bureautomation/ota.nix
new file mode 100644
index 00000000..f2f931d2
--- /dev/null
+++ b/makefu/2configs/bureautomation/ota.nix
@@ -0,0 +1,15 @@
+{
+ # mosquitto_pub -t /bam/sonoffs/cmnd/OtaUrl -m "http://192.168.8.11/sonoff.bin"
+ # mosquitto_pub -t /bam/sonoffs/cmnd/upgrade -m "6.5.0"
+ # wget https://github.com/arendst/Sonoff-Tasmota/releases/download/v6.5.0/sonoff.bin
+ # wget https://github.com/arendst/Sonoff-Tasmota/releases/download/v6.5.0/sonoff-minimal.bin
+ services.nginx = {
+ enable = true;
+ virtualHosts."192.168.8.11" = {
+ root = "/var/www/tasmota";
+ extraConfig = ''
+ autoindex on;
+ '';
+ };
+ };
+}
diff --git a/makefu/2configs/bureautomation/sensor/tasmota_firmware.nix b/makefu/2configs/bureautomation/sensor/tasmota_firmware.nix
new file mode 100644
index 00000000..1a4738e1
--- /dev/null
+++ b/makefu/2configs/bureautomation/sensor/tasmota_firmware.nix
@@ -0,0 +1,16 @@
+let
+ tasmota_firmware = topic:
+ { platform = "mqtt";
+ name = "${topic} Firmware";
+ state_topic = "/bam/${topic}/stat/STATUS2";
+ availability_topic = "/bam/${topic}/tele/LWT";
+ value_template = "v{{value_json.StatusFWR.Version}}";
+ payload_available= "Online";
+ payload_not_available= "Offline";
+ };
+in
+ map tasmota_firmware [
+ "plug" "plug2" "plug3" "plug4" "plug5"
+ "status1" "status2" "buslicht"
+ "rfbridge"
+ ]