atrea_control 1.3.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +1 -1
- data/CHANGELOG.md +26 -0
- data/Gemfile.lock +9 -5
- data/README.md +50 -16
- data/atrea_control.gemspec +15 -11
- data/config/locales/cs.yml +269 -0
- data/config/locales/de.yml +269 -0
- data/config/locales/en.yml +269 -0
- data/lib/atrea_control/duplex/login.rb +120 -0
- data/lib/atrea_control/duplex/request.rb +30 -0
- data/lib/atrea_control/duplex/unit.rb +100 -0
- data/lib/atrea_control/duplex/user_ctrl.rb +138 -0
- data/lib/atrea_control/duplex.rb +6 -219
- data/lib/atrea_control/logger.rb +11 -0
- data/lib/atrea_control/sensor_parser.rb +68 -0
- data/lib/atrea_control/version.rb +1 -1
- data/lib/atrea_control.rb +6 -11
- metadata +26 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a74f7162054ee182984e730f2d1459b911dfb8776300c2b568554be607a1add
|
4
|
+
data.tar.gz: 620367c6b128607aec63a52680bfd9b94376684ed0fa06f80b0f77032fc23e4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2d690b2bdac464a3b37015c54a1b326fbd6b21c6f67eb68cfb0e708e25018eee5e24ed8168796e6b051604f7ca06dc74eae5b5d2561280b538a09020807b65a
|
7
|
+
data.tar.gz: ccb084a5a96f23ae536068782bde603e23222949f03780493f868fa3f260fa85cb32daab8d5cac8a61cdc00bd57deacb9405910fcde8fdfa9fc5dec900bf2ec1
|
data/.github/workflows/main.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,30 @@
|
|
1
1
|
## [Unreleased]
|
2
|
+
|
3
|
+
## [2.0.2] - 2022-01-20
|
4
|
+
### Added
|
5
|
+
- debug unit values
|
6
|
+
- try token-based login (without success)
|
7
|
+
|
8
|
+
## [2.0.1] - 2021-12-26
|
9
|
+
### Fixed
|
10
|
+
- write correct arguments
|
11
|
+
|
12
|
+
## [2.0.0] - 2021-12-26
|
13
|
+
### Changed
|
14
|
+
- refactored codebase to more readable classes
|
15
|
+
- selenium used only for login and then close => obtain SID (and user with unit)
|
16
|
+
- login waiting mechanism
|
17
|
+
### Added
|
18
|
+
- found way how to change mode & power (tell unit to change)
|
19
|
+
|
20
|
+
## [1.4.1] - 2021-12-18
|
21
|
+
### Changed
|
22
|
+
- little refactor
|
23
|
+
|
24
|
+
## [1.4.0] - 2021-12-12
|
25
|
+
### Changed
|
26
|
+
- founded way to get config and data from Atrea server
|
27
|
+
|
2
28
|
## [1.3.1] - 2021-12-11
|
3
29
|
### Changed
|
4
30
|
- version of selenium
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
atrea_control (
|
4
|
+
atrea_control (2.0.1)
|
5
|
+
i18n (~> 1.8)
|
5
6
|
nokogiri (~> 1.12)
|
6
7
|
rest-client (~> 2.1)
|
7
8
|
selenium-webdriver (~> 4.1)
|
@@ -14,9 +15,10 @@ GEM
|
|
14
15
|
ast (2.4.2)
|
15
16
|
childprocess (4.1.0)
|
16
17
|
coderay (1.1.3)
|
18
|
+
concurrent-ruby (1.1.9)
|
17
19
|
crack (0.4.5)
|
18
20
|
rexml
|
19
|
-
diff-lcs (1.
|
21
|
+
diff-lcs (1.5.0)
|
20
22
|
docile (1.4.0)
|
21
23
|
domain_name (0.5.20190701)
|
22
24
|
unf (>= 0.0.5, < 1.0.0)
|
@@ -24,6 +26,8 @@ GEM
|
|
24
26
|
http-accept (1.7.0)
|
25
27
|
http-cookie (1.0.4)
|
26
28
|
domain_name (~> 0.5)
|
29
|
+
i18n (1.8.11)
|
30
|
+
concurrent-ruby (~> 1.0)
|
27
31
|
method_source (1.0.0)
|
28
32
|
mime-types (3.4.1)
|
29
33
|
mime-types-data (~> 3.2015)
|
@@ -63,16 +67,16 @@ GEM
|
|
63
67
|
diff-lcs (>= 1.2.0, < 2.0)
|
64
68
|
rspec-support (~> 3.10.0)
|
65
69
|
rspec-support (3.10.3)
|
66
|
-
rubocop (1.
|
70
|
+
rubocop (1.24.0)
|
67
71
|
parallel (~> 1.10)
|
68
72
|
parser (>= 3.0.0.0)
|
69
73
|
rainbow (>= 2.2.2, < 4.0)
|
70
74
|
regexp_parser (>= 1.8, < 3.0)
|
71
75
|
rexml
|
72
|
-
rubocop-ast (>= 1.
|
76
|
+
rubocop-ast (>= 1.15.0, < 2.0)
|
73
77
|
ruby-progressbar (~> 1.7)
|
74
78
|
unicode-display_width (>= 1.4.0, < 3.0)
|
75
|
-
rubocop-ast (1.
|
79
|
+
rubocop-ast (1.15.0)
|
76
80
|
parser (>= 3.0.1.1)
|
77
81
|
rubocop-rspec (2.6.0)
|
78
82
|
rubocop (~> 1.19)
|
data/README.md
CHANGED
@@ -10,7 +10,9 @@ This gem provide simple DSL by parsing content of https://control.atrea.eu with
|
|
10
10
|
* temperature
|
11
11
|
* fan power
|
12
12
|
* power mode
|
13
|
-
|
13
|
+
* allow change
|
14
|
+
* power
|
15
|
+
* mode
|
14
16
|
|
15
17
|
## Installation
|
16
18
|
|
@@ -30,27 +32,59 @@ Or install it yourself as:
|
|
30
32
|
|
31
33
|
## Usage
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
Default sensor map:
|
35
|
+
At the begin you need obtain `user_id`, `unit_id` and `sid` (auth token). For this use "Login"
|
36
36
|
```ruby
|
37
|
-
|
38
|
-
|
39
|
-
outdoor_temperature: "I10208",
|
40
|
-
current_power: "H10704",
|
41
|
-
current_mode: "H10705",
|
42
|
-
}
|
43
|
-
end
|
37
|
+
tokens = AtreaControl::Duplex::Login.user_tokens login: "myhome", password: "sup3r-S3CR3T-kocicka"
|
38
|
+
tokens # => { user_id: "1234", unit_id: "85425324672", sid: 4012 }
|
44
39
|
```
|
40
|
+
I recommend to store then somewhere...
|
41
|
+
Then you can call Unit for data...
|
42
|
+
|
45
43
|
Example usage:
|
46
44
|
```ruby
|
47
|
-
control = AtreaControl::Duplex.new
|
48
|
-
control.
|
49
|
-
control.
|
50
|
-
|
45
|
+
control = AtreaControl::Duplex::Unit.new user_id: "1234", unit_id: "85425324672", sid: 4012
|
46
|
+
control.values # => { current_power: 88.0, current_mode: "CO2" }
|
47
|
+
control.power # => 88.0
|
48
|
+
```
|
49
|
+
### Dig deeper
|
50
|
+
`AtreaControl::Duplex::Unit` expect optional argument `user_ctrl` which should be object respond to
|
51
|
+
|
52
|
+
`name` (String) = Name of unit
|
53
|
+
`sensors` (Hash) = Map of sensors, for example: `{ outdoor_temperature: "HI10208", current_power: "H10704" }`
|
54
|
+
`modes` (Hash) = Is a map of "changable" modes - in unit its something like "builtin?" modes. They are translated by unit lang - `{ "0" => "Vypnuto", "1" => "Automat" }`
|
55
|
+
`user_modes` (Hash) = Is a map user specific modes, based on home switches / devices (D1, D2, D3, IN1, IN2 ...). They are translated by user texts - `{ "D1" => "Koupelna", "D2" => "CO2", "IN1" => "ovladač" }`
|
56
|
+
|
57
|
+
__Please check [lib/atrea_control/duplex/user_ctrl.rb](./lib/atrea_control/duplex/user_ctrl.rb) for more details !__
|
58
|
+
|
59
|
+
## Development / TODO
|
60
|
+
Login is currently done by selenium - fill login form.
|
61
|
+
I found that Atre submit form to BE, generate some "empty" HTML and JS which onLoad start doing request to queue for "login".
|
62
|
+
|
63
|
+
Re-login user, add login procedure into queue:
|
64
|
+
```bash
|
65
|
+
curl -X POST -d "comm=config%2Flogin.cgi" "https://control.atrea.eu/apps/rd5Control/handle.php?action=unitLogin&user=XXXX&unit=NNNNNNN&table=userUnits&idPwd=YYYYYYY&NFP"
|
66
|
+
```
|
67
|
+
Response is time in seconds when login will ready:
|
68
|
+
```xml
|
69
|
+
<root><sended time="264"/></root>
|
70
|
+
```
|
71
|
+
Based it su shown countdown ...
|
72
|
+
|
73
|
+
|
74
|
+
Request for current queue status
|
75
|
+
```bash
|
76
|
+
curl 'https://control.atrea.eu/apps/rd5Control/handle.php?Sync=1&action=unitQuery&query=loged&user=XXXX&unit=NNNNNNN'
|
77
|
+
```
|
78
|
+
if queue is processed:
|
79
|
+
```xml
|
80
|
+
<root><login uconn="16395889" sid="010101" ver="3001009"/></root>
|
81
|
+
```
|
82
|
+
else
|
83
|
+
```xml
|
84
|
+
<root><login uconn="16390480" sid="0"/></root>
|
51
85
|
```
|
52
86
|
|
53
|
-
|
87
|
+
Goal is to obtain "SID".
|
54
88
|
|
55
89
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
56
90
|
|
data/atrea_control.gemspec
CHANGED
@@ -3,14 +3,14 @@
|
|
3
3
|
require_relative "lib/atrea_control/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.authors
|
9
|
-
spec.email
|
10
|
-
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
spec.homepage
|
6
|
+
spec.name = "atrea_control"
|
7
|
+
spec.version = AtreaControl::VERSION
|
8
|
+
spec.authors = ["Lukáš Pokorný"]
|
9
|
+
spec.email = ["pokorny@luk4s.cz"]
|
10
|
+
|
11
|
+
spec.summary = "Get data control.atrea.eu"
|
12
|
+
spec.description = "Read data from web controller of RD5 duplex by Atrea."
|
13
|
+
spec.homepage = "https://github.com/luk4s/atrea_control"
|
14
14
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.2")
|
15
15
|
|
16
16
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
@@ -18,14 +18,16 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.metadata["homepage_uri"] = spec.homepage
|
19
19
|
spec.metadata["source_code_uri"] = "https://github.com/luk4s/atrea_control"
|
20
20
|
spec.metadata["changelog_uri"] = "https://github.com/luk4s/atrea_control/CHANGELOG.md"
|
21
|
-
|
21
|
+
spec.metadata = {
|
22
|
+
"rubygems_mfa_required" => "true",
|
23
|
+
}
|
22
24
|
# Specify which files should be added to the gem when it is released.
|
23
25
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
24
26
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
25
27
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
26
28
|
end
|
27
|
-
spec.bindir
|
28
|
-
spec.executables
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
29
31
|
spec.require_paths = ["lib"]
|
30
32
|
|
31
33
|
# Uncomment to register a new dependency of your gem
|
@@ -34,7 +36,9 @@ Gem::Specification.new do |spec|
|
|
34
36
|
# For more information and examples about making a new gem, checkout our
|
35
37
|
# guide at: https://bundler.io/guides/creating_gem.html
|
36
38
|
|
39
|
+
spec.add_dependency "i18n", "~> 1.8"
|
37
40
|
spec.add_dependency "nokogiri", "~> 1.12"
|
38
41
|
spec.add_dependency "rest-client", "~> 2.1"
|
39
42
|
spec.add_dependency "selenium-webdriver", "~> 4.1"
|
43
|
+
|
40
44
|
end
|
@@ -0,0 +1,269 @@
|
|
1
|
+
---
|
2
|
+
cs:
|
3
|
+
mainTitle: Váš specialista na rekuperaci tepla a ekonomii vzduchotechnických systémů
|
4
|
+
save: Uložit
|
5
|
+
cancel: Storno
|
6
|
+
copy: Kopírovat
|
7
|
+
refresh: Obnovit
|
8
|
+
change: Změnit
|
9
|
+
pleaseWait: Prosím, čekejte ...
|
10
|
+
backToHome: Návrat na hlavní stranu
|
11
|
+
mainPage: Hlavní strana
|
12
|
+
serviceMenu: Servisní menu
|
13
|
+
activeFrom: Aktivní od
|
14
|
+
hours: Hodiny
|
15
|
+
minutes: Minuty
|
16
|
+
record: Záznam
|
17
|
+
allowed: Povoleno
|
18
|
+
netSetup: Nastavení sítě
|
19
|
+
getFromDHCP: Načíst hodnoty ze serveru DHCP
|
20
|
+
useNextValues: Použít následující hodnoty
|
21
|
+
addressIP: IP adresa
|
22
|
+
subnetMask: Maska podsítě
|
23
|
+
defaultGW: Výchozí brána
|
24
|
+
serverDNS: DNS server
|
25
|
+
FTPsetup: Nastavení hesla FTP serveru
|
26
|
+
passwordOld: Původní heslo
|
27
|
+
passwordNew: Nové heslo
|
28
|
+
passwordConfirm: Potvrzení nového hesla
|
29
|
+
airCond: Vzduchotechnika
|
30
|
+
airCondSetup: Nastavení vzduchotechniky
|
31
|
+
temperature: Teplota
|
32
|
+
tempSetup: Nastavení teploty
|
33
|
+
notInDemo: V demo verzi není podporováno
|
34
|
+
thisTimeExist: Zadaný čas již existuje
|
35
|
+
serviceSetup: Servisní nastavení
|
36
|
+
activeAlarms: Aktivní alarmy
|
37
|
+
alarmHistory: Historie alarmů
|
38
|
+
unitStarted: Start jednotky
|
39
|
+
active: Aktivní
|
40
|
+
noAlarmDefined: Není definován žádný alarm
|
41
|
+
noAlarmDetected: Není detekován žádný alarm
|
42
|
+
values: Hodnoty
|
43
|
+
parameters: Parametry
|
44
|
+
badInput: Chybné zadání
|
45
|
+
allowedRange: Povolený rozsah
|
46
|
+
start: Start
|
47
|
+
stop: Stop
|
48
|
+
text: Text
|
49
|
+
digiVer: Verze DIGI modulu
|
50
|
+
rdVer: Verze RD modulu
|
51
|
+
unitAddress: Adresa jednotky
|
52
|
+
currentMode: Aktuální mód provozu
|
53
|
+
damageWarning: Pozor nastavením těchto parametrů lze způsobit neadekvátní reakci
|
54
|
+
větrací jednotky, což může zapříčinit její poruchu či poškození. Za neuvážené
|
55
|
+
změny v nastavení výstupů nenese výrobce zařízení žádnou zodpovědnost!
|
56
|
+
parameter: Parametr
|
57
|
+
value: Hodnota
|
58
|
+
minimum: Minimum
|
59
|
+
maximum: Maximum
|
60
|
+
defValue: Výchozí hodnota
|
61
|
+
warning: Varování
|
62
|
+
error: Nastav
|
63
|
+
accessPrompt: Kontrola přístupu, zadejte přístupový kód
|
64
|
+
accessDenied: Přístup odepřen, chybný kód nebo příliš mnoho přihlášených!
|
65
|
+
swVer: Verze software
|
66
|
+
orderNum: Číslo zakázky
|
67
|
+
userSetup: Uživatelské nastavení
|
68
|
+
switchman: Manuál
|
69
|
+
valueOutOfRange: Hodnota leží mimo rozsah
|
70
|
+
fwStep1: Krok 1. - Uložení nastavení
|
71
|
+
fwStep2: Krok 2. - Update firmware
|
72
|
+
fwSTep3: Krok 3. - Obnova nastavení
|
73
|
+
saveSettings: Uložit nastavení
|
74
|
+
updateIt: Provést update
|
75
|
+
restoreSettings: Obnovit nastavení
|
76
|
+
parsNotSaved: Parametry nebyly dosud uloženy
|
77
|
+
errLengthCoo: Chyba dat, použijte jiný prohlížeč
|
78
|
+
parsSaved: Parametry uloženy
|
79
|
+
updateInProcess: Probíhá update, prosím čekejte
|
80
|
+
updateNoFile: Nebyl nalezen žádný soubor pro update
|
81
|
+
updateSucess: UPDATE dokončen
|
82
|
+
updateError: Chyba při updatu
|
83
|
+
manControlOn: Ruční řízení povoleno
|
84
|
+
manControlOff: Ruční řízení neaktivní
|
85
|
+
notConnected: Nepřipojeno
|
86
|
+
PgFW_FS1: Obnova/Záloha nastavení
|
87
|
+
PgFW_S1: Provedení zálohy servisního nastavení
|
88
|
+
PgFW_SB1: Zálohovat
|
89
|
+
PgFW_S2: Obnova servisního nastavení ze zálohy
|
90
|
+
PgFW_SB2: Obnovit
|
91
|
+
PgFW_S3: Obnova nastavení do výrobních hodnot
|
92
|
+
PgFW_SB3: Obnovit
|
93
|
+
PgFW_FS2: Update
|
94
|
+
PgFW_U2: Stažení aplikace pro update
|
95
|
+
PgFW_UB1: Otevřít
|
96
|
+
PgFW_SB1c: 'Přejete si vytvořit zálohu servisního nastavení? '
|
97
|
+
PgFW_SB2c: Opravdu si přejete obnovit servisní nastavení ze zálohy?
|
98
|
+
PgFW_SB3c: Opravdu si přejete obnovit výrobní nastavení?
|
99
|
+
fwUnit: FW Jednotky
|
100
|
+
fwAvail: Dostupný FW
|
101
|
+
restInProgress: Probíhá obnova nastavení
|
102
|
+
restart: Restart
|
103
|
+
activate: Aktivovat
|
104
|
+
deactivate: Deaktivovat
|
105
|
+
badTimeZone: Nesprávné časové pásmo
|
106
|
+
badTime: Nesprávné nastavení času
|
107
|
+
setByPC: Nastavit podle PC
|
108
|
+
msgFindAddr: Zadejte novou adresu jednotky.
|
109
|
+
dtFilterChange: Datum výměny filtru
|
110
|
+
confirmFilter: Potvrdit výměnu
|
111
|
+
confFilterQuest: Opravdu byl filtr vyměněn?
|
112
|
+
'off': Vypnuto
|
113
|
+
'on': Zapnuto
|
114
|
+
dayOfWeek: Den v týdnu
|
115
|
+
monday: Pondělí
|
116
|
+
tuesday: Úterý
|
117
|
+
wednesday: Středa
|
118
|
+
thursday: Čtvrtek
|
119
|
+
friday: Pátek
|
120
|
+
saturday: Sobota
|
121
|
+
sunday: Neděle
|
122
|
+
medium: Střední
|
123
|
+
night: Noc
|
124
|
+
day: Den
|
125
|
+
power: Výkon
|
126
|
+
automatic: Týdenní program
|
127
|
+
manual: Ruční
|
128
|
+
temporary: Dočasné
|
129
|
+
non: Není
|
130
|
+
mode: Režim
|
131
|
+
perVentilation: Periodické větrání
|
132
|
+
ventilation: Větrání
|
133
|
+
circulation: Cirkulace
|
134
|
+
startUp: Náběh
|
135
|
+
runDown: Doběh
|
136
|
+
defrosting: Odtávání rekuperátoru
|
137
|
+
external: Externě
|
138
|
+
inactive: Vypnuto
|
139
|
+
zone: Zóna
|
140
|
+
heating: Topná
|
141
|
+
nonHeating: Netopná
|
142
|
+
dateTime: Datum a čas
|
143
|
+
filterChange: Výměna filtru
|
144
|
+
notWhenAuto: Řízení teploty je nastaveno na automatiku, změna je platná pouze do
|
145
|
+
příští změny režimu.
|
146
|
+
heatingSched: Rozvrh topná sezóna
|
147
|
+
nonHeatingSched: Rozvrh netopná sezóna
|
148
|
+
userSetting: Uživatelské nastavení
|
149
|
+
season: Sezóna
|
150
|
+
modeAC: Režim VZT
|
151
|
+
modeTemp: Režim teploty
|
152
|
+
controlSetting: Nastavení regulace
|
153
|
+
tempSenzorDev: Korekce čidla teploty ovladače
|
154
|
+
inputBlock: Blokování vstupu
|
155
|
+
personsCount: Počet osob
|
156
|
+
thermostatFcn: Funkce termostatu
|
157
|
+
holidayParty: Dovolená / párty
|
158
|
+
texts: Texty
|
159
|
+
txtZone1: Text pro zónu 1
|
160
|
+
txtZone2: Text pro zónu 2
|
161
|
+
txtZone12: Text pro zónu 1 2
|
162
|
+
swInfo: Informace o SW
|
163
|
+
alarms: Alarmy
|
164
|
+
controlAC: Řízení VZT
|
165
|
+
controlTemp: Řízení teploty
|
166
|
+
currentPower: Aktuální výkon
|
167
|
+
requiredPower: Požadovaný výkon
|
168
|
+
requiredTemp: Požadovaná teplota
|
169
|
+
requiredMode: Požadovaný režim
|
170
|
+
indoorTemp: Vnitřní teplota
|
171
|
+
inletTemp: Teplota přívodu
|
172
|
+
czech: Česky
|
173
|
+
german: Německy
|
174
|
+
english: Anglicky
|
175
|
+
eqVent: Rovnotlaké větrání
|
176
|
+
ventCirc: Větrání s cirkulací
|
177
|
+
circDepend: Cirkulace závislá
|
178
|
+
overPrVent: Přetlakové větrání
|
179
|
+
devHeating: Odchylka pro topení
|
180
|
+
devCooling: Odchylka pro chlazení
|
181
|
+
devCoolMax: Odchylka pro chlazení na max.
|
182
|
+
productNumber: Výrobní číslo
|
183
|
+
unitType: Typ jednotky
|
184
|
+
polish: Polsky
|
185
|
+
bySens: Auto - větrání
|
186
|
+
hpDefrosting: Odmražení TČ
|
187
|
+
userLogin: Přihlášení uživatele
|
188
|
+
passwordInput: Zadejte heslo
|
189
|
+
loginCmd: Přihlásit
|
190
|
+
weeklyProgram: Týdenní program
|
191
|
+
italiano: Italsky
|
192
|
+
nightBefCool: Noční předchlazení
|
193
|
+
passwordMenu: Změna hesla
|
194
|
+
enterAllFields: Zadejte všechny údaje!
|
195
|
+
passwordNoChk: Nové heslo a jeho potvrzeni se neshoduje!
|
196
|
+
passwordBad: Heslo může obsahovat pouze znaky a-z, A-Z a číslice!
|
197
|
+
passwordSaved: Heslo bylo uloženo.
|
198
|
+
passwordSaveErr: Chyba při ukládání hesla.
|
199
|
+
unavail: Nedostupná
|
200
|
+
disabledRange: Nepovolený rozsah
|
201
|
+
emergMode: Nouzový režim
|
202
|
+
outdoorTemp: Venkovní teplota
|
203
|
+
currentZone: Aktuální zóna
|
204
|
+
components: Komponenty
|
205
|
+
all: Vše
|
206
|
+
modeAuto: Automat
|
207
|
+
disbalance: Rozvážení
|
208
|
+
saveActive: Uložit / Aktivovat
|
209
|
+
holidays: Svátky
|
210
|
+
vacations: Prázdniny
|
211
|
+
unitDesign: Provedení
|
212
|
+
unitSpec: Specifikace
|
213
|
+
partyStart: Spustit v
|
214
|
+
partyEnd: Ukončit v
|
215
|
+
tsNtsSwitch: Přepnutí TS/NTS
|
216
|
+
tsNtsTemp: Teplota TS/NTS
|
217
|
+
in1Block: Blokace cidla IN1
|
218
|
+
in2Block: Blokace cidla IN2
|
219
|
+
hystHeat: Hystereze topení
|
220
|
+
hystCool: Hystereze chlazení
|
221
|
+
set: Nastavit
|
222
|
+
timeZone: Časové pásmo
|
223
|
+
settingTZ: Nastavení časového pásma
|
224
|
+
producer: Výrobce
|
225
|
+
unitLine: Řada
|
226
|
+
unitSize: Velikost jednotky
|
227
|
+
unitIntDesign: Vnitřní uspořádání
|
228
|
+
currentConfig: Aktuální nastavení
|
229
|
+
monthName1: Leden
|
230
|
+
monthName2: Únor
|
231
|
+
monthName3: Březen
|
232
|
+
monthName4: Duben
|
233
|
+
monthName5: Květen
|
234
|
+
monthName6: Červen
|
235
|
+
monthName7: Červenec
|
236
|
+
monthName8: Srpen
|
237
|
+
monthName9: Září
|
238
|
+
monthName10: Říjen
|
239
|
+
monthName11: Listopad
|
240
|
+
monthName12: Prosinec
|
241
|
+
holidayTip: Svátek / Prázdniny
|
242
|
+
prodCodeInput: Zadejte kód výrobce
|
243
|
+
logType: Typ logu
|
244
|
+
current: Aktuální
|
245
|
+
week: Týden
|
246
|
+
month: Měsíc
|
247
|
+
selectDay: Vyberte den
|
248
|
+
show: Zobrazit
|
249
|
+
dataNotFound: Data nenalezena
|
250
|
+
logLive: On-line
|
251
|
+
holidayVacation: Svátky a prázdniny
|
252
|
+
timeAutoSwitch: Automatické přepnutí na letní čas
|
253
|
+
timeSyncInet: Synchronizace času s Internetem
|
254
|
+
unitTime: Čas jednotky
|
255
|
+
inputs: Vstupy
|
256
|
+
outputs: Výstupy
|
257
|
+
others: Ostatní
|
258
|
+
heatIconTip: Aktivní topení
|
259
|
+
coolIconTip: Aktivní chlazení
|
260
|
+
partyIconTip: Aktivní režim Párty/Dovolená
|
261
|
+
alarmIconTip: Aktivní alarm
|
262
|
+
PgFW_S2A: Záloha z
|
263
|
+
reset: Reset
|
264
|
+
commun: Komunikace
|
265
|
+
serverPing: Služba "Connect server"
|
266
|
+
acsService: Přístup servisu
|
267
|
+
acsDistr: Přístup distributora
|
268
|
+
lastCommun: Poslední komunikace
|
269
|
+
unitName: Jméno jednotky
|