[miio] cloud login issues improvement (#13715)
* [miio] cloud login issues improvement * Small change in debug loggin is login issues are expected * Additional trouble shooting steps in readme * Fix duplicate name in device list preventing readme maker running * Catch a json exception in readme maker close #13611 close #7459 * [miio] fix strange/foreign characters in readme Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
This commit is contained in:
parent
740d1a7f85
commit
ac546dee0f
|
@ -172,7 +172,15 @@ Firmware of the device don't accept commands coming from other subnets.
|
|||
Set the communication in the thing configuration to 'cloud'.
|
||||
|
||||
_Cloud connectivity is not working_
|
||||
The most common problem is a wrong userId/password. Try to fix your userId/password.
|
||||
The most common problem is a wrong or missing userId/password. Update your Xiaomi cloud userId & password in the [miio binding configuration screen](#binding-configuration).
|
||||
If the problem persists you can try the following:
|
||||
|
||||
* Xiaomi Account verification might be needed. For some users login by the binding is unsuccessful as account verification is required, but the binding currently has no possibilities to handle this.
|
||||
In order to pass validation your (openHAB server) ip need to be validated/confirmed.
|
||||
Browse to [https://account.xiaomi.com/](https://account.xiaomi.com/) and logon to your account. Note: use the same external ip address as your openHAB server, e.g. you may need to disable your VPN.
|
||||
* If above is not possible or fails, You can try to find in the binding debug logging a `location url`. Try to login using this url (just after it fails) with your browser.
|
||||
* Several users also reported success by resetting their Xiaomi password.
|
||||
|
||||
If it still fails, you're bit out of luck. You may try to restart openHAB (not just the binding) to clean the cookies.
|
||||
As the cloud logon process is still little understood, your only luck might be to enable trace logging and see if you can translate the Chinese error code that it returns.
|
||||
|
||||
|
|
|
@ -172,7 +172,15 @@ Firmware of the device don't accept commands coming from other subnets.
|
|||
Set the communication in the thing configuration to 'cloud'.
|
||||
|
||||
_Cloud connectivity is not working_
|
||||
The most common problem is a wrong userId/password. Try to fix your userId/password.
|
||||
The most common problem is a wrong or missing userId/password. Update your Xiaomi cloud userId & password in the [miio binding configuration screen](#binding-configuration).
|
||||
If the problem persists you can try the following:
|
||||
|
||||
* Xiaomi Account verification might be needed. For some users login by the binding is unsuccessful as account verification is required, but the binding currently has no possibilities to handle this.
|
||||
In order to pass validation your (openHAB server) ip need to be validated/confirmed.
|
||||
Browse to [https://account.xiaomi.com/](https://account.xiaomi.com/) and logon to your account. Note: use the same external ip address as your openHAB server, e.g. you may need to disable your VPN.
|
||||
* If above is not possible or fails, You can try to find in the binding debug logging a `location url`. Try to login using this url (just after it fails) with your browser.
|
||||
* Several users also reported success by resetting their Xiaomi password.
|
||||
|
||||
If it still fails, you're bit out of luck. You may try to restart openHAB (not just the binding) to clean the cookies.
|
||||
As the cloud logon process is still little understood, your only luck might be to enable trace logging and see if you can translate the Chinese error code that it returns.
|
||||
|
||||
|
@ -347,6 +355,17 @@ Currently the miio binding supports more than 340 different models.
|
|||
| Roborock S7 | miio:vacuum | [roborock.vacuum.a15](#roborock-vacuum-a15) | Yes | |
|
||||
| Roborock S4 Max | miio:vacuum | [roborock.vacuum.a19](#roborock-vacuum-a19) | Yes | |
|
||||
| Roborock T7S Plus | miio:vacuum | [roborock.vacuum.a23](#roborock-vacuum-a23) | Yes | |
|
||||
| Roborock G10S Pro | miio:vacuum | [roborock.vacuum.a26](#roborock-vacuum-a26) | Yes | |
|
||||
| Roborock S7 MaxV | miio:vacuum | [roborock.vacuum.a27](#roborock-vacuum-a27) | Yes | |
|
||||
| Roborock G10 | miio:vacuum | [roborock.vacuum.a29](#roborock-vacuum-a29) | Yes | |
|
||||
| Roborock G10 | miio:vacuum | [roborock.vacuum.a30](#roborock-vacuum-a30) | Yes | |
|
||||
| Roborock Q5 | miio:vacuum | [roborock.vacuum.a34](#roborock-vacuum-a34) | Yes | |
|
||||
| Roborock T8 | miio:vacuum | [roborock.vacuum.a37](#roborock-vacuum-a37) | Yes | |
|
||||
| Roborock Q7 Max | miio:vacuum | [roborock.vacuum.a38](#roborock-vacuum-a38) | Yes | |
|
||||
| Roborock Q7 | miio:vacuum | [roborock.vacuum.a40](#roborock-vacuum-a40) | Yes | |
|
||||
| Roborock G10S | miio:vacuum | [roborock.vacuum.a46](#roborock-vacuum-a46) | Yes | |
|
||||
| Roborock T8 Plus | miio:vacuum | [roborock.vacuum.a52](#roborock-vacuum-a52) | Yes | |
|
||||
| Roborock S7 Pro Ultra | miio:vacuum | [roborock.vacuum.a62](#roborock-vacuum-a62) | Yes | |
|
||||
| Xiaowa C1 | miio:vacuum | [roborock.vacuum.c1](#roborock-vacuum-c1) | Yes | |
|
||||
| Roborock Xiaowa E Series Vacuum v2 | miio:unsupported | roborock.vacuum.e2 | No | |
|
||||
| Mi Robot Vacuum 1S | miio:vacuum | [roborock.vacuum.m1s](#roborock-vacuum-m1s) | Yes | |
|
||||
|
@ -1259,7 +1278,7 @@ Note, not all the values need to be in the json file, e.g. a subset of the param
|
|||
|
||||
| Channel | Type | Description | Comment |
|
||||
|----------------------|----------------------|------------------------------------------|------------|
|
||||
| actions | String | Actions | |
|
||||
| actions | String | Actions | Value mapping `["vacuum-start-sweep"="Vacuum Start Sweep","vacuum-stop-sweeping"="Vacuum Stop Sweeping","battery-start-charge"="Battery Start Charge","brush-cleaner-reset-brush-life"="Brush Cleaner Reset Brush Life","brush-cleaner-reset-brush-life"="Brush Cleaner Reset Brush Life","filter-reset-filter-life"="Filter Reset Filter Life","vacuum-extend-start-clean"="Vacuum Extend Start Clean","vacuum-extend-stop-clean"="Vacuum Extend Stop Clean","map-map-req"="Map Map Req","map-update-map"="Map Update Map","audio-position"="Audio Position","audio-play-sound"="Audio Play Sound","time-delete-timer"="Time Delete Timer"]` |
|
||||
| status | Number | Robot Cleaner - Status | Value mapping `["1"="Sweeping","2"="Idle","3"="Paused","4"="Error","5"="Go Charging","6"="Charging","7"="Mopping"]` |
|
||||
| fault | Number | Robot Cleaner - Device Fault | |
|
||||
| battery_level | Number:Dimensionless | Battery - Battery Level | |
|
||||
|
@ -1701,8 +1720,8 @@ Note, not all the values need to be in the json file, e.g. a subset of the param
|
|||
|
||||
| Channel | Type | Description | Comment |
|
||||
|----------------------|----------------------|------------------------------------------|------------|
|
||||
| actions | String | Robot Cleaner - Actions | |
|
||||
| advanced_actions | String | Robot Cleaner - Advanced Actions | |
|
||||
| actions | String | Robot Cleaner - Actions | Value mapping `["vacuum-start-sweep"="Start","vacuum-start-sweep-mop"="Start Sweep+Mop","vacuum-start-only-sweep"="Start Sweep","vacuum-start-only-mop"="Start Mop","vacuum-dock"="Dock","vacuum-stop-sweeping"="Pause","vacuum-start-room-sweep"="Start Room Sweep"]` |
|
||||
| advanced_actions | String | Robot Cleaner - Advanced Actions | Value mapping `["sweep-reset-consumable"="Sweep Reset Consumable","sweep-set-calibration"="Sweep Set Calibration","sweep-set-room-clean"="Sweep Set Room Clean","sweep-set-preference-clean"="Sweep Set Preference Clean","sweep-get-preference-clean"="Sweep Get Preference Clean","sweep-set-preference-type"="Sweep Set Preference Type","sweep-set-go-charging"="Sweep Set Go Charging","sweep-erase-preference"="Sweep Erase Preference","sweep-set-preference-ii"="Sweep Set Preference Ii","sweep-get-preference-ii"="Sweep Get Preference Ii","order-add"="Order Add","order-del"="Order Del","order-get"="Order Get","order-add-ii"="Order Add Ii","order-get-map-order-count"="Order Get Map Order Count","order-add-iii"="Order Add Iii","point-zone-start-point-clean"="Point Zone Start Point Clean","point-zone-pause-point-clean"="Point Zone Pause Point Clean","point-zone-start-zone-clean"="Point Zone Start Zone Clean","point-zone-pause-zone-clean"="Point Zone Pause Zone Clean","point-zone-set-beauty-wall"="Point Zone Set Beauty Wall","point-zone-set-virtual-wall"="Point Zone Set Virtual Wall","point-zone-set-zone-point"="Point Zone Set Zone Point","point-zone-start-point-clean-ii"="Point Zone Start Point Clean Ii","map-get-map-list"="Map Get Map List","map-upload-by-mapid"="Map Upload By Mapid","map-set-cur-map"="Map Set Cur Map","map-del-map"="Map Del Map","map-rename-map"="Map Rename Map","map-upload-by-maptype"="Map Upload By Maptype","map-rename-room"="Map Rename Room","map-arrange-room"="Map Arrange Room","map-split-room"="Map Split Room","map-reset-map"="Map Reset Map","map-build-new-map"="Map Build New Map","map-get-cur-path"="Map Get Cur Path","map-get-map-room-list"="Map Get Map Room List","map-upload-by-mapid-ii"="Map Upload By Mapid Ii","map-upload-by-maptype-ii"="Map Upload By Maptype Ii","map-reset-map-ii"="Map Reset Map Ii","map-build-map-ii"="Map Build Map Ii","map-set-mijia-room-list"="Map Set Mijia Room List","disturb-set-notdisturb"="Disturb Set Notdisturb","language-download-voice"="Language Download Voice","language-get-download-status"="Language Get Download Status"]` |
|
||||
| status | Number | Robot Cleaner - Status | Value mapping `["0"="Sleep","1"="Idle","2"="Paused","3"="Go Charging","4"="Charging","5"="Sweeping","6"="Sweeping and Mopping","7"="Mopping","8"="Upgrading"]` |
|
||||
| fault | Number | Robot Cleaner - Device Fault | |
|
||||
| mode | Number | Robot Cleaner - Mode | Value mapping `["0"="Sweep","1"="Sweep And Mop","2"="Mop"]` |
|
||||
|
@ -2013,7 +2032,7 @@ Note, not all the values need to be in the json file, e.g. a subset of the param
|
|||
| total-clean-area | Number:Area | Clean Record - Total Clean Area | |
|
||||
| total-clean-time | Number | Clean Record - Total Clean Time | |
|
||||
| total-clean-count | Number | Clean Record - Total Clean Count | |
|
||||
| language | Number | Language - Language | Value mapping `["0"="English","1"="简体中文","2"="Español","3"="Русский","4"="Italiano","5"="Français","6"="Deutsch","7"="한국어","8"="Polski"]` |
|
||||
| language | Number | Language - Language | Value mapping `["0"="English","1"="Chinese","2"="Spanish","3"="Russian","4"="Italian","5"="French","6"="German","7"="Korean","8"="Polish"]` |
|
||||
| not-disturb-switch | Switch | Language - Not Disturb Switch | |
|
||||
| mop-status | Number | Other Status - Mop Status | Value mapping `["0"="Mop Uninstall","1"="Mop Install"]` |
|
||||
|
||||
|
@ -2654,14 +2673,15 @@ Note, not all the values need to be in the json file, e.g. a subset of the param
|
|||
| Channel | Type | Description | Comment |
|
||||
|----------------------|----------------------|------------------------------------------|------------|
|
||||
| power | Switch | Power | |
|
||||
| powerUsage | Number | Power Consumption | |
|
||||
| mode | String | Mode | Value mapping `["normal"="Normal","green"="Green"]` |
|
||||
| powerUsage | Number:Power | Power Consumption | |
|
||||
| voltage | Number:ElectricPotential | Voltage | |
|
||||
| led | Switch | wifi LED | |
|
||||
| power_price | Number | power_price | |
|
||||
| current | Number | Current | |
|
||||
| power_price | Number | Power Price | |
|
||||
| power_factor | Number | Power Factor | |
|
||||
| current | Number:ElectricCurrent | Current | |
|
||||
| elec_leakage | Number:ElectricCurrent | Electic Leakage | |
|
||||
| temperature | Number:Temperature | Temperature | |
|
||||
| lp_autooff | Number | Low Power Auto Off | |
|
||||
| lp_autooff_delay | Number | Low Power Limit Time | |
|
||||
| lp_threshold | Number | Low Power Threshold | |
|
||||
|
||||
### ROIDMI EVE vacuum (<a name="roidmi-vacuum-v60">roidmi.vacuum.v60</a>) Channels
|
||||
|
||||
|
@ -5243,15 +5263,21 @@ Note, not all the values need to be in the json file, e.g. a subset of the param
|
|||
| Channel | Type | Description | Comment |
|
||||
|----------------------|----------------------|------------------------------------------|------------|
|
||||
| power | Switch | Power | |
|
||||
| mode | String | Mode | |
|
||||
| mode | String | Mode | Value mapping `["auto"="Auto","favorite"="Favorite","silent"="Silent","high"="High","medium"="Medium","idle"="Idle","strong"="Strong"]` |
|
||||
| humidity | Number:Dimensionless | Humidity | |
|
||||
| aqi | Number | Air Quality Index | |
|
||||
| brightness | Dimmer | Brightness | |
|
||||
| averageaqi | Number | Average Air Quality Index | |
|
||||
| led | Switch | LED Status | |
|
||||
| act_det | Switch | Air AutoDetect | |
|
||||
| buzzer | Switch | Buzzer Status | |
|
||||
| filtermaxlife | Number | Filter Max Life | |
|
||||
| filterlive | Number | Filter Life | |
|
||||
| filterhours | Number:Time | Filter Hours used | |
|
||||
| usedhours | Number:Time | Run Time | |
|
||||
| motorspeed | Number | Motor Speed | |
|
||||
| filterlife | Number | Filter Life | |
|
||||
| favoritelevel | Number | Favorite Level | Value mapping `["0"="Favorite 0","1"="Favorite 1","2"="Favorite 2","3"="Favorite 3","4"="Favorite 4","5"="Favorite 5","6"="Favorite 6","7"="Favorite 7","8"="Favorite 8","9"="Favorite 9","10"="Favorite 10","11"="Favorite 11","12"="Favorite 13","13"="Favorite 13","14"="Favorite 14","15"="Favorite 15"]` |
|
||||
| temperature | Number:Temperature | Temperature | |
|
||||
| purifyvolume | Number:Volume | Purified Volume | |
|
||||
| childlock | Switch | Child Lock | |
|
||||
|
||||
### Mi Air Purifier v2 (<a name="zhimi-airpurifier-v2">zhimi.airpurifier.v2</a>) Channels
|
||||
|
||||
|
@ -8331,14 +8357,15 @@ note: Autogenerated example. Replace the id (powerstrip) in the channel with you
|
|||
```
|
||||
Group G_powerstrip "CHINGMI Smart Power Strip v1" <status>
|
||||
Switch power "Power" (G_powerstrip) {channel="miio:basic:powerstrip:power"}
|
||||
Number powerUsage "Power Consumption" (G_powerstrip) {channel="miio:basic:powerstrip:powerUsage"}
|
||||
String mode "Mode" (G_powerstrip) {channel="miio:basic:powerstrip:mode"}
|
||||
Number:Power powerUsage "Power Consumption" (G_powerstrip) {channel="miio:basic:powerstrip:powerUsage"}
|
||||
Number:ElectricPotential voltage "Voltage" (G_powerstrip) {channel="miio:basic:powerstrip:voltage"}
|
||||
Switch led "wifi LED" (G_powerstrip) {channel="miio:basic:powerstrip:led"}
|
||||
Number power_price "power_price" (G_powerstrip) {channel="miio:basic:powerstrip:power_price"}
|
||||
Number current "Current" (G_powerstrip) {channel="miio:basic:powerstrip:current"}
|
||||
Number power_price "Power Price" (G_powerstrip) {channel="miio:basic:powerstrip:power_price"}
|
||||
Number power_factor "Power Factor" (G_powerstrip) {channel="miio:basic:powerstrip:power_factor"}
|
||||
Number:ElectricCurrent current "Current" (G_powerstrip) {channel="miio:basic:powerstrip:current"}
|
||||
Number:ElectricCurrent elec_leakage "Electic Leakage" (G_powerstrip) {channel="miio:basic:powerstrip:elec_leakage"}
|
||||
Number:Temperature temperature "Temperature" (G_powerstrip) {channel="miio:basic:powerstrip:temperature"}
|
||||
Number lp_autooff "Low Power Auto Off" (G_powerstrip) {channel="miio:basic:powerstrip:lp_autooff"}
|
||||
Number lp_autooff_delay "Low Power Limit Time" (G_powerstrip) {channel="miio:basic:powerstrip:lp_autooff_delay"}
|
||||
Number lp_threshold "Low Power Threshold" (G_powerstrip) {channel="miio:basic:powerstrip:lp_threshold"}
|
||||
```
|
||||
|
||||
### ROIDMI EVE vacuum (roidmi.vacuum.v60) item file lines
|
||||
|
@ -11383,12 +11410,18 @@ Switch power "Power" (G_airpurifier) {channel="miio:basic:airpurifier:power"}
|
|||
String mode "Mode" (G_airpurifier) {channel="miio:basic:airpurifier:mode"}
|
||||
Number:Dimensionless humidity "Humidity" (G_airpurifier) {channel="miio:basic:airpurifier:humidity"}
|
||||
Number aqi "Air Quality Index" (G_airpurifier) {channel="miio:basic:airpurifier:aqi"}
|
||||
Dimmer brightness "Brightness" (G_airpurifier) {channel="miio:basic:airpurifier:brightness"}
|
||||
Number averageaqi "Average Air Quality Index" (G_airpurifier) {channel="miio:basic:airpurifier:averageaqi"}
|
||||
Switch led "LED Status" (G_airpurifier) {channel="miio:basic:airpurifier:led"}
|
||||
Switch act_det "Air AutoDetect" (G_airpurifier) {channel="miio:basic:airpurifier:act_det"}
|
||||
Switch buzzer "Buzzer Status" (G_airpurifier) {channel="miio:basic:airpurifier:buzzer"}
|
||||
Number filtermaxlife "Filter Max Life" (G_airpurifier) {channel="miio:basic:airpurifier:filtermaxlife"}
|
||||
Number filterlive "Filter Life" (G_airpurifier) {channel="miio:basic:airpurifier:filterlive"}
|
||||
Number:Time filterhours "Filter Hours used" (G_airpurifier) {channel="miio:basic:airpurifier:filterhours"}
|
||||
Number:Time usedhours "Run Time" (G_airpurifier) {channel="miio:basic:airpurifier:usedhours"}
|
||||
Number motorspeed "Motor Speed" (G_airpurifier) {channel="miio:basic:airpurifier:motorspeed"}
|
||||
Number filterlife "Filter Life" (G_airpurifier) {channel="miio:basic:airpurifier:filterlife"}
|
||||
Number favoritelevel "Favorite Level" (G_airpurifier) {channel="miio:basic:airpurifier:favoritelevel"}
|
||||
Number:Temperature temperature "Temperature" (G_airpurifier) {channel="miio:basic:airpurifier:temperature"}
|
||||
Number:Volume purifyvolume "Purified Volume" (G_airpurifier) {channel="miio:basic:airpurifier:purifyvolume"}
|
||||
Switch childlock "Child Lock" (G_airpurifier) {channel="miio:basic:airpurifier:childlock"}
|
||||
```
|
||||
|
||||
### Mi Air Purifier v2 (zhimi.airpurifier.v2) item file lines
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
/**
|
||||
* Copyright (c) 2010-2022 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.miio.internal.cloud;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* This DTO class wraps the login step 1 json structure
|
||||
*
|
||||
* @author Marcel Verpaalen - Initial contribution
|
||||
*/
|
||||
public class CloudLogin1DTO {
|
||||
@SerializedName("serviceParam")
|
||||
@Expose
|
||||
private String serviceParam;
|
||||
@SerializedName("qs")
|
||||
@Expose
|
||||
private String qs;
|
||||
@SerializedName("code")
|
||||
@Expose
|
||||
private Integer code;
|
||||
@SerializedName("description")
|
||||
@Expose
|
||||
private String description;
|
||||
@SerializedName("securityStatus")
|
||||
@Expose
|
||||
private Integer securityStatus;
|
||||
@SerializedName("_sign")
|
||||
@Expose
|
||||
private String sign;
|
||||
@SerializedName("sid")
|
||||
@Expose
|
||||
private String sid;
|
||||
@SerializedName("result")
|
||||
@Expose
|
||||
private String result;
|
||||
@SerializedName("captchaUrl")
|
||||
@Expose
|
||||
private String captchaUrl;
|
||||
@SerializedName("callback")
|
||||
@Expose
|
||||
private String callback;
|
||||
@SerializedName("location")
|
||||
@Expose
|
||||
private String location;
|
||||
@SerializedName("pwd")
|
||||
@Expose
|
||||
private Integer pwd;
|
||||
@SerializedName("child")
|
||||
@Expose
|
||||
private Integer child;
|
||||
@SerializedName("desc")
|
||||
@Expose
|
||||
private String desc;
|
||||
|
||||
public String getServiceParam() {
|
||||
return serviceParam;
|
||||
}
|
||||
|
||||
public String getQs() {
|
||||
return qs;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public Integer getSecurityStatus() {
|
||||
return securityStatus;
|
||||
}
|
||||
|
||||
public String getSign() {
|
||||
return sign;
|
||||
}
|
||||
|
||||
public String getSid() {
|
||||
return sid;
|
||||
}
|
||||
|
||||
public String getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public String getCaptchaUrl() {
|
||||
return captchaUrl;
|
||||
}
|
||||
|
||||
public String getCallback() {
|
||||
return callback;
|
||||
}
|
||||
|
||||
public String getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public Integer getPwd() {
|
||||
return pwd;
|
||||
}
|
||||
|
||||
public Integer getChild() {
|
||||
return child;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
}
|
|
@ -411,8 +411,9 @@ public class MiCloudConnector {
|
|||
logger.trace("Xiaomi Login step 1 response = {}", responseStep1);
|
||||
try {
|
||||
JsonElement resp = JsonParser.parseString(parseJson(content));
|
||||
if (resp.isJsonObject() && resp.getAsJsonObject().has("_sign")) {
|
||||
String sign = resp.getAsJsonObject().get("_sign").getAsString();
|
||||
CloudLogin1DTO jsonResp = GSON.fromJson(resp, CloudLogin1DTO.class);
|
||||
final String sign = jsonResp.getSign();
|
||||
if (sign != null && !sign.isBlank()) {
|
||||
logger.trace("Xiaomi Login step 1 sign = {}", sign);
|
||||
return sign;
|
||||
} else {
|
||||
|
@ -472,6 +473,13 @@ public class MiCloudConnector {
|
|||
logger.trace("Xiaomi login passToken = {}", passToken);
|
||||
logger.trace("Xiaomi login location = {}", location);
|
||||
logger.trace("Xiaomi login code = {}", code);
|
||||
if (0 != jsonResp.getSecurityStatus()) {
|
||||
logger.debug("Xiaomi Cloud Step2 response: {}", parseJson(content2));
|
||||
logger.debug(
|
||||
"Xiaomi Login code: {} \r\nSecurityStatus: {}\r\nPwd code: {}\r\nLocation logon URL: {}\r\nIn case of login issues check userId/password details are correct.\r\n"
|
||||
+ "If login details are correct, try to logon using browser from the openHAB ip using the browser. Alternatively try to complete logon with above URL.",
|
||||
jsonResp.getCode(), jsonResp.getSecurityStatus(), jsonResp.getPwd(), jsonResp.getLocation());
|
||||
}
|
||||
if (logger.isTraceEnabled()) {
|
||||
dumpCookies(url, false);
|
||||
}
|
||||
|
|
|
@ -161,6 +161,17 @@ thing.roborock.vacuum.a14 = Roborock T7S
|
|||
thing.roborock.vacuum.a15 = Roborock S7
|
||||
thing.roborock.vacuum.a19 = Roborock S4 Max
|
||||
thing.roborock.vacuum.a23 = Roborock T7S Plus
|
||||
thing.roborock.vacuum.a26 = Roborock G10S Pro
|
||||
thing.roborock.vacuum.a27 = Roborock S7 MaxV
|
||||
thing.roborock.vacuum.a29 = Roborock G10
|
||||
thing.roborock.vacuum.a30 = Roborock G10
|
||||
thing.roborock.vacuum.a34 = Roborock Q5
|
||||
thing.roborock.vacuum.a37 = Roborock T8
|
||||
thing.roborock.vacuum.a38 = Roborock Q7 Max
|
||||
thing.roborock.vacuum.a40 = Roborock Q7
|
||||
thing.roborock.vacuum.a46 = Roborock G10S
|
||||
thing.roborock.vacuum.a52 = Roborock T8 Plus
|
||||
thing.roborock.vacuum.a62 = Roborock S7 Pro Ultra
|
||||
thing.roborock.vacuum.c1 = Xiaowa C1
|
||||
thing.roborock.vacuum.e2 = Roborock Xiaowa E Series Vacuum v2
|
||||
thing.roborock.vacuum.m1s = Mi Robot Vacuum 1S
|
||||
|
@ -2773,14 +2784,14 @@ option.mijia.vacuum.v2-miot.fault-7 = Side-brush-error
|
|||
option.mijia.vacuum.v2-miot.fault-8 = Fan-motor-error
|
||||
option.mijia.vacuum.v2-miot.fault-9 = Dustbin-error
|
||||
option.mijia.vacuum.v2-miot.language-0 = English
|
||||
option.mijia.vacuum.v2-miot.language-1 = 简体中文
|
||||
option.mijia.vacuum.v2-miot.language-2 = Español
|
||||
option.mijia.vacuum.v2-miot.language-3 = Русский
|
||||
option.mijia.vacuum.v2-miot.language-4 = Italiano
|
||||
option.mijia.vacuum.v2-miot.language-5 = Français
|
||||
option.mijia.vacuum.v2-miot.language-6 = Deutsch
|
||||
option.mijia.vacuum.v2-miot.language-7 = 한국어
|
||||
option.mijia.vacuum.v2-miot.language-8 = Polski
|
||||
option.mijia.vacuum.v2-miot.language-1 = Chinese
|
||||
option.mijia.vacuum.v2-miot.language-2 = Spanish
|
||||
option.mijia.vacuum.v2-miot.language-3 = Russian
|
||||
option.mijia.vacuum.v2-miot.language-4 = Italian
|
||||
option.mijia.vacuum.v2-miot.language-5 = French
|
||||
option.mijia.vacuum.v2-miot.language-6 = German
|
||||
option.mijia.vacuum.v2-miot.language-7 = Korean
|
||||
option.mijia.vacuum.v2-miot.language-8 = Polish
|
||||
option.mijia.vacuum.v2-miot.mode-1 = Auto-clean
|
||||
option.mijia.vacuum.v2-miot.mode-2 = Spot-clean
|
||||
option.mijia.vacuum.v2-miot.mode-3 = Wallflow-clean
|
||||
|
|
|
@ -263,7 +263,8 @@
|
|||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"readmeComment": "Value mapping `[\"vacuum-start-sweep\"\u003d\"Vacuum Start Sweep\",\"vacuum-stop-sweeping\"\u003d\"Vacuum Stop Sweeping\",\"battery-start-charge\"\u003d\"Battery Start Charge\",\"brush-cleaner-reset-brush-life\"\u003d\"Brush Cleaner Reset Brush Life\",\"brush-cleaner-reset-brush-life\"\u003d\"Brush Cleaner Reset Brush Life\",\"filter-reset-filter-life\"\u003d\"Filter Reset Filter Life\",\"vacuum-extend-start-clean\"\u003d\"Vacuum Extend Start Clean\",\"vacuum-extend-stop-clean\"\u003d\"Vacuum Extend Stop Clean\",\"map-map-req\"\u003d\"Map Map Req\",\"map-update-map\"\u003d\"Map Update Map\",\"audio-position\"\u003d\"Audio Position\",\"audio-play-sound\"\u003d\"Audio Play Sound\",\"time-delete-timer\"\u003d\"Time Delete Timer\"]`"
|
||||
},
|
||||
{
|
||||
"property": "status",
|
||||
|
@ -307,7 +308,7 @@
|
|||
},
|
||||
"refresh": true,
|
||||
"actions": [],
|
||||
"readmeComment": "Value mapping [\"1\"\u003d\"Sweeping\",\"2\"\u003d\"Idle\",\"3\"\u003d\"Paused\",\"4\"\u003d\"Error\",\"5\"\u003d\"Go Charging\",\"6\"\u003d\"Charging\",\"7\"\u003d\"Mopping\"]"
|
||||
"readmeComment": "Value mapping `[\"1\"\u003d\"Sweeping\",\"2\"\u003d\"Idle\",\"3\"\u003d\"Paused\",\"4\"\u003d\"Error\",\"5\"\u003d\"Go Charging\",\"6\"\u003d\"Charging\",\"7\"\u003d\"Mopping\"]`"
|
||||
},
|
||||
{
|
||||
"property": "fault",
|
||||
|
@ -370,7 +371,7 @@
|
|||
},
|
||||
"refresh": true,
|
||||
"actions": [],
|
||||
"readmeComment": "Value mapping [\"1\"\u003d\"Charging\",\"2\"\u003d\"Not Charging\",\"5\"\u003d\"Go Charging\"]"
|
||||
"readmeComment": "Value mapping `[\"1\"\u003d\"Charging\",\"2\"\u003d\"Not Charging\",\"5\"\u003d\"Go Charging\"]`"
|
||||
},
|
||||
{
|
||||
"property": "brush-left-time",
|
||||
|
@ -566,7 +567,7 @@
|
|||
"parameterType": "STRING"
|
||||
}
|
||||
],
|
||||
"readmeComment": "Value mapping [\"0\"\u003d\"Silent\",\"1\"\u003d\"Standard\",\"2\"\u003d\"Strong\",\"3\"\u003d\"Turbo\"]"
|
||||
"readmeComment": "Value mapping `[\"0\"\u003d\"Silent\",\"1\"\u003d\"Standard\",\"2\"\u003d\"Strong\",\"3\"\u003d\"Turbo\"]`"
|
||||
},
|
||||
{
|
||||
"property": "mop-mode",
|
||||
|
@ -598,7 +599,7 @@
|
|||
"parameterType": "STRING"
|
||||
}
|
||||
],
|
||||
"readmeComment": "Value mapping [\"1\"\u003d\"Low\",\"2\"\u003d\"Medium\",\"3\"\u003d\"High\"]"
|
||||
"readmeComment": "Value mapping `[\"1\"\u003d\"Low\",\"2\"\u003d\"Medium\",\"3\"\u003d\"High\"]`"
|
||||
},
|
||||
{
|
||||
"property": "waterbox-status",
|
||||
|
@ -622,7 +623,7 @@
|
|||
},
|
||||
"refresh": true,
|
||||
"actions": [],
|
||||
"readmeComment": "Value mapping [\"0\"\u003d\"Removed\",\"1\"\u003d\"Installed\"]"
|
||||
"readmeComment": "Value mapping `[\"0\"\u003d\"Removed\",\"1\"\u003d\"Installed\"]`"
|
||||
},
|
||||
{
|
||||
"property": "task-status",
|
||||
|
@ -682,7 +683,7 @@
|
|||
"parameterType": "NUMBER"
|
||||
}
|
||||
],
|
||||
"readmeComment": "Value mapping [\"0\"\u003d\"Off\",\"1\"\u003d\"On\"]"
|
||||
"readmeComment": "Value mapping `[\"0\"\u003d\"Off\",\"1\"\u003d\"On\"]`"
|
||||
},
|
||||
{
|
||||
"property": "carpet-press",
|
||||
|
@ -710,7 +711,7 @@
|
|||
"parameterType": "NUMBER"
|
||||
}
|
||||
],
|
||||
"readmeComment": "Value mapping [\"0\"\u003d\"On\",\"1\"\u003d\"Off\"]"
|
||||
"readmeComment": "Value mapping `[\"0\"\u003d\"On\",\"1\"\u003d\"Off\"]`"
|
||||
},
|
||||
{
|
||||
"property": "serial-number",
|
||||
|
@ -894,7 +895,7 @@
|
|||
"parameterType": "NUMBER"
|
||||
}
|
||||
],
|
||||
"readmeComment": "Value mapping [\"0\"\u003d\"Close\",\"1\"\u003d\"Open\"]"
|
||||
"readmeComment": "Value mapping `[\"0\"\u003d\"Close\",\"1\"\u003d\"Open\"]`"
|
||||
},
|
||||
{
|
||||
"property": "mult-map-info",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -657,35 +657,35 @@
|
|||
},
|
||||
{
|
||||
"value": "1",
|
||||
"label": "简体中文"
|
||||
"label": "Chinese"
|
||||
},
|
||||
{
|
||||
"value": "2",
|
||||
"label": "Español"
|
||||
"label": "Spanish"
|
||||
},
|
||||
{
|
||||
"value": "3",
|
||||
"label": "Русский"
|
||||
"label": "Russian"
|
||||
},
|
||||
{
|
||||
"value": "4",
|
||||
"label": "Italiano"
|
||||
"label": "Italian"
|
||||
},
|
||||
{
|
||||
"value": "5",
|
||||
"label": "Français"
|
||||
"label": "French"
|
||||
},
|
||||
{
|
||||
"value": "6",
|
||||
"label": "Deutsch"
|
||||
"label": "German"
|
||||
},
|
||||
{
|
||||
"value": "7",
|
||||
"label": "한국어"
|
||||
"label": "Korean"
|
||||
},
|
||||
{
|
||||
"value": "8",
|
||||
"label": "Polski"
|
||||
"label": "Polish"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -696,7 +696,7 @@
|
|||
"parameterType": "NUMBER"
|
||||
}
|
||||
],
|
||||
"readmeComment": "Value mapping `[\"0\"\u003d\"English\",\"1\"\u003d\"简体中文\",\"2\"\u003d\"Español\",\"3\"\u003d\"Русский\",\"4\"\u003d\"Italiano\",\"5\"\u003d\"Français\",\"6\"\u003d\"Deutsch\",\"7\"\u003d\"한국어\",\"8\"\u003d\"Polski\"]`"
|
||||
"readmeComment": "Value mapping `[\"0\"\u003d\"English\",\"1\"\u003d\"Chinese\",\"2\"\u003d\"Spanish\",\"3\"\u003d\"Russian\",\"4\"\u003d\"Italian\",\"5\"\u003d\"French\",\"6\"\u003d\"German\",\"7\"\u003d\"Korean\",\"8\"\u003d\"Polish\"]`"
|
||||
},
|
||||
{
|
||||
"property": "not-disturb-switch",
|
||||
|
|
|
@ -1550,7 +1550,6 @@
|
|||
"ijai.vacuum.v19": "Xiaomi Robot Vacuum-Mop 2S",
|
||||
"ijai.vacuum.v2": "Mi Robot Vacuum-Mop 2",
|
||||
"ijai.vacuum.v3": "Mi Robot Vacuum-Mop 2 Pro",
|
||||
"ijai.vacuum.v19": "Mi Robot Vacuum-Mop 2S",
|
||||
"ijomoo.airer.mja6": "JOMOO smart clothes dryer -A6090",
|
||||
"ijomoo.bhf_light.jd071": "JOMOO Smart Bath Heater JD071",
|
||||
"ijomoo.toilet.i90": "JOMOO Smart Toilet I90",
|
||||
|
|
|
@ -51,6 +51,7 @@ import com.google.gson.GsonBuilder;
|
|||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
import com.google.gson.stream.JsonReader;
|
||||
|
||||
/**
|
||||
|
@ -260,7 +261,7 @@ public class ReadmeHelper {
|
|||
try {
|
||||
JsonReader reader = new JsonReader(new FileReader(DEVICE_NAMES_FILE));
|
||||
names = gson.fromJson(reader, names.getClass());
|
||||
} catch (IOException e) {
|
||||
} catch (JsonSyntaxException | IOException e) {
|
||||
LOGGER.info("Error reading name list {}: ", DEVICE_NAMES_FILE, e.getMessage());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue