From 2563c59e73dfe9df7b98d5b184785f3a5936ca17 Mon Sep 17 00:00:00 2001 From: makefu Date: Tue, 3 Mar 2020 21:12:51 +0100 Subject: ma ham: use home-assistant from unstable, enable androidtv support --- makefu/2configs/ham/androidtv/adbshell.nix | 38 +++++++++++++ makefu/2configs/ham/androidtv/default.nix | 30 ++++++++++ makefu/2configs/ham/androidtv/purepythonadb.nix | 21 +++++++ makefu/2configs/ham/automation/firetv_restart.nix | 26 +++++++++ makefu/2configs/ham/default.nix | 67 +++++++---------------- 5 files changed, 134 insertions(+), 48 deletions(-) create mode 100644 makefu/2configs/ham/androidtv/adbshell.nix create mode 100644 makefu/2configs/ham/androidtv/default.nix create mode 100644 makefu/2configs/ham/androidtv/purepythonadb.nix create mode 100644 makefu/2configs/ham/automation/firetv_restart.nix diff --git a/makefu/2configs/ham/androidtv/adbshell.nix b/makefu/2configs/ham/androidtv/adbshell.nix new file mode 100644 index 00000000..f5b96c85 --- /dev/null +++ b/makefu/2configs/ham/androidtv/adbshell.nix @@ -0,0 +1,38 @@ +{ lib +, buildPythonPackage +, fetchPypi +, cryptography +, pyasn1 +, rsa +, pycryptodome +}: + +buildPythonPackage rec { + pname = "adb_shell"; + version = "0.0.8"; + + src = fetchPypi { + inherit pname version; + sha256 = "01f9jinhfyjldg9793gz2i7gcd9xyx0a62r7a5ijssklcnn2rwnm"; + }; + + propagatedBuildInputs = [ + cryptography + pyasn1 + rsa + ]; + + # tests are not part of pypi package + doCheck = false; + + checkInputs = [ + pycryptodome + ]; + + meta = with lib; { + description = "A Python implementation of ADB with shell and FileSync functionality"; + homepage = https://github.com/JeffLIrion/adb_shell/; + license = licenses.mit; + # maintainers = [ maintainers. ]; + }; +} diff --git a/makefu/2configs/ham/androidtv/default.nix b/makefu/2configs/ham/androidtv/default.nix new file mode 100644 index 00000000..8f3bdc1f --- /dev/null +++ b/makefu/2configs/ham/androidtv/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, callPackage +, fetchPypi +}: + +buildPythonPackage rec { + pname = "androidtv"; + version = "0.0.34"; + + src = fetchPypi { + inherit pname version; + sha256 = "13078i2a9hglpv4ldycph5n5485np21vs6z2qn830hybmx8kfxsw"; + }; + + propagatedBuildInputs = [ + (callPackage ./adbshell.nix {}) + (callPackage ./purepythonadb.nix {}) + ]; + + # tests are not packaged in pypi release + doCheck = false; + + meta = with lib; { + description = "Communicate with an Android TV or Fire TV device via ADB over a network"; + homepage = https://github.com/JeffLIrion/python-androidtv/; + license = licenses.mit; + # maintainers = [ maintainers. ]; + }; +} diff --git a/makefu/2configs/ham/androidtv/purepythonadb.nix b/makefu/2configs/ham/androidtv/purepythonadb.nix new file mode 100644 index 00000000..d4e763b7 --- /dev/null +++ b/makefu/2configs/ham/androidtv/purepythonadb.nix @@ -0,0 +1,21 @@ +{ lib +, buildPythonPackage +, fetchPypi +}: + +buildPythonPackage rec { + pname = "pure-python-adb"; + version = "0.2.3.dev0"; + + src = fetchPypi { + inherit pname version; + sha256 = "88e5a4578435197799aa368fb1a5d87fe43e02a888cb7e85c2ad66173b383c89"; + }; + + meta = with lib; { + description = "Pure python implementation of the adb client"; + homepage = https://github.com/Swind/pure-python-adb; + license = licenses.mit; + # maintainers = [ maintainers. ]; + }; +} \ No newline at end of file diff --git a/makefu/2configs/ham/automation/firetv_restart.nix b/makefu/2configs/ham/automation/firetv_restart.nix new file mode 100644 index 00000000..779092c7 --- /dev/null +++ b/makefu/2configs/ham/automation/firetv_restart.nix @@ -0,0 +1,26 @@ +[ + { + alias = "Nightly reboot of firetv"; + trigger = { + platform = "time"; + at = "03:00:00"; + }; + action = [ + { + service = "androidtv.adb_command"; + data = { + entity_id = "media_player.firetv_stick"; + command = "reboot"; + }; + } + { delay.minutes = 2; } + { + service = "media_player.select_source"; + data = { + entity_id = "media_player.firetv_stick"; + source = "com.amazon.bueller.music"; + }; + } + ]; + } +] diff --git a/makefu/2configs/ham/default.nix b/makefu/2configs/ham/default.nix index ae0c46ba..3fbe1187 100644 --- a/makefu/2configs/ham/default.nix +++ b/makefu/2configs/ham/default.nix @@ -4,13 +4,14 @@ ## wake-on-lan server ## let + upkgs = (import {}).pkgs; hlib = (import ./lib); prefix = hlib.prefix; tasmota = hlib.tasmota; firetv_stick = "192.168.1.24"; hassdir = "/var/lib/hass"; zigbee = import ./multi/zigbee2mqtt.nix; - flurlicht = import ./multi/flurlicht.nix; + #flurlicht = import ./multi/flurlicht.nix; kurzzeitwecker = import ./multi/kurzzeitwecker.nix; # switch # automation @@ -24,6 +25,13 @@ in { ]; services.home-assistant = { + package = (upkgs.home-assistant.overrideAttrs (old: { + })).override { + extraPackages = ps: with ps; [ + python-forecastio jsonrpc-async jsonrpc-websocket mpd2 pkgs.picotts + (ps.callPackage ./androidtv {}) + ]; + }; config = { input_select = zigbee.input_select; # dict timer = zigbee.timer // kurzzeitwecker.timer; # dict @@ -71,7 +79,7 @@ in { sun.elevation = 247; recorder = {}; media_player = [ - { platform = "kodi"; + { platform = "FireTV Stick kodi"; host = firetv_stick; } { platform = "androidtv"; @@ -79,10 +87,13 @@ in { device_class = "firetv"; # adb_server_ip = firetv_stick; host = firetv_stick; + port = 5555; } ]; mqtt = { broker = "localhost"; + discovery = true; #enable esphome discovery + discovery_prefix = "homeassistant"; port = 1883; client_id = "home-assistant"; username = "hass"; @@ -107,8 +118,8 @@ in { sensor_id = 679; sensors.monitored_conditions = [ "P1" "P2" ]; }; - binary_sensor = - flurlicht.binary_sensor; + #binary_sensor = + # flurlicht.binary_sensor; sensor = [ { platform = "speedtest"; monitored_conditions = [ "ping" "download" "upload" ]; @@ -118,53 +129,13 @@ in { ++ ((import ./sensor/outside.nix) {inherit lib;}) ++ zigbee.sensor ; frontend = { }; - light = flurlicht.light; - group = - { default_view = - { view = "yes"; - entities = [ - "group.flur" - "group.schlafzimmer" - "group.draussen" - "group.wohnzimmer" - "group.arbeitszimmer" - ]; - }; - flur = [ - "light.flurlicht" - "binary_sensor.flur_bewegung" - "automation.dunkel_bei_sonnenuntergang" - "automation.hell_bei_sonnenaufgang" - ]; - wohnzimmer = [ - "media_player.kodi" - "media_player.firetv_stick" - ]; - draussen = [ - "sensor.dark_sky_temperature" - "sensor.dark_sky_hourly_summary" - "sensor.dark_sky_humidity" - "sensor.dark_sky_pressure" - "sensor.muehlhausen_pm10" - "sensor.muehlhausen_pm25" - ]; - schlafzimmer = [ - "sensor.schlafzimmer_temperatur" - "sensor.schlafzimmer_luftdruck" - "sensor.schlafzimmer_luftfeuchtigkeit" - "switch.lichterkette_schlafzimmer" - ]; - arbeitszimmer = [ - "switch.strom_staubsauger" - "sensor.arbeitszimmer_temperatur" - "sensor.arbeitszimmer_luftfeuchtigkeit" - ]; - }; + # light = flurlicht.light; http = { }; switch = []; automation = - flurlicht.automation - ++ kurzzeitwecker.automation + (import ./automation/firetv_restart.nix) + kurzzeitwecker.automation + #++ flurlicht.automation ++ zigbee.automation; script = kurzzeitwecker.script; # dict }; -- cgit v1.2.3