diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 811d250a..2e798b76 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ ci: repos: - repo: https://github.com/asottile/pyupgrade - rev: v3.1.0 + rev: v3.2.0 hooks: - id: pyupgrade args: [--py38-plus] @@ -70,9 +70,10 @@ repos: additional_dependencies: [flake8-typing-imports==1.11.0] - repo: https://github.com/asottile/setup-cfg-fmt - rev: v2.1.0 + rev: v2.2.0 hooks: - id: setup-cfg-fmt + args: [--include-version-classifiers] - repo: local hooks: diff --git a/CHANGELOG.md b/CHANGELOG.md index 60389c90..9495dffd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - +## [7.4.0] + +### Added + +- Add NLUF device stub + +### Changed + +- Update test fixture data to be in line with HA tests + +### Fixed + +- Handle unknown device types and log +- Fix misc device types and add stubs for unknown + ## [7.3.0] ### Added diff --git a/Pipfile.lock b/Pipfile.lock index d6cb1116..8e4eb28a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -112,7 +112,7 @@ "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==1.2.0" }, "async-timeout": { @@ -120,7 +120,7 @@ "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==4.0.2" }, "attrs": { @@ -136,7 +136,7 @@ "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==2022.9.24" }, "charset-normalizer": { @@ -144,7 +144,7 @@ "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==2.1.1" }, "frozenlist": { @@ -290,7 +290,7 @@ "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca", "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==3.2.2" }, "requests": { @@ -440,7 +440,7 @@ "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==2022.9.24" }, "cfgv": { @@ -456,7 +456,7 @@ "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==2.1.1" }, "click": { @@ -558,11 +558,11 @@ }, "exceptiongroup": { "hashes": [ - "sha256:2ac84b496be68464a2da60da518af3785fff8b7ec0d090a581604bc870bdee41", - "sha256:affbabf13fb6e98988c38d9c5650e701569fe3c1de3233cfb61c5f33774690ad" + "sha256:4d6c0aa6dd825810941c792f53d7b8d71da26f5e5f84f20f9508e8f2d33b140a", + "sha256:73866f7f842ede6cb1daa42c4af078e2035e5f7607f0e2c762cc51bb31bbe7b2" ], "markers": "python_version < '3.11'", - "version": "==1.0.0" + "version": "==1.0.1" }, "filelock": { "hashes": [ @@ -601,7 +601,7 @@ "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab", "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43" ], - "markers": "python_version >= '3.7'", + "markers": "python_version < '3.12'", "version": "==5.0.0" }, "iniconfig": { @@ -629,11 +629,11 @@ }, "keyring": { "hashes": [ - "sha256:69732a15cb1433bdfbc3b980a8a36a04878a6cfd7cb99f497b573f31618001c0", - "sha256:69b01dd83c42f590250fe7a1f503fc229b14de83857314b1933a3ddbf595c4a5" + "sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e", + "sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361" ], "markers": "python_version >= '3.7'", - "version": "==23.9.3" + "version": "==23.11.0" }, "lazy-object-proxy": { "hashes": [ @@ -861,7 +861,7 @@ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pyyaml": { @@ -912,11 +912,11 @@ }, "readme-renderer": { "hashes": [ - "sha256:d3f06a69e8c40fca9ab3174eca48f96d9771eddb43517b17d96583418427b106", - "sha256:e8ad25293c98f781dbc2c5a36a309929390009f902f99e1798c761aaf04a7923" + "sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273", + "sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343" ], "markers": "python_version >= '3.7'", - "version": "==37.2" + "version": "==37.3" }, "requests": { "hashes": [ @@ -955,23 +955,15 @@ "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e", "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0" ], - "markers": "python_full_version >= '3.6.3' and python_version < '4'", + "markers": "python_version < '4.0' and python_full_version >= '3.6.3'", "version": "==12.6.0" }, - "setuptools": { - "hashes": [ - "sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17", - "sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356" - ], - "markers": "python_version >= '3.7'", - "version": "==65.5.0" - }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "time-machine": { @@ -1035,7 +1027,7 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, "tomli": { @@ -1043,7 +1035,7 @@ "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '3.7' and python_version < '3.11'", + "markers": "python_version < '3.11' and python_version >= '3.7'", "version": "==2.0.1" }, "tomlkit": { @@ -1075,7 +1067,7 @@ "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" ], - "markers": "python_version >= '3.7'", + "markers": "python_version < '3.10'", "version": "==4.4.0" }, "urllib3": { diff --git a/fixtures/getpublicdata.json b/fixtures/getpublicdata.json index 55202713..4866093e 100644 --- a/fixtures/getpublicdata.json +++ b/fixtures/getpublicdata.json @@ -3,390 +3,270 @@ "time_server": 1560248397, "time_exec": 0, "body": [ - { - "_id": "70:ee:50:36:94:7c", - "place": { - "location": [ - 8.791382999999996, - 50.2136394 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 132 + { + "_id": "70:ee:50:36:94:7c", + "place": { + "location": [8.791382999999996, 50.2136394], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 132 + }, + "mark": 14, + "measures": { + "02:00:00:36:f2:94": { + "res": { + "1560248022": [21.4, 62] }, - "mark": 14, - "measures": { - "02:00:00:36:f2:94": { - "res": { - "1560248022": [ - 21.4, - 62 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:36:94:7c": { - "res": { - "1560248030": [ - 1010.6 - ] - }, - "type": [ - "pressure" - ] - }, - "05:00:00:05:33:84": { - "rain_60min": 0.2, - "rain_24h": 12.322000000000001, - "rain_live": 0.5, - "rain_timeutc": 1560248022 - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:36:94:7c": { + "res": { + "1560248030": [1010.6] }, - "modules": [ - "05:00:00:05:33:84", - "02:00:00:36:f2:94" - ], - "module_types": { - "05:00:00:05:33:84": "NAModule3", - "02:00:00:36:f2:94": "NAModule1" - } + "type": ["pressure"] + }, + "05:00:00:05:33:84": { + "rain_60min": 0.2, + "rain_24h": 12.322000000000001, + "rain_live": 0.5, + "rain_timeutc": 1560248022 + } + }, + "modules": ["05:00:00:05:33:84", "02:00:00:36:f2:94"], + "module_types": { + "05:00:00:05:33:84": "NAModule3", + "02:00:00:36:f2:94": "NAModule1" + } + }, + { + "_id": "70:ee:50:1f:68:9e", + "place": { + "location": [8.795445200000017, 50.2130169], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 125 }, - { - "_id": "70:ee:50:1f:68:9e", - "place": { - "location": [ - 8.795445200000017, - 50.2130169 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 125 + "mark": 14, + "measures": { + "02:00:00:1f:82:28": { + "res": { + "1560248312": [21.1, 69] }, - "mark": 14, - "measures": { - "02:00:00:1f:82:28": { - "res": { - "1560248312": [ - 21.1, - 69 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:1f:68:9e": { - "res": { - "1560248344": [ - 1007.3 - ] - }, - "type": [ - "pressure" - ] - }, - "05:00:00:02:bb:6e": { - "rain_60min": 0, - "rain_24h": 9.999, - "rain_live": 0, - "rain_timeutc": 1560248344 - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:1f:68:9e": { + "res": { + "1560248344": [1007.3] }, - "modules": [ - "02:00:00:1f:82:28", - "05:00:00:02:bb:6e" - ], - "module_types": { - "02:00:00:1f:82:28": "NAModule1", - "05:00:00:02:bb:6e": "NAModule3" - } + "type": ["pressure"] + }, + "05:00:00:02:bb:6e": { + "rain_60min": 0, + "rain_24h": 9.999, + "rain_live": 0, + "rain_timeutc": 1560248344 + } + }, + "modules": ["02:00:00:1f:82:28", "05:00:00:02:bb:6e"], + "module_types": { + "02:00:00:1f:82:28": "NAModule1", + "05:00:00:02:bb:6e": "NAModule3" + } + }, + { + "_id": "70:ee:50:27:25:b0", + "place": { + "location": [8.7807159, 50.1946167], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 112 }, - { - "_id": "70:ee:50:27:25:b0", - "place": { - "location": [ - 8.7807159, - 50.1946167 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 112 + "mark": 14, + "measures": { + "02:00:00:27:19:b2": { + "res": { + "1560247889": [23.2, 60] }, - "mark": 14, - "measures": { - "02:00:00:27:19:b2": { - "res": { - "1560247889": [ - 23.2, - 60 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:27:25:b0": { - "res": { - "1560247907": [ - 1012.8 - ] - }, - "type": [ - "pressure" - ] - }, - "05:00:00:03:5d:2e": { - "rain_60min": 0, - "rain_24h": 11.716000000000001, - "rain_live": 0, - "rain_timeutc": 1560247896 - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:27:25:b0": { + "res": { + "1560247907": [1012.8] }, - "modules": [ - "02:00:00:27:19:b2", - "05:00:00:03:5d:2e" - ], - "module_types": { - "02:00:00:27:19:b2": "NAModule1", - "05:00:00:03:5d:2e": "NAModule3" - } + "type": ["pressure"] + }, + "05:00:00:03:5d:2e": { + "rain_60min": 0, + "rain_24h": 11.716000000000001, + "rain_live": 0, + "rain_timeutc": 1560247896 + } + }, + "modules": ["02:00:00:27:19:b2", "05:00:00:03:5d:2e"], + "module_types": { + "02:00:00:27:19:b2": "NAModule1", + "05:00:00:03:5d:2e": "NAModule3" + } + }, + { + "_id": "70:ee:50:04:ed:7a", + "place": { + "location": [8.785034, 50.192169], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 112 }, - { - "_id": "70:ee:50:04:ed:7a", - "place": { - "location": [ - 8.785034, - 50.192169 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 112 + "mark": 14, + "measures": { + "02:00:00:04:c2:2e": { + "res": { + "1560248137": [19.8, 76] }, - "mark": 14, - "measures": { - "02:00:00:04:c2:2e": { - "res": { - "1560248137": [ - 19.8, - 76 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:04:ed:7a": { - "res": { - "1560248152": [ - 1005.4 - ] - }, - "type": [ - "pressure" - ] - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:04:ed:7a": { + "res": { + "1560248152": [1005.4] }, - "modules": [ - "02:00:00:04:c2:2e" - ], - "module_types": { - "02:00:00:04:c2:2e": "NAModule1" - } + "type": ["pressure"] + } + }, + "modules": ["02:00:00:04:c2:2e"], + "module_types": { + "02:00:00:04:c2:2e": "NAModule1" + } + }, + { + "_id": "70:ee:50:27:9f:2c", + "place": { + "location": [8.785342, 50.193573], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 116 }, - { - "_id": "70:ee:50:27:9f:2c", - "place": { - "location": [ - 8.785342, - 50.193573 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 116 + "mark": 1, + "measures": { + "02:00:00:27:aa:70": { + "res": { + "1560247821": [25.5, 56] }, - "mark": 1, - "measures": { - "02:00:00:27:aa:70": { - "res": { - "1560247821": [ - 25.5, - 56 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:27:9f:2c": { - "res": { - "1560247853": [ - 1010.6 - ] - }, - "type": [ - "pressure" - ] - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:27:9f:2c": { + "res": { + "1560247853": [1010.6] }, - "modules": [ - "02:00:00:27:aa:70" - ], - "module_types": { - "02:00:00:27:aa:70": "NAModule1" - } + "type": ["pressure"] + } + }, + "modules": ["02:00:00:27:aa:70"], + "module_types": { + "02:00:00:27:aa:70": "NAModule1" + } + }, + { + "_id": "70:ee:50:01:20:fa", + "place": { + "location": [8.7953, 50.195241], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 119 }, - { - "_id": "70:ee:50:01:20:fa", - "place": { - "location": [ - 8.7953, - 50.195241 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 119 + "mark": 1, + "measures": { + "02:00:00:00:f7:ba": { + "res": { + "1560247831": [27.4, 58] }, - "mark": 1, - "measures": { - "02:00:00:00:f7:ba": { - "res": { - "1560247831": [ - 27.4, - 58 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:01:20:fa": { - "res": { - "1560247876": [ - 1014.4 - ] - }, - "type": [ - "pressure" - ] - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:01:20:fa": { + "res": { + "1560247876": [1014.4] }, - "modules": [ - "02:00:00:00:f7:ba" - ], - "module_types": { - "02:00:00:00:f7:ba": "NAModule1" - } + "type": ["pressure"] + } + }, + "modules": ["02:00:00:00:f7:ba"], + "module_types": { + "02:00:00:00:f7:ba": "NAModule1" + } + }, + { + "_id": "70:ee:50:3c:02:78", + "place": { + "location": [8.795953681700666, 50.19530139868166], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 119 }, - { - "_id": "70:ee:50:3c:02:78", - "place": { - "location": [ - 8.795953681700666, - 50.19530139868166 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 119 + "mark": 7, + "measures": { + "02:00:00:3c:21:f2": { + "res": { + "1560248225": [23.3, 58] }, - "mark": 7, - "measures": { - "02:00:00:3c:21:f2": { - "res": { - "1560248225": [ - 23.3, - 58 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:3c:02:78": { - "res": { - "1560248270": [ - 1011.7 - ] - }, - "type": [ - "pressure" - ] - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:3c:02:78": { + "res": { + "1560248270": [1011.7] }, - "modules": [ - "02:00:00:3c:21:f2" - ], - "module_types": { - "02:00:00:3c:21:f2": "NAModule1" - } + "type": ["pressure"] + } + }, + "modules": ["02:00:00:3c:21:f2"], + "module_types": { + "02:00:00:3c:21:f2": "NAModule1" + } + }, + { + "_id": "70:ee:50:36:a9:fc", + "place": { + "location": [8.801164269110814, 50.19596181704958], + "timezone": "Europe/Berlin", + "country": "DE", + "altitude": 113 }, - { - "_id": "70:ee:50:36:a9:fc", - "place": { - "location": [ - 8.801164269110814, - 50.19596181704958 - ], - "timezone": "Europe/Berlin", - "country": "DE", - "altitude": 113 + "mark": 14, + "measures": { + "02:00:00:36:a9:50": { + "res": { + "1560248145": [20.1, 67] }, - "mark": 14, - "measures": { - "02:00:00:36:a9:50": { - "res": { - "1560248145": [ - 20.1, - 67 - ] - }, - "type": [ - "temperature", - "humidity" - ] - }, - "70:ee:50:36:a9:fc": { - "res": { - "1560248191": [ - 1010 - ] - }, - "type": [ - "pressure" - ] - }, - "05:00:00:02:92:82": { - "rain_60min": 0, - "rain_24h": 11.009, - "rain_live": 0, - "rain_timeutc": 1560248184 - }, - "06:00:00:03:19:76": { - "wind_strength": 15, - "wind_angle": 17, - "gust_strength": 31, - "gust_angle": 217, - "wind_timeutc": 1560248190 - } + "type": ["temperature", "humidity"] + }, + "70:ee:50:36:a9:fc": { + "res": { + "1560248191": [1010] }, - "modules": [ - "05:00:00:02:92:82", - "02:00:00:36:a9:50", - "06:00:00:03:19:76" - ], - "module_types": { - "05:00:00:02:92:82": "NAModule3", - "02:00:00:36:a9:50": "NAModule1", - "06:00:00:03:19:76": "NAModule2" - } + "type": ["pressure"] + }, + "05:00:00:02:92:82": { + "rain_60min": 0, + "rain_24h": 11.009, + "rain_live": 0, + "rain_timeutc": 1560248184 + }, + "06:00:00:03:19:76": { + "wind_strength": 15, + "wind_angle": 17, + "gust_strength": 31, + "gust_angle": 217, + "wind_timeutc": 1560248190 + } + }, + "modules": [ + "05:00:00:02:92:82", + "02:00:00:36:a9:50", + "06:00:00:03:19:76" + ], + "module_types": { + "05:00:00:02:92:82": "NAModule3", + "02:00:00:36:a9:50": "NAModule1", + "06:00:00:03:19:76": "NAModule2" } + } ] -} \ No newline at end of file + } + \ No newline at end of file diff --git a/fixtures/getstationsdata.json b/fixtures/getstationsdata.json index 870f8ec9..822cf9dd 100644 --- a/fixtures/getstationsdata.json +++ b/fixtures/getstationsdata.json @@ -1,834 +1,652 @@ { "body": { - "devices": [ + "devices": [ + { + "_id": "12:34:56:37:11:ca", + "cipher_id": "enc:16:zjiZF/q8jTScXVdDa/kvhUAIUPGeYszaD1ClEf8byAJkRjxc5oth7cAocrMUIApX", + "date_setup": 1544558432, + "last_setup": 1544558432, + "type": "NAMain", + "last_status_store": 1559413181, + "module_name": "NetatmoIndoor", + "firmware": 137, + "last_upgrade": 1544558433, + "wifi_status": 45, + "reachable": true, + "co2_calibrating": false, + "station_name": "MyStation", + "data_type": ["Temperature", "CO2", "Humidity", "Noise", "Pressure"], + "place": { + "altitude": 664, + "city": "Frankfurt", + "country": "DE", + "timezone": "Europe/Berlin", + "location": [52.516263, 13.377726] + }, + "dashboard_data": { + "time_utc": 1559413171, + "Temperature": 24.6, + "CO2": 749, + "Humidity": 36, + "Noise": 37, + "Pressure": 1017.3, + "AbsolutePressure": 939.7, + "min_temp": 23.4, + "max_temp": 25.6, + "date_min_temp": 1559371924, + "date_max_temp": 1559411964, + "temp_trend": "stable", + "pressure_trend": "down" + }, + "modules": [ { - "_id": "12:34:56:37:11:ca", - "cipher_id": "enc:16:zjiZF/q8jTScXVdDa/kvhUAIUPGeYszaD1ClEf8byAJkRjxc5oth7cAocrMUIApX", - "date_setup": 1544558432, - "last_setup": 1544558432, - "type": "NAMain", - "last_status_store": 1559413181, - "module_name": "NetatmoIndoor", - "firmware": 137, - "last_upgrade": 1544558433, - "wifi_status": 45, - "reachable": true, - "co2_calibrating": false, - "station_name": "MyStation", - "data_type": [ - "Temperature", - "CO2", - "Humidity", - "Noise", - "Pressure" - ], - "place": { - "altitude": 664, - "city": "Frankfurt", - "country": "DE", - "timezone": "Europe/Berlin", - "location": [ - 52.516263, - 13.377726 - ] - }, - "dashboard_data": { - "time_utc": 1559413171, - "Temperature": 24.6, - "CO2": 749, - "Humidity": 36, - "Noise": 37, - "Pressure": 1017.3, - "AbsolutePressure": 939.7, - "min_temp": 23.4, - "max_temp": 25.6, - "date_min_temp": 1559371924, - "date_max_temp": 1559411964, - "temp_trend": "stable", - "pressure_trend": "down" - }, - "modules": [ - { - "_id": "12:34:56:36:fc:de", - "type": "NAModule1", - "module_name": "NetatmoOutdoor", - "data_type": [ - "Temperature", - "Humidity" - ], - "last_setup": 1544558433, - "reachable": true, - "dashboard_data": { - "time_utc": 1559413157, - "Temperature": 28.6, - "Humidity": 24, - "min_temp": 16.9, - "max_temp": 30.3, - "date_min_temp": 1559365579, - "date_max_temp": 1559404698, - "temp_trend": "down" - }, - "firmware": 46, - "last_message": 1559413177, - "last_seen": 1559413157, - "rf_status": 65, - "battery_vp": 5738, - "battery_percent": 87 - }, - { - "_id": "12:34:56:07:bb:3e", - "type": "NAModule4", - "module_name": "Kitchen", - "data_type": [ - "Temperature", - "CO2", - "Humidity" - ], - "last_setup": 1548956696, - "reachable": true, - "dashboard_data": { - "time_utc": 1559413125, - "Temperature": 28, - "CO2": 503, - "Humidity": 26, - "min_temp": 25, - "max_temp": 28, - "date_min_temp": 1559371577, - "date_max_temp": 1559412561, - "temp_trend": "up" - }, - "firmware": 44, - "last_message": 1559413177, - "last_seen": 1559413177, - "rf_status": 73, - "battery_vp": 5687, - "battery_percent": 83 - }, - { - "_id": "12:34:56:07:bb:0e", - "type": "NAModule4", - "module_name": "Livingroom", - "data_type": [ - "Temperature", - "CO2", - "Humidity" - ], - "last_setup": 1548957209, - "reachable": true, - "dashboard_data": { - "time_utc": 1559413093, - "Temperature": 26.4, - "CO2": 451, - "Humidity": 31, - "min_temp": 25.1, - "max_temp": 26.4, - "date_min_temp": 1559365290, - "date_max_temp": 1559413093, - "temp_trend": "stable" - }, - "firmware": 44, - "last_message": 1559413177, - "last_seen": 1559413093, - "rf_status": 84, - "battery_vp": 5626, - "battery_percent": 79 - }, - { - "_id": "12:34:56:03:1b:e5", - "type": "NAModule2", - "module_name": "Garden", - "data_type": [ - "Wind" - ], - "last_setup": 1549193862, - "reachable": true, - "dashboard_data": { - "time_utc": 1559413170, - "WindStrength": 4, - "WindAngle": 217, - "GustStrength": 9, - "GustAngle": 206, - "max_wind_str": 21, - "max_wind_angle": 217, - "date_max_wind_str": 1559386669 - }, - "firmware": 19, - "last_message": 1559413177, - "last_seen": 1559413177, - "rf_status": 59, - "battery_vp": 5689, - "battery_percent": 85 - }, - { - "_id": "12:34:56:05:51:20", - "type": "NAModule3", - "module_name": "Yard", - "data_type": [ - "Rain" - ], - "last_setup": 1549194580, - "reachable": true, - "dashboard_data": { - "time_utc": 1559413170, - "Rain": 0, - "sum_rain_24": 0, - "sum_rain_1": 0 - }, - "firmware": 8, - "last_message": 1559413177, - "last_seen": 1559413170, - "rf_status": 67, - "battery_vp": 5860, - "battery_percent": 93 - } - ] + "_id": "12:34:56:36:fc:de", + "type": "NAModule1", + "module_name": "NetatmoOutdoor", + "data_type": ["Temperature", "Humidity"], + "last_setup": 1544558433, + "reachable": true, + "dashboard_data": { + "time_utc": 1559413157, + "Temperature": 28.6, + "Humidity": 24, + "min_temp": 16.9, + "max_temp": 30.3, + "date_min_temp": 1559365579, + "date_max_temp": 1559404698, + "temp_trend": "down" + }, + "firmware": 46, + "last_message": 1559413177, + "last_seen": 1559413157, + "rf_status": 65, + "battery_vp": 5738, + "battery_percent": 87 }, { - "_id": "12 :34: 56:36:fd:3c", - "station_name": "Valley Road", - "date_setup": 1545897146, - "last_setup": 1545897146, - "type": "NAMain", - "last_status_store": 1581835369, - "firmware": 137, - "last_upgrade": 1545897125, - "wifi_status": 53, - "reachable": true, - "co2_calibrating": false, - "data_type": [ - "Temperature", - "CO2", - "Humidity", - "Noise", - "Pressure" - ], - "place": { - "altitude": 69, - "city": "Valley", - "country": "AU", - "timezone": "Australia/Hobart", - "location": [ - 148.444226, - -41.721282 - ] - }, - "read_only": true, - "dashboard_data": { - "time_utc": 1581835330, - "Temperature": 22.4, - "CO2": 471, - "Humidity": 46, - "Noise": 47, - "Pressure": 1011.5, - "AbsolutePressure": 1002.8, - "min_temp": 18.1, - "max_temp": 22.5, - "date_max_temp": 1581829891, - "date_min_temp": 1581794878, - "temp_trend": "stable", - "pressure_trend": "stable" - }, - "modules": [ - { - "_id": "12 :34: 56:36:e6:c0", - "type": "NAModule1", - "module_name": "Module", - "data_type": [ - "Temperature", - "Humidity" - ], - "last_setup": 1545897146, - "battery_percent": 22, - "reachable": false, - "firmware": 46, - "last_message": 1572497781, - "last_seen": 1572497742, - "rf_status": 88, - "battery_vp": 4118 - }, - { - "_id": "12:34:56:05:25:6e", - "type": "NAModule3", - "module_name": "Rain Gauge", - "data_type": [ - "Rain" - ], - "last_setup": 1553997427, - "battery_percent": 82, - "reachable": true, - "firmware": 8, - "last_message": 1581835362, - "last_seen": 1581835354, - "rf_status": 78, - "battery_vp": 5594, - "dashboard_data": { - "time_utc": 1581835329, - "Rain": 0, - "sum_rain_1": 0, - "sum_rain_24": 0 - } - } - ] + "_id": "12:34:56:07:bb:3e", + "type": "NAModule4", + "module_name": "Kitchen", + "data_type": ["Temperature", "CO2", "Humidity"], + "last_setup": 1548956696, + "reachable": true, + "dashboard_data": { + "time_utc": 1559413125, + "Temperature": 28, + "CO2": 503, + "Humidity": 26, + "min_temp": 25, + "max_temp": 28, + "date_min_temp": 1559371577, + "date_max_temp": 1559412561, + "temp_trend": "up" + }, + "firmware": 44, + "last_message": 1559413177, + "last_seen": 1559413177, + "rf_status": 73, + "battery_vp": 5687, + "battery_percent": 83 }, { - "_id": "12:34:56:32:a7:60", - "home_name": "Ateljen", - "date_setup": 1566714693, - "last_setup": 1566714693, - "type": "NAMain", - "last_status_store": 1588481079, - "module_name": "Indoor", - "firmware": 177, - "last_upgrade": 1566714694, - "wifi_status": 50, - "reachable": true, - "co2_calibrating": false, - "data_type": [ - "Temperature", - "CO2", - "Humidity", - "Noise", - "Pressure" - ], - "place": { - "altitude": 93, - "city": "Gothenburg", - "country": "SE", - "timezone": "Europe/Stockholm", - "location": [ - 11.6136629, - 57.7006827 - ] - }, - "dashboard_data": { - "time_utc": 1588481073, - "Temperature": 18.2, - "CO2": 542, - "Humidity": 45, - "Noise": 45, - "Pressure": 1013, - "AbsolutePressure": 1001.9, - "min_temp": 18.2, - "max_temp": 19.5, - "date_max_temp": 1588456861, - "date_min_temp": 1588479561, - "temp_trend": "stable", - "pressure_trend": "up" - }, - "modules": [ - { - "_id": "12:34:56:32:db:06", - "type": "NAModule1", - "last_setup": 1587635819, - "data_type": [ - "Temperature", - "Humidity" - ], - "battery_percent": 100, - "reachable": false, - "firmware": 255, - "last_message": 0, - "last_seen": 0, - "rf_status": 255, - "battery_vp": 65535 - } - ] + "_id": "12:34:56:07:bb:0e", + "type": "NAModule4", + "module_name": "Livingroom", + "data_type": ["Temperature", "CO2", "Humidity"], + "last_setup": 1548957209, + "reachable": true, + "dashboard_data": { + "time_utc": 1559413093, + "Temperature": 26.4, + "CO2": 451, + "Humidity": 31, + "min_temp": 25.1, + "max_temp": 26.4, + "date_min_temp": 1559365290, + "date_max_temp": 1559413093, + "temp_trend": "stable" + }, + "firmware": 44, + "last_message": 1559413177, + "last_seen": 1559413093, + "rf_status": 84, + "battery_vp": 5626, + "battery_percent": 79 }, { - "_id": "12:34:56:1c:68:2e", - "station_name": "Bol\u00e5s", - "date_setup": 1470935400, - "last_setup": 1470935400, - "type": "NAMain", - "last_status_store": 1588481399, - "module_name": "Inne - Nere", - "firmware": 177, - "last_upgrade": 1470935401, - "wifi_status": 13, - "reachable": true, - "co2_calibrating": false, - "data_type": [ - "Temperature", - "CO2", - "Humidity", - "Noise", - "Pressure" - ], - "place": { - "altitude": 93, - "city": "Gothenburg", - "country": "SE", - "timezone": "Europe/Stockholm", - "location": [ - 11.6136629, - 57.7006827 - ] - }, - "dashboard_data": { - "time_utc": 1588481387, - "Temperature": 20.8, - "CO2": 674, - "Humidity": 41, - "Noise": 34, - "Pressure": 1012.1, - "AbsolutePressure": 1001, - "min_temp": 20.8, - "max_temp": 22.2, - "date_max_temp": 1588456859, - "date_min_temp": 1588480176, - "temp_trend": "stable", - "pressure_trend": "up" - }, - "modules": [ - { - "_id": "12:34:56:02:b3:da", - "type": "NAModule3", - "module_name": "Regnm\u00e4tare", - "last_setup": 1470937706, - "data_type": [ - "Rain" - ], - "battery_percent": 81, - "reachable": true, - "firmware": 12, - "last_message": 1588481393, - "last_seen": 1588481386, - "rf_status": 67, - "battery_vp": 5582, - "dashboard_data": { - "time_utc": 1588481386, - "Rain": 0, - "sum_rain_1": 0, - "sum_rain_24": 0.1 - } - }, - { - "_id": "12:34:56:03:76:60", - "type": "NAModule4", - "module_name": "Inne - Uppe", - "last_setup": 1470938089, - "data_type": [ - "Temperature", - "CO2", - "Humidity" - ], - "battery_percent": 14, - "reachable": true, - "firmware": 50, - "last_message": 1588481393, - "last_seen": 1588481374, - "rf_status": 70, - "battery_vp": 4448, - "dashboard_data": { - "time_utc": 1588481374, - "Temperature": 19.6, - "CO2": 696, - "Humidity": 41, - "min_temp": 19.6, - "max_temp": 20.5, - "date_max_temp": 1588456817, - "date_min_temp": 1588481374, - "temp_trend": "stable" - } - }, - { - "_id": "12:34:56:32:db:06", - "type": "NAModule1", - "module_name": "Ute", - "last_setup": 1566326027, - "data_type": [ - "Temperature", - "Humidity" - ], - "battery_percent": 81, - "reachable": true, - "firmware": 50, - "last_message": 1588481393, - "last_seen": 1588481380, - "rf_status": 61, - "battery_vp": 5544, - "dashboard_data": { - "time_utc": 1588481380, - "Temperature": 6.4, - "Humidity": 91, - "min_temp": 3.6, - "max_temp": 6.4, - "date_max_temp": 1588481380, - "date_min_temp": 1588471383, - "temp_trend": "up" - } - } - ] + "_id": "12:34:56:03:1b:e5", + "type": "NAModule2", + "module_name": "Garden", + "data_type": ["Wind"], + "last_setup": 1549193862, + "reachable": true, + "dashboard_data": { + "time_utc": 1559413170, + "WindStrength": 4, + "WindAngle": 217, + "GustStrength": 9, + "GustAngle": 206, + "max_wind_str": 21, + "max_wind_angle": 217, + "date_max_wind_str": 1559386669 + }, + "firmware": 19, + "last_message": 1559413177, + "last_seen": 1559413177, + "rf_status": 59, + "battery_vp": 5689, + "battery_percent": 85 }, { - "_id": "12:34:56:1d:68:2e", - "date_setup": 1470935500, - "last_setup": 1470935500, - "type": "NAMain", - "last_status_store": 1588481399, - "module_name": "Basisstation", - "firmware": 177, - "last_upgrade": 1470935401, - "wifi_status": 13, - "reachable": true, - "co2_calibrating": false, - "data_type": [ - "Temperature", - "CO2", - "Humidity", - "Noise", - "Pressure" - ], - "place": { - "altitude": 93, - "city": "Gothenburg", - "country": "SE", - "timezone": "Europe/Stockholm", - "location": [ - 11.6136629, - 57.7006827 - ] - }, - "dashboard_data": { - "time_utc": 1588481387, - "Temperature": 20.8, - "CO2": 674, - "Humidity": 41, - "Noise": 34, - "Pressure": 1012.1, - "AbsolutePressure": 1001, - "min_temp": 20.8, - "max_temp": 22.2, - "date_max_temp": 1588456859, - "date_min_temp": 1588480176, - "temp_trend": "stable", - "pressure_trend": "up" - }, - "modules": [] + "_id": "12:34:56:05:51:20", + "type": "NAModule3", + "module_name": "Yard", + "data_type": ["Rain"], + "last_setup": 1549194580, + "reachable": true, + "dashboard_data": { + "time_utc": 1559413170, + "Rain": 0, + "sum_rain_24": 0, + "sum_rain_1": 0 + }, + "firmware": 8, + "last_message": 1559413177, + "last_seen": 1559413170, + "rf_status": 67, + "battery_vp": 5860, + "battery_percent": 93 + } + ] + }, + { + "_id": "12 :34: 56:36:fd:3c", + "station_name": "Valley Road", + "date_setup": 1545897146, + "last_setup": 1545897146, + "type": "NAMain", + "last_status_store": 1581835369, + "firmware": 137, + "last_upgrade": 1545897125, + "wifi_status": 53, + "reachable": true, + "co2_calibrating": false, + "data_type": ["Temperature", "CO2", "Humidity", "Noise", "Pressure"], + "place": { + "altitude": 69, + "city": "Valley", + "country": "AU", + "timezone": "Australia/Hobart", + "location": [148.444226, -41.721282] + }, + "read_only": true, + "dashboard_data": { + "time_utc": 1581835330, + "Temperature": 22.4, + "CO2": 471, + "Humidity": 46, + "Noise": 47, + "Pressure": 1011.5, + "AbsolutePressure": 1002.8, + "min_temp": 18.1, + "max_temp": 22.5, + "date_max_temp": 1581829891, + "date_min_temp": 1581794878, + "temp_trend": "stable", + "pressure_trend": "stable" + }, + "modules": [ + { + "_id": "12 :34: 56:36:e6:c0", + "type": "NAModule1", + "module_name": "Module", + "data_type": ["Temperature", "Humidity"], + "last_setup": 1545897146, + "battery_percent": 22, + "reachable": false, + "firmware": 46, + "last_message": 1572497781, + "last_seen": 1572497742, + "rf_status": 88, + "battery_vp": 4118 + }, + { + "_id": "12:34:56:05:25:6e", + "type": "NAModule3", + "module_name": "Rain Gauge", + "data_type": ["Rain"], + "last_setup": 1553997427, + "battery_percent": 82, + "reachable": true, + "firmware": 8, + "last_message": 1581835362, + "last_seen": 1581835354, + "rf_status": 78, + "battery_vp": 5594, + "dashboard_data": { + "time_utc": 1581835329, + "Rain": 0, + "sum_rain_1": 0, + "sum_rain_24": 0 + } + } + ] + }, + { + "_id": "12:34:56:32:a7:60", + "home_name": "Ateljen", + "date_setup": 1566714693, + "last_setup": 1566714693, + "type": "NAMain", + "last_status_store": 1588481079, + "module_name": "Indoor", + "firmware": 177, + "last_upgrade": 1566714694, + "wifi_status": 50, + "reachable": true, + "co2_calibrating": false, + "data_type": ["Temperature", "CO2", "Humidity", "Noise", "Pressure"], + "place": { + "altitude": 93, + "city": "Gothenburg", + "country": "SE", + "timezone": "Europe/Stockholm", + "location": [11.6136629, 57.7006827] + }, + "dashboard_data": { + "time_utc": 1588481073, + "Temperature": 18.2, + "CO2": 542, + "Humidity": 45, + "Noise": 45, + "Pressure": 1013, + "AbsolutePressure": 1001.9, + "min_temp": 18.2, + "max_temp": 19.5, + "date_max_temp": 1588456861, + "date_min_temp": 1588479561, + "temp_trend": "stable", + "pressure_trend": "up" + }, + "modules": [ + { + "_id": "12:34:56:32:db:06", + "type": "NAModule1", + "last_setup": 1587635819, + "data_type": ["Temperature", "Humidity"], + "battery_percent": 100, + "reachable": false, + "firmware": 255, + "last_message": 0, + "last_seen": 0, + "rf_status": 255, + "battery_vp": 65535 + } + ] + }, + { + "_id": "12:34:56:1c:68:2e", + "station_name": "Bol\u00e5s", + "date_setup": 1470935400, + "last_setup": 1470935400, + "type": "NAMain", + "last_status_store": 1588481399, + "module_name": "Inne - Nere", + "firmware": 177, + "last_upgrade": 1470935401, + "wifi_status": 13, + "reachable": true, + "co2_calibrating": false, + "data_type": ["Temperature", "CO2", "Humidity", "Noise", "Pressure"], + "place": { + "altitude": 93, + "city": "Gothenburg", + "country": "SE", + "timezone": "Europe/Stockholm", + "location": [11.6136629, 57.7006827] + }, + "dashboard_data": { + "time_utc": 1588481387, + "Temperature": 20.8, + "CO2": 674, + "Humidity": 41, + "Noise": 34, + "Pressure": 1012.1, + "AbsolutePressure": 1001, + "min_temp": 20.8, + "max_temp": 22.2, + "date_max_temp": 1588456859, + "date_min_temp": 1588480176, + "temp_trend": "stable", + "pressure_trend": "up" + }, + "modules": [ + { + "_id": "12:34:56:02:b3:da", + "type": "NAModule3", + "module_name": "Regnm\u00e4tare", + "last_setup": 1470937706, + "data_type": ["Rain"], + "battery_percent": 81, + "reachable": true, + "firmware": 12, + "last_message": 1588481393, + "last_seen": 1588481386, + "rf_status": 67, + "battery_vp": 5582, + "dashboard_data": { + "time_utc": 1588481386, + "Rain": 0, + "sum_rain_1": 0, + "sum_rain_24": 0.1 + } + }, + { + "_id": "12:34:56:03:76:60", + "type": "NAModule4", + "module_name": "Inne - Uppe", + "last_setup": 1470938089, + "data_type": ["Temperature", "CO2", "Humidity"], + "battery_percent": 14, + "reachable": true, + "firmware": 50, + "last_message": 1588481393, + "last_seen": 1588481374, + "rf_status": 70, + "battery_vp": 4448, + "dashboard_data": { + "time_utc": 1588481374, + "Temperature": 19.6, + "CO2": 696, + "Humidity": 41, + "min_temp": 19.6, + "max_temp": 20.5, + "date_max_temp": 1588456817, + "date_min_temp": 1588481374, + "temp_trend": "stable" + } + }, + { + "_id": "12:34:56:32:db:06", + "type": "NAModule1", + "module_name": "Ute", + "last_setup": 1566326027, + "data_type": ["Temperature", "Humidity"], + "battery_percent": 81, + "reachable": true, + "firmware": 50, + "last_message": 1588481393, + "last_seen": 1588481380, + "rf_status": 61, + "battery_vp": 5544, + "dashboard_data": { + "time_utc": 1588481380, + "Temperature": 6.4, + "Humidity": 91, + "min_temp": 3.6, + "max_temp": 6.4, + "date_max_temp": 1588481380, + "date_min_temp": 1588471383, + "temp_trend": "up" + } + } + ] + }, + { + "_id": "12:34:56:1d:68:2e", + "date_setup": 1470935500, + "last_setup": 1470935500, + "type": "NAMain", + "last_status_store": 1588481399, + "module_name": "Basisstation", + "firmware": 177, + "last_upgrade": 1470935401, + "wifi_status": 13, + "reachable": true, + "co2_calibrating": false, + "data_type": ["Temperature", "CO2", "Humidity", "Noise", "Pressure"], + "place": { + "altitude": 93, + "city": "Gothenburg", + "country": "SE", + "timezone": "Europe/Stockholm", + "location": [11.6136629, 57.7006827] + }, + "dashboard_data": { + "time_utc": 1588481387, + "Temperature": 20.8, + "CO2": 674, + "Humidity": 41, + "Noise": 34, + "Pressure": 1012.1, + "AbsolutePressure": 1001, + "min_temp": 20.8, + "max_temp": 22.2, + "date_max_temp": 1588456859, + "date_min_temp": 1588480176, + "temp_trend": "stable", + "pressure_trend": "up" + }, + "modules": [] + }, + { + "_id": "12:34:56:80:bb:26", + "station_name": "MYHOME (Palier)", + "date_setup": 1558709904, + "last_setup": 1558709904, + "type": "NAMain", + "last_status_store": 1644582700, + "module_name": "Palier", + "firmware": 181, + "last_upgrade": 1558709906, + "wifi_status": 57, + "reachable": true, + "co2_calibrating": false, + "data_type": ["Temperature", "CO2", "Humidity", "Noise", "Pressure"], + "place": { + "altitude": 329, + "city": "Someplace", + "country": "FR", + "timezone": "Europe/Paris", + "location": [6.1234567, 46.123456] + }, + "home_id": "91763b24c43d3e344f424e8b", + "home_name": "MYHOME", + "dashboard_data": { + "time_utc": 1644582694, + "Temperature": 21.1, + "CO2": 1339, + "Humidity": 45, + "Noise": 35, + "Pressure": 1026.8, + "AbsolutePressure": 974.5, + "min_temp": 21, + "max_temp": 21.8, + "date_max_temp": 1644534255, + "date_min_temp": 1644550420, + "temp_trend": "stable", + "pressure_trend": "up" + }, + "modules": [ + { + "_id": "12:34:56:80:1c:42", + "type": "NAModule1", + "module_name": "Outdoor", + "last_setup": 1558709954, + "data_type": ["Temperature", "Humidity"], + "battery_percent": 27, + "reachable": true, + "firmware": 50, + "last_message": 1644582699, + "last_seen": 1644582699, + "rf_status": 68, + "battery_vp": 4678, + "dashboard_data": { + "time_utc": 1644582648, + "Temperature": 9.4, + "Humidity": 57, + "min_temp": 6.7, + "max_temp": 9.8, + "date_max_temp": 1644534223, + "date_min_temp": 1644569369, + "temp_trend": "up" + } }, { - "_id": "12:34:56:58:c8:54", - "date_setup": 1605594014, - "last_setup": 1605594014, - "type": "NAMain", - "last_status_store": 1605878352, - "firmware": 178, - "wifi_status": 47, - "reachable": true, - "co2_calibrating": false, - "data_type": [ - "Temperature", - "CO2", - "Humidity", - "Noise", - "Pressure" - ], - "place": { - "altitude": 65, - "city": "Njurunda District", - "country": "SE", - "timezone": "Europe/Stockholm", - "location": [ - 17.123456, - 62.123456 - ] - }, - "station_name": "Njurunda (Indoor)", - "home_id": "5fb36b9ec68fd10c6467ca65", - "home_name": "Njurunda", - "dashboard_data": { - "time_utc": 1605878349, - "Temperature": 19.7, - "CO2": 993, - "Humidity": 40, - "Noise": 40, - "Pressure": 1015.6, - "AbsolutePressure": 1007.8, - "min_temp": 19.7, - "max_temp": 20.4, - "date_max_temp": 1605826917, - "date_min_temp": 1605873207, - "temp_trend": "stable", - "pressure_trend": "up" - }, - "modules": [ - { - "_id": "12:34:56:58:e6:38", - "type": "NAModule1", - "last_setup": 1605594034, - "data_type": [ - "Temperature", - "Humidity" - ], - "battery_percent": 100, - "reachable": true, - "firmware": 50, - "last_message": 1605878347, - "last_seen": 1605878328, - "rf_status": 62, - "battery_vp": 6198, - "dashboard_data": { - "time_utc": 1605878328, - "Temperature": 0.6, - "Humidity": 77, - "min_temp": -2.1, - "max_temp": 1.5, - "date_max_temp": 1605865920, - "date_min_temp": 1605826904, - "temp_trend": "down" - } - } - ] + "_id": "12:34:56:80:c1:ea", + "type": "NAModule3", + "module_name": "Rain", + "last_setup": 1563734531, + "data_type": ["Rain"], + "battery_percent": 21, + "reachable": true, + "firmware": 12, + "last_message": 1644582699, + "last_seen": 1644582699, + "rf_status": 79, + "battery_vp": 4256, + "dashboard_data": { + "time_utc": 1644582686, + "Rain": 3.7, + "sum_rain_1": 0, + "sum_rain_24": 6.9 + } }, { - "_id": "12:34:56:80:bb:26", - "station_name": "MYHOME (Palier)", - "date_setup": 1558709904, - "last_setup": 1558709904, - "type": "NAMain", - "last_status_store": 1644582700, - "module_name": "Palier", - "firmware": 181, - "last_upgrade": 1558709906, - "wifi_status": 57, - "reachable": true, - "co2_calibrating": false, - "data_type": [ - "Temperature", - "CO2", - "Humidity", - "Noise", - "Pressure" - ], - "place": { - "altitude": 329, - "city": "Someplace", - "country": "FR", - "timezone": "Europe/Paris", - "location": [ - 6.1234567, - 46.123456 - ] - }, - "home_id": "91763b24c43d3e344f424e8b", - "home_name": "MYHOME", - "dashboard_data": { - "time_utc": 1644582694, - "Temperature": 21.1, - "CO2": 1339, - "Humidity": 45, - "Noise": 35, - "Pressure": 1026.8, - "AbsolutePressure": 974.5, - "min_temp": 21, - "max_temp": 21.8, - "date_max_temp": 1644534255, - "date_min_temp": 1644550420, - "temp_trend": "stable", - "pressure_trend": "up" - }, - "modules": [ - { - "_id": "12:34:56:80:1c:42", - "type": "NAModule1", - "module_name": "Outdoor", - "last_setup": 1558709954, - "data_type": [ - "Temperature", - "Humidity" - ], - "battery_percent": 27, - "reachable": true, - "firmware": 50, - "last_message": 1644582699, - "last_seen": 1644582699, - "rf_status": 68, - "battery_vp": 4678, - "dashboard_data": { - "time_utc": 1644582648, - "Temperature": 9.4, - "Humidity": 57, - "min_temp": 6.7, - "max_temp": 9.8, - "date_max_temp": 1644534223, - "date_min_temp": 1644569369, - "temp_trend": "up" - } - }, - { - "_id": "12:34:56:80:c1:ea", - "type": "NAModule3", - "module_name": "Rain", - "last_setup": 1563734531, - "data_type": [ - "Rain" - ], - "battery_percent": 21, - "reachable": true, - "firmware": 12, - "last_message": 1644582699, - "last_seen": 1644582699, - "rf_status": 79, - "battery_vp": 4256, - "dashboard_data": { - "time_utc": 1644582686, - "Rain": 3.7, - "sum_rain_1": 0, - "sum_rain_24": 6.9 - } - }, - { - "_id": "12:34:56:80:44:92", - "type": "NAModule4", - "module_name": "Bedroom", - "last_setup": 1575915890, - "data_type": [ - "Temperature", - "CO2", - "Humidity" - ], - "battery_percent": 28, - "reachable": true, - "firmware": 51, - "last_message": 1644582699, - "last_seen": 1644582654, - "rf_status": 67, - "battery_vp": 4695, - "dashboard_data": { - "time_utc": 1644582654, - "Temperature": 19.3, - "CO2": 1076, - "Humidity": 53, - "min_temp": 19.2, - "max_temp": 19.7, - "date_max_temp": 1644534243, - "date_min_temp": 1644553418, - "temp_trend": "stable" - } - }, - { - "_id": "12:34:56:80:7e:18", - "type": "NAModule4", - "module_name": "Bathroom", - "last_setup": 1575915955, - "data_type": [ - "Temperature", - "CO2", - "Humidity" - ], - "battery_percent": 55, - "reachable": true, - "firmware": 51, - "last_message": 1644582699, - "last_seen": 1644582654, - "rf_status": 59, - "battery_vp": 5184, - "dashboard_data": { - "time_utc": 1644582654, - "Temperature": 19.4, - "CO2": 1930, - "Humidity": 55, - "min_temp": 19.4, - "max_temp": 21.8, - "date_max_temp": 1644534224, - "date_min_temp": 1644582039, - "temp_trend": "stable" - } - }, - { - "_id": "12:34:56:03:1b:e4", - "type": "NAModule2", - "module_name": "Garden", - "data_type": [ - "Wind" - ], - "last_setup": 1549193862, - "reachable": true, - "dashboard_data": { - "time_utc": 1559413170, - "WindStrength": 4, - "WindAngle": 217, - "GustStrength": 9, - "GustAngle": 206, - "max_wind_str": 21, - "max_wind_angle": 217, - "date_max_wind_str": 1559386669 - }, - "firmware": 19, - "last_message": 1559413177, - "last_seen": 1559413177, - "rf_status": 59, - "battery_vp": 5689, - "battery_percent": 85 - } - ] + "_id": "12:34:56:80:44:92", + "type": "NAModule4", + "module_name": "Bedroom", + "last_setup": 1575915890, + "data_type": ["Temperature", "CO2", "Humidity"], + "battery_percent": 28, + "reachable": true, + "firmware": 51, + "last_message": 1644582699, + "last_seen": 1644582654, + "rf_status": 67, + "battery_vp": 4695, + "dashboard_data": { + "time_utc": 1644582654, + "Temperature": 19.3, + "CO2": 1076, + "Humidity": 53, + "min_temp": 19.2, + "max_temp": 19.7, + "date_max_temp": 1644534243, + "date_min_temp": 1644553418, + "temp_trend": "stable" + } }, { - "_id": "00:11:22:2c:be:c8", - "station_name": "Zuhause (Kinderzimmer)", - "type": "NAMain", - "last_status_store": 1649146022, - "reachable": true, - "favorite": true, - "data_type": [ - "Pressure" - ], - "place": { - "altitude": 127, - "city": "Wiesbaden", - "country": "DE", - "timezone": "Europe/Berlin", - "location": [ - 8.238054275512695, - 50.07585525512695 - ] - }, - "read_only": true, - "dashboard_data": { - "time_utc": 1649146022, - "Pressure": 1015.6, - "AbsolutePressure": 1000.4, - "pressure_trend": "stable" - }, - "modules": [ - { - "_id": "00:11:22:2c:ce:b6", - "type": "NAModule1", - "data_type": [ - "Temperature", - "Humidity" - ], - "reachable": true, - "last_message": 1649146022, - "last_seen": 1649145996, - "dashboard_data": { - "time_utc": 1649145996, - "Temperature": 7.8, - "Humidity": 87, - "min_temp": 6.5, - "max_temp": 7.8, - "date_max_temp": 1649145996, - "date_min_temp": 1649118465, - "temp_trend": "up" - } - } - ] + "_id": "12:34:56:80:7e:18", + "type": "NAModule4", + "module_name": "Bathroom", + "last_setup": 1575915955, + "data_type": ["Temperature", "CO2", "Humidity"], + "battery_percent": 55, + "reachable": true, + "firmware": 51, + "last_message": 1644582699, + "last_seen": 1644582654, + "rf_status": 59, + "battery_vp": 5184, + "dashboard_data": { + "time_utc": 1644582654, + "Temperature": 19.4, + "CO2": 1930, + "Humidity": 55, + "min_temp": 19.4, + "max_temp": 21.8, + "date_max_temp": 1644534224, + "date_min_temp": 1644582039, + "temp_trend": "stable" + } + }, + { + "_id": "12:34:56:03:1b:e4", + "type": "NAModule2", + "module_name": "Garden", + "data_type": ["Wind"], + "last_setup": 1549193862, + "reachable": true, + "dashboard_data": { + "time_utc": 1559413170, + "WindStrength": 4, + "WindAngle": 217, + "GustStrength": 9, + "GustAngle": 206, + "max_wind_str": 21, + "max_wind_angle": 217, + "date_max_wind_str": 1559386669 + }, + "firmware": 19, + "last_message": 1559413177, + "last_seen": 1559413177, + "rf_status": 59, + "battery_vp": 5689, + "battery_percent": 85 } - ], - "user": { - "mail": "john@doe.com", - "administrative": { - "lang": "de-DE", - "reg_locale": "de-DE", - "country": "DE", - "unit": 0, - "windunit": 0, - "pressureunit": 0, - "feel_like_algo": 0 + ] + }, + { + "_id": "00:11:22:2c:be:c8", + "station_name": "Zuhause (Kinderzimmer)", + "type": "NAMain", + "last_status_store": 1649146022, + "reachable": true, + "favorite": true, + "data_type": ["Pressure"], + "place": { + "altitude": 127, + "city": "Wiesbaden", + "country": "DE", + "timezone": "Europe/Berlin", + "location": [8.238054275512695, 50.07585525512695] + }, + "read_only": true, + "dashboard_data": { + "time_utc": 1649146022, + "Pressure": 1015.6, + "AbsolutePressure": 1000.4, + "pressure_trend": "stable" + }, + "modules": [ + { + "_id": "00:11:22:2c:ce:b6", + "type": "NAModule1", + "data_type": ["Temperature", "Humidity"], + "reachable": true, + "last_message": 1649146022, + "last_seen": 1649145996, + "dashboard_data": { + "time_utc": 1649145996, + "Temperature": 7.8, + "Humidity": 87, + "min_temp": 6.5, + "max_temp": 7.8, + "date_max_temp": 1649145996, + "date_min_temp": 1649118465, + "temp_trend": "up" + } } + ] + } + ], + "user": { + "mail": "john@doe.com", + "administrative": { + "lang": "de-DE", + "reg_locale": "de-DE", + "country": "DE", + "unit": 0, + "windunit": 0, + "pressureunit": 0, + "feel_like_algo": 0 } + } }, "status": "ok", "time_exec": 0.91107702255249, "time_server": 1559413602 -} + } + \ No newline at end of file diff --git a/fixtures/homesdata.json b/fixtures/homesdata.json index ff18c3ef..35b8bf98 100644 --- a/fixtures/homesdata.json +++ b/fixtures/homesdata.json @@ -1,971 +1,809 @@ { "body": { - "homes": [ - { - "id": "91763b24c43d3e344f424e8b", - "name": "MYHOME", - "altitude": 112, - "coordinates": [ - 52.516263, - 13.377726 + "homes": [ + { + "id": "91763b24c43d3e344f424e8b", + "name": "MYHOME", + "altitude": 112, + "coordinates": [52.516263, 13.377726], + "country": "DE", + "timezone": "Europe/Berlin", + "rooms": [ + { + "id": "2746182631", + "name": "Livingroom", + "type": "livingroom", + "module_ids": ["12:34:56:00:01:ae"] + }, + { + "id": "3688132631", + "name": "Hall", + "type": "custom", + "module_ids": [ + "12:34:56:00:f1:62", + "12:34:56:10:f1:66", + "12:34:56:00:e3:9b", + "0009999992" + ] + }, + { + "id": "2833524037", + "name": "Entrada", + "type": "lobby", + "module_ids": ["12:34:56:03:a5:54"] + }, + { + "id": "2940411577", + "name": "Cocina", + "type": "kitchen", + "module_ids": ["12:34:56:03:a0:ac"] + }, + { + "id": "222452125", + "name": "Bureau", + "type": "electrical_cabinet", + "module_ids": ["12:34:56:20:f5:44", "12:34:56:20:f5:8c"], + "modules": ["12:34:56:20:f5:44", "12:34:56:20:f5:8c"], + "therm_relay": "12:34:56:20:f5:44", + "true_temperature_available": true + }, + { + "id": "100007519", + "name": "Cabinet", + "type": "electrical_cabinet", + "module_ids": [ + "12:34:56:00:16:0e", + "12:34:56:00:16:0e#0", + "12:34:56:00:16:0e#1", + "12:34:56:00:16:0e#2", + "12:34:56:00:16:0e#3", + "12:34:56:00:16:0e#4", + "12:34:56:00:16:0e#5", + "12:34:56:00:16:0e#6", + "12:34:56:00:16:0e#7", + "12:34:56:00:16:0e#8" + ] + }, + { + "id": "1002003001", + "name": "Corridor", + "type": "corridor", + "module_ids": ["10:20:30:bd:b8:1e"] + }, + { + "id": "100007520", + "name": "Toilettes", + "type": "toilets", + "module_ids": ["00:11:22:33:00:11:45:fe"] + } + ], + "modules": [ + { + "id": "12:34:56:00:fa:d0", + "type": "NAPlug", + "name": "Thermostat", + "setup_date": 1494963356, + "modules_bridged": [ + "12:34:56:00:01:ae", + "12:34:56:03:a0:ac", + "12:34:56:03:a5:54" + ] + }, + { + "id": "12:34:56:00:01:ae", + "type": "NATherm1", + "name": "Livingroom", + "setup_date": 1494963356, + "room_id": "2746182631", + "bridge": "12:34:56:00:fa:d0" + }, + { + "id": "12:34:56:03:a5:54", + "type": "NRV", + "name": "Valve1", + "setup_date": 1554549767, + "room_id": "2833524037", + "bridge": "12:34:56:00:fa:d0" + }, + { + "id": "12:34:56:03:a0:ac", + "type": "NRV", + "name": "Valve2", + "setup_date": 1554554444, + "room_id": "2940411577", + "bridge": "12:34:56:00:fa:d0" + }, + { + "id": "12:34:56:00:f1:62", + "type": "NACamera", + "name": "Hall", + "setup_date": 1544828430, + "room_id": "3688132631", + "modules_bridged": ["12:34:56:00:86:99", "12:34:56:00:e3:9b"] + }, + { + "id": "12:34:56:10:f1:66", + "type": "NDB", + "name": "Netatmo-Doorbell", + "setup_date": 1602691361, + "room_id": "3688132631", + "reachable": true, + "hk_device_id": "123456007df1", + "customer_id": "1000010", + "network_lock": false, + "quick_display_zone": 62 + }, + { + "id": "12:34:56:10:b9:0e", + "type": "NOC", + "name": "Front", + "setup_date": 1509290599, + "reachable": true, + "customer_id": "A00010", + "network_lock": false, + "use_pincode": false + }, + { + "id": "12:34:56:20:f5:44", + "type": "OTH", + "name": "Modulating Relay", + "setup_date": 1607443936, + "room_id": "222452125", + "reachable": true, + "modules_bridged": ["12:34:56:20:f5:8c"], + "hk_device_id": "12:34:56:20:d0:c5", + "capabilities": [ + { + "name": "automatism", + "available": true + } + ], + "max_modules_nb": 21 + }, + { + "id": "12:34:56:20:f5:8c", + "type": "OTM", + "name": "Bureau Modulate", + "setup_date": 1607443939, + "room_id": "222452125", + "bridge": "12:34:56:20:f5:44" + }, + { + "id": "12:34:56:30:d5:d4", + "type": "NBG", + "name": "module iDiamant", + "setup_date": 1562262465, + "room_id": "222452125", + "modules_bridged": ["0009999992"] + }, + { + "id": "0009999992", + "type": "NBR", + "name": "Entrance Blinds", + "setup_date": 1578551339, + "room_id": "3688132631", + "bridge": "12:34:56:30:d5:d4" + }, + { + "id": "12:34:56:80:bb:26", + "type": "NAMain", + "name": "Villa", + "setup_date": 1419453350, + "room_id": "4122897288", + "reachable": true, + "modules_bridged": [ + "12:34:56:80:44:92", + "12:34:56:80:7e:18", + "12:34:56:80:1c:42", + "12:34:56:80:c1:ea" + ], + "customer_id": "C00016", + "hardware_version": 251, + "public_ext_data": false, + "public_ext_counter": 0, + "alarm_config": { + "default_alarm": [ + { + "db_alarm_number": 0 + }, + { + "db_alarm_number": 1 + }, + { + "db_alarm_number": 2 + }, + { + "db_alarm_number": 6 + }, + { + "db_alarm_number": 4 + }, + { + "db_alarm_number": 5 + }, + { + "db_alarm_number": 7 + }, + { + "db_alarm_number": 22 + } ], - "country": "DE", - "timezone": "Europe/Berlin", - "rooms": [ - { - "id": "2746182631", - "name": "Livingroom", - "type": "livingroom", - "module_ids": [ - "12:34:56:00:01:ae" - ] - }, - { - "id": "3688132631", - "name": "Hall", - "type": "custom", - "module_ids": [ - "12:34:56:00:f1:62", - "12:34:56:10:f1:66", - "12:34:56:00:e3:9b", - "0009999992" - ] - }, - { - "id": "2833524037", - "name": "Entrada", - "type": "lobby", - "module_ids": [ - "12:34:56:03:a5:54" - ] - }, - { - "id": "2940411577", - "name": "Cocina", - "type": "kitchen", - "module_ids": [ - "12:34:56:03:a0:ac" - ] - }, - { - "id": "222452125", - "name": "Bureau", - "type": "electrical_cabinet", - "module_ids": [ - "12:34:56:20:f5:44", - "12:34:56:20:f5:8c" - ], - "modules": [ - "12:34:56:20:f5:44", - "12:34:56:20:f5:8c" - ], - "therm_relay": "12:34:56:20:f5:44", - "true_temperature_available": true - }, - { - "id": "100007519", - "name": "Cabinet", - "type": "electrical_cabinet", - "module_ids": [ - "12:34:56:00:16:0e", - "12:34:56:00:16:0e#0", - "12:34:56:00:16:0e#1", - "12:34:56:00:16:0e#2", - "12:34:56:00:16:0e#3", - "12:34:56:00:16:0e#4", - "12:34:56:00:16:0e#5", - "12:34:56:00:16:0e#6", - "12:34:56:00:16:0e#7", - "12:34:56:00:16:0e#8" - ] - }, - { - "id": "1002003001", - "name": "Corridor", - "type": "corridor", - "module_ids": [ - "10:20:30:bd:b8:1e" - ] - }, - { - "id": "100007520", - "name": "Toilettes", - "type": "toilets", - "module_ids": [ - "00:11:22:33:00:11:45:fe" - ] + "personnalized": [ + { + "threshold": 20, + "data_type": 1, + "direction": 0, + "db_alarm_number": 8 + }, + { + "threshold": 17, + "data_type": 1, + "direction": 1, + "db_alarm_number": 9 + }, + { + "threshold": 65, + "data_type": 4, + "direction": 0, + "db_alarm_number": 16 + }, + { + "threshold": 19, + "data_type": 8, + "direction": 0, + "db_alarm_number": 22 + } + ] + }, + "module_offset": { + "12:34:56:80:bb:26": { + "a": 0.1 + }, + "03:00:00:03:1b:0e": { + "a": 0 + } + } + }, + { + "id": "12:34:56:80:1c:42", + "type": "NAModule1", + "name": "Outdoor", + "setup_date": 1448565785, + "bridge": "12:34:56:80:bb:26" + }, + { + "id": "12:34:56:80:c1:ea", + "type": "NAModule3", + "name": "Rain", + "setup_date": 1591770206, + "bridge": "12:34:56:80:bb:26" + }, + { + "id": "12:34:56:80:44:92", + "type": "NAModule4", + "name": "Bedroom", + "setup_date": 1484997703, + "bridge": "12:34:56:80:bb:26" + }, + { + "id": "12:34:56:80:7e:18", + "type": "NAModule4", + "name": "Bathroom", + "setup_date": 1543579864, + "bridge": "12:34:56:80:bb:26" + }, + { + "id": "12:34:56:03:1b:e4", + "type": "NAModule2", + "name": "Garden", + "setup_date": 1543579864, + "bridge": "12:34:56:80:bb:26" + }, + { + "id": "12:34:56:80:60:40", + "type": "NLG", + "name": "Prise Control", + "setup_date": 1641841257, + "room_id": "1310352496", + "modules_bridged": [ + "12:34:56:80:00:12:ac:f2", + "12:34:56:80:00:c3:69:3c", + "12:34:56:00:00:a1:4c:da", + "12:34:56:00:01:01:01:a1", + "00:11:22:33:00:11:45:fe" + ] + }, + { + "id": "12:34:56:80:00:12:ac:f2", + "type": "NLP", + "name": "Prise", + "setup_date": 1641841262, + "room_id": "1310352496", + "bridge": "12:34:56:80:60:40" + }, + { + "id": "12:34:56:80:00:c3:69:3c", + "type": "NLT", + "name": "Commande sans fil", + "setup_date": 1641841262, + "bridge": "12:34:56:80:60:40" + }, + { + "id": "12:34:56:00:86:99", + "type": "NACamDoorTag", + "name": "Window Hall", + "setup_date": 1581177375, + "bridge": "12:34:56:00:f1:62", + "category": "window" + }, + { + "id": "12:34:56:00:e3:9b", + "type": "NIS", + "setup_date": 1620479901, + "bridge": "12:34:56:00:f1:62", + "name": "Sirene in hall" + }, + { + "id": "12:34:56:00:16:0e", + "type": "NLE", + "name": "Écocompteur", + "setup_date": 1644496884, + "room_id": "100007519", + "modules_bridged": [ + "12:34:56:00:16:0e#0", + "12:34:56:00:16:0e#1", + "12:34:56:00:16:0e#2", + "12:34:56:00:16:0e#3", + "12:34:56:00:16:0e#4", + "12:34:56:00:16:0e#5", + "12:34:56:00:16:0e#6", + "12:34:56:00:16:0e#7", + "12:34:56:00:16:0e#8" + ] + }, + { + "id": "12:34:56:00:16:0e#0", + "type": "NLE", + "name": "Line 1", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#1", + "type": "NLE", + "name": "Line 2", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#2", + "type": "NLE", + "name": "Line 3", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#3", + "type": "NLE", + "name": "Line 4", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#4", + "type": "NLE", + "name": "Line 5", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#5", + "type": "NLE", + "name": "Total", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#6", + "type": "NLE", + "name": "Gas", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#7", + "type": "NLE", + "name": "Hot water", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#8", + "type": "NLE", + "name": "Cold water", + "setup_date": 1644496886, + "room_id": "100007519", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:00:a1:4c:da", + "type": "NLPC", + "name": "Consumption meter", + "setup_date": 1638376602, + "room_id": "100008999", + "bridge": "12:34:56:80:60:40" + }, + { + "id": "10:20:30:bd:b8:1e", + "type": "BNS", + "name": "Smarther", + "setup_date": 1638022197, + "room_id": "1002003001" + }, + { + "id": "00:11:22:33:00:11:45:fe", + "type": "NLF", + "on": false, + "brightness": 63, + "firmware_revision": 57, + "last_seen": 1657086939, + "power": 0, + "reachable": true, + "bridge": "12:34:56:80:60:40" + }, + { + "id": "12:34:56:00:01:01:01:a1", + "type": "NLFN", + "name": "Bathroom light", + "setup_date": 1598367404, + "room_id": "1002003001", + "bridge": "12:34:56:80:60:40" + } + ], + "schedules": [ + { + "zones": [ + { + "type": 0, + "name": "Comfort", + "rooms_temp": [ + { + "temp": 21, + "room_id": "2746182631" } - ], - "modules": [ - { - "id": "12:34:56:00:fa:d0", - "type": "NAPlug", - "name": "Thermostat", - "setup_date": 1494963356, - "modules_bridged": [ - "12:34:56:00:01:ae", - "12:34:56:03:a0:ac", - "12:34:56:03:a5:54" - ] - }, - { - "id": "12:34:56:00:01:ae", - "type": "NATherm1", - "name": "Livingroom", - "setup_date": 1494963356, - "room_id": "2746182631", - "bridge": "12:34:56:00:fa:d0" - }, - { - "id": "12:34:56:03:a5:54", - "type": "NRV", - "name": "Valve1", - "setup_date": 1554549767, - "room_id": "2833524037", - "bridge": "12:34:56:00:fa:d0" - }, - { - "id": "12:34:56:03:a0:ac", - "type": "NRV", - "name": "Valve2", - "setup_date": 1554554444, - "room_id": "2940411577", - "bridge": "12:34:56:00:fa:d0" - }, - { - "id": "12:34:56:00:f1:62", - "type": "NACamera", - "name": "Hall", - "setup_date": 1544828430, - "room_id": "3688132631", - "modules_bridged": [ - "12:34:56:00:86:99", - "12:34:56:00:e3:9b" - ] - }, - { - "id": "12:34:56:10:f1:66", - "type": "NDB", - "name": "Netatmo-Doorbell", - "setup_date": 1602691361, - "room_id": "3688132631", - "reachable": true, - "hk_device_id": "123456007df1", - "customer_id": "1000010", - "network_lock": false, - "quick_display_zone": 62 - }, - { - "id": "12:34:56:10:b9:0e", - "type": "NOC", - "name": "Front", - "setup_date": 1509290599, - "reachable": true, - "customer_id": "A00010", - "network_lock": false, - "use_pincode": false - }, - { - "id": "12:34:56:20:f5:44", - "type": "OTH", - "name": "Modulating Relay", - "setup_date": 1607443936, - "room_id": "222452125", - "reachable": true, - "modules_bridged": [ - "12:34:56:20:f5:8c" - ], - "hk_device_id": "12:34:56:20:d0:c5", - "capabilities": [ - { - "name": "automatism", - "available": true - } - ], - "max_modules_nb": 21 - }, - { - "id": "12:34:56:20:f5:8c", - "type": "OTM", - "name": "Bureau Modulate", - "setup_date": 1607443939, - "room_id": "222452125", - "bridge": "12:34:56:20:f5:44" - }, - { - "id": "12:34:56:30:d5:d4", - "type": "NBG", - "name": "module iDiamant", - "setup_date": 1562262465, - "room_id": "222452125", - "modules_bridged": [ - "0009999992" - ] - }, - { - "id": "0009999992", - "type": "NBR", - "name": "Entrance Blinds", - "setup_date": 1578551339, - "room_id": "3688132631", - "bridge": "12:34:56:30:d5:d4" - }, - { - "id": "12:34:56:80:bb:26", - "type": "NAMain", - "name": "Villa", - "setup_date": 1419453350, - "room_id": "4122897288", - "reachable": true, - "modules_bridged": [ - "12:34:56:80:44:92", - "12:34:56:80:7e:18", - "12:34:56:80:1c:42", - "12:34:56:80:c1:ea" - ], - "customer_id": "C00016", - "hardware_version": 251, - "public_ext_data": false, - "public_ext_counter": 0, - "alarm_config": { - "default_alarm": [ - { - "db_alarm_number": 0 - }, - { - "db_alarm_number": 1 - }, - { - "db_alarm_number": 2 - }, - { - "db_alarm_number": 6 - }, - { - "db_alarm_number": 4 - }, - { - "db_alarm_number": 5 - }, - { - "db_alarm_number": 7 - }, - { - "db_alarm_number": 22 - } - ], - "personnalized": [ - { - "threshold": 20, - "data_type": 1, - "direction": 0, - "db_alarm_number": 8 - }, - { - "threshold": 17, - "data_type": 1, - "direction": 1, - "db_alarm_number": 9 - }, - { - "threshold": 65, - "data_type": 4, - "direction": 0, - "db_alarm_number": 16 - }, - { - "threshold": 19, - "data_type": 8, - "direction": 0, - "db_alarm_number": 22 - } - ] - }, - "module_offset": { - "12:34:56:80:bb:26": { - "a": 0.1 - }, - "03:00:00:03:1b:0e": { - "a": 0 - } - } - }, - { - "id": "12:34:56:80:1c:42", - "type": "NAModule1", - "name": "Outdoor", - "setup_date": 1448565785, - "bridge": "12:34:56:80:bb:26" - }, - { - "id": "12:34:56:80:c1:ea", - "type": "NAModule3", - "name": "Rain", - "setup_date": 1591770206, - "bridge": "12:34:56:80:bb:26" - }, - { - "id": "12:34:56:80:44:92", - "type": "NAModule4", - "name": "Bedroom", - "setup_date": 1484997703, - "bridge": "12:34:56:80:bb:26" - }, - { - "id": "12:34:56:80:7e:18", - "type": "NAModule4", - "name": "Bathroom", - "setup_date": 1543579864, - "bridge": "12:34:56:80:bb:26" - }, - { - "id": "12:34:56:03:1b:e4", - "type": "NAModule2", - "name": "Garden", - "setup_date": 1543579864, - "bridge": "12:34:56:80:bb:26" - }, - { - "id": "12:34:56:80:60:40", - "type": "NLG", - "name": "Prise Control", - "setup_date": 1641841257, - "room_id": "1310352496", - "modules_bridged": [ - "12:34:56:80:00:12:ac:f2", - "12:34:56:80:00:c3:69:3c", - "12:34:56:00:00:a1:4c:da", - "00:11:22:33:00:11:45:fe" - ] - }, - { - "id": "12:34:56:80:00:12:ac:f2", - "type": "NLP", - "name": "Prise", - "setup_date": 1641841262, - "room_id": "1310352496", - "bridge": "12:34:56:80:60:40" - }, - { - "id": "12:34:56:80:00:c3:69:3c", - "type": "NLT", - "name": "Commande sans fil", - "setup_date": 1641841262, - "bridge": "12:34:56:80:60:40" - }, - { - "id": "12:34:56:00:86:99", - "type": "NACamDoorTag", - "name": "Window Hall", - "setup_date": 1581177375, - "bridge": "12:34:56:00:f1:62", - "category": "window" - }, - { - "id": "12:34:56:00:e3:9b", - "type": "NIS", - "setup_date": 1620479901, - "bridge": "12:34:56:00:f1:62", - "name": "Sirene in hall" - }, - { - "id": "12:34:56:00:16:0e", - "type": "NLE", - "name": "Écocompteur", - "setup_date": 1644496884, - "room_id": "100007519", - "modules_bridged": [ - "12:34:56:00:16:0e#0", - "12:34:56:00:16:0e#1", - "12:34:56:00:16:0e#2", - "12:34:56:00:16:0e#3", - "12:34:56:00:16:0e#4", - "12:34:56:00:16:0e#5", - "12:34:56:00:16:0e#6", - "12:34:56:00:16:0e#7", - "12:34:56:00:16:0e#8" - ] - }, - { - "id": "12:34:56:00:16:0e#0", - "type": "NLE", - "name": "Line 1", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#1", - "type": "NLE", - "name": "Line 2", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#2", - "type": "NLE", - "name": "Line 3", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#3", - "type": "NLE", - "name": "Line 4", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#4", - "type": "NLE", - "name": "Line 5", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#5", - "type": "NLE", - "name": "Total", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#6", - "type": "NLE", - "name": "Gas", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#7", - "type": "NLE", - "name": "Hot water", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#8", - "type": "NLE", - "name": "Cold water", - "setup_date": 1644496886, - "room_id": "100007519", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:00:a1:4c:da", - "type": "NLPC", - "name": "Consumption meter", - "setup_date": 1638376602, - "room_id": "100008999", - "bridge": "12:34:56:80:60:40" - }, - { - "id": "10:20:30:bd:b8:1e", - "type": "BNS", - "name": "Smarther", - "setup_date": 1638022197, - "room_id": "1002003001" - }, - { - "id": "00:11:22:33:00:11:45:fe", - "type": "NLF", - "on": false, - "brightness": 63, - "firmware_revision": 57, - "last_seen": 1657086939, - "power": 0, - "reachable": true, - "bridge": "12:34:56:80:60:40" + ], + "id": 0 + }, + { + "type": 1, + "name": "Night", + "rooms_temp": [ + { + "temp": 17, + "room_id": "2746182631" } - ], - "schedules": [ - { - "zones": [ - { - "type": 0, - "name": "Comfort", - "rooms_temp": [ - { - "temp": 21, - "room_id": "2746182631" - } - ], - "id": 0 - }, - { - "type": 1, - "name": "Night", - "rooms_temp": [ - { - "temp": 17, - "room_id": "2746182631" - } - ], - "id": 1 - }, - { - "type": 5, - "name": "Eco", - "rooms_temp": [ - { - "temp": 17, - "room_id": "2746182631" - } - ], - "id": 4 - } - ], - "timetable": [ - { - "zone_id": 1, - "m_offset": 0 - }, - { - "zone_id": 0, - "m_offset": 360 - }, - { - "zone_id": 4, - "m_offset": 420 - }, - { - "zone_id": 0, - "m_offset": 960 - }, - { - "zone_id": 1, - "m_offset": 1410 - }, - { - "zone_id": 0, - "m_offset": 1800 - }, - { - "zone_id": 4, - "m_offset": 1860 - }, - { - "zone_id": 0, - "m_offset": 2400 - }, - { - "zone_id": 1, - "m_offset": 2850 - }, - { - "zone_id": 0, - "m_offset": 3240 - }, - { - "zone_id": 4, - "m_offset": 3300 - }, - { - "zone_id": 0, - "m_offset": 3840 - }, - { - "zone_id": 1, - "m_offset": 4290 - }, - { - "zone_id": 0, - "m_offset": 4680 - }, - { - "zone_id": 4, - "m_offset": 4740 - }, - { - "zone_id": 0, - "m_offset": 5280 - }, - { - "zone_id": 1, - "m_offset": 5730 - }, - { - "zone_id": 0, - "m_offset": 6120 - }, - { - "zone_id": 4, - "m_offset": 6180 - }, - { - "zone_id": 0, - "m_offset": 6720 - }, - { - "zone_id": 1, - "m_offset": 7170 - }, - { - "zone_id": 0, - "m_offset": 7620 - }, - { - "zone_id": 1, - "m_offset": 8610 - }, - { - "zone_id": 0, - "m_offset": 9060 - }, - { - "zone_id": 1, - "m_offset": 10050 - } - ], - "hg_temp": 7, - "away_temp": 14, - "name": "Default", - "selected": true, - "id": "591b54a2764ff4d50d8b5795", - "type": "therm" - }, - { - "zones": [ - { - "type": 0, - "name": "Comfort", - "rooms_temp": [ - { - "temp": 21, - "room_id": "2746182631" - } - ], - "id": 0 - }, - { - "type": 1, - "name": "Night", - "rooms_temp": [ - { - "temp": 17, - "room_id": "2746182631" - } - ], - "id": 1 - }, - { - "type": 5, - "name": "Eco", - "rooms_temp": [ - { - "temp": 17, - "room_id": "2746182631" - } - ], - "id": 4 - } - ], - "timetable": [ - { - "zone_id": 1, - "m_offset": 0 - }, - { - "zone_id": 0, - "m_offset": 360 - }, - { - "zone_id": 4, - "m_offset": 420 - }, - { - "zone_id": 0, - "m_offset": 960 - }, - { - "zone_id": 1, - "m_offset": 1410 - }, - { - "zone_id": 0, - "m_offset": 1800 - }, - { - "zone_id": 4, - "m_offset": 1860 - }, - { - "zone_id": 0, - "m_offset": 2400 - }, - { - "zone_id": 1, - "m_offset": 2850 - }, - { - "zone_id": 0, - "m_offset": 3240 - }, - { - "zone_id": 4, - "m_offset": 3300 - }, - { - "zone_id": 0, - "m_offset": 3840 - }, - { - "zone_id": 1, - "m_offset": 4290 - }, - { - "zone_id": 0, - "m_offset": 4680 - }, - { - "zone_id": 4, - "m_offset": 4740 - }, - { - "zone_id": 0, - "m_offset": 5280 - }, - { - "zone_id": 1, - "m_offset": 5730 - }, - { - "zone_id": 0, - "m_offset": 6120 - }, - { - "zone_id": 4, - "m_offset": 6180 - }, - { - "zone_id": 0, - "m_offset": 6720 - }, - { - "zone_id": 1, - "m_offset": 7170 - }, - { - "zone_id": 0, - "m_offset": 7620 - }, - { - "zone_id": 1, - "m_offset": 8610 - }, - { - "zone_id": 0, - "m_offset": 9060 - }, - { - "zone_id": 1, - "m_offset": 10050 - } - ], - "hg_temp": 7, - "away_temp": 14, - "name": "Winter", - "id": "b1b54a2f45795764f59d50d8", - "type": "therm" - }, - { - "zones": [ - { - "type": 0, - "name": "Comfort", - "rooms_temp": [ - { - "temp": 21, - "room_id": "2746182631" - } - ], - "id": 0 - }, - { - "type": 1, - "name": "Night", - "rooms_temp": [ - { - "temp": 17, - "room_id": "2746182631" - } - ], - "id": 1 - }, - { - "type": 5, - "name": "Eco", - "rooms_temp": [ - { - "temp": 17, - "room_id": "2746182631" - } - ], - "id": 4 - } - ], - "timetable": [ - { - "zone_id": 1, - "m_offset": 0 - }, - { - "zone_id": 0, - "m_offset": 360 - }, - { - "zone_id": 4, - "m_offset": 420 - }, - { - "zone_id": 0, - "m_offset": 960 - }, - { - "zone_id": 1, - "m_offset": 1410 - }, - { - "zone_id": 0, - "m_offset": 1800 - }, - { - "zone_id": 4, - "m_offset": 1860 - }, - { - "zone_id": 0, - "m_offset": 2400 - }, - { - "zone_id": 1, - "m_offset": 2850 - }, - { - "zone_id": 0, - "m_offset": 3240 - }, - { - "zone_id": 4, - "m_offset": 3300 - }, - { - "zone_id": 0, - "m_offset": 3840 - }, - { - "zone_id": 1, - "m_offset": 4290 - }, - { - "zone_id": 0, - "m_offset": 4680 - }, - { - "zone_id": 4, - "m_offset": 4740 - }, - { - "zone_id": 0, - "m_offset": 5280 - }, - { - "zone_id": 1, - "m_offset": 5730 - }, - { - "zone_id": 0, - "m_offset": 6120 - }, - { - "zone_id": 4, - "m_offset": 6180 - }, - { - "zone_id": 0, - "m_offset": 6720 - }, - { - "zone_id": 1, - "m_offset": 7170 - }, - { - "zone_id": 0, - "m_offset": 7620 - }, - { - "zone_id": 1, - "m_offset": 8610 - }, - { - "zone_id": 0, - "m_offset": 9060 - }, - { - "zone_id": 1, - "m_offset": 10050 - } - ], - "hg_temp": 7, - "away_temp": 14, - "id": "b0b54a2f45795764f59d50d8", - "type": "therm" + ], + "id": 1 + }, + { + "type": 5, + "name": "Eco", + "rooms_temp": [ + { + "temp": 17, + "room_id": "2746182631" } - ], - "therm_setpoint_default_duration": 120, - "persons": [ - { - "id": "91827374-7e04-5298-83ad-a0cb8372dff1", - "pseudo": "John Doe", - "url": "https://netatmocameraimage.blob.core.windows.net/production/d74fad765b9100ef480720a9a4a95c24b808a89f8d1730fb69ecdf2bb8b72039d2c69928b029d67fc40cb2d7" - }, - { - "id": "91827375-7e04-5298-83ae-a0cb8372dff2", - "pseudo": "Jane Doe", - "url": "https://netatmocameraimage.blob.core.windows.net/production/d74fad765b9100ef480720a9a4a95c24b808a89f8d1730039d2c69928b029d67fc40cb2d7fb69ecdf2bb8b72" - }, - { - "id": "91827376-7e04-5298-83af-a0cb8372dff3", - "pseudo": "Richard Doe", - "url": "https://netatmocameraimage.blob.core.windows.net/production/d74fad765b9100ef480720a9a4a95c2d1730fb69ecdf2bb8b72039d2c69928b029d67fc40cb2d74b808a89f8" + ], + "id": 4 + } + ], + "timetable": [ + { + "zone_id": 1, + "m_offset": 0 + }, + { + "zone_id": 0, + "m_offset": 360 + }, + { + "zone_id": 4, + "m_offset": 420 + }, + { + "zone_id": 0, + "m_offset": 960 + }, + { + "zone_id": 1, + "m_offset": 1410 + }, + { + "zone_id": 0, + "m_offset": 1800 + }, + { + "zone_id": 4, + "m_offset": 1860 + }, + { + "zone_id": 0, + "m_offset": 2400 + }, + { + "zone_id": 1, + "m_offset": 2850 + }, + { + "zone_id": 0, + "m_offset": 3240 + }, + { + "zone_id": 4, + "m_offset": 3300 + }, + { + "zone_id": 0, + "m_offset": 3840 + }, + { + "zone_id": 1, + "m_offset": 4290 + }, + { + "zone_id": 0, + "m_offset": 4680 + }, + { + "zone_id": 4, + "m_offset": 4740 + }, + { + "zone_id": 0, + "m_offset": 5280 + }, + { + "zone_id": 1, + "m_offset": 5730 + }, + { + "zone_id": 0, + "m_offset": 6120 + }, + { + "zone_id": 4, + "m_offset": 6180 + }, + { + "zone_id": 0, + "m_offset": 6720 + }, + { + "zone_id": 1, + "m_offset": 7170 + }, + { + "zone_id": 0, + "m_offset": 7620 + }, + { + "zone_id": 1, + "m_offset": 8610 + }, + { + "zone_id": 0, + "m_offset": 9060 + }, + { + "zone_id": 1, + "m_offset": 10050 + } + ], + "hg_temp": 7, + "away_temp": 14, + "name": "Default", + "selected": true, + "id": "591b54a2764ff4d50d8b5795", + "type": "therm" + }, + { + "zones": [ + { + "type": 0, + "name": "Comfort", + "rooms_temp": [ + { + "temp": 21, + "room_id": "2746182631" } - ], - "therm_mode": "schedule" + ], + "id": 0 + }, + { + "type": 1, + "name": "Night", + "rooms_temp": [ + { + "temp": 17, + "room_id": "2746182631" + } + ], + "id": 1 + }, + { + "type": 5, + "name": "Eco", + "rooms_temp": [ + { + "temp": 17, + "room_id": "2746182631" + } + ], + "id": 4 + } + ], + "timetable": [ + { + "zone_id": 1, + "m_offset": 0 + }, + { + "zone_id": 0, + "m_offset": 360 + }, + { + "zone_id": 4, + "m_offset": 420 + }, + { + "zone_id": 0, + "m_offset": 960 + }, + { + "zone_id": 1, + "m_offset": 1410 + }, + { + "zone_id": 0, + "m_offset": 1800 + }, + { + "zone_id": 4, + "m_offset": 1860 + }, + { + "zone_id": 0, + "m_offset": 2400 + }, + { + "zone_id": 1, + "m_offset": 2850 + }, + { + "zone_id": 0, + "m_offset": 3240 + }, + { + "zone_id": 4, + "m_offset": 3300 + }, + { + "zone_id": 0, + "m_offset": 3840 + }, + { + "zone_id": 1, + "m_offset": 4290 + }, + { + "zone_id": 0, + "m_offset": 4680 + }, + { + "zone_id": 4, + "m_offset": 4740 + }, + { + "zone_id": 0, + "m_offset": 5280 + }, + { + "zone_id": 1, + "m_offset": 5730 + }, + { + "zone_id": 0, + "m_offset": 6120 + }, + { + "zone_id": 4, + "m_offset": 6180 + }, + { + "zone_id": 0, + "m_offset": 6720 + }, + { + "zone_id": 1, + "m_offset": 7170 + }, + { + "zone_id": 0, + "m_offset": 7620 + }, + { + "zone_id": 1, + "m_offset": 8610 + }, + { + "zone_id": 0, + "m_offset": 9060 + }, + { + "zone_id": 1, + "m_offset": 10050 + } + ], + "hg_temp": 7, + "away_temp": 14, + "name": "Winter", + "id": "b1b54a2f45795764f59d50d8", + "type": "therm" + } + ], + "therm_setpoint_default_duration": 120, + "persons": [ + { + "id": "91827374-7e04-5298-83ad-a0cb8372dff1", + "pseudo": "John Doe", + "url": "https://netatmocameraimage.blob.core.windows.net/production/d74fad765b9100ef480720a9a4a95c24b808a89f8d1730fb69ecdf2bb8b72039d2c69928b029d67fc40cb2d7" }, { - "id": "91763b24c43d3e344f424e8c", - "altitude": 112, - "coordinates": [ - 52.516263, - 13.377726 - ], - "country": "DE", - "timezone": "Europe/Berlin", - "therm_setpoint_default_duration": 180, - "therm_mode": "schedule" + "id": "91827375-7e04-5298-83ae-a0cb8372dff2", + "pseudo": "Jane Doe", + "url": "https://netatmocameraimage.blob.core.windows.net/production/d74fad765b9100ef480720a9a4a95c24b808a89f8d1730039d2c69928b029d67fc40cb2d7fb69ecdf2bb8b72" + }, + { + "id": "91827376-7e04-5298-83af-a0cb8372dff3", + "pseudo": "Richard Doe", + "url": "https://netatmocameraimage.blob.core.windows.net/production/d74fad765b9100ef480720a9a4a95c2d1730fb69ecdf2bb8b72039d2c69928b029d67fc40cb2d74b808a89f8" } - ], - "user": { - "email": "john@doe.com", - "language": "de-DE", - "locale": "de-DE", - "feel_like_algorithm": 0, - "unit_pressure": 0, - "unit_system": 0, - "unit_wind": 0, - "all_linked": false, - "type": "netatmo", - "id": "91763b24c43d3e344f424e8b" + ], + "therm_mode": "schedule" + }, + { + "id": "91763b24c43d3e344f424e8c", + "altitude": 112, + "coordinates": [52.516263, 13.377726], + "country": "DE", + "timezone": "Europe/Berlin", + "therm_setpoint_default_duration": 180, + "therm_mode": "schedule" } + ], + "user": { + "email": "john@doe.com", + "language": "de-DE", + "locale": "de-DE", + "feel_like_algorithm": 0, + "unit_pressure": 0, + "unit_system": 0, + "unit_wind": 0, + "all_linked": false, + "type": "netatmo", + "id": "91763b24c43d3e344f424e8b" + } }, "status": "ok", "time_exec": 0.056135892868042, "time_server": 1559171003 -} + } + \ No newline at end of file diff --git a/fixtures/homestatus_91763b24c43d3e344f424e8b.json b/fixtures/homestatus_91763b24c43d3e344f424e8b.json index 0d4f3d26..371b0b55 100644 --- a/fixtures/homestatus_91763b24c43d3e344f424e8b.json +++ b/fixtures/homestatus_91763b24c43d3e344f424e8b.json @@ -2,348 +2,349 @@ "status": "ok", "time_server": 1559292039, "body": { - "home": { - "modules": [ - { - "id": "12:34:56:00:f1:62", - "type": "NACamera", - "monitoring": "on", - "sd_status": 4, - "alim_status": 2, - "locked": false, - "vpn_url": "https://prodvpn-eu-2.netatmo.net/restricted/10.255.123.45/609e27de5699fb18147ab47d06846631/MTRPn_BeWCav5RBq4U1OMDruTW4dkQ0NuMwNDAw11g,,", - "is_local": true - }, - { - "id": "12:34:56:00:fa:d0", - "type": "NAPlug", - "firmware_revision": 174, - "rf_strength": 107, - "wifi_strength": 42 - }, - { - "id": "12:34:56:00:01:ae", - "reachable": true, - "type": "NATherm1", - "firmware_revision": 65, - "rf_strength": 58, - "battery_level": 3793, - "boiler_valve_comfort_boost": false, - "boiler_status": false, - "anticipating": false, - "bridge": "12:34:56:00:fa:d0", - "battery_state": "high" - }, - { - "id": "12:34:56:03:a5:54", - "reachable": true, - "type": "NRV", - "firmware_revision": 79, - "rf_strength": 51, - "battery_level": 3025, - "bridge": "12:34:56:00:fa:d0", - "battery_state": "full" - }, - { - "id": "12:34:56:03:a0:ac", - "reachable": true, - "type": "NRV", - "firmware_revision": 79, - "rf_strength": 59, - "battery_level": 3029, - "bridge": "12:34:56:00:fa:d0", - "battery_state": "full" - }, - { - "type": "NDB", - "last_ftp_event": { - "type": 3, - "time": 1631444443, - "id": 3 - }, - "id": "12:34:56:10:f1:66", - "websocket_connected": true, - "vpn_url": "https://prodvpn-eu-6.netatmo.net/10.20.30.40/1111111111111/2222222222222,,", - "is_local": false, - "alim_status": 2, - "connection": "wifi", - "firmware_name": "2.18.0", - "firmware_revision": 2018000, - "homekit_status": "configured", - "max_peers_reached": false, - "sd_status": 4, - "wifi_strength": 66, - "wifi_state": "medium" - }, - { - "type": "NOC", - "firmware_revision": 3002000, - "monitoring": "on", - "sd_status": 4, - "connection": "wifi", - "homekit_status": "upgradable", - "floodlight": "auto", - "timelapse_available": true, - "id": "12:34:56:10:b9:0e", - "vpn_url": "https://prodvpn-eu-6.netatmo.net/10.20.30.41/333333333333/444444444444,,", - "is_local": false, - "network_lock": false, - "firmware_name": "3.2.0", - "wifi_strength": 62, - "alim_status": 2, - "locked": false, - "wifi_state": "high" - }, - { - "boiler_control": "onoff", - "dhw_control": "none", - "firmware_revision": 22, - "hardware_version": 222, - "id": "12:34:56:20:f5:44", - "outdoor_temperature": 8.2, - "sequence_id": 19764, - "type": "OTH", - "wifi_strength": 57 - }, - { - "battery_level": 4176, - "boiler_status": false, - "boiler_valve_comfort_boost": false, - "firmware_revision": 6, - "id": "12:34:56:20:f5:8c", - "last_message": 1637684297, - "last_seen": 1637684297, - "radio_id": 2, - "reachable": true, - "rf_strength": 64, - "type": "OTM", - "bridge": "12:34:56:20:f5:44", - "battery_state": "full" - }, - { - "id": "12:34:56:30:d5:d4", - "type": "NBG", - "firmware_revision": 39, - "wifi_strength": 65, - "reachable": true - }, - { - "id": "0009999992", - "type": "NBR", - "current_position": 0, - "target_position": 0, - "target_position_step": 100, - "firmware_revision": 16, - "rf_strength": 0, - "last_seen": 1638353156, - "reachable": true, - "bridge": "70:ee:50:3e:d5:d4" - }, - { - "id": "12:34:56:00:86:99", - "type": "NACamDoorTag", - "battery_state": "high", - "battery_level": 5240, - "firmware_revision": 58, - "rf_state": "full", - "rf_strength": 58, - "last_seen": 1642698124, - "last_activity": 1627757310, - "reachable": false, - "bridge": "12:34:56:00:f1:62", - "status": "no_news" - }, - { - "id": "12:34:56:00:e3:9b", - "type": "NIS", - "battery_state": "low", - "battery_level": 5438, - "firmware_revision": 209, - "rf_state": "medium", - "rf_strength": 62, - "last_seen": 1644569790, - "reachable": true, - "bridge": "12:34:56:00:f1:62", - "status": "no_sound", - "monitoring": "off" - }, - { - "id": "12:34:56:80:60:40", - "type": "NLG", - "offload": false, - "firmware_revision": 211, - "last_seen": 1644567372, - "wifi_strength": 51, - "reachable": true - }, - { - "id": "12:34:56:80:00:12:ac:f2", - "type": "NLP", - "on": true, - "offload": false, - "firmware_revision": 62, - "last_seen": 1644569425, - "power": 0, - "reachable": true, - "bridge": "12:34:56:80:60:40" - }, - { - "id": "12:34:56:80:00:c3:69:3c", - "type": "NLT", - "battery_state": "full", - "battery_level": 3300, - "firmware_revision": 42, - "last_seen": 0, - "reachable": false, - "bridge": "12:34:56:80:60:40" - }, - { - "id": "12:34:56:00:16:0e", - "type": "NLE", - "firmware_revision": 14, - "wifi_strength": 38 - }, - { - "id": "12:34:56:00:16:0e#0", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#1", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#2", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#3", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#4", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#5", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#6", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#7", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:16:0e#8", - "type": "NLE", - "bridge": "12:34:56:00:16:0e" - }, - { - "id": "12:34:56:00:00:a1:4c:da", - "type": "NLPC", - "firmware_revision": 62, - "last_seen": 1646511241, - "power": 476, - "reachable": true, - "bridge": "12:34:56:80:60:40" - }, - { - "id": "10:20:30:bd:b8:1e", - "type": "BNS", - "firmware_revision": 32, - "wifi_strength": 49, - "boiler_valve_comfort_boost": false, - "boiler_status": true, - "cooler_status": false - }, - { - "id": "00:11:22:33:00:11:45:fe", - "type": "NLF", - "on": false, - "brightness": 63, - "firmware_revision": 57, - "last_seen": 1657086939, - "power": 0, - "reachable": true, - "bridge": "12:34:56:80:60:40" - } - ], - "rooms": [ - { - "id": "2746182631", - "reachable": true, - "therm_measured_temperature": 19.8, - "therm_setpoint_temperature": 12, - "therm_setpoint_mode": "away", - "therm_setpoint_start_time": 1559229567, - "therm_setpoint_end_time": 0 - }, - { - "id": "2940411577", - "reachable": true, - "therm_measured_temperature": 27, - "heating_power_request": 0, - "therm_setpoint_temperature": 7, - "therm_setpoint_mode": "hg", - "therm_setpoint_start_time": 0, - "therm_setpoint_end_time": 0, - "anticipating": false, - "open_window": false - }, - { - "id": "2833524037", - "reachable": true, - "therm_measured_temperature": 24.5, - "heating_power_request": 0, - "therm_setpoint_temperature": 7, - "therm_setpoint_mode": "hg", - "therm_setpoint_start_time": 0, - "therm_setpoint_end_time": 0, - "anticipating": false, - "open_window": false - }, - { - "id": "1002003001", - "reachable": true, - "anticipating": false, - "heating_power_request": 0, - "open_window": false, - "humidity": 67, - "therm_measured_temperature": 22, - "therm_setpoint_temperature": 22, - "therm_setpoint_start_time": 1647462737, - "therm_setpoint_end_time": null, - "therm_setpoint_mode": "home" - } - ], - "id": "91763b24c43d3e344f424e8b", - "persons": [ - { - "id": "91827374-7e04-5298-83ad-a0cb8372dff1", - "last_seen": 1557071156, - "out_of_sight": true - }, - { - "id": "91827375-7e04-5298-83ae-a0cb8372dff2", - "last_seen": 1559282761, - "out_of_sight": false - }, - { - "id": "91827376-7e04-5298-83af-a0cb8372dff3", - "last_seen": 1559224132, - "out_of_sight": true - } - ] - } + "home": { + "modules": [ + { + "id": "12:34:56:00:f1:62", + "type": "NACamera", + "monitoring": "on", + "sd_status": 4, + "alim_status": 2, + "locked": false, + "vpn_url": "https://prodvpn-eu-2.netatmo.net/restricted/10.255.123.45/609e27de5699fb18147ab47d06846631/MTRPn_BeWCav5RBq4U1OMDruTW4dkQ0NuMwNDAw11g,,", + "is_local": true + }, + { + "id": "12:34:56:00:fa:d0", + "type": "NAPlug", + "firmware_revision": 174, + "rf_strength": 107, + "wifi_strength": 42 + }, + { + "id": "12:34:56:00:01:ae", + "reachable": true, + "type": "NATherm1", + "firmware_revision": 65, + "rf_strength": 58, + "battery_level": 3793, + "boiler_valve_comfort_boost": false, + "boiler_status": false, + "anticipating": false, + "bridge": "12:34:56:00:fa:d0", + "battery_state": "high" + }, + { + "id": "12:34:56:03:a5:54", + "reachable": true, + "type": "NRV", + "firmware_revision": 79, + "rf_strength": 51, + "battery_level": 3025, + "bridge": "12:34:56:00:fa:d0", + "battery_state": "full" + }, + { + "id": "12:34:56:03:a0:ac", + "reachable": true, + "type": "NRV", + "firmware_revision": 79, + "rf_strength": 59, + "battery_level": 3029, + "bridge": "12:34:56:00:fa:d0", + "battery_state": "full" + }, + { + "type": "NDB", + "last_ftp_event": { + "type": 3, + "time": 1631444443, + "id": 3 + }, + "id": "12:34:56:10:f1:66", + "websocket_connected": true, + "vpn_url": "https://prodvpn-eu-6.netatmo.net/10.20.30.40/1111111111111/2222222222222,,", + "is_local": false, + "alim_status": 2, + "connection": "wifi", + "firmware_name": "2.18.0", + "firmware_revision": 2018000, + "homekit_status": "configured", + "max_peers_reached": false, + "sd_status": 4, + "wifi_strength": 66, + "wifi_state": "medium" + }, + { + "type": "NOC", + "firmware_revision": 3002000, + "monitoring": "on", + "sd_status": 4, + "connection": "wifi", + "homekit_status": "upgradable", + "floodlight": "auto", + "timelapse_available": true, + "id": "12:34:56:10:b9:0e", + "vpn_url": "https://prodvpn-eu-6.netatmo.net/10.20.30.41/333333333333/444444444444,,", + "is_local": false, + "network_lock": false, + "firmware_name": "3.2.0", + "wifi_strength": 62, + "alim_status": 2, + "locked": false, + "wifi_state": "high" + }, + { + "boiler_control": "onoff", + "dhw_control": "none", + "firmware_revision": 22, + "hardware_version": 222, + "id": "12:34:56:20:f5:44", + "outdoor_temperature": 8.2, + "sequence_id": 19764, + "type": "OTH", + "wifi_strength": 57 + }, + { + "battery_level": 4176, + "boiler_status": false, + "boiler_valve_comfort_boost": false, + "firmware_revision": 6, + "id": "12:34:56:20:f5:8c", + "last_message": 1637684297, + "last_seen": 1637684297, + "radio_id": 2, + "reachable": true, + "rf_strength": 64, + "type": "OTM", + "bridge": "12:34:56:20:f5:44", + "battery_state": "full" + }, + { + "id": "12:34:56:30:d5:d4", + "type": "NBG", + "firmware_revision": 39, + "wifi_strength": 65, + "reachable": true + }, + { + "id": "0009999992", + "type": "NBR", + "current_position": 0, + "target_position": 0, + "target_position_step": 100, + "firmware_revision": 16, + "rf_strength": 0, + "last_seen": 1638353156, + "reachable": true, + "bridge": "12:34:56:30:d5:d4" + }, + { + "id": "12:34:56:00:86:99", + "type": "NACamDoorTag", + "battery_state": "high", + "battery_level": 5240, + "firmware_revision": 58, + "rf_state": "full", + "rf_strength": 58, + "last_seen": 1642698124, + "last_activity": 1627757310, + "reachable": false, + "bridge": "12:34:56:00:f1:62", + "status": "no_news" + }, + { + "id": "12:34:56:00:e3:9b", + "type": "NIS", + "battery_state": "low", + "battery_level": 5438, + "firmware_revision": 209, + "rf_state": "medium", + "rf_strength": 62, + "last_seen": 1644569790, + "reachable": true, + "bridge": "12:34:56:00:f1:62", + "status": "no_sound", + "monitoring": "off" + }, + { + "id": "12:34:56:80:60:40", + "type": "NLG", + "offload": false, + "firmware_revision": 211, + "last_seen": 1644567372, + "wifi_strength": 51, + "reachable": true + }, + { + "id": "12:34:56:80:00:12:ac:f2", + "type": "NLP", + "on": true, + "offload": false, + "firmware_revision": 62, + "last_seen": 1644569425, + "power": 0, + "reachable": true, + "bridge": "12:34:56:80:60:40" + }, + { + "id": "12:34:56:80:00:c3:69:3c", + "type": "NLT", + "battery_state": "full", + "battery_level": 3300, + "firmware_revision": 42, + "last_seen": 0, + "reachable": false, + "bridge": "12:34:56:80:60:40" + }, + { + "id": "12:34:56:00:16:0e", + "type": "NLE", + "firmware_revision": 14, + "wifi_strength": 38 + }, + { + "id": "12:34:56:00:16:0e#0", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#1", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#2", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#3", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#4", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#5", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#6", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#7", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:16:0e#8", + "type": "NLE", + "bridge": "12:34:56:00:16:0e" + }, + { + "id": "12:34:56:00:00:a1:4c:da", + "type": "NLPC", + "firmware_revision": 62, + "last_seen": 1646511241, + "power": 476, + "reachable": true, + "bridge": "12:34:56:80:60:40" + }, + { + "id": "10:20:30:bd:b8:1e", + "type": "BNS", + "firmware_revision": 32, + "wifi_strength": 49, + "boiler_valve_comfort_boost": false, + "boiler_status": true, + "cooler_status": false + }, + { + "id": "00:11:22:33:00:11:45:fe", + "type": "NLF", + "on": false, + "brightness": 63, + "firmware_revision": 57, + "last_seen": 1657086939, + "power": 0, + "reachable": true, + "bridge": "12:34:56:80:60:40" + } + ], + "rooms": [ + { + "id": "2746182631", + "reachable": true, + "therm_measured_temperature": 19.8, + "therm_setpoint_temperature": 12, + "therm_setpoint_mode": "away", + "therm_setpoint_start_time": 1559229567, + "therm_setpoint_end_time": 0 + }, + { + "id": "2940411577", + "reachable": true, + "therm_measured_temperature": 27, + "heating_power_request": 0, + "therm_setpoint_temperature": 7, + "therm_setpoint_mode": "hg", + "therm_setpoint_start_time": 0, + "therm_setpoint_end_time": 0, + "anticipating": false, + "open_window": false + }, + { + "id": "2833524037", + "reachable": true, + "therm_measured_temperature": 24.5, + "heating_power_request": 0, + "therm_setpoint_temperature": 7, + "therm_setpoint_mode": "hg", + "therm_setpoint_start_time": 0, + "therm_setpoint_end_time": 0, + "anticipating": false, + "open_window": false + }, + { + "id": "1002003001", + "reachable": true, + "anticipating": false, + "heating_power_request": 0, + "open_window": false, + "humidity": 67, + "therm_measured_temperature": 22, + "therm_setpoint_temperature": 22, + "therm_setpoint_start_time": 1647462737, + "therm_setpoint_end_time": null, + "therm_setpoint_mode": "home" + } + ], + "id": "91763b24c43d3e344f424e8b", + "persons": [ + { + "id": "91827374-7e04-5298-83ad-a0cb8372dff1", + "last_seen": 1557071156, + "out_of_sight": true + }, + { + "id": "91827375-7e04-5298-83ae-a0cb8372dff2", + "last_seen": 1559282761, + "out_of_sight": false + }, + { + "id": "91827376-7e04-5298-83af-a0cb8372dff3", + "last_seen": 1559224132, + "out_of_sight": true + } + ] + } } -} + } + \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index e8feb3b4..171b16be 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,6 +13,10 @@ classifiers = License :: OSI Approved :: MIT License Programming Language :: Python :: 3 Programming Language :: Python :: 3 :: Only + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 Programming Language :: Python :: Implementation :: CPython Programming Language :: Python :: Implementation :: PyPy Topic :: Home Automation diff --git a/src/pyatmo/home.py b/src/pyatmo/home.py index 694d4655..7e561315 100644 --- a/src/pyatmo/home.py +++ b/src/pyatmo/home.py @@ -19,6 +19,7 @@ ) from pyatmo.event import Event from pyatmo.exceptions import InvalidState, NoSchedule +from pyatmo.modules import Module from pyatmo.person import Person from pyatmo.room import Room from pyatmo.schedule import Schedule @@ -36,7 +37,7 @@ class Home: entity_id: str name: str rooms: dict[str, Room] - modules: dict[str, modules.Module] + modules: dict[str, Module] schedules: dict[str, Schedule] persons: dict[str, Person] events: dict[str, Event] @@ -46,10 +47,7 @@ def __init__(self, auth: AbstractAsyncAuth, raw_data: RawData) -> None: self.entity_id = raw_data["id"] self.name = raw_data.get("name", "Unknown") self.modules = { - module["id"]: getattr(modules, module["type"])( - home=self, - module=module, - ) + module["id"]: self.get_module(module) for module in raw_data.get("modules", []) } self.rooms = { @@ -69,6 +67,19 @@ def __init__(self, auth: AbstractAsyncAuth, raw_data: RawData) -> None: } self.events = {} + def get_module(self, module) -> Module: + try: + return getattr(modules, module["type"])( + home=self, + module=module, + ) + except AttributeError: + LOG.info("Unknown device type %s", module["type"]) + return getattr(modules, "NLunknown")( + home=self, + module=module, + ) + def update_topology(self, raw_data: RawData) -> None: self.name = raw_data.get("name", "Unknown") diff --git a/src/pyatmo/modules/__init__.py b/src/pyatmo/modules/__init__.py index f647bb79..7ec6d01e 100644 --- a/src/pyatmo/modules/__init__.py +++ b/src/pyatmo/modules/__init__.py @@ -23,8 +23,10 @@ NLPS, NLPT, NLT, + NLUF, NLUI, NLV, + NLunknown, ) from .module import Camera, Dimmer, Module, Shutter, Switch from .netatmo import ( @@ -52,9 +54,9 @@ from .smarther import BNS __all__ = [ - "BNS", "BNCX", "BNDL", + "BNS", "BNSL", "Camera", "Dimmer", @@ -70,8 +72,8 @@ "NAPlug", "NATherm1", "NBG", - "NBR", "NBO", + "NBR", "NBS", "NCO", "NDB", @@ -81,8 +83,8 @@ "NLD", "NLE", "NLF", - "NLFN", "NLFE", + "NLFN", "NLG", "NLIS", "NLL", @@ -97,8 +99,10 @@ "NLPS", "NLPT", "NLT", - "NLV", + "NLUF", "NLUI", + "NLunknown", + "NLV", "NOC", "NRV", "NSD", diff --git a/src/pyatmo/modules/device_types.py b/src/pyatmo/modules/device_types.py index 11a28556..7a201eec 100644 --- a/src/pyatmo/modules/device_types.py +++ b/src/pyatmo/modules/device_types.py @@ -47,6 +47,7 @@ class DeviceType(str, Enum): # Legrand Wiring devices and electrical panel products NLC = "NLC" # Cable outlet + NLD = "NLD" # Dimmer NLE = "NLE" # Connected Ecometer NLF = "NLF" # 2 wire light switch NLFN = "NLFN" # light switch with neutral @@ -67,6 +68,8 @@ class DeviceType(str, Enum): NLT = "NLT" # Global remote control NLV = "NLV" # Legrand / BTicino shutters NLUI = "NLUI" # Legrand device stub + NLunknown = "NLunknown" # Legrand device stub + NLUF = "NLUF" # Legrand device stub # BTicino Classe 300 EOS BNCX = "BNCX" # internal panel = gateway diff --git a/src/pyatmo/modules/legrand.py b/src/pyatmo/modules/legrand.py index 71e97e3e..401ad1b9 100644 --- a/src/pyatmo/modules/legrand.py +++ b/src/pyatmo/modules/legrand.py @@ -107,4 +107,12 @@ class NLC(FirmwareMixin, SwitchMixin, Module): class NLUI(FirmwareMixin, Module): - """Legrand NLUI device stubs.""" + """Legrand NLUI device stub.""" + + +class NLUF(FirmwareMixin, Module): + """Legrand NLUF device stub.""" + + +class NLunknown(Module): + """NLunknown device stub.""" diff --git a/tests/test_pyatmo_refactor.py b/tests/test_pyatmo_refactor.py index d562b044..aa367fd2 100644 --- a/tests/test_pyatmo_refactor.py +++ b/tests/test_pyatmo_refactor.py @@ -29,7 +29,7 @@ async def test_async_home(async_home): DeviceType.NIS, } assert len(async_home.rooms) == 8 - assert len(async_home.modules) == 35 + assert len(async_home.modules) == 36 assert async_home.modules != room.modules module_id = "12:34:56:10:f1:66" @@ -528,7 +528,7 @@ def gen_json_data(position): "id": "91763b24c43d3e344f424e8b", "modules": [ { - "bridge": "70:ee:50:3e:d5:d4", + "bridge": "12:34:56:30:d5:d4", "id": module_id, "target_position": position, },