iobroker.solarviewdatareader 1.0.1 → 1.0.5
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 +1 -1
- package/README.md +21 -18
- package/admin/index_m.html +0 -0
- package/admin/solarviewdatareader.png +0 -0
- package/admin/style.css +25 -3
- package/admin/words.js +0 -0
- package/io-package.json +165 -201
- package/lib/adapter-config.d.ts +0 -0
- package/lib/tools.js +0 -0
- package/main.js +59 -37
- package/package.json +35 -23
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
- package/CHANGELOG_OLD.md +0 -12
- package/admin/admin.d.ts +0 -1
- package/main.test.js +0 -30
- package/scripts/debug.sh +0 -2
- package/scripts/gulp.sh +0 -3
- package/scripts/upload.sh +0 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2019-
|
|
3
|
+
Copyright (c) 2019-2022 Achim Fürhoff <achim.fuerhoff@outlook.de>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|

|
|
2
2
|
# ioBroker.solarviewdatareader
|
|
3
3
|
|
|
4
|
-

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

|
|
7
|
+

|
|
9
8
|
[](https://snyk.io/test/github/afuerhoff/ioBroker.solarviewdatareader)
|
|
10
9
|
|
|
11
10
|
[](https://nodei.co/npm/iobroker.solarviewdatareader/)
|
|
12
11
|
|
|
13
|
-
**Tests
|
|
12
|
+
**Tests:** 
|
|
14
13
|
|
|
15
14
|
## solarviewdatareader adapter for ioBroker
|
|
16
15
|
|
|
@@ -65,25 +64,29 @@ TKK= Temperature inverter
|
|
|
65
64
|
Placeholder for the next version (at the beginning of the line):
|
|
66
65
|
### __WORK IN PROGRESS__
|
|
67
66
|
-->
|
|
67
|
+
### 1.0.5 (2022-02-17)
|
|
68
|
+
* (afuerhoff) dependencies updated
|
|
69
|
+
* (afuerhoff) test and release updated
|
|
70
|
+
* (afuerhoff) smaller changes
|
|
71
|
+
|
|
72
|
+
### 1.0.4 (2022-02-09)
|
|
73
|
+
* (afuerhoff) dependencies updated
|
|
74
|
+
* (afuerhoff) issue #20 fixed
|
|
75
|
+
|
|
76
|
+
### 1.0.3 (2021-12-08)
|
|
77
|
+
* (afuerhoff) dependencies updated
|
|
78
|
+
|
|
79
|
+
### 1.0.2 (2021-05-07)
|
|
80
|
+
* (afuerhoff) node.js 14 and 16 compatibilty
|
|
81
|
+
* (afuerhoff) dependencies updated
|
|
82
|
+
|
|
68
83
|
### 1.0.1 (2021-05-01)
|
|
69
84
|
* (afuerhoff) changes due to js-controller 3.3.x
|
|
70
85
|
|
|
71
|
-
### 1.0.0 (2021-04-25)
|
|
72
|
-
* (afuerhoff) dependencies updated
|
|
73
|
-
* (afuerhoff) documentation changed
|
|
74
|
-
* (afuerhoff) minor changes
|
|
75
|
-
* (afuerhoff) due to stable state version set to 1.0.0
|
|
76
|
-
|
|
77
|
-
### 0.2.1
|
|
78
|
-
* (afuerhoff) self consumption meter optimized
|
|
79
|
-
### 0.2.0
|
|
80
|
-
* (afuerhoff) Error handling optimized, self consumption meter implemented
|
|
81
|
-
### 0.1.0
|
|
82
|
-
* (afuerhoff) optimizations for adding to latest repository
|
|
83
86
|
## License
|
|
84
87
|
MIT License
|
|
85
88
|
|
|
86
|
-
Copyright (c) 2019-
|
|
89
|
+
Copyright (c) 2019-2022 Achim Fürhoff <achim.fuerhoff@outlook.de>
|
|
87
90
|
|
|
88
91
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
89
92
|
of this software and associated documentation files (the "Software"), to deal
|
package/admin/index_m.html
CHANGED
|
File without changes
|
|
File without changes
|
package/admin/style.css
CHANGED
|
@@ -1,13 +1,35 @@
|
|
|
1
1
|
/* You can delete those if you want. I just found them very helpful */
|
|
2
2
|
* {
|
|
3
|
-
|
|
3
|
+
box-sizing: border-box
|
|
4
4
|
}
|
|
5
5
|
.m {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/* Don't cut off dropdowns! */
|
|
7
|
+
overflow: initial;
|
|
8
|
+
}
|
|
9
|
+
.m.adapter-container {
|
|
10
|
+
/* Fix layout/scrolling issues with tabs */
|
|
11
|
+
height: 100%;
|
|
12
|
+
width: 100%;
|
|
13
|
+
position: relative;
|
|
14
|
+
}
|
|
15
|
+
.m .select-wrapper + label {
|
|
16
|
+
/* The positioning for dropdown labels is messed up */
|
|
17
|
+
transform: none !important;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
label > i[title] {
|
|
21
|
+
/* Display the help cursor for the tooltip icons and fix their positioning */
|
|
22
|
+
cursor: help;
|
|
23
|
+
margin-left: 0.25em;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.dropdown-content {
|
|
27
|
+
/* Don't wrap text in dropdowns */
|
|
28
|
+
white-space: nowrap;
|
|
8
29
|
}
|
|
9
30
|
|
|
10
31
|
/* Add your styles here */
|
|
32
|
+
|
|
11
33
|
/* Tooltip container */
|
|
12
34
|
.tooltip {
|
|
13
35
|
position: relative;
|
package/admin/words.js
CHANGED
|
File without changes
|
package/io-package.json
CHANGED
|
@@ -1,204 +1,168 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
"0.0.3": {
|
|
91
|
-
"en": "selection of the inverters added",
|
|
92
|
-
"de": "Auswahl der Wechselrichter ergänzt",
|
|
93
|
-
"ru": "добавлен выбор инверторов",
|
|
94
|
-
"pt": "seleção dos inversores adicionados",
|
|
95
|
-
"nl": "selectie van de omvormers toegevoegd",
|
|
96
|
-
"fr": "sélection des inverseurs ajoutés",
|
|
97
|
-
"it": "selezione degli inverter aggiunti",
|
|
98
|
-
"es": "Selección de los inversores añadidos.",
|
|
99
|
-
"pl": "wybór dodanych falowników",
|
|
100
|
-
"zh-cn": "选择添加的逆变器"
|
|
101
|
-
},
|
|
102
|
-
"0.0.2": {
|
|
103
|
-
"en": "First test version",
|
|
104
|
-
"de": "Erste Testversion",
|
|
105
|
-
"ru": "Первая тестовая версия",
|
|
106
|
-
"pt": "Primeira versão de teste",
|
|
107
|
-
"nl": "Eerste testversie",
|
|
108
|
-
"fr": "Première version test",
|
|
109
|
-
"it": "Prima versione di prova",
|
|
110
|
-
"es": "Primera versión de prueba",
|
|
111
|
-
"pl": "Pierwsza wersja testowa",
|
|
112
|
-
"zh-cn": "第一个测试版"
|
|
113
|
-
},
|
|
114
|
-
"0.0.1": {
|
|
115
|
-
"en": "initial release",
|
|
116
|
-
"de": "Erstveröffentlichung",
|
|
117
|
-
"ru": "Начальная версия",
|
|
118
|
-
"pt": "lançamento inicial",
|
|
119
|
-
"nl": "Eerste uitgave",
|
|
120
|
-
"fr": "Première version",
|
|
121
|
-
"it": "Versione iniziale",
|
|
122
|
-
"es": "Versión inicial",
|
|
123
|
-
"pl": "Pierwsze wydanie",
|
|
124
|
-
"zh-cn": "首次出版"
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
"title": "SolarViewDataReader",
|
|
128
|
-
"titleLang": {
|
|
129
|
-
"en": "SolarViewDataReader",
|
|
130
|
-
"de": "SolarViewDataReader",
|
|
131
|
-
"ru": "SolarViewDataReader",
|
|
132
|
-
"pt": "SolarViewDataReader",
|
|
133
|
-
"nl": "SolarViewDataReader",
|
|
134
|
-
"fr": "SolarViewDataReader",
|
|
135
|
-
"it": "SolarViewDataReader",
|
|
136
|
-
"es": "SolarViewDataReader",
|
|
137
|
-
"pl": "SolarViewDataReader",
|
|
138
|
-
"zh-cn": "SolarViewDataReader"
|
|
139
|
-
},
|
|
140
|
-
"desc": {
|
|
141
|
-
"en": "Get Data from SolarView",
|
|
142
|
-
"de": "Daten von SolarView abrufen",
|
|
143
|
-
"ru": "Получить данные из SolarView",
|
|
144
|
-
"pt": "Obter dados do SolarView",
|
|
145
|
-
"nl": "Verkrijg gegevens van SolarView",
|
|
146
|
-
"fr": "Obtenir des données de SolarView",
|
|
147
|
-
"it": "Ottieni dati da SolarView",
|
|
148
|
-
"es": "Obtener datos de SolarView",
|
|
149
|
-
"pl": "Uzyskaj dane z SolarView",
|
|
150
|
-
"zh-cn": "从SolarView获取数据"
|
|
151
|
-
},
|
|
152
|
-
"authors": [
|
|
153
|
-
"Achim Fürhoff <achim.fuerhoff@outlook.de>"
|
|
154
|
-
],
|
|
155
|
-
"keywords": [
|
|
156
|
-
"SolarView",
|
|
157
|
-
"Data Logger",
|
|
158
|
-
"Photovoltaik"
|
|
159
|
-
],
|
|
160
|
-
"license": "MIT",
|
|
161
|
-
"platform": "Javascript/Node.js",
|
|
162
|
-
"main": "main.js",
|
|
163
|
-
"icon": "solarviewdatareader.png",
|
|
164
|
-
"enabled": true,
|
|
165
|
-
"extIcon": "https://raw.githubusercontent.com/afuerhoff/ioBroker.solarviewdatareader/master/admin/solarviewdatareader.png",
|
|
166
|
-
"readme": "https://github.com/afuerhoff/ioBroker.solarviewdatareader/blob/master/README.md",
|
|
167
|
-
"loglevel": "info",
|
|
168
|
-
"mode": "daemon",
|
|
169
|
-
"type": "energy",
|
|
170
|
-
"connectionType": "local",
|
|
171
|
-
"dataSource": "poll",
|
|
172
|
-
"compact": true,
|
|
173
|
-
"materialize": true,
|
|
174
|
-
"dependencies": [
|
|
175
|
-
{
|
|
176
|
-
"admin": ">=3.0.0"
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
"js-controller": ">=1.4.2"
|
|
180
|
-
}
|
|
181
|
-
]
|
|
2
|
+
"common": {
|
|
3
|
+
"name": "solarviewdatareader",
|
|
4
|
+
"version": "1.0.5",
|
|
5
|
+
"news": {
|
|
6
|
+
"1.0.5": {
|
|
7
|
+
"en": "dependencies updated\ntest and release updated\nsmaller changes",
|
|
8
|
+
"de": "Abhängigkeiten aktualisiert\nTest und Release aktualisiert\nkleinere Änderungen",
|
|
9
|
+
"ru": "зависимости обновлены\nтест и выпуск обновлены\nнебольшие изменения",
|
|
10
|
+
"pt": "dependências atualizadas\nteste e lançamento atualizado\nmudanças menores",
|
|
11
|
+
"nl": "afhankelijkheden bijgewerkt\ntest en release bijgewerkt\nkleinere veranderingen",
|
|
12
|
+
"fr": "dépendances mises à jour\ntest et version mis à jour\npetits changements",
|
|
13
|
+
"it": "dipendenze aggiornate\ntest e rilascio aggiornati\npiccoli cambiamenti",
|
|
14
|
+
"es": "dependencias actualizadas\nprueba y versión actualizada\npequeños cambios",
|
|
15
|
+
"pl": "zaktualizowano zależności\nzaktualizowano test i wydanie\nmniejsze zmiany",
|
|
16
|
+
"zh-cn": "已更新依赖项\n测试和发布更新\n较小的变化"
|
|
17
|
+
},
|
|
18
|
+
"1.0.4": {
|
|
19
|
+
"en": "dependencies updated\nissue #20 fixed",
|
|
20
|
+
"de": "Abhängigkeiten aktualisiert\nProblem Nr. 20 behoben",
|
|
21
|
+
"ru": "зависимости обновлены\nпроблема №20 исправлена",
|
|
22
|
+
"pt": "dependências atualizadas\nproblema nº 20 corrigido",
|
|
23
|
+
"nl": "afhankelijkheden bijgewerkt\nprobleem #20 opgelost",
|
|
24
|
+
"fr": "dépendances mises à jour\nproblème #20 corrigé",
|
|
25
|
+
"it": "dipendenze aggiornate\nproblema n. 20 risolto",
|
|
26
|
+
"es": "dependencias actualizadas\nproblema #20 solucionado",
|
|
27
|
+
"pl": "zaktualizowano zależności\nproblem nr 20 naprawiony",
|
|
28
|
+
"zh-cn": "已更新依赖项\n问题 #20 已修复"
|
|
29
|
+
},
|
|
30
|
+
"1.0.3": {
|
|
31
|
+
"en": "dependencies updated",
|
|
32
|
+
"de": "Abhängigkeiten aktualisiert",
|
|
33
|
+
"ru": "зависимости обновлены",
|
|
34
|
+
"pt": "dependências atualizadas",
|
|
35
|
+
"nl": "afhankelijkheden bijgewerkt",
|
|
36
|
+
"fr": "dépendances mises à jour",
|
|
37
|
+
"it": "dipendenze aggiornate",
|
|
38
|
+
"es": "dependencias actualizadas",
|
|
39
|
+
"pl": "zaktualizowano zależności",
|
|
40
|
+
"zh-cn": "依赖项已更新"
|
|
41
|
+
},
|
|
42
|
+
"1.0.2": {
|
|
43
|
+
"en": "node.js 14 and 16 compatibilty\ndependencies updated",
|
|
44
|
+
"de": "node.js 14 und 16 kompatibel\nAbhängigkeiten aktualisiert",
|
|
45
|
+
"ru": "Совместимость node.js 14 и 16\nзависимости обновлены",
|
|
46
|
+
"pt": "compatibilidade node.js 14 e 16\ndependências atualizadas",
|
|
47
|
+
"nl": "node.js 14 en 16 compatibiliteit\nafhankelijkheden bijgewerkt",
|
|
48
|
+
"fr": "compatibilité node.js 14 et 16\ndépendances mises à jour",
|
|
49
|
+
"it": "Node.js 14 e 16 compatibilità\ndipendenze aggiornate",
|
|
50
|
+
"es": "Compatibilidad de node.js 14 y 16\ndependencias actualizadas",
|
|
51
|
+
"pl": "node.js 14 i 16 kompatybilność\nzaktualizowane zależności",
|
|
52
|
+
"zh-cn": "node.js 14和16的兼容性\n依赖关系已更新"
|
|
53
|
+
},
|
|
54
|
+
"1.0.1": {
|
|
55
|
+
"en": "changes due to js-controller 3.3.x",
|
|
56
|
+
"de": "Änderungen aufgrund von js-controller 3.3.x.",
|
|
57
|
+
"ru": "изменения из-за js-controller 3.3.x",
|
|
58
|
+
"pt": "mudanças devido ao js-controller 3.3.x",
|
|
59
|
+
"nl": "veranderingen als gevolg van js-controller 3.3.x",
|
|
60
|
+
"fr": "changements dus à js-controller 3.3.x",
|
|
61
|
+
"it": "modifiche dovute a js-controller 3.3.x",
|
|
62
|
+
"es": "cambios debido a js-controller 3.3.x",
|
|
63
|
+
"pl": "zmiany spowodowane przez js-controller 3.3.x",
|
|
64
|
+
"zh-cn": "由于js-controller 3.3.x而发生的更改"
|
|
65
|
+
},
|
|
66
|
+
"1.0.0": {
|
|
67
|
+
"en": "dependencies updated\ndocumentation changed\nminor changes\ndue to stable state version set to 1.0.0",
|
|
68
|
+
"de": "Abhängigkeiten aktualisiert\nDokumentation geändert\nkleinere Änderungen\naufgrund der stabilen Statusversion auf 1.0.0 eingestellt",
|
|
69
|
+
"ru": "зависимости обновлены\nдокументация изменена\nнебольшие изменения\nиз-за стабильной версии 1.0.0",
|
|
70
|
+
"pt": "dependências atualizadas\ndocumentação alterada\npequenas mudanças\ndevido à versão de estado estável definida como 1.0.0",
|
|
71
|
+
"nl": "afhankelijkheden bijgewerkt\ndocumentatie gewijzigd\nkleine veranderingen\nvanwege stabiele statusversie ingesteld op 1.0.0",
|
|
72
|
+
"fr": "dépendances mises à jour\ndocumentation modifiée\ndes changements mineurs\nen raison de la version de l'état stable définie sur 1.0.0",
|
|
73
|
+
"it": "dipendenze aggiornate\nla documentazione è cambiata\nmodifiche minori\na causa della versione dello stato stabile impostata su 1.0.0",
|
|
74
|
+
"es": "dependencias actualizadas\ndocumentación cambiada\ncambios menores\ndebido a la versión de estado estable establecida en 1.0.0",
|
|
75
|
+
"pl": "zaktualizowane zależności\ndokumentacja uległa zmianie\ndrobne zmiany\nze względu na stabilną wersję stanu ustawioną na 1.0.0",
|
|
76
|
+
"zh-cn": "依赖关系已更新\n文档已更改\n细微的变化\n由于稳定状态版本设置为1.0.0"
|
|
77
|
+
},
|
|
78
|
+
"0.2.1": {
|
|
79
|
+
"en": "self consumption meter optimized",
|
|
80
|
+
"de": "Selbstverbrauchsmesser optimiert",
|
|
81
|
+
"ru": "счетчик собственного потребления оптимизирован",
|
|
82
|
+
"pt": "medidor de autoconsumo otimizado",
|
|
83
|
+
"nl": "eigen verbruiksmeter geoptimaliseerd",
|
|
84
|
+
"fr": "compteur d'autoconsommation optimisé",
|
|
85
|
+
"it": "misuratore di autoconsumo ottimizzato",
|
|
86
|
+
"es": "medidor de autoconsumo optimizado",
|
|
87
|
+
"pl": "miernik zużycia własnego zoptymalizowany",
|
|
88
|
+
"zh-cn": "自耗表优化"
|
|
89
|
+
}
|
|
182
90
|
},
|
|
183
|
-
"
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
"scm2": false,
|
|
196
|
-
"scm3": false,
|
|
197
|
-
"scm4": false,
|
|
198
|
-
"scm5": false,
|
|
199
|
-
"setCCU": false,
|
|
200
|
-
"CCUSystemV": "hm-rega.0.xxxxx"
|
|
91
|
+
"title": "SolarViewDataReader",
|
|
92
|
+
"titleLang": {
|
|
93
|
+
"en": "SolarViewDataReader",
|
|
94
|
+
"de": "SolarViewDataReader",
|
|
95
|
+
"ru": "SolarViewDataReader",
|
|
96
|
+
"pt": "SolarViewDataReader",
|
|
97
|
+
"nl": "SolarViewDataReader",
|
|
98
|
+
"fr": "SolarViewDataReader",
|
|
99
|
+
"it": "SolarViewDataReader",
|
|
100
|
+
"es": "SolarViewDataReader",
|
|
101
|
+
"pl": "SolarViewDataReader",
|
|
102
|
+
"zh-cn": "SolarViewDataReader"
|
|
201
103
|
},
|
|
202
|
-
"
|
|
203
|
-
|
|
204
|
-
|
|
104
|
+
"desc": {
|
|
105
|
+
"en": "Get Data from SolarView",
|
|
106
|
+
"de": "Daten von SolarView abrufen",
|
|
107
|
+
"ru": "Получить данные из SolarView",
|
|
108
|
+
"pt": "Obter dados do SolarView",
|
|
109
|
+
"nl": "Verkrijg gegevens van SolarView",
|
|
110
|
+
"fr": "Obtenir des données de SolarView",
|
|
111
|
+
"it": "Ottieni dati da SolarView",
|
|
112
|
+
"es": "Obtener datos de SolarView",
|
|
113
|
+
"pl": "Uzyskaj dane z SolarView",
|
|
114
|
+
"zh-cn": "从SolarView获取数据"
|
|
115
|
+
},
|
|
116
|
+
"authors": [
|
|
117
|
+
"Achim Fürhoff <achim.fuerhoff@outlook.de>"
|
|
118
|
+
],
|
|
119
|
+
"keywords": [
|
|
120
|
+
"SolarView",
|
|
121
|
+
"Data Logger",
|
|
122
|
+
"Photovoltaik"
|
|
123
|
+
],
|
|
124
|
+
"license": "MIT",
|
|
125
|
+
"platform": "Javascript/Node.js",
|
|
126
|
+
"main": "main.js",
|
|
127
|
+
"icon": "solarviewdatareader.png",
|
|
128
|
+
"enabled": true,
|
|
129
|
+
"extIcon": "https://raw.githubusercontent.com/afuerhoff/ioBroker.solarviewdatareader/master/admin/solarviewdatareader.png",
|
|
130
|
+
"readme": "https://github.com/afuerhoff/ioBroker.solarviewdatareader/blob/master/README.md",
|
|
131
|
+
"loglevel": "info",
|
|
132
|
+
"mode": "daemon",
|
|
133
|
+
"type": "energy",
|
|
134
|
+
"connectionType": "local",
|
|
135
|
+
"dataSource": "poll",
|
|
136
|
+
"compact": true,
|
|
137
|
+
"materialize": true,
|
|
138
|
+
"dependencies": [
|
|
139
|
+
{
|
|
140
|
+
"admin": ">=3.0.0"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"js-controller": ">=3.0.0"
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"native": {
|
|
148
|
+
"ipaddress": "",
|
|
149
|
+
"port": "15000",
|
|
150
|
+
"intervalVal": 1,
|
|
151
|
+
"intervalstart": "00:00",
|
|
152
|
+
"intervalend": "23:59",
|
|
153
|
+
"d0converter": false,
|
|
154
|
+
"pvi1": false,
|
|
155
|
+
"pvi2": false,
|
|
156
|
+
"pvi3": false,
|
|
157
|
+
"pvi4": false,
|
|
158
|
+
"scm1": false,
|
|
159
|
+
"scm2": false,
|
|
160
|
+
"scm3": false,
|
|
161
|
+
"scm4": false,
|
|
162
|
+
"scm5": false,
|
|
163
|
+
"setCCU": false,
|
|
164
|
+
"CCUSystemV": "hm-rega.0.xxxxx"
|
|
165
|
+
},
|
|
166
|
+
"objects": [],
|
|
167
|
+
"instanceObjects": []
|
|
168
|
+
}
|
package/lib/adapter-config.d.ts
CHANGED
|
File without changes
|
package/lib/tools.js
CHANGED
|
File without changes
|
package/main.js
CHANGED
|
@@ -9,8 +9,7 @@
|
|
|
9
9
|
const utils = require('@iobroker/adapter-core');
|
|
10
10
|
|
|
11
11
|
// Load your modules here, e.g.:
|
|
12
|
-
const
|
|
13
|
-
const util = require('util');
|
|
12
|
+
const net = require('net');
|
|
14
13
|
|
|
15
14
|
let gthis;
|
|
16
15
|
let sv_data;
|
|
@@ -53,12 +52,10 @@ function calcChecksum(string) {
|
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
async function createGlobalObjects(that) {
|
|
56
|
-
const getStateP = util.promisify(that.getState);
|
|
57
|
-
|
|
58
55
|
const opt = [
|
|
59
56
|
//id, type, name, type, role, def, rd, wr, desc
|
|
60
57
|
//common.type (optional - (default is mixed==any type) (possible values: number, string, boolean, array, object, mixed, file)
|
|
61
|
-
['info.connection', 'state', 'connection', 'boolean', 'indicator', false, true, false, 'Solarview connection state'],
|
|
58
|
+
['info.connection', 'state', 'connection', 'boolean', 'indicator.connected', false, true, false, 'Solarview connection state'],
|
|
62
59
|
['info.lastUpdate', 'state', 'lastUpdate', 'string', 'date', (new Date('1900-01-01T00:00:00')).toString(), true, false, 'Last connection date/time'],
|
|
63
60
|
];
|
|
64
61
|
|
|
@@ -76,13 +73,11 @@ async function createGlobalObjects(that) {
|
|
|
76
73
|
},
|
|
77
74
|
native: {},
|
|
78
75
|
});
|
|
79
|
-
if (await
|
|
76
|
+
if (await that.getStateAsync(opt[i][0]) == null) that.setState(opt[i][0], opt[i][5], true); //set default
|
|
80
77
|
}
|
|
81
78
|
}
|
|
82
79
|
|
|
83
80
|
async function createSolarviewObjects(that, device, additional) {
|
|
84
|
-
const getStateP = util.promisify(that.getState);
|
|
85
|
-
|
|
86
81
|
let opt = [
|
|
87
82
|
//id, type, name, type, role, def, rd, wr, desc
|
|
88
83
|
//common.type (optional - (default is mixed==any type) (possible values: number, string, boolean, array, object, mixed, file)
|
|
@@ -128,11 +123,11 @@ async function createSolarviewObjects(that, device, additional) {
|
|
|
128
123
|
},
|
|
129
124
|
native: {},
|
|
130
125
|
});
|
|
131
|
-
if (await
|
|
126
|
+
if (await that.getStateAsync(opt[i][0]) == null) that.setState(opt[i][0], opt[i][5], true); //set default
|
|
132
127
|
}
|
|
133
128
|
}
|
|
134
129
|
|
|
135
|
-
function getData() {
|
|
130
|
+
async function getData(port, ip_address) {
|
|
136
131
|
const starttime = gthis.config.intervalstart;
|
|
137
132
|
let endtime = gthis.config.intervalend;
|
|
138
133
|
if (endtime == '00:00') endtime = '23:59';
|
|
@@ -144,7 +139,10 @@ function getData() {
|
|
|
144
139
|
timeoutCnt += 3000;
|
|
145
140
|
to1 = setTimeout(function() {
|
|
146
141
|
sv_cmd = '22*';
|
|
147
|
-
conn.
|
|
142
|
+
conn.connect(port, ip_address, function() {
|
|
143
|
+
conn.write('22*');
|
|
144
|
+
conn.end();
|
|
145
|
+
});
|
|
148
146
|
}, timeoutCnt);
|
|
149
147
|
}
|
|
150
148
|
|
|
@@ -152,74 +150,107 @@ function getData() {
|
|
|
152
150
|
timeoutCnt += 3000;
|
|
153
151
|
to7 = setTimeout(function() {
|
|
154
152
|
sv_cmd = '10*'; //pvi1 Wechselrichter 1
|
|
155
|
-
conn.
|
|
153
|
+
conn.connect(port, ip_address, function() {
|
|
154
|
+
conn.write(sv_cmd);
|
|
155
|
+
conn.end();
|
|
156
|
+
});
|
|
156
157
|
}, timeoutCnt);
|
|
157
158
|
}
|
|
158
159
|
if (gthis.config.scm1 == true){
|
|
159
160
|
timeoutCnt += 3000;
|
|
160
161
|
to8 = setTimeout(function() {
|
|
161
162
|
sv_cmd = '11*';
|
|
162
|
-
conn.
|
|
163
|
+
conn.connect(port, ip_address, function() {
|
|
164
|
+
conn.write(sv_cmd);
|
|
165
|
+
conn.end();
|
|
166
|
+
});
|
|
163
167
|
}, timeoutCnt);
|
|
164
168
|
}
|
|
165
169
|
if (gthis.config.scm2 == true){
|
|
166
170
|
timeoutCnt += 3000;
|
|
167
171
|
to9 = setTimeout(function() {
|
|
168
172
|
sv_cmd = '12*';
|
|
169
|
-
conn.
|
|
173
|
+
conn.connect(port, ip_address, function() {
|
|
174
|
+
conn.write(sv_cmd);
|
|
175
|
+
conn.end();
|
|
176
|
+
});
|
|
170
177
|
}, timeoutCnt);
|
|
171
178
|
}
|
|
172
179
|
if (gthis.config.scm3 == true){
|
|
173
180
|
timeoutCnt += 3000;
|
|
174
181
|
to10 = setTimeout(function() {
|
|
175
182
|
sv_cmd = '13*';
|
|
176
|
-
conn.
|
|
183
|
+
conn.connect(port, ip_address, function() {
|
|
184
|
+
conn.write(sv_cmd);
|
|
185
|
+
conn.end();
|
|
186
|
+
});
|
|
177
187
|
}, timeoutCnt);
|
|
178
188
|
}
|
|
179
189
|
if (gthis.config.scm4 == true){
|
|
180
190
|
timeoutCnt += 3000;
|
|
181
191
|
to11 = setTimeout(function() {
|
|
182
192
|
sv_cmd = '14*';
|
|
183
|
-
conn.
|
|
193
|
+
conn.connect(port, ip_address, function() {
|
|
194
|
+
conn.write(sv_cmd);
|
|
195
|
+
conn.end();
|
|
196
|
+
});
|
|
184
197
|
}, timeoutCnt);
|
|
185
198
|
}
|
|
186
199
|
|
|
187
200
|
if (dnow >= dstart && dnow <= dend ){ //Einspeisung und Leistungsdaten werden nur im Interval eingelesen
|
|
188
201
|
sv_cmd = '00*'; //pvig
|
|
189
|
-
conn.
|
|
202
|
+
conn.connect(port, ip_address, function() {
|
|
203
|
+
conn.write(sv_cmd);
|
|
204
|
+
conn.end();
|
|
205
|
+
});
|
|
190
206
|
if (gthis.config.d0converter == true){
|
|
191
207
|
timeoutCnt += 3000;
|
|
192
208
|
to2 = setTimeout(function() {
|
|
193
209
|
sv_cmd = '21*';
|
|
194
|
-
conn.
|
|
210
|
+
conn.connect(port, ip_address, function() {
|
|
211
|
+
conn.write(sv_cmd);
|
|
212
|
+
conn.end();
|
|
213
|
+
});
|
|
195
214
|
}, timeoutCnt);
|
|
196
215
|
}
|
|
197
216
|
if (gthis.config.pvi1 == true){
|
|
198
217
|
timeoutCnt += 3000;
|
|
199
218
|
to3 = setTimeout(function() {
|
|
200
219
|
sv_cmd = '01*'; //pvi1 Wechselrichter 1
|
|
201
|
-
conn.
|
|
220
|
+
conn.connect(port, ip_address, function() {
|
|
221
|
+
conn.write(sv_cmd);
|
|
222
|
+
conn.end();
|
|
223
|
+
});
|
|
202
224
|
}, timeoutCnt);
|
|
203
225
|
}
|
|
204
226
|
if (gthis.config.pvi2 == true){
|
|
205
227
|
timeoutCnt += 3000;
|
|
206
228
|
to4 = setTimeout(function() {
|
|
207
229
|
sv_cmd = '02*';
|
|
208
|
-
conn.
|
|
230
|
+
conn.connect(port, ip_address, function() {
|
|
231
|
+
conn.write(sv_cmd);
|
|
232
|
+
conn.end();
|
|
233
|
+
});
|
|
209
234
|
}, timeoutCnt);
|
|
210
235
|
}
|
|
211
236
|
if (gthis.config.pvi3 == true){
|
|
212
237
|
timeoutCnt += 3000;
|
|
213
238
|
to5 = setTimeout(function() {
|
|
214
239
|
sv_cmd = '03*';
|
|
215
|
-
conn.
|
|
240
|
+
conn.connect(port, ip_address, function() {
|
|
241
|
+
conn.write(sv_cmd);
|
|
242
|
+
conn.end();
|
|
243
|
+
});
|
|
216
244
|
}, timeoutCnt);
|
|
217
245
|
}
|
|
218
246
|
if (gthis.config.pvi4 == true){
|
|
219
247
|
timeoutCnt += 3000;
|
|
220
248
|
to6 = setTimeout(function() {
|
|
221
249
|
sv_cmd = '04*';
|
|
222
|
-
conn.
|
|
250
|
+
conn.connect(port, ip_address, function() {
|
|
251
|
+
conn.write(sv_cmd);
|
|
252
|
+
conn.end();
|
|
253
|
+
});
|
|
223
254
|
}, timeoutCnt);
|
|
224
255
|
}
|
|
225
256
|
}
|
|
@@ -280,28 +311,18 @@ class Solarviewdatareader extends utils.Adapter {
|
|
|
280
311
|
// in this template all states changes inside the adapters namespace are subscribed
|
|
281
312
|
//this.subscribeStates('*');
|
|
282
313
|
|
|
283
|
-
|
|
284
|
-
const params = {
|
|
285
|
-
timeout: 3000,
|
|
286
|
-
read_encoding: 'buffer'
|
|
287
|
-
};
|
|
288
|
-
conn = netcat.client(port, ip_address, params);
|
|
314
|
+
conn = new net.Socket();
|
|
289
315
|
|
|
290
316
|
const cron = this.config.intervalVal * 60000;
|
|
291
317
|
try {
|
|
292
|
-
getData();
|
|
293
|
-
//jobSchedule = schedule.scheduleJob(this.config.interval, function(){
|
|
318
|
+
getData(port, ip_address);
|
|
294
319
|
jobSchedule = setInterval(async function(){
|
|
295
|
-
getData();
|
|
320
|
+
getData(port, ip_address);
|
|
296
321
|
}, cron);
|
|
297
322
|
} catch (err) {
|
|
298
323
|
this.log.error('schedule: ' + err.message);
|
|
299
324
|
}
|
|
300
325
|
|
|
301
|
-
conn.on('open', function(){
|
|
302
|
-
conn.send(sv_cmd);
|
|
303
|
-
});
|
|
304
|
-
|
|
305
326
|
conn.on('data', async function(response) {
|
|
306
327
|
try {
|
|
307
328
|
if (response == null){
|
|
@@ -439,7 +460,7 @@ class Solarviewdatareader extends utils.Adapter {
|
|
|
439
460
|
gthis.log.warn(sv_cmd + ': ' + csum.data);
|
|
440
461
|
}
|
|
441
462
|
}
|
|
442
|
-
conn.send();
|
|
463
|
+
//conn.send();
|
|
443
464
|
}
|
|
444
465
|
} catch (error) {
|
|
445
466
|
gthis.log.error('on data: ' + error.message);
|
|
@@ -476,6 +497,7 @@ class Solarviewdatareader extends utils.Adapter {
|
|
|
476
497
|
clearTimeout(to9);
|
|
477
498
|
clearTimeout(to10);
|
|
478
499
|
clearTimeout(to11);
|
|
500
|
+
conn.destroy();
|
|
479
501
|
callback();
|
|
480
502
|
} catch (e) {
|
|
481
503
|
callback();
|
|
@@ -532,7 +554,7 @@ class Solarviewdatareader extends utils.Adapter {
|
|
|
532
554
|
}
|
|
533
555
|
|
|
534
556
|
// @ts-ignore parent is a valid property on module
|
|
535
|
-
if (module
|
|
557
|
+
if (require.main !== module) {
|
|
536
558
|
// Export the constructor in compact mode
|
|
537
559
|
/**
|
|
538
560
|
* @param {Partial<ioBroker.AdapterOptions>} [options={}]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.solarviewdatareader",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Get data from SolarView",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Achim Fürhoff",
|
|
@@ -18,40 +18,52 @@
|
|
|
18
18
|
"url": "https://github.com/afuerhoff/ioBroker.solarviewdatareader"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@iobroker/adapter-core": "^2.
|
|
22
|
-
"node-netcat": "1.4.8",
|
|
23
|
-
"util": "^0.12.3"
|
|
21
|
+
"@iobroker/adapter-core": "^2.5.1"
|
|
24
22
|
},
|
|
25
23
|
"devDependencies": {
|
|
26
|
-
"@alcalzone/release-script": "^
|
|
27
|
-
"@iobroker
|
|
28
|
-
"@
|
|
29
|
-
"@
|
|
30
|
-
"@
|
|
31
|
-
"@types/
|
|
32
|
-
"@types/
|
|
24
|
+
"@alcalzone/release-script": "^3.5.2",
|
|
25
|
+
"@alcalzone/release-script-plugin-iobroker": "^3.5.1",
|
|
26
|
+
"@alcalzone/release-script-plugin-license": "^3.5.0",
|
|
27
|
+
"@iobroker/adapter-dev": "^0.1.0",
|
|
28
|
+
"@iobroker/testing": "^2.5.4",
|
|
29
|
+
"@types/chai": "^4.3.0",
|
|
30
|
+
"@types/chai-as-promised": "^7.1.5",
|
|
31
|
+
"@types/gulp": "^4.0.9",
|
|
32
|
+
"@types/mocha": "^9.1.0",
|
|
33
|
+
"@types/node": "^17.0.18",
|
|
33
34
|
"@types/proxyquire": "^1.3.28",
|
|
34
|
-
"@types/sinon": "^10.0.
|
|
35
|
-
"@types/sinon-chai": "^3.2.
|
|
36
|
-
"
|
|
37
|
-
"chai": "^4.3.4",
|
|
35
|
+
"@types/sinon": "^10.0.11",
|
|
36
|
+
"@types/sinon-chai": "^3.2.8",
|
|
37
|
+
"chai": "^4.3.6",
|
|
38
38
|
"chai-as-promised": "^7.1.1",
|
|
39
|
-
"eslint": "^
|
|
40
|
-
"
|
|
41
|
-
"mocha": "^
|
|
39
|
+
"eslint": "^8.9.0",
|
|
40
|
+
"hosted-git-info": "^4.1.0",
|
|
41
|
+
"mocha": "^9.2.0",
|
|
42
42
|
"proxyquire": "^2.1.3",
|
|
43
|
-
"sinon": "^
|
|
44
|
-
"sinon-chai": "^3.
|
|
43
|
+
"sinon": "^13.0.1",
|
|
44
|
+
"sinon-chai": "^3.7.0"
|
|
45
45
|
},
|
|
46
46
|
"main": "main.js",
|
|
47
|
+
"files": [
|
|
48
|
+
"admin{,/!(src)/**}/!(tsconfig|tsconfig.*).json",
|
|
49
|
+
"admin{,/!(src)/**}/*.{html,css,png,svg,jpg,js}",
|
|
50
|
+
"lib/",
|
|
51
|
+
"www/",
|
|
52
|
+
"io-package.json",
|
|
53
|
+
"LICENSE",
|
|
54
|
+
"main.js"
|
|
55
|
+
],
|
|
47
56
|
"scripts": {
|
|
48
|
-
"test:js": "mocha --
|
|
57
|
+
"test:js": "mocha --config test/mocharc.custom.json \"{!(node_modules|test)/**/*.test.js,*.test.js,test/**/test!(PackageFiles|Startup).js}\"",
|
|
49
58
|
"test:package": "mocha test/package --exit",
|
|
50
59
|
"test:unit": "mocha test/unit --exit",
|
|
51
60
|
"test:integration": "mocha test/integration --exit",
|
|
52
61
|
"test": "npm run test:js && npm run test:package",
|
|
53
|
-
"
|
|
54
|
-
"
|
|
62
|
+
"aftest": "mocha test/af_test.js --exit",
|
|
63
|
+
"check": "tsc --noEmit -p tsconfig.check.json",
|
|
64
|
+
"lint": "eslint --ext .js,.jsx",
|
|
65
|
+
"release": "release-script",
|
|
66
|
+
"translate": "translate-adapter"
|
|
55
67
|
},
|
|
56
68
|
"bugs": {
|
|
57
69
|
"url": "https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues"
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Bug report
|
|
3
|
-
about: Something is not working as it should
|
|
4
|
-
title: ''
|
|
5
|
-
labels: ''
|
|
6
|
-
assignees: ''
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
**Describe the bug**
|
|
10
|
-
A clear and concise description of what the bug is.
|
|
11
|
-
|
|
12
|
-
**To Reproduce**
|
|
13
|
-
Steps to reproduce the behavior:
|
|
14
|
-
1. Go to '...'
|
|
15
|
-
2. Click on '...'
|
|
16
|
-
3. Scroll down to '....'
|
|
17
|
-
4. See error
|
|
18
|
-
|
|
19
|
-
**Expected behavior**
|
|
20
|
-
A clear and concise description of what you expected to happen.
|
|
21
|
-
|
|
22
|
-
**Screenshots & Logfiles**
|
|
23
|
-
If applicable, add screenshots and logfiles to help explain your problem.
|
|
24
|
-
|
|
25
|
-
**Versions:**
|
|
26
|
-
- Adapter version: <adapter-version>
|
|
27
|
-
- JS-Controller version: <js-controller-version> <!-- determine this with `iobroker -v` on the console -->
|
|
28
|
-
- Node version: <node-version> <!-- determine this with `node -v` on the console -->
|
|
29
|
-
- Operating system: <os-name>
|
|
30
|
-
|
|
31
|
-
**Additional context**
|
|
32
|
-
Add any other context about the problem here.
|
package/CHANGELOG_OLD.md
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# Older changes
|
|
2
|
-
## 0.0.5
|
|
3
|
-
* (afuerhoff) Code optimized, unload optimized, documentation added
|
|
4
|
-
## 0.0.4
|
|
5
|
-
* (afuerhoff) Objects, Telnet client and checksum calculation changed
|
|
6
|
-
## 0.0.3
|
|
7
|
-
* (afuerhoff) inverter selection added
|
|
8
|
-
## 0.0.2
|
|
9
|
-
* (afuerhoff) test version
|
|
10
|
-
## 0.0.1
|
|
11
|
-
* (afuerhoff) initial release
|
|
12
|
-
|
package/admin/admin.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
declare let systemDictionary: Record<string, Record<string, string>>;
|
package/main.test.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* This is a dummy TypeScript test file using chai and mocha
|
|
5
|
-
*
|
|
6
|
-
* It's automatically excluded from npm and its build output is excluded from both git and npm.
|
|
7
|
-
* It is advised to test all your modules with accompanying *.test.js-files
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
// tslint:disable:no-unused-expression
|
|
11
|
-
|
|
12
|
-
const { expect } = require("chai");
|
|
13
|
-
// import { functionToTest } from "./moduleToTest";
|
|
14
|
-
|
|
15
|
-
describe("module to test => function to test", () => {
|
|
16
|
-
// initializing logic
|
|
17
|
-
const expected = 5;
|
|
18
|
-
|
|
19
|
-
it(`should return ${expected}`, () => {
|
|
20
|
-
const result = 5;
|
|
21
|
-
// assign result a value from functionToTest
|
|
22
|
-
expect(result).to.equal(expected);
|
|
23
|
-
// or using the should() syntax
|
|
24
|
-
result.should.equal(expected);
|
|
25
|
-
});
|
|
26
|
-
// ... more tests => it
|
|
27
|
-
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
// ... more test suites => describe
|
package/scripts/debug.sh
DELETED
package/scripts/gulp.sh
DELETED
package/scripts/upload.sh
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/opt/iobroker/iobroker upload solarviewdatareader
|