diff --git a/nixos/modules/services/home-automation/home-assistant.nix b/nixos/modules/services/home-automation/home-assistant.nix index 2e91ee55f95e..338c61f89677 100644 --- a/nixos/modules/services/home-automation/home-assistant.nix +++ b/nixos/modules/services/home-automation/home-assistant.nix @@ -708,6 +708,9 @@ in { "zha" "zwave" "zwave_js" + + # Custom components, maintained manually. + "amshan" ]; in { ExecStart = escapeSystemdExecArgs ([ diff --git a/pkgs/development/python-modules/amshan/default.nix b/pkgs/development/python-modules/amshan/default.nix new file mode 100644 index 000000000000..82eaa056d876 --- /dev/null +++ b/pkgs/development/python-modules/amshan/default.nix @@ -0,0 +1,50 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + construct, + paho-mqtt, + pyserial-asyncio, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "amshan"; + version = "2.1.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "toreamun"; + repo = "amshan"; + rev = version; + hash = "sha256-aw0wTqb2s84STVUN55h6L926pXwaMSppBCfXZVb87w0="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + construct + paho-mqtt + pyserial-asyncio + ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "han" ]; + + meta = { + description = "Decode smart power meter data stream of Cosem HDLC frames used by MBUS"; + longDescription = '' + The package has special support of formats for Aidon, Kaifa and Kamstrup + meters used in Norway and Sweden (AMS HAN). + ''; + homepage = "https://github.com/toreamun/amshan"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ bjornfor ]; + }; +} diff --git a/pkgs/servers/home-assistant/custom-components/amshan/package.nix b/pkgs/servers/home-assistant/custom-components/amshan/package.nix new file mode 100644 index 000000000000..60e55f3edad7 --- /dev/null +++ b/pkgs/servers/home-assistant/custom-components/amshan/package.nix @@ -0,0 +1,34 @@ +{ + lib, + fetchFromGitHub, + buildHomeAssistantComponent, + amshan, +}: + +buildHomeAssistantComponent rec { + owner = "toreamun"; + domain = "amshan"; + version = "2024.12.0"; + + src = fetchFromGitHub { + owner = "toreamun"; + repo = "amshan-homeassistant"; + tag = version; + hash = "sha256-L7TGdUjDvIRP9dHIkng9GYwilmRzhGbUK6ivx8PVtQ4="; + }; + + dependencies = [ + amshan + ]; + + meta = { + description = "Home Assistant integration for electricity meters (AMS/HAN/P1)"; + longDescription = '' + The integration supports both streaming (serial port / TCP/IP) and MQTT + (Tibber Pulse, energyintelligence.se etc.). + ''; + homepage = "https://github.com/toreamun/amshan-homeassistant"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ bjornfor ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4c25c28cf2c7..3350a6c36841 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -584,6 +584,8 @@ self: super: with self; { amqtt = callPackage ../development/python-modules/amqtt { }; + amshan = callPackage ../development/python-modules/amshan { }; + anchor-kr = callPackage ../development/python-modules/anchor-kr { }; ancp-bids = callPackage ../development/python-modules/ancp-bids { };