iobroker.solarviewdatareader 0.2.1 → 1.0.3

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.
File without changes
@@ -0,0 +1,155 @@
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/
@@ -0,0 +1,10 @@
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
+ }
@@ -0,0 +1,21 @@
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/LICENSE CHANGED
@@ -1,7 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 Achim Fürhoff <achim.fuerhoff@outlook.de>
4
- Copyright (c) 2019 Achim Fürhoff
3
+ Copyright (c) 2019-2021 Achim Fürhoff <achim.fuerhoff@outlook.de>
5
4
 
6
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,16 +1,15 @@
1
1
  ![Logo](admin/solarviewdatareader.png)
2
2
  # ioBroker.solarviewdatareader
3
3
 
4
- ![Number of Installations](http://iobroker.live/badges/solarviewdatareader-installed.svg)
5
- ![Number of Installations](http://iobroker.live/badges/solarviewdatareader-stable.svg)
6
- [![NPM version](http://img.shields.io/npm/v/iobroker.solarviewdatareader.svg)](https://www.npmjs.com/package/iobroker.solarviewdatareader)
4
+ [![NPM version](https://img.shields.io/npm/v/iobroker.solarviewdatareader.svg)](https://www.npmjs.com/package/iobroker.solarviewdatareader)
7
5
  [![Downloads](https://img.shields.io/npm/dm/iobroker.solarviewdatareader.svg)](https://www.npmjs.com/package/iobroker.solarviewdatareader)
8
- [![Dependency Status](https://img.shields.io/david/afuerhoff/iobroker.solarviewdatareader.svg)](https://david-dm.org/afuerhoff/iobroker.solarviewdatareader)
6
+ ![Number of Installations (latest)](https://iobroker.live/badges/solarviewdatareader-installed.svg)
7
+ ![Number of Installations (stable)](https://iobroker.live/badges/solarviewdatareader-stable.svg)
9
8
  [![Known Vulnerabilities](https://snyk.io/test/github/afuerhoff/ioBroker.solarviewdatareader/badge.svg)](https://snyk.io/test/github/afuerhoff/ioBroker.solarviewdatareader)
10
9
 
11
10
  [![NPM](https://nodei.co/npm/iobroker.solarviewdatareader.png?downloads=true)](https://nodei.co/npm/iobroker.solarviewdatareader/)
12
11
 
13
- **Tests:**: [![Travis-CI](http://img.shields.io/travis/afuerhoff/ioBroker.solarviewdatareader/master.svg)](https://travis-ci.org/afuerhoff/ioBroker.solarviewdatareader)
12
+ **Tests:** ![Test and Release](https://github.com/afuerhoff/ioBroker.solarviewdatareader/workflows/Test%20and%20Release/badge.svg)
14
13
 
15
14
  ## solarviewdatareader adapter for ioBroker
16
15
 
@@ -21,49 +20,73 @@ Here you can find additional infos about Solarview: https://www.solarview.info/s
21
20
  ## Configuration
22
21
 
23
22
  ### IP address, Port
24
- To get the data from the datalogger you must enter the ip-address and the port. The standard port is 15000. Please refer to the Solarview documentation.
23
+ To get the data from the datalogger you must enter the ip-address and the port from your solarview TCP server.
24
+ The standard port is 15000. Please refer to the Solarview documentation https://www.solarview.info/solarlogger.aspx.
25
25
 
26
26
  ### D0 converter
27
27
  If you have a D0 converter connected to the Solarview data logger you can enable this option.
28
+ For questions please refer to the Solarview documentation.
28
29
 
29
30
  ### Self consumption meter sum and 1 to 4
30
31
  If you have a S0 meter, you can enable this option.
31
32
  You can have up to 4 self consumption meters and the sum from all meters.
33
+ For questions please refer to the Solarview documentation.
32
34
 
33
35
  ### Inverter 1 to 4
34
- Every inverter you can enable separately.
36
+ Every inverter you can enable separately.
37
+ For questions please refer to the Solarview documentation.
35
38
 
36
39
  ### Interval, interval start, interval end
37
- Here you can configure the time range and the interval.
40
+ Here you can configure the time range and the interval. The time range for 24h is 00:00 to 23:59.
41
+ Not 00:00 to 00:00.
38
42
 
39
43
  ### Set system variable CCU, System variable
40
44
  This ist a special feature for the homematic CCU. You can define a system variable in the CCU.
41
45
  In this system variable the actual PAC value is saved.
46
+ You have to fill in the ioBroker state for that system variable -> **e.g. "hm-rega.0.12345"**
47
+
48
+ ### Created states
49
+ #### pvig, pvi1..4, d0supply, d0consumption
50
+ daily = daily yield (kWh)
51
+ montly = monthly yield (kWh)
52
+ yearly = yearly yield (kWh)
53
+ total = total yield (kWh)
54
+ current = generator power in W
55
+ UDC, UDCB, UDCC, UDCD = generator voltages in volt per MPP-Tracker
56
+ IDC, IDCB, IDCC, IDCD = generator current in ampere per MPP-Tracker
57
+ UL1, IL1 = mains voltage, mains power phase 1
58
+ UL2, IL2 = mains voltage, mains power phase 2
59
+ UL3, IL3 = mains voltage, mains power phase 3
60
+ TKK= Temperature inverter
42
61
 
43
62
  ## Changelog
63
+ <!--
64
+ Placeholder for the next version (at the beginning of the line):
65
+ ### __WORK IN PROGRESS__
66
+ -->
67
+ ### 1.0.3 (2021-12-08)
68
+ * (afuerhoff) dependencies updated
69
+
70
+ ### 1.0.2 (2021-05-07)
71
+ * (afuerhoff) node.js 14 and 16 compatibilty
72
+ * (afuerhoff) dependencies updated
73
+
74
+ ### 1.0.1 (2021-05-01)
75
+ * (afuerhoff) changes due to js-controller 3.3.x
76
+
77
+ ### 1.0.0 (2021-04-25)
78
+ * (afuerhoff) dependencies updated
79
+ * (afuerhoff) documentation changed
80
+ * (afuerhoff) minor changes
81
+ * (afuerhoff) due to stable state version set to 1.0.0
44
82
 
45
83
  ### 0.2.1
46
- * (Achim Fürhoff) self consumption meter optimized
47
- ### 0.2.0
48
- * (Achim Fürhoff) Error handling optimized, self consumption meter implemented
49
- ### 0.1.0
50
- * (Achim Fürhoff) optimizations for adding to latest repository
51
- ### 0.0.5
52
- * (Achim Fürhoff) Code optimized, unload optimized, documentation added
53
- ### 0.0.4
54
- * (Achim Fürhoff) Objects, Telnet client and checksum calculation changed
55
- ### 0.0.3
56
- * (Achim Fürhoff) inverter selection added
57
- ### 0.0.2
58
- * (Achim Fürhoff) test version
59
- ### 0.0.1
60
- * (Achim Fürhoff) initial release
84
+ * (afuerhoff) self consumption meter optimized
61
85
 
62
86
  ## License
63
87
  MIT License
64
88
 
65
- Copyright (c) 2020 Achim Fürhoff <achim.fuerhoff@outlook.de>
66
- Copyright (c) 2019 Achim Fürhoff
89
+ Copyright (c) 2019-2021 Achim Fürhoff <achim.fuerhoff@outlook.de>
67
90
 
68
91
  Permission is hereby granted, free of charge, to any person obtaining a copy
69
92
  of this software and associated documentation files (the "Software"), to deal
package/admin/admin.d.ts CHANGED
File without changes
@@ -70,6 +70,7 @@
70
70
  };
71
71
  var instances = M.Timepicker.init(elems, opt);
72
72
  });
73
+
73
74
  </script>
74
75
 
75
76
  </head>
@@ -107,7 +108,7 @@
107
108
  </div>
108
109
  <div class="col s3 input-field tooltip">
109
110
  <input type="checkbox" class="value" id="d0converter"/>
110
- <label for="d0converter" class="translate black-text">d0-converter</label>
111
+ <label for="d0converter" class="translate">d0-converter</label>
111
112
  <span class="tooltiptext translate">Please enter if you have a d0-converter</span>
112
113
  </div>
113
114
  </div>
@@ -169,12 +170,12 @@
169
170
  <div class="col s2 input-field tooltip">
170
171
  <input type="text" class="timepicker value" id="intervalstart"/>
171
172
  <label for="intervalstart" class="translate">Interval start</label>
172
- <span class="tooltiptext translate">Please enter the interval start (00:00)</span>
173
+ <span class="tooltiptext translate">Please enter the interval start (e.g. 00:00)</span>
173
174
  </div>
174
175
  <div class="col s2 input-field tooltip">
175
176
  <input type="text" class="timepicker value" id="intervalend"/>
176
177
  <label for="intervalend" class="translate">Interval end</label>
177
- <span class="tooltiptext translate">Please enter the interval end (00:00)</span>
178
+ <span class="tooltiptext translate">Please enter the interval end (e.g. 23:59)</span>
178
179
  </div>
179
180
  </div>
180
181
  <div class="row">
@@ -186,7 +187,7 @@
186
187
  <div class="col s4 input-field tooltip">
187
188
  <input type="text" class="value" id="CCUSystemV"/>
188
189
  <label for="CCUSystemV" class="translate">System variable</label>
189
- <span class="tooltiptext translate">Please enter the CCU system variable</span>
190
+ <span class="tooltiptext translate">System variable e.g. hm-rega.0.12345</span>
190
191
  </div>
191
192
  </div>
192
193
  </div>
File without changes
package/admin/style.css CHANGED
File without changes
package/admin/words.js CHANGED
@@ -27,8 +27,6 @@ systemDictionary = {
27
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系统变量"},
28
28
  "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
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 interval end (00:00)": { "en": "Please enter the interval end (00:00)", "de": "Bitte geben Sie das Intervallende ein (00:00)", "ru": "Пожалуйста, введите конец интервала (00:00)", "pt": "Por favor insira o final do intervalo (00:00)", "nl": "Voer het interval in (00:00)", "fr": "S'il vous plaît entrer la fin de l'intervalle (00:00)", "it": "Si prega di inserire l'intervallo fine (00:00)", "es": "Por favor ingrese el final del intervalo (00:00)", "pl": "Wprowadź koniec interwału (00:00)", "zh-cn": "请输入间隔结束(00:00)"},
31
- "Please enter the interval start (00:00)": { "en": "Please enter the interval start (00:00)", "de": "Bitte geben Sie den Intervallstart ein (00:00)", "ru": "Пожалуйста, введите интервал начала (00:00)", "pt": "Por favor insira o início do intervalo (00:00)", "nl": "Voer de interval start in (00:00)", "fr": "S'il vous plaît entrer l'intervalle début (00:00)", "it": "Si prega di inserire l'intervallo di inizio (00:00)", "es": "Por favor ingrese el intervalo de inicio (00:00)", "pl": "Wprowadź początek interwału (00:00)", "zh-cn": "请输入间隔开始(00:00)"},
32
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": "请输入端口"},
33
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"},
34
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"},
@@ -41,4 +39,6 @@ systemDictionary = {
41
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": "系统变量"},
42
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": "轮询间隔(以分钟为单位)"},
43
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)"},
44
44
  };