about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Weinelt <mweinelt@users.noreply.github.com>2023-09-08 11:32:35 +0200
committerGitHub <noreply@github.com>2023-09-08 11:32:35 +0200
commit059ee99ef4451a3663329daa596e6586191f2528 (patch)
tree25bb160df06af5d8c58129bace13bdfdb17a215a
parentd4e34e0c8f9630c934f6559c09fc9458444ca15c (diff)
parentb3da5e68a18f456ec57d9b1ea16713ba9d041d6c (diff)
downloadnixlib-059ee99ef4451a3663329daa596e6586191f2528.tar
nixlib-059ee99ef4451a3663329daa596e6586191f2528.tar.gz
nixlib-059ee99ef4451a3663329daa596e6586191f2528.tar.bz2
nixlib-059ee99ef4451a3663329daa596e6586191f2528.tar.lz
nixlib-059ee99ef4451a3663329daa596e6586191f2528.tar.xz
nixlib-059ee99ef4451a3663329daa596e6586191f2528.tar.zst
nixlib-059ee99ef4451a3663329daa596e6586191f2528.zip
Merge pull request #253832 from NixOS/home-assistant
home-assistant: 2023.8.4 -> 2023.9.0
-rw-r--r--pkgs/development/python-modules/aemet-opendata/default.nix23
-rw-r--r--pkgs/development/python-modules/aioairzone/default.nix4
-rw-r--r--pkgs/development/python-modules/aiocomelit/default.nix52
-rw-r--r--pkgs/development/python-modules/aioesphomeapi/default.nix4
-rw-r--r--pkgs/development/python-modules/aiolyric/default.nix8
-rw-r--r--pkgs/development/python-modules/aioruckus/default.nix67
-rw-r--r--pkgs/development/python-modules/aioshelly/default.nix4
-rw-r--r--pkgs/development/python-modules/aiotractive/default.nix5
-rw-r--r--pkgs/development/python-modules/aiounifi/default.nix25
-rw-r--r--pkgs/development/python-modules/aiovodafone/default.nix54
-rw-r--r--pkgs/development/python-modules/aiowaqi/default.nix60
-rw-r--r--pkgs/development/python-modules/bimmer-connected/default.nix12
-rw-r--r--pkgs/development/python-modules/hatasmota/default.nix4
-rw-r--r--pkgs/development/python-modules/pymodbus/default.nix43
-rw-r--r--pkgs/development/python-modules/pyruckus/default.nix36
-rw-r--r--pkgs/development/python-modules/python-bsblan/default.nix4
-rw-r--r--pkgs/development/python-modules/pywaze/default.nix56
-rw-r--r--pkgs/development/python-modules/reolink-aio/default.nix22
-rw-r--r--pkgs/development/python-modules/universal-silabs-flasher/default.nix73
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix4
-rw-r--r--pkgs/development/python-modules/zwave-js-server-python/default.nix8
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix64
-rw-r--r--pkgs/servers/home-assistant/default.nix26
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rw-r--r--pkgs/servers/home-assistant/patches/ffmpeg-path.patch120
-rw-r--r--pkgs/servers/home-assistant/stubs.nix4
-rw-r--r--pkgs/servers/home-assistant/tests.nix8
-rw-r--r--pkgs/top-level/python-aliases.nix1
-rw-r--r--pkgs/top-level/python-packages.nix14
29 files changed, 630 insertions, 179 deletions
diff --git a/pkgs/development/python-modules/aemet-opendata/default.nix b/pkgs/development/python-modules/aemet-opendata/default.nix
index 64e3cfa7b032..90f28265c090 100644
--- a/pkgs/development/python-modules/aemet-opendata/default.nix
+++ b/pkgs/development/python-modules/aemet-opendata/default.nix
@@ -1,26 +1,36 @@
 { lib
+, aiohttp
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , geopy
+, pythonOlder
 , requests
+, setuptools
 , urllib3
+, wheel
 }:
 
 buildPythonPackage rec {
   pname = "aemet-opendata";
-  version = "0.2.2";
+  version = "0.4.4";
+  format = "pyproject";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "Noltari";
     repo = "AEMET-OpenData";
     rev = "refs/tags/${version}";
-    hash = "sha256-3f3hvui00oItu6t9rKecoCquqsD1Eeqz+SEsLBqGt48=";
+    hash = "sha256-Jm7fv1fNavp2GkfKPhZXYGnGuCBy6BdN9iTNYTBIyew=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
   propagatedBuildInputs = [
+    aiohttp
     geopy
     requests
     urllib3
@@ -29,11 +39,14 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [ "aemet_opendata.interface" ];
+  pythonImportsCheck = [
+    "aemet_opendata.interface"
+  ];
 
   meta = with lib; {
     description = "Python client for AEMET OpenData Rest API";
     homepage = "https://github.com/Noltari/AEMET-OpenData";
+    changelog = "https://github.com/Noltari/AEMET-OpenData/releases/tag/${version}";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/aioairzone/default.nix b/pkgs/development/python-modules/aioairzone/default.nix
index 2ea2137f0405..ac094571d087 100644
--- a/pkgs/development/python-modules/aioairzone/default.nix
+++ b/pkgs/development/python-modules/aioairzone/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "aioairzone";
-  version = "0.6.7";
+  version = "0.6.8";
   format = "pyproject";
 
   disabled = pythonOlder "3.11";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Noltari";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-/LUTHeApktB4okt9bVkZe7G1dApVaYUdwty4sbK7IKQ=";
+    hash = "sha256-aCf0IO70t/QMmDmIwBKN3Um1HgHjHn1r6Dze/pWaQ5M=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/aiocomelit/default.nix b/pkgs/development/python-modules/aiocomelit/default.nix
new file mode 100644
index 000000000000..dd572da52210
--- /dev/null
+++ b/pkgs/development/python-modules/aiocomelit/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiocomelit";
+  version = "0.0.6";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "chemelli74";
+    repo = "aiocomelit";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-u6CyqDFLgnIVak0UqN4JmL8ll/li3k9EhFs7iC5oZ9U=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace " --cov=aiocomelit --cov-report=term-missing:skip-covered" ""
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "aiocomelit"
+  ];
+
+  meta = with lib; {
+    description = "Library to control Comelit Simplehome";
+    homepage = "https://github.com/chemelli74/aiocomelit";
+    changelog = "https://github.com/chemelli74/aiocomelit/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioesphomeapi/default.nix b/pkgs/development/python-modules/aioesphomeapi/default.nix
index cc34f91fde9d..f0a310b7a14c 100644
--- a/pkgs/development/python-modules/aioesphomeapi/default.nix
+++ b/pkgs/development/python-modules/aioesphomeapi/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "aioesphomeapi";
-  version = "16.0.3";
+  version = "16.0.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "esphome";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-x4kH8riHZbVibgwR2DmWB4tsswpub4m2LwnypVVUgqM=";
+    hash = "sha256-SueK59CZTKkQPsHThs7k9eCEmc1GwaRIrw3oSK4E80E=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aiolyric/default.nix b/pkgs/development/python-modules/aiolyric/default.nix
index ba0b17a5eb58..b6346a511aa5 100644
--- a/pkgs/development/python-modules/aiolyric/default.nix
+++ b/pkgs/development/python-modules/aiolyric/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "aiolyric";
-  version = "1.0.10";
+  version = "1.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "timmo001";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-yKeG0UCQ8haT1hvywoIwKQ519GK2wFg0wXaRTFeKYIk=";
+    hash = "sha256-LDLpNuwkoPacI/a2NSlqUABRgwy+jAjGwOxmShLskso=";
   };
 
   propagatedBuildInputs = [
@@ -29,8 +29,8 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # AssertionError, https://github.com/timmo001/aiolyric/issues/5
-    "test_location"
+    # AssertionError, https://github.com/timmo001/aiolyric/issues/61
+    "test_priority"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/aioruckus/default.nix b/pkgs/development/python-modules/aioruckus/default.nix
new file mode 100644
index 000000000000..a3d77994f432
--- /dev/null
+++ b/pkgs/development/python-modules/aioruckus/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, setuptools
+, wheel
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "aioruckus";
+  version = "0.34";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "ms264556";
+    repo = "aioruckus";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-SPj1w1jAJFBsWj1+N8srAbvlh+yB3ZTT7aDcZTnmUto=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "setuptools>=68.1" "setuptools"
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    xmltodict
+  ];
+
+  pythonImportsCheck = [
+    "aioruckus"
+  ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # these require a local ruckus device
+    "test_ap_info"
+    "test_authentication_error"
+    "test_connect_success"
+    "test_current_active_clients"
+    "test_mesh_info"
+    "test_system_info"
+  ];
+
+  meta = with lib; {
+    description = "Python client for Ruckus Unleashed and Ruckus ZoneDirector";
+    homepage = "https://github.com/ms264556/aioruckus";
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioshelly/default.nix b/pkgs/development/python-modules/aioshelly/default.nix
index d00469ecb099..b47936c926d3 100644
--- a/pkgs/development/python-modules/aioshelly/default.nix
+++ b/pkgs/development/python-modules/aioshelly/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "aioshelly";
-  version = "5.4.0";
+  version = "6.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-cbgDuJXvZmbhIgxpuySGbJqz7DeI65DHwk1UPdNUs1Q=";
+    hash = "sha256-mB9BEVqbHcoUaygIgrtqk20wMJkL+dWpbeyG5VP4+sg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aiotractive/default.nix b/pkgs/development/python-modules/aiotractive/default.nix
index a39130c383a3..5891fa703a90 100644
--- a/pkgs/development/python-modules/aiotractive/default.nix
+++ b/pkgs/development/python-modules/aiotractive/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "aiotractive";
-  version = "0.5.5";
+  version = "0.5.6";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "zhulik";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-VCwIAeSAN4tMwB8TXN/ukrws0qYv/jHHeEu++m56AHA=";
+    hash = "sha256-jJw1L1++Z/r+E12tA6zoyyy4MmTpaaVVzKwfI6xcDBQ=";
   };
 
   propagatedBuildInputs = [
@@ -29,6 +29,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "aiotractive" ];
 
   meta = with lib; {
+    changelog = "https://github.com/zhulik/aiotractive/releases/tag/v${version}";
     description = "Python client for the Tractive REST API";
     homepage = "https://github.com/zhulik/aiotractive";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/aiounifi/default.nix b/pkgs/development/python-modules/aiounifi/default.nix
index 09b177a61bf7..45591837df44 100644
--- a/pkgs/development/python-modules/aiounifi/default.nix
+++ b/pkgs/development/python-modules/aiounifi/default.nix
@@ -1,7 +1,6 @@
 { lib
 , aiohttp
 , aioresponses
-, async-timeout
 , buildPythonPackage
 , fetchFromGitHub
 , orjson
@@ -10,25 +9,39 @@
 , pytestCheckHook
 , pythonOlder
 , segno
+, setuptools
+, wheel
 }:
 
 buildPythonPackage rec {
   pname = "aiounifi";
-  version = "55";
-  format = "setuptools";
+  version = "61";
+  format = "pyproject";
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "Kane610";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-JvuP1Rhq01Y9KbfAJpawUQNWfxvlf9LY82RvXok4tgw=";
+    hash = "sha256-tzP20KDPCq1/fJY+OfEpo3LMbP662ROh2aPI4nmDp0Y=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "setuptools==" "setuptools>=" \
+      --replace "wheel==" "wheel>="
+
+    sed -i '/--cov=/d' pyproject.toml
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
   propagatedBuildInputs = [
     aiohttp
-    async-timeout
     orjson
     segno
   ];
diff --git a/pkgs/development/python-modules/aiovodafone/default.nix b/pkgs/development/python-modules/aiovodafone/default.nix
new file mode 100644
index 000000000000..f0ad237f9208
--- /dev/null
+++ b/pkgs/development/python-modules/aiovodafone/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, aiohttp
+, beautifulsoup4
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiovodafone";
+  version = "0.0.8";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "chemelli74";
+    repo = "aiovodafone";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-o21zaK3dJfURFAt8fPaOd95H7tuqLnFPC01RGHBIz4M=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace " --cov=aiovodafone --cov-report=term-missing:skip-covered" ""
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    beautifulsoup4
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "aiovodafone"
+  ];
+
+  meta = with lib; {
+    description = "Library to control Vodafon Station";
+    homepage = "https://github.com/chemelli74/aiovodafone";
+    changelog = "https://github.com/chemelli74/aiovodafone/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiowaqi/default.nix b/pkgs/development/python-modules/aiowaqi/default.nix
new file mode 100644
index 000000000000..ba2d16c7e3e9
--- /dev/null
+++ b/pkgs/development/python-modules/aiowaqi/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, syrupy
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "aiowaqi";
+  version = "1.1.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "joostlek";
+    repo = "python-waqi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-CQCF59Tp0VE7PNHPdVzzZegLUNDkslzKapELDjZn1k4=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--cov" ""
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+    syrupy
+  ];
+
+  pythonImportsCheck = [
+    "aiowaqi"
+  ];
+
+  meta = with lib; {
+    description = "Module to interact with the WAQI API";
+    homepage = "https://github.com/joostlek/python-waqi";
+    changelog = "https://github.com/joostlek/python-waqi/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/bimmer-connected/default.nix b/pkgs/development/python-modules/bimmer-connected/default.nix
index baa4ddacfec5..57eb2dc26845 100644
--- a/pkgs/development/python-modules/bimmer-connected/default.nix
+++ b/pkgs/development/python-modules/bimmer-connected/default.nix
@@ -7,9 +7,12 @@
 , httpx
 , pycryptodome
 , pyjwt
+, pytest-asyncio
 , pytestCheckHook
+, python
 , respx
 , time-machine
+, tzdata
 }:
 
 buildPythonPackage rec {
@@ -39,12 +42,21 @@ buildPythonPackage rec {
     pyjwt
   ];
 
+  postInstall = ''
+    cp -R bimmer_connected/tests/responses $out/${python.sitePackages}/bimmer_connected/tests/
+  '';
+
   nativeCheckInputs = [
+    pytest-asyncio
     pytestCheckHook
     respx
     time-machine
   ];
 
+  preCheck = ''
+    export TZDIR=${tzdata}/${python.sitePackages}/tzdata/zoneinfo
+  '';
+
   pythonImportsCheck = [
     "bimmer_connected"
   ];
diff --git a/pkgs/development/python-modules/hatasmota/default.nix b/pkgs/development/python-modules/hatasmota/default.nix
index 1491587ade27..3fa3546eb976 100644
--- a/pkgs/development/python-modules/hatasmota/default.nix
+++ b/pkgs/development/python-modules/hatasmota/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "hatasmota";
-  version = "0.6.5";
+  version = "0.7.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "emontnemery";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-DqXGvn7vYC3SXOM/u+nMUshgBUe0O6Dcffaxh9vFohk=";
+    hash = "sha256-f8bRVo9365w5gMpkb31thGXCRWZuKfkFEow9Wv4/+bM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pymodbus/default.nix b/pkgs/development/python-modules/pymodbus/default.nix
index c1b1b75d284c..d4715c131cea 100644
--- a/pkgs/development/python-modules/pymodbus/default.nix
+++ b/pkgs/development/python-modules/pymodbus/default.nix
@@ -7,54 +7,57 @@
 , prompt-toolkit
 , pygments
 , pyserial
-, pyserial-asyncio
 , pytest-asyncio
-, pytest-rerunfailures
 , pytest-xdist
 , pytestCheckHook
 , redis
 , sqlalchemy
-, tornado
 , twisted
+, typer
 }:
 
 buildPythonPackage rec {
   pname = "pymodbus";
-  version = "3.3.2";
+  version = "3.5.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "pymodbus-dev";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-EGJyb0AVLKN7FEoeWF4rVqmJBNbXHent9P+cxc13rQs=";
+    hash = "sha256-ZoGpMhJng46nW7v/QgjGCsFZV6xV4PSh9/DH1d2dzdg=";
   };
 
-  # Twisted asynchronous version is not supported due to a missing dependency
-  propagatedBuildInputs = [
-    aiohttp
-    click
-    prompt-toolkit
-    pygments
-    pyserial
-    pyserial-asyncio
-    tornado
-  ];
+  passthru.optional-dependencies = {
+    repl = [
+      aiohttp
+      typer
+      prompt-toolkit
+      pygments
+      click
+    ] ++ typer.optional-dependencies.all;
+    serial = [
+      pyserial
+    ];
+  };
 
   nativeCheckInputs = [
     mock
     pytest-asyncio
-    pytest-rerunfailures
     pytest-xdist
     pytestCheckHook
     redis
     sqlalchemy
     twisted
-  ];
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  preCheck = ''
+    pushd test
+  '';
 
-  pytestFlagsArray = [
-    "--reruns" "3" # Racy socket tests
-  ];
+  postCheck = ''
+    popd
+  '';
 
   pythonImportsCheck = [ "pymodbus" ];
 
diff --git a/pkgs/development/python-modules/pyruckus/default.nix b/pkgs/development/python-modules/pyruckus/default.nix
deleted file mode 100644
index d2b896605f7f..000000000000
--- a/pkgs/development/python-modules/pyruckus/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pexpect
-, python-slugify
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "pyruckus";
-  version = "0.16";
-  disabled = pythonOlder "3.6";
-
-  src = fetchFromGitHub {
-    owner = "gabe565";
-    repo = pname;
-    rev = "refs/tags/${version}";
-    hash = "sha256-SVE5BrCCQgCrhOC0CSGgbZ9TEY3iZ9Rp/xMUShPAxxM=";
-  };
-
-  propagatedBuildInputs = [
-    pexpect
-    python-slugify
-  ];
-
-  # Tests requires network features
-  doCheck = false;
-  pythonImportsCheck = [ "pyruckus" ];
-
-  meta = with lib; {
-    description = "Python client for Ruckus Unleashed";
-    homepage = "https://github.com/gabe565/pyruckus";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/python-bsblan/default.nix b/pkgs/development/python-modules/python-bsblan/default.nix
index 10db66e4bb22..2ffc8ed0b7f2 100644
--- a/pkgs/development/python-modules/python-bsblan/default.nix
+++ b/pkgs/development/python-modules/python-bsblan/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "python-bsblan";
-  version = "0.5.15";
+  version = "0.5.16";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "liudger";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-PNgv3QXl3iyDX0KOn1egQrt6D64i3eCUyCPtXe94y0U=";
+    hash = "sha256-m80lnNd1ANddV0d/w3S7+QWzIPRklDZsWMO2g1hgEoQ=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pywaze/default.nix b/pkgs/development/python-modules/pywaze/default.nix
new file mode 100644
index 000000000000..fbaa0e94ea87
--- /dev/null
+++ b/pkgs/development/python-modules/pywaze/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, hatchling
+, httpx
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, respx
+}:
+
+buildPythonPackage rec {
+  pname = "pywaze";
+  version = "0.3.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "eifinger";
+    repo = "pywaze";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-z/6eSgERHKV/5vjbRWcyrxAMNDIHvM3GUoo3xf+AhNY=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--cov --cov-report term-missing --cov=src/pywaze " ""
+  '';
+
+  nativeBuildInputs = [
+    hatchling
+  ];
+
+  propagatedBuildInputs = [
+    httpx
+  ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+    respx
+  ];
+
+  pythonImportsCheck = [
+    "pywaze"
+  ];
+
+  meta = with lib; {
+    description = "Module for calculating WAZE routes and travel times";
+    homepage = "https://github.com/eifinger/pywaze";
+    changelog = "https://github.com/eifinger/pywaze/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/reolink-aio/default.nix b/pkgs/development/python-modules/reolink-aio/default.nix
index b74665e2c342..758c957823a6 100644
--- a/pkgs/development/python-modules/reolink-aio/default.nix
+++ b/pkgs/development/python-modules/reolink-aio/default.nix
@@ -2,15 +2,14 @@
 , aiohttp
 , buildPythonPackage
 , fetchFromGitHub
-, ffmpeg-python
 , orjson
 , pythonOlder
-, requests
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "reolink-aio";
-  version = "0.7.8";
+  version = "0.7.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -19,29 +18,22 @@ buildPythonPackage rec {
     owner = "starkillerOG";
     repo = "reolink_aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-vbSt1rD25Bt3Qac0uO0Z63JhbU5HU0p2ox046W6xyJU=";
+    hash = "sha256-+1FZzgVaj2hphSTFlOtaYH3o++kC/aaahU8i8urdme0=";
   };
 
-  postPatch = ''
-    # Packages in nixpkgs is different than the module name
-    substituteInPlace setup.py \
-      --replace "ffmpeg" "ffmpeg-python"
-  '';
-
   propagatedBuildInputs = [
     aiohttp
-    ffmpeg-python
     orjson
-    requests
+    typing-extensions
   ];
 
-  # All tests require a network device
-  doCheck = false;
-
   pythonImportsCheck = [
     "reolink_aio"
   ];
 
+  # All tests require a network device
+  doCheck = false;
+
   meta = with lib; {
     description = "Module to interact with the Reolink IP camera API";
     homepage = "https://github.com/starkillerOG/reolink_aio";
diff --git a/pkgs/development/python-modules/universal-silabs-flasher/default.nix b/pkgs/development/python-modules/universal-silabs-flasher/default.nix
new file mode 100644
index 000000000000..348fa01ffbe1
--- /dev/null
+++ b/pkgs/development/python-modules/universal-silabs-flasher/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, setuptools
+, setuptools-git-versioning
+, wheel
+
+# dependencies
+, async-timeout
+, bellows
+, click
+, coloredlogs
+, crc
+, libgpiod
+, typing-extensions
+, zigpy
+
+# tests
+, pytestCheckHook
+, pytest-asyncio
+, pytest-mock
+, pytest-timeout
+}:
+
+buildPythonPackage rec {
+  pname = "universal-silabs-flasher";
+  version = "0.0.13";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "NabuCasa";
+    repo = "universal-silabs-flasher";
+    rev = "v${version}";
+    hash = "sha256-qiaDPCnVb6JQ2fZRFK+QF4o8K2UbIWGNKl5oo6MQUW0=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-git-versioning
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    async-timeout
+    bellows
+    click
+    coloredlogs
+    crc
+    typing-extensions
+    zigpy
+  ] ++ lib.optionals (stdenv.hostPlatform.isLinux) [
+    libgpiod
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+    pytest-mock
+    pytest-timeout
+  ];
+
+  pythonImportsCheck = [ "universal_silabs_flasher" ];
+
+  meta = with lib; {
+    description = "Flashes Silicon Labs radios running EmberZNet or CPC multi-pan firmware";
+    homepage = "https://github.com/NabuCasa/universal-silabs-flasher";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index 73c697c46c3c..a0d3cd2517b0 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.99.0";
+  version = "0.102.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "jstasiak";
     repo = "python-zeroconf";
     rev = "refs/tags/${version}";
-    hash = "sha256-T9CDJIK/wMGExk+1Fahbq4gm+t+RRSUxca3SxkHXtJQ=";
+    hash = "sha256-Z4RswQDA05wXXyg8CeIiuh9I1EXTyXh6Z88r7soGFTo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/zwave-js-server-python/default.nix b/pkgs/development/python-modules/zwave-js-server-python/default.nix
index 7c9de5a6fbef..3669f6c70f1f 100644
--- a/pkgs/development/python-modules/zwave-js-server-python/default.nix
+++ b/pkgs/development/python-modules/zwave-js-server-python/default.nix
@@ -10,16 +10,16 @@
 
 buildPythonPackage rec {
   pname = "zwave-js-server-python";
-  version = "0.49.0";
+  version = "0.51.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-6CN2Smwm693RUuRUdqrNKa7j2I3pjmR+QoPfpjti+h8=";
+    hash = "sha256-2U0mRlNUCZD05lgGB3dz2WaUxG2dv/C7nxD2sI3R8B8=";
   };
 
   propagatedBuildInputs = [
@@ -27,8 +27,6 @@ buildPythonPackage rec {
     pydantic
   ];
 
-  doCheck = lib.versionAtLeast pytest-aiohttp.version "1.0.0";
-
   nativeCheckInputs = [
     pytest-aiohttp
     pytestCheckHook
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index eec014491376..78829b1b0014 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 = "2023.8.4";
+  version = "2023.9.0";
   components = {
     "3_day_blinds" = ps: with ps; [
     ];
@@ -638,6 +638,9 @@
     ];
     "comed_hourly_pricing" = ps: with ps; [
     ];
+    "comelit" = ps: with ps; [
+      aiocomelit
+    ];
     "comfoconnect" = ps: with ps; [
       pycomfoconnect
     ];
@@ -648,6 +651,8 @@
     ];
     "concord232" = ps: with ps; [
     ]; # missing inputs: concord232
+    "coned" = ps: with ps; [
+    ];
     "config" = ps: with ps; [
       aiohttp-cors
     ];
@@ -1049,7 +1054,7 @@
       enocean
     ];
     "enphase_envoy" = ps: with ps; [
-      envoy-reader
+      pyenphase
     ];
     "entur_public_transport" = ps: with ps; [
       enturclient
@@ -1678,6 +1683,25 @@
     ];
     "homeassistant_alerts" = ps: with ps; [
     ];
+    "homeassistant_green" = ps: with ps; [
+      aiohttp-cors
+      bellows
+      fnv-hash-fast
+      janus
+      pillow
+      psutil-home-assistant
+      pyserial
+      pyserial-asyncio
+      pyudev
+      sqlalchemy
+      universal-silabs-flasher
+      zha-quirks
+      zigpy
+      zigpy-deconz
+      zigpy-xbee
+      zigpy-zigate
+      zigpy-znp
+    ];
     "homeassistant_hardware" = ps: with ps; [
       aiohttp-cors
       bellows
@@ -1689,6 +1713,7 @@
       pyserial-asyncio
       pyudev
       sqlalchemy
+      universal-silabs-flasher
       zha-quirks
       zigpy
       zigpy-deconz
@@ -1707,6 +1732,7 @@
       pyserial-asyncio
       pyudev
       sqlalchemy
+      universal-silabs-flasher
       zha-quirks
       zigpy
       zigpy-deconz
@@ -1725,6 +1751,7 @@
       pyserial-asyncio
       pyudev
       sqlalchemy
+      universal-silabs-flasher
       zha-quirks
       zigpy
       zigpy-deconz
@@ -2183,6 +2210,8 @@
     "laundrify" = ps: with ps; [
       laundrify-aio
     ];
+    "lawn_mower" = ps: with ps; [
+    ];
     "lcn" = ps: with ps; [
       pypck
     ];
@@ -2988,6 +3017,8 @@
     ];
     "oru" = ps: with ps; [
     ]; # missing inputs: oru
+    "oru_opower" = ps: with ps; [
+    ];
     "orvibo" = ps: with ps; [
       orvibo
     ];
@@ -3007,6 +3038,7 @@
       python-otbr-api
       pyudev
       sqlalchemy
+      universal-silabs-flasher
       zeroconf
       zha-quirks
       zigpy
@@ -3445,7 +3477,8 @@
       rtsp-to-webrtc
     ];
     "ruckus_unleashed" = ps: with ps; [
-      pyruckus
+      aioruckus
+      xmltodict
     ];
     "russound_rio" = ps: with ps; [
     ]; # missing inputs: russound-rio
@@ -3537,6 +3570,9 @@
     ];
     "schedule" = ps: with ps; [
     ];
+    "schlage" = ps: with ps; [
+      pyschlage
+    ];
     "schluter" = ps: with ps; [
     ]; # missing inputs: py-schluter
     "scrape" = ps: with ps; [
@@ -4321,6 +4357,9 @@
       pytradfri
     ]
     ++ pytradfri.optional-dependencies.async;
+    "trafikverket_camera" = ps: with ps; [
+      pytrafikverket
+    ];
     "trafikverket_ferry" = ps: with ps; [
       pytrafikverket
     ];
@@ -4505,6 +4544,9 @@
     "vlc_telnet" = ps: with ps; [
       aiovlc
     ];
+    "vodafone_station" = ps: with ps; [
+      aiovodafone
+    ];
     "voicerss" = ps: with ps; [
     ];
     "voip" = ps: with ps; [
@@ -4534,11 +4576,13 @@
     "wake_on_lan" = ps: with ps; [
       wakeonlan
     ];
+    "wake_word" = ps: with ps; [
+    ];
     "wallbox" = ps: with ps; [
       wallbox
     ];
     "waqi" = ps: with ps; [
-      waqiasync
+      aiowaqi
     ];
     "water_heater" = ps: with ps; [
     ];
@@ -4551,7 +4595,7 @@
       aiowatttime
     ];
     "waze_travel_time" = ps: with ps; [
-      wazeroutecalculator
+      pywaze
     ];
     "weather" = ps: with ps; [
     ];
@@ -4729,6 +4773,8 @@
     ];
     "yandextts" = ps: with ps; [
     ];
+    "yardian" = ps: with ps; [
+    ]; # missing inputs: pyyardian
     "yeelight" = ps: with ps; [
       aiohttp-cors
       async-upnp-client
@@ -4797,6 +4843,7 @@
       pyserial-asyncio
       pyudev
       sqlalchemy
+      universal-silabs-flasher
       zha-quirks
       zigpy
       zigpy-deconz
@@ -4929,6 +4976,7 @@
     "cloudflare"
     "co2signal"
     "color_extractor"
+    "comelit"
     "comfoconnect"
     "command_line"
     "compensation"
@@ -5098,6 +5146,7 @@
     "home_plus_control"
     "homeassistant"
     "homeassistant_alerts"
+    "homeassistant_green"
     "homeassistant_hardware"
     "homeassistant_sky_connect"
     "homeassistant_yellow"
@@ -5169,6 +5218,7 @@
     "lastfm"
     "launch_library"
     "laundrify"
+    "lawn_mower"
     "lcn"
     "ld2410_ble"
     "led_ble"
@@ -5378,6 +5428,7 @@
     "samsungtv"
     "scene"
     "schedule"
+    "schlage"
     "scrape"
     "screenlogic"
     "script"
@@ -5497,6 +5548,7 @@
     "trace"
     "tractive"
     "tradfri"
+    "trafikverket_camera"
     "trafikverket_ferry"
     "trafikverket_train"
     "trafikverket_weatherstation"
@@ -5537,12 +5589,14 @@
     "vilfo"
     "vizio"
     "vlc_telnet"
+    "vodafone_station"
     "voicerss"
     "volumio"
     "volvooncall"
     "vulcan"
     "vultr"
     "wake_on_lan"
+    "wake_word"
     "wallbox"
     "water_heater"
     "watttime"
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index c6f7703718ed..26d28053947b 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -134,6 +134,16 @@ let
         };
       });
 
+      plexapi = super.plexapi.overridePythonAttrs (oldAttrs: rec {
+        version = "4.13.2";
+        src = fetchFromGitHub {
+          owner = "pkkid";
+          repo = "python-plexapi";
+          rev = "refs/tags/${version}";
+          hash = "sha256-5YwINPgQ4efZBvu5McsLYicW/7keKSi011lthJUR9zw=";
+        };
+      });
+
       # Pinned due to API changes in 0.1.0
       poolsense = super.poolsense.overridePythonAttrs (oldAttrs: rec {
         version = "0.0.8";
@@ -272,6 +282,16 @@ let
         };
       });
 
+      zeroconf = super.zeroconf.overridePythonAttrs (oldAttrs: rec {
+        version = "0.91.1";
+        src = fetchFromGitHub {
+          owner = "python-zeroconf";
+          repo = "python-zeroconf";
+          rev = "refs/tags/${version}";
+          hash = "sha256-HHADcxXjfukRJtqRjfKI/spZIqOfDT0Etg4oYzNdXIs=";
+        };
+      });
+
       # internal python packages only consumed by home-assistant itself
       home-assistant-frontend = self.callPackage ./frontend.nix { };
       home-assistant-intents = self.callPackage ./intents.nix { };
@@ -296,7 +316,7 @@ let
   extraBuildInputs = extraPackages python.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2023.8.4";
+  hassVersion = "2023.9.0";
 
 in python.pkgs.buildPythonApplication rec {
   pname = "homeassistant";
@@ -312,7 +332,7 @@ in python.pkgs.buildPythonApplication rec {
   # Primary source is the pypi sdist, because it contains translations
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Mu3DyCtF/bTrTvRKPLVEGSZfWZrF7QQy/ZvBi5IIH3s=";
+    hash = "sha256-XdZYVv60ZCkK0fKmt2kmThRxhv+hfJMtHwgBu3iaW9w=";
   };
 
   # Secondary source is git for tests
@@ -320,7 +340,7 @@ in python.pkgs.buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = "refs/tags/${version}";
-    hash = "sha256-N06e2QSt34l4T0hulndZR/czjaPcmw8YXF0iAN/XmgQ=";
+    hash = "sha256-B+GdUXRvQyBMR7PbVGEZr7hZm7wslBskUTB23APJLIU=";
   };
 
   nativeBuildInputs = with python.pkgs; [
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index 249559bf083c..72da8c22120d 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -4,7 +4,7 @@ buildPythonPackage rec {
   # the frontend version corresponding to a specific home-assistant version can be found here
   # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
   pname = "home-assistant-frontend";
-  version = "20230802.1";
+  version = "20230906.1";
   format = "wheel";
 
   src = fetchPypi {
@@ -12,7 +12,7 @@ buildPythonPackage rec {
     pname = "home_assistant_frontend";
     dist = "py3";
     python = "py3";
-    hash = "sha256-kG2FGX78pd1vbRH6DtB2rXV0AlcUfaHO0z5Vft0hswE=";
+    hash = "sha256-wR/v49K4bKNnzkRltvdFjVYgZ+jU8PVBJHCF765NY5U=";
   };
 
   # there is nothing to strip in this package
diff --git a/pkgs/servers/home-assistant/patches/ffmpeg-path.patch b/pkgs/servers/home-assistant/patches/ffmpeg-path.patch
index a4177a35f484..8a83618b1a4b 100644
--- a/pkgs/servers/home-assistant/patches/ffmpeg-path.patch
+++ b/pkgs/servers/home-assistant/patches/ffmpeg-path.patch
@@ -11,11 +11,69 @@ index a98766c78c..1c47bb1f80 100644
  
  CONFIG_SCHEMA = vol.Schema(
      {
+diff --git a/tests/components/ffmpeg/test_binary_sensor.py b/tests/components/ffmpeg/test_binary_sensor.py
+index 6eec115d6f..c55b4fb26c 100644
+--- a/tests/components/ffmpeg/test_binary_sensor.py
++++ b/tests/components/ffmpeg/test_binary_sensor.py
+@@ -24,7 +24,7 @@ async def test_noise_setup_component(hass: HomeAssistant) -> None:
+         await async_setup_component(hass, "binary_sensor", CONFIG_NOISE)
+     await hass.async_block_till_done()
+ 
+-    assert hass.data["ffmpeg"].binary == "ffmpeg"
++    assert hass.data["ffmpeg"].binary == "@ffmpeg@"
+     assert hass.states.get("binary_sensor.ffmpeg_noise") is not None
+ 
+ 
+@@ -35,7 +35,7 @@ async def test_noise_setup_component_start(mock_start, hass: HomeAssistant):
+         await async_setup_component(hass, "binary_sensor", CONFIG_NOISE)
+     await hass.async_block_till_done()
+ 
+-    assert hass.data["ffmpeg"].binary == "ffmpeg"
++    assert hass.data["ffmpeg"].binary == "@ffmpeg@"
+     assert hass.states.get("binary_sensor.ffmpeg_noise") is not None
+ 
+     hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
+@@ -55,7 +55,7 @@ async def test_noise_setup_component_start_callback(mock_ffmpeg, hass: HomeAssis
+         await async_setup_component(hass, "binary_sensor", CONFIG_NOISE)
+     await hass.async_block_till_done()
+ 
+-    assert hass.data["ffmpeg"].binary == "ffmpeg"
++    assert hass.data["ffmpeg"].binary == "@ffmpeg@"
+     assert hass.states.get("binary_sensor.ffmpeg_noise") is not None
+ 
+     hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
+@@ -80,7 +80,7 @@ async def test_motion_setup_component(hass: HomeAssistant) -> None:
+         await async_setup_component(hass, "binary_sensor", CONFIG_MOTION)
+     await hass.async_block_till_done()
+ 
+-    assert hass.data["ffmpeg"].binary == "ffmpeg"
++    assert hass.data["ffmpeg"].binary == "@ffmpeg@"
+     assert hass.states.get("binary_sensor.ffmpeg_motion") is not None
+ 
+ 
+@@ -91,7 +91,7 @@ async def test_motion_setup_component_start(mock_start, hass: HomeAssistant):
+         await async_setup_component(hass, "binary_sensor", CONFIG_MOTION)
+     await hass.async_block_till_done()
+ 
+-    assert hass.data["ffmpeg"].binary == "ffmpeg"
++    assert hass.data["ffmpeg"].binary == "@ffmpeg@"
+     assert hass.states.get("binary_sensor.ffmpeg_motion") is not None
+ 
+     hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
+@@ -111,7 +111,7 @@ async def test_motion_setup_component_start_callback(mock_ffmpeg, hass: HomeAssi
+         await async_setup_component(hass, "binary_sensor", CONFIG_MOTION)
+     await hass.async_block_till_done()
+ 
+-    assert hass.data["ffmpeg"].binary == "ffmpeg"
++    assert hass.data["ffmpeg"].binary == "@ffmpeg@"
+     assert hass.states.get("binary_sensor.ffmpeg_motion") is not None
+ 
+     hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
 diff --git a/tests/components/ffmpeg/test_init.py b/tests/components/ffmpeg/test_init.py
-index 521ac732e5..ab8a56934f 100644
+index 0c6ce300d0..ff74a5d7f7 100644
 --- a/tests/components/ffmpeg/test_init.py
 +++ b/tests/components/ffmpeg/test_init.py
-@@ -87,7 +87,7 @@ class TestFFmpegSetup:
+@@ -91,7 +91,7 @@ class TestFFmpegSetup:
          with assert_setup_component(1):
              setup_component(self.hass, ffmpeg.DOMAIN, {ffmpeg.DOMAIN: {}})
  
@@ -24,61 +82,3 @@ index 521ac732e5..ab8a56934f 100644
  
      def test_setup_component_test_service(self):
          """Set up ffmpeg component test services."""
-diff --git a/tests/components/ffmpeg/test_sensor.py b/tests/components/ffmpeg/test_sensor.py
-index a6c9c1f441..f13091da1a 100644
---- a/tests/components/ffmpeg/test_sensor.py
-+++ b/tests/components/ffmpeg/test_sensor.py
-@@ -27,7 +27,7 @@ class TestFFmpegNoiseSetup:
-             setup_component(self.hass, "binary_sensor", self.config)
-         self.hass.block_till_done()
- 
--        assert self.hass.data["ffmpeg"].binary == "ffmpeg"
-+        assert self.hass.data["ffmpeg"].binary == "@ffmpeg@"
-         assert self.hass.states.get("binary_sensor.ffmpeg_noise") is not None
- 
-     @patch("haffmpeg.sensor.SensorNoise.open_sensor", return_value=mock_coro())
-@@ -37,7 +37,7 @@ class TestFFmpegNoiseSetup:
-             setup_component(self.hass, "binary_sensor", self.config)
-         self.hass.block_till_done()
- 
--        assert self.hass.data["ffmpeg"].binary == "ffmpeg"
-+        assert self.hass.data["ffmpeg"].binary == "@ffmpeg@"
-         assert self.hass.states.get("binary_sensor.ffmpeg_noise") is not None
- 
-         self.hass.start()
-@@ -53,7 +53,7 @@ class TestFFmpegNoiseSetup:
-             setup_component(self.hass, "binary_sensor", self.config)
-         self.hass.block_till_done()
- 
--        assert self.hass.data["ffmpeg"].binary == "ffmpeg"
-+        assert self.hass.data["ffmpeg"].binary == "@ffmpeg@"
-         assert self.hass.states.get("binary_sensor.ffmpeg_noise") is not None
- 
-         self.hass.start()
-@@ -89,7 +89,7 @@ class TestFFmpegMotionSetup:
-             setup_component(self.hass, "binary_sensor", self.config)
-         self.hass.block_till_done()
- 
--        assert self.hass.data["ffmpeg"].binary == "ffmpeg"
-+        assert self.hass.data["ffmpeg"].binary == "@ffmpeg@"
-         assert self.hass.states.get("binary_sensor.ffmpeg_motion") is not None
- 
-     @patch("haffmpeg.sensor.SensorMotion.open_sensor", return_value=mock_coro())
-@@ -99,7 +99,7 @@ class TestFFmpegMotionSetup:
-             setup_component(self.hass, "binary_sensor", self.config)
-         self.hass.block_till_done()
- 
--        assert self.hass.data["ffmpeg"].binary == "ffmpeg"
-+        assert self.hass.data["ffmpeg"].binary == "@ffmpeg@"
-         assert self.hass.states.get("binary_sensor.ffmpeg_motion") is not None
- 
-         self.hass.start()
-@@ -115,7 +115,7 @@ class TestFFmpegMotionSetup:
-             setup_component(self.hass, "binary_sensor", self.config)
-         self.hass.block_till_done()
- 
--        assert self.hass.data["ffmpeg"].binary == "ffmpeg"
-+        assert self.hass.data["ffmpeg"].binary == "@ffmpeg@"
-         assert self.hass.states.get("binary_sensor.ffmpeg_motion") is not None
- 
-         self.hass.start()
diff --git a/pkgs/servers/home-assistant/stubs.nix b/pkgs/servers/home-assistant/stubs.nix
index fa2bdee5f89f..b838dabe2dcb 100644
--- a/pkgs/servers/home-assistant/stubs.nix
+++ b/pkgs/servers/home-assistant/stubs.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "homeassistant-stubs";
-  version = "2023.8.4";
+  version = "2023.9.0";
   format = "pyproject";
 
   disabled = python.version != home-assistant.python.version;
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "KapJI";
     repo = "homeassistant-stubs";
     rev = "refs/tags/${version}";
-    hash = "sha256-Oxge6gZ7m0ZFuJKIy6X9YgmC7aK2/oQWJAYCFTclZ/Y=";
+    hash = "sha256-7G6IIOrQGRF7zLr+2WlZTvixyyoFqrLJiC/BNqUqx20=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/servers/home-assistant/tests.nix b/pkgs/servers/home-assistant/tests.nix
index 154f8dc2f279..f2c904467852 100644
--- a/pkgs/servers/home-assistant/tests.nix
+++ b/pkgs/servers/home-assistant/tests.nix
@@ -39,6 +39,14 @@ let
   };
 
   extraDisabledTests = {
+    mqtt = [
+      # Assert None is not None
+      "test_handle_logging_on_writing_the_entity_state"
+    ];
+    shell_command = [
+      # tries to retrieve file from github
+      "test_non_text_stdout_capture"
+    ];
     vesync = [
       # homeassistant.components.vesync:config_validation.py:863 The 'vesync' option has been removed, please remove it from your configuration
       "test_async_get_config_entry_diagnostics__single_humidifier"
diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix
index 74a20905a574..d79138fdf3ea 100644
--- a/pkgs/top-level/python-aliases.nix
+++ b/pkgs/top-level/python-aliases.nix
@@ -290,6 +290,7 @@ mapAliases ({
   Pyro4 = pyro4; # added 2023-02-19
   Pyro5 = pyro5; # added 2023-02-19
   PyRSS2Gen = pyrss2gen; # added 2023-02-19
+  pyruckus = throw "pyruckus has been removed, it was deprecrated in favor of aioruckus."; # added 2023-09-07
   pysha3 = throw "pysha3 has been removed, use safe-pysha3 instead"; # added 2023-05-20
   pysmart-smartx = pysmart; # added 2021-10-22
   pysparse = throw "pysparse has been abandoned upstream."; # added 2023-02-28
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index bb30e32f7bde..2b007f59c5d6 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -172,6 +172,8 @@ self: super: with self; {
 
   aiocoap = callPackage ../development/python-modules/aiocoap { };
 
+  aiocomelit = callPackage ../development/python-modules/aiocomelit { };
+
   aioconsole = callPackage ../development/python-modules/aioconsole { };
 
   aiocontextvars = callPackage ../development/python-modules/aiocontextvars { };
@@ -344,6 +346,8 @@ self: super: with self; {
 
   aiortm = callPackage ../development/python-modules/aiortm { };
 
+  aioruckus = callPackage ../development/python-modules/aioruckus { };
+
   aiorun = callPackage ../development/python-modules/aiorun { };
 
   aioruuvigateway = callPackage ../development/python-modules/aioruuvigateway { };
@@ -394,8 +398,12 @@ self: super: with self; {
 
   aiovlc = callPackage ../development/python-modules/aiovlc { };
 
+  aiovodafone = callPackage ../development/python-modules/aiovodafone { };
+
   aiowatttime = callPackage ../development/python-modules/aiowatttime { };
 
+  aiowaqi = callPackage ../development/python-modules/aiowaqi { };
+
   aioweenect = callPackage ../development/python-modules/aioweenect { };
 
   aiowebostv = callPackage ../development/python-modules/aiowebostv { };
@@ -9839,8 +9847,6 @@ self: super: with self; {
 
   pyrtlsdr = callPackage ../development/python-modules/pyrtlsdr { };
 
-  pyruckus = callPackage ../development/python-modules/pyruckus { };
-
   pysaj = callPackage ../development/python-modules/pysaj { };
 
   pysam = callPackage ../development/python-modules/pysam { };
@@ -10782,6 +10788,8 @@ self: super: with self; {
 
   pywayland = callPackage ../development/python-modules/pywayland { };
 
+  pywaze = callPackage ../development/python-modules/pywaze { };
+
   pywbem = callPackage ../development/python-modules/pywbem {
     inherit (pkgs) libxml2;
   };
@@ -13384,6 +13392,8 @@ self: super: with self; {
 
   universal-pathlib = callPackage ../development/python-modules/universal-pathlib { };
 
+  universal-silabs-flasher = callPackage ../development/python-modules/universal-silabs-flasher { };
+
   unpaddedbase64 = callPackage ../development/python-modules/unpaddedbase64 { };
 
   unrardll = callPackage ../development/python-modules/unrardll { };