Merge remote-tracking branch 'gum/master'
This commit is contained in:
commit
86b458d5d3
makefu
|
@ -93,10 +93,11 @@ in {
|
|||
<stockholm/makefu/2configs/virtualisation/docker.nix>
|
||||
<stockholm/makefu/2configs/bluetooth-mpd.nix>
|
||||
|
||||
<stockholm/makefu/2configs/home/ham>
|
||||
<stockholm/makefu/2configs/home/airsonic.nix>
|
||||
<stockholm/makefu/2configs/home/photoprism.nix>
|
||||
<stockholm/makefu/2configs/home/metube.nix>
|
||||
<stockholm/makefu/2configs/home/ham>
|
||||
<stockholm/makefu/2configs/home/zigbee2mqtt>
|
||||
{
|
||||
makefu.ps3netsrv = {
|
||||
enable = true;
|
||||
|
|
|
@ -50,7 +50,7 @@ in {
|
|||
|
||||
<stockholm/makefu/2configs/bureautomation> # new hass entry point
|
||||
<stockholm/makefu/2configs/bureautomation/led-fader.nix>
|
||||
<stockholm/makefu/2configs/bureautomation/kalauerbot.nix>
|
||||
# <stockholm/makefu/2configs/bureautomation/kalauerbot.nix> now runs in thales
|
||||
# <stockholm/makefu/2configs/bureautomation/visitor-photostore.nix>
|
||||
# <stockholm/makefu/2configs/bureautomation/mpd.nix> #mpd is only used for TTS, this is the web interface
|
||||
<stockholm/makefu/2configs/mqtt.nix>
|
||||
|
|
|
@ -16,93 +16,83 @@ let
|
|||
sha256 = "0bm0697fyf6s05c6yw6y25cyck04rlxj1dgazkq8mfqk6756v2bq";
|
||||
};
|
||||
samples = user: lib.mapAttrsToList
|
||||
(file: _: ''"${prefix}/${name}/${user}/${file}"'')
|
||||
(file: _: ''"${prefix}/${user}/${file}"'')
|
||||
(builtins.readDir (toString ( recordrepo+ "/recordings/${user}")));
|
||||
random_tuerspruch = ''{{'' + (lib.concatStringsSep "," ((samples "Felix") ++ (samples "Sofia") ++ (samples "Markus"))) + ''| random}}''; # TODO read from derivation
|
||||
in
|
||||
{
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${audiodir} - hass hass - -"
|
||||
];
|
||||
|
||||
systemd.services.copy-philosophische-tuersounds = {
|
||||
description = "copy philosophische tuer";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = "hass";
|
||||
WorkingDirectory = audiodir;
|
||||
ExecStart = pkgs.writeDash "update-samples" ''
|
||||
cp -vr ${recordrepo} ${audiodir}
|
||||
rm -rf "${audiodir}"
|
||||
cp -vr "${recordrepo}/recordings" "${audiodir}"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
services.home-assistant.config.media_extractor = { };
|
||||
services.home-assistant.config.script."philosophische_tuer" = {
|
||||
alias = "Durchsage der philosophischen Tür";
|
||||
sequence = [
|
||||
{ service = "media_player.play_media";
|
||||
data = {
|
||||
entity_id = "media_player.mpd";
|
||||
media_content_type = "playlist";
|
||||
media_content_id = "ansage";
|
||||
};
|
||||
}
|
||||
{ delay.seconds = 5; }
|
||||
{ service = "media_extractor.play_media";
|
||||
entity_id = "media_player.mpd";
|
||||
data_template = {
|
||||
media_content_id = random_tuerspruch;
|
||||
media_content_type = "MUSIC";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
services.home-assistant.config.automation =
|
||||
[
|
||||
{
|
||||
alias = "Tür offen seit ${toString short_threshold} sekunden";
|
||||
trigger =
|
||||
{ platform = "state";
|
||||
entity_id = sensor;
|
||||
to = "on";
|
||||
for.seconds = 60;
|
||||
};
|
||||
condition = { };
|
||||
|
||||
action = [
|
||||
{ service = "homeassistant.turn_on";
|
||||
entity_id = [
|
||||
"script.philosophische_tuer"
|
||||
];
|
||||
services.home-assistant.config = {
|
||||
media_extractor = { };
|
||||
script."philosophische_tuer" = {
|
||||
alias = "Durchsage der philosophischen Tür";
|
||||
sequence = [
|
||||
{ service = "media_player.play_media";
|
||||
data = {
|
||||
entity_id = "media_player.mpd";
|
||||
media_content_type = "playlist";
|
||||
media_content_id = "ansage";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
alias = "Tür offen seit ${toString long_threshold} minuten";
|
||||
trigger =
|
||||
{ platform = "state";
|
||||
entity_id = sensor;
|
||||
to = "on";
|
||||
for.minutes = long_threshold;
|
||||
};
|
||||
condition = { };
|
||||
|
||||
action = [
|
||||
{ service = "homeassistant.turn_on";
|
||||
entity_id = [
|
||||
"script.philosophische_tuer"
|
||||
];
|
||||
}
|
||||
{ service = "tts.google_say";
|
||||
{ delay.seconds = 5; }
|
||||
{ service = "media_extractor.play_media";
|
||||
entity_id = "media_player.mpd";
|
||||
data_template = {
|
||||
message = "BEEP BOOP - Die Tür ist schon seit ${toString long_threshold} Minuten offen! Student Nummer {{ range(1,500) | random }}, bitte schliesse die Tür";
|
||||
language = "de";
|
||||
media_content_id = random_tuerspruch;
|
||||
media_content_type = "MUSIC";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
automation =
|
||||
[
|
||||
{
|
||||
alias = "Tür offen seit ${toString short_threshold} sekunden";
|
||||
trigger =
|
||||
{ platform = "state";
|
||||
entity_id = sensor;
|
||||
to = "on";
|
||||
for.seconds = 60;
|
||||
};
|
||||
action = [
|
||||
{ service = "homeassistant.turn_on";
|
||||
entity_id = "script.philosophische_tuer";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
alias = "Tür offen seit ${toString long_threshold} minuten";
|
||||
trigger =
|
||||
{ platform = "state";
|
||||
entity_id = sensor;
|
||||
to = "on";
|
||||
for.minutes = long_threshold;
|
||||
};
|
||||
|
||||
action = [
|
||||
{ service = "homeassistant.turn_on";
|
||||
entity_id = "script.philosophische_tuer" ;
|
||||
}
|
||||
{ service = "tts.google_say";
|
||||
entity_id = "media_player.mpd";
|
||||
data_template = {
|
||||
message = "BEEP BOOP - Die Tür ist schon seit ${toString long_threshold} Minuten offen! Student Nummer {{ range(1,500) | random }}, bitte schliesse die Tür";
|
||||
language = "de";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -56,7 +56,11 @@ in {
|
|||
package = (unstable.home-assistant.overrideAttrs (old: {
|
||||
doInstallCheck = false;
|
||||
})).override {
|
||||
extraPackages = p: [ p.APScheduler ];
|
||||
extraPackages = p: [
|
||||
# TODO: put somewhere else
|
||||
(p.callPackage <stockholm/makefu/2configs/home/ham/deps/dwdwfsapi.nix> {})
|
||||
(p.callPackage <stockholm/makefu/2configs/home/ham/deps/pykodi.nix> {})
|
||||
p.APScheduler ];
|
||||
};
|
||||
autoExtraComponents = true;
|
||||
config = {
|
||||
|
@ -119,13 +123,13 @@ in {
|
|||
name = "wbob-kodi";
|
||||
host = kodi-host;
|
||||
}
|
||||
{
|
||||
platform = "telegram";
|
||||
name = "telegrambot";
|
||||
chat_id = builtins.elemAt
|
||||
(builtins.fromJSON (builtins.readFile
|
||||
<secrets/hass/telegram-bot.json>)).allowed_chat_ids 0;
|
||||
}
|
||||
#{
|
||||
# platform = "telegram";
|
||||
# name = "telegrambot";
|
||||
# chat_id = builtins.elemAt
|
||||
# (builtins.fromJSON (builtins.readFile
|
||||
# <secrets/hass/telegram-bot.json>)).allowed_chat_ids 0;
|
||||
#}
|
||||
];
|
||||
media_player = [
|
||||
{ platform = "kodi";
|
||||
|
@ -136,7 +140,7 @@ in {
|
|||
}
|
||||
];
|
||||
|
||||
sensor = [{ platform = "version"; }]; # pyhaversion
|
||||
# sensor = [{ platform = "version"; }]; # pyhaversion
|
||||
|
||||
|
||||
|
||||
|
@ -158,113 +162,16 @@ in {
|
|||
api_key = builtins.readFile <secrets/hass/voicerss.apikey>;
|
||||
language = "de-de";
|
||||
}
|
||||
{ platform = "picotts";
|
||||
language = "de-DE";
|
||||
}
|
||||
#{ platform = "picotts";
|
||||
# language = "de-DE";
|
||||
#}
|
||||
];
|
||||
recorder = {};
|
||||
sun = {};
|
||||
telegram_bot = [
|
||||
(builtins.fromJSON
|
||||
(builtins.readFile <secrets/hass/telegram-bot.json>))
|
||||
];
|
||||
group =
|
||||
{ default_view =
|
||||
{ view = "yes";
|
||||
entities = [
|
||||
"group.sensors"
|
||||
"group.camera"
|
||||
"group.outside"
|
||||
"group.team"
|
||||
"group.nachtlicht"
|
||||
"group.switches"
|
||||
"group.aramark"
|
||||
];
|
||||
};
|
||||
automation = [];
|
||||
|
||||
switches = [
|
||||
"switch.bauarbeiterlampe"
|
||||
"switch.blitzdings"
|
||||
"switch.fernseher"
|
||||
"switch.feuer"
|
||||
"switch.frosch_blasen"
|
||||
"light.status_felix"
|
||||
# "light.status_daniel"
|
||||
# "light.buslicht"
|
||||
];
|
||||
team = [
|
||||
"person.thorsten"
|
||||
#"device_tracker.thorsten_phone"
|
||||
"person.felix"
|
||||
"person.ecki"
|
||||
"person.daniel"
|
||||
# "person.carsten"
|
||||
"person.thierry"
|
||||
"person.frank"
|
||||
"person.emeka"
|
||||
"person.tancrede"
|
||||
#"device_tracker.felix_phone"
|
||||
#"device_tracker.ecki_tablet"
|
||||
#"device_tracker.daniel_phone"
|
||||
#"device_tracker.carsten_phone"
|
||||
#"device_tracker.thierry_phone"
|
||||
#"device_tracker.frank_phone"
|
||||
#"device_tracker.emeka_phone"
|
||||
# "person.thorsten"
|
||||
# "person.felix"
|
||||
# "person.ecki"
|
||||
# "person.daniel"
|
||||
];
|
||||
camera = [
|
||||
"camera.Baumarkt"
|
||||
"camera.Autobahn_Heilbronn"
|
||||
"camera.Autobahn_Singen"
|
||||
"camera.puppies"
|
||||
"camera.poorly_drawn_lines"
|
||||
"camera.xkcd"
|
||||
];
|
||||
nachtlicht = [
|
||||
"switch.nachtlicht_a"
|
||||
"switch.nachtlicht_b"
|
||||
"switch.nachtlicht_c"
|
||||
"switch.nachtlicht_d"
|
||||
];
|
||||
Aramark = [
|
||||
"binary_sensor.pommes"
|
||||
"sensor.menu_1"
|
||||
"sensor.menu_1_text"
|
||||
"sensor.menu_1_preis"
|
||||
"sensor.menu_2"
|
||||
"sensor.menu_2_text"
|
||||
"sensor.menu_2_preis"
|
||||
"sensor.aktion"
|
||||
"sensor.aktion_text"
|
||||
"sensor.aktion_preis"
|
||||
"sensor.mercato"
|
||||
"sensor.mercato_text"
|
||||
"sensor.mercato_preis"
|
||||
];
|
||||
sensors = [
|
||||
"media_player.kodi"
|
||||
"timer.felix_10h"
|
||||
"timer.frank_10h"
|
||||
"sensor.easy2_dht22_humidity"
|
||||
"sensor.easy2_dht22_temperature"
|
||||
"sensor.air_quality"
|
||||
# "binary_sensor.aramark_pommes"
|
||||
# "binary_sensor.redbutton"
|
||||
];
|
||||
outside = [
|
||||
# "sensor.ditzingen_pm10"
|
||||
# "sensor.ditzingen_pm25"
|
||||
"sensor.dark_sky_temperature"
|
||||
"sensor.dark_sky_humidity"
|
||||
"sensor.dark_sky_uv_index"
|
||||
# "sensor.dark_sky_pressure"
|
||||
"sensor.dark_sky_hourly_summary"
|
||||
];
|
||||
};
|
||||
#telegram_bot = [
|
||||
# (builtins.fromJSON
|
||||
# (builtins.readFile <secrets/hass/telegram-bot.json>))
|
||||
#];
|
||||
# only for automation
|
||||
# feedreader.urls = [ "http://www.heise.de/security/rss/news-atom.xml" ];
|
||||
# we don't use imports because the expressions do not merge in
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
consider_home = 300; # 5 minutes timeout
|
||||
new_device_defaults = {
|
||||
track_new_devices = true;
|
||||
hide_if_away = false;
|
||||
};
|
||||
}
|
||||
];
|
||||
|
|
|
@ -20,10 +20,13 @@
|
|||
units = "si" ;
|
||||
scan_interval = "00:30:00";
|
||||
}
|
||||
{ platform = "luftdaten";
|
||||
name = "Ditzingen";
|
||||
sensorid = "5341";
|
||||
monitored_conditions = [ "P1" "P2" ];
|
||||
}
|
||||
];
|
||||
services.home-assistant.config.luftdaten = {
|
||||
sensor_id = "26237";
|
||||
show_on_map = true;
|
||||
sensors.monitored_conditions = [
|
||||
"P1"
|
||||
"P2"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ let
|
|||
cgit.desc = "Build new Stockholm hosts";
|
||||
};
|
||||
cac-api = { };
|
||||
oof = { };
|
||||
euer_blog = { };
|
||||
ampel = { };
|
||||
europastats = { };
|
||||
|
|
|
@ -14,11 +14,10 @@ in {
|
|||
imports = [
|
||||
./nginx.nix
|
||||
./mqtt.nix
|
||||
./zigbee2mqtt
|
||||
./signal-rest
|
||||
|
||||
# hass config
|
||||
./zigbee2mqtt/hass.nix
|
||||
../zigbee2mqtt/hass.nix
|
||||
# ./multi/flurlicht.nix
|
||||
./multi/kurzzeitwecker.nix
|
||||
./multi/the_playlist.nix
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
port = "14002";
|
||||
internal-ip = "192.168.1.11";
|
||||
in
|
||||
{
|
||||
networking.firewall.allowedTCPPorts = [ 28967 ];
|
||||
virtualisation.oci-containers.containers.storj-storagenode = {
|
||||
|
@ -6,7 +10,7 @@
|
|||
ports = [
|
||||
# TODO: omo ip
|
||||
"0.0.0.0:28967:28967"
|
||||
"127.0.0.1:14002:14002"
|
||||
"127.0.0.1:${port}:${port}"
|
||||
];
|
||||
environment = {
|
||||
# SETUP = "true"; # must be run only once ...
|
||||
|
@ -24,4 +28,18 @@
|
|||
StandardOutput = lib.mkForce "journal";
|
||||
StandardError = lib.mkForce "journal";
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."storj" = {
|
||||
serverAliases = [
|
||||
"storj.lan"
|
||||
];
|
||||
|
||||
locations."/".proxyPass = "http://localhost:${port}";
|
||||
locations."/".proxyWebsockets = true;
|
||||
extraConfig = ''
|
||||
if ( $server_addr != "${internal-ip}" ) {
|
||||
return 403;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -86,6 +86,7 @@ in {
|
|||
# usage: $(nix-build --no-out-link --argstr name HOSTNAME -A deploy)
|
||||
deploy = pkgs.krops.writeDeploy "${name}-deploy" {
|
||||
source = source { test = false; };
|
||||
fast = true;
|
||||
target = "root@${target}/var/src";
|
||||
buildTarget = if target == buildTarget then "root@${target}/var/src" else "root@${buildTarget}/tmp/";
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue