Contribution - LG ThinQ Binding

Yeah, that’s what I thought too. We’ll be waiting for the update!
Thank you so much!
By the way, it’s possible this isn’t just on RU servers; maybe LG uses similar options elsewhere.

I was really looking forward to version 5 of OH, just for this extension. Then, when I updated to version 5, the extension didn’t work… I waited for several months, thinking the problem would resolve itself…
…But I couldn’t wait any longer; my fingers were itching to do something, so I decided to do a little research :grinning_face:

Please try this new test version with the fix I implemented to check whether you can now connect to LG API in your region. Notice that the binding will only works in openhab >= 5.1.X (millestone trunk).

Sorry for the long wait. I was on vacation.
I installed release 5.1.1 and the specified jar.

Very cool! Everything works!

2026-01-10 19:16:13.472 [WARN ] [ing.lgthinq.lgservices.api.RestUtils] - TLS handshake failed for POST https://ru.emp.lgsmartplatform.com/emp/v2.0/account/session/<redacted>. Retrying once with TLS compatibility profile (TLS1.2 + RSA ciphers).
2026-01-10 19:16:13.481 [WARN ] [ty.util.ssl.SslContextFactory.config] - Weak cipher suite TLS_RSA_WITH_AES_256_GCM_SHA384 enabled for Client@710bec97[provider=null,keyStore=null,trustStore=null]
2026-01-10 19:16:13.481 [WARN ] [ty.util.ssl.SslContextFactory.config] - Weak cipher suite TLS_RSA_WITH_AES_128_GCM_SHA256 enabled for Client@710bec97[provider=null,keyStore=null,trustStore=null]
2026-01-10 19:16:13.481 [INFO ] [ing.lgthinq.lgservices.api.RestUtils] - Initialized TLS fallback HttpClient (TLSv1.2 + RSA cipher suites).
2026-01-10 19:16:15.264 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'lgthinq:washer-201:*********:****-****-****-****-***********' to inbox.

Duplicate my post here.

Since some time i got the errors if try to change temperature or params for my The LG fridge, V1. Thigs and Bridge are Online, but bindig returns error:

12:50:20.459 [TRACE] [ding.lgthinq.lgservices.api.RestUtils] - POST request to URI: ``https://eic.lgthinq.com:46030/api/rti/rtiResult
12:50:20.525 [TRACE] [ding.lgthinq.lgservices.api.RestUtils] - POST response: {“lgedmRoot”:{“returnCd”:“0000”,“returnMsg”:“OK”,“workList”:{“deviceId”:“<DEVICE_ID>”,“deviceState”:“E”,“format”:“B64”,“returnCode”:“0000”,“returnData”:“AgEBAQICBAABAAEA”,“stateCode”:“S”,“workId”:“<WORK_ID>”}}}
12:50:20.526 [TRACE] [ding.lgthinq.lgservices.api.RestUtils] - POST request to URI: ``https://eic.lgthinq.com:46030/api/rti/rtiMon
12:50:20.589 [TRACE] [ding.lgthinq.lgservices.api.RestUtils] - POST response: {“lgedmRoot”:{“returnCd”:“0000”,“returnMsg”:“OK”,“stateCode”:“S”,“workId”:“<WORK_ID>”,“deviceState”:“E”,“timestamp”:0}}
12:50:20.712 [DEBUG] [ces.LGThinQAbstractApiV1ClientService] - Prepare command v1: [1, 1, 1, 2, 255, 255, 255, 255, 255, 255, 255]
12:50:20.713 [DEBUG] [s.LGThinQFridgeApiV1ClientServiceImpl] - setControl Payload:[{cmd=Control, cmdOpt=Set, value=ControlData, data=AQEBAv////////8=, format=B64}]
12:50:20.714 [DEBUG] [ces.LGThinQAbstractApiV1ClientService] - URL: ``https://eic.lgthinq.com:46030/api/rti/rtiControl``, Post Payload:[{
“lgedmRoot” : {
“deviceId” : “<DEVICE_ID>”,
“workId” : “<WORK_ID>”,
“cmd” : “Control”,
“cmdOpt” : “Set”,
“value” : “ControlData”,
“data” : “AQEBAv////////8=”,
“format” : “B64”
}
}]
12:50:20.715 [TRACE] [ding.lgthinq.lgservices.api.RestUtils] - POST request to URI: ``https://eic.lgthinq.com:46030/api/rti/rtiControl
12:50:21.198 [TRACE] [ding.lgthinq.lgservices.api.RestUtils] - POST response: {“lgedmRoot”:{“returnCd”:“0011”,“returnMsg”:“등록되지 않은 모델입니다.”,“deviceId”:“<DEVICE_ID>”,“stateCode”:“S”,“workId”:“<WORK_ID>”,“format”:“B64”,“deviceState”:“E”,“timestamp”:0}}
12:50:21.199 [ERROR] [internal.handler.LGThinQFridgeHandler] - Error executing Command ON to the channel dashboard#ice-plus. Thing goes offline until retry
org.openhab.binding.lgthinq.lgservices.errors.LGThinqApiException: Status error executing endpoint. resultCode must be 0000, but was:0011
at org.openhab.binding.lgthinq.lgservices.LGThinQAbstractApiV1ClientService.handleGenericErrorResult(LGThinQAbstractApiV1ClientService.java:175) ~[?:?]
at org.openhab.binding.lgthinq.lgservices.LGThinQFridgeApiV1ClientServiceImpl.setControlCommand(LGThinQFridgeApiV1ClientServiceImpl.java:128) ~[?:?]
at org.openhab.binding.lgthinq.lgservices.LGThinQFridgeApiV1ClientServiceImpl.setIcePlus(LGThinQFridgeApiV1ClientServiceImpl.java:109) ~[?:?]
at org.openhab.binding.lgthinq.internal.handler.LGThinQFridgeHandler.processCommand(LGThinQFridgeHandler.java:345) ~[?:?]
at org.openhab.binding.lgthinq.internal.handler.LGThinQAbstractDeviceHandler.lambda$0(LGThinQAbstractDeviceHandler.java:120) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1583) [?:?]
12:50:30.593 [TRACE] [ding.lgthinq.lgservices.api.RestUtils] - POST request to URI: ``https://eic.lgthinq.com:46030/api/rti/rtiMon

Hi, sorry, I lost your message. Are you still having this problem?

Hi, yes, the same. I’ve disabled all LG Things for now. I have given up.

Do you have other LG devices (besides the refrigerator) that you’ve tried connecting with this binding? If so, is the behavior the same? We have some users with V1 refrigerators using this binding without problems. Perhaps it’s just a configuration issue with this device in your account. If you want to get it working, I can help you, even if it’s a compatibility issue with the binding; I can check it here as well.

No, that is the only device. Yes, I would like to make it work, if possible. It worked for almost more than one year. Sometimes, about once every 3–4 months, the binding became non-operational. The refrigerator had to be disconnected from power, or the Wi-Fi had to be reset, and then it worked again for another 3–4 months.

But after LG updated their app and something in the infrastructure, I now get the error: “resultCode must be 0000, but was: 0011” — unknown device? I think it has a bug in the V1 firmware.

2026-05-19 19:59:20.273 \[DEBUG\] \[es.LGThinQAbstractApiV1ClientService\] - Prepare command v1: \[1, 1, 0, 2, 255, 255, 255, 255, 255, 255, 255\]
2026-05-19 19:59:20.275 \[DEBUG\] \[.LGThinQFridgeApiV1ClientServiceImpl\] - setControl Payload:\[{cmd=Control, cmdOpt=Set, value=ControlData, data=AQEAAv////////8=, format=B64}\]
2026-05-19 19:59:20.277 \[DEBUG\] \[es.LGThinQAbstractApiV1ClientService\] - URL: https://eic.lgthinq.com:46030/api/rti/rtiControl, Post Payload:\[{
"lgedmRoot" : {
"deviceId" : "72d32db0-0e9f-11f5-8d0b-0051edb3bb3c",
"workId" : "15e8db27-ad68-4f9a-b77b-6a1675418dcd",
"cmd" : "Control",
"cmdOpt" : "Set",
"value" : "ControlData",
"data" : "AQEAAv////////8=",
"format" : "B64"
}
}\]
2026-05-19 19:59:20.750 \[ERROR\] \[nternal.handler.LGThinQFridgeHandler\] - Error executing Command OFF to the channel dashboard#ice-plus. Thing goes offline until retry
org.openhab.binding.lgthinq.lgservices.errors.LGThinqApiException: Status error executing endpoint. resultCode must be 0000, but was:0011
at org.openhab.binding.lgthinq.lgservices.LGThinQAbstractApiV1ClientService.handleGenericErrorResult(LGThinQAbstractApiV1ClientService.java:175) \~\[?:?\]
at org.openhab.binding.lgthinq.lgservices.LGThinQFridgeApiV1ClientServiceImpl.setControlCommand(LGThinQFridgeApiV1ClientServiceImpl.java:128) \~\[?:?\]
at org.openhab.binding.lgthinq.lgservices.LGThinQFridgeApiV1ClientServiceImpl.setIcePlus(LGThinQFridgeApiV1ClientServiceImpl.java:109) \~\[?:?\]
at org.openhab.binding.lgthinq.internal.handler.LGThinQFridgeHandler.processCommand(LGThinQFridgeHandler.java:345) \~\[?:?\]
at org.openhab.binding.lgthinq.internal.handler.LGThinQAbstractDeviceHandler.lambda$0(LGThinQAbstractDeviceHandler.java:120) \~\[?:?\]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) \~\[?:?\]
at java.util.concurrent.FutureTask.run(FutureTask.java:317) \~\[?:?\]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) \~\[?:?\]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) \~\[?:?\]
at java.lang.Thread.run(Thread.java:1583) \[?:?\]

OK, but in the LG Thinq App can you control your fridge device ?

Yes, it works. Some times it say “used by another user” but it works.

Hi there, I just downloaded the plugin to start working with my LG devices. However, I am having an issue getting the bridge to work.

I am running openhabian version openHAB 5.1.4 with the binding installed via the GUI. If I put the wrong country, I get that error back. But selecting the UK server with UK en I just get an error every time.

I am not sure what is wrong.

org.openhab.binding.lgthinq.lgservices.errors.AccountLoginException: Error doing user's account login on the Emp LG Server
	at org.openhab.binding.lgthinq.lgservices.api.TokenManager.oauthFirstRegistration(TokenManager.java:111)
	at org.openhab.binding.lgthinq.internal.handler.LGThinQBridgeHandler$PollingRunnable.run(LGThinQBridgeHandler.java:276)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Error login into account. The reason is: {"error":{"request":"/emp/v2.0/account/session/user%40domain.co.uk","code":"412","message":"Precondition Failed"}}
	at org.openhab.binding.lgthinq.lgservices.api.LGThinqOauthEmpAuthenticator.loginUser(LGThinqOauthEmpAuthenticator.java:169)
	at org.openhab.binding.lgthinq.lgservices.api.TokenManager.oauthFirstRegistration(TokenManager.java:109)

Hi Jonathan,

Please try changing the country setting (choosing manual fill) in the Bridge from “UK” to “GB”.

There is an error in the documentation & bridge predefined options regarding this that I will be fixing soon. Please let me know if this resolves the issue.

Magic that’s got it thank you.