diff options
Diffstat (limited to 'krebs')
| -rw-r--r-- | krebs/1systems/puyak/config.nix | 4 | ||||
| -rw-r--r-- | krebs/1systems/puyak/net.nix | 2 | ||||
| -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 | 
8 files changed, 119 insertions, 11 deletions
| diff --git a/krebs/1systems/puyak/config.nix b/krebs/1systems/puyak/config.nix index 60c1c941a..d3891af82 100644 --- a/krebs/1systems/puyak/config.nix +++ b/krebs/1systems/puyak/config.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }:  {    imports = [      ./net.nix @@ -73,6 +73,7 @@      # hass.shack      <stockholm/krebs/2configs/shack/glados> +    <stockholm/krebs/2configs/shack/esphome.nix>      # connect to git.shackspace.de as group runner for rz      <stockholm/krebs/2configs/shack/gitlab-runner.nix> @@ -170,4 +171,5 @@      isNormalUser = true;      shell = "/run/current-system/sw/bin/zsh";    }; +  system.stateVersion = lib.mkForce "24.05";  } diff --git a/krebs/1systems/puyak/net.nix b/krebs/1systems/puyak/net.nix index 59b22b380..fe2fd238e 100644 --- a/krebs/1systems/puyak/net.nix +++ b/krebs/1systems/puyak/net.nix @@ -14,7 +14,7 @@ in {      interfaces."${ext-if}".ipv4.addresses = [        {          address = shack-ip; -        prefixLength = 22; +        prefixLength = 20;        }      ]; 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" +  ''; +} | 
