homebridge-melcloud-control 4.0.0-beta.9 → 4.0.0-beta.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -16,6 +16,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
16
  - do not configure it manually, always using Config UI X
17
17
  - required Homebridge v2.0.0 and above
18
18
 
19
+ ## [4.0.0] - (xx.10.2025)
20
+
21
+ ## Changes
22
+
23
+ - added support for MELCloud Home [#215](https://github.com/grzegorz914/homebridge-melcloud-control/issues/215)
24
+ - redme updated
25
+ - config schema updated
26
+ - cleanup
27
+
19
28
  ## [3.9.5] - (02.09.2025)
20
29
 
21
30
  ## Changes
package/README.md CHANGED
@@ -204,9 +204,10 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
204
204
  | Key | Description |
205
205
  | --- | --- |
206
206
  | `name` | Here set the own account name. |
207
- | `user` | Here set the MELCloud username. |
208
- | `passwd` | Here set the MELCloud password. |
209
- | `language` | Here select the MELCloud language. |
207
+ | `user` | Here set the account username. |
208
+ | `passwd` | Here set the account password. |
209
+ | `language` | Here select the account language. |
210
+ | `displayMode` | Here select the account type `None/Disabled`, `MELCloud`, `MELCloud Home`. |
210
211
  | `ataDevices[]` | Array of ATA devices created automatically after login to MELCloud from plugin config UI. |
211
212
  | `ataDevices[].id` | Read only data, do not change it. |
212
213
  | `ataDevices[].type` | Read only data, do not change it. |
@@ -201,6 +201,32 @@
201
201
  }
202
202
  ]
203
203
  },
204
+ "displayType": {
205
+ "title": "Account Type",
206
+ "type": "string",
207
+ "default": "disabled",
208
+ "description": "Here select the language used in MELCloud account.",
209
+ "oneOf": [
210
+ {
211
+ "title": "None/Disabled",
212
+ "enum": [
213
+ "disabled"
214
+ ]
215
+ },
216
+ {
217
+ "title": "MELCLoud",
218
+ "enum": [
219
+ "melcloud"
220
+ ]
221
+ },
222
+ {
223
+ "title": "MELCLoud Home",
224
+ "enum": [
225
+ "melcloudhome"
226
+ ]
227
+ }
228
+ ]
229
+ },
204
230
  "ataDevices": {
205
231
  "title": "Devices ATA",
206
232
  "type": "array",
@@ -209,8 +235,8 @@
209
235
  "properties": {
210
236
  "id": {
211
237
  "title": "ID",
212
- "type": "integer",
213
- "default": 0,
238
+ "type": "string",
239
+ "default": "0",
214
240
  "readonly": true
215
241
  },
216
242
  "type": {
@@ -778,8 +804,8 @@
778
804
  "properties": {
779
805
  "id": {
780
806
  "title": "ID",
781
- "type": "integer",
782
- "default": 0,
807
+ "type": "string",
808
+ "default": "0",
783
809
  "readonly": true
784
810
  },
785
811
  "type": {
@@ -1313,8 +1339,8 @@
1313
1339
  "properties": {
1314
1340
  "id": {
1315
1341
  "title": "ID",
1316
- "type": "integer",
1317
- "default": 0,
1342
+ "type": "string",
1343
+ "default": "0",
1318
1344
  "readonly": true
1319
1345
  },
1320
1346
  "type": {
@@ -1798,7 +1824,8 @@
1798
1824
  "name",
1799
1825
  "user",
1800
1826
  "passwd",
1801
- "language"
1827
+ "language",
1828
+ "displayType"
1802
1829
  ]
1803
1830
  }
1804
1831
  }
@@ -1817,353 +1844,139 @@
1817
1844
  "type": "password"
1818
1845
  },
1819
1846
  "accounts[].language",
1847
+ "accounts[].displayType",
1820
1848
  {
1821
1849
  "key": "accounts[]",
1822
1850
  "type": "tabarray",
1823
1851
  "title": "{{ value.title }}",
1824
1852
  "items": [
1825
1853
  {
1826
- "key": "accounts[]",
1827
- "title": "Air Conditioner",
1854
+ "key": "accounts[].name",
1855
+ "title": "Account Name"
1856
+ },
1857
+ {
1858
+ "key": "accounts[].ataDevices",
1859
+ "type": "tabarray",
1860
+ "title": "Air Conditioners",
1828
1861
  "items": [
1829
1862
  {
1830
- "key": "accounts[].ataDevices",
1863
+ "key": "accounts[].ataDevices[].id",
1864
+ "readonly": true
1865
+ },
1866
+ {
1867
+ "key": "accounts[].ataDevices[].typeString",
1868
+ "readonly": true
1869
+ },
1870
+ "accounts[].ataDevices[].name",
1871
+ "accounts[].ataDevices[].displayMode",
1872
+ {
1873
+ "key": "accounts[].ataDevices[].presets",
1831
1874
  "type": "tabarray",
1832
- "title": "{{ value.name }}",
1875
+ "title": "Presets",
1833
1876
  "items": [
1834
1877
  {
1835
- "key": "accounts[].ataDevices[].id",
1878
+ "key": "accounts[].ataDevices[].presets[].id",
1836
1879
  "readonly": true
1837
1880
  },
1838
- {
1839
- "key": "accounts[].ataDevices[].typeString",
1840
- "readonly": true
1841
- },
1842
- "accounts[].ataDevices[].displayMode",
1843
- {
1844
- "key": "accounts[].ataDevices[]",
1845
- "title": "Settings",
1846
- "type": "section",
1847
- "expandable": true,
1848
- "expanded": false,
1849
- "items": [
1850
- "accounts[].ataDevices[].name",
1851
- "accounts[].ataDevices[].heatDryFanMode",
1852
- "accounts[].ataDevices[].coolDryFanMode",
1853
- "accounts[].ataDevices[].autoDryFanMode",
1854
- "accounts[].ataDevices[].refreshInterval"
1855
- ],
1856
- "condition": {
1857
- "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1858
- }
1859
- },
1860
- {
1861
- "key": "accounts[].ataDevices[]",
1862
- "title": "Temperature Sensors",
1863
- "type": "section",
1864
- "expandable": true,
1865
- "expanded": false,
1866
- "items": [
1867
- "accounts[].ataDevices[].temperatureSensor",
1868
- "accounts[].ataDevices[].temperatureSensorOutdoor"
1869
- ],
1870
- "condition": {
1871
- "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1872
- }
1873
- },
1874
- {
1875
- "key": "accounts[].ataDevices[].presets",
1876
- "title": "Presets",
1877
- "type": "section",
1878
- "expandable": true,
1879
- "expanded": false,
1880
- "items": [
1881
- {
1882
- "key": "accounts[].ataDevices[].presets",
1883
- "type": "tabarray",
1884
- "title": "{{ value.name }}",
1885
- "items": [
1886
- {
1887
- "key": "accounts[].ataDevices[].presets[].id",
1888
- "readonly": true
1889
- },
1890
- "accounts[].ataDevices[].presets[].displayType",
1891
- "accounts[].ataDevices[].presets[].name",
1892
- "accounts[].ataDevices[].presets[].namePrefix"
1893
- ]
1894
- }
1895
- ],
1896
- "condition": {
1897
- "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1898
- }
1899
- },
1900
- {
1901
- "key": "accounts[].ataDevices[].buttonsSensors",
1902
- "title": "Buttons / Sensors",
1903
- "type": "section",
1904
- "expandable": true,
1905
- "expanded": false,
1906
- "items": [
1907
- {
1908
- "key": "accounts[].ataDevices[].buttonsSensors",
1909
- "type": "tabarray",
1910
- "title": "{{ value.name || 'button/sensor' }}",
1911
- "items": [
1912
- "accounts[].ataDevices[].buttonsSensors[].displayType",
1913
- "accounts[].ataDevices[].buttonsSensors[].mode",
1914
- "accounts[].ataDevices[].buttonsSensors[].name",
1915
- "accounts[].ataDevices[].buttonsSensors[].namePrefix"
1916
- ]
1917
- }
1918
- ],
1919
- "condition": {
1920
- "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1921
- }
1922
- }
1923
- ],
1924
- "condition": {
1925
- "functionBody": "return model.accounts[arrayIndices].ataDevices.length > 0;"
1926
- }
1881
+ "accounts[].ataDevices[].presets[].name",
1882
+ "accounts[].ataDevices[].presets[].displayType",
1883
+ "accounts[].ataDevices[].presets[].namePrefix"
1884
+ ]
1927
1885
  },
1928
1886
  {
1929
- "key": "accounts[]",
1887
+ "key": "accounts[].ataDevices[].buttonsSensors",
1930
1888
  "type": "tabarray",
1931
- "title": "{{ value.title }}",
1932
- "items": [],
1933
- "condition": {
1934
- "functionBody": "return model.accounts[arrayIndices].ataDevices.length === 0;"
1935
- }
1889
+ "title": "Buttons / Sensors",
1890
+ "items": [
1891
+ "accounts[].ataDevices[].buttonsSensors[].displayType",
1892
+ "accounts[].ataDevices[].buttonsSensors[].mode",
1893
+ "accounts[].ataDevices[].buttonsSensors[].name",
1894
+ "accounts[].ataDevices[].buttonsSensors[].namePrefix"
1895
+ ]
1936
1896
  }
1937
1897
  ]
1938
1898
  },
1939
1899
  {
1940
- "key": "accounts[]",
1941
- "title": "Heat Pump",
1900
+ "key": "accounts[].atwDevices",
1901
+ "type": "tabarray",
1902
+ "title": "Heat Pumps",
1942
1903
  "items": [
1943
1904
  {
1944
- "key": "accounts[].atwDevices",
1905
+ "key": "accounts[].atwDevices[].id",
1906
+ "readonly": true
1907
+ },
1908
+ {
1909
+ "key": "accounts[].atwDevices[].typeString",
1910
+ "readonly": true
1911
+ },
1912
+ "accounts[].atwDevices[].name",
1913
+ "accounts[].atwDevices[].displayMode",
1914
+ {
1915
+ "key": "accounts[].atwDevices[].presets",
1945
1916
  "type": "tabarray",
1946
- "title": "{{ value.name }}",
1917
+ "title": "Presets",
1947
1918
  "items": [
1948
1919
  {
1949
- "key": "accounts[].atwDevices[].id",
1920
+ "key": "accounts[].atwDevices[].presets[].id",
1950
1921
  "readonly": true
1951
1922
  },
1952
- {
1953
- "key": "accounts[].atwDevices[].typeString",
1954
- "readonly": true
1955
- },
1956
- "accounts[].atwDevices[].displayMode",
1957
- {
1958
- "key": "accounts[].atwDevices[]",
1959
- "type": "section",
1960
- "title": "Settings",
1961
- "expandable": true,
1962
- "expanded": false,
1963
- "items": [
1964
- "accounts[].atwDevices[].hideZone",
1965
- "accounts[].atwDevices[].name",
1966
- "accounts[].atwDevices[].refreshInterval"
1967
- ],
1968
- "condition": {
1969
- "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
1970
- }
1971
- },
1972
- {
1973
- "key": "accounts[].atwDevices[]",
1974
- "title": "Temperature Sensors",
1975
- "type": "section",
1976
- "expandable": true,
1977
- "expanded": false,
1978
- "items": [
1979
- "accounts[].atwDevices[].temperatureSensor",
1980
- "accounts[].atwDevices[].temperatureSensorFlow",
1981
- "accounts[].atwDevices[].temperatureSensorReturn",
1982
- "accounts[].atwDevices[].temperatureSensorFlowZone1",
1983
- "accounts[].atwDevices[].temperatureSensorReturnZone1",
1984
- "accounts[].atwDevices[].temperatureSensorFlowWaterTank",
1985
- "accounts[].atwDevices[].temperatureSensorReturnWaterTank",
1986
- "accounts[].atwDevices[].temperatureSensorFlowZone2",
1987
- "accounts[].atwDevices[].temperatureSensorReturnZone2"
1988
- ],
1989
- "condition": {
1990
- "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
1991
- }
1992
- },
1993
- {
1994
- "key": "accounts[].atwDevices[].presets",
1995
- "title": "Presets",
1996
- "type": "section",
1997
- "expandable": true,
1998
- "expanded": false,
1999
- "items": [
2000
- {
2001
- "key": "accounts[].atwDevices[].presets",
2002
- "type": "tabarray",
2003
- "title": "{{ value.name }}",
2004
- "items": [
2005
- {
2006
- "key": "accounts[].atwDevices[].presets[].id",
2007
- "readonly": true
2008
- },
2009
- "accounts[].atwDevices[].presets[].displayType",
2010
- "accounts[].atwDevices[].presets[].name",
2011
- "accounts[].atwDevices[].presets[].namePrefix"
2012
- ]
2013
- }
2014
- ],
2015
- "condition": {
2016
- "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
2017
- }
2018
- },
2019
- {
2020
- "key": "accounts[].atwDevices[].buttonsSensors",
2021
- "title": "Buttons / Sensors",
2022
- "type": "section",
2023
- "expandable": true,
2024
- "expanded": false,
2025
- "items": [
2026
- {
2027
- "key": "accounts[].atwDevices[].buttonsSensors",
2028
- "type": "tabarray",
2029
- "title": "{{ value.name || 'button/sensor' }}",
2030
- "items": [
2031
- "accounts[].atwDevices[].buttonsSensors[].displayType",
2032
- "accounts[].atwDevices[].buttonsSensors[].mode",
2033
- "accounts[].atwDevices[].buttonsSensors[].name",
2034
- "accounts[].atwDevices[].buttonsSensors[].namePrefix"
2035
- ]
2036
- }
2037
- ],
2038
- "condition": {
2039
- "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
2040
- }
2041
- }
2042
- ],
2043
- "condition": {
2044
- "functionBody": "return model.accounts[arrayIndices].atwDevices.length > 0;"
2045
- }
1923
+ "accounts[].atwDevices[].presets[].name",
1924
+ "accounts[].atwDevices[].presets[].displayType",
1925
+ "accounts[].atwDevices[].presets[].namePrefix"
1926
+ ]
2046
1927
  },
2047
1928
  {
2048
- "key": "accounts[]",
1929
+ "key": "accounts[].atwDevices[].buttonsSensors",
2049
1930
  "type": "tabarray",
2050
- "title": "{{ value.title }}",
2051
- "items": [],
2052
- "condition": {
2053
- "functionBody": "return model.accounts[arrayIndices].atwDevices.length === 0;"
2054
- }
1931
+ "title": "Buttons / Sensors",
1932
+ "items": [
1933
+ "accounts[].atwDevices[].buttonsSensors[].displayType",
1934
+ "accounts[].atwDevices[].buttonsSensors[].mode",
1935
+ "accounts[].atwDevices[].buttonsSensors[].name",
1936
+ "accounts[].atwDevices[].buttonsSensors[].namePrefix"
1937
+ ]
2055
1938
  }
2056
1939
  ]
2057
1940
  },
2058
1941
  {
2059
- "key": "accounts[]",
2060
- "title": "Energy Recovery Ventilation",
1942
+ "key": "accounts[].ervDevices",
1943
+ "type": "tabarray",
1944
+ "title": "ERV Units",
2061
1945
  "items": [
2062
1946
  {
2063
- "key": "accounts[].ervDevices",
1947
+ "key": "accounts[].ervDevices[].id",
1948
+ "readonly": true
1949
+ },
1950
+ {
1951
+ "key": "accounts[].ervDevices[].typeString",
1952
+ "readonly": true
1953
+ },
1954
+ "accounts[].ervDevices[].name",
1955
+ "accounts[].ervDevices[].displayMode",
1956
+ {
1957
+ "key": "accounts[].ervDevices[].presets",
2064
1958
  "type": "tabarray",
2065
- "title": "{{ value.name }}",
1959
+ "title": "Presets",
2066
1960
  "items": [
2067
1961
  {
2068
- "key": "accounts[].ervDevices[].id",
2069
- "readonly": true
2070
- },
2071
- {
2072
- "key": "accounts[].ervDevices[].typeString",
1962
+ "key": "accounts[].ervDevices[].presets[].id",
2073
1963
  "readonly": true
2074
1964
  },
2075
- "accounts[].ervDevices[].displayMode",
2076
- {
2077
- "key": "accounts[].ervDevices[]",
2078
- "title": "Settings",
2079
- "type": "section",
2080
- "expandable": true,
2081
- "expanded": false,
2082
- "items": [
2083
- "accounts[].ervDevices[].name",
2084
- "accounts[].ervDevices[].refreshInterval"
2085
- ],
2086
- "condition": {
2087
- "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2088
- }
2089
- },
2090
- {
2091
- "key": "accounts[].ervDevices[]",
2092
- "title": "Temperature Sensors",
2093
- "type": "section",
2094
- "expandable": true,
2095
- "expanded": false,
2096
- "items": [
2097
- "accounts[].ervDevices[].temperatureSensor",
2098
- "accounts[].ervDevices[].temperatureSensorOutdoor",
2099
- "accounts[].ervDevices[].temperatureSensorSupply"
2100
- ],
2101
- "condition": {
2102
- "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2103
- }
2104
- },
2105
- {
2106
- "key": "accounts[].ervDevices[].presets",
2107
- "title": "Presets",
2108
- "type": "section",
2109
- "expandable": true,
2110
- "expanded": false,
2111
- "items": [
2112
- {
2113
- "key": "accounts[].ervDevices[].presets",
2114
- "type": "tabarray",
2115
- "title": "{{ value.name }}",
2116
- "items": [
2117
- {
2118
- "key": "accounts[].ervDevices[].presets[].id",
2119
- "readonly": true
2120
- },
2121
- "accounts[].ervDevices[].presets[].displayType",
2122
- "accounts[].ervDevices[].presets[].name",
2123
- "accounts[].ervDevices[].presets[].namePrefix"
2124
- ]
2125
- }
2126
- ],
2127
- "condition": {
2128
- "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2129
- }
2130
- },
2131
- {
2132
- "key": "accounts[].ervDevices[].buttonsSensors",
2133
- "title": "Buttons / Sensors",
2134
- "type": "section",
2135
- "expandable": true,
2136
- "expanded": false,
2137
- "items": [
2138
- {
2139
- "key": "accounts[].ervDevices[].buttonsSensors",
2140
- "type": "tabarray",
2141
- "title": "{{ value.name || 'button/sensor' }}",
2142
- "items": [
2143
- "accounts[].ervDevices[].buttonsSensors[].displayType",
2144
- "accounts[].ervDevices[].buttonsSensors[].mode",
2145
- "accounts[].ervDevices[].buttonsSensors[].name",
2146
- "accounts[].ervDevices[].buttonsSensors[].namePrefix"
2147
- ]
2148
- }
2149
- ],
2150
- "condition": {
2151
- "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2152
- }
2153
- }
2154
- ],
2155
- "condition": {
2156
- "functionBody": "return model.accounts[arrayIndices].ervDevices.length > 0;"
2157
- }
1965
+ "accounts[].ervDevices[].presets[].name",
1966
+ "accounts[].ervDevices[].presets[].displayType",
1967
+ "accounts[].ervDevices[].presets[].namePrefix"
1968
+ ]
2158
1969
  },
2159
1970
  {
2160
- "key": "accounts[]",
1971
+ "key": "accounts[].ervDevices[].buttonsSensors",
2161
1972
  "type": "tabarray",
2162
- "title": "{{ value.title }}",
2163
- "items": [],
2164
- "condition": {
2165
- "functionBody": "return model.accounts[arrayIndices].ervDevices.length === 0;"
2166
- }
1973
+ "title": "Buttons / Sensors",
1974
+ "items": [
1975
+ "accounts[].ervDevices[].buttonsSensors[].displayType",
1976
+ "accounts[].ervDevices[].buttonsSensors[].mode",
1977
+ "accounts[].ervDevices[].buttonsSensors[].name",
1978
+ "accounts[].ervDevices[].buttonsSensors[].namePrefix"
1979
+ ]
2167
1980
  }
2168
1981
  ]
2169
1982
  }