Git Product home page Git Product logo

homebridge-lg-thinq's People

Contributors

dependabot[bot] avatar furkanilgenci avatar jin9x avatar joeyhage avatar nvuln avatar rmsy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

homebridge-lg-thinq's Issues

HomeKit Setting: "Show Tiles" as Single or Separate is somehow Reversed

Hi, in HK it shows two tiles. One is the washer (valve icon) and the other one is a "not useable" switch.
In the tile settings there is a way to "show as separate tiles" or "as single tile".

It seems like it operates the wrong way. If I enable it to show as separate tiles, the "switch" disappears.
And vice versa. If I set as show as single tile it appears.

Support for Dehumidifier, Washer, & Dryer

Is your feature request related to a problem? Please describe:
Currently only supports Refrigerator and Air Purifiers.
Other devices don't show up.

Describe the solution you'd like:
Ability to monitor status & possibly control additional devices. ie

Describe alternatives you've considered:
Looks like an older version (wideq) used to have the ability to do this.
https://github.com/ssut/wideq-js

Additional context:
Example of LG devices that you might be able to add support for from wideq-js:

Device Implementation Status Control
Dehumidifier ✔️ ✔️ ✔️
AC ✔️ ⚠️ needs testing ⚠️ needs testing
Refrigerator ✔️ ✔️ ✔️
Dishwasher ✔️ ⚠️ needs testing
Dryer ✔️ ⚠️ needs testing
Washer ✔️ ⚠️ needs testing

Version 1.2.1 adds 1 hours to the washing program

Hi,

After the newest update 1.21. every washing program gets 1 hour added to the countdown timer :-(

Environment:

  • Plugin Version: 1.2.1
  • Homebridge Version: 1.3.4
  • Node.js Version: 14.17.6
  • NPM Version: 6.14.15
  • Operating System: Raspbian

Hide Accessory Attributes

Describe Your Problem:

I have a refrigerator as an accessory and want to hide the temperatures and ice express mode and only get the door notifications.

Logs:

Show the Homebridge logs here, remove any sensitive information.

Plugin Config:

Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

  • Plugin Version:
  • Homebridge Version:
  • Node.js Version:
  • NPM Version:
  • Operating System:

Optional Washer Door Lock

Hi! I've love it if I could hide the Washer Door Lock item in HomeBridge — maybe via a checkbox in the UI. I would rather not see it because, by default, it sends notifications whenever the washer door locks or unlocks.

[02/09/2021, 13:06:41] [LGThinQ] Found device: {"deviceId":"75e0a19e-8865-116e-a3c5-7440beee3f5e","deviceType":201,"modelName":"T1789EFH_F","subModelNm":null,"sensorType":null,"alias":"Washer","deviceCode":"LA01","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"TYPE2","pccModelYn":"Y","autoOrderYn":"N","drServiceYn":"N","ssid":"StoffPlume","timezoneCode":"America/New_York","timezoneCodeAlias":"USA/New_York","sdsGuide":"{\"deviceCode\":\"LA01\"}","newRegYn":"N","remoteControlType":"","fareTarget":null,"area":"334505","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20200619020528000","regIndex":0,"blackboxYn":"Y","groupableYn":"N","controllableYn":"N","combinedProductYn":"N","masterYn":"Y","snapshot":{"washerDryer":{"initialBit":"INITIAL_BIT_OFF","initialTimeMinute":26,"preState":"END","dnn_temp":"17","addGarment":"ADDGARMENT_OFF","error":"ERROR_NO","deepFillMax":"DEEPFILLMAX_OFF","dnn_precipitationProbability":"0","dnn_washingIndex":"80","dnnReady":"DNNREADY_OFF","remainTimeHour":0,"preWash":"PREWASH_OFF","steam":"STEAM_OFF","state":"POWEROFF","rinse":"NO_RINSE","courseTLBaseUS":"NOT_SELECTED","smallUE":"SMALLUE_OFF","temp":"NO_TEMP","doorLock":"DOOR_LOCK_OFF","reserveTimeMinute":0,"smartCourseTLBaseUS":"NOT_SELECTED","washingIndex":"80","dnn_humidity":"38","TCLCount":20,"stainCare":"STAINCARE_OFF","waterPlus":"WATERPLUS_OFF","fabricSoftener":"FABRICSOFTENER_OFF","saveEnergy":"SAVE_ENERGY_OFF","wifiSDS":"WIFI_SDS_OFF","extraRinse":"EXTRARINSE_OFF","dnn_dust":"-","turboWash":"TURBOWASH_ON","remainTimeMinute":0,"reserveTimeHour":0,"soak":"SOAK_OFF","childLock":"CHILDLOCK_OFF","remoteStart":"REMOTE_START_OFF","spin":"NO_SPIN","soakBit":"SOAK_OFF","downloadedCourseTLBaseUS":"SMALL_LOAD","soilWash":"NO_SOILWASH","coldWash":"COLDWASH_OFF","deepFill":"DEEPFILL_OFF","initialTimeHour":0},"fwStatus":"complete","static":{"deviceType":"201","countryCode":"US"},"fwCurrentCount":0,"meta":{"allDeviceInfoUpdate":true,"messageId":"aZWVuVpLSeeyYcdoa9Ulgg"},"mid":443546605,"online":true,"fwCurrentFileSize":0,"fwCount":1,"timestamp":1630602902894},"manufacture":null,"online":true,"platformType":"thinq2","homeDeviceOrder":-1,"roomDeviceOrder":-1,"ownershipYn":"N","modelJsonVer":"3.5","modelJsonUri":"https://objectcontent.lgthinq.com/f42b2a5d-7d0e-47a0-84a7-7a561702e7e3?hdnts=exp=1666904843~hmac=5d012072d7c106f89e5ab57e824a4b3dd36e921e55fbdb22a1192898173df260","appModuleVer":"3.63","appModuleUri":"https://objectcontent.lgthinq.com/27342417-7989-4cd5-a248-9b204c437c3d?hdnts=exp=1690080696~hmac=57e58b829363251d0615a494886d685f1148c1f74649cb04d9fd7a19ebd3484b","appRestartYn":"Y","appModuleSize":"9896643","langPackProductTypeVer":"83.2","langPackProductTypeUri":"https://objectcontent.lgthinq.com/9471ee32-b8b3-47d7-b631-3076dc0078c2?hdnts=exp=1693121763~hmac=239a1962c07fd315498cdbd61ba718370ef54b6641027ffe46addd999ca56f0e","langPackModelVer":"1.3","langPackModelUri":"https://objectcontent.lgthinq.com/753dcaf1-5470-42aa-9ff3-1983ec9be6cc?hdnts=exp=1681869628~hmac=8c6b2a0f421cb035fe22706d6ef6f68c9e5048cc8a1ee6a0658ef51d5938fe27","roomId":"160079885009562145","fwInfoList":[{"checksum":"0000C250","partNumber":"SAA39955103","order":2},{"checksum":"00003A43","partNumber":"SAA39954903","order":1}],"modemInfo":{"modelName":"T1789EFH_F","appVersion":"clip_hna_v1.9.104","modemType":"QCOM_QCA4010","ruleEngine":"y"},"existsEntryPopup":"N","fwVer":null,"modemVer":null,"subDeviceCount":0,"firebaseLogKey":"T:TL-S:27-U:5-P:TD","cardType":"Small","cardControl":"Base"} [02/09/2021, 13:06:41] [LGThinQ] Restoring existing accessory from cache: Washer

Washtower start/finish automation

I have an LG WashTower. I can see it running and finish in the home app, but I'm not sure how to add an automation when it starts and finishes for my use case. The only thing to trigger on is "washer door lock" which doesn't change when washtower finishes. Is my use case supported? Thanks.

Thinq1 Mini-Split AC: TypeError: Cannot read property 'min' of null

Describe The Bug:
When enabling Thinq1 support, used against a LSN120HSV5 mini-split unit. It uses Thinq1

To Reproduce:
Enabling the plugin raises an error when trying to configure the device:

Expected behavior:

I was hoping to get control over this Thinq1 device

Logs:

9/2/2021, 7:09:53 AMLg Thinq Bridge starting
9/2/2021, 7:09:57 AMLg Thinq BridgeLoaded plugin 'homebridge-lg-thinq'
9/2/2021, 7:09:57 AMLg Thinq BridgeLoading 1 platforms...
9/2/2021, 7:09:57 AMLg Thinq BridgeLGThinQLoading accessory from cache: Master Bedroom
9/2/2021, 7:09:57 AMLg Thinq BridgeLGThinQLoading accessory from cache: Living Room
9/2/2021, 7:09:57 AMLg Thinq BridgeBridge is running on port 51846.
9/2/2021, 7:10:04 AMLg Thinq BridgeLGThinQRestoring existing accessory from cache: Master Bedroom
9/2/2021, 7:10:04 AMLg Thinq BridgeLGThinQAC still in development.If you got problem,plz report at https://github.com/nVuln/homebridge-lg-thinq/issues
9/2/2021, 7:10:05 AMLg Thinq BridgeLGThinQAdding new accessory: Dining Room
9/2/2021, 7:10:05 AMLg Thinq BridgeLGThinQAC still in development.If you got problem,plz report at https://github.com/nVuln/homebridge-lg-thinq/issues
9/2/2021, 7:10:05 AMLg Thinq BridgeWARNINGunhandled rejection: TypeError: Cannot read property 'min' of null

Plugin Config:

{
    "accessories": [],
    "platforms": [
        {
            "platform": "LGThinQ",
            "country": "US",
            "language": "en-US",
            "refresh_interval": 60,
            "auth_mode": "account",
            "username": "REDACTED",
            "password": "REDACTED",
            "thinq1": true,
            "refresh_token": ""
        }
    ]
}

Screenshots:

Environment:

  • Plugin Version: 1.1.2
  • Homebridge Version: 1.3.4 via hoobs 4.0.100
  • Node.js Version: 14.17.5
  • NPM Version: 6.14.14
  • Operating System: Raspbian via hoobs
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Error Message

After starting the washer this error message appears constantly:

7.7.2021, 12:02:31TEST BridgeERROR[TEST Bridge 52DC@WASCHMASCHINE@WASCHMASCHINE@Remaining Duration] characteristic value expected valid finite number and received "NaN" (number)

In HK it shows that it is running but the remaining time is set 00:00

After latest version update

Describe The Bug:

To Reproduce:

Expected behavior:

Logs:

Show the Homebridge logs here (make sure homebridge DEBUG mode is turned `on`), remove any sensitive information.

Plugin Config:

Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

  • Plugin Version:
  • Homebridge Version:
  • Node.js Version:
  • NPM Version:
  • Operating System:

[12/09/2021, 12:21:18] [LGThinQ] Restoring existing accessory from cache: Washer Machine
[12/09/2021, 12:21:18] [LGThinQ] Restoring existing accessory from cache: Dishwasher
[12/09/2021, 12:21:18] [LGThinQ] START MQTT listener for thinq2 device
(node:1096) UnhandledPromiseRejectionWarning: Error: Request failed with status code 400
at createError (/usr/local/lib/node_modules/homebridge-lg-thinq/node_modules/axios/lib/core/createError.js:16:15)
at settle (/usr/local/lib/node_modules/homebridge-lg-thinq/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/usr/local/lib/node_modules/homebridge-lg-thinq/node_modules/axios/lib/adapters/http.js:269:11)
at IncomingMessage.emit (events.js:412:35)
at endReadableNT (internal/streams/readable.js:1317:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21)
(Use node --trace-warnings ... to show where the warning was created)
(node:1096) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
(node:1096) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Unable to see Fridge

Describe Your Problem:

I am able to successfully log in and the plugin sees the device ID of my fridge but even though I have it in the configuration and see no errors in the logs (its even successfully polling) I don’t see the accessory in HB or HK

Logs:

No errors

Plugin Config:

Screenshots:

Environment:

  • Plugin Version: 1.0.12
  • Homebridge Version: 1.3.4
  • Node.js Version: v14.17.0
  • NPM Version: v6.14.13
  • Operating System: macOS

Installation error regarding npm

Describe Your Problem:
Hi, I'm trying to install your plugin. However, it fails while providing a npm error message. What am I doing wrong? I never encountered that one before.

Thank you so much for publishing this plugin and your help!
Regards, Jonas

Logs:

17.5.2021, 16:59:31 npm
17.5.2021, 16:59:31  ERR! code ETARGET
17.5.2021, 16:59:31 npm
17.5.2021, 16:59:31 ERR! notarget No matching version found for qs@^6.10.1.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR!
17.5.2021, 16:59:31 notarget a package version that doesn't exist.

Environment:

  • Plugin Version: 0.2.3
  • Homebridge Version: 1.3.3
  • HOOBS Version: 3.3.5
  • Node.js Version: 14.16.0 LTS
  • NPM Version: 7.6.3
  • Operating System: Raspbian

Support for ThinQ1 Platform Type of Air Purifier

Which device do you want to add? Please describe:

I would like to add support for platformtype thinq1 of air purifier. (model number is below)

Describe the solution you'd like:

I would like to add the model like other air purifiers

Device Data:

[06/09/2021, 15:38:08] [LGThinQ] Found device:  {"deviceId":"d286fe90-7149-11d3-80f9-7440be39d655","deviceType":402,"modelName":"AIR_910604_WW","subModelNm":null,"sensorType":null,"alias":"공기청정기","deviceCode":"LI02","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"AIR_TYPE1","pccModelYn":"Y","autoOrderYn":"N","drServiceYn":"N","ssid":"pLacebo 2.4G","timezoneCode":"Asia/Seoul","timezoneCodeAlias":"Korea/Seoul","sdsGuide":"{\"deviceCode\":\"LI02\"}","newRegYn":"N","remoteControlType":"","fareTarget":null,"area":"226081","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20210830152035000","regIndex":0,"blackboxYn":null,"groupableYn":"N","controllableYn":"N","combinedProductYn":"N","masterYn":"Y","manufacture":null,"online":false,"platformType":"thinq1","homeDeviceOrder":-1,"roomDeviceOrder":1,"ownershipYn":"Y","modelJsonVer":"3.8","modelJsonUri":"https://kic.lgthinq.com:46030/api/webContents/modelJSON?modelName=modelJSON_401&countryCode=KR&contentsId=d286fe90-7149-11d3-80f9-7440be39d655&authKey=thinq","appModuleVer":"6.19","appModuleUri":"https://objectcontent.lgthinq.com/2c8e4434-45c9-43e1-bcc2-c6e8b417e1cf?hdnts=exp=1680772241~hmac=bf2952411448c6509bd02f1faf68c78d00628d7d5996d85650fbad7f71ba9f73","appRestartYn":"Y","appModuleSize":"13601540","langPackProductTypeVer":"27.69","langPackProductTypeUri":"https://objectcontent.lgthinq.com/941eb6db-848c-456d-879b-a382f6e74d14?hdnts=exp=1693461158~hmac=2b7696ecce6fa2b6b57e5e8a942bc43c9a72519143ae28a978bade7da260efa7","langPackModelVer":"","langPackModelUri":"","roomId":"163033762425461694","fwInfoList":null,"modemInfo":null,"existsEntryPopup":"N","fwVer":"2.6.2_RTOS_3K","modemVer":null,"subDeviceCount":0,"firebaseLogKey":"P:MD-T:G2-F:B","cardType":"Small","cardControl":"Base"}
[06/09/2021, 15:38:08] [LGThinQ] Device not supported: d286fe90-7149-11d3-80f9-7440be39d655: 공기청정기 (AIR_PURIFIER AIR_910604_WW)

Homebridge Integration with ThinQ for WasherDryer and Dishwasher

Describe Your Problem:

Installed plugin and configured username password used in ThinQ app but in logs can see authentication error even though entered correct password which can be seen in home bridge config as well.

Logs:

[24/04/2021, 19:38:06] [LGThinQ] AuthenticationError: IN
    at /usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/API.ts:62:13
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at API.login (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/API.ts:61:17)
    at API.ready (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/API.ts:186:22)
    at ThinQ.isReady (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/ThinQ.ts:40:7)
    at LGThinQHomebridgePlatform.discoverDevices (/usr/local/lib/node_modules/homebridge-lg-thinq/src/platform.ts:60:47)
    at HomebridgeAPI.<anonymous> (/usr/local/lib/node_modules/homebridge-lg-thinq/src/platform.ts:44:7)
[24/04/2021, 19:38:06] [LGThinQ] ThinQ API is not ready. please check configuration and try again.

Plugin Config:

 {
            "username": "s**ail***[email protected]",
            "password": "*yr*@***",
            "country": "US",
            "language": "en-US",
            "platform": "LGThinQ"
        }

Screenshots:

Environment:

  • Plugin Version: homebridge-lg-thinq v0.1.5
  • Homebridge Version: homebridge-config-ui-x v4.41.0
  • Node.js Version: v14.16.1
  • NPM Version: v7.11.1
  • Operating System: Raspbian - Homebridge

Washer machine generates 3 entities

Washer machine generates 3 entities:

  1. temperature sensor (always zero)
  2. button
  3. Faucet with current status <--- this one is correct and working as expected

is it ok?

Current Temperature NaN

Describe The Bug:
Temperature error in logs, not accurately displayed in HomeKit.

To Reproduce:
Happens consistently in my HomeBridge instance.

Expected behavior:
Accurate temperature information for refrigerator and freezer.

Logs:

[8/30/2021, 10:19:13 PM] [homebridge-lg-thinq] This plugin generated a warning from the characteristic 'Current Temperature': characteristic value expected valid finite number and received "NaN" (number). See https://git.io/JtMGR for more info.
[8/30/2021, 10:19:13 PM] [homebridge-lg-thinq] Error:
at CurrentTemperature.Characteristic.characteristicWarning (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Characteristic.ts:2038:105)
at CurrentTemperature.Characteristic.validateUserInput (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Characteristic.ts:1931:16)
at CurrentTemperature.Characteristic.updateValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Characteristic.ts:1379:20)
at Thermostat.Service.updateCharacteristic (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Service.ts:465:35)
at Refrigerator.updateAccessoryCharacteristic (/homebridge/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:82:24)
at EventEmitter.emit (events.js:400:28)
at /homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:167:25
at runMicrotasks ()
at processTicksAndRejections (internal/process/task_queues.js:95:5)

Plugin Config:

"username": "XXX",
"password": "XXX",
"country": "US",
"language": "en-US",
"thinq1": true,
"washer_trigger": false,
"platform": "LGThinQ",
"auth_mode": "token",
"refresh_token": "XXX",
"devices": [
{
"id": "XXX",
"name": "Refrigerator",
"type": "REFRIGERATOR",
"ac_mode": "BOTH",
"ac_swing_mode": "BOTH",
"ac_temperature_sensor": false,
"ac_led_control": false,
"ac_fan_control": false
}
],
"refresh_interval": 15,

Screenshots:

Environment:

  • Plugin Version: homebridge-lg-thinq v1.1.2
  • Homebridge Version: v1.3.4
  • Node.js Version: v14.17.5
  • NPM Version: v6.14.14
  • Operating System: Docker

Cannot add washer

Describe The Bug:
Adding a washer, error is written to the log.

To Reproduce:
Add a washer.

Expected behavior:

Logs:

9/5/2021, 10:55:36 PM] [LGThinQ] Adding new accessory: Washer
(node:482637) UnhandledPromiseRejectionWarning: TypeError: this.serviceWasherDryer.getCharacteristic(...).onSet is not a function
    at new WasherDryer (/homebridge/node_modules/homebridge-lg-thinq/src/devices/WasherDryer.ts:37:8)
    at LGThinQHomebridgePlatform.discoverDevices (/homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:125:25)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at HomebridgeAPI.<anonymous> (/homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:53:7)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:482637) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:482637) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Plugin Config:

{
    "country": "HU",
    "language": "hu-HU",
    "auth_mode": "token",
    "refresh_token": "MYTOKEN",
    "username": "",
    "password": "",
    "devices": [
        {
            "id": "MYDEVICEID",
            "name": "Washer",
            "type": "WASHER",
            "ac_mode": "BOTH",
            "ac_swing_mode": "BOTH",
            "ac_temperature_sensor": false,
            "ac_led_control": false,
            "ac_fan_control": false
        }
    ],
    "refresh_interval": 120,
    "thinq1": false,
    "platform": "LGThinQ"
}

Screenshots:

Environment:

  • Plugin Version: homebridge-lg-thinq v1.1.3
  • Homebridge Version: v1.2.5
  • Node.js Version: v14.15.5
  • NPM Version: v6.14.11
  • Operating System: Docker

LG Washer status unknown when powered off

Describe The Bug:

HomeKit reports status unknown when washer is off. Also, washer lock and unlock do nothing even when the washer is on and the door is locked the status doesn’t change to lock on HomeKit.

To Reproduce:

Expected behavior:

Logs:

Show the Homebridge logs here (make sure DEBUG mode in `on`), remove any sensitive information.

Plugin Config:

Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

  • Plugin Version:
  • Homebridge Version:
  • Node.js Version:
  • NPM Version:
  • Operating System:

Add support for WashTower

Which device do you want to add? Please describe:
LG WashTower Model #WKGX201HBSS (Spec sheet attached)

Describe the solution you'd like:
Monitor operational cycles for washer and dryer as two separate devices.

Device Data:

[5/30/2021, 8:07:03 AM] [LGThinQ] Found device: 769328ba-01d9-1b11-815c-f8b95a3561c0: Washer (undefined F3S1CWK__)
[5/30/2021, 8:07:03 AM] [LGThinQ] data: {"deviceId":"769328ba-01d9-1b11-815c-f8b95a3561c0","deviceType":221,"modelName":"F3S1CWK__","subModelNm":null,"sensorType":null,"alias":"Washer","deviceCode":"LA07","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"TYPE1","pccModelYn":"Y","autoOrderYn":"N","drServiceYn":"N","ssid":"Pergola","timezoneCode":"America/New_York","timezoneCodeAlias":"USA/New_York","sdsGuide":"","newRegYn":"N","remoteControlType":null,"fareTarget":null,"area":"334505","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20210416191928000","regIndex":0,"blackboxYn":"Y","groupableYn":"Y","controllableYn":"N","combinedProductYn":"Y","masterYn":"N","snapshot":{"washerDryer":{"rinseDefault":"AUTODETECT_MANUAL","smartCare_onOff":"SMARTCARE_BUTTON_OFF","initialTimeMinute":0,"preState":"INITIAL","dnn_temp":"20","drumLight":"DRUMLIGHT_OFF","washTime":"NO_WASHTIME","addGarment":"ADDGARMENT_OFF","dnn_precipitationProbability":"40","dnn_washingIndex":"75","autoSoak":"AUTOSOAK_OFF","dnnReady":"DNNREADY_OFF","preWash":"PREWASH_OFF","state":"POWEROFF","ezCSSoftenerSetVal":"EZCSSO_OFF","intensive":"INTENSIVE_OFF","wrinkleCare":"WRINKLECARE_OFF","downloadCourse":"RINSESPIN","smallUE":"SMALLUE_OFF","buzzer":"BUZZER_4","AIDDLed":"AIDDLed_OFF","cloudCourse":"NOT_SELECTED","dnn_humidity":"87","freshCare":"FRESHCARE_OFF","extraRinse":"EXTRARINSE_OFF","medicRinse":"MEDICRINSE_OFF","ezDispenseNotation":"ezDisNotation_ml","turboWash":"TURBOWASH_OFF","remainTimeMinute":1,"steamSoftener":"STEAMSOFTENER_OFF","warmWater":"WARMWATERT_OFF","delay":"DELAY_OFF","soak":"NO_SOAK","childLock":"CHILDLOCK_OFF","remoteStart":"REMOTE_START_OFF","rinseHold":"RINSE_HOLD_OFF","audibleSDS":"AUDIBLE_SDS_OFF","ezDispenseDrawerState":"ezDisDrawer_CLOSE","favorite":"FAVORITE_OFF","rinseSpin":"RINSE_SPIN_OFF","courseSpendWater":0,"autoDetection":"AUTO_DETECTION_OFF","laundryTexture":0,"standby":"STANDBY_OFF","timeSave":"TIMESAVE_OFF","speechRecognitionMode":"SPEECH_RECOGNITION_MODE_OFF","courseSpendPower":0,"error":"ERROR_NO","dryLevel":"NO_DRYLEVEL","ezDetergentState":"EZCSDT_NOT_EMPTY","washLoadDisplay":"WASHLOAD_DISPLAY_OFF","creaseCare":"CREASECARE_OFF","ezSoftenerAmount":0,"rinseCount":"NO_RINSE","course":"NOT_SELECTED","protocolVersion":0,"steam":"STEAM_OFF","sterilize":"STERILIZE_OFF","multiStain":"MULTISTAIN_OFF","rinse":"RINSE_NORMAL","temp":"NO_TEMP","doorLock":"DOORLOCK_OFF","reserveTimeMinute":0,"ezCSDetergentSetVal":"EZCSDT_OFF","loadItem":"LOADITEM_OFF","washingIndex":"75","baseDownloadCourseData":"NOT_SELECTED","TCLCount":8,"waterPlus":"WATERPLUS_OFF","smartGridEnable":"SMARTGRIDENABLE_OFF","fabricSoftener":"FABRIC_SOFTENER_OFF","saveEnergy":"SAVE_ENERGY_OFF","wifiSDS":"WIFI_SDS_OFF","ezSoftenerState":"EZCSSO_NOT_EMPTY","coolDown":"COOLDOWN_OFF","dnn_dust":"-","ecoHybrid":"ECOHYBRID_OFF","voiceState":"VOICESTATE_OFF","doorClose":"DOORCLOSE_OFF","spin":"NO_SPIN","ezDetergentAmount":0,"waterLevel":"WATERLEVEL_0","soilWash":"NO_SOILWASH","activeStandbyEnable":"AUTO_STANDBY_OFF","coldWash":"COLDWASH_OFF","loadLevel":"LOAD_AUTO_DETECT"},"mid":287202642,"online":true,"static":{"deviceType":"221","countryCode":"US"},"meta":{"allDeviceInfoUpdate":true,"messageId":"39lPipYtT4-hjajUtoCfyQ"},"timestamp":1622377577189},"manufacture":null,"online":true,"platformType":"thinq2","homeDeviceOrder":-1,"roomDeviceOrder":-1,"ownershipYn":"Y","modelJsonVer":"9.4","modelJsonUri":"https://objectcontent.lgthinq.com/b6e6e5f8-6289-4b09-873c-c007cea50288?hdnts=exp=1673490225~hmac=62b97250d0476e4bfdaf3785b08d53e1c7622bb0c35eb363d4f05c295c5a7c7b","appModuleVer":"3.51","appModuleUri":"https://objectcontent.lgthinq.com/62b9bb3d-f174-458a-b4b3-e30c7ba14a31?hdnts=exp=1684561803~hmac=4bffa2e0617b8faa0635532676e9e0b55277ccc841a5f2d65a3dbd476738f721","appRestartYn":"Y","appModuleSize":"5258056","langPackProductTypeVer":"80.5","langPackProductTypeUri":"https://objectcontent.lgthinq.com/a7e610e1-1ca3-4545-bc04-5c61ad83254b?hdnts=exp=1685083049~hmac=b366db5d6f9c4e01219e8303d6ebdaf71ecc0e9dad83d2afc087202caf378a18","langPackModelVer":"0.3","langPackModelUri":"https://objectstore.lgthinq.com/28fdac4b-755d-4c78-b901-54e5e521d7ff?Expires=1661645814&Signature=W1wGgOPcQ4vvjdTreBMNwHSfGC7QT92muGntFxi~XkNzUuI5PCyYSmcyI2nO27~A9FagJ9veaSF1dTkUcbUQlFEAqTlKcgkoxi5Zm9kZsXMNkFUb2XYNkiwUem4UCywIfKUG681jCEunzkfXGu9sh4yIyrLqKVb3NupEVo67-q1Y7uFzWbjdz~hQSov5~UKOFAMnJd5zUE4ks~PTXRyLLGvk6dnWT0HtGftYwKo88Pwjdjcr2xNJwk4G5jI7LJfYNdnEmIGq3t92nmbi-iHt3jamZC6U8AdehQRH-DHZ585uE~5yy5AKCzOr-4fRgHpZcecHgAtSZUdGEhjZew~MWA__&Key-Pair-Id=APKAI74R6YENXPGRIWLQ","roomId":"161859762791865546","fwInfoList":[{"checksum":"0000585A","partNumber":"SAA42102401","order":2},{"checksum":"0000A415","partNumber":"SAA42102301","order":1}],"modemInfo":{"modelName":"F3S1CWK__","appVersion":"clip_hna_v1.9.080","modemType":"QCOM_QCA4010","ruleEngine":"y"},"existsEntryPopup":"N","fwVer":null,"modemVer":null,"subDeviceCount":0,"firebaseLogKey":"T:LC-S:LC-U:4.5-P:KEPLER"}
[5/30/2021, 8:07:03 AM] [LGThinQ] Device not supported: 769328ba-01d9-1b11-815c-f8b95a3561c0: Washer (undefined F3S1CWK__)
[5/30/2021, 8:07:03 AM] [LGThinQ] Found device: 83f7c886-e876-125f-b299-f8b95a356217: WashTower (undefined W3S1CVK2EVS_D_US)
[5/30/2021, 8:07:03 AM] [LGThinQ] data: {"deviceId":"83f7c886-e876-125f-b299-f8b95a356217","deviceType":222,"modelName":"W3S1CVK2EVS_D_US","subModelNm":null,"sensorType":null,"alias":"WashTower","deviceCode":"LA06","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"TYPE1","pccModelYn":"Y","autoOrderYn":"N","drServiceYn":"N","ssid":"Pergola","timezoneCode":"America/New_York","timezoneCodeAlias":"USA/New_York","sdsGuide":"","newRegYn":"N","remoteControlType":null,"fareTarget":null,"area":"334505","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20210416191928000","regIndex":0,"blackboxYn":"Y","groupableYn":"Y","controllableYn":"N","combinedProductYn":"Y","masterYn":"Y","snapshot":{"washerDryer":{"initialBit":"INITIAL_BIT_OFF","smartCare_onOff":"SMARTCARE_BUTTON_OFF","initialTimeMinute":1,"preState":"INITIAL","downloadedCourseDryer27inchBase":"PERMPRESS","energySaver":"ENERGYSAVER_OFF","error":"ERROR_NO","dryLevel":"NO_DRYLEVEL","moreLessTime":0,"dnnReady":"DNNREADY_OFF","smartCourseDryer27inchBase":"NOT_SELECTED","remainTimeHour":0,"state":"POWEROFF","reduceStatic":"REDUCESTATIC_OFF","wrinkleCare":"WRINKLECARE_OFF","temp":"NO_TEMP","antiBacterial":"ANTIBACTERIAL_OFF","loadItem":"LOADITEM_OFF","AIDDLed":"AIDDLed_OFF","cloudCourse":"NOT_SELECTED","dampDrySignal":"DAMPDRYSIGNAL_OFF","timeDry":"TIMEDRY_OFF","remainTimeMinute":1,"courseDryer27inchBase":"NOT_SELECTED","easyIron":"EASYIRON_OFF","childLock":"CHILDLOCK_OFF","remoteStart":"REMOTE_START_OFF","turboSteam":"TURBOSTEAM_OFF","initialTimeHour":0},"mid":350167405,"online":true,"static":{"deviceType":"222","countryCode":"US"},"meta":{"allDeviceInfoUpdate":true,"messageId":"eCidgBMhT7ycrhGVp6yA7g"},"timestamp":1622377634350},"manufacture":null,"online":true,"platformType":"thinq2","homeDeviceOrder":-1,"roomDeviceOrder":-1,"ownershipYn":"Y","modelJsonVer":"3.0","modelJsonUri":"https://objectcontent.lgthinq.com/d3b8a3d0-3019-4229-a4ff-122ecf948a6f?hdnts=exp=1675409957~hmac=202ba30119caa4f769151e24abccc3b5ee52d3cd554b00d8042607ffb2adcccf","appModuleVer":"3.51","appModuleUri":"https://objectcontent.lgthinq.com/62b9bb3d-f174-458a-b4b3-e30c7ba14a31?hdnts=exp=1684561803~hmac=4bffa2e0617b8faa0635532676e9e0b55277ccc841a5f2d65a3dbd476738f721","appRestartYn":"Y","appModuleSize":"5258056","langPackProductTypeVer":"80.5","langPackProductTypeUri":"https://objectcontent.lgthinq.com/a7e610e1-1ca3-4545-bc04-5c61ad83254b?hdnts=exp=1685083049~hmac=b366db5d6f9c4e01219e8303d6ebdaf71ecc0e9dad83d2afc087202caf378a18","langPackModelVer":"0.4","langPackModelUri":"https://objectstore.lgthinq.com/ae5670c7-4c73-4f81-a05a-cbd06cc841cc?Expires=1661646940&Signature=KY~vyBNY-RKA9ICugMCdG3qNw1LuxmKmen3UU7~VHTrfZErUp9R6xPz~mZO0gyoCw22rl00cgbeM9oS9pfCl0cLlcE33~KK4eMj4Jh5hB0LKs6nBrgXZrU1Dff1v63HljKQRpyiGwOUIdIecOwkgI4EU7u0cvqWxcYjTHI9MVcIsSgbrhV1d5kiBkPrxGZcHixtDMuuV4oXVEHwiquo-xt-f5ykafVkkgBrdSmn1dINoxHhtULZSNL-3jaatHHlvXuVtAT8ruyk7nGdVUAN8yGvoviLqw2je8dLs3MZ03Uq86x0TQjHmHKKjOFh6bT8WJlBt6LmgdbfFoVQZovOkLw__&Key-Pair-Id=APKAI74R6YENXPGRIWLQ","roomId":"161859762791865546","fwInfoList":[{"checksum":"0000B7B2","partNumber":"SAA38964419","order":2},{"checksum":"0000FFDB","partNumber":"SAA38964313","order":1}],"modemInfo":{"modelName":"W3S1CVK2EVS_D_US","appVersion":"clip_hna_v1.9.080","modemType":"QCOM_QCA4010","ruleEngine":"y"},"existsEntryPopup":"N","fwVer":null,"modemVer":null,"subDeviceCount":0,"firebaseLogKey":"T:LC-S:LC-U:4.5-P:KEPLER"}
[5/30/2021, 8:07:03 AM] [LGThinQ] Device not supported: 83f7c886-e876-125f-b299-f8b95a356217: WashTower (undefined W3S1CVK2EVS_D_US)

WashTower Spec Sheet.pdf

Requesting help for ThinQ v1 air purifier support

Which device do you want to add? Please describe:

LG Air purifier AS128VWA (2018?)

Describe the solution you'd like:

I want basic control support for Fan speed, turning on/off, observe air quality sensor data.

Device Data:

(node:4292) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'type' of undefined
at DeviceModel.decodeMonitor (/homebridge/node_modules/homebridge-lg-thinq/src/lib/DeviceModel.ts:204:30)
at Function.transform (/homebridge/node_modules/homebridge-lg-thinq/src/v1/helper.ts:33:47)
at ThinQ.pollMonitor (/homebridge/node_modules/homebridge-lg-thinq/src/lib/ThinQ.ts:163:21)
at LGThinQHomebridgePlatform.discoverDevices (/homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:100:51)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at HomebridgeAPI. (/homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:53:7)
(Use node --trace-warnings ... to show where the warning was created)
(node:4292) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:4292) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

From the Homebridge GUI, it looks like the plugin correctly fetches device data but fails to interpret it dues to the device being an older version of ThinQ (even with ThinQ v1 compatibility option checked).

I tried making a fork of the older homebridge-wideq to successfully detect the device to at least be able to send ON/OFF control signals, but due to lack of my knowledge I couldn't really make any further progress. It would be really nice if this plugin could also add support for the "legacy legacy" devices.

I'd be happy to provide any further data if you need them.

Device locations get reset on Homebridge restart

Every time the HomeBridge is restarted, all my Thinq devices get reset and added as new devices, with all the room information lost. Furthermore, since adding my 2 Thinq ACs, on restarting, none of the ThinQ appliances show up and my other plugins become non-responsive. The only way to fix this that I have seen, is to remove the Homebridge from the Home app and add it again as a new accessory, upon which all the accessories are once again detected including the ThinQ ones from this plugin.

TypeError: Cannot use 'in' operator to search for 'TempRefrigerator_C'

Describe The Bug:
When adding a GF-B590PL refrigerator, the subject error is thrown.

To Reproduce:
Fresh install of HomeBridge, add plugin, have fridge included in accessories

Expected behavior:
Fridge to add successfully

Logs:

Starting to advertise 'Homebridge 7273 6670' using bonjour-hap backend!
[07/09/2021, 2:12:40 pm] Homebridge v1.3.4 (Homebridge 7273) is running on port 51601.

<< I've excluded the logs for my washer/dryer here, happy to provide if they'll add value, but I have no issues with those >>

[07/09/2021, 2:12:50 pm] [LGThinQ] Adding new accessory: Refrigerator
(node:30564) UnhandledPromiseRejectionWarning: TypeError: Cannot use 'in' operator to search for 'TempRefrigerator_C' in undefined
at DeviceModel.monitoringValueMapping (/usr/lib/node_modules/homebridge-lg-thinq/src/lib/DeviceModel.ts:160:14)
at Refrigerator.createThermostat (/usr/lib/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:212:53)
at Refrigerator.createThermostat (/usr/lib/node_modules/homebridge-lg-thinq/src/v1/devices/Refrigerator.ts:12:18)
at new Refrigerator (/usr/lib/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:35:31)
at new Refrigerator (/usr/lib/node_modules/homebridge-lg-thinq/src/v1/devices/Refrigerator.ts:5:1)
at LGThinQHomebridgePlatform.discoverDevices (/usr/lib/node_modules/homebridge-lg-thinq/src/platform.ts:125:25)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at HomebridgeAPI. (/usr/lib/node_modules/homebridge-lg-thinq/src/platform.ts:53:7)
(Use node --trace-warnings ... to show where the warning was created)
(node:30564) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:30564) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Plugin Config:

{
"bridge": {
"name": "Homebridge 7273",
"username": "----",
"port": 51601,
"pin": "----"
},
"accessories": [],
"platforms": [
{
"name": "Config",
"port": 8581,
"platform": "config"
},
{
"country": "AU",
"language": "en-AU",
"auth_mode": "token",
"refresh_token": "----",
"username": "----",
"password": "----",
"devices": [
{
"id": "1d6c7777-bf6c-1353-95a9-24e853db5e46",
"name": "Dryer",
"type": "DRYER"
},
{
"id": "d0f9c37a-42b9-1879-a103-dc039838787d",
"name": "Washer",
"type": "WASHER",
"washer_trigger": true,
"washer_door_lock": true
},
{
"id": "d74ed200-a234-11eb-8ae0-0051eda83e50",
"name": "Refrigerator",
"type": "REFRIGERATOR",
"ref_express_freezer": false,
"ref_express_fridge": false,
"ref_eco_friendly": false
}
],
"refresh_interval": 60,
"thinq1": true,
"platform": "LGThinQ"
}
]
}

Screenshots:

N/A

Environment:

  • Plugin Version: 1.1.4
  • Homebridge Version: 1.3.4
  • Node.js Version: 14.17.6
  • NPM Version: 6.14.15
  • Operating System: Debian 11 in a Proxmox VM

Longer or variable interval

Currently, polling interval is set to 5 seconds:

private readonly intervalTime = 5000; // 5 second

This generates quite a bit of traffic and seems overkill.

Any chance it can be either increased (I'm thinking that 60 seconds would be acceptable) or made configurable?

Thanks.

Where do you get the password?

The iOS mobile app does not require the user to create a password. Where can I go to get the required password to connect to Thinq?

Thanks!

Washer door

I’m writing this because I wanted to thank you for doing this plugin!
I have to ask two questions:

  1. Is it possible to add washer door sensor?
  2. is it possible to add power consumption in eve app?
    Thanks again

'Target Temperature': characteristic was supplied illegal value: number 0.6 exceeded minimum of 1.

Describe The Bug:
The error message is displayed in my logs every 15 seconds (polling time). The target temperature for both my freezer and refrigerator do not display correctly in the home app.

To Reproduce:
Reproducible every time.

Expected behavior:
Target temperatures to display the correct temperature.

Logs:

[9/21/2021, 9:31:23 AM] Registering platform 'homebridge-lg-thinq.LGThinQ'
[9/21/2021, 9:31:23 AM] [homebridge-lg-thinq] Loaded homebridge-lg-thinq v1.2.6 child bridge successfully
[9/21/2021, 9:31:24 AM] [homebridge-lg-thinq] Loading accessory from Homebridge cache: Refrigerator
Preparing Advertiser for 'homebridge-lg-thinq EFA1' using bonjour-hap backend!
[9/21/2021, 9:31:24 AM] [homebridge-lg-thinq] Executed didFinishLaunching callback
Starting to advertise 'homebridge-lg-thinq EFA1' using bonjour-hap backend!
[9/21/2021, 9:31:24 AM] Homebridge v1.3.4 (homebridge-lg-thinq) is running on port 41758.
[9/21/2021, 9:31:25 AM] [homebridge-lg-thinq] [request] get https://route.lgthinq.com:46030/v1/service/application/gateway-uri
[9/21/2021, 9:31:27 AM] [homebridge-lg-thinq] [request] post https://kic.lgthinq.com:46030/api/common/gatewayUriList
[9/21/2021, 9:31:30 AM] [homebridge-lg-thinq] [request] post https://us.lgeapi.com/oauth2/token
[9/21/2021, 9:31:31 AM] [homebridge-lg-thinq] [request] post https://aic.lgthinq.com:46030/api/member/login
[9/21/2021, 9:31:32 AM] [homebridge-lg-thinq] [request] get https://us.lgeapi.com/users/profile
[9/21/2021, 9:31:32 AM] [homebridge-lg-thinq] Successfully connected to the ThinQ API.
[9/21/2021, 9:31:32 AM] [homebridge-lg-thinq] [request] get https://aic-service.lgthinq.com:46030/v1/service/homes
[9/21/2021, 9:31:34 AM] [homebridge-lg-thinq] [request] get https://aic-service.lgthinq.com:46030/v1/service/homes/162226205558192254
[9/21/2021, 9:31:34 AM] [homebridge-lg-thinq] Device data: {"deviceId":"71996fa0-84f5-11ea-8592-b4e62a5e1be4","deviceType":101,"modelName":"2REF11EIIFM__","subModelNm":null,"sensorType":null,"alias":"Refrigerator","deviceCode":"KI0102","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"TYPE1","pccModelYn":"Y","autoOrderYn":"N","drServiceYn":"N","ssid":"2 Adults 1 Router","timezoneCode":"America/New_York","timezoneCodeAlias":"USA/New_York","sdsGuide":"{"deviceCode":"KI01"}","newRegYn":"N","remoteControlType":"","fareTarget":null,"area":"334505","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20210529043046000","regIndex":0,"blackboxYn":null,"groupableYn":"N","controllableYn":"N","combinedProductYn":"N","masterYn":"Y","manufacture":null,"online":false,"platformType":"thinq1","homeDeviceOrder":-1,"roomDeviceOrder":-1,"ownershipYn":"Y","modelJsonVer":"1.6","modelJsonUri":"https://aic.lgthinq.com:46030/api/webContents/modelJSON?modelName=2REF11EIIFM__&countryCode=WW&contentsId=WW21063007130974362151&authKey=thinq","appModuleVer":"303.28","appModuleUri":"https://objectcontent.lgthinq.com/418261f4-75d9-4653-a35b-b4025ab832e3?hdnts=exp=1690365986~hmac=52d3ea014f0bcba1c7c7d0591cae3111d3e29114cfee92b7c1058ea0f6c34844","appRestartYn":"Y","appModuleSize":"8319339","langPackProductTypeVer":"47.5","langPackProductTypeUri":"https://objectcontent.lgthinq.com/92f6f006-c100-4957-a349-345b1acbb48d?hdnts=exp=1694771376~hmac=7a80fee9757948997d1a38cf50c5b7c9215b683bb225fb1e5545625499c5210b","langPackModelVer":"","langPackModelUri":"","roomId":"162226273971725812","fwInfoList":null,"modemInfo":null,"existsEntryPopup":"N","fwVer":"QC_Modem_1.2.80","modemVer":null,"subDeviceCount":0,"firebaseLogKey":"T:RFBFFD-M:3D-P:A_MAJESTY1","cardType":"Small","cardControl":"Base"}
[9/21/2021, 9:31:34 AM] [homebridge-lg-thinq] [Refrigerator] Setting up device!
[9/21/2021, 9:31:34 AM] [homebridge-lg-thinq] [request] post https://aic.lgthinq.com:46030/api/rti/rtiMon
[9/21/2021, 9:31:34 AM] [homebridge-lg-thinq] Restoring existing accessory: 71996fa0-84f5-11ea-8592-b4e62a5e1be4: Refrigerator (REFRIGERATOR 2REF11EIIFM__)
[9/21/2021, 9:31:34 AM] [homebridge-lg-thinq] Start polling device data every 15 second.
[9/21/2021, 9:31:50 AM] [homebridge-lg-thinq] [request] post https://aic.lgthinq.com:46030/api/rti/rtiResult
[9/21/2021, 9:31:50 AM] [homebridge-lg-thinq] [Refrigerator] Received snapshot: {"refState":{"fridgeTemp":14,"freezerTemp":9,"atLeastOneDoorOpen":"CLOSE","tempUnit":"FAHRENHEIT","expressMode":"1"},"online":true,"raw":{"TempRefrigerator":"14","TempFreezer":"9","IcePlus":"1","FreshAirFilter":"2","SmartSavingMode":"0","WaterFilterUsedMonth":"5","DoorOpenState":"0","TempUnit":"0"}}
[9/21/2021, 9:31:50 AM] [homebridge-lg-thinq] This plugin generated a warning from the characteristic 'Target Temperature': characteristic was supplied illegal value: number 0.6 exceeded minimum of 1. See https://git.io/JtMGR for more info.
[9/21/2021, 9:31:50 AM] [homebridge-lg-thinq] Error:
at TargetTemperature.Characteristic.characteristicWarning (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Characteristic.ts:2038:105)
at TargetTemperature.Characteristic.validateUserInput (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Characteristic.ts:1946:16)
at TargetTemperature.Characteristic.updateValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Characteristic.ts:1379:20)
at Thermostat.Service.updateCharacteristic (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Service.ts:465:35)
at Refrigerator.updateAccessoryCharacteristic (/homebridge/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:110:26)
at Refrigerator.update (/homebridge/node_modules/homebridge-lg-thinq/src/baseDevice.ts:33:10)
at EventEmitter.emit (events.js:400:28)
at Timeout._onTimeout (/homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:224:25)
at processTicksAndRejections (internal/process/task_queues.js:95:5)

Plugin Config:

{
"username": "XXX",
"password": "XXX",
"country": "US",
"language": "en-US",
"thinq1": true,
"washer_trigger": false,
"platform": "LGThinQ",
"auth_mode": "token",
"refresh_token": "XXX",
"devices": [
{
"id": "71996fa0-84f5-11ea-8592-b4e62a5e1be4",
"name": "Refrigerator",
"type": "REFRIGERATOR",
"ac_mode": "BOTH",
"ac_swing_mode": "BOTH",
"ac_temperature_sensor": false,
"ac_led_control": false,
"ac_fan_control": false
}
],
"refresh_interval": 15,
"_bridge": {
"username": "XXX",
"port": 41758
}
}

Screenshots:

Environment:

  • Plugin Version: homebridge-lg-thinq v1.2.6
  • Homebridge Version: v1.3.4
  • Node.js Version: v14.17.6
  • NPM Version: v6.14.15
  • Operating System: Docker

[LGThinQ] TypeError: Cannot read property 'userNo' of undefined

Describe Your Problem:
Is the following error expected if none of my devices are currently supported?

Logs:

[23/04/2021, 08:32:25] [LGThinQ] TypeError: Cannot read property 'userNo' of undefined
    at API.getUserNumber (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/API.ts:253:25)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at API.ready (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/API.ts:207:25)
    at ThinQ.isReady (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/ThinQ.ts:40:7)
    at LGThinQHomebridgePlatform.discoverDevices (/usr/local/lib/node_modules/homebridge-lg-thinq/src/platform.ts:60:47)
    at HomebridgeAPI.<anonymous> (/usr/local/lib/node_modules/homebridge-lg-thinq/src/platform.ts:44:7)
[23/04/2021, 08:32:25] [LGThinQ] ThinQ API is not ready. please check configuration and try again.

Plugin Config:

{
    "bridge": {
        "name": "ToWn3r-Homebridge",
        "username": "0E:B8:73:D3:2C:C4",
        "port": 51554,
        "pin": "813-47-952",
        "bind": [
            "eth0"
        ],
        "advertiser": "ciao"
    },
    "accessories": [],
    "platforms": [
        {
            "name": "Config",
            "port": 1337,
            "auth": "none",
            "theme": "dark-mode-red",
            "tempUnits": "c",
            "lang": "en",
            "debug": false,
            "platform": "config"
        },
        {
            "username": "xxxxxxxxxxxxx",
            "password": "xxxxxxxxxx",
            "countryCode": "US",
            "devices": [
                {
                    "ipAddress": "192.168.1.8",
                    "serialNumber": "YN1-US-KDA0865A",
                    "credentials": "xxxxxxxxxxxxxxxxxx",
                    "enableAutoModeWhenActivating": false,
                    "enableOscillationWhenActivating": false,
                    "isNightModeEnabled": false,
                    "isJetFocusEnabled": false,
                    "isContinuousMonitoringEnabled": false,
                    "isTemperatureSensorEnabled": true,
                    "isHumiditySensorEnabled": true,
                    "isAirQualitySensorEnabled": true,
                    "isSingleSensorAccessoryModeEnabled": false,
                    "isSingleAccessoryModeEnabled": true,
                    "isFullRangeHumidity": false
                }
            ],
            "platform": "DysonPureCoolPlatform"
        },
        {
            "name": "Camera FFmpeg",
            "cameras": [
                {
                    "name": "ToWn3r-WyzeCam",
                    "manufacturer": "Wyze Labs, Inc.",
                    "model": "Cam v2",
                    "serialNumber": "3009180",
                    "firmwareRevision": "4.28.4.41",
                    "unbridge": true,
                    "videoConfig": {
                        "source": "-i rtsp://xxxxx:[email protected]/live",
                        "vcodec": "copy",
                        "audio": true,
                        "debug": false
                    }
                },
                {
                    "name": "ToWn3r-WyzePanCam",
                    "manufacturer": "Wyze Labs, Inc.",
                    "model": "Wyze Cam Pan",
                    "serialNumber": "3009180",
                    "firmwareRevision": "4.29.4.49",
                    "unbridge": true,
                    "videoConfig": {
                        "source": "-i rtsp://xxxxxxx:[email protected]/live",
                        "vcodec": "copy",
                        "audio": true,
                        "debug": false
                    }
                }
            ],
            "platform": "Camera-ffmpeg"
        },
        {
            "refreshToken": "xxxxxxxxxxxxxxxxxxx",
            "hideLightGroups": true,
            "hideDoorbellSwitch": true,
            "hideCameraMotionSensor": false,
            "hideCameraSirenSwitch": true,
            "hideInHomeDoorbellSwitch": true,
            "hideAlarmSirenSwitch": true,
            "hideUnsupportedServices": true,
            "debug": false,
            "locationModePollingSeconds": 0,
            "platform": "Ring"
        },
        {
            "app_list": false,
            "devices": [
                {
                    "name": "Frame TV",
                    "ip": "192.168.1.6",
                    "mac": "38:68:A4:0B:96:60",
                    "options": [
                        "Frame.ArtSwitch.Disable",
                        "Frame.PowerSwitch.Disable"
                    ],
                    "inputs": [
                        {
                            "type": "app"
                        }
                    ]
                }
            ],
            "platform": "SamsungTizen"
        },
        {
            "username": "xxxxxxxxx",
            "password": "xxxxxxxxx",
            "country": "US",
            "language": "en-US",
            "debug": false,
            "platform": "LGThinQ"
        }
    ]
}

Screenshots:
N/A

Environment:

  • Plugin Version: v0.1.2
  • Homebridge Version: v1.3.4
  • Node.js Version: v14.16.1
  • NPM Version: v7.9.0
  • Operating System: Raspbian GNU/Linux Buster (10)

Washer doesn’t work

Describe Your Problem:
Washer does not work. It shows up, but does not show on/off etc.

  • LG acc
  • Usr
  • PW
  • Country: SE
  • Lang: sv-SE
  • Refresh: 10s

ThinQ 1: Enabled

Logs:

10/08/2021, 15:13:09Lg Thinq Bridge starting
10/08/2021, 15:13:13Lg Thinq BridgeLoaded plugin 'homebridge-lg-thinq'
10/08/2021, 15:13:13Lg Thinq BridgeLoading 1 platforms...
10/08/2021, 15:13:13Lg Thinq BridgeLGThinQLoading accessory from cache: washing machine
10/08/2021, 15:13:13Lg Thinq BridgeBridge is running on port 51836.
10/08/2021, 15:13:19Lg Thinq BridgeWARNINGunhandled rejection: Error: 0002 - 전문오류

Plugin Config:
Only UI changes

Screenshots:

Environment:
rPi3B

  • Plugin Version:
    1.08

  • Homebridge Version:
    HOOBS Latest

  • Node.js Version:
    Latest HOOBS

  • NPM Version:

  • Operating System:
    HOOBS

Add device support for Range Hood

Which device do you want to add? Please describe:
LG Studio Range Hood

Describe the solution you'd like.
Turn hood lights on/off so I can tie them into the rest of the kitchen lights. Fan control is not essential for me at this point. And thanks for the already awesome plugin!

Device Data:
[2021-09-17, 9:40:01 p.m.] [LGThinQ] Found device: {"deviceId":"f07ee690-26a9-11ea-b0e9-0051ed5ab4f9","deviceType":304,"modelName":"STUDIO_HOOD","subModelNm":"","sensorType":null,"alias":"Hood","deviceCode":"KI09","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"TYPE1","pccModelYn":"N","autoOrderYn":"N","drServiceYn":"N","ssid":"VIDEOTRON6046","timezoneCode":"America/Toronto","timezoneCodeAlias":"USA/Toronto","sdsGuide":"{"deviceCode":"KI09"}","newRegYn":"N","remoteControlType":"","fareTarget":null,"area":"55488","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20200509232743000","regIndex":0,"blackboxYn":null,"groupableYn":"N","controllableYn":"N","combinedProductYn":"N","masterYn":"Y","manufacture":null,"online":false,"platformType":"thinq1","homeDeviceOrder":-1,"roomDeviceOrder":4,"ownershipYn":"Y","modelJsonVer":"0.5","modelJsonUri":"https://aic.lgthinq.com:46030/api/webContents/modelJSON?modelName=STUDIO_HOOD&countryCode=WW&contentsId=JS0915012713291927&authKey=thinq","appModuleVer":"1.05","appModuleUri":"https://objectcontent.lgthinq.com/8d3dd907-f121-44ab-830b-508c33bd6b87?hdnts=exp=1679822146~hmac=7755de9e0d067163a04a408984bbf51992cc763ab9ab6b05a7a8fb562c609e2c","appRestartYn":"Y","appModuleSize":"4481753","langPackProductTypeVer":"39.4","langPackProductTypeUri":"https://objectcontent.lgthinq.com/afb1539e-ff8c-48cc-a06b-2fe8026da4df?hdnts=exp=1693615578~hmac=80e1d5fad032615946aea38aeea571318e6ea2380043a856556d63254ec81f2d","langPackModelVer":"","langPackModelUri":"","roomId":"160053364678444632","fwInfoList":null,"modemInfo":null,"existsEntryPopup":"N","fwVer":"QC_Modem_1.2.80","modemVer":null,"subDeviceCount":0,"firebaseLogKey":"T:HD-B:Studio","cardType":"Small","cardControl":"Base"}
[2021-09-17, 9:40:02 p.m.] [LGThinQ] Device not supported: f07ee690-26a9-11ea-b0e9-0051ed5ab4f9: Hood (HOOD STUDIO_HOOD)

Unhandled Exceptions

Describe The Bug:
My LG Tinq1 device is added (Refrigerator) but keep getting errors on all sensors and will not update.

To Reproduce:

Expected behavior:
No errors and attribute updates.

Logs:

[8/25/2021, 8:07:54 AM] [homebridge-lg-thinq] This plugin generated a warning from the characteristic 'Current Temperature': characteristic value expected valid finite number and received "NaN" (number). See https://git.io/JtMGR for more info.
(node:91934) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'options' of null
at DeviceModel.enumValue (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/DeviceModel.ts:133:51)
at DeviceModel.lookupMonitorName (/usr/local/lib/node_modules/homebridge-lg-thinq/src/lib/DeviceModel.ts:181:19)
at Status.get isExpressFridgeOn [as isExpressFridgeOn] (/usr/local/lib/node_modules/homebridge-lg-thinq/src/v1/devices/Refrigerator.ts:65:58)
at Refrigerator.updateAccessoryCharacteristic (/usr/local/lib/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:93:85)
at EventEmitter.emit (events.js:400:28)
at /usr/local/lib/node_modules/homebridge-lg-thinq/src/platform.ts:167:25
at runMicrotasks ()
at processTicksAndRejections (internal/process/task_queues.js:95:5)
(node:91934) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 68)

Plugin Config:

Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

  • Plugin Version: 1.1.1
  • Homebridge Version: 1.3.4
  • Node.js Version: 14.17.5
  • NPM Version: 6.14.14
  • Operating System: Mac

I have got a problem about authenticationError: Already in use by 3rd-Party Registeration:GGL

Describe The Bug:
I have got a problem about authenticationError: Already in use by 3rd-Party Registeration:GGL.
I usually log on LG Thinq App with Google Email. so I installed this plug-in and configured My account setting.
but I have got a log about authenticationError: Already in use by 3rd-Party Registeration:GGL. how can I fix it?
Is it not support 3rd-Party log in LG Thinq App?

Logs:
[5/13/2021, 1:36:13 PM] [LGThinQ] AuthenticationError: Already in use by 3rd-Party Registeration:GGL
at /homebridge/node_modules/homebridge-lg-thinq/src/lib/Auth.ts:57:13
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at Auth.login (/homebridge/node_modules/homebridge-lg-thinq/src/lib/Auth.ts:51:17)
at API.ready (/homebridge/node_modules/homebridge-lg-thinq/src/lib/API.ts:144:22)
at ThinQ.isReady (/homebridge/node_modules/homebridge-lg-thinq/src/lib/ThinQ.ts:122:7)
at LGThinQHomebridgePlatform.discoverDevices (/homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:65:47)
at HomebridgeAPI. (/homebridge/node_modules/homebridge-lg-thinq/src/platform.ts:49:7)

Plugin Config:

{
            "username": "n*********@gmail.com",
            "password": "*****!",
            "country": "KR",
            "language": "ko-KR",
            "platform": "LGThinQ"
        }

Screenshots:

Environment:

  • Plugin Version: homebridge-lg-thinq v0.2.2-test.10
  • Homebridge Version: v1.3.4
  • Node.js Version: v14.16.1
  • NPM Version: 6.14.12
  • Operating System: Docker

Version 1.0.0

Error message:

29.7.2021, 19:09:01LG ThinQ BridgeWARNUNGunhandled rejection: TypeError: Cannot read property 'washer_trigger' of undefined

Plugin problem with Hoobs

Hi I'm testing this plugin on Hoobs. I entered the correct credentials. But it doesn't work. I am attaching the log. Can you help me?
[LGThinQ] Unknown Error: Error: Request failed with status code 406
at createError (/home/hoobs/.hoobs/node_modules/axios/lib/core/createError.js:16:15)
at settle (/home/hoobs/.hoobs/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/home/hoobs/.hoobs/node_modules/axios/lib/adapters/http.js:269:11)
at IncomingMessage.emit (events.js:215:7)
at endReadableNT (_stream_readable.js:1184:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
config: {
url: 'https://it.emp.lgsmartplatform.com/emp/v2.0/account/session/xxxxxxxxx8905%40gmail.com',
method: 'post',
data: 'user_auth2=9dhCLHO3cgE6a7IunbAxRNGVx%2B%2BGcdZG%2F6tDsufwpK9hIH%2BCoCfCpAjrcEjPPLnVZtPLIrLx0UYL1rPT02NPRy7aQpZGHndBAnt7FZ8uUFxOdc9WZ5ACUJdatdKM7aIFBqMea2Qsg%2BFO8mo1yDFIxh0pUFycuGPu58L9jp9sqRR%2Bc9ARsHsZaDiFTodNDDhM&password_hash_prameter_flag=Y&svc_list=SVC202%2CSVC710',
headers: {
Accept: 'application/json',
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'X-Application-Key': '6V1V8H2BN5P9ZQGOI5DAQ92YZBDO3EK9',
'X-Client-App-Key': 'LGAO221A02',
'X-Lge-Svccode': 'SVC709',
'X-Device-Type': 'M01',
'X-Device-Platform': 'ADR',
'X-Device-Language-Type': 'IETF',
'X-Device-Publish-Flag': 'Y',
'X-Device-Country': 'IT',
'X-Device-Language': 'it-IT',
'X-Signature': 'GCr5jRgfS3rbBId0UbO3sjukUgfdI9iZFCct5L0Fdis=',
'X-Timestamp': '1631694284',
'Access-Control-Allow-Origin': '*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'User-Agent': 'axios/0.21.4',
'Content-Length': 270
},
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus],
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
}
},
request: ClientRequest {
_events: [Object: null prototype] {
socket: [Function],
abort: [Function],
aborted: [Function],
connect: [Function],
error: [Function],
timeout: [Function],
prefinish: [Function: requestOnPrefinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
_SNICallback: null,
servername: 'it.emp.lgsmartplatform.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 9,
connecting: false,
_hadError: false,
_parent: null,
_host: 'it.emp.lgsmartplatform.com',
_readableState: [ReadableState],
readable: true,
_maxListeners: undefined,
_writableState: [WritableState],
writable: false,
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular],
[Symbol(res)]: [TLSWrap],
[Symbol(asyncId)]: 881,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object]
},
connection: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
_SNICallback: null,
servername: 'it.emp.lgsmartplatform.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 9,
connecting: false,
_hadError: false,
_parent: null,
_host: 'it.emp.lgsmartplatform.com',
_readableState: [ReadableState],
readable: true,
_maxListeners: undefined,
_writableState: [WritableState],
writable: false,
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular],
[Symbol(res)]: [TLSWrap],
[Symbol(asyncId)]: 881,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object]
},
_header: 'POST /emp/v2.0/account/session/xxxxxxxxxxx8905%40gmail.com HTTP/1.1\r\n' +
'Accept: application/json\r\n' +
'Content-Type: application/x-www-form-urlencoded;charset=UTF-8\r\n' +
'X-Application-Key: 6V1V8H2BN5P9ZQGOI5DAQ92YZBDO3EK9\r\n' +
'X-Client-App-Key: LGAO221A02\r\n' +
'X-Lge-Svccode: SVC709\r\n' +
'X-Device-Type: M01\r\n' +
'X-Device-Platform: ADR\r\n' +
'X-Device-Language-Type: IETF\r\n' +
'X-Device-Publish-Flag: Y\r\n' +
'X-Device-Country: IT\r\n' +
'X-Device-Language: it-IT\r\n' +
'X-Signature: GCr5jRgfS3rbBId0UbO3sjukUgfdI9iZFCct5L0Fdis=\r\n' +
'X-Timestamp: 1631694284\r\n' +
'Access-Control-Allow-Origin: \r\n' +
'Accept-Encoding: gzip, deflate, br\r\n' +
'Accept-Language: en-US,en;q=0.9\r\n' +
'User-Agent: axios/0.21.4\r\n' +
'Content-Length: 270\r\n' +
'Host: it.emp.lgsmartplatform.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_onPendingData: [Function: noopPendingOutput],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object],
requests: {},
sockets: [Object],
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: [Object]
},
socketPath: undefined,
method: 'POST',
path: '/emp/v2.0/account/session/xxxxxxxxxx8905%40gmail.com',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
readable: false,
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
socket: [TLSSocket],
connection: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
headers: [Object],
rawHeaders: [Array],
trailers: {},
rawTrailers: [],
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 406,
statusMessage: '406',
client: [TLSSocket],
_consuming: false,
_dumped: false,
req: [Circular],
responseUrl: 'https://it.emp.lgsmartplatform.com/emp/v2.0/account/session/xxxxxxxxxxxxx8905%40gmail.com',
redirects: []
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
_redirectable: Writable {
_writableState: [WritableState],
writable: true,
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 270,
_requestBodyBuffers: [],
_onNativeResponse: [Function],
_currentRequest: [Circular],
_currentUrl: 'https://it.emp.lgsmartplatform.com/emp/v2.0/account/session/xxxxxxxxxxxxxx8905%40gmail.com'
},
[Symbol(kNeedDrain)]: false,
[Symbol(isCorked)]: false,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'content-type': [Array],
'x-application-key': [Array],
'x-client-app-key': [Array],
'x-lge-svccode': [Array],
'x-device-type': [Array],
'x-device-platform': [Array],
'x-device-language-type': [Array],
'x-device-publish-flag': [Array],
'x-device-country': [Array],
'x-device-language': [Array],
'x-signature': [Array],
'x-timestamp': [Array],
'access-control-allow-origin': [Array],
'accept-encoding': [Array],
'accept-language': [Array],
'user-agent': [Array],
'content-length': [Array],
host: [Array]
}
},
response: {
status: 406,
statusText: '406',
headers: {
'access-control-allow-headers': 'Origin, Access-Control-Allow-Origin, X-Device-Language-Type, X-Lge-System-Id, X-Application-Key, X-Device-Country, X-Device-Language, X-Device-Platform, X-Platform-Code, X-Platform-Version, X-Device-Publish-Flag, X-Device-Type, X-Lge-Svccode, X-Signature, X-Timestamp, X-Login-Session, Content-Type, Accept, X-Device-Id, X-Client-App-Key, X-Device-Model, X-Device-SDK-VERSION, X-Device-FCK, X-Device-Country-Group, X-Device-Netcast-Platform-Version, X-Device-FW-Version, X-Device-Locale, X-Device-Remote-Flag, X-Authentication, X-Device-Product, X-Device-Sales-Model, X-Device-Eco-Info, X-Device-Personalization',
'access-control-allow-methods': 'OPTIONS,POST,PUT,GET,DELETE',
'access-control-allow-origin': '',
'content-type': 'application/json;charset=UTF-8',
date: 'Wed, 15 Sep 2021 08:24:46 GMT',
server: 'Apache',
'set-cookie': [Array],
'x-server-time': 'Wed, 15 Sep 2021 08:24:46 GMT',
'content-length': '189',
connection: 'Close'
},
config: {
url: 'https://it.emp.lgsmartplatform.com/emp/v2.0/account/session/xxxxxxxxxxxxx8905%40gmail.com',
method: 'post',
data: 'user_auth2=9dhCLHO3cgE6a7IunbAxRNGVx%2B%2BGcdZG%2F6tDsufwpK9hIH%2BCoCfCpAjrcEjPPLnVZtPLIrLx0UYL1rPT02NPRy7aQpZGHndBAnt7FZ8uUFxOdc9WZ5ACUJdatdKM7aIFBqMea2Qsg%2BFO8mo1yDFIxh0pUFycuGPu58L9jp9sqRR%2Bc9ARsHsZaDiFTodNDDhM&password_hash_prameter_flag=Y&svc_list=SVC202%2CSVC710',
headers: [Object],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus],
transitional: [Object]
},
request: ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: [TLSSocket],
connection: [TLSSocket],
_header: 'POST /emp/v2.0/account/session/xxxxxxxxxxxx8905%40gmail.com HTTP/1.1\r\n' +
'Accept: application/json\r\n' +
'Content-Type: application/x-www-form-urlencoded;charset=UTF-8\r\n' +
'X-Application-Key: 6V1V8H2BN5P9ZQGOI5DAQ92YZBDO3EK9\r\n' +
'X-Client-App-Key: LGAO221A02\r\n' +
'X-Lge-Svccode: SVC709\r\n' +
'X-Device-Type: M01\r\n' +
'X-Device-Platform: ADR\r\n' +
'X-Device-Language-Type: IETF\r\n' +
'X-Device-Publish-Flag: Y\r\n' +
'X-Device-Country: IT\r\n' +
'X-Device-Language: it-IT\r\n' +
'X-Signature: GCr5jRgfS3rbBId0UbO3sjukUgfdI9iZFCct5L0Fdis=\r\n' +
'X-Timestamp: 1631694284\r\n' +
'Access-Control-Allow-Origin: *\r\n' +
'Accept-Encoding: gzip, deflate, br\r\n' +
'Accept-Language: en-US,en;q=0.9\r\n' +
'User-Agent: axios/0.21.4\r\n' +
'Content-Length: 270\r\n' +
'Host: it.emp.lgsmartplatform.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_onPendingData: [Function: noopPendingOutput],
agent: [Agent],
socketPath: undefined,
method: 'POST',
path: '/emp/v2.0/account/session/xxxxxxxxxxxx8905%40gmail.com',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
_redirectable: [Writable],
[Symbol(kNeedDrain)]: false,
[Symbol(isCorked)]: false,
[Symbol(kOutHeaders)]: [Object: null prototype]
},
data: { error: [Object] }
},
isAxiosError: true,
toJSON: [Function: toJSON]
}
15/9/2021, 10:24:47 [LGThinQ] ThinQ API is not ready. please check configuration and try again.

Errors in log that kill the plugin

Describe The Bug:
Apparently there is no "label" attribute for refrigerator and freezer temperatures in some cases. This kills the plugin.

To Reproduce:
Restart Homebridge

Expected behavior:
It should just work

Logs:

[12/07/2021, 10:17:30] [LGThinQ] Adding new accessory: Refrigerator
[Refrigerator@Fridge@Service Label Index] Characteristic not in required or optional characteristic section for service Thermostat. Adding anyway.
[Refrigerator@Freezer@Service Label Index] Characteristic not in required or optional characteristic section for service Thermostat. Adding anyway.
(node:14547) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'label' of undefined
    at RefrigeratorStatus.get freezerTemperature [as freezerTemperature] (/usr/lib/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:185:58)
    at Refrigerator.updateAccessoryCharacteristic (/usr/lib/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:73:93)
    at new Refrigerator (/usr/lib/node_modules/homebridge-lg-thinq/src/devices/Refrigerator.ts:58:10)
    at LGThinQHomebridgePlatform.discoverDevices (/usr/lib/node_modules/homebridge-lg-thinq/src/platform.ts:110:25)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at HomebridgeAPI.<anonymous> (/usr/lib/node_modules/homebridge-lg-thinq/src/platform.ts:49:7)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:14547) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 8)
(node:14547) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Plugin Config:

        {
            "username": "[email protected]",
            "password": "xxx",
            "country": "US",
            "language": "en-US",
            "thinq1": true,
            "washer_trigger": false,
            "platform": "LGThinQ"
        }

Screenshots:

Environment:

  • Plugin Version: v0.2.12
  • Homebridge Version: v1.3.3
  • Node.js Version: v14.16.0
  • NPM Version: 7.19.1
  • Operating System: raspbain

Version 1.0.0

Hey,
so with version 1.0.0, if I by mistake click on the device in HK or Homebridge, the device enters the "not connected" state and wont get out of it until I restart the bridge.

My washer/dryer does not start with the "LG App" because when turned off - no WIFI.
Even when I try to shut it off by clicking the device in HK or in Homebridge it does not work. (that does not work even bevor with ver. 0.2...)

(Lack of WASHER/DRYER in your device settings?)

LG LSWD100 Signature

Hi, my washer/dryer shows up in HK.
I don't know how I can help you but it would be nice if there will be support for the integrated tank system of the detergent and softener.

AC | Automatic Mode

Which device do you want to add? Please describe:

So, it's possible to add Automatic mode to AC devices?

Describe the solution you'd like:

I want to open the AC tile and choose the Automatic mode from there, or call Siri to set Auto mode to my AC.

Device Data:

[26/08/2021, 12:26:54] [LGThinQ] Found device: {"deviceId":"1203e153-b82f-10c6-ba29-402f86ba111d","deviceType":401,"modelName":"RAC_056905_WW","subModelNm":null,"sensorType":null,"alias":"AC Office","deviceCode":"AI01","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"RAC_TYPE1","pccModelYn":"N","autoOrderYn":"N","drServiceYn":"N","ssid":"Convenant","timezoneCode":"Europe/Lisbon","timezoneCodeAlias":"Europe/Lisbon","sdsGuide":"{"deviceCode":"AI01"}","newRegYn":"N","remoteControlType":"","fareTarget":null,"area":"274087","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20210814212717000","regIndex":0,"blackboxYn":"Y","groupableYn":"Y","controllableYn":"Y","combinedProductYn":"N","masterYn":"Y","snapshot":{"airState.windStrength":6,"airState.wMode.lowHeating":0,"airState.diagCode":0,"airState.lightingState.displayControl":0,"airState.wDir.hStep":1,"mid":177704725,"airState.energy.onCurrent":0,"airState.wMode.airClean":0,"airState.quality.sensorMon":0,"airState.tempState.target":18,"airState.operation":1,"airState.wMode.jet":1,"airState.wDir.vStep":0,"timestamp":1629977079778,"airState.powerSave.basic":0,"static":{"deviceType":"401","countryCode":"PT"},"airState.tempState.current":27,"airState.miscFuncState.extraOp":0,"airState.reservation.sleepTime":0,"airState.miscFuncState.autoDry":0,"airState.reservation.targetTimeToStart":0,"meta":{"allDeviceInfoUpdate":false,"messageId":"Juv29g-BQ0WPZpG73ezw8A"},"online":true,"airState.opMode":0,"airState.reservation.targetTimeToStop":0,"airState.filterMngStates.maxTime":0,"airState.filterMngStates.useTime":0},"manufacture":null,"online":true,"platformType":"thinq2","homeDeviceOrder":-1,"roomDeviceOrder":-1,"ownershipYn":"Y","modelJsonVer":"11.74","modelJsonUri":"https://objectcontent.lgthinq.com/305d0a52-4b42-4b0f-899b-bb4f1a002704?hdnts=exp=1692048448~hmac=18e9d4b13d80562e727a4c2c701dfccbb419e14f395b6a64ac97c82519d73fc8","appModuleVer":"16.32","appModuleUri":"https://objectcontent.lgthinq.com/6c1a78d3-0404-4712-a5bc-2bc3d9e072b8?hdnts=exp=1685169055~hmac=8b538678344ed708bd929b66403d075c761cc94be01589d82200ab3e93c3fa57","appRestartYn":"Y","appModuleSize":"13305760","langPackProductTypeVer":"51.5","langPackProductTypeUri":"https://objectcontent.lgthinq.com/502e6bbb-7384-4e48-8100-925291cc7fc4?hdnts=exp=1689818995~hmac=489305f6b76cc281af17c078a7c23c058d6426988fb34706dc2e85a8020aaec0","langPackModelVer":null,"langPackModelUri":null,"roomId":"","fwInfoList":[{"checksum":"00000409","partNumber":"SAA38690409","order":1}],"modemInfo":{"modelName":"RAC_056905_WW","appVersion":"clip_hna_v1.9.104","modemType":"QCOM_QCA4010","ruleEngine":"y"},"existsEntryPopup":"N","fwVer":null,"modemVer":"clip_hna_v1.9.104","subDeviceCount":0,"firebaseLogKey":"P:SD","cardType":"Small","cardControl":"Base"}

AC | Light button

Describe The Bug:
The light button doesn't work at all on my model and this model has this feature.
Model: RAC_056905_WW

To Reproduce:

Expected behavior:
Turn off the light from AC

Logs:
Doesn't return any log

Plugin Config:

Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

  • Plugin Version: 1.1.0
  • Homebridge Version:
  • Node.js Version:
  • NPM Version:
  • Operating System: Raspbian

Support for Window AC

Which device do you want to add? Please describe:
I would like to add support for window AC units.

Describe the solution you'd like:
I would like to control the thermostat and heating/cooling modes.

Device Data:
Device not supported: c3fc01e8-9330-16c1-93b2-1c392912c6a5: Attic (AC WIN_056905_WW)

Error Log

Describe The Bug:
Theres a error log when use the commands of AC

To Reproduce:

Change the temperature

Expected behavior:

Logs:

Show the Homebridge logs here (make sure DEBUG mode in `on`), remove any sensitive information.

[26/08/2021, 12:15:40] [LGThinQ] {
status: 400,
statusText: '400',
headers: {
date: 'Thu, 26 Aug 2021 11:15:40 GMT',
'content-type': 'application/json;charset=UTF-8',
'content-length': '42',
connection: 'close'
},
config: {
method: 'post',
data: '{"ctrlKey":"basicCtrl","command":"Operation","dataKey":"airState.operation","dataValue":1}',
headers: {
Accept: 'application/json, text/plain, /',
'Content-Type': 'application/json;charset=utf-8',
'x-api-key': 'VGhpblEyLjAgU0VSVklDRQ==',
'x-client-id': '0396d48364f9a25824a3121758b512686f0ead3a5a4349b5b76f0febcd1809ea',
'x-thinq-app-ver': '3.5.1700',
'x-thinq-app-type': 'NUTS',
'x-thinq-app-level': 'PRD',
'x-thinq-app-os': 'ANDROID',
'x-thinq-app-logintype': 'LGE',
'x-service-code': 'SVC202',
'x-country-code': 'PT',
'x-language-code': 'pt-PT',
'x-service-phase': 'OP',
'x-origin': 'app-native',
'x-model-name': 'samsung / SM-N950N',
'x-os-version': '7.1.2',
'x-app-version': '3.5.1721',
'x-message-id': 'Oa7LnJrw76RiFwLDt3q6Pq',
'User-Agent': 'axios/0.21.1',
'Content-Length': 90
},
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus]
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
prefinish: [Function: requestOnPrefinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'eic-service.lgthinq.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 10,
connecting: false,
_hadError: false,
_parent: null,
_host: 'eic-service.lgthinq.com',
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
[Symbol(res)]: [TLSWrap],
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 9558,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(kSetNoDelay)]: false,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object],
[Symbol(RequestTimeout)]: undefined
},
_header: 'POST /v1/service/devices/1203e153-b82f-10c6-ba29-402f86ba111d/control-sync HTTP/1.1\r\n' +
'Accept: application/json, text/plain, /\r\n' +
'Content-Type: application/json;charset=utf-8\r\n' +
'x-api-key: VGhpblEyLjAgU0VSVklDRQ==\r\n' +
'x-client-id: 0396d48364f9a25824a3121758b512686f0ead3a5a4349b5b76f0febcd1809ea\r\n' +
'x-thinq-app-ver: 3.5.1700\r\n' +
'x-thinq-app-type: NUTS\r\n' +
'x-thinq-app-level: PRD\r\n' +
'x-thinq-app-os: ANDROID\r\n' +
'x-thinq-app-logintype: LGE\r\n' +
'x-service-code: SVC202\r\n' +
'x-country-code: PT\r\n' +
'x-language-code: pt-PT\r\n' +
'x-service-phase: OP\r\n' +
'x-origin: app-native\r\n' +
'x-model-name: samsung / SM-N950N\r\n' +
'x-os-version: 7.1.2\r\n' +
'x-app-version: 3.5.1721\r\n' +
'x-message-id: Oa7LnJrw76RiFwLDt3q6Pq\r\n' +
'User-Agent: axios/0.21.1\r\n' +
'Content-Length: 90\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: noopPendingOutput],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object],
requests: {},
sockets: [Object],
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 2,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
headers: [Object],
rawHeaders: [Array],
trailers: {},
rawTrailers: [],
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 400,
statusMessage: '400',
client: [TLSSocket],
_consuming: false,
_dumped: false,
req: [Circular *1],
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(RequestTimeout)]: undefined
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'eic-service.lgthinq.com',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 90,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'content-type': [Array],
'x-api-key': [Array],
'x-client-id': [Array],
'x-thinq-app-ver': [Array],
'x-thinq-app-type': [Array],
'x-thinq-app-level': [Array],
'x-thinq-app-os': [Array],
'x-thinq-app-logintype': [Array],
'x-service-code': [Array],
'x-country-code': [Array],
'x-language-code': [Array],
'x-service-phase': [Array],
'x-origin': [Array],
'x-model-name': [Array],
'x-os-version': [Array],
'x-app-version': [Array],
'x-message-id': [Array],
'x-emp-token': [Array],
'x-user-no': [Array],
'user-agent': [Array],
'content-length': [Array],
host: [Array]
}
},
data: { resultCode: '0103', result: { data: '' } }
}

Plugin Config:

Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

  • Plugin Version: 1.1.1
  • Homebridge Version: 1.3.4
  • Node.js Version:
  • NPM Version:
  • Operating System: Raspbian

Support for AC (both thinq1 & thinq2)

Hello everyone, I'm developing AC support for this plugin. A big problem is I don't have AC for testing it 😶‍🌫️, so please if you have AC and you want to support this plan, please help me test and report bug.

I'll update all information here

Latest testing version

v1.1.0-ac.17

Everything almost done, just need to test

How to install testing version

Select Install Previous Version in Homebridge UI X, choose version started with v1.1.0-ac.x

Screen Shot 2021-08-08 at 6 44 40 PM

AC Feature list

  • On/Off - worked on both thinq1 / thinq2
  • Control temperature - need testing
  • Air quality - online available in some model
  • Swing mode - on/off only, cannot variable it
  • Fan speed - worked
  • Led control feature (need enable it in config)
  • Jet mode, only in: RAC_056905_WW, RAC_056905_CA, if your model have this mode, please let me know
  • Change AC mode to HEAT or COOL

Button Washer finished

Hey, I don't know if I am confused but the washer finished Button does not work (maybe with my washer/dryer).

IT's a button. Who or what does press it?

I have tested this by setting up a light or a sound to be played if this button is pressed - nothing.

Nothing will trigger this button I watched it in HK.

The only thing to trigger a finished washer is to set an automation that reacts to the remaining time. But my problem here is, that the time is not linear. It depends on the washer. If the time runs out and the washer desires to e.g. dry 2min more the time will refresh. So I will get a Lot of notification until the washer is really finished.

Can you explain how the program finished button should work?

MQTT listener error? status code 400

Hi, there is some error after the MQTT listener, See below:

12.9.2021, 07:41:27LG ThinQ BridgeInitializing HAP-NodeJS v0.9.4...
12.9.2021, 07:41:28LG ThinQ BridgeLoaded plugin 'homebridge-lg-thinq'
12.9.2021, 07:41:28LG ThinQ BridgeRegistering platform 'homebridge-lg-thinq.LGThinQ'
12.9.2021, 07:41:28LG ThinQ BridgeLoading 1 platforms...
12.9.2021, 07:41:28LG ThinQ BridgeLGThinQLoading accessory from cache: Waschmaschine
12.9.2021, 07:41:28LG ThinQ BridgeLGThinQExecuted didFinishLaunching callback
12.9.2021, 07:41:28LG ThinQ BridgePreparing Advertiser for 'LG ThinQ Bridge 8502' using bonjour-hap backend!
12.9.2021, 07:41:28LG ThinQ BridgeSetup URI 'X-HM://0023ISYWY4SL9'
12.9.2021, 07:41:28LG ThinQ BridgeStarting to advertise 'LG ThinQ Bridge 8502' using bonjour-hap backend!
12.9.2021, 07:41:28LG ThinQ BridgeBridge is running on port 52826.
12.9.2021, 07:41:33LG ThinQ BridgeLGThinQFound device: {"deviceId":"0776fc24-e9de-1726-82d2-44cb8be1cfbe","deviceType":201,"modelName":"FH6G1BAPK2_WW_SPI","subModelNm":null,"sensorType":null,"alias":"Waschmaschine","deviceCode":"LA02","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"TYPE1","pccModelYn":"N","autoOrderYn":"N","drServiceYn":"N","ssid":"XXX","timezoneCode":"Europe/Berlin","timezoneCodeAlias":"Europe/Berlin","sdsGuide":"{"deviceCode":"LA02"}","newRegYn":"N","remoteControlType":"","fareTarget":null,"area":"990653","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20210430095037000","regIndex":0,"blackboxYn":"Y","groupableYn":"N","controllableYn":"N","combinedProductYn":"N","masterYn":"Y","snapshot":{"washerDryer":{"myPattern2Detergent":"DETERGENT_OFF","addedDT":0,"dnnChangeSoilWash":"NO_SOILWASH","initialTimeMinute":174,"myPattern3CreaseCare":"CREASECARE_OFF","dnnWashBit":"DNNWASHBIT_OFF","myPattern3StainCare":"BLOOD","myPattern2CourseGplusBest":"COTTON_CS","fotaProgress":0,"myPattern2SteamSoftener":"STEAMSOFTENER_OFF","preWash":"PREWASH_OFF","miniState":"NOT_DEFINE_VALUE value:0","myPattern3Proofing":"PROOFING_OFF","state":"RUNNING","myPattern2Spin":"SPIN_1200","miniChildLock":"MINI_CHILDLOCK_OFF","FOTADownloadProgress":0,"miniCourseSpendWater":0,"detergentRemaining":"DETERGENT_REMAINING_NO","myPattern2DryLevel":"DRYLEVEL_NORMAL","courseMiniGplusBest":"NOT_SELECTED","myPattern3Rinse":"RINSE_NORMAL","currentTimeMinute":51,"courseSpendDetergent":2,"myPattern1GplusBestWash":"GPLUS_BEST_WASH_NORMAL","medicRinse":"MEDICRINSE_OFF","softenerRemaining":"SOFTENER_REMAING_NO","turboWash":"TURBOWASH_ON","dnnSpinBit":"DNNSPINBIT_OFF","remainTimeMinute":161,"miniPreState":"NOT_DEFINE_VALUE value:0","miniCourseType":"COURSE_TYPE_COURSE","myPattern2Steam":"STEAM_OFF","childLock":"CHILDLOCK_OFF","myPattern3Temp":"TEMP_40","myPattern1Detergent":"DETERGENT_OFF","dnnChangeRinse":"NO_RINSE","standby":"STANDBY_OFF","autoWashStainLevel":0,"myPattern2InitialBit":"INITIAL_BIT_OFF","FOTAState":"NORMAL","myPattern1MedicRinse":"MEDICRINSE_OFF","myPattern3Steam":"STEAM_OFF","myPattern3PreWash":"PREWASH_OFF","creaseCare":"CREASECARE_OFF","myPattern3SteamSoftener":"STEAMSOFTENER_OFF","myPattern1CreaseCare":"CREASECARE_OFF","myPattern1SteamSoftener":"STEAMSOFTENER_OFF","smartCourseMainGplusBest":"NOT_SELECTED","myPattern3Softener":"SOFTENER_OFF","myPattern1Temp":"TEMP_40","miniTCLCount":0,"myPattern3DryLevel":"DRYLEVEL_NORMAL","downloadSlot6":"REFRESH","miniError":"ERROR_NO","detergentBox":"DETERGENT_BOX_OFF","courseMainGplusBest":"COTTON_CS","downloadSlot1":"TUB_CLEAN","downloadSlot3":"SPIN","myPattern3SoilWash":"SOILWASH_HEAVY","downloadSlot2":"RINSE+SPIN","downloadSlot5":"DRAIN","downloadSlot4":"STEAM_CARE","spin":"SPIN_1200","courseDownloadAvailable":"CAN_NOT_DOWNLOAD","myPattern3HitCount":10,"myPattern2Rinse":"RINSE_NORMAL","myPattern2Softener":"SOFTENER_OFF","courseType":"COURSE_TYPE_COURSE","myPattern1Proofing":"PROOFING_OFF","preState":"DISPENSING","myPattern3Spin":"SPIN_1200","totalRinseCount":2,"currentTimeHour":7,"myPattern2MedicRinse":"MEDICRINSE_OFF","detergent":"DETERGENT_ON","dnnReady":"DNNREADY_OFF","courseSpendSoftener":0,"myPattern2TurboWash":"TURBOWASH_OFF","myPattern3InitialBit":"INITIAL_BIT_OFF","gplusBestWash":"GPLUS_BEST_WASH_TURBOWASH","miniRemainTimeMinute":0,"myPattern3GplusBestWash":"GPLUS_BEST_WASH_NORMAL","stainCare":"BLOOD","dnnBit":"DNNBIT_OFF","myPattern2GplusBestWash":"GPLUS_BEST_WASH_NORMAL","myPattern2Temp":"TEMP_40","steamSoftener":"STEAMSOFTENER_OFF","remoteStart":"REMOTE_START_OFF","myPattern2SoilWash":"SOILWASH_NORMAL","myPattern1TurboWash":"TURBOWASH_OFF","myPattern2HitCount":20,"myPattern1StainCare":"BLOOD","courseSpendWater":1,"miniCourseSpendPower":0,"initialBit":"INITIAL_BIT_ON","myPattern1Softener":"SOFTENER_OFF","myPattern1CourseGplusBest":"AUTOWASH_CS","miniExtraRinse":"MINI_EXTRARINSE_0","miniPairing":"MINI_PAIRING_OFF","miniSpin":"SPIN_OFF","courseSpendPower":1,"error":"ERROR_NO","isMainComplete":"MAIN_NO","myPattern1Rinse":"RINSE_NORMAL","dryLevel":"DRYLEVEL_NORMAL","dnnChangeSpin":"NOT_SELECTED","myPattern1PreWash":"PREWASH_OFF","myPattern3Detergent":"DETERGENT_OFF","myPattern2PreWash":"PREWASH_OFF","myPattern2StainCare":"BLOOD","steam":"STEAM_OFF","softener":"SOFTENER_ON","isFOTAEnable":"DISABLE","myPattern2Proofing":"PROOFING_OFF","proofing":"PROOFING_OFF","rinse":"RINSE_NORMAL","myPattern1Steam":"STEAM_OFF","temp":"TEMP_40","myPattern1HitCount":22,"reserveTimeMinute":0,"myPattern1DryLevel":"DRYLEVEL_NORMAL","myPattern3CourseGplusBest":"COTTON_CS","miniRemoteStart":"REMOTE_START_OFF","myPattern2CreaseCare":"CREASECARE_OFF","TCLCount":48,"miniInitialBit":"MINI_INITIAL_BIT_OFF","myPattern1InitialBit":"INITIAL_BIT_OFF","myPattern1Spin":"SPIN_1200","standbySupport":"STANDBY_SUPPORT_NO","myPattern3TurboWash":"TURBOWASH_OFF","miniSoftenerRemaining":"MINI_SOFTENER_REMAING_NO","myPattern3MedicRinse":"MEDICRINSE_OFF","dnnAppliedProduct":"DNNAppliedProduct_NO","myPattern1SoilWash":"SOILWASH_NORMAL","miniInitialTimeMinute":0,"soilWash":"SOILWASH_NORMAL"},"mid":957092,"online":true,"static":{"deviceType":"201","countryCode":"DE"},"meta":{"allDeviceInfoUpdate":false,"messageId":"KUg3aqAeQICvroZgjVcqMQ"},"timestamp":1631425256632},"manufacture":null,"online":true,"platformType":"thinq2","homeDeviceOrder":-1,"roomDeviceOrder":-1,"ownershipYn":"Y","modelJsonVer":"1.84","modelJsonUri":"https://objectcontent.lgthinq.com/def50ae5-ab04-4491-933c-4e76387cf53e?hdnts=exp=1684465243~hmac=860d74c239f15c22b22e281a93b15e1a520658394631511141b11ab5bc9d4337","appModuleVer":"3.63","appModuleUri":"https://objectcontent.lgthinq.com/27342417-7989-4cd5-a248-9b204c437c3d?hdnts=exp=1690080696~hmac=57e58b829363251d0615a494886d685f1148c1f74649cb04d9fd7a19ebd3484b","appRestartYn":"Y","appModuleSize":"9896643","langPackProductTypeVer":"84.4","langPackProductTypeUri":"https://objectcontent.lgthinq.com/bf9fcaa2-dfa9-47c1-8212-91e8b63b8112?hdnts=exp=1694177582~hmac=0660640f89f63b21af5cc4d9227aa03eb236e172884a56ef4b8bd8fbb3ee8590","langPackModelVer":"5.4","langPackModelUri":"https://objectcontent.lgthinq.com/8af076a7-2094-42c9-9d12-1ea101b43e73?hdnts=exp=1663070447~hmac=2df2e841d431866c911544b29f23bea749be0bc78bf947748657120f3784adec","roomId":"161355882211485249","fwInfoList":[{"checksum":"00000518","partNumber":"FH6G1BAPK2_WW_SPI","order":3},{"checksum":"0000E964","partNumber":"SAA38300911","order":2},{"checksum":"00001E4B","partNumber":"SAA38301002","order":1}],"modemInfo":{"modelName":"FH6G1BAPK2_WW_SPI","appVersion":"clip_spi_v1.9.049","modemType":"RTK_RTL8711am_SPI","ruleEngine":"n"},"existsEntryPopup":"N","fwVer":null,"modemVer":null,"subDeviceCount":0,"firebaseLogKey":"T:FL-S:24-U:600-P:GPLUS_BEST","cardType":"Small","cardControl":"Base"}
12.9.2021, 07:41:33LG ThinQ BridgeLGThinQRestoring existing accessory from cache: Waschmaschine
12.9.2021, 07:41:33LG ThinQ BridgeLGThinQSTART MQTT listener for thinq2 device
12.9.2021, 07:41:33LG ThinQ BridgeWARNUNGunhandled rejection: Error: Request failed with status code 400

What are the correct login data

Describe Your Problem:

I am trying to use the plugin. I have to state my LG-username and the corresponding password.
For my configuration I used my Google-Account ("Log In with Google") to log in the LG-ThinQ app.

What do I have to configure in the config.json?

add REFRIGERATOR

Which device do you want to add? Please describe: REFRIGERATOR

Describe the solution you'd like:want to see temperature fridge and freezer. Include express cool, Express freeze, Eco friendly

**LGThinQ] Found device: {"deviceId":"09b19bb0-3598-11ea-ae9b-2c2bf91f58d0","deviceType":101,"modelName":"2REB1RUVB1___","subModelNm":null,"sensorType":null,"alias":"Холодильник","deviceCode":"KI0104","networkType":"02","tftYn":"N","guideTypeYn":"Y","guideType":"TYPE1","pccModelYn":"N","autoOrderYn":"N","drServiceYn":"N","ssid":"Xiaomi_10EA","timezoneCode":"Europe/Moscow","timezoneCodeAlias":"Russia/Moscow","sdsGuide":"{"deviceCode":"KI01"}","newRegYn":"N","remoteControlType":"","fareTarget":null,"area":"294021","sleep":null,"deviceState":"E","rmsClientId":null,"regDtUtc":"20210530194431000","regIndex":0,"blackboxYn":null,"groupableYn":"N","controllableYn":"N","combinedProductYn":"N","masterYn":"Y","manufacture":null,"online":false,"platformType":"thinq1","homeDeviceOrder":-1,"roomDeviceOrder":-1,"ownershipYn":"Y","modelJsonVer":"2.3","modelJsonUri":"https://ruic.lgthinq.com:46030/api/webContents/modelJSON?modelName=2REB1RUVB1___&countryCode=WW&contentsId=JS0821011323662714&authKey=thinq","appModuleVer":"303.20","appModuleUri":"https://objectcontent.lgthinq.com/564c4846-f80f-4865-9372-31160a1010ed?hdnts=exp=1684281366~hmac=a0802768ae20ee30aa6d9154e23878212b6f5a87aff505bb35aafd7d4d3f9561","appRestartYn":"Y","appModuleSize":"7337592","langPackProductTypeVer":"46.9","langPackProductTypeUri":"https://objectcontent.lgthinq.com/e35aae54-9a8a-4765-809b-fba67975cba0?hdnts=exp=1691050325~hmac=4c6b3e26a8597e690e82d54bb237039ddbbd165eae8ad15b97a19f8bcd328182","langPackModelVer":"","langPackModelUri":"","roomId":"162238349239194552","fwInfoList":null,"modemInfo":null,"existsEntryPopup":"N","fwVer":"QC_Modem_1.2.79","modemVer":null,"subDeviceCount":0,"firebaseLogKey":"T:RFBFBF-M:2D-P:P_V+BF2","cardType":"Small","cardControl":"Base"} :

[LGThinQ] Device not connected: 09b19bb0-3598-11ea-ae9b-2c2bf91f58d0: Холодильник (REFRIGERATOR 2REB1RUVB1___)**

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.