From 6cb6b90f1a67f0513fa34c3db880684e6ae533a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Thu, 24 Jan 2019 15:22:28 +0100 Subject: [PATCH 1/4] home-assistant: 0.85.1 -> 0.86.4 --- .../home-assistant/component-packages.nix | 97 +++++++++++-------- pkgs/servers/home-assistant/default.nix | 16 +-- pkgs/servers/home-assistant/frontend.nix | 4 +- 3 files changed, 65 insertions(+), 52 deletions(-) diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 66dfc4069ed6..73595c1d67bc 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -2,7 +2,7 @@ # Do not edit! { - version = "0.85.1"; + version = "0.86.4"; components = { "abode" = ps: with ps; [ ]; "ads" = ps: with ps; [ ]; @@ -21,17 +21,16 @@ "alarm_control_panel.egardia" = ps: with ps; [ ]; "alarm_control_panel.elkm1" = ps: with ps; [ ]; "alarm_control_panel.envisalink" = ps: with ps; [ ]; + "alarm_control_panel.homekit_controller" = ps: with ps; [ ]; "alarm_control_panel.homematicip_cloud" = ps: with ps; [ ]; "alarm_control_panel.ialarm" = ps: with ps; [ ]; "alarm_control_panel.ifttt" = ps: with ps; [ aiohttp-cors pyfttt ]; "alarm_control_panel.lupusec" = ps: with ps; [ ]; "alarm_control_panel.manual" = ps: with ps; [ ]; "alarm_control_panel.manual_mqtt" = ps: with ps; [ paho-mqtt ]; - "alarm_control_panel.mqtt" = ps: with ps; [ paho-mqtt ]; "alarm_control_panel.ness_alarm" = ps: with ps; [ ]; "alarm_control_panel.nx584" = ps: with ps; [ ]; "alarm_control_panel.satel_integra" = ps: with ps; [ ]; - "alarm_control_panel.simplisafe" = ps: with ps; [ ]; "alarm_control_panel.spc" = ps: with ps; [ ]; "alarm_control_panel.totalconnect" = ps: with ps; [ ]; "alarm_control_panel.verisure" = ps: with ps; [ ]; @@ -71,6 +70,7 @@ "automation.sun" = ps: with ps; [ ]; "automation.template" = ps: with ps; [ ]; "automation.time" = ps: with ps; [ ]; + "automation.time_pattern" = ps: with ps; [ ]; "automation.webhook" = ps: with ps; [ aiohttp-cors ]; "automation.zone" = ps: with ps; [ ]; "axis" = ps: with ps; [ ]; @@ -92,7 +92,6 @@ "binary_sensor.bmw_connected_drive" = ps: with ps; [ ]; "binary_sensor.command_line" = ps: with ps; [ ]; "binary_sensor.concord232" = ps: with ps; [ ]; - "binary_sensor.deconz" = ps: with ps; [ ]; "binary_sensor.demo" = ps: with ps; [ ]; "binary_sensor.digital_ocean" = ps: with ps; [ digital-ocean ]; "binary_sensor.ecobee" = ps: with ps; [ ]; @@ -100,7 +99,6 @@ "binary_sensor.eight_sleep" = ps: with ps; [ ]; "binary_sensor.enocean" = ps: with ps; [ ]; "binary_sensor.envisalink" = ps: with ps; [ ]; - "binary_sensor.esphome" = ps: with ps; [ ]; "binary_sensor.ffmpeg_motion" = ps: with ps; [ ha-ffmpeg ]; "binary_sensor.ffmpeg_noise" = ps: with ps; [ ha-ffmpeg ]; "binary_sensor.fibaro" = ps: with ps; [ ]; @@ -117,12 +115,11 @@ "binary_sensor.iss" = ps: with ps; [ ]; "binary_sensor.isy994" = ps: with ps; [ ]; "binary_sensor.knx" = ps: with ps; [ ]; - "binary_sensor.konnected" = ps: with ps; [ aiohttp-cors netdisco ]; + "binary_sensor.konnected" = ps: with ps; [ aiohttp-cors ]; "binary_sensor.linode" = ps: with ps; [ linode-api ]; "binary_sensor.lupusec" = ps: with ps; [ ]; "binary_sensor.maxcube" = ps: with ps; [ ]; "binary_sensor.modbus" = ps: with ps; [ ]; - "binary_sensor.mqtt" = ps: with ps; [ paho-mqtt ]; "binary_sensor.mychevy" = ps: with ps; [ ]; "binary_sensor.mysensors" = ps: with ps; [ ]; "binary_sensor.mystrom" = ps: with ps; [ aiohttp-cors ]; @@ -132,14 +129,12 @@ "binary_sensor.nx584" = ps: with ps; [ ]; "binary_sensor.octoprint" = ps: with ps; [ ]; "binary_sensor.opentherm_gw" = ps: with ps; [ ]; - "binary_sensor.openuv" = ps: with ps; [ ]; "binary_sensor.pilight" = ps: with ps; [ ]; "binary_sensor.ping" = ps: with ps; [ ]; "binary_sensor.point" = ps: with ps; [ ]; "binary_sensor.qwikswitch" = ps: with ps; [ ]; "binary_sensor.rachio" = ps: with ps; [ ]; "binary_sensor.raincloud" = ps: with ps; [ ]; - "binary_sensor.rainmachine" = ps: with ps; [ ]; "binary_sensor.random" = ps: with ps; [ ]; "binary_sensor.raspihats" = ps: with ps; [ ]; "binary_sensor.rest" = ps: with ps; [ ]; @@ -174,7 +169,6 @@ "binary_sensor.wirelesstag" = ps: with ps; [ ]; "binary_sensor.workday" = ps: with ps; [ ]; "binary_sensor.xiaomi_aqara" = ps: with ps; [ ]; - "binary_sensor.zha" = ps: with ps; [ ]; "binary_sensor.zigbee" = ps: with ps; [ ]; "binary_sensor.zwave" = ps: with ps; [ ]; "blink" = ps: with ps; [ ]; @@ -204,7 +198,6 @@ "camera.local_file" = ps: with ps; [ ]; "camera.logi_circle" = ps: with ps; [ ]; "camera.mjpeg" = ps: with ps; [ ]; - "camera.mqtt" = ps: with ps; [ paho-mqtt ]; "camera.neato" = ps: with ps; [ pybotvac ]; "camera.nest" = ps: with ps; [ ]; "camera.netatmo" = ps: with ps; [ ]; @@ -247,7 +240,6 @@ "climate.melissa" = ps: with ps; [ ]; "climate.mill" = ps: with ps; [ ]; "climate.modbus" = ps: with ps; [ ]; - "climate.mqtt" = ps: with ps; [ paho-mqtt ]; "climate.mysensors" = ps: with ps; [ ]; "climate.nest" = ps: with ps; [ ]; "climate.netatmo" = ps: with ps; [ ]; @@ -301,20 +293,18 @@ "cover.aladdin_connect" = ps: with ps; [ ]; "cover.brunt" = ps: with ps; [ ]; "cover.command_line" = ps: with ps; [ ]; - "cover.deconz" = ps: with ps; [ ]; "cover.demo" = ps: with ps; [ ]; - "cover.esphome" = ps: with ps; [ ]; "cover.fibaro" = ps: with ps; [ ]; "cover.garadget" = ps: with ps; [ ]; "cover.gogogate2" = ps: with ps; [ ]; "cover.group" = ps: with ps; [ ]; + "cover.homekit_controller" = ps: with ps; [ ]; "cover.homematic" = ps: with ps; [ pyhomematic ]; "cover.insteon" = ps: with ps; [ ]; "cover.isy994" = ps: with ps; [ ]; "cover.knx" = ps: with ps; [ ]; "cover.lutron" = ps: with ps; [ ]; "cover.lutron_caseta" = ps: with ps; [ ]; - "cover.mqtt" = ps: with ps; [ paho-mqtt ]; "cover.myq" = ps: with ps; [ ]; "cover.mysensors" = ps: with ps; [ ]; "cover.opengarage" = ps: with ps; [ ]; @@ -337,9 +327,16 @@ "daikin.const" = ps: with ps; [ ]; "datadog" = ps: with ps; [ datadog ]; "deconz" = ps: with ps; [ ]; + "deconz.binary_sensor" = ps: with ps; [ ]; "deconz.config_flow" = ps: with ps; [ ]; "deconz.const" = ps: with ps; [ ]; + "deconz.cover" = ps: with ps; [ ]; + "deconz.deconz_device" = ps: with ps; [ ]; "deconz.gateway" = ps: with ps; [ ]; + "deconz.light" = ps: with ps; [ ]; + "deconz.scene" = ps: with ps; [ ]; + "deconz.sensor" = ps: with ps; [ ]; + "deconz.switch" = ps: with ps; [ ]; "demo" = ps: with ps; [ aiohttp-cors ]; "device_sun_light_trigger" = ps: with ps; [ ]; "device_tracker" = ps: with ps; [ ]; @@ -358,7 +355,6 @@ "device_tracker.demo" = ps: with ps; [ ]; "device_tracker.freebox" = ps: with ps; [ ]; "device_tracker.fritz" = ps: with ps; [ fritzconnection ]; - "device_tracker.geofency" = ps: with ps; [ aiohttp-cors ]; "device_tracker.google_maps" = ps: with ps; [ ]; "device_tracker.googlehome" = ps: with ps; [ ]; "device_tracker.gpslogger" = ps: with ps; [ aiohttp-cors ]; @@ -419,26 +415,33 @@ "emulated_hue" = ps: with ps; [ aiohttp-cors ]; "emulated_hue.hue_api" = ps: with ps; [ ]; "emulated_hue.upnp" = ps: with ps; [ ]; + "emulated_roku" = ps: with ps; [ ]; + "emulated_roku.binding" = ps: with ps; [ ]; + "emulated_roku.config_flow" = ps: with ps; [ ]; + "emulated_roku.const" = ps: with ps; [ ]; "enocean" = ps: with ps; [ ]; "envisalink" = ps: with ps; [ ]; "esphome" = ps: with ps; [ ]; + "esphome.binary_sensor" = ps: with ps; [ ]; "esphome.config_flow" = ps: with ps; [ ]; + "esphome.cover" = ps: with ps; [ ]; + "esphome.fan" = ps: with ps; [ ]; + "esphome.light" = ps: with ps; [ ]; + "esphome.sensor" = ps: with ps; [ ]; + "esphome.switch" = ps: with ps; [ ]; "eufy" = ps: with ps; [ ]; "evohome" = ps: with ps; [ ]; "fan" = ps: with ps; [ ]; "fan.comfoconnect" = ps: with ps; [ ]; "fan.demo" = ps: with ps; [ ]; "fan.dyson" = ps: with ps; [ ]; - "fan.esphome" = ps: with ps; [ ]; "fan.insteon" = ps: with ps; [ ]; "fan.isy994" = ps: with ps; [ ]; - "fan.mqtt" = ps: with ps; [ paho-mqtt ]; "fan.template" = ps: with ps; [ ]; "fan.tuya" = ps: with ps; [ ]; "fan.wemo" = ps: with ps; [ ]; "fan.wink" = ps: with ps; [ ]; "fan.xiaomi_miio" = ps: with ps; [ construct ]; - "fan.zha" = ps: with ps; [ ]; "fan.zwave" = ps: with ps; [ ]; "feedreader" = ps: with ps; [ feedparser ]; "ffmpeg" = ps: with ps; [ ha-ffmpeg ]; @@ -456,6 +459,7 @@ "geo_location.nsw_rural_fire_service_feed" = ps: with ps; [ ]; "geo_location.usgs_earthquakes_feed" = ps: with ps; [ ]; "geofency" = ps: with ps; [ aiohttp-cors ]; + "geofency.device_tracker" = ps: with ps; [ aiohttp-cors ]; "goalfeed" = ps: with ps; [ ]; "google" = ps: with ps; [ google_api_python_client httplib2 oauth2client ]; "google_assistant" = ps: with ps; [ aiohttp-cors ]; @@ -465,6 +469,7 @@ "google_assistant.smart_home" = ps: with ps; [ ]; "google_assistant.trait" = ps: with ps; [ ]; "google_domains" = ps: with ps; [ ]; + "gpslogger" = ps: with ps; [ aiohttp-cors ]; "graphite" = ps: with ps; [ ]; "greeneye_monitor" = ps: with ps; [ ]; "group" = ps: with ps; [ ]; @@ -512,6 +517,7 @@ "hue.config_flow" = ps: with ps; [ ]; "hue.const" = ps: with ps; [ ]; "hue.errors" = ps: with ps; [ ]; + "hue.light" = ps: with ps; [ aiohue ]; "hydrawise" = ps: with ps; [ ]; "idteck_prox" = ps: with ps; [ ]; "ifttt" = ps: with ps; [ aiohttp-cors pyfttt ]; @@ -550,7 +556,7 @@ "keyboard_remote" = ps: with ps; [ evdev ]; "kira" = ps: with ps; [ ]; "knx" = ps: with ps; [ ]; - "konnected" = ps: with ps; [ aiohttp-cors netdisco ]; + "konnected" = ps: with ps; [ aiohttp-cors ]; "lametric" = ps: with ps; [ ]; "lcn" = ps: with ps; [ ]; "lifx" = ps: with ps; [ ]; @@ -560,13 +566,11 @@ "light.avion" = ps: with ps; [ ]; "light.blinksticklight" = ps: with ps; [ BlinkStick ]; "light.blinkt" = ps: with ps; [ ]; - "light.deconz" = ps: with ps; [ ]; "light.decora" = ps: with ps; [ ]; "light.decora_wifi" = ps: with ps; [ ]; "light.demo" = ps: with ps; [ ]; "light.elkm1" = ps: with ps; [ ]; "light.enocean" = ps: with ps; [ ]; - "light.esphome" = ps: with ps; [ ]; "light.eufy" = ps: with ps; [ ]; "light.fibaro" = ps: with ps; [ ]; "light.flux_led" = ps: with ps; [ ]; @@ -578,7 +582,6 @@ "light.homematic" = ps: with ps; [ pyhomematic ]; "light.homematicip_cloud" = ps: with ps; [ ]; "light.homeworks" = ps: with ps; [ ]; - "light.hue" = ps: with ps; [ aiohue ]; "light.hyperion" = ps: with ps; [ ]; "light.iglo" = ps: with ps; [ ]; "light.ihc" = ps: with ps; [ defusedxml ]; @@ -595,7 +598,6 @@ "light.lutron_caseta" = ps: with ps; [ ]; "light.lw12wifi" = ps: with ps; [ ]; "light.mochad" = ps: with ps; [ ]; - "light.mqtt" = ps: with ps; [ paho-mqtt ]; "light.mysensors" = ps: with ps; [ ]; "light.mystrom" = ps: with ps; [ ]; "light.nanoleaf_aurora" = ps: with ps; [ nanoleaf ]; @@ -629,23 +631,23 @@ "light.yeelight" = ps: with ps; [ ]; "light.yeelightsunflower" = ps: with ps; [ ]; "light.zengge" = ps: with ps; [ ]; - "light.zha" = ps: with ps; [ ]; "light.zigbee" = ps: with ps; [ ]; "light.zwave" = ps: with ps; [ ]; "lightwave" = ps: with ps; [ ]; "linode" = ps: with ps; [ linode-api ]; "lirc" = ps: with ps; [ ]; "litejet" = ps: with ps; [ ]; + "locative" = ps: with ps; [ aiohttp-cors ]; "lock" = ps: with ps; [ ]; "lock.abode" = ps: with ps; [ ]; "lock.august" = ps: with ps; [ ]; "lock.bmw_connected_drive" = ps: with ps; [ ]; "lock.demo" = ps: with ps; [ ]; + "lock.homekit_controller" = ps: with ps; [ ]; "lock.homematic" = ps: with ps; [ pyhomematic ]; "lock.isy994" = ps: with ps; [ ]; "lock.kiwi" = ps: with ps; [ ]; "lock.lockitron" = ps: with ps; [ ]; - "lock.mqtt" = ps: with ps; [ paho-mqtt ]; "lock.nello" = ps: with ps; [ ]; "lock.nuki" = ps: with ps; [ ]; "lock.sesame" = ps: with ps; [ ]; @@ -673,6 +675,7 @@ "mailbox.asterisk_mbox" = ps: with ps; [ ]; "mailbox.demo" = ps: with ps; [ ]; "mailgun" = ps: with ps; [ aiohttp-cors ]; + "mailgun.notify" = ps: with ps; [ aiohttp-cors ]; "map" = ps: with ps; [ ]; "matrix" = ps: with ps; [ matrix-client ]; "maxcube" = ps: with ps; [ ]; @@ -713,7 +716,6 @@ "media_player.mpchc" = ps: with ps; [ ]; "media_player.mpd" = ps: with ps; [ mpd2 ]; "media_player.nad" = ps: with ps; [ ]; - "media_player.nadtcp" = ps: with ps; [ ]; "media_player.onkyo" = ps: with ps; [ onkyo-eiscp ]; "media_player.openhome" = ps: with ps; [ ]; "media_player.panasonic_bluray" = ps: with ps; [ ]; @@ -749,11 +751,22 @@ "mochad" = ps: with ps; [ ]; "modbus" = ps: with ps; [ ]; "mqtt" = ps: with ps; [ paho-mqtt ]; + "mqtt.alarm_control_panel" = ps: with ps; [ paho-mqtt ]; + "mqtt.binary_sensor" = ps: with ps; [ paho-mqtt ]; + "mqtt.camera" = ps: with ps; [ paho-mqtt ]; + "mqtt.climate" = ps: with ps; [ paho-mqtt ]; "mqtt.config_flow" = ps: with ps; [ ]; "mqtt.const" = ps: with ps; [ ]; + "mqtt.cover" = ps: with ps; [ paho-mqtt ]; "mqtt.discovery" = ps: with ps; [ ]; + "mqtt.fan" = ps: with ps; [ paho-mqtt ]; + "mqtt.light" = ps: with ps; [ paho-mqtt ]; + "mqtt.lock" = ps: with ps; [ paho-mqtt ]; + "mqtt.sensor" = ps: with ps; [ paho-mqtt ]; "mqtt.server" = ps: with ps; [ aiohttp-cors hbmqtt ]; "mqtt.subscription" = ps: with ps; [ ]; + "mqtt.switch" = ps: with ps; [ paho-mqtt ]; + "mqtt.vacuum" = ps: with ps; [ paho-mqtt ]; "mqtt_eventstream" = ps: with ps; [ paho-mqtt ]; "mqtt_statestream" = ps: with ps; [ paho-mqtt ]; "mychevy" = ps: with ps; [ ]; @@ -805,7 +818,6 @@ "notify.lametric" = ps: with ps; [ ]; "notify.lannouncer" = ps: with ps; [ ]; "notify.llamalab_automate" = ps: with ps; [ ]; - "notify.mailgun" = ps: with ps; [ aiohttp-cors ]; "notify.mastodon" = ps: with ps; [ ]; "notify.matrix" = ps: with ps; [ matrix-client ]; "notify.message_bird" = ps: with ps; [ ]; @@ -844,8 +856,10 @@ "onboarding.views" = ps: with ps; [ ]; "opentherm_gw" = ps: with ps; [ ]; "openuv" = ps: with ps; [ ]; + "openuv.binary_sensor" = ps: with ps; [ ]; "openuv.config_flow" = ps: with ps; [ ]; "openuv.const" = ps: with ps; [ ]; + "openuv.sensor" = ps: with ps; [ ]; "owntracks" = ps: with ps; [ aiohttp-cors libnacl ]; "owntracks.config_flow" = ps: with ps; [ ]; "panel_custom" = ps: with ps; [ aiohttp-cors ]; @@ -865,8 +879,11 @@ "rainbird" = ps: with ps; [ ]; "raincloud" = ps: with ps; [ ]; "rainmachine" = ps: with ps; [ ]; + "rainmachine.binary_sensor" = ps: with ps; [ ]; "rainmachine.config_flow" = ps: with ps; [ ]; "rainmachine.const" = ps: with ps; [ ]; + "rainmachine.sensor" = ps: with ps; [ ]; + "rainmachine.switch" = ps: with ps; [ ]; "raspihats" = ps: with ps; [ ]; "recorder" = ps: with ps; [ sqlalchemy ]; "recorder.const" = ps: with ps; [ ]; @@ -880,11 +897,13 @@ "remote.harmony" = ps: with ps; [ ]; "remote.itach" = ps: with ps; [ ]; "remote.kira" = ps: with ps; [ ]; + "remote.roku" = ps: with ps; [ ]; "remote.xiaomi_miio" = ps: with ps; [ construct ]; "rest_command" = ps: with ps; [ ]; "rflink" = ps: with ps; [ ]; "rfxtrx" = ps: with ps; [ ]; "ring" = ps: with ps; [ ]; + "roku" = ps: with ps; [ ]; "route53" = ps: with ps; [ boto3 ]; "rpi_gpio" = ps: with ps; [ ]; "rpi_pfio" = ps: with ps; [ ]; @@ -892,7 +911,6 @@ "sabnzbd" = ps: with ps; [ ]; "satel_integra" = ps: with ps; [ ]; "scene" = ps: with ps; [ ]; - "scene.deconz" = ps: with ps; [ ]; "scene.elkm1" = ps: with ps; [ ]; "scene.fibaro" = ps: with ps; [ ]; "scene.homeassistant" = ps: with ps; [ ]; @@ -956,7 +974,6 @@ "sensor.currencylayer" = ps: with ps; [ ]; "sensor.daikin" = ps: with ps; [ ]; "sensor.darksky" = ps: with ps; [ python-forecastio ]; - "sensor.deconz" = ps: with ps; [ ]; "sensor.deluge" = ps: with ps; [ deluge-client ]; "sensor.demo" = ps: with ps; [ ]; "sensor.deutsche_bahn" = ps: with ps; [ ]; @@ -985,7 +1002,6 @@ "sensor.entur_public_transport" = ps: with ps; [ ]; "sensor.envirophat" = ps: with ps; [ ]; "sensor.envisalink" = ps: with ps; [ ]; - "sensor.esphome" = ps: with ps; [ ]; "sensor.etherscan" = ps: with ps; [ ]; "sensor.fail2ban" = ps: with ps; [ ]; "sensor.fastdotcom" = ps: with ps; [ ]; @@ -1068,7 +1084,6 @@ "sensor.mold_indicator" = ps: with ps; [ ]; "sensor.moon" = ps: with ps; [ ]; "sensor.mopar" = ps: with ps; [ ]; - "sensor.mqtt" = ps: with ps; [ paho-mqtt ]; "sensor.mqtt_room" = ps: with ps; [ paho-mqtt ]; "sensor.mvglive" = ps: with ps; [ PyMVGLive ]; "sensor.mychevy" = ps: with ps; [ ]; @@ -1093,7 +1108,6 @@ "sensor.openhardwaremonitor" = ps: with ps; [ ]; "sensor.opensky" = ps: with ps; [ ]; "sensor.opentherm_gw" = ps: with ps; [ ]; - "sensor.openuv" = ps: with ps; [ ]; "sensor.openweathermap" = ps: with ps; [ pyowm ]; "sensor.otp" = ps: with ps; [ pyotp ]; "sensor.pi_hole" = ps: with ps; [ ]; @@ -1113,7 +1127,6 @@ "sensor.radarr" = ps: with ps; [ ]; "sensor.rainbird" = ps: with ps; [ ]; "sensor.raincloud" = ps: with ps; [ ]; - "sensor.rainmachine" = ps: with ps; [ ]; "sensor.random" = ps: with ps; [ ]; "sensor.rest" = ps: with ps; [ ]; "sensor.rflink" = ps: with ps; [ ]; @@ -1220,7 +1233,6 @@ "sensor.zabbix" = ps: with ps; [ ]; "sensor.zamg" = ps: with ps; [ ]; "sensor.zestimate" = ps: with ps; [ xmltodict ]; - "sensor.zha" = ps: with ps; [ ]; "sensor.zigbee" = ps: with ps; [ ]; "sensor.zoneminder" = ps: with ps; [ zm-py ]; "sensor.zwave" = ps: with ps; [ ]; @@ -1228,6 +1240,7 @@ "shiftr" = ps: with ps; [ paho-mqtt ]; "shopping_list" = ps: with ps; [ aiohttp-cors ]; "simplisafe" = ps: with ps; [ ]; + "simplisafe.alarm_control_panel" = ps: with ps; [ ]; "simplisafe.config_flow" = ps: with ps; [ ]; "simplisafe.const" = ps: with ps; [ ]; "sisyphus" = ps: with ps; [ ]; @@ -1258,7 +1271,6 @@ "switch.bbb_gpio" = ps: with ps; [ ]; "switch.broadlink" = ps: with ps; [ broadlink ]; "switch.command_line" = ps: with ps; [ ]; - "switch.deconz" = ps: with ps; [ ]; "switch.deluge" = ps: with ps; [ deluge-client ]; "switch.demo" = ps: with ps; [ ]; "switch.digital_ocean" = ps: with ps; [ digital-ocean ]; @@ -1269,7 +1281,6 @@ "switch.edp_redy" = ps: with ps; [ ]; "switch.elkm1" = ps: with ps; [ ]; "switch.enocean" = ps: with ps; [ ]; - "switch.esphome" = ps: with ps; [ ]; "switch.eufy" = ps: with ps; [ ]; "switch.fibaro" = ps: with ps; [ ]; "switch.flux" = ps: with ps; [ ]; @@ -1290,7 +1301,7 @@ "switch.isy994" = ps: with ps; [ ]; "switch.kankun" = ps: with ps; [ ]; "switch.knx" = ps: with ps; [ ]; - "switch.konnected" = ps: with ps; [ aiohttp-cors netdisco ]; + "switch.konnected" = ps: with ps; [ aiohttp-cors ]; "switch.lightwave" = ps: with ps; [ ]; "switch.linode" = ps: with ps; [ linode-api ]; "switch.litejet" = ps: with ps; [ ]; @@ -1300,7 +1311,6 @@ "switch.mfi" = ps: with ps; [ ]; "switch.mochad" = ps: with ps; [ ]; "switch.modbus" = ps: with ps; [ ]; - "switch.mqtt" = ps: with ps; [ paho-mqtt ]; "switch.mysensors" = ps: with ps; [ ]; "switch.mystrom" = ps: with ps; [ ]; "switch.neato" = ps: with ps; [ pybotvac ]; @@ -1313,7 +1323,6 @@ "switch.rachio" = ps: with ps; [ ]; "switch.rainbird" = ps: with ps; [ ]; "switch.raincloud" = ps: with ps; [ ]; - "switch.rainmachine" = ps: with ps; [ ]; "switch.raspihats" = ps: with ps; [ ]; "switch.raspyrfm" = ps: with ps; [ ]; "switch.recswitch" = ps: with ps; [ ]; @@ -1356,7 +1365,6 @@ "switch.wirelesstag" = ps: with ps; [ ]; "switch.xiaomi_aqara" = ps: with ps; [ ]; "switch.xiaomi_miio" = ps: with ps; [ construct ]; - "switch.zha" = ps: with ps; [ ]; "switch.zigbee" = ps: with ps; [ ]; "switch.zoneminder" = ps: with ps; [ zm-py ]; "switch.zwave" = ps: with ps; [ ]; @@ -1408,7 +1416,6 @@ "vacuum.demo" = ps: with ps; [ ]; "vacuum.dyson" = ps: with ps; [ ]; "vacuum.ecovacs" = ps: with ps; [ ]; - "vacuum.mqtt" = ps: with ps; [ paho-mqtt ]; "vacuum.neato" = ps: with ps; [ pybotvac ]; "vacuum.roomba" = ps: with ps; [ ]; "vacuum.xiaomi_miio" = ps: with ps; [ construct ]; @@ -1458,11 +1465,17 @@ "zabbix" = ps: with ps; [ ]; "zeroconf" = ps: with ps; [ aiohttp-cors zeroconf ]; "zha" = ps: with ps; [ ]; + "zha.api" = ps: with ps; [ ]; + "zha.binary_sensor" = ps: with ps; [ ]; "zha.config_flow" = ps: with ps; [ ]; "zha.const" = ps: with ps; [ ]; "zha.entities" = ps: with ps; [ ]; "zha.event" = ps: with ps; [ ]; + "zha.fan" = ps: with ps; [ ]; "zha.helpers" = ps: with ps; [ ]; + "zha.light" = ps: with ps; [ ]; + "zha.sensor" = ps: with ps; [ ]; + "zha.switch" = ps: with ps; [ ]; "zigbee" = ps: with ps; [ ]; "zone" = ps: with ps; [ ]; "zone.config_flow" = ps: with ps; [ ]; diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index c56423adcdd0..27eff24d7043 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -18,16 +18,16 @@ let defaultOverrides = [ # Override the version of some packages pinned in Home Assistant's setup.py - (mkOverride "aiohttp" "3.5.1" - "c115744b2a0bf666fd8cde52a6d3e9319ffeb486009579743f5adfdcf0bf0773") + (mkOverride "aiohttp" "3.5.4" + "9c4c83f4fa1938377da32bc2d59379025ceeee8e24b89f72fcbccd8ca22dc9bf") (mkOverride "astral" "1.7.1" "88086fd2006c946567285286464b2da3294a3b0cbba4410b7008ec2458f82a07") (mkOverride "async-timeout" "3.0.1" "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f") (mkOverride "attrs" "18.2.0" "10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69") - (mkOverride "bcrypt" "3.1.4" - "67ed1a374c9155ec0840214ce804616de49c3df9c5bc66740687c1c9b1cd9e8d") + (mkOverride "bcrypt" "3.1.5" + "136243dc44e5bab9b61206bd46fff3018bd80980b1a1dfbab64a22ff5745957f") (mkOverride "pyjwt" "1.6.4" "4ee413b357d53fd3fb44704577afac88e72e878716116270d722723d65b42176") (mkOverride "cryptography" "2.3.1" @@ -38,8 +38,8 @@ let "7723daf30996db26573176bddcdf5fcb98f66dc70df05c9cb29f2c79b8193245") (mkOverride "requests" "2.21.0" "502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e") - (mkOverride "ruamel_yaml" "0.15.81" - "6cbe7273a2e7667cd2ca7b12bec1c715a8259ad80f09c6f12c378f664d29fa5e") + (mkOverride "ruamel_yaml" "0.15.85" + "34af6e2f9787acd3937b55c0279f46adff43124c5d72dced84aab6c89d1a960f") (mkOverride "voluptuous" "0.11.5" "567a56286ef82a9d7ae0628c5842f65f516abcb496e74f3f59f1d7b28df314ef") (mkOverride "voluptuous-serialize" "2.0.0" @@ -87,7 +87,7 @@ let extraBuildInputs = extraPackages py.pkgs; # Don't forget to run parse-requirements.py after updating - hassVersion = "0.85.1"; + hassVersion = "0.86.4"; in with py.pkgs; buildPythonApplication rec { pname = "homeassistant"; @@ -102,7 +102,7 @@ in with py.pkgs; buildPythonApplication rec { owner = "home-assistant"; repo = "home-assistant"; rev = version; - sha256 = "0i9s0mgzfs3s6k4vw2zvwgqziz77fghpijrjrxx5nbrmm592h01a"; + sha256 = "13yyzcwz44gz6j0fh1awws83p6fmpib9ribm1453qr172knanhjy"; }; propagatedBuildInputs = [ diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix index d4be40c73685..1ea9e96d8f98 100644 --- a/pkgs/servers/home-assistant/frontend.nix +++ b/pkgs/servers/home-assistant/frontend.nix @@ -2,11 +2,11 @@ buildPythonPackage rec { pname = "home-assistant-frontend"; - version = "20190109.1"; + version = "20190121.1"; src = fetchPypi { inherit pname version; - sha256 = "2ca035461c06591dc793c7651ed3f7c17ab3addf5859e89d2f956215433140ba"; + sha256 = "7d1e127249dbefd0c8e101d8b178eeae6bf76a0296d8b22ed33759e23ef07856"; }; propagatedBuildInputs = [ user-agents ]; From 7cc7c5374c1bbad10774d81d81e644662b06acb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Thu, 24 Jan 2019 15:52:05 +0100 Subject: [PATCH 2/4] nixos/home-assistant: add lovelaceConfig option --- .../modules/services/misc/home-assistant.nix | 41 +++++++++++++++++-- nixos/tests/home-assistant.nix | 11 +++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/misc/home-assistant.nix b/nixos/modules/services/misc/home-assistant.nix index 2e9aa33aeeee..48271eeacc38 100644 --- a/nixos/modules/services/misc/home-assistant.nix +++ b/nixos/modules/services/misc/home-assistant.nix @@ -8,7 +8,10 @@ let # cfg.config != null can be assumed here configFile = pkgs.writeText "configuration.json" (builtins.toJSON (if cfg.applyDefaultConfig then - (lib.recursiveUpdate defaultConfig cfg.config) else cfg.config)); + (recursiveUpdate defaultConfig cfg.config) else cfg.config)); + + lovelaceConfigFile = pkgs.writeText "ui-lovelace.json" + (builtins.toJSON cfg.lovelaceConfig); availableComponents = pkgs.home-assistant.availableComponents; @@ -45,6 +48,8 @@ let defaultConfig = { homeassistant.time_zone = config.time.timeZone; http.server_port = (toString cfg.port); + } // optionalAttrs (cfg.lovelaceConfig != null) { + lovelace.mode = "yaml"; }; in { @@ -99,6 +104,31 @@ in { ''; }; + lovelaceConfig = mkOption { + default = null; + type = with types; nullOr attrs; + # from https://www.home-assistant.io/lovelace/yaml-mode/ + example = literalExample '' + { + title = "My Awesome Home"; + views = [ { + title = "Example"; + cards = [ { + type = "markdown"; + title = "Lovelace"; + content = "Welcome to your **Lovelace UI**."; + } ]; + } ]; + } + ''; + description = '' + Your ui-lovelace.yaml as a Nix attribute set. + Setting this option will automatically add + lovelace.mode = "yaml"; to your . + Beware that setting this option will delete your previous ui-lovelace.yaml + ''; + }; + package = mkOption { default = pkgs.home-assistant; defaultText = "pkgs.home-assistant"; @@ -144,11 +174,16 @@ in { systemd.services.home-assistant = { description = "Home Assistant"; after = [ "network.target" ]; - preStart = lib.optionalString (cfg.config != null) '' - config=${cfg.configDir}/configuration.yaml + preStart = optionalString (cfg.config != null) '' + config="${cfg.configDir}/configuration.yaml" rm -f $config ${pkgs.remarshal}/bin/json2yaml -i ${configFile} -o $config chmod 444 $config + '' + optionalString (cfg.lovelaceConfig != null) '' + config="${cfg.configDir}/ui-lovelace.yaml" + rm -f $config + ${pkgs.remarshal}/bin/json2yaml -i ${lovelaceConfigFile} -o $config + chmod 444 $config ''; serviceConfig = { ExecStart = "${package}/bin/hass --config '${cfg.configDir}'"; diff --git a/nixos/tests/home-assistant.nix b/nixos/tests/home-assistant.nix index 73c1e71eb516..6e8eda30e766 100644 --- a/nixos/tests/home-assistant.nix +++ b/nixos/tests/home-assistant.nix @@ -50,6 +50,17 @@ in { } ]; }; + lovelaceConfig = { + title = "My Awesome Home"; + views = [ { + title = "Example"; + cards = [ { + type = "markdown"; + title = "Lovelace"; + content = "Welcome to your **Lovelace UI**."; + } ]; + } ]; + }; }; }; }; From f908f6c9827288cdd0dda84d28738d300377a8b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Thu, 24 Jan 2019 16:49:06 +0100 Subject: [PATCH 3/4] nixos/home-assistant: don't run json2yaml at every start --- .../modules/services/misc/home-assistant.nix | 22 ++++++++++--------- nixos/tests/home-assistant.nix | 3 ++- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/nixos/modules/services/misc/home-assistant.nix b/nixos/modules/services/misc/home-assistant.nix index 48271eeacc38..628dd7c39b14 100644 --- a/nixos/modules/services/misc/home-assistant.nix +++ b/nixos/modules/services/misc/home-assistant.nix @@ -6,12 +6,18 @@ let cfg = config.services.home-assistant; # cfg.config != null can be assumed here - configFile = pkgs.writeText "configuration.json" + configJSON = pkgs.writeText "configuration.json" (builtins.toJSON (if cfg.applyDefaultConfig then (recursiveUpdate defaultConfig cfg.config) else cfg.config)); + configFile = pkgs.runCommand "configuration.yaml" { } '' + ${pkgs.remarshal}/bin/json2yaml -i ${configJSON} -o $out + ''; - lovelaceConfigFile = pkgs.writeText "ui-lovelace.json" + lovelaceConfigJSON = pkgs.writeText "ui-lovelace.json" (builtins.toJSON cfg.lovelaceConfig); + lovelaceConfigFile = pkgs.runCommand "ui-lovelace.yaml" { } '' + ${pkgs.remarshal}/bin/json2yaml -i ${lovelaceConfigJSON} -o $out + ''; availableComponents = pkgs.home-assistant.availableComponents; @@ -175,15 +181,11 @@ in { description = "Home Assistant"; after = [ "network.target" ]; preStart = optionalString (cfg.config != null) '' - config="${cfg.configDir}/configuration.yaml" - rm -f $config - ${pkgs.remarshal}/bin/json2yaml -i ${configFile} -o $config - chmod 444 $config + rm -f "${cfg.configDir}/configuration.yaml" + ln -s ${configFile} "${cfg.configDir}/configuration.yaml" '' + optionalString (cfg.lovelaceConfig != null) '' - config="${cfg.configDir}/ui-lovelace.yaml" - rm -f $config - ${pkgs.remarshal}/bin/json2yaml -i ${lovelaceConfigFile} -o $config - chmod 444 $config + rm -f "${cfg.configDir}/ui-lovelace.yaml" + ln -s ${lovelaceConfigFile} "${cfg.configDir}/ui-lovelace.yaml" ''; serviceConfig = { ExecStart = "${package}/bin/hass --config '${cfg.configDir}'"; diff --git a/nixos/tests/home-assistant.nix b/nixos/tests/home-assistant.nix index 6e8eda30e766..9e97ed4c47e8 100644 --- a/nixos/tests/home-assistant.nix +++ b/nixos/tests/home-assistant.nix @@ -71,7 +71,8 @@ in { # The config is specified using a Nix attribute set, # but then converted from JSON to YAML - $hass->succeed("test -f ${configDir}/configuration.yaml"); + $hass->succeed("test -L ${configDir}/configuration.yaml"); + $hass->succeed("test -L ${configDir}/ui-lovelace.yaml"); # Check that Home Assistant's web interface and API can be reached $hass->waitForOpenPort(8123); From f85453f060b4756a3d55c2d3a6563be19f41dfe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sun, 3 Feb 2019 12:45:52 +0100 Subject: [PATCH 4/4] nixos/home-assistant: add configWritable option --- .../modules/services/misc/home-assistant.nix | 32 +++++++++++++++++-- nixos/tests/home-assistant.nix | 6 ++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/nixos/modules/services/misc/home-assistant.nix b/nixos/modules/services/misc/home-assistant.nix index 628dd7c39b14..4eabda1d4188 100644 --- a/nixos/modules/services/misc/home-assistant.nix +++ b/nixos/modules/services/misc/home-assistant.nix @@ -110,6 +110,17 @@ in { ''; }; + configWritable = mkOption { + default = false; + type = types.bool; + description = '' + Whether to make configuration.yaml writable. + This only has an effect if is set. + This will allow you to edit it from Home Assistant's web interface. + However, bear in mind that it will be overwritten at every start of the service. + ''; + }; + lovelaceConfig = mkOption { default = null; type = with types; nullOr attrs; @@ -135,6 +146,17 @@ in { ''; }; + lovelaceConfigWritable = mkOption { + default = false; + type = types.bool; + description = '' + Whether to make ui-lovelace.yaml writable. + This only has an effect if is set. + This will allow you to edit it from Home Assistant's web interface. + However, bear in mind that it will be overwritten at every start of the service. + ''; + }; + package = mkOption { default = pkgs.home-assistant; defaultText = "pkgs.home-assistant"; @@ -180,13 +202,17 @@ in { systemd.services.home-assistant = { description = "Home Assistant"; after = [ "network.target" ]; - preStart = optionalString (cfg.config != null) '' + preStart = optionalString (cfg.config != null) (if cfg.configWritable then '' + cp --no-preserve=mode ${configFile} "${cfg.configDir}/configuration.yaml" + '' else '' rm -f "${cfg.configDir}/configuration.yaml" ln -s ${configFile} "${cfg.configDir}/configuration.yaml" - '' + optionalString (cfg.lovelaceConfig != null) '' + '') + optionalString (cfg.lovelaceConfig != null) (if cfg.lovelaceConfigWritable then '' + cp --no-preserve=mode ${lovelaceConfigFile} "${cfg.configDir}/ui-lovelace.yaml" + '' else '' rm -f "${cfg.configDir}/ui-lovelace.yaml" ln -s ${lovelaceConfigFile} "${cfg.configDir}/ui-lovelace.yaml" - ''; + ''); serviceConfig = { ExecStart = "${package}/bin/hass --config '${cfg.configDir}'"; User = "hass"; diff --git a/nixos/tests/home-assistant.nix b/nixos/tests/home-assistant.nix index 9e97ed4c47e8..00a0e82fedc9 100644 --- a/nixos/tests/home-assistant.nix +++ b/nixos/tests/home-assistant.nix @@ -61,6 +61,7 @@ in { } ]; } ]; }; + lovelaceConfigWritable = true; }; }; }; @@ -70,9 +71,10 @@ in { $hass->waitForUnit("home-assistant.service"); # The config is specified using a Nix attribute set, - # but then converted from JSON to YAML + # converted from JSON to YAML, and linked to the config dir $hass->succeed("test -L ${configDir}/configuration.yaml"); - $hass->succeed("test -L ${configDir}/ui-lovelace.yaml"); + # The lovelace config is copied because lovelaceConfigWritable = true + $hass->succeed("test -f ${configDir}/ui-lovelace.yaml"); # Check that Home Assistant's web interface and API can be reached $hass->waitForOpenPort(8123);