iobroker.solarviewdatareader 1.0.3 → 1.0.6

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019-2021 Achim Fürhoff <achim.fuerhoff@outlook.de>
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
@@ -41,7 +41,7 @@ Here you can configure the time range and the interval. The time range for 24h i
41
41
  Not 00:00 to 00:00.
42
42
 
43
43
  ### Set system variable CCU, System variable
44
- This ist a special feature for the homematic CCU. You can define a system variable in the CCU.
44
+ This is a special feature for the homematic CCU. You can define a system variable in the CCU.
45
45
  In this system variable the actual PAC value is saved.
46
46
  You have to fill in the ioBroker state for that system variable -> **e.g. "hm-rega.0.12345"**
47
47
 
@@ -64,29 +64,31 @@ TKK= Temperature inverter
64
64
  Placeholder for the next version (at the beginning of the line):
65
65
  ### __WORK IN PROGRESS__
66
66
  -->
67
- ### 1.0.3 (2021-12-08)
67
+ ### 1.0.6 (2022-07-04)
68
68
  * (afuerhoff) dependencies updated
69
+ * (afuerhoff) Interval settings changed from minutes to seconds
70
+ * (afuerhoff) States only writen after changes
69
71
 
70
- ### 1.0.2 (2021-05-07)
71
- * (afuerhoff) node.js 14 and 16 compatibilty
72
+ ### 1.0.5 (2022-02-17)
72
73
  * (afuerhoff) dependencies updated
74
+ * (afuerhoff) test and release updated
75
+ * (afuerhoff) smaller changes
73
76
 
74
- ### 1.0.1 (2021-05-01)
75
- * (afuerhoff) changes due to js-controller 3.3.x
77
+ ### 1.0.4 (2022-02-09)
78
+ * (afuerhoff) dependencies updated
79
+ * (afuerhoff) issue #20 fixed
76
80
 
77
- ### 1.0.0 (2021-04-25)
81
+ ### 1.0.3 (2021-12-08)
78
82
  * (afuerhoff) dependencies updated
79
- * (afuerhoff) documentation changed
80
- * (afuerhoff) minor changes
81
- * (afuerhoff) due to stable state version set to 1.0.0
82
83
 
83
- ### 0.2.1
84
- * (afuerhoff) self consumption meter optimized
84
+ ### 1.0.2 (2021-05-07)
85
+ * (afuerhoff) node.js 14 and 16 compatibilty
86
+ * (afuerhoff) dependencies updated
85
87
 
86
88
  ## License
87
89
  MIT License
88
90
 
89
- Copyright (c) 2019-2021 Achim Fürhoff <achim.fuerhoff@outlook.de>
91
+ Copyright (c) 2019-2022 Achim Fürhoff <achim.fuerhoff@outlook.de>
90
92
 
91
93
  Permission is hereby granted, free of charge, to any person obtaining a copy
92
94
  of this software and associated documentation files (the "Software"), to deal
@@ -163,9 +163,9 @@
163
163
  </div>
164
164
  <div class="row">
165
165
  <div class="col s2 input-field tooltip">
166
- <input type="number" class="value" min="1" max="59" id="intervalVal" />
167
- <label for="intervalVal" class="translate">polling interval in minutes</label>
168
- <span class="tooltiptext translate">Here you can define the polling interval [between 1 to 59 minutes]</span>
166
+ <input type="number" class="value validate" min="10" max="3600" id="intervalVal" />
167
+ <label for="intervalVal" class="translate">polling interval in seconds</label>
168
+ <span class="tooltiptext translate">Here you can define the polling interval [between 10 to 3600 seconds]</span>
169
169
  </div>
170
170
  <div class="col s2 input-field tooltip">
171
171
  <input type="text" class="timepicker value" id="intervalstart"/>
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
- box-sizing: border-box
3
+ box-sizing: border-box
4
4
  }
5
5
  .m {
6
- /* Don't cut off dropdowns! */
7
- overflow: initial;
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
@@ -1,44 +1,52 @@
1
1
  /*global systemDictionary:true */
2
+ /*
3
+ +===================== DO NOT MODIFY ======================+
4
+ | This file was generated by translate-adapter, please use |
5
+ | `translate-adapter adminLanguages2words` to update it. |
6
+ +===================== DO NOT MODIFY ======================+
7
+ */
2
8
  'use strict';
3
9
 
4
10
  systemDictionary = {
5
- "Data logger and web based analysis software for Solarmax, SMA, Kaco, Fronius and Kostal inverters. For more information please click the link.": {"de": "Datenlogger und webbasierte Analysesoftware für Wechselrichter von Solarmax, SMA, Kaco, Fronius und Kostal. ", "ru": "Регистратор данных и программное обеспечение для веб-анализа для инверторов Solarmax, SMA, Kaco, Fronius и Kostal. ", "pt": "Data logger e software de análise baseado na web para inversores Solarmax, SMA, Kaco, Fronius e Kostal. ", "nl": "Datalogger en webgebaseerde analysesoftware voor Solarmax, SMA, Kaco, Fronius en Kostal-omvormers. ", "fr": "Enregistreur de données et logiciel d’analyse Web pour les onduleurs Solarmax, SMA, Kaco, Fronius et Kostal. ", "it": "Data logger e software di analisi web based per inverter Solarmax, SMA, Kaco, Fronius e Kostal. ", "es": "Registrador de datos y software de análisis basado en web para los inversores Solarmax, SMA, Kaco, Fronius y Kostal. ", "pl": "Rejestrator danych i internetowe oprogramowanie do analizy falowników Solarmax, SMA, Kaco, Fronius i Kostal. ", "zh-cn": "Solarmax,SMA,Kaco,Fronius和Kostal逆变器的数据记录器和基于Web的分析软件。"},
6
- "Datalogger, monitoring and web-based evaluation software for Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, Aurora inverters / Power-one, Fronius / Sun Power.": {"de": "Datenlogger-, Überwachungs- und webbasierte Auswertungssoftware für Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Steca, Eaton Phoenix / Sunville, SolarConvert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "ru": "Регистратор данных, программное обеспечение для мониторинга и сетевой оценки для Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "pt": "Datalogger, monitoração e software de avaliação baseado na Web para Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Converso, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "nl": "Datalogger, monitoring en webgebaseerde evaluatiesoftware voor Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "fr": "Enregistreur de données, logiciel de surveillance et d’évaluation sur le Web pour Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schaco, ", "it": "Datalogger, monitoraggio e software di valutazione basato sul web per Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "es": "Datalogger, monitoreo y software de evaluación basado en la web para Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Schaco, ", "pl": "Rejestrator danych, oprogramowanie monitorujące i internetowe do Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "zh-cn": "Solarmax,Danfoss,Carlo Gavazzi,IBC Servemaster,SMA,Effekta,Ever-Solar,Effekta,Steca,Eaton Phoenix / Sunville,Solar Convert,SolarEdge / Sunspec,Kostal,Kaco,Schüco的数据记录器,监控和基于网络的评估软件, "},
7
- "Here you can define the polling interval [between 1 to 59 minutes]": {"en": "Here you can define the polling interval [between 1 to 59 minutes]", "de": "Hier können Sie das Abfrageintervall definieren [zwischen 1 und 59 Minuten]", "ru": "Здесь вы можете определить интервал опроса [от 1 до 59 минут]", "pt": "Aqui você pode definir o intervalo de pesquisa [entre 1 e 59 minutos]", "nl": "Hier kunt u het polling-interval definiëren [tussen 1 en 59 minuten]", "fr": "Ici, vous pouvez définir l'intervalle d'interrogation [entre 1 et 59 minutes]", "it": "Qui è possibile definire l'intervallo di polling [tra 1 e 59 minuti]", "es": "Aquí puede definir el intervalo de sondeo [entre 1 y 59 minutos]", "pl": "Tutaj możesz zdefiniować interwał odpytywania [od 1 do 59 minut]", "zh-cn": "您可以在此处定义轮询间隔[1至59分钟之间]"},
8
- "IP-Address": { "en": "IP-Address", "de": "IP Adresse", "ru": "Айпи адрес", "pt": "Endereço de IP", "nl": "IP adres", "fr": "Adresse IP", "it": "Indirizzo IP", "es": "Dirección IP", "pl": "Adres IP", "zh-cn": "IP地址"},
9
- "Interval": { "en": "Interval", "de": "Intervall", "ru": "интервал", "pt": "Intervalo", "nl": "Interval", "fr": "Intervalle", "it": "Intervallo", "es": "Intervalo", "pl": "Interwał", "zh-cn": "间隔"},
10
- "Interval end": { "en": "Interval end", "de": "Intervallende", "ru": "Конец интервала", "pt": "Fim do intervalo", "nl": "Interval einde", "fr": "Fin d'intervalle", "it": "Intervallo di fine", "es": "Fin de intervalo", "pl": "Koniec interwału", "zh-cn": "间隔结束"},
11
- "Interval start": { "en": "Interval start", "de": "Intervallstart", "ru": "Интервальный старт", "pt": "Início do intervalo", "nl": "Interval start", "fr": "Début d'intervalle", "it": "Inizio intervallo", "es": "Inicio de intervalo", "pl": "Początek przerwy", "zh-cn": "间隔开始"},
12
- "Inverter 1": { "en": "Inverter 1", "de": "Wechselrichter 1", "ru": "Инвертор 1", "pt": "Inversor 1", "nl": "Omvormer 1", "fr": "Onduleur 1", "it": "Inverter 1", "es": "Inversor 1", "pl": "Falownik 1", "zh-cn": "逆变器1"},
13
- "Inverter 2": { "en": "Inverter 2", "de": "Wechselrichter 2", "ru": "Инвертор 2", "pt": "Inversor 2", "nl": "Omvormer 2", "fr": "Onduleur 2", "it": "Inverter 2", "es": "Inversor 2", "pl": "Falownik 2", "zh-cn": "逆变器2"},
14
- "Inverter 3": { "en": "Inverter 3", "de": "Wechselrichter 3", "ru": "Инвертор 3", "pt": "Inversor 3", "nl": "Omvormer 3", "fr": "Onduleur 3", "it": "Inverter 3", "es": "Inversor 3", "pl": "Falownik 3", "zh-cn": "逆变器3"},
15
- "Inverter 4": { "en": "Inverter 4", "de": "Wechselrichter 4", "ru": "Инвертор 4", "pt": "Inversor 4", "nl": "Omvormer 4", "fr": "Onduleur 4", "it": "Inverter 4", "es": "Inversor 4", "pl": "Falownik 4", "zh-cn": "逆变器4"},
16
- "Please check if inverter 1 available": { "en": "Please check if inverter 1 available", "de": "Bitte prüfen Sie, ob Wechselrichter 1 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли инвертор 1", "pt": "Por favor, verifique se o inversor 1 está disponível", "nl": "Controleer of inverter 1 beschikbaar is", "fr": "Veuillez vérifier si le convertisseur 1 est disponible", "it": "Si prega di verificare se l'inverter 1 è disponibile", "es": "Por favor, compruebe si el inversor 1 disponible", "pl": "Sprawdź, czy dostępny jest falownik 1", "zh-cn": "请检查逆变器1是否可用"},
17
- "Please check if inverter 2 available": { "en": "Please check if inverter 2 available", "de": "Bitte prüfen Sie, ob Wechselrichter 2 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли инвертор 2", "pt": "Por favor, verifique se o inversor 2 está disponível", "nl": "Controleer of inverter 2 beschikbaar is", "fr": "Veuillez vérifier si l'onduleur 2 est disponible", "it": "Si prega di verificare se l'inverter 2 è disponibile", "es": "Por favor, compruebe si el inversor 2 está disponible", "pl": "Sprawdź, czy dostępny jest falownik 2", "zh-cn": "请检查逆变器2是否可用"},
18
- "Please check if inverter 3 available": { "en": "Please check if inverter 3 available", "de": "Bitte prüfen Sie, ob Wechselrichter 3 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли инвертор 3", "pt": "Por favor, verifique se o inversor 3 está disponível", "nl": "Controleer of inverter 3 beschikbaar is", "fr": "Veuillez vérifier si l'onduleur 3 est disponible", "it": "Si prega di verificare se l'inverter 3 è disponibile", "es": "Por favor verifica si el inversor 3 está disponible.", "pl": "Sprawdź, czy dostępny jest falownik 3", "zh-cn": "请检查逆变器3是否可用"},
19
- "Please check if inverter 4 available": { "en": "Please check if inverter 4 available", "de": "Bitte prüfen Sie, ob Wechselrichter 4 verfügbar ist", "ru": "Пожалуйста, проверьте, если инвертор 4 доступен", "pt": "Por favor, verifique se o inversor 4 está disponível", "nl": "Controleer of omvormer 4 beschikbaar is", "fr": "Veuillez vérifier si l'inverseur 4 est disponible", "it": "Si prega di verificare se l'inverter 4 è disponibile", "es": "Por favor, compruebe si el inversor 4 está disponible.", "pl": "Sprawdź, czy dostępny jest falownik 4", "zh-cn": "请检查逆变器4是否可用"},
20
- "Please check if self consumption meter 1 is available": {"en": "Please check if self consumption meter 1 is available", "de": "Bitte prüfen Sie, ob der Eigenverbrauchsmesser 1 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли счетчик 1", "pt": "Verifique se o medidor de autoconsumo 1 está disponível", "nl": "Controleer of meter 1 voor eigen verbruik beschikbaar is", "fr": "Veuillez vérifier si le compteur d'autoconsommation 1 est disponible", "it": "Si prega di verificare se il contatore di autoconsumo 1 è disponibile", "es": "Compruebe si el medidor de autoconsumo 1 está disponible", "pl": "Sprawdź, czy miernik zużycia własnego 1 jest dostępny", "zh-cn": "请检查自用电表1是否可用"},
11
+ "Data logger and web based analysis software for Solarmax, SMA, Kaco, Fronius and Kostal inverters. For more information please click the link.": {"en": "", "de": "Datenlogger und webbasierte Analysesoftware für Wechselrichter von Solarmax, SMA, Kaco, Fronius und Kostal. ", "ru": "Регистратор данных и программное обеспечение для веб-анализа для инверторов Solarmax, SMA, Kaco, Fronius и Kostal. ", "pt": "Data logger e software de análise baseado na web para inversores Solarmax, SMA, Kaco, Fronius e Kostal. ", "nl": "Datalogger en webgebaseerde analysesoftware voor Solarmax, SMA, Kaco, Fronius en Kostal-omvormers. ", "fr": "Enregistreur de données et logiciel d’analyse Web pour les onduleurs Solarmax, SMA, Kaco, Fronius et Kostal. ", "it": "Data logger e software di analisi web based per inverter Solarmax, SMA, Kaco, Fronius e Kostal. ", "es": "Registrador de datos y software de análisis basado en web para los inversores Solarmax, SMA, Kaco, Fronius y Kostal. ", "pl": "Rejestrator danych i internetowe oprogramowanie do analizy falowników Solarmax, SMA, Kaco, Fronius i Kostal. ", "zh-cn": "Solarmax,SMA,Kaco,Fronius和Kostal逆变器的数据记录器和基于Web的分析软件。"},
12
+ "Datalogger, monitoring and web-based evaluation software for Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, Aurora inverters / Power-one, Fronius / Sun Power.": {"en": "", "de": "Datenlogger-, Überwachungs- und webbasierte Auswertungssoftware für Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Steca, Eaton Phoenix / Sunville, SolarConvert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "ru": "Регистратор данных, программное обеспечение для мониторинга и сетевой оценки для Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "pt": "Datalogger, monitoração e software de avaliação baseado na Web para Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Converso, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "nl": "Datalogger, monitoring en webgebaseerde evaluatiesoftware voor Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "fr": "Enregistreur de données, logiciel de surveillance et d’évaluation sur le Web pour Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schaco, ", "it": "Datalogger, monitoraggio e software di valutazione basato sul web per Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "es": "Datalogger, monitoreo y software de evaluación basado en la web para Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Schaco, ", "pl": "Rejestrator danych, oprogramowanie monitorujące i internetowe do Solarmax, Danfoss, Carlo Gavazzi, IBC Servemaster, SMA, Effekta, Ever-Solar, Effekta, Steca, Eaton Phoenix / Sunville, Solar Convert, SolarEdge / Sunspec, Kostal, Kaco, Schüco, ", "zh-cn": "Solarmax,Danfoss,Carlo Gavazzi,IBC Servemaster,SMA,Effekta,Ever-Solar,Effekta,Steca,Eaton Phoenix / Sunville,Solar Convert,SolarEdge / Sunspec,Kostal,Kaco,Schüco的数据记录器,监控和基于网络的评估软件, "},
13
+ "Here you can define the polling interval [between 1 to 59 minutes]": {"en": "", "de": "Hier können Sie das Abfrageintervall definieren [zwischen 1 und 59 Minuten]", "ru": "Здесь вы можете определить интервал опроса [от 1 до 59 минут]", "pt": "Aqui você pode definir o intervalo de pesquisa [entre 1 e 59 minutos]", "nl": "Hier kunt u het polling-interval definiëren [tussen 1 en 59 minuten]", "fr": "Ici, vous pouvez définir l'intervalle d'interrogation [entre 1 et 59 minutes]", "it": "Qui è possibile definire l'intervallo di polling [tra 1 e 59 minuti]", "es": "Aquí puede definir el intervalo de sondeo [entre 1 y 59 minutos]", "pl": "Tutaj możesz zdefiniować interwał odpytywania [od 1 do 59 minut]", "zh-cn": "您可以在此处定义轮询间隔[1至59分钟之间]"},
14
+ "IP-Address": { "en": "IP-Address", "de": "IP Adresse", "ru": "Айпи адрес", "pt": "Endereço de IP", "nl": "IP adres", "fr": "Adresse IP", "it": "Indirizzo IP", "es": "Dirección IP", "pl": "Adres IP", "zh-cn": "IP地址"},
15
+ "Interval": { "en": "Interval", "de": "Intervall", "ru": "интервал", "pt": "Intervalo", "nl": "Interval", "fr": "Intervalle", "it": "Intervallo", "es": "Intervalo", "pl": "Interwał", "zh-cn": "间隔"},
16
+ "Interval end": { "en": "Interval end", "de": "Intervallende", "ru": "Конец интервала", "pt": "Fim do intervalo", "nl": "Interval einde", "fr": "Fin d'intervalle", "it": "Intervallo di fine", "es": "Fin de intervalo", "pl": "Koniec interwału", "zh-cn": "间隔结束"},
17
+ "Interval start": { "en": "Interval start", "de": "Intervallstart", "ru": "Интервальный старт", "pt": "Início do intervalo", "nl": "Interval start", "fr": "Début d'intervalle", "it": "Inizio intervallo", "es": "Inicio de intervalo", "pl": "Początek przerwy", "zh-cn": "间隔开始"},
18
+ "Inverter 1": { "en": "Inverter 1", "de": "Wechselrichter 1", "ru": "Инвертор 1", "pt": "Inversor 1", "nl": "Omvormer 1", "fr": "Onduleur 1", "it": "Inverter 1", "es": "Inversor 1", "pl": "Falownik 1", "zh-cn": "逆变器1"},
19
+ "Inverter 2": { "en": "Inverter 2", "de": "Wechselrichter 2", "ru": "Инвертор 2", "pt": "Inversor 2", "nl": "Omvormer 2", "fr": "Onduleur 2", "it": "Inverter 2", "es": "Inversor 2", "pl": "Falownik 2", "zh-cn": "逆变器2"},
20
+ "Inverter 3": { "en": "Inverter 3", "de": "Wechselrichter 3", "ru": "Инвертор 3", "pt": "Inversor 3", "nl": "Omvormer 3", "fr": "Onduleur 3", "it": "Inverter 3", "es": "Inversor 3", "pl": "Falownik 3", "zh-cn": "逆变器3"},
21
+ "Inverter 4": { "en": "Inverter 4", "de": "Wechselrichter 4", "ru": "Инвертор 4", "pt": "Inversor 4", "nl": "Omvormer 4", "fr": "Onduleur 4", "it": "Inverter 4", "es": "Inversor 4", "pl": "Falownik 4", "zh-cn": "逆变器4"},
22
+ "Please check if inverter 1 available": { "en": "Please check if inverter 1 available", "de": "Bitte prüfen Sie, ob Wechselrichter 1 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли инвертор 1", "pt": "Por favor, verifique se o inversor 1 está disponível", "nl": "Controleer of inverter 1 beschikbaar is", "fr": "Veuillez vérifier si le convertisseur 1 est disponible", "it": "Si prega di verificare se l'inverter 1 è disponibile", "es": "Por favor, compruebe si el inversor 1 disponible", "pl": "Sprawdź, czy dostępny jest falownik 1", "zh-cn": "请检查逆变器1是否可用"},
23
+ "Please check if inverter 2 available": { "en": "Please check if inverter 2 available", "de": "Bitte prüfen Sie, ob Wechselrichter 2 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли инвертор 2", "pt": "Por favor, verifique se o inversor 2 está disponível", "nl": "Controleer of inverter 2 beschikbaar is", "fr": "Veuillez vérifier si l'onduleur 2 est disponible", "it": "Si prega di verificare se l'inverter 2 è disponibile", "es": "Por favor, compruebe si el inversor 2 está disponible", "pl": "Sprawdź, czy dostępny jest falownik 2", "zh-cn": "请检查逆变器2是否可用"},
24
+ "Please check if inverter 3 available": { "en": "Please check if inverter 3 available", "de": "Bitte prüfen Sie, ob Wechselrichter 3 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли инвертор 3", "pt": "Por favor, verifique se o inversor 3 está disponível", "nl": "Controleer of inverter 3 beschikbaar is", "fr": "Veuillez vérifier si l'onduleur 3 est disponible", "it": "Si prega di verificare se l'inverter 3 è disponibile", "es": "Por favor verifica si el inversor 3 está disponible.", "pl": "Sprawdź, czy dostępny jest falownik 3", "zh-cn": "请检查逆变器3是否可用"},
25
+ "Please check if inverter 4 available": { "en": "Please check if inverter 4 available", "de": "Bitte prüfen Sie, ob Wechselrichter 4 verfügbar ist", "ru": "Пожалуйста, проверьте, если инвертор 4 доступен", "pt": "Por favor, verifique se o inversor 4 está disponível", "nl": "Controleer of omvormer 4 beschikbaar is", "fr": "Veuillez vérifier si l'inverseur 4 est disponible", "it": "Si prega di verificare se l'inverter 4 è disponibile", "es": "Por favor, compruebe si el inversor 4 está disponible.", "pl": "Sprawdź, czy dostępny jest falownik 4", "zh-cn": "请检查逆变器4是否可用"},
26
+ "Please check if self consumption meter 1 is available": {"en": "Please check if self consumption meter 1 is available", "de": "Bitte prüfen Sie, ob der Eigenverbrauchsmesser 1 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли счетчик 1", "pt": "Verifique se o medidor de autoconsumo 1 está disponível", "nl": "Controleer of meter 1 voor eigen verbruik beschikbaar is", "fr": "Veuillez vérifier si le compteur d'autoconsommation 1 est disponible", "it": "Si prega di verificare se il contatore di autoconsumo 1 è disponibile", "es": "Compruebe si el medidor de autoconsumo 1 está disponible", "pl": "Sprawdź, czy miernik zużycia własnego 1 jest dostępny", "zh-cn": "请检查自用电表1是否可用"},
21
27
  "Please check if self consumption meter 2 is available": {"en": "Please check if self consumption meter 2 is available", "de": "Bitte prüfen Sie, ob der Eigenverbrauchsmesser 2 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли счетчик потребления 2", "pt": "Verifique se o medidor de autoconsumo 2 está disponível", "nl": "Controleer of meter 2 voor eigen verbruik beschikbaar is", "fr": "Veuillez vérifier si le compteur d'autoconsommation 2 est disponible", "it": "Si prega di verificare se il misuratore di autoconsumo 2 è disponibile", "es": "Compruebe si el medidor de autoconsumo 2 está disponible", "pl": "Sprawdź, czy miernik zużycia własnego 2 jest dostępny", "zh-cn": "请检查自用电表2是否可用"},
22
- "Please check if self consumption meter 3 is available": {"en": "Please check if self consumption meter 3 is available", "de": "Bitte prüfen Sie, ob der Eigenverbrauchsmesser 3 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли счетчик 3", "pt": "Verifique se o medidor de autoconsumo 3 está disponível", "nl": "Controleer of meter 3 voor eigen verbruik beschikbaar is", "fr": "Veuillez vérifier si le compteur d'autoconsommation 3 est disponible", "it": "Si prega di verificare se il misuratore di autoconsumo 3 è disponibile", "es": "Compruebe si el medidor de autoconsumo 3 está disponible", "pl": "Sprawdź, czy miernik zużycia własnego 3 jest dostępny", "zh-cn": "请检查自用电表3是否可用"},
23
- "Please check if self consumption meter 4 is available": {"en": "Please check if self consumption meter 4 is available", "de": "Bitte prüfen Sie, ob der Eigenverbrauchsmesser 4 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли счетчик 4", "pt": "Verifique se o medidor de autoconsumo 4 está disponível", "nl": "Controleer of zelfverbruiksmeter 4 beschikbaar is", "fr": "Veuillez vérifier si le compteur d'autoconsommation 4 est disponible", "it": "Verificare se è disponibile il contatore di autoconsumo 4", "es": "Compruebe si el medidor de autoconsumo 4 está disponible", "pl": "Sprawdź, czy miernik zużycia własnego 4 jest dostępny", "zh-cn": "请检查自用电度表4是否可用"},
28
+ "Please check if self consumption meter 3 is available": {"en": "Please check if self consumption meter 3 is available", "de": "Bitte prüfen Sie, ob der Eigenverbrauchsmesser 3 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли счетчик 3", "pt": "Verifique se o medidor de autoconsumo 3 está disponível", "nl": "Controleer of meter 3 voor eigen verbruik beschikbaar is", "fr": "Veuillez vérifier si le compteur d'autoconsommation 3 est disponible", "it": "Si prega di verificare se il misuratore di autoconsumo 3 è disponibile", "es": "Compruebe si el medidor de autoconsumo 3 está disponible", "pl": "Sprawdź, czy miernik zużycia własnego 3 jest dostępny", "zh-cn": "请检查自用电表3是否可用"},
29
+ "Please check if self consumption meter 4 is available": {"en": "Please check if self consumption meter 4 is available", "de": "Bitte prüfen Sie, ob der Eigenverbrauchsmesser 4 verfügbar ist", "ru": "Пожалуйста, проверьте, доступен ли счетчик 4", "pt": "Verifique se o medidor de autoconsumo 4 está disponível", "nl": "Controleer of zelfverbruiksmeter 4 beschikbaar is", "fr": "Veuillez vérifier si le compteur d'autoconsommation 4 est disponible", "it": "Verificare se è disponibile il contatore di autoconsumo 4", "es": "Compruebe si el medidor de autoconsumo 4 está disponible", "pl": "Sprawdź, czy miernik zużycia własnego 4 jest dostępny", "zh-cn": "请检查自用电度表4是否可用"},
24
30
  "Please check if you use the self consumption meter sum": {"en": "Please check if you use the self consumption meter sum", "de": "Bitte überprüfen Sie, ob Sie die Selbstverbrauchsmessersumme verwenden", "ru": "Пожалуйста, проверьте, если вы используете сумму счетчика самопотребления", "pt": "Verifique se você usa a soma do medidor de autoconsumo", "nl": "Controleer of u de som van de meter voor eigen verbruik gebruikt", "fr": "Veuillez vérifier si vous utilisez la somme du compteur d'autoconsommation", "it": "Si prega di verificare se si utilizza la somma del contatore di autoconsumo", "es": "Compruebe si usa la suma del medidor de autoconsumo", "pl": "Sprawdź, czy używasz sumy licznika zużycia własnego", "zh-cn": "请检查您是否使用自费表的总和"},
25
31
  "Please check if you want to set a system variable in the CCU": {"en": "Please check if you want to set a system variable in the CCU", "de": "Bitte prüfen Sie, ob Sie eine Systemvariable in der CCU setzen möchten", "ru": "Проверьте, хотите ли вы установить системную переменную в CCU", "pt": "Por favor, verifique se você deseja definir uma variável de sistema no CCU", "nl": "Controleer of u een systeemvariabele in de CCU wilt instellen", "fr": "Veuillez vérifier si vous souhaitez définir une variable système dans la CCU.", "it": "Si prega di verificare se si desidera impostare una variabile di sistema nella CCU", "es": "Por favor, compruebe si desea establecer una variable de sistema en la CCU", "pl": "Sprawdź, czy chcesz ustawić zmienną systemową w CCU", "zh-cn": "请检查是否要在CCU中设置系统变量"},
26
- "Please enter if you have a d0-converter": { "en": "Please enter if you have a d0-converter", "de": "Bitte geben Sie an, ob Sie einen d0-Konverter haben", "ru": "Пожалуйста, введите, если у вас есть d0-конвертер", "pt": "Por favor, digite se você tem um conversor de d0", "nl": "Voer alstublieft in als u een d0-converter heeft", "fr": "S'il vous plaît entrer si vous avez un convertisseur d0", "it": "Si prega di inserire se si dispone di un convertitore d0", "es": "Por favor ingresa si tienes un convertidor d0", "pl": "Wprowadź, jeśli masz konwerter d0", "zh-cn": "如果您有d0转换器,请输入"},
27
- "Please enter the CCU system variable": { "en": "Please enter the CCU system variable", "de": "Bitte geben Sie die CCU-Systemvariable ein", "ru": "Пожалуйста, введите системную переменную CCU", "pt": "Por favor insira a variável do sistema CCU", "nl": "Voer de CCU-systeemvariabele in", "fr": "Veuillez entrer la variable système CCU", "it": "Si prega di inserire la variabile di sistema CCU", "es": "Por favor ingrese la variable de sistema CCU", "pl": "Wprowadź zmienną systemową CCU", "zh-cn": "请输入CCU系统变量"},
32
+ "Please enter if you have a d0-converter": { "en": "Please enter if you have a d0-converter", "de": "Bitte geben Sie an, ob Sie einen d0-Konverter haben", "ru": "Пожалуйста, введите, если у вас есть d0-конвертер", "pt": "Por favor, digite se você tem um conversor de d0", "nl": "Voer alstublieft in als u een d0-converter heeft", "fr": "S'il vous plaît entrer si vous avez un convertisseur d0", "it": "Si prega di inserire se si dispone di un convertitore d0", "es": "Por favor ingresa si tienes un convertidor d0", "pl": "Wprowadź, jeśli masz konwerter d0", "zh-cn": "如果您有d0转换器,请输入"},
33
+ "Please enter the CCU system variable": { "en": "Please enter the CCU system variable", "de": "Bitte geben Sie die CCU-Systemvariable ein", "ru": "Пожалуйста, введите системную переменную CCU", "pt": "Por favor insira a variável do sistema CCU", "nl": "Voer de CCU-systeemvariabele in", "fr": "Veuillez entrer la variable système CCU", "it": "Si prega di inserire la variabile di sistema CCU", "es": "Por favor ingrese la variable de sistema CCU", "pl": "Wprowadź zmienną systemową CCU", "zh-cn": "请输入CCU系统变量"},
28
34
  "Please enter the IP-Address from your SolarView data logger": {"en": "Please enter the IP-Address from your SolarView data logger", "de": "Bitte geben Sie die IP-Adresse Ihres SolarView-Datenloggers ein", "ru": "Пожалуйста, введите IP-адрес из вашего регистратора данных SolarView", "pt": "Por favor, digite o endereço IP do seu data logger SolarView", "nl": "Voer het IP-adres in vanuit uw SolarView datalogger", "fr": "Veuillez saisir l'adresse IP de votre enregistreur de données SolarView.", "it": "Inserisci l'indirizzo IP dal tuo data logger SolarView", "es": "Introduzca la dirección IP de su registrador de datos SolarView", "pl": "Wprowadź adres IP z rejestratora danych SolarView", "zh-cn": "请从SolarView数据记录器输入IP地址"},
29
- "Please enter the interval (cron format)": { "en": "Please enter the interval (cron format)", "de": "Bitte geben Sie das Intervall ein (Cron-Format)", "ru": "Пожалуйста, введите интервал (cron формат)", "pt": "Por favor insira o intervalo (formato cron)", "nl": "Voer het interval in (cron-formaat)", "fr": "S'il vous plaît entrer l'intervalle (format cron)", "it": "Si prega di inserire l'intervallo (formato cron)", "es": "Por favor ingrese el intervalo (formato cron)", "pl": "Wprowadź interwał (format cron)", "zh-cn": "请输入间隔(cron格式)"},
30
- "Please enter the port": { "en": "Please enter the port", "de": "Bitte geben Sie den Port ein", "ru": "Пожалуйста, введите порт", "pt": "Por favor, insira o porto", "nl": "Voer de poort in", "fr": "S'il vous plaît entrer le port", "it": "Si prega di inserire il porto", "es": "Por favor ingrese el puerto", "pl": "Proszę wejść do portu", "zh-cn": "请输入端口"},
31
- "Self consumption meter 1": { "en": "Self consumption meter 1", "de": "Eigenverbrauchsmesser 1", "ru": "Счетчик собственного потребления 1", "pt": "Medidor de auto consumo 1", "nl": "Eigen verbruik meter 1", "fr": "Compteur d'autoconsommation 1", "it": "Indicatore di autoconsumo 1", "es": "Medidor de autoconsumo 1", "pl": "Licznik zużycia własnego 1", "zh-cn": "自用电表1"},
32
- "Self consumption meter 2": { "en": "Self consumption meter 2", "de": "Eigenverbrauchsmesser 2", "ru": "Счетчик собственного потребления 2", "pt": "Medidor de autoconsumo 2", "nl": "Eigen verbruik meter 2", "fr": "Compteur d'autoconsommation 2", "it": "Contatore di autoconsumo 2", "es": "Medidor de autoconsumo 2", "pl": "Licznik zużycia własnego 2", "zh-cn": "自用电表2"},
33
- "Self consumption meter 3": { "en": "Self consumption meter 3", "de": "Eigenverbrauchsmesser 3", "ru": "Счетчик собственного потребления 3", "pt": "Medidor de autoconsumo 3", "nl": "Eigen verbruik meter 3", "fr": "Compteur d'autoconsommation 3", "it": "Indicatore di autoconsumo 3", "es": "Medidor de autoconsumo 3", "pl": "Licznik zużycia własnego 3", "zh-cn": "自用电度表3"},
34
- "Self consumption meter 4": { "en": "Self consumption meter 4", "de": "Eigenverbrauchsmesser 4", "ru": "Счетчик собственного потребления 4", "pt": "Medidor de autoconsumo 4", "nl": "Eigen verbruik meter 4", "fr": "Compteur d'autoconsommation 4", "it": "Indicatore di autoconsumo 4", "es": "Medidor de autoconsumo 4", "pl": "Licznik zużycia własnego 4", "zh-cn": "自用电度表4"},
35
- "Self consumption meter sum": { "en": "Self consumption meter sum", "de": "Eigenverbrauchsmesser Summe", "ru": "Сумма счетчика собственного потребления", "pt": "Soma de medidor de autoconsumo", "nl": "Som van het eigen verbruik", "fr": "Somme du compteur d'autoconsommation", "it": "Somma dei contatori di autoconsumo", "es": "Suma del medidor de autoconsumo", "pl": "Suma licznika zużycia własnego", "zh-cn": "自耗表总和"},
36
- "Set system variable CCU": { "en": "Set system variable CCU", "de": "Systemvariable CCU setzen", "ru": "Установить системную переменную CCU", "pt": "Definir CCU da variável do sistema", "nl": "Stel systeemvariabele CCU in", "fr": "Définir la variable système CCU", "it": "Imposta CCU variabile di sistema", "es": "Establecer variable de sistema CCU", "pl": "Ustaw zmienną systemową CCU", "zh-cn": "设置系统变量CCU"},
37
- "SolarView Logger": { "en": "SolarView Logger", "de": "SolarView Logger", "ru": "SolarView Logger", "pt": "Logger SolarView", "nl": "SolarView Logger", "fr": "Enregistreur SolarView", "it": "Logger di SolarView", "es": "Registrador SolarView", "pl": "SolarView Logger", "zh-cn": "SolarView记录器"},
35
+ "Please enter the interval (cron format)": { "en": "Please enter the interval (cron format)", "de": "Bitte geben Sie das Intervall ein (Cron-Format)", "ru": "Пожалуйста, введите интервал (cron формат)", "pt": "Por favor insira o intervalo (formato cron)", "nl": "Voer het interval in (cron-formaat)", "fr": "S'il vous plaît entrer l'intervalle (format cron)", "it": "Si prega di inserire l'intervallo (formato cron)", "es": "Por favor ingrese el intervalo (formato cron)", "pl": "Wprowadź interwał (format cron)", "zh-cn": "请输入间隔(cron格式)"},
36
+ "Please enter the interval end (e.g. 23:59)": { "en": "Please enter the interval end (e.g. 23:59)", "de": "Bitte geben Sie das Intervallende ein (z. B. 23:59).", "ru": "Введите конец интервала (например, 23:59)", "pt": "Insira o fim do intervalo (por exemplo, 23:59)", "nl": "Voer het einde van het interval in (bijv. 23:59)", "fr": "Veuillez saisir la fin de l'intervalle (par exemple 23:59)", "it": "Inserisci la fine dell'intervallo (ad es. 23:59)", "es": "Ingrese el final del intervalo (por ejemplo, 23:59)", "pl": "Wprowadź koniec interwału (np. 23:59)", "zh-cn": "请输入间隔结束时间(例如23:59)"},
37
+ "Please enter the interval start (e.g. 00:00)": { "en": "Please enter the interval start (e.g. 00:00)", "de": "Bitte geben Sie den Intervallstart ein (z. B. 00:00).", "ru": "Введите начало интервала (например, 00:00)", "pt": "Insira o início do intervalo (por exemplo, 00:00)", "nl": "Voer de intervalstart in (bijv. 00:00)", "fr": "Veuillez saisir le début de l'intervalle (par exemple 00:00)", "it": "Si prega di inserire l'inizio dell'intervallo (es. 00:00)", "es": "Introduzca el inicio del intervalo (p. Ej., 00:00)", "pl": "Wprowadź początek interwału (np. 00:00)", "zh-cn": "请输入间隔开始时间(例如00:00)"},
38
+ "Please enter the port": { "en": "Please enter the port", "de": "Bitte geben Sie den Port ein", "ru": "Пожалуйста, введите порт", "pt": "Por favor, insira o porto", "nl": "Voer de poort in", "fr": "S'il vous plaît entrer le port", "it": "Si prega di inserire il porto", "es": "Por favor ingrese el puerto", "pl": "Proszę wejść do portu", "zh-cn": "请输入端口"},
39
+ "Self consumption meter 1": { "en": "Self consumption meter 1", "de": "Eigenverbrauchsmesser 1", "ru": "Счетчик собственного потребления 1", "pt": "Medidor de auto consumo 1", "nl": "Eigen verbruik meter 1", "fr": "Compteur d'autoconsommation 1", "it": "Indicatore di autoconsumo 1", "es": "Medidor de autoconsumo 1", "pl": "Licznik zużycia własnego 1", "zh-cn": "自用电表1"},
40
+ "Self consumption meter 2": { "en": "Self consumption meter 2", "de": "Eigenverbrauchsmesser 2", "ru": "Счетчик собственного потребления 2", "pt": "Medidor de autoconsumo 2", "nl": "Eigen verbruik meter 2", "fr": "Compteur d'autoconsommation 2", "it": "Contatore di autoconsumo 2", "es": "Medidor de autoconsumo 2", "pl": "Licznik zużycia własnego 2", "zh-cn": "自用电表2"},
41
+ "Self consumption meter 3": { "en": "Self consumption meter 3", "de": "Eigenverbrauchsmesser 3", "ru": "Счетчик собственного потребления 3", "pt": "Medidor de autoconsumo 3", "nl": "Eigen verbruik meter 3", "fr": "Compteur d'autoconsommation 3", "it": "Indicatore di autoconsumo 3", "es": "Medidor de autoconsumo 3", "pl": "Licznik zużycia własnego 3", "zh-cn": "自用电度表3"},
42
+ "Self consumption meter 4": { "en": "Self consumption meter 4", "de": "Eigenverbrauchsmesser 4", "ru": "Счетчик собственного потребления 4", "pt": "Medidor de autoconsumo 4", "nl": "Eigen verbruik meter 4", "fr": "Compteur d'autoconsommation 4", "it": "Indicatore di autoconsumo 4", "es": "Medidor de autoconsumo 4", "pl": "Licznik zużycia własnego 4", "zh-cn": "自用电度表4"},
43
+ "Self consumption meter sum": { "en": "Self consumption meter sum", "de": "Eigenverbrauchsmesser Summe", "ru": "Сумма счетчика собственного потребления", "pt": "Soma de medidor de autoconsumo", "nl": "Som van het eigen verbruik", "fr": "Somme du compteur d'autoconsommation", "it": "Somma dei contatori di autoconsumo", "es": "Suma del medidor de autoconsumo", "pl": "Suma licznika zużycia własnego", "zh-cn": "自耗表总和"},
44
+ "Set system variable CCU": { "en": "Set system variable CCU", "de": "Systemvariable CCU setzen", "ru": "Установить системную переменную CCU", "pt": "Definir CCU da variável do sistema", "nl": "Stel systeemvariabele CCU in", "fr": "Définir la variable système CCU", "it": "Imposta CCU variabile di sistema", "es": "Establecer variable de sistema CCU", "pl": "Ustaw zmienną systemową CCU", "zh-cn": "设置系统变量CCU"},
45
+ "SolarView Logger": { "en": "SolarView Logger", "de": "SolarView Logger", "ru": "SolarView Logger", "pt": "Logger SolarView", "nl": "SolarView Logger", "fr": "Enregistreur SolarView", "it": "Logger di SolarView", "es": "Registrador SolarView", "pl": "SolarView Logger", "zh-cn": "SolarView记录器"},
38
46
  "SolarView is a data logger for several inverter. Further informations can be get over the link.": {"en": "SolarView is a data logger for several inverter. Further informations can be get over the link.", "de": "SolarView ist ein Datenlogger für mehrere Wechselrichter. ", "ru": "SolarView - это регистратор данных для нескольких инверторов. ", "pt": "O SolarView é um data logger para vários inversores. ", "nl": "SolarView is een datalogger voor verschillende omvormers. ", "fr": "SolarView est un enregistreur de données pour plusieurs onduleurs. ", "it": "SolarView è un data logger per diversi inverter. ", "es": "SolarView es un registrador de datos para varios inversores. ", "pl": "SolarView to rejestrator danych dla kilku falowników. ", "zh-cn": "SolarView是多个逆变器的数据记录器。"},
39
- "System variable": { "en": "System variable", "de": "Systemvariable", "ru": "Системная переменная", "pt": "Variável do sistema", "nl": "Systeemvariabele", "fr": "Variable système", "it": "Variabile di sistema", "es": "Variable del sistema", "pl": "Zmienna systemowa", "zh-cn": "系统变量"},
40
- "polling interval in minutes": { "en": "polling interval in minutes", "de": "Abfrageintervall in Minuten", "ru": "интервал опроса в минутах", "pt": "intervalo de pesquisa em minutos", "nl": "polling-interval in minuten", "fr": "intervalle d'interrogation en minutes", "it": "intervallo di polling in minuti", "es": "intervalo de sondeo en minutos", "pl": "interwał sondowania w minutach", "zh-cn": "轮询间隔(以分钟为单位)"},
41
- "solarviewdatareader adapter settings": { "en": "Adapter settings for solarviewdatareader", "de": "Adaptereinstellungen für solarviewdatareader", "ru": "Настройки адаптера для solarviewdatareader", "pt": "Configurações do adaptador para solarviewdatareader", "nl": "Adapterinstellingen voor solarviewdatareader", "fr": "Paramètres d'adaptateur pour solarviewdatareader", "it": "Impostazioni dell'adattatore per solarviewdatareader", "es": "Ajustes del adaptador para solarviewdatareader", "pl": "Ustawienia adaptera dla solarviewdatareader", "zh-cn": "solarviewdatareader的适配器设置"},
42
- "Please enter the interval start (e.g. 00:00)": {"en": "Please enter the interval start (e.g. 00:00)", "de": "Bitte geben Sie den Intervallstart ein (z. B. 00:00).", "ru": "Введите начало интервала (например, 00:00)", "pt": "Insira o início do intervalo (por exemplo, 00:00)", "nl": "Voer de intervalstart in (bijv. 00:00)", "fr": "Veuillez saisir le début de l'intervalle (par exemple 00:00)", "it": "Si prega di inserire l'inizio dell'intervallo (es. 00:00)", "es": "Introduzca el inicio del intervalo (p. Ej., 00:00)", "pl": "Wprowadź początek interwału (np. 00:00)", "zh-cn": "请输入间隔开始时间(例如00:00)"},
43
- "Please enter the interval end (e.g. 23:59)": { "en": "Please enter the interval end (e.g. 23:59)", "de": "Bitte geben Sie das Intervallende ein (z. B. 23:59).", "ru": "Введите конец интервала (например, 23:59)", "pt": "Insira o fim do intervalo (por exemplo, 23:59)", "nl": "Voer het einde van het interval in (bijv. 23:59)", "fr": "Veuillez saisir la fin de l'intervalle (par exemple 23:59)", "it": "Inserisci la fine dell'intervallo (ad es. 23:59)", "es": "Ingrese el final del intervalo (por ejemplo, 23:59)", "pl": "Wprowadź koniec interwału (np. 23:59)", "zh-cn": "请输入间隔结束时间(例如23:59)"},
47
+ "System variable": { "en": "System variable", "de": "Systemvariable", "ru": "Системная переменная", "pt": "Variável do sistema", "nl": "Systeemvariabele", "fr": "Variable système", "it": "Variabile di sistema", "es": "Variable del sistema", "pl": "Zmienna systemowa", "zh-cn": "系统变量"},
48
+ "polling interval in minutes": { "en": "", "de": "Abfrageintervall in Minuten", "ru": "интервал опроса в минутах", "pt": "intervalo de pesquisa em minutos", "nl": "polling-interval in minuten", "fr": "intervalle d'interrogation en minutes", "it": "intervallo di polling in minuti", "es": "intervalo de sondeo en minutos", "pl": "interwał sondowania w minutach", "zh-cn": "轮询间隔(以分钟为单位)"},
49
+ "solarviewdatareader adapter settings": { "en": "Adapter settings for solarviewdatareader", "de": "Adaptereinstellungen für solarviewdatareader", "ru": "Настройки адаптера для solarviewdatareader", "pt": "Configurações do adaptador para solarviewdatareader", "nl": "Adapterinstellingen voor solarviewdatareader", "fr": "Paramètres d'adaptateur pour solarviewdatareader", "it": "Impostazioni dell'adattatore per solarviewdatareader", "es": "Ajustes del adaptador para solarviewdatareader", "pl": "Ustawienia adaptera dla solarviewdatareader", "zh-cn": "solarviewdatareader的适配器设置"},
50
+ "Here you can define the polling interval [between 10 to 3600 seconds]": {"en": "Here you can define the polling interval [between 10 to 3600 seconds]", "de": "Hier können Sie das Polling-Intervall festlegen [zwischen 10 bis 3600 Sekunden]", "ru": "Здесь вы можете определить интервал опроса [от 10 до 3600 секунд]", "pt": "Aqui você pode definir o intervalo de sondagem [entre 10 a 3600 segundos]", "nl": "Hier kunt u het polling-interval definiëren [tussen 10 en 3600 seconden]", "fr": "Ici, vous pouvez définir l'intervalle d'interrogation [entre 10 et 3600 secondes]", "it": "Qui puoi definire l'intervallo di polling [tra 10 e 3600 secondi]", "es": "Aquí puede definir el intervalo de sondeo [entre 10 y 3600 segundos]", "pl": "Tutaj możesz zdefiniować interwał odpytywania [od 10 do 3600 sekund]", "zh-cn": "在这里您可以定义轮询间隔 [10 到 3600 秒之间]"},
51
+ "polling interval in seconds": { "en": "polling interval in seconds", "de": "Abfrageintervall in Sekunden", "ru": "интервал опроса в секундах", "pt": "intervalo de sondagem em segundos", "nl": "polling-interval in seconden", "fr": "intervalle d'interrogation en secondes", "it": "intervallo di polling in secondi", "es": "intervalo de sondeo en segundos", "pl": "interwał odpytywania w sekundach", "zh-cn": "以秒为单位的轮询间隔"},
44
52
  };
package/io-package.json CHANGED
@@ -1,8 +1,44 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "solarviewdatareader",
4
- "version": "1.0.3",
4
+ "version": "1.0.6",
5
5
  "news": {
6
+ "1.0.6": {
7
+ "en": "dependencies updated\nInterval settings changed from minutes to seconds\nStates only writen after changes",
8
+ "de": "aktualisierte abhängigkeiten\nIntervalleinstellungen von Minuten bis Sekunden geändert\nNur nach Änderungen geschriebene Staaten",
9
+ "ru": "зависимости обновлены\nИнтервалные настройки изменены с минут до секунд\nГосударства только пишут после изменений",
10
+ "pt": "dependências atualizadas\nAs configurações de intervalo mudaram de minutos para segundos\nEstados apenas escrevem após mudanças",
11
+ "nl": "afhankelijkheid geüpdateerd\nVerandering van minuten tot seconden\nAmerika schreef alleen na veranderingen",
12
+ "fr": "dépendances mises à jour\nLes réglages d'intervalle ont changé de minutes en secondes\nÉtats seulement énumérés après changement",
13
+ "it": "dipendenze aggiornate\nLe impostazioni di intervallazione sono cambiate da minuti a secondi\nStati solo dopo i cambiamenti",
14
+ "es": "dependencias actualizadas\nLos ajustes de intervalor cambiaron de minutos a segundos\nEstados sólo escriben después de los cambios",
15
+ "pl": "aktualizacja\nPrzeszłość zmieniała się z minut na sekundę\nPaństwa pisane są tylko po zmianach",
16
+ "zh-cn": "b. 更新的依赖\n汇率环境从分钟改为第二秒\n国家在修改后只写信"
17
+ },
18
+ "1.0.5": {
19
+ "en": "dependencies updated\ntest and release updated\nsmaller changes",
20
+ "de": "Abhängigkeiten aktualisiert\nTest und Release aktualisiert\nkleinere Änderungen",
21
+ "ru": "зависимости обновлены\nтест и выпуск обновлены\nнебольшие изменения",
22
+ "pt": "dependências atualizadas\nteste e lançamento atualizado\nmudanças menores",
23
+ "nl": "afhankelijkheden bijgewerkt\ntest en release bijgewerkt\nkleinere veranderingen",
24
+ "fr": "dépendances mises à jour\ntest et version mis à jour\npetits changements",
25
+ "it": "dipendenze aggiornate\ntest e rilascio aggiornati\npiccoli cambiamenti",
26
+ "es": "dependencias actualizadas\nprueba y versión actualizada\npequeños cambios",
27
+ "pl": "zaktualizowano zależności\nzaktualizowano test i wydanie\nmniejsze zmiany",
28
+ "zh-cn": "已更新依赖项\n测试和发布更新\n较小的变化"
29
+ },
30
+ "1.0.4": {
31
+ "en": "dependencies updated\nissue #20 fixed",
32
+ "de": "Abhängigkeiten aktualisiert\nProblem Nr. 20 behoben",
33
+ "ru": "зависимости обновлены\nпроблема №20 исправлена",
34
+ "pt": "dependências atualizadas\nproblema nº 20 corrigido",
35
+ "nl": "afhankelijkheden bijgewerkt\nprobleem #20 opgelost",
36
+ "fr": "dépendances mises à jour\nproblème #20 corrigé",
37
+ "it": "dipendenze aggiornate\nproblema n. 20 risolto",
38
+ "es": "dependencias actualizadas\nproblema #20 solucionado",
39
+ "pl": "zaktualizowano zależności\nproblem nr 20 naprawiony",
40
+ "zh-cn": "已更新依赖项\n问题 #20 已修复"
41
+ },
6
42
  "1.0.3": {
7
43
  "en": "dependencies updated",
8
44
  "de": "Abhängigkeiten aktualisiert",
@@ -50,42 +86,6 @@
50
86
  "es": "dependencias actualizadas\ndocumentación cambiada\ncambios menores\ndebido a la versión de estado estable establecida en 1.0.0",
51
87
  "pl": "zaktualizowane zależności\ndokumentacja uległa zmianie\ndrobne zmiany\nze względu na stabilną wersję stanu ustawioną na 1.0.0",
52
88
  "zh-cn": "依赖关系已更新\n文档已更改\n细微的变化\n由于稳定状态版本设置为1.0.0"
53
- },
54
- "0.2.1": {
55
- "en": "self consumption meter optimized",
56
- "de": "Selbstverbrauchsmesser optimiert",
57
- "ru": "счетчик собственного потребления оптимизирован",
58
- "pt": "medidor de autoconsumo otimizado",
59
- "nl": "eigen verbruiksmeter geoptimaliseerd",
60
- "fr": "compteur d'autoconsommation optimisé",
61
- "it": "misuratore di autoconsumo ottimizzato",
62
- "es": "medidor de autoconsumo optimizado",
63
- "pl": "miernik zużycia własnego zoptymalizowany",
64
- "zh-cn": "自耗表优化"
65
- },
66
- "0.2.0": {
67
- "en": "Error handling optimized, self consumption meter implemented",
68
- "de": "Fehlerbehandlung optimiert, Eigenverbrauchsmesser implementiert",
69
- "ru": "Оптимизирована обработка ошибок, реализован счетчик собственного потребления",
70
- "pt": "Tratamento de erros otimizado, medidor de autoconsumo implementado",
71
- "nl": "Foutafhandeling geoptimaliseerd, eigen verbruiksmeter geïmplementeerd",
72
- "fr": "Gestion des erreurs optimisée, compteur d'autoconsommation mis en œuvre",
73
- "it": "Gestione degli errori ottimizzata, misuratore di autoconsumo implementato",
74
- "es": "Manejo de errores optimizado, medidor de autoconsumo implementado",
75
- "pl": "Zoptymalizowana obsługa błędów, zaimplementowano miernik zużycia własnego",
76
- "zh-cn": "优化错误处理,实施自耗电表"
77
- },
78
- "0.1.0": {
79
- "en": "optimizations for adding to latest repository",
80
- "de": "Optimierungen zum Hinzufügen zum neuesten Repository",
81
- "ru": "оптимизации для добавления в последний репозиторий",
82
- "pt": "otimizações para adicionar ao repositório mais recente",
83
- "nl": "optimalisaties voor het toevoegen aan de nieuwste repository",
84
- "fr": "optimisations pour l'ajout au dernier référentiel",
85
- "it": "ottimizzazioni per l'aggiunta all'ultimo repository",
86
- "es": "optimizaciones para agregar al último repositorio",
87
- "pl": "optymalizacje w celu dodania do najnowszego repozytorium",
88
- "zh-cn": "添加到最新存储库的优化"
89
89
  }
90
90
  },
91
91
  "title": "SolarViewDataReader",
@@ -140,14 +140,15 @@
140
140
  "admin": ">=3.0.0"
141
141
  },
142
142
  {
143
- "js-controller": ">=1.4.2"
143
+ "js-controller": ">=3.0.0"
144
144
  }
145
145
  ]
146
146
  },
147
147
  "native": {
148
148
  "ipaddress": "",
149
149
  "port": "15000",
150
- "intervalVal": 1,
150
+ "intervalVal": 10,
151
+ "interval_seconds": false,
151
152
  "intervalstart": "00:00",
152
153
  "intervalend": "23:59",
153
154
  "d0converter": false,
package/main.js CHANGED
@@ -136,7 +136,7 @@ async function getData(port, ip_address) {
136
136
  const dend = new Date(dnow.getFullYear() + '-' + (dnow.getMonth()+1) + '-' + dnow.getDate() + ' ' + endtime);
137
137
  let timeoutCnt = 0;
138
138
  if (gthis.config.d0converter == true){ //Verbrauch wird immer eingelesen
139
- timeoutCnt += 3000;
139
+ timeoutCnt += 500;
140
140
  to1 = setTimeout(function() {
141
141
  sv_cmd = '22*';
142
142
  conn.connect(port, ip_address, function() {
@@ -147,7 +147,7 @@ async function getData(port, ip_address) {
147
147
  }
148
148
 
149
149
  if (gthis.config.scm0 == true){
150
- timeoutCnt += 3000;
150
+ timeoutCnt += 500;
151
151
  to7 = setTimeout(function() {
152
152
  sv_cmd = '10*'; //pvi1 Wechselrichter 1
153
153
  conn.connect(port, ip_address, function() {
@@ -157,7 +157,7 @@ async function getData(port, ip_address) {
157
157
  }, timeoutCnt);
158
158
  }
159
159
  if (gthis.config.scm1 == true){
160
- timeoutCnt += 3000;
160
+ timeoutCnt += 500;
161
161
  to8 = setTimeout(function() {
162
162
  sv_cmd = '11*';
163
163
  conn.connect(port, ip_address, function() {
@@ -167,7 +167,7 @@ async function getData(port, ip_address) {
167
167
  }, timeoutCnt);
168
168
  }
169
169
  if (gthis.config.scm2 == true){
170
- timeoutCnt += 3000;
170
+ timeoutCnt += 500;
171
171
  to9 = setTimeout(function() {
172
172
  sv_cmd = '12*';
173
173
  conn.connect(port, ip_address, function() {
@@ -177,7 +177,7 @@ async function getData(port, ip_address) {
177
177
  }, timeoutCnt);
178
178
  }
179
179
  if (gthis.config.scm3 == true){
180
- timeoutCnt += 3000;
180
+ timeoutCnt += 500;
181
181
  to10 = setTimeout(function() {
182
182
  sv_cmd = '13*';
183
183
  conn.connect(port, ip_address, function() {
@@ -187,7 +187,7 @@ async function getData(port, ip_address) {
187
187
  }, timeoutCnt);
188
188
  }
189
189
  if (gthis.config.scm4 == true){
190
- timeoutCnt += 3000;
190
+ timeoutCnt += 500;
191
191
  to11 = setTimeout(function() {
192
192
  sv_cmd = '14*';
193
193
  conn.connect(port, ip_address, function() {
@@ -204,7 +204,7 @@ async function getData(port, ip_address) {
204
204
  conn.end();
205
205
  });
206
206
  if (gthis.config.d0converter == true){
207
- timeoutCnt += 3000;
207
+ timeoutCnt += 500;
208
208
  to2 = setTimeout(function() {
209
209
  sv_cmd = '21*';
210
210
  conn.connect(port, ip_address, function() {
@@ -214,7 +214,7 @@ async function getData(port, ip_address) {
214
214
  }, timeoutCnt);
215
215
  }
216
216
  if (gthis.config.pvi1 == true){
217
- timeoutCnt += 3000;
217
+ timeoutCnt += 500;
218
218
  to3 = setTimeout(function() {
219
219
  sv_cmd = '01*'; //pvi1 Wechselrichter 1
220
220
  conn.connect(port, ip_address, function() {
@@ -224,7 +224,7 @@ async function getData(port, ip_address) {
224
224
  }, timeoutCnt);
225
225
  }
226
226
  if (gthis.config.pvi2 == true){
227
- timeoutCnt += 3000;
227
+ timeoutCnt += 500;
228
228
  to4 = setTimeout(function() {
229
229
  sv_cmd = '02*';
230
230
  conn.connect(port, ip_address, function() {
@@ -234,7 +234,7 @@ async function getData(port, ip_address) {
234
234
  }, timeoutCnt);
235
235
  }
236
236
  if (gthis.config.pvi3 == true){
237
- timeoutCnt += 3000;
237
+ timeoutCnt += 500;
238
238
  to5 = setTimeout(function() {
239
239
  sv_cmd = '03*';
240
240
  conn.connect(port, ip_address, function() {
@@ -244,7 +244,7 @@ async function getData(port, ip_address) {
244
244
  }, timeoutCnt);
245
245
  }
246
246
  if (gthis.config.pvi4 == true){
247
- timeoutCnt += 3000;
247
+ timeoutCnt += 500;
248
248
  to6 = setTimeout(function() {
249
249
  sv_cmd = '04*';
250
250
  conn.connect(port, ip_address, function() {
@@ -284,9 +284,27 @@ class Solarviewdatareader extends utils.Adapter {
284
284
  const port = this.config.port;
285
285
  let chkCnt = 0;
286
286
 
287
- this.log.info('start solarview ' + ip_address + ':' + port + ' - polling interval: ' + this.config.intervalVal + ' Min. (' + this.config.intervalstart + ' to ' + this.config.intervalend + ')');
287
+ this.log.info('start solarview ' + ip_address + ':' + port + ' - polling interval: ' + this.config.intervalVal + ' s (' + this.config.intervalstart + ' to ' + this.config.intervalend + ')');
288
288
  this.log.info('d0 converter: ' + this.config.d0converter.toString());
289
289
 
290
+ //Workaround for interval change to seconds
291
+ let adapterObj = (await this.getForeignObjectAsync(`system.adapter.${this.namespace}`));
292
+ let adapterObjChanged = false; //for changes
293
+
294
+ if (this.config.interval_seconds === false) { //Workaround: Switch interval to seconds
295
+ this.log.warn('Interval changed to seconds!');
296
+ adapterObj.native.interval_seconds = true;
297
+ adapterObj.native.intervalVal = adapterObj.native.intervalVal * 60;
298
+ adapterObjChanged = true;
299
+ }
300
+
301
+ if (adapterObjChanged === true){ //Save changes
302
+ this.log.info('Interval attribute changed! Please check the configuration');
303
+ this.log.info('Adapter restarts');
304
+ await this.setForeignObjectAsync(`system.adapter.${this.namespace}`, adapterObj);
305
+ }
306
+
307
+
290
308
  //Datenobjekte erzeugen
291
309
  await createGlobalObjects(gthis);
292
310
  await createSolarviewObjects(gthis, 'pvig');
@@ -313,7 +331,7 @@ class Solarviewdatareader extends utils.Adapter {
313
331
 
314
332
  conn = new net.Socket();
315
333
 
316
- const cron = this.config.intervalVal * 60000;
334
+ const cron = this.config.intervalVal * 1000;
317
335
  try {
318
336
  getData(port, ip_address);
319
337
  jobSchedule = setInterval(async function(){
@@ -327,9 +345,9 @@ class Solarviewdatareader extends utils.Adapter {
327
345
  try {
328
346
  if (response == null){
329
347
  gthis.log.error("connect: cann't read data from tcp-server!" );
330
- gthis.setState('info.connection', { val: false, ack: true });
348
+ gthis.setStateChanged('info.connection', { val: false, ack: true });
331
349
  }else{
332
- gthis.setState('info.connection', { val: true, ack: true });
350
+ gthis.setStateChanged('info.connection', { val: true, ack: true });
333
351
  sv_data = response.toString('ascii'); //Daten in globale variable sv_data ablegen
334
352
  sv_data = sv_data.replace (/[{]+/,''); // "{" entfernen
335
353
  sv_data = sv_data.replace (/[}]+/,''); // "}" entfernen
@@ -381,7 +399,7 @@ class Solarviewdatareader extends utils.Adapter {
381
399
  TKK= Temperatur Wechselrichter */
382
400
 
383
401
  let value = Number(sv_data[10]);
384
- gthis.setStateAsync(sv_prefix + 'current', { val: value, ack: true });
402
+ gthis.setStateChanged(sv_prefix + 'current', { val: value, ack: true });
385
403
  if (sv_prefix == 'pvig.') {
386
404
  if (gthis.config.setCCU == true){
387
405
  const obj = await gthis.findForeignObjectAsync(gthis.config.CCUSystemV);
@@ -395,60 +413,60 @@ class Solarviewdatareader extends utils.Adapter {
395
413
  }
396
414
 
397
415
  value = Number(sv_data[6]);
398
- gthis.setStateAsync(sv_prefix + 'daily', { val: value, ack: true });
416
+ gthis.setStateChanged(sv_prefix + 'daily', { val: value, ack: true });
399
417
 
400
418
  value = Number(sv_data[7]);
401
- gthis.setStateAsync(sv_prefix + 'monthly', { val: value, ack: true });
419
+ gthis.setStateChanged(sv_prefix + 'monthly', { val: value, ack: true });
402
420
 
403
421
  value = Number(sv_data[8]);
404
- gthis.setStateAsync(sv_prefix + 'yearly', { val: value, ack: true });
422
+ gthis.setStateChanged(sv_prefix + 'yearly', { val: value, ack: true });
405
423
 
406
424
  value = Number(sv_data[9]);
407
- gthis.setStateAsync(sv_prefix + 'total', { val: value, ack: true });
425
+ gthis.setStateChanged(sv_prefix + 'total', { val: value, ack: true });
408
426
 
409
427
  const sDate = Number(sv_data[3]) + '-' + aLZ(Number(sv_data[2])) + '-' + aLZ(Number(sv_data[1])) + ' ' + aLZ(Number(sv_data[4])) + ':' + aLZ(Number(sv_data[5]));
410
- gthis.setStateAsync('info.lastUpdate', { val: sDate, ack: true });
428
+ gthis.setStateChanged('info.lastUpdate', { val: sDate, ack: true });
411
429
 
412
430
  if (sv_prefix == 'pvi1.' || sv_prefix == 'pvi2.' || sv_prefix == 'pvi3.' || sv_prefix == 'pvi4.'){
413
431
  value = Number(sv_data[11]);
414
- gthis.setStateAsync(sv_prefix + 'udc', { val: value, ack: true });
432
+ gthis.setStateChanged(sv_prefix + 'udc', { val: value, ack: true });
415
433
  value = Number(sv_data[12]);
416
- gthis.setStateAsync(sv_prefix + 'idc', { val: value, ack: true });
434
+ gthis.setStateChanged(sv_prefix + 'idc', { val: value, ack: true });
417
435
  value = Number(sv_data[13]);
418
- gthis.setStateAsync(sv_prefix + 'udcb', { val: value, ack: true });
436
+ gthis.setStateChanged(sv_prefix + 'udcb', { val: value, ack: true });
419
437
  value = Number(sv_data[14]);
420
- gthis.setStateAsync(sv_prefix + 'idcb', { val: value, ack: true });
438
+ gthis.setStateChanged(sv_prefix + 'idcb', { val: value, ack: true });
421
439
  value = Number(sv_data[15]);
422
- gthis.setStateAsync(sv_prefix + 'udcc', { val: value, ack: true });
440
+ gthis.setStateChanged(sv_prefix + 'udcc', { val: value, ack: true });
423
441
  value = Number(sv_data[16]);
424
- gthis.setStateAsync(sv_prefix + 'idcc', { val: value, ack: true });
442
+ gthis.setStateChanged(sv_prefix + 'idcc', { val: value, ack: true });
425
443
  value = Number(sv_data[17]);
426
- gthis.setStateAsync(sv_prefix + 'udcd', { val: value, ack: true });
444
+ gthis.setStateChanged(sv_prefix + 'udcd', { val: value, ack: true });
427
445
  value = Number(sv_data[18]);
428
- gthis.setStateAsync(sv_prefix + 'idcd', { val: value, ack: true });
446
+ gthis.setStateChanged(sv_prefix + 'idcd', { val: value, ack: true });
429
447
  if (sv_data.length == 27) { //neue Version Solarview
430
448
  value = Number(sv_data[19]);
431
- gthis.setStateAsync(sv_prefix + 'ul1', { val: value, ack: true });
449
+ gthis.setStateChanged(sv_prefix + 'ul1', { val: value, ack: true });
432
450
  value = Number(sv_data[20]);
433
- gthis.setStateAsync(sv_prefix + 'il1', { val: value, ack: true });
451
+ gthis.setStateChanged(sv_prefix + 'il1', { val: value, ack: true });
434
452
  value = Number(sv_data[21]);
435
- gthis.setStateAsync(sv_prefix + 'ul2', { val: value, ack: true });
453
+ gthis.setStateChanged(sv_prefix + 'ul2', { val: value, ack: true });
436
454
  value = Number(sv_data[22]);
437
- gthis.setStateAsync(sv_prefix + 'il2', { val: value, ack: true });
455
+ gthis.setStateChanged(sv_prefix + 'il2', { val: value, ack: true });
438
456
  value = Number(sv_data[23]);
439
- gthis.setStateAsync(sv_prefix + 'ul3', { val: value, ack: true });
457
+ gthis.setStateChanged(sv_prefix + 'ul3', { val: value, ack: true });
440
458
  value = Number(sv_data[24]);
441
- gthis.setStateAsync(sv_prefix + 'il3', { val: value, ack: true });
459
+ gthis.setStateChanged(sv_prefix + 'il3', { val: value, ack: true });
442
460
  value = Number(sv_data[25]);
443
- gthis.setStateAsync(sv_prefix + 'tkk', { val: value, ack: true });
461
+ gthis.setStateChanged(sv_prefix + 'tkk', { val: value, ack: true });
444
462
  }
445
463
  if (sv_data.length === 23) { //alte Version Solarview
446
464
  value = Number(sv_data[19]);
447
- gthis.setStateAsync(sv_prefix + 'ul1', { val: value, ack: true });
465
+ gthis.setStateChanged(sv_prefix + 'ul1', { val: value, ack: true });
448
466
  value = Number(sv_data[20]);
449
- gthis.setStateAsync(sv_prefix + 'il1', { val: value, ack: true });
467
+ gthis.setStateChanged(sv_prefix + 'il1', { val: value, ack: true });
450
468
  value = Number(sv_data[21]);
451
- gthis.setStateAsync(sv_prefix + 'tkk', { val: value, ack: true });
469
+ gthis.setStateChanged(sv_prefix + 'tkk', { val: value, ack: true });
452
470
  }
453
471
  }
454
472
  }else{
@@ -469,7 +487,7 @@ class Solarviewdatareader extends utils.Adapter {
469
487
 
470
488
  conn.on('error', function(err) {
471
489
  gthis.log.error('error: ' + err.message);
472
- gthis.setState('info.connection', { val: false, ack: true });
490
+ gthis.setStateChanged('info.connection', { val: false, ack: true });
473
491
  });
474
492
 
475
493
  conn.on('close', function() {
@@ -484,7 +502,7 @@ class Solarviewdatareader extends utils.Adapter {
484
502
  onUnload(callback) {
485
503
  try {
486
504
  this.log.info('cleaned everything up...');
487
- gthis.setState('info.connection', { val: false, ack: true });
505
+ gthis.setStateChanged('info.connection', { val: false, ack: true });
488
506
  clearInterval(jobSchedule);
489
507
  clearTimeout(to1);
490
508
  clearTimeout(to2);
@@ -554,7 +572,7 @@ class Solarviewdatareader extends utils.Adapter {
554
572
  }
555
573
 
556
574
  // @ts-ignore parent is a valid property on module
557
- if (module.parent) {
575
+ if (require.main !== module) {
558
576
  // Export the constructor in compact mode
559
577
  /**
560
578
  * @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",
3
+ "version": "1.0.6",
4
4
  "description": "Get data from SolarView",
5
5
  "author": {
6
6
  "name": "Achim Fürhoff",
@@ -18,36 +18,34 @@
18
18
  "url": "https://github.com/afuerhoff/ioBroker.solarviewdatareader"
19
19
  },
20
20
  "dependencies": {
21
- "@iobroker/adapter-core": "^2.5.1"
21
+ "@iobroker/adapter-core": "^2.6.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@alcalzone/release-script": "^3.4.1",
25
- "@alcalzone/release-script-plugin-iobroker": "^3.4.1",
26
- "@alcalzone/release-script-plugin-license": "^3.4.1",
27
- "@iobroker/testing": "^2.5.2",
28
- "@types/chai": "^4.3.0",
29
- "@types/chai-as-promised": "^7.1.4",
30
- "@types/gulp": "^4.0.9",
31
- "@types/mocha": "^8.2.3",
32
- "@types/node": "^14.18.0",
33
- "@types/proxyquire": "^1.3.28",
34
- "@types/sinon": "^10.0.6",
35
- "@types/sinon-chai": "^3.2.6",
36
- "chai": "^4.3.4",
24
+ "@alcalzone/release-script": "^3.5.9",
25
+ "@alcalzone/release-script-plugin-iobroker": "^3.5.9",
26
+ "@alcalzone/release-script-plugin-license": "^3.5.9",
27
+ "@iobroker/adapter-dev": "^1.0.0",
28
+ "@iobroker/testing": "^3.0.2",
29
+ "@types/chai": "^4.3.1",
30
+ "@types/chai-as-promised": "^7.1.5",
31
+ "@types/mocha": "^9.1.1",
32
+ "@types/node": "^17.0.40",
33
+ "chai": "^4.3.6",
37
34
  "chai-as-promised": "^7.1.1",
38
- "eslint": "^7.32.0",
39
- "gulp": "^4.0.2",
40
- "hosted-git-info": "^4.0.2",
41
- "mocha": "^8.4.0",
42
- "proxyquire": "^2.1.3",
43
- "sinon": "^10.0.0",
44
- "sinon-chai": "^3.7.0"
35
+ "eslint": "^8.18.0",
36
+ "mocha": "^9.2.2"
45
37
  },
46
38
  "main": "main.js",
39
+ "files": [
40
+ "admin{,/!(src)/**}/!(tsconfig|tsconfig.*).json",
41
+ "admin{,/!(src)/**}/*.{html,css,png,svg,jpg,js}",
42
+ "lib/",
43
+ "www/",
44
+ "io-package.json",
45
+ "LICENSE",
46
+ "main.js"
47
+ ],
47
48
  "scripts": {
48
- "watch:parcel": "parcel admin/src/index.jsx -d admin/build",
49
- "build:parcel": "parcel build admin/src/index.jsx -d admin/build",
50
- "build": "npm run build:parcel",
51
49
  "test:js": "mocha --config test/mocharc.custom.json \"{!(node_modules|test)/**/*.test.js,*.test.js,test/**/test!(PackageFiles|Startup).js}\"",
52
50
  "test:package": "mocha test/package --exit",
53
51
  "test:unit": "mocha test/unit --exit",
@@ -56,7 +54,8 @@
56
54
  "aftest": "mocha test/af_test.js --exit",
57
55
  "check": "tsc --noEmit -p tsconfig.check.json",
58
56
  "lint": "eslint --ext .js,.jsx",
59
- "release": "release-script"
57
+ "release": "release-script",
58
+ "translate": "translate-adapter"
60
59
  },
61
60
  "bugs": {
62
61
  "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.
@@ -1,155 +0,0 @@
1
- name: Test and Release
2
-
3
- # Run this job on all pushes and pull requests
4
- # as well as tags with a semantic version
5
- on:
6
- push:
7
- branches:
8
- - "*"
9
- tags:
10
- # normal versions
11
- - "v[0-9]+.[0-9]+.[0-9]+"
12
- # pre-releases
13
- - "v[0-9]+.[0-9]+.[0-9]+-**"
14
- pull_request: {}
15
-
16
- jobs:
17
- # Performs quick checks before the expensive test runs
18
- check-and-lint:
19
- if: contains(github.event.head_commit.message, '[skip ci]') == false
20
-
21
- runs-on: ubuntu-latest
22
-
23
- strategy:
24
- matrix:
25
- node-version: [14.x]
26
-
27
- steps:
28
- - name: Checkout code
29
- uses: actions/checkout@v2
30
-
31
- - name: Use Node.js ${{ matrix.node-version }}
32
- uses: actions/setup-node@v1
33
- with:
34
- node-version: ${{ matrix.node-version }}
35
-
36
- - name: Install Dependencies
37
- run: npm ci
38
-
39
- - name: Lint source code
40
- run: npm run lint
41
- - name: Test package files
42
- run: npm run test:package
43
-
44
- # Runs adapter tests on all supported node versions and OSes
45
- adapter-tests:
46
- if: contains(github.event.head_commit.message, '[skip ci]') == false
47
-
48
- needs: [check-and-lint]
49
-
50
- runs-on: ${{ matrix.os }}
51
- strategy:
52
- matrix:
53
- node-version: [12.x, 14.x, 16.x]
54
- os: [ubuntu-latest, windows-latest, macos-latest]
55
-
56
- steps:
57
- - name: Checkout code
58
- uses: actions/checkout@v2
59
-
60
- - name: Use Node.js ${{ matrix.node-version }}
61
- uses: actions/setup-node@v1
62
- with:
63
- node-version: ${{ matrix.node-version }}
64
-
65
- - name: Install Dependencies
66
- run: npm ci
67
-
68
- - name: Run unit tests
69
- run: npm run test:unit
70
-
71
- - name: Run integration tests (unix only)
72
- if: startsWith(runner.OS, 'windows') == false
73
- run: DEBUG=testing:* npm run test:integration
74
-
75
- - name: Run integration tests (windows only)
76
- if: startsWith(runner.OS, 'windows')
77
- run: set DEBUG=testing:* & npm run test:integration
78
-
79
- # TODO: To enable automatic npm releases, create a token on npmjs.org
80
- # Enter this token as a GitHub secret (with name NPM_TOKEN) in the repository options
81
- # Then uncomment the following block:
82
-
83
- # Deploys the final package to NPM
84
- deploy:
85
- needs: [adapter-tests]
86
-
87
- # Trigger this step only when a commit on any branch is tagged with a version number
88
- if: |
89
- contains(github.event.head_commit.message, '[skip ci]') == false &&
90
- github.event_name == 'push' &&
91
- startsWith(github.ref, 'refs/tags/v')
92
-
93
- runs-on: ubuntu-latest
94
- strategy:
95
- matrix:
96
- node-version: [14.x]
97
-
98
- steps:
99
- - name: Checkout code
100
- uses: actions/checkout@v2
101
-
102
- - name: Use Node.js ${{ matrix.node-version }}
103
- uses: actions/setup-node@v1
104
- with:
105
- node-version: ${{ matrix.node-version }}
106
-
107
- - name: Extract the version and commit body from the tag
108
- id: extract_release
109
- # The body may be multiline, therefore newlines and % need to be escaped
110
- run: |
111
- VERSION="${{ github.ref }}"
112
- VERSION=${VERSION##*/v}
113
- echo "::set-output name=VERSION::$VERSION"
114
- BODY=$(git show -s --format=%b)
115
- BODY="${BODY//'%'/'%25'}"
116
- BODY="${BODY//$'\n'/'%0A'}"
117
- BODY="${BODY//$'\r'/'%0D'}"
118
- echo "::set-output name=BODY::$BODY"
119
-
120
- - name: Publish package to npm
121
- run: |
122
- npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}
123
- npm whoami
124
- npm publish
125
-
126
- - name: Create Github Release
127
- uses: actions/create-release@v1
128
- env:
129
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
130
- with:
131
- tag_name: ${{ github.ref }}
132
- release_name: Release v${{ steps.extract_release.outputs.VERSION }}
133
- draft: false
134
- # Prerelease versions create prereleases on Github
135
- prerelease: ${{ contains(steps.extract_release.outputs.VERSION, '-') }}
136
- body: ${{ steps.extract_release.outputs.BODY }}
137
-
138
- # # When using Sentry for error reporting, Sentry could be informed about new releases
139
- # # To enable create a API-Token in Sentry (User settings, API keys)
140
- # # Enter this token as a GitHub secret (with name SENTRY_AUTH_TOKEN) in the repository options
141
- # # Then uncomment and customize the following block:
142
- # #- name: Notify Sentry.io about the release
143
- # # run: |
144
- # # npm i -g @sentry/cli
145
- # # export SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
146
- # # export SENTRY_URL=https://sentry.iobroker.net
147
- # # export SENTRY_ORG=iobroker
148
- # # export SENTRY_PROJECT=iobroker-fb-checkpresence
149
- # # export SENTRY_VERSION=iobroker.fb-checkpresence@${{ steps.extract_release.outputs.VERSION }}
150
- # # sentry-cli releases new $SENTRY_VERSION
151
- # # sentry-cli releases finalize $SENTRY_VERSION
152
- # # # Add the following line BEFORE finalize if repositories are connected in Sentry
153
- # # #sentry-cli releases set-commits $SENTRY_VERSION --auto
154
- # # # Add the following line BEFORE finalize if sourcemap uploads are needed
155
- # # #sentry-cli releases files $SENTRY_VERSION upload-sourcemaps build/
@@ -1,10 +0,0 @@
1
- {
2
- "dry": false,
3
- "addPlaceholder": true,
4
- "verbose": true,
5
- "all": false,
6
- "plugins": ["iobroker", "license"],
7
- "exec": {
8
- "before_commit": "echo Hello World!"
9
- }
10
- }
package/CHANGELOG_OLD.md DELETED
@@ -1,21 +0,0 @@
1
- # Older changes
2
- ## 0.2.0
3
- * (afuerhoff) Error handling optimized, self consumption meter implemented
4
-
5
- ## 0.1.0
6
- * (afuerhoff) optimizations for adding to latest repository
7
-
8
- ## 0.0.5
9
- * (afuerhoff) Code optimized, unload optimized, documentation added
10
-
11
- ## 0.0.4
12
- * (afuerhoff) Objects, Telnet client and checksum calculation changed
13
-
14
- ## 0.0.3
15
- * (afuerhoff) inverter selection added
16
-
17
- ## 0.0.2
18
- * (afuerhoff) test version
19
-
20
- ## 0.0.1
21
- * (afuerhoff) initial release
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/gulp.sh DELETED
@@ -1,3 +0,0 @@
1
- pwd
2
- #cd /opt/iobroker/node_modules/iobroker.fb-checkpresence/
3
- gulp translateAndUpdateWordsJS
package/scripts/upload.sh DELETED
@@ -1 +0,0 @@
1
- /opt/iobroker/iobroker upload solarviewdatareader