diff options
Diffstat (limited to 'makefu')
7 files changed, 516 insertions, 181 deletions
diff --git a/makefu/2configs/bureautomation/automation/10h_timer.nix b/makefu/2configs/bureautomation/automation/10h_timer.nix deleted file mode 100644 index dd747114e..000000000 --- a/makefu/2configs/bureautomation/automation/10h_timer.nix +++ /dev/null @@ -1,154 +0,0 @@ -[ -  { alias = "start Felix 10h"; -    trigger = { -      platform = "state"; -      entity_id = [ "device_tracker.felix_phone" "device_tracker.felix_laptop" ]; -      from =  "not_home"; -      to = "home"; -    }; -    condition = { -      condition = "and"; -      conditions = [ -        { -          condition = "state"; -          entity_id = "timer.felix_10h"; -          state =  "idle"; -        } -        { -          condition = "time"; -          after   = "06:00:00"; -          before  = "12:00:00"; -        } -      ]; -    }; -    action = [ -      { service = "timer.start"; -        entity_id =  [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ] ; -      } -      { service = "homeassistant.turn_on"; -        entity_id =  [ -          "script.buzz_red_led_fast" -          "script.blitz_10s" -        ]; -      } -      { service = "light.turn_on"; -      data = { -          effect = "2"; -          entity_id =  [ "light.status_felix" ]; -        }; -      } -    ]; -  } - -  { alias = "Disable Felix timer at button press"; -    trigger = { -      platform = "state"; -      entity_id = "binary_sensor.redbutton"; -      to = "on"; -    }; -    condition = { -      condition = "and"; -      conditions = [ -        { -          condition = "state"; -          entity_id = "timer.felix_10h"; -          state =  "active"; -        } -        { -          condition = "time"; -          after = "12:00:00"; -          before  = "22:00:00"; -        } -      ]; -    }; -    action = -    [ -      { -        service = "timer.cancel"; -        entity_id =  [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ]; -      } -      { -        service = "homeassistant.turn_on"; -        entity_id =  [ "script.buzz_red_led_fast"  ]; -      } -      { -        service = "homeassistant.turn_off"; -        entity_id =  [ "light.status_felix"  ]; -      } -    ]; -  } - -  { -    alias = "Genug gearbeitet Felix"; -    trigger = -    { -      platform = "event"; -      event_type = "timer.finished"; -      event_data.entity_id = "timer.felix_7h"; -    }; -    action = -    [ -      { service = "light.turn_on"; -        data = { -          rgb_color= [0 255 0]; -          # effect = "0"; -          entity_id =  [ "light.status_felix" ]; -        }; -      } -    ]; -  } - -  { -    alias = "nun aber nach hause"; -    trigger = -    { -      platform = "event"; -      event_type = "timer.finished"; -      event_data.entity_id = "timer.felix_8_30h"; -    }; -    action = -    [ -      { service = "light.turn_on"; -        data = { -          rgb_color= [255 255 0]; -          # effect = "0"; -          entity_id =  [ "light.status_felix" ]; -        }; -      } -    ]; -  } - -  { -    alias = "Zu lange Felix!"; -    trigger = -    { -      platform = "event"; -      event_type = "timer.finished"; -      event_data.entity_id = "timer.felix_10h"; -    }; -    action = -    [ -      { -        service = "notify.telegrambot"; -        data = { -          title = "Zu lange Felix!"; -          message = "Du bist schon 10 Stunden auf Arbeit, geh jetzt gefälligst nach Hause!"; -        }; -      } -      { -        service = "homeassistant.turn_on"; -        entity_id =  [ -          "script.buzz_red_led" -          "script.blitz_10s" -        ]; -      } -      { service = "light.turn_on"; -        data = { -          rgb_color= [255 0 0]; -          effect = "0"; -          entity_id =  [ "light.status_felix" ]; -        }; -      } -    ]; -  } -] diff --git a/makefu/2configs/bureautomation/automation/bureau-shutdown.nix b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix index d54d9762a..3fa23a837 100644 --- a/makefu/2configs/bureautomation/automation/bureau-shutdown.nix +++ b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix @@ -25,7 +25,7 @@        }        {          service = "tts.google_say"; -        entity_id =  "media_player.kodi"; +        entity_id =  "media_player.mpd";          data = {            message = "Willkommen in deinem Lieblingsbüro";            language = "de"; @@ -35,7 +35,7 @@          service = "notify.telegrambot";          data = {            title = "Bureau Startup"; -          message = "Willkommen {{ trigger.platform }}"; +          message = "Das Büro wurde eröffnet";          };        }      ]; diff --git a/makefu/2configs/bureautomation/combination/10h_timers.nix b/makefu/2configs/bureautomation/combination/10h_timers.nix new file mode 100644 index 000000000..d398e8a34 --- /dev/null +++ b/makefu/2configs/bureautomation/combination/10h_timers.nix @@ -0,0 +1,383 @@ +{lib, ... }: +let +  persons = [ "frank"  "daniel" "thorsten" "carsten" "thierry" "ecki"  +  # "felix" # custom actions +  ]; +  random_zu_lange = name: ''{{ [ +    "Du musst jetzt endlich nach Hause gehen ${name}!", +    "10 Stunden sind rum, bald schenkst du den Franzosen deine Lebenszeit", +    "Nur eine Minute über 10 Stunden kann zu einer Stunde Arbeit für Thorsten werden, ${name}.", +    "In 10 Minuten kommt dich der Security Mann holen, ${name}", +      "Zu lange, ${name}!" ] | random }}'' ; + + +  random_announce = name: ''{{ [ +    "Guten Tag ${name}!", +    "${name} is in da House", +    "Ahoi ${name}", +    "Moinsen ${name}", +    "Moin Moin ${name}", +    "Palim, Palim ${name}", +    "Vorwärts Genosse ${name}", +    "Gemeinsame Grüße, Genosse ${name}", +    "Sozialistische Grüße, Genosse ${name}", +    "Konzentrierte Grüße, Genosse ${name}", +    "Ach, der ${name} ist auch wieder da...", +    "Nicht ${name} schon wieder", +    "Tri tra tralala, der ${name} ist wieder da.", +    "Na sieh mal einer an, ${name} hat es auch her geschafft", +    "Wer ist im Büro eingetroffen? ${name} ist es!", +    "Willkommen in deinem Lieblingsbüro, ${name}.", +    "Klopf, Klopf, wer ist da? ${name} ist da!", +    "Messer, Gabel, Schere, Licht sind für kleinen ${name} nicht.", +    "Ich kenne ein Geheimnis, ${name} ist abgekommen", +    "Wir sind ${name}. Sie werden assimiliert werden", +    "Achtung, es erfolgt eine Durchsage. ${name} ist eingetroffen", +    "Die Scanner haben eine dem System bekannte Lebensform mit dem Namen ${name} detektiert", +    "Das Büro sieht dich, ${name}", +    "Im Kalender von ${name} sind heute acht Meetings eingeplant, von denen zwei bereits verpasst wurden", +    "Das Postfach von ${name} beinhaltet einhundertachtundzwanzig ungelesene E-Mails.", +    "Nachricht von Serge: ${name}, bitte melden Sie sich Umgehend bei mir im Büro!", +    "Luftqualität hat sich durch das Eintreffen von ${name} um zweihunder Punkte verschlechtert, bitte alle Fenster öffnen.", +    "${name} arbeitet gern für seinen Konzern", +    "${name} ist nur froh im Großraumbüro", +    "Für ${name} ist die schönste Zeit ... die Arbeit", +    "Ein Fleißbienchen für ${name} zum rechtzeitigen Erscheinen im Büro", +    "${name} ist heute wohl doch nicht im Office Home", +    "${name} ist bereit für einen Tag voller Meetings", +    "Trotz schwerer Männergrippe ist ${name} heute im Büro erschienen.", +    "${name} kenne keine Parteien mehr, ${name} kenne nur noch Arbeitsplätze", +    "${name}, Frage nicht, was dein Arbeitsplatz für dich tun kann. Frage, was du für deinen Arbeitsplatz tun kannst", +    "${name} läuft bis in den Jemen - für sein Unternehmen. ${name} schwimmt bis nach Birma - für meine Firma", +    "Der Cyberian ${name} ist gekommen um die Bahnwelt vor Cyber-Angriffen zu schützen", +    "Alles paletto im Ghetto, ${name}?", +    "Hach, ${name}, wenn du hier rein kommst fühlt es sich gleich wieder an wie Montag.", +    "Oh nein, nicht schon wieder ${name}", +    "Wer wohnt in der Ananas ganz tief im Meer? ${name} Schwammkopf!", +    "Arbeit ist Freizeit! Wachstum ist Fortschritt! Sicherheit ist Freiheit!", +    "Willkommen ${name}"] | random }}'' ; +  patterns = [ +    [1000 500 250] # TODO: maybe even play a short audio announcement? +    [150 150 150] +    [255 255] +    [500 500 100] +    [100 1000 100] +    # [125 250 500] +  ]; +  tmr_10h = name: { +    "${name}_10h" = { +      name = "${name} 10h Timer"; +      duration = "10:00:00"; +    }; +  }; +  multi_flash = { entity, delays ? [ 500 ], alias ?  "${entity}_multi_flash_${toString (lib.length delays)}" }: +  { +    inherit alias; +    sequence = lib.flatten (builtins.map (delay: [ +      { service = "homeassistant.turn_on"; +        data.entity_id = entity; +      } +      { delay.milliseconds = delay; } +      { service = "homeassistant.turn_off"; +        data.entity_id = entity; +      } +      { delay.milliseconds = delay; } +    ] +     ) delays); +   }; + +  buzz_user = name: delays: { "buzz_${name}" = (multi_flash { +      entity = "light.redbutton_buzzer"; +      inherit delays; +      alias = "Red Button Buzz ${name}"; +    }); +  }; + +  zu_lange_user = name: +  { "announce_${name}" = { +      alias = "Random Zu Lange ${name}"; +      sequence = [ +        { service = "media_player.play_media"; +          data = { +            entity_id = "media_player.mpd"; +            media_content_type = "playlist"; +            media_content_id = "ansage"; +          }; +        } +        { delay.seconds = 5; } +        { service = "tts.google_say"; +          entity_id =  "media_player.mpd"; +          data_template = { +            message = random_zu_lange name; +            language = "de"; +          }; +        } +      ]; +    }; +  }; +  announce_user = name: +  { "announce_${name}" = { +      alias = "Random Announce ${name}"; +      sequence = [ +        { delay.seconds = 10; } +        { service = "media_player.play_media"; +          data = { +            entity_id = "media_player.mpd"; +            media_content_type = "playlist"; +            media_content_id = "ansage"; +          }; +        } +        { delay.seconds = 5; } +        { service = "tts.google_say"; +          entity_id =  "media_player.mpd"; +          data_template = { +            message = random_announce name; +            language = "de"; +          }; +        } +      ]; +    }; +  }; +  automation_10h = name: [ +    { alias = "start ${name} 10h"; +      trigger = { +        platform = "state"; +        # TODO: ecki +        entity_id = [ "device_tracker.${name}_phone"]; +        from =  "not_home"; +        to = "home"; +      }; +      condition = { +        condition = "and"; +        conditions = [ +          { +            condition = "state"; +            entity_id = "timer.${name}_10h"; +            state =  "idle"; +          } +          { +            condition = "time"; +            after   = "06:00:00"; +            before  = "12:00:00"; +          } +        ]; +      }; +      action = [ +        { service = "timer.start"; +          entity_id =  [ "timer.${name}_10h" ] ; +        } +        { service = "homeassistant.turn_on"; +          entity_id =  [ +            # "script.buzz_${name}" +            "script.blitz_10s" +            "script.announce_${name}" +          ]; +        } +      ]; +    } + +    { +      alias = "Zu lange ${name}!"; +      trigger = +      { +        platform = "event"; +        event_type = "timer.finished"; +        event_data.entity_id = "timer.${name}_10h"; +      }; +      action = +      [ +        { service = "homeassistant.turn_on"; +          entity_id =  [ +            "script.blitz_10s" +            "script.zu_lange_${name}" +          ]; +        } +      ]; +    } +  ]; +in +{ +  timer =lib.fold lib.recursiveUpdate {} +    ([ +      (tmr_10h "felix")  +    { felix_8_30h = { +        name = "Felix 8_30h Timer"; +        duration = "08:30:00"; +      }; +      felix_7h = { +        name = "Felix 7h Timer"; +        duration = "07:00:00"; +      }; +    } +    ] ++  (map tmr_10h persons)); +  automation = lib.flatten (map automation_10h persons) ++ +  [ +  { alias = "start Felix 10h"; +    trigger = { +      platform = "state"; +      entity_id = [ "device_tracker.felix_phone" "device_tracker.felix_laptop" ]; +      from =  "not_home"; +      to = "home"; +    }; +    condition = { +      condition = "and"; +      conditions = [ +        { +          condition = "state"; +          entity_id = "timer.felix_10h"; +          state =  "idle"; +        } +        { +          condition = "time"; +          after   = "06:00:00"; +          before  = "12:00:00"; +        } +      ]; +    }; +    action = [ +      { service = "timer.start"; +        entity_id =  [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ] ; +      } +      { service = "homeassistant.turn_on"; +        entity_id =  [ +          # "script.buzz_felix" +          "script.blitz_10s" +        ]; +      } +      { +        service = "tts.google_say"; +        entity_id =  "media_player.mpd"; +        data_template = { +          message = "Willkommen, Felix!"; +          language = "de"; +        }; +      } +      { service = "light.turn_on"; +      data = { +          effect = "2"; +          entity_id =  [ "light.status_felix" ]; +        }; +      } +    ]; +  } + +  { alias = "Disable Felix timer at button press"; +    trigger = { +      platform = "state"; +      entity_id = "binary_sensor.redbutton"; +      to = "on"; +    }; +    condition = { +      condition = "and"; +      conditions = [ +        { +          condition = "state"; +          entity_id = "timer.felix_10h"; +          state =  "active"; +        } +        { +          condition = "time"; +          after = "12:00:00"; +          before  = "22:00:00"; +        } +      ]; +    }; +    action = +    [ +      { +        service = "timer.cancel"; +        entity_id =  [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ]; +      } +      { +        service = "homeassistant.turn_on"; +        entity_id =  [ "script.buzz_red_led_fast"  ]; +      } +      { +        service = "homeassistant.turn_off"; +        entity_id =  [ "light.status_felix"  ]; +      } +    ]; +  } + +  { +    alias = "Genug gearbeitet Felix"; +    trigger = +    { +      platform = "event"; +      event_type = "timer.finished"; +      event_data.entity_id = "timer.felix_7h"; +    }; +    action = +    [ +      { service = "light.turn_on"; +        data = { +          rgb_color= [0 255 0]; +          # effect = "0"; +          entity_id =  [ "light.status_felix" ]; +        }; +      } +    ]; +  } + +  { +    alias = "nun aber nach hause"; +    trigger = +    { +      platform = "event"; +      event_type = "timer.finished"; +      event_data.entity_id = "timer.felix_8_30h"; +    }; +    action = +    [ +      { service = "light.turn_on"; +        data = { +          rgb_color= [255 255 0]; +          # effect = "0"; +          entity_id =  [ "light.status_felix" ]; +        }; +      } +    ]; +  } + +  { +    alias = "Zu lange Felix!"; +    trigger = +    { +      platform = "event"; +      event_type = "timer.finished"; +      event_data.entity_id = "timer.felix_10h"; +    }; +    action = +    [ +      { +        service = "notify.telegrambot"; +        data = { +          title = "Zu lange Felix!"; +          message = "Du bist schon 10 Stunden auf Arbeit, geh jetzt gefälligst nach Hause!"; +        }; +      } +      { +        service = "homeassistant.turn_on"; +        entity_id =  [ +          # "script.buzz_felix" +          "script.blitz_10s" +        ]; +      } +      { service = "light.turn_on"; +        data = { +          rgb_color= [255 0 0]; +          effect = "0"; +          entity_id =  [ "light.status_felix" ]; +        }; +      } +    ]; +  } +  ] +  ; +  script =  lib.fold lib.recursiveUpdate {} ( +    (map (ab: buzz_user ab.fst ab.snd) (lib.zipLists persons patterns)) ++ +    (map (p: announce_user p) persons) ++ +    (map (p: zu_lange_user p) persons) ++ +    [ (announce_user "felix" ) (buzz_user "felix" [125 250 500] ) ] +  ); +} diff --git a/makefu/2configs/bureautomation/combination/README.md b/makefu/2configs/bureautomation/combination/README.md new file mode 100644 index 000000000..baad87fda --- /dev/null +++ b/makefu/2configs/bureautomation/combination/README.md @@ -0,0 +1,3 @@ +# Combination Folder +files return a dictionary of different types used in home-assistant instead of +a single thing. diff --git a/makefu/2configs/bureautomation/combination/mittagessen.nix b/makefu/2configs/bureautomation/combination/mittagessen.nix new file mode 100644 index 000000000..3ec70998d --- /dev/null +++ b/makefu/2configs/bureautomation/combination/mittagessen.nix @@ -0,0 +1,89 @@ +{ lib, ... }: +let +  # TODO: remove redundant code (from multi_blink) via lib +  flash_entity = { entity, delay ? 500, count ? 4, alias ?  "${entity}_blink_${toString count}_${toString delay}" }: +  { +    inherit alias; +    sequence = lib.flatten (builtins.genList (i: [ +      { service = "homeassistant.turn_on"; +        data.entity_id = entity; +      } +      { delay.milliseconds = delay; } +      { service = "homeassistant.turn_off"; +        data.entity_id = entity; +      } +      { delay.milliseconds = delay; } +    ] +     ) count); +   }; +   # TODO: use influxdb and check if pommes +   random_mittagessen = '' {{ [ +     "Es ist 12 uhr 30. Der Aramark Gourmettempel hat, wie jeden Tag, wieder die feinsten Köstlichkeiten für euch Vorbereitet", +     "Heute bei Aramark: Rezepte aus Ländern, von denen Ihr noch nie gehört habt, Deutsch zubereitet", +     "Heute bei Aramark im Angebot: Scheiss mit Reis oder Reste von Freitag", +     "MHHHH es ist wieder mal so weit, lecker Bayerisch Kraut mit asiatischen Nudeln", +     "Es ist 12 Uhr 30 und Heute gibt es Pommes - vielleicht", +     "Heute gibt es Pommes - leider nicht einzeln zu verkaufen, da die Schälchen alle sind", +     "Heute gibt es Pommes - verarscht! Natürlich gibt es nur salzlosen Reis, oder salzlose Nudeln.", +     "Heute auf dem Speiseplan: Sushi vom Vortag", +     "Aramark Kantinenessen: Der Hunger treibt es rein, der Geiz hält es drin.", +     "Das Essen in der Snackeria sieht heute wie die bessere Alternative aus", +     "Heute ist wohl wieder ein Beilagen-Tag", +     "Lunch time! Good luck, you will need it!", +     "Heute vielleicht lieber doch nur einen Salat?", +     "Im Büro ist es eh gerade viel zu warm, also ab zur Kantine", +     "Im Büro ist es eh gerade viel zu kalt, also ab zur Kantine", +     "Heute scheint die Auswahl wieder sehr schwierig zu sein. Vielleicht doch lieber ein Brötchen mit Fleischkäse vom Bäcker beim Baumarkt?", +     "Wer hat hier schon wieder ein Meeting auf 12 Uhr gelegt? Skandal!", +     "Jetzt nur noch kurz die Mail fertig schreiben und schon kann es los gehen.", +     "Es ist 13 Uhr und die Mittagspause ist bald vorbei .... Kleiner Scherz, es ist erst 12:30, aber Ihr hättet auch nicht wirklich etwas verpasst.", +     "Hallo, es ist nun 12 Uhr 30! Dies entspricht der Essenszeit aller Büroinsassen. Bitte begebt euch zur Aramark Essensausgabe um euren menschlichen Bedürfnissen nachzukommen."] | random }}''; +in { +  automation = [ +    { alias = "Mittagessen"; +      trigger = { +        platform = "time"; +        at = "12:30:00"; +      }; +      action = [ +      { service = "homeassistant.turn_on"; +          entity_id =  [ +            "script.mittagessen_announce" +            "script.blitz_10s" +            "script.mittagessenlicht" +          ]; +        } +      ]; +    } +  ]; +  script = { +    mittagessenlicht = (flash_entity { +      entity = "switch.bauarbeiterlampe"; +      alias = "Bauarbeiterlampe Mittagessenlicht"; +      delay = 1000; +      count = 5; +    }); +    mittagessen_announce = { +      alias = "Random Mittagessen announce"; +      sequence = [ +        { +          service = "media_player.play_media"; +          data = { +            entity_id = "media_player.mpd"; +            media_content_type = "playlist"; +            media_content_id = "ansage"; +          }; +        } +        { delay.seconds = 5; } +        { +          service = "tts.google_say"; +          entity_id =  "media_player.mpd"; +          data_template = { +            message = random_mittagessen; +            language = "de"; +          }; +        } +      ]; +    }; +  }; +} diff --git a/makefu/2configs/bureautomation/hass.nix b/makefu/2configs/bureautomation/hass.nix index ed9cb0905..05b98243d 100644 --- a/makefu/2configs/bureautomation/hass.nix +++ b/makefu/2configs/bureautomation/hass.nix @@ -1,7 +1,8 @@  { config, pkgs, lib, ... }:  let    kodi-host = "192.168.8.11"; - +  ten_hours = import ./combination/10h_timers.nix { inherit lib; }; # provides: timer automation script +  mittagessen = import ./combination/mittagessen.nix { inherit lib; }; # provides: automation script  in {    networking.firewall.allowedTCPPorts = [ 8123 ];    state = [ "/var/lib/hass/known_devices.yaml" ]; @@ -22,7 +23,7 @@ in {      })).override {        extraPackages = ps: with ps; [          pkgs.pico2wave -        python-forecastio jsonrpc-async jsonrpc-websocket +        python-forecastio jsonrpc-async jsonrpc-websocket mpd2          (callPackage ./gtts-token.nix { })        ];      }; @@ -42,6 +43,14 @@ in {            }          ];        }; +      # https://www.home-assistant.io/components/influxdb/ +      influxdb = { +        database = "hass"; +        tags = { +          instance = "wbob"; +          source = "hass"; +        }; +      };        mqtt = {          broker = "localhost";          port = 1883; @@ -62,23 +71,10 @@ in {          };        };        switch = (import ./switch/tasmota_switch.nix) ++ -               (import ./switch/rfbridge.nix); +              (import ./switch/rfbridge.nix);        light =  (import ./light/statuslight.nix) ++ -               (import ./light/buzzer.nix); -      timer = { -        felix_10h = { -          name = "Felix 10h Timer"; -          duration = "10:00:00"; -        }; -        felix_8_30h = { -          name = "Felix 8_30h Timer"; -          duration = "08:30:00"; -        }; -        felix_7h = { -          name = "Felix 7h Timer"; -          duration = "07:00:00"; -        }; -      }; +              (import ./light/buzzer.nix); +      timer = ten_hours.timer;        notify = [          {            platform = "kodi"; @@ -97,8 +93,15 @@ in {          { platform = "kodi";            host = kodi-host;          } +        { platform = "mpd"; +          host = "127.0.0.1"; +        } +      ]; +      script = lib.fold lib.recursiveUpdate {} [ +        ((import ./script/multi_blink.nix) {inherit lib;}) +        ten_hours.script +        mittagessen.script        ]; -      script = (import ./script/multi_blink.nix) {inherit lib;};        binary_sensor =          (import ./binary_sensor/buttons.nix) ++          (import ./binary_sensor/motion.nix); @@ -134,7 +137,7 @@ in {        logbook = {};        tts = [          { platform = "google"; -           language = "de"; +          language = "de";          }          { platform = "voicerss";            api_key = builtins.readFile <secrets/hass/voicerss.apikey>; @@ -162,8 +165,8 @@ in {                "group.switches"              ];            }; -        automation = [ -        ]; +        automation = []; +          switches = [            "switch.bauarbeiterlampe"            "switch.blitzdings" @@ -181,6 +184,7 @@ in {            "device_tracker.carsten_phone"            "device_tracker.thierry_phone"            "device_tracker.frank_phone" +          "device_tracker.anthony_phone"          #  "person.thorsten"          #  "person.felix"          #  "person.ecki" @@ -202,6 +206,7 @@ in {            "script.blitz_10s"            "script.buzz_red_led_fast"            "timer.felix_10h" +          "timer.frank_10h"            "sensor.easy2_dht22_humidity"            "sensor.easy2_dht22_temperature"            # "binary_sensor.redbutton" @@ -222,9 +227,10 @@ in {        # we don't use imports because the expressions do not merge in        # home-assistant        automation = (import ./automation/bureau-shutdown.nix) ++ -                   (import ./automation/nachtlicht.nix) ++ -                   (import ./automation/hass-restart.nix) ++ -                   (import ./automation/10h_timer.nix); +                  (import ./automation/nachtlicht.nix) ++ +                  (import ./automation/hass-restart.nix) ++ +                  ten_hours.automation ++ +                  mittagessen.automation;        device_tracker = (import ./device_tracker/openwrt.nix );      };    }; diff --git a/makefu/2configs/bureautomation/script/multi_blink.nix b/makefu/2configs/bureautomation/script/multi_blink.nix index bb28dd46f..5076111ac 100644 --- a/makefu/2configs/bureautomation/script/multi_blink.nix +++ b/makefu/2configs/bureautomation/script/multi_blink.nix @@ -1,5 +1,7 @@  {lib, ... }:  let +  # TODO: flash with different delay +    # let an entity blink for X times with  a delay of Y milliseconds    flash_entity = { entity, delay ? 500, count ? 4, alias ?  "${entity}_blink_${toString count}_${toString delay}" }:    { @@ -34,4 +36,10 @@ in {      count = 1;      alias = "blitz for 10 seconds";    }); +  schlechteluft = (flash_entity { +    entity = "switch.bauarbeiterlampe"; +    alias = "Schlechte Luft Lampe 5 secs"; +    delay = 5000; +    count = 1; +  });  }  | 
