diff options
Diffstat (limited to 'krebs/2configs')
-rw-r--r-- | krebs/2configs/news-host.nix | 3 | ||||
-rw-r--r-- | krebs/2configs/shack/esphome.nix | 7 | ||||
-rw-r--r-- | krebs/2configs/shack/glados/default.nix | 13 | ||||
-rw-r--r-- | krebs/2configs/shack/glados/zigbee-quirks/__init__.py | 0 | ||||
-rw-r--r-- | krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py | 96 | ||||
-rw-r--r-- | krebs/2configs/shack/glados/zigbee.nix | 5 |
6 files changed, 115 insertions, 9 deletions
diff --git a/krebs/2configs/news-host.nix b/krebs/2configs/news-host.nix index 81922ef87..9b8627d61 100644 --- a/krebs/2configs/news-host.nix +++ b/krebs/2configs/news-host.nix @@ -1,5 +1,6 @@ -{ config, ... }: +{ config,lib, ... }: { + nixpkgs.config.allowUnfree = true; # "consul-1.18.0" krebs.sync-containers3.containers.news = { sshKey = "${config.krebs.secret.directory}/news.sync.key"; }; diff --git a/krebs/2configs/shack/esphome.nix b/krebs/2configs/shack/esphome.nix new file mode 100644 index 000000000..b6bcbce3e --- /dev/null +++ b/krebs/2configs/shack/esphome.nix @@ -0,0 +1,7 @@ +{ + services.esphome = { + enable = true; + address = "0.0.0.0"; + openFirewall = true; + }; +} diff --git a/krebs/2configs/shack/glados/default.nix b/krebs/2configs/shack/glados/default.nix index 236b5000d..e8ed18f0d 100644 --- a/krebs/2configs/shack/glados/default.nix +++ b/krebs/2configs/shack/glados/default.nix @@ -3,29 +3,26 @@ let kodi-host = "192.168.8.11"; confdir = "/var/lib/homeassistant-docker"; in { - imports = [ - ]; + imports = [ ./zigbee.nix ]; - # networking.firewall.allowedTCPPorts = [ 8123 ]; + networking.firewall.allowedTCPPorts = [ 8123 ]; virtualisation.oci-containers.containers.hass = { image = "homeassistant/home-assistant:latest"; environment = { TZ = "Europe/Berlin"; - # TODO create unique users - PUID = toString config.users.users.news_container.uid; - PGID = toString config.users.groups.news_container.gid; UMASK = "007"; }; - extraOptions = ["--net=host" ]; + extraOptions = ["--net=host" "--device=/dev/zigbee" ]; volumes = [ "${confdir}:/config" + "${./zigbee-quirks}:/quirks" #"${confdir}/docker-run:/etc/services.d/home-assistant/run:" ]; }; systemd.tmpfiles.rules = [ #"f ${confdir}/docker-run 0770 kiosk kiosk - -" # TODO: - "d ${confdir} 0770 news_container news_container - -" + "d ${confdir} 0770 root root - -" ]; services.nginx.virtualHosts."hass.shack" = { diff --git a/krebs/2configs/shack/glados/zigbee-quirks/__init__.py b/krebs/2configs/shack/glados/zigbee-quirks/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/krebs/2configs/shack/glados/zigbee-quirks/__init__.py diff --git a/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py b/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py new file mode 100644 index 000000000..b520fe947 --- /dev/null +++ b/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py @@ -0,0 +1,96 @@ +"""TS011F plug.""" + +from zigpy.profiles import zgp, zha +from zigpy.quirks import CustomDevice +from zigpy.zcl.clusters.general import ( + Basic, + GreenPowerProxy, + Groups, + Identify, + OnOff, + Ota, + Scenes, + Time, +) +from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement +from zigpy.zcl.clusters.lightlink import LightLink +from zigpy.zcl.clusters.measurement import TemperatureMeasurement +from zigpy.zcl.clusters.smartenergy import Metering + +from zhaquirks.const import ( + DEVICE_TYPE, + ENDPOINTS, + INPUT_CLUSTERS, + MODEL, + MODELS_INFO, + OUTPUT_CLUSTERS, + PROFILE_ID, +) +from zhaquirks.quirk_ids import TUYA_PLUG_ONOFF +from zhaquirks.tuya import ( + EnchantedDevice, + TuyaNewManufCluster, + TuyaZB1888Cluster, + TuyaZBE000Cluster, + TuyaZBElectricalMeasurement, + TuyaZBExternalSwitchTypeCluster, + TuyaZBMeteringCluster, + TuyaZBMeteringClusterWithUnit, + TuyaZBOnOffAttributeCluster, +) + +class Plug_v2l(EnchantedDevice): + """Another TS011F Tuya plug. First one using this definition is _TZ3000_okaz9tjs.""" + + quirk_id = TUYA_PLUG_ONOFF + + signature = { + MODEL: "TS011F", + ENDPOINTS: { + # "profile_id": 260, + # "device_type": "0x0100", + # "in_clusters": ["0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0702", "0x0b04", "0xe001"], + # "in_clusters": ["0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x000a", "0x0702", "0x0b04", "0x1000", "0xe000", "0xe001"], + # "out_clusters": [] + 1: { + PROFILE_ID: zha.PROFILE_ID, + DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT, + INPUT_CLUSTERS: [ + Basic.cluster_id, + Identify.cluster_id, + Groups.cluster_id, + Scenes.cluster_id, + OnOff.cluster_id, + Time.cluster_id, + Metering.cluster_id, + ElectricalMeasurement.cluster_id, + LightLink.cluster_id, + TuyaZBE000Cluster.cluster_id, + TuyaZBExternalSwitchTypeCluster.cluster_id, + ], + OUTPUT_CLUSTERS: [], + }, + }, + } + replacement = { + ENDPOINTS: { + 1: { + PROFILE_ID: zha.PROFILE_ID, + DEVICE_TYPE: zha.DeviceType.SMART_PLUG, + INPUT_CLUSTERS: [ + Basic.cluster_id, + Identify.cluster_id, + Groups.cluster_id, + Scenes.cluster_id, + TuyaZBOnOffAttributeCluster, + Time.cluster_id, + TuyaZBMeteringClusterWithUnit, + TuyaZBElectricalMeasurement, + LightLink.cluster_id, + TuyaZBE000Cluster.cluster_id, + TuyaZBExternalSwitchTypeCluster, + ], + OUTPUT_CLUSTERS: [], + }, + }, + } diff --git a/krebs/2configs/shack/glados/zigbee.nix b/krebs/2configs/shack/glados/zigbee.nix new file mode 100644 index 000000000..a8967cc37 --- /dev/null +++ b/krebs/2configs/shack/glados/zigbee.nix @@ -0,0 +1,5 @@ +{ + services.udev.extraRules = '' + SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="zigbee", MODE="0666" + ''; +} |