iobroker.acinfinity 0.3.1
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/LICENSE +21 -0
- package/README.md +86 -0
- package/admin/acinfinity.png +0 -0
- package/admin/index_m.html +151 -0
- package/admin/jsonConfig.json +77 -0
- package/admin/words.js +54 -0
- package/io-package.json +97 -0
- package/lib/client.js +625 -0
- package/lib/constants.js +173 -0
- package/lib/creators/deviceCreator.js +202 -0
- package/lib/creators/portCreator.js +536 -0
- package/lib/creators/stateCreator.js +177 -0
- package/lib/dataModels.js +135 -0
- package/lib/handlers/deviceSettingsHandler.js +163 -0
- package/lib/handlers/portModeHandler.js +630 -0
- package/lib/handlers/portSettingsHandler.js +212 -0
- package/lib/stateManager.js +313 -0
- package/lib/updaters/deviceUpdater.js +202 -0
- package/lib/updaters/portUpdater.js +527 -0
- package/main.js +325 -0
- package/package.json +62 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 raspilaurent
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# ioBroker.acinfinity
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/iobroker.acinfinity)
|
|
6
|
+
[](https://www.npmjs.com/package/iobroker.acinfinity)
|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
[](https://opensource.org/licenses/MIT)
|
|
10
|
+
|
|
11
|
+
## AC Infinity Adapter for ioBroker
|
|
12
|
+
|
|
13
|
+
This adapter allows you to control your AC Infinity devices via ioBroker.
|
|
14
|
+
|
|
15
|
+
## ALL CREDITS TO: https://github.com/dalinicus/homeassistant-acinfinity
|
|
16
|
+
|
|
17
|
+
## Features
|
|
18
|
+
|
|
19
|
+
* Control AC Infinity fans, timers, and other connected devices
|
|
20
|
+
* Monitor temperature, humidity, and VPD (Vapor Pressure Deficit) values
|
|
21
|
+
* Configure automatic mode settings based on environmental conditions
|
|
22
|
+
* Full support for all controller functions including scheduling and cyclical operations
|
|
23
|
+
|
|
24
|
+
## Haftungsausschluss
|
|
25
|
+
|
|
26
|
+
Die Nutzung dieser Software erfolgt ausdrücklich auf eigene Gefahr. Es wird keinerlei Garantie für die Funktionsfähigkeit, Fehlerfreiheit oder Eignung für einen bestimmten Zweck übernommen.
|
|
27
|
+
Jegliche Haftung für direkte oder indirekte Schäden, einschließlich, aber nicht beschränkt auf Geräteausfälle, Datenverluste oder Fehlverhalten des Systems, wird ausdrücklich ausgeschlossen.
|
|
28
|
+
Der Entwickler übernimmt keine Verantwortung für etwaige Schäden, die durch die Verwendung dieser Software entstehen. Die Nutzung erfolgt in vollem Umfang auf eigenes Risiko.
|
|
29
|
+
|
|
30
|
+
## Disclaimer
|
|
31
|
+
|
|
32
|
+
The use of this software is entirely at your own risk. No guarantees are made regarding functionality, reliability, or suitability for any particular purpose.
|
|
33
|
+
Any liability for direct or indirect damages – including but not limited to hardware failures, data loss, or system malfunctions – is expressly disclaimed.
|
|
34
|
+
The developer accepts no responsibility for any harm or issues arising from the use of this software. You use it entirely at your own risk.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
## Setup
|
|
38
|
+
|
|
39
|
+
1. Enter your AC Infinity email and password
|
|
40
|
+
2. Set the polling interval (minimum 5 seconds)
|
|
41
|
+
3. Click Save & Close
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
After installation, the adapter will create device objects for each of your AC Infinity devices. You can control:
|
|
46
|
+
|
|
47
|
+
* Basic on/off functionality
|
|
48
|
+
* Fan speed settings
|
|
49
|
+
* Timer, cycle, and schedule modes
|
|
50
|
+
* Temperature and humidity thresholds
|
|
51
|
+
* VPD settings
|
|
52
|
+
* Advanced configuration options
|
|
53
|
+
|
|
54
|
+
## Troubleshooting
|
|
55
|
+
|
|
56
|
+
* If connection issues occur, check your AC Infinity credentials
|
|
57
|
+
* For debugging, you can enable verbose logging in the instance settings
|
|
58
|
+
|
|
59
|
+
## Changelog
|
|
60
|
+
|
|
61
|
+
### 0.3.1 (2025-03-27)
|
|
62
|
+
* Initial release
|
|
63
|
+
|
|
64
|
+
## License
|
|
65
|
+
|
|
66
|
+
MIT License
|
|
67
|
+
|
|
68
|
+
Copyright (c) 2025 raspilaurent
|
|
69
|
+
|
|
70
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
71
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
72
|
+
in the Software without restriction, including without limitation the rights
|
|
73
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
74
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
75
|
+
furnished to do so, subject to the following conditions:
|
|
76
|
+
|
|
77
|
+
The above copyright notice and this permission notice shall be included in all
|
|
78
|
+
copies or substantial portions of the Software.
|
|
79
|
+
|
|
80
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
81
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
82
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
83
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
84
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
85
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
86
|
+
SOFTWARE.
|
|
Binary file
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<!-- Load ioBroker scripts and styles-->
|
|
5
|
+
<link rel="stylesheet" type="text/css" href="../../css/adapter.css" />
|
|
6
|
+
<link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
|
|
7
|
+
|
|
8
|
+
<script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
|
|
9
|
+
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
|
|
10
|
+
<script type="text/javascript" src="../../js/translate.js"></script>
|
|
11
|
+
<script type="text/javascript" src="../../lib/js/materialize.js"></script>
|
|
12
|
+
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
|
|
13
|
+
|
|
14
|
+
<!-- Load our own files -->
|
|
15
|
+
<link rel="stylesheet" type="text/css" href="style.css" />
|
|
16
|
+
<script type="text/javascript" src="words.js"></script>
|
|
17
|
+
|
|
18
|
+
<style>
|
|
19
|
+
body {
|
|
20
|
+
background-color: #f5f5f5;
|
|
21
|
+
}
|
|
22
|
+
.adapter-container {
|
|
23
|
+
background-color: white;
|
|
24
|
+
border-radius: 2px;
|
|
25
|
+
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.2), 0 1px 5px 0 rgba(0,0,0,0.12);
|
|
26
|
+
margin: 20px;
|
|
27
|
+
padding: 20px;
|
|
28
|
+
max-width: 600px;
|
|
29
|
+
}
|
|
30
|
+
.logo {
|
|
31
|
+
max-height: 48px;
|
|
32
|
+
margin-bottom: 15px;
|
|
33
|
+
}
|
|
34
|
+
.input-field {
|
|
35
|
+
margin-bottom: 20px;
|
|
36
|
+
}
|
|
37
|
+
.input-field label {
|
|
38
|
+
color: rgba(0,0,0,0.62);
|
|
39
|
+
}
|
|
40
|
+
.input-field input:focus {
|
|
41
|
+
border-bottom: 1px solid #2196F3;
|
|
42
|
+
box-shadow: 0 1px 0 0 #2196F3;
|
|
43
|
+
}
|
|
44
|
+
.input-field .helper-text {
|
|
45
|
+
color: rgba(0,0,0,0.54);
|
|
46
|
+
font-size: 12px;
|
|
47
|
+
}
|
|
48
|
+
.warning-text {
|
|
49
|
+
color: #FF9800;
|
|
50
|
+
}
|
|
51
|
+
h4 {
|
|
52
|
+
color: rgba(0,0,0,0.87);
|
|
53
|
+
font-size: 24px;
|
|
54
|
+
margin-bottom: 20px;
|
|
55
|
+
}
|
|
56
|
+
.btn {
|
|
57
|
+
background-color: #2196F3;
|
|
58
|
+
}
|
|
59
|
+
.btn:hover {
|
|
60
|
+
background-color: #1976D2;
|
|
61
|
+
}
|
|
62
|
+
</style>
|
|
63
|
+
|
|
64
|
+
<script type="text/javascript">
|
|
65
|
+
function load(settings, onChange) {
|
|
66
|
+
if (!settings) return;
|
|
67
|
+
$('.value').each(function () {
|
|
68
|
+
var $key = $(this);
|
|
69
|
+
var id = $key.attr('id');
|
|
70
|
+
if ($key.attr('type') === 'checkbox') {
|
|
71
|
+
$key.prop('checked', settings[id])
|
|
72
|
+
.on('change', () => onChange());
|
|
73
|
+
} else {
|
|
74
|
+
$key.val(settings[id])
|
|
75
|
+
.on('change', () => onChange())
|
|
76
|
+
.on('keyup', () => onChange());
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
onChange(false);
|
|
80
|
+
if (M) M.updateTextFields();
|
|
81
|
+
|
|
82
|
+
$('#password').on('focus', function() {
|
|
83
|
+
$('#password-hint').show();
|
|
84
|
+
}).on('blur', function() {
|
|
85
|
+
$('#password-hint').hide();
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
$('#pollingInterval').on('change keyup', function() {
|
|
89
|
+
var value = parseInt($(this).val());
|
|
90
|
+
if (value < 10) {
|
|
91
|
+
$('#pollingIntervalWarning').show();
|
|
92
|
+
$(this).addClass('invalid');
|
|
93
|
+
} else {
|
|
94
|
+
$('#pollingIntervalWarning').hide();
|
|
95
|
+
$(this).removeClass('invalid');
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function save(callback) {
|
|
101
|
+
var obj = {};
|
|
102
|
+
$('.value').each(function () {
|
|
103
|
+
var $this = $(this);
|
|
104
|
+
if ($this.attr('type') === 'checkbox') {
|
|
105
|
+
obj[$this.attr('id')] = $this.prop('checked');
|
|
106
|
+
} else if ($this.attr('type') === 'number') {
|
|
107
|
+
obj[$this.attr('id')] = parseFloat($this.val());
|
|
108
|
+
} else {
|
|
109
|
+
obj[$this.attr('id')] = $this.val();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
if (obj.pollingInterval < 10) {
|
|
114
|
+
obj.pollingInterval = 10;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
callback(obj);
|
|
118
|
+
}
|
|
119
|
+
</script>
|
|
120
|
+
</head>
|
|
121
|
+
<body>
|
|
122
|
+
<div class="m adapter-container">
|
|
123
|
+
<div class="row">
|
|
124
|
+
<div class="col s12">
|
|
125
|
+
<img src="acinfinity.png" class="logo" alt="AC Infinity Logo">
|
|
126
|
+
|
|
127
|
+
<h4 class="translate">AC Infinity Adapter Settings</h4>
|
|
128
|
+
|
|
129
|
+
<div class="row">
|
|
130
|
+
<div class="input-field col s12">
|
|
131
|
+
<input class="value" id="email" type="text">
|
|
132
|
+
<label for="email" class="translate">AC Infinity E-Mail</label>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<div class="input-field col s12">
|
|
136
|
+
<input class="value" id="password" type="password">
|
|
137
|
+
<label for="password" class="translate">AC Infinity Passwort</label>
|
|
138
|
+
<span id="password-hint" class="helper-text warning-text translate" style="display:none;">Note: AC Infinity truncates passwords to 25 characters.</span>
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
<div class="input-field col s12">
|
|
142
|
+
<input class="value" id="pollingInterval" type="number" min="10">
|
|
143
|
+
<label for="pollingInterval" class="translate">Abfrageintervall (Sekunden)</label>
|
|
144
|
+
<span id="pollingIntervalWarning" class="helper-text warning-text translate" style="display:none;">Minimum polling interval is 10 seconds.</span>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
</body>
|
|
151
|
+
</html>
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"i18n": true,
|
|
3
|
+
"type": "panel",
|
|
4
|
+
"items": {
|
|
5
|
+
"warning": {
|
|
6
|
+
"type": "panel",
|
|
7
|
+
"items": {
|
|
8
|
+
"warningTitle": {
|
|
9
|
+
"type": "staticText",
|
|
10
|
+
"text": "WARNING / WARNUNG",
|
|
11
|
+
"style": {
|
|
12
|
+
"color": "red",
|
|
13
|
+
"fontSize": "18px",
|
|
14
|
+
"fontWeight": "bold",
|
|
15
|
+
"textAlign": "center"
|
|
16
|
+
},
|
|
17
|
+
"sm": 12,
|
|
18
|
+
"md": 12,
|
|
19
|
+
"lg": 12,
|
|
20
|
+
"xl": 12,
|
|
21
|
+
"xs": 12
|
|
22
|
+
},
|
|
23
|
+
"warningText": {
|
|
24
|
+
"type": "staticText",
|
|
25
|
+
"text": "This adapter is in an early development stage. You use this adapter at your own risk. The author assumes no liability for any damage.<br><br>Dieser Adapter befindet sich in einem frühen Entwicklungsstadium. Sie verwenden diesen Adapter auf eigene Gefahr. Der Autor übernimmt keine Haftung für eventuelle Schäden.",
|
|
26
|
+
"style": {
|
|
27
|
+
"color": "red",
|
|
28
|
+
"fontWeight": "bold",
|
|
29
|
+
"textAlign": "center",
|
|
30
|
+
"marginBottom": "20px"
|
|
31
|
+
},
|
|
32
|
+
"sm": 12,
|
|
33
|
+
"md": 12,
|
|
34
|
+
"lg": 12,
|
|
35
|
+
"xl": 12,
|
|
36
|
+
"xs": 12
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"settings": {
|
|
41
|
+
"type": "panel",
|
|
42
|
+
"items": {
|
|
43
|
+
"email": {
|
|
44
|
+
"type": "text",
|
|
45
|
+
"label": "AC Infinity E-Mail",
|
|
46
|
+
"newLine": true,
|
|
47
|
+
"sm": 12,
|
|
48
|
+
"md": 12,
|
|
49
|
+
"lg": 12,
|
|
50
|
+
"xl": 12,
|
|
51
|
+
"xs": 12
|
|
52
|
+
},
|
|
53
|
+
"password": {
|
|
54
|
+
"type": "password",
|
|
55
|
+
"label": "AC Infinity Password / Passwort",
|
|
56
|
+
"newLine": true,
|
|
57
|
+
"sm": 12,
|
|
58
|
+
"md": 12,
|
|
59
|
+
"lg": 12,
|
|
60
|
+
"xl": 12,
|
|
61
|
+
"xs": 12
|
|
62
|
+
},
|
|
63
|
+
"pollingInterval": {
|
|
64
|
+
"type": "number",
|
|
65
|
+
"label": "Polling Interval / Abfrageintervall (seconds)",
|
|
66
|
+
"min": 5,
|
|
67
|
+
"default": 30,
|
|
68
|
+
"sm": 12,
|
|
69
|
+
"md": 6,
|
|
70
|
+
"lg": 4,
|
|
71
|
+
"xl": 3,
|
|
72
|
+
"xs": 12
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
package/admin/words.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*global systemDictionary:true */
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
systemDictionary = {
|
|
5
|
+
'AC Infinity Adapter Settings': {
|
|
6
|
+
'en': 'AC Infinity Adapter Settings',
|
|
7
|
+
'de': 'AC Infinity Adapter Einstellungen'
|
|
8
|
+
},
|
|
9
|
+
'AC Infinity Email': {
|
|
10
|
+
'en': 'AC Infinity Email',
|
|
11
|
+
'de': 'AC Infinity E-Mail'
|
|
12
|
+
},
|
|
13
|
+
'Email address used for AC Infinity login': {
|
|
14
|
+
'en': 'Email address used for AC Infinity login',
|
|
15
|
+
'de': 'E-Mail-Adresse für AC Infinity Login'
|
|
16
|
+
},
|
|
17
|
+
'AC Infinity Password': {
|
|
18
|
+
'en': 'AC Infinity Password',
|
|
19
|
+
'de': 'AC Infinity Passwort'
|
|
20
|
+
},
|
|
21
|
+
'Password used for AC Infinity login': {
|
|
22
|
+
'en': 'Password used for AC Infinity login',
|
|
23
|
+
'de': 'Passwort für AC Infinity Login'
|
|
24
|
+
},
|
|
25
|
+
'Polling Interval (seconds)': {
|
|
26
|
+
'en': 'Polling Interval (seconds)',
|
|
27
|
+
'de': 'Abfrageintervall (Sekunden)'
|
|
28
|
+
},
|
|
29
|
+
'Minimum polling interval is 5 seconds.': {
|
|
30
|
+
'en': 'Minimum polling interval is 5 seconds.',
|
|
31
|
+
'de': 'Minimales Abfrageintervall beträgt 5 Sekunden.'
|
|
32
|
+
},
|
|
33
|
+
'Note: AC Infinity truncates passwords to 25 characters.': {
|
|
34
|
+
'en': 'Note: AC Infinity truncates passwords to 25 characters.',
|
|
35
|
+
'de': 'Hinweis: AC Infinity kürzt Passwörter auf 25 Zeichen.'
|
|
36
|
+
},
|
|
37
|
+
// Zusätzliche Begriffe, die möglicherweise im Interface verwendet werden
|
|
38
|
+
'WARNING / WARNUNG': {
|
|
39
|
+
'en': 'WARNING',
|
|
40
|
+
'de': 'WARNUNG'
|
|
41
|
+
},
|
|
42
|
+
'This adapter is in an early development stage. You use this adapter at your own risk. The author assumes no liability for any damage.': {
|
|
43
|
+
'en': 'This adapter is in an early development stage. You use this adapter at your own risk. The author assumes no liability for any damage.',
|
|
44
|
+
'de': 'Dieser Adapter befindet sich in einem frühen Entwicklungsstadium. Sie verwenden diesen Adapter auf eigene Gefahr. Der Autor übernimmt keine Haftung für eventuelle Schäden.'
|
|
45
|
+
},
|
|
46
|
+
'Polling Interval / Abfrageintervall (seconds)': {
|
|
47
|
+
'en': 'Polling Interval (seconds)',
|
|
48
|
+
'de': 'Abfrageintervall (Sekunden)'
|
|
49
|
+
},
|
|
50
|
+
'AC Infinity Password / Passwort': {
|
|
51
|
+
'en': 'AC Infinity Password',
|
|
52
|
+
'de': 'AC Infinity Passwort'
|
|
53
|
+
}
|
|
54
|
+
};
|
package/io-package.json
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common": {
|
|
3
|
+
"name": "acinfinity",
|
|
4
|
+
"version": "0.3.1",
|
|
5
|
+
"news": {
|
|
6
|
+
"0.3.1": {
|
|
7
|
+
"en": "Initial version",
|
|
8
|
+
"de": "Erste Version"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"title": "AC Infinity (BETA-VERSION - USE AT YOUR OWN RISK)",
|
|
12
|
+
"titleLang": {
|
|
13
|
+
"en": "AC Infinity (BETA-VERSION - USE AT YOUR OWN RISK)",
|
|
14
|
+
"de": "AC Infinity (BETA-VERSION - NUTZUNG AUF EIGENE GEFAHR)"
|
|
15
|
+
},
|
|
16
|
+
"desc": {
|
|
17
|
+
"en": "Adapter for controlling AC Infinity smart devices",
|
|
18
|
+
"de": "Adapter für die Steuerung von AC Infinity Smart-Geräten"
|
|
19
|
+
},
|
|
20
|
+
"authors": [
|
|
21
|
+
"laurent Standard raspi@laurent-vite.de"
|
|
22
|
+
],
|
|
23
|
+
"keywords": [
|
|
24
|
+
"ac infinity",
|
|
25
|
+
"climate control",
|
|
26
|
+
"Controller 69pro+"
|
|
27
|
+
],
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"platform": "Javascript/Node.js",
|
|
30
|
+
"main": "main.js",
|
|
31
|
+
"icon": "acinfinity.png",
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"extIcon": "https://raw.githubusercontent.com/raspilaurent/ioBroker.acinfinity/master/admin/acinfinity.png",
|
|
34
|
+
"readme": "https://github.com/raspilaurent/ioBroker.acinfinity/blob/master/README.md",
|
|
35
|
+
"loglevel": "info",
|
|
36
|
+
"mode": "daemon",
|
|
37
|
+
"type": "climate-control",
|
|
38
|
+
"compact": true,
|
|
39
|
+
"connectionType": "cloud",
|
|
40
|
+
"dataSource": "poll",
|
|
41
|
+
"materialize": true,
|
|
42
|
+
"noConfig": false,
|
|
43
|
+
"adminUI": {
|
|
44
|
+
"config": "json"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": [
|
|
47
|
+
{
|
|
48
|
+
"js-controller": ">=5.0.19"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"admin": ">=6.17.14"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"globalDependencies": []
|
|
55
|
+
},
|
|
56
|
+
"native": {
|
|
57
|
+
"email": "",
|
|
58
|
+
"password": "",
|
|
59
|
+
"pollingInterval": 30
|
|
60
|
+
},
|
|
61
|
+
"objects": [],
|
|
62
|
+
"instanceObjects": [
|
|
63
|
+
{
|
|
64
|
+
"_id": "info",
|
|
65
|
+
"type": "channel",
|
|
66
|
+
"common": {
|
|
67
|
+
"name": "Information"
|
|
68
|
+
},
|
|
69
|
+
"native": {}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"_id": "info.connection",
|
|
73
|
+
"type": "state",
|
|
74
|
+
"common": {
|
|
75
|
+
"role": "indicator.connected",
|
|
76
|
+
"name": "Device or service connected",
|
|
77
|
+
"type": "boolean",
|
|
78
|
+
"read": true,
|
|
79
|
+
"write": false,
|
|
80
|
+
"def": false
|
|
81
|
+
},
|
|
82
|
+
"native": {}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"_id": "info.token",
|
|
86
|
+
"type": "state",
|
|
87
|
+
"common": {
|
|
88
|
+
"role": "text",
|
|
89
|
+
"name": "Login token",
|
|
90
|
+
"type": "string",
|
|
91
|
+
"read": true,
|
|
92
|
+
"write": false
|
|
93
|
+
},
|
|
94
|
+
"native": {}
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|