# GenvexNabto
Library for local interfacing with HVAC systems running Genvex Connect or Nilan gateways. These systems are typically cloud-accessible, but after extensive development, a local solution is now available.
### Supported controller models
|Controller | Gateway required | Supported | Tested |
|------------------:|:---------------------:|:---------------:|:-------:|
|Optima 250 | Yes, internet gateway | ✅ | ✅ |
|Optima 251 | Yes, internet gateway | ✅ | ✅ |
|Optima 260 | Yes, internet gateway | ✅ | |
|Optima 270 | Built in | ✅ | ✅ |
|Optima 301 | Yes, internet gateway | ✅ | ✅ |
|Optima 312 | Yes, internet gateway | ✅ | |
|Optima 314 | Built in | ✅ | |
|Nilan CTS400 | Yes, nilan gateway | ✅ | ✅ |
|Nilan CTS602 | Yes, nilan gateway | ✅ | ✅ |
|Nilan CTS602 Light | Yes, nilan gateway | ✅ | |
|Nilan CTS602 Geo | Yes, nilan gateway | ✅ | |
For controllers that require a gateway, it is mandatory that the device supports Modbus. Note that Optima controllers delivered before 2014 may not have Modbus support.
# How the libary works
Both Genvex Connect and Nilan gateways use the proprietary "Micro Nabto" protocol. Information about this protocol is limited, with most official documentation being removed from the internet following the companies' release of "Nabto Edge," which is largely incompatible with the older "Micro Nabto."
Typically, users connect via a dedicated app. The app loads a large, 6MB+ closed-source binary client for Nabto communication. A major limitation is that the binary is only available for Win32, Linux, Mac, Android, and iOS. There are no generic Linux ARM binaries, meaning implementing a Home Assistant custom component with these binaries would exclude widely used platforms like the Raspberry Pi.
The binary scans for available gateways by broadcasting a UDP packet. This packet either includes a specific device identifier or a wildcard (*) to request a response from any gateway. Gateways that are available will reply with their unique identifier over the same UDP IP and port to which the broadcast was sent.
While the normal connection process is handled online, it is encrypted and obfuscated. Significant progress has been made in reverse-engineering the online flow, leading to the discovery of a local connection method.
The local connection flow allows for direct communication with compatible gateways, using the user's email as the password.
# Obligatory statement
The contributors are not responsible for any damages resulting from the use of this libary. No warranty is provided.
Raw data
{
"_id": null,
"home_page": "https://github.com/superrob/genvexnabto",
"name": "genvexnabto",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "Genvex, Genvex Connect, Nabto, Optima 270, Optima 260, Optima 251, Optima 250, library, Home Automation, Nilan, CTS 602, CTS 400",
"author": "Superrob",
"author_email": "robin@robserob.dk",
"download_url": "https://files.pythonhosted.org/packages/11/5d/b49c1ca979e701153e8b98b3024e46443215f15507dbfdcd29b513b9831a/genvexnabto-1.2.3.2.tar.gz",
"platform": null,
"description": "# GenvexNabto\nLibrary for local interfacing with HVAC systems running Genvex Connect or Nilan gateways. These systems are typically cloud-accessible, but after extensive development, a local solution is now available. \n\n### Supported controller models\n|Controller | Gateway required | Supported | Tested |\n|------------------:|:---------------------:|:---------------:|:-------:|\n|Optima 250 | Yes, internet gateway | \u2705 | \u2705 |\n|Optima 251 | Yes, internet gateway | \u2705 | \u2705 |\n|Optima 260 | Yes, internet gateway | \u2705 | |\n|Optima 270 | Built in | \u2705 | \u2705 |\n|Optima 301 | Yes, internet gateway | \u2705 | \u2705 |\n|Optima 312 | Yes, internet gateway | \u2705 | |\n|Optima 314 | Built in | \u2705 | |\n|Nilan CTS400 | Yes, nilan gateway | \u2705 | \u2705 |\n|Nilan CTS602 | Yes, nilan gateway | \u2705 | \u2705 |\n|Nilan CTS602 Light | Yes, nilan gateway | \u2705 | |\n|Nilan CTS602 Geo | Yes, nilan gateway | \u2705 | |\n\nFor controllers that require a gateway, it is mandatory that the device supports Modbus. Note that Optima controllers delivered before 2014 may not have Modbus support.\n\n# How the libary works\nBoth Genvex Connect and Nilan gateways use the proprietary \"Micro Nabto\" protocol. Information about this protocol is limited, with most official documentation being removed from the internet following the companies' release of \"Nabto Edge,\" which is largely incompatible with the older \"Micro Nabto.\"\n\nTypically, users connect via a dedicated app. The app loads a large, 6MB+ closed-source binary client for Nabto communication. A major limitation is that the binary is only available for Win32, Linux, Mac, Android, and iOS. There are no generic Linux ARM binaries, meaning implementing a Home Assistant custom component with these binaries would exclude widely used platforms like the Raspberry Pi.\n\nThe binary scans for available gateways by broadcasting a UDP packet. This packet either includes a specific device identifier or a wildcard (*) to request a response from any gateway. Gateways that are available will reply with their unique identifier over the same UDP IP and port to which the broadcast was sent.\n\nWhile the normal connection process is handled online, it is encrypted and obfuscated. Significant progress has been made in reverse-engineering the online flow, leading to the discovery of a local connection method.\n\nThe local connection flow allows for direct communication with compatible gateways, using the user's email as the password.\n\n# Obligatory statement\nThe contributors are not responsible for any damages resulting from the use of this libary. No warranty is provided.\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "A library to interface with Genvex Connect enabled ventilation units.",
"version": "1.2.3.2",
"project_urls": {
"Homepage": "https://github.com/superrob/genvexnabto"
},
"split_keywords": [
"genvex",
" genvex connect",
" nabto",
" optima 270",
" optima 260",
" optima 251",
" optima 250",
" library",
" home automation",
" nilan",
" cts 602",
" cts 400"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "af9616f0645a052c76cbe1028fe7568468a1e932b4dd0e636384535c90cda605",
"md5": "5ff0733529525a727a1c83414f793813",
"sha256": "49abc94d584297d37622b90bd2307db850bb36d1425098095029f0d57cd8e4d8"
},
"downloads": -1,
"filename": "genvexnabto-1.2.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5ff0733529525a727a1c83414f793813",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 40358,
"upload_time": "2025-01-07T21:45:58",
"upload_time_iso_8601": "2025-01-07T21:45:58.001011Z",
"url": "https://files.pythonhosted.org/packages/af/96/16f0645a052c76cbe1028fe7568468a1e932b4dd0e636384535c90cda605/genvexnabto-1.2.3.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "115db49c1ca979e701153e8b98b3024e46443215f15507dbfdcd29b513b9831a",
"md5": "46a5a0a0d11a6ce19ec06a62a5315045",
"sha256": "35c0e69b00468826c88c789d636583be1f20c534a333813805c8c8e044f47a53"
},
"downloads": -1,
"filename": "genvexnabto-1.2.3.2.tar.gz",
"has_sig": false,
"md5_digest": "46a5a0a0d11a6ce19ec06a62a5315045",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 29901,
"upload_time": "2025-01-07T21:45:59",
"upload_time_iso_8601": "2025-01-07T21:45:59.877546Z",
"url": "https://files.pythonhosted.org/packages/11/5d/b49c1ca979e701153e8b98b3024e46443215f15507dbfdcd29b513b9831a/genvexnabto-1.2.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-07 21:45:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "superrob",
"github_project": "genvexnabto",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "genvexnabto"
}