Merge remote-tracking branch 'gum/master'

This commit is contained in:
lassulus 2021-03-19 09:19:25 +01:00
commit 86b458d5d3
13 changed files with 113 additions and 194 deletions

View File

@ -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;

View File

@ -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>

View File

@ -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";
};
}
];
}
];
};
}

View File

@ -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

View File

@ -12,7 +12,6 @@
consider_home = 300; # 5 minutes timeout
new_device_defaults = {
track_new_devices = true;
hide_if_away = false;
};
}
];

View File

@ -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"
];
};
}

View File

@ -36,6 +36,7 @@ let
cgit.desc = "Build new Stockholm hosts";
};
cac-api = { };
oof = { };
euer_blog = { };
ampel = { };
europastats = { };

View File

@ -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

View File

@ -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;
}
'';
};
}

View File

@ -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/";
};