Contribution - LG ThinQ Binding

Hi.

First of all, you must confirm if you device is Thinq V1/V2 compatible. To do so, please try to registry the DishWasher in your account trough LG App. You you can sync normally, then it’s suppose to be available in the binding discovery (even the device’s not been sopported yet).

I hope to finish the DishWasher support up to the next week.

Thanks for the info, the dishwasher is in the ThinQ app. I’ve noticed a file in /var/lib/openhab/thinq which seems to be for the dishwasher but no ‘thing’ is discovered.
Thanks, Pete.

The file contains:

{
	"Info": {
		"productType": "DW",
		"country": "WW",
		"modelType": "DW",
		"model": "XD G2 G3A G3B steam/auto door",
		"modelName": "D0211",
		"networkType": "WIFI",
		"version": "1.6"
	},
	"Module": {
		"WPM": {
			"GDM_CEN01_Main": "201",
			"GDM_CRS01_Main": "201",
			"GDM_CRS02_CourseList": "201",
			"GDM_CRS03_CourseDetail": "201",
			"GCM_SDS01_SdsMain": "001",
			"GDM_SET01_Main": "201",
			"GDM_SET02_PushList": "201",
			"GDM_SET02_Settings": "201",
			"GDM_FOT01_Main": "201",
			"GDM_WCH01_Main": "201",
			"GDM_SET03_PushList": "201",
			"GDM_WCH01_UserGuide": "001"
		},
		"Menu": ["GDM_CRS02_CourseList", "GDM_WCH01_Main", "GCM_SDS01_SdsMain", "GDM_SET01_Main"]
	},
	"Config": {
		"defaultCourseId": "5",
		"defaultSmartCourseId": "1",
		"tubCleanCourseId": "9",
		"fota": true,
		"wifiDiagnosis": "true",
		"remoteStartLabel": "@WM_OPTION_REMOTE_START_W",
		"TubCleanLabel": "@WM_COURSE_TUB_CLEAN_W",
		"downloadPanelLabel": "@DW_DOWNLOADED_CYCLE"
	},
	"Push": [{
			"category": "PUSH_DW_STATE",
			"label": "@CP_ALARM_PRODUCT_STATE_W",
			"groupCode": "20401",
			"pushList": [{
					"0000": "PUSH_DW_COMPLETE"
				}, {
					"0100": "PUSH_DW_ERROR"
				}, {
					"0101": "PUSH_DW_WATERLEAK"
				}
			]
		}
	],
	"Value": {
		"State": {
			"type": "Enum",
			"default": "POWEROFF",
			"option": {
				"POWEROFF": "@DW_STATE_POWER_OFF_W",
				"INITIAL": "@DW_STATE_INITIAL_W",
				"RUNNING": "@DW_STATE_RUNNING_W",
				"PAUSE": "@DW_STATE_PAUSE_W",
				"STANDBY": "@DW_STATE_POWER_OFF_W",
				"END": "@DW_STATE_COMPLETE_W",
				"POWERFAIL": "@DW_STATE_POWER_FAIL_W"
			}
		},
		"Process": {
			"type": "Enum",
			"default": "NONE",
			"option": {
				"NONE": "@DW_STATE_INITIAL_W",
				"RESERVED": "@DW_STATE_RESERVE_W",
				"RUNNING": "@DW_STATE_RUNNING_W",
				"RINSING": "@DW_STATE_RINSING_W",
				"DRYING": "@DW_STATE_DRYING_W",
				"END": "@DW_STATE_COMPLETE_W",
				"NIGHTDRY": "@DW_STATE_NIGHTDRY_W",
				"CANCEL": "@DW_STATE_CANCEL_W"
			}
		},
		"ChildLock": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_CHILD_LOCK_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"Door": {
			"type": "Enum",
			"default": "CLOSE",
			"label": "Door",
			"option": {
				"CLOSE": "@CP_OFF_EN_W",
				"OPEN": "@CP_ON_EN_W"
			}
		},
		"RinseRefill": {
			"type": "Enum",
			"default": "NOT_SET",
			"label": "Rinse Refill",
			"option": {
				"NOT_SET": "@CP_OFF_EN_W",
				"SET": "@CP_ON_EN_W"
			}
		},
		"SaltRefill": {
			"type": "Enum",
			"default": "NOT_SET",
			"label": "Salt Refill",
			"option": {
				"NOT_SET": "@CP_OFF_EN_W",
				"SET": "@CP_ON_EN_W"
			}
		},
		"NightDry": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_NIGHT_DRY_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"DelayStart": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_RESERVE_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"EnergySaver": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_ENERGY_SAVER_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"AutoDoor": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_AUTO_DOOR_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"Steam": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_STEAM_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"ExtraDry": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_EXTRA_DRY_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"HighTemp": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_HIGH_TEMP_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"DualZone": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_DUAL_ZONE_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"HalfloadLower": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_HALF_LOAD_LOWER_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"HalfloadUpper": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_HALF_LOAD_UPPER_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"PreSteam": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_PRE_STEAM_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W"
			}
		},
		"Rinse": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_RINSE_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"EXTRA_HOT": "@DW_OPTION_RINSE_EXTRAHOT_W",
				"PLUS": "@DW_OPTION_RINSE_RINSE+_W",
				"PLUS_EXTRA_HOT": "@DW_OPTION_RINSE_RINSE+EXTRAHOT_W"
			}
		},
		"HalfLoad": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_HALF_LOAD_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"LOWER": "@DW_OPTION_HALF_LOAD_LOWER_W",
				"UPPER": "@DW_OPTION_HALF_LOAD_UPPER_W"
			}
		},
		"Spray": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_OPTION_SPRAY_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"STRONG": "@DW_OPTION_SPRAY_STRONG_W",
				"MEDIUM": "@DW_OPTION_SPRAY_MEDIUM_W",
				"SOFT": "@DW_OPTION_SPRAY_SOFT_W"
			}
		},
		"RinseLevel": {
			"type": "Enum",
			"default": "LEVEL_0",
			"label": "@DW_TERM_SETTINGS_RINSE_LEVEL_W",
			"option": {
				"LEVEL_0": "0",
				"LEVEL_1": "1",
				"LEVEL_2": "2",
				"LEVEL_3": "3",
				"LEVEL_4": "4",
				"LEVEL_UNSET": "@DW_TERM_UNSET_W"
			}
		},
		"SofteningLevel": {
			"type": "Enum",
			"default": "LEVEL_0",
			"label": "@DW_TERM_SETTINGS_SOFTENING_LEVEL_W",
			"option": {
				"LEVEL_0": "0",
				"LEVEL_1": "1",
				"LEVEL_2": "2",
				"LEVEL_3": "3",
				"LEVEL_4": "4",
				"LEVEL_UNSET": "@DW_TERM_UNSET_W"
			}
		},
		"MCReminderSetting": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_TERM_SETTINGS_MACHINE_CLEAN_REMINDER_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W",
				"UNSET": "@DW_TERM_UNSET_W"
			}
		},
		"SignalLevel": {
			"type": "Enum",
			"default": "LEVEL_OFF",
			"label": "@DM_GUG_CRS04_6",
			"option": {
				"LEVEL_OFF": "@CP_OFF_EN_W",
				"LEVEL_ON": "@CP_ON_EN_W",
				"LEVEL_UNSET": "@DW_TERM_UNSET_W"
			}
		},
		"CleanLReminder": {
			"type": "Enum",
			"default": "OFF",
			"label": "@DW_TERM_SETTINGS_CLEAN_LIGHT_W",
			"option": {
				"OFF": "@CP_OFF_EN_W",
				"ON": "@CP_ON_EN_W",
				"UNSET": "@DW_TERM_UNSET_W"
			}
		},
		"Remain_Time_H": {
			"type": "Range",
			"default": 0,
			"option": {
				"min": 0,
				"max": 30
			}
		},
		"Remain_Time_M": {
			"type": "Range",
			"default": 0,
			"option": {
				"min": 0,
				"max": 59
			}
		},
		"Initial_Time_H": {
			"type": "Range",
			"default": 0,
			"option": {
				"min": 0,
				"max": 30
			}
		},
		"Initial_Time_M": {
			"type": "Range",
			"default": 0,
			"option": {
				"min": 0,
				"max": 59
			}
		},
		"Reserve_Time_H": {
			"type": "Range",
			"default": 0,
			"label": "@WM_OPTION_RESERVE_W",
			"option": {
				"min": 3,
				"max": 18
			}
		},
		"Reserve_Time_M": {
			"type": "Range",
			"default": 0,
			"option": {
				"min": 0,
				"max": 59
			}
		},
		"Error": {
			"type": "Reference",
			"option": ["Error"]
		},
		"Course": {
			"type": "Reference",
			"option": ["Course"]
		},
		"SmartCourse": {
			"type": "Reference",
			"option": ["SmartCourse"]
		},
		"CurrentDownloadCourse": {
			"type": "Enum",
			"default": "NONE",
			"label": "@DW_DOWNLOADED_CYCLE",
			"option": {
				"NONE": "0",
				"POTS_PANS": "1",
				"CASSEROLES": "2",
				"GLASSWARES": "3",
				"NIGHT_CARE": "4"
			}
		},
		"TclCount": {
			"type": "Number",
			"default": 0
		},
		"None": {
			"type": "Range",
			"default": 0,
			"option": {
				"min": 0,
				"max": 59
			}
		}
	},
	"Settings": [{
			"value": "RinseLevel",
			"default": "LEVEL_2",
			"selectable": ["LEVEL_0", "LEVEL_1", "LEVEL_2", "LEVEL_3", "LEVEL_4"]
		}, {
			"value": "SofteningLevel",
			"default": "LEVEL_2",
			"selectable": ["LEVEL_0", "LEVEL_1", "LEVEL_2", "LEVEL_3", "LEVEL_4"]
		}, {
			"value": "MCReminderSetting",
			"default": "OFF",
			"selectable": ["OFF", "ON"]
		}, {
			"value": "SignalLevel",
			"default": "LEVEL_OFF",
			"selectable": ["LEVEL_OFF", "LEVEL_ON"]
		}, {
			"value": "CleanLReminder",
			"default": "OFF",
			"selectable": ["OFF", "ON"]
		}
	],
	"Error": {
		"ERROR_NO": {
			"_comment": "No Error",
			"title": "No_Error",
			"content": "No_Error",
			"label": "No Error"
		},
		"ERROR_HE": {
			"_comment": "HE, °í°´ ³ëÃâ",
			"title": "@DW_ERROR_HE_TITLE",
			"content": "@DW_ERROR_HE_CONTENT",
			"label": "@DW_ERROR_HE_LABEL"
		},
		"ERROR_IE": {
			"_comment": "IE, °í°´ ³ëÃâ",
			"title": "@DW_ERROR_IE_TITLE",
			"content": "@DW_ERROR_IE_CONTENT",
			"label": "@DW_ERROR_IE_LABEL"
		},
		"ERROR_OE": {
			"_comment": "OE, °í°´ ³ëÃâ",
			"title": "@DW_ERROR_OE_TITLE",
			"content": "@DW_ERROR_OE_CONTENT",
			"label": "@DW_ERROR_OE_LABEL"
		},
		"ERROR_FE": {
			"_comment": "FE, °í°´ ³ëÃâ(Áø´Ü¾ÈµÊ)",
			"title": "@DW_ERROR_FE_TITLE",
			"content": "@DW_ERROR_FE_CONTENT",
			"label": "@DW_ERROR_FE_LABEL"
		},
		"ERROR_TE": {
			"_comment": "tE, °í°´ ³ëÃâ",
			"title": "@DW_ERROR_TE_TITLE",
			"content": "@DW_ERROR_HE_CONTENT",
			"label": "@DW_ERROR_TE_LABEL"
		},
		"ERROR_AE": {
			"_comment": "AE, °í°´ ³ëÃâ(Áø´Ü¾ÈµÊ)",
			"title": "@DW_ERROR_AE_TITLE",
			"content": "@DW_ERROR_AE_CONTENT",
			"label": "@DW_ERROR_AE_LABEL"
		},
		"ERROR_EE": {
			"_comment": "EE °í°´ ³ëÃâ ¾ÈµÊ (½Å·Ú¼º ¸ðµå¿¡¼­¸¸ ¹ß»ý)",
			"title": "EE",
			"content": "EE",
			"label": "EE"
		},
		"ERROR_LE": {
			"_comment": "LE, °í°´ ³ëÃâ",
			"title": "@DW_ERROR_LE_TITLE",
			"content": "@DW_ERROR_HE_CONTENT",
			"label": "@DW_ERROR_LE_LABEL"
		},
		"ERROR_NE": {
			"_comment": "nE, °í°´ ³ëÃâ",
			"title": "@DW_ERROR_NE_TITLE",
			"content": "@DW_ERROR_HE_CONTENT",
			"label": "@DW_ERROR_NE_LABEL"
		},
		"ERROR_BE": {
			"_comment": "bE, °í°´ ³ëÃâ",
			"title": "@DW_ERROR_BE_TITLE",
			"content": "@DW_ERROR_BE_CONTENT",
			"label": "@DW_ERROR_BE_LABEL"
		}
	},
	"Monitoring": {
		"type": "THINQ2",
		"protocol": {
			"state": "State",
			"process": "Process",
			"error": "Error",
			"initialTimeHour": "Initial_Time_H",
			"initialTimeMinute": "Initial_Time_M",
			"course": "Course",
			"courseType": "CourseType",
			"remainTimeHour": "Remain_Time_H",
			"remainTimeMinute": "Remain_Time_M",
			"reserveTimeHour": "Reserve_Time_H",
			"reserveTimeMinute": "Reserve_Time_M",
			"childLock": "ChildLock",
			"door": "Door",
			"rinseRefill": "RinseRefill",
			"saltRefill": "SaltRefill",
			"signalLevel": "SignalLevel",
			"mcReminderSetting": "MCReminderSetting",
			"cleanLReminder": "CleanLReminder",
			"nightDry": "NightDry",
			"delayStart": "DelayStart",
			"energySaver": "EnergySaver",
			"extraDry": "ExtraDry",
			"highTemp": "HighTemp",
			"dualZone": "DualZone",
			"halfLoad": "HalfLoad",
			"autoDoor": "AutoDoor",
			"preSteam": "PreSteam",
			"steam": "Steam",
			"rinseLevel": "RinseLevel",
			"softeningLevel": "SofteningLevel",
			"smartCourse": "SmartCourse",
			"currentDownloadCourse": "CurrentDownloadCourse",
			"tclCount": "TclCount"
		}
	},
	"ControlWifi": {
		"downloadCourse": {
			"command": "Set",
			"dataForm": {
				"dishwasher": {
					"courseDownloadType": "COURSEDATA",
					"courseDownloadDataLength": 6,
					"course": "{{Course}}",
					"smartCourse": "{{SmartCourse}}",
					"childLock": "{{ChildLock}}",
					"door": "{{Door}}",
					"rinseRefill": "{{RinseRefill}}",
					"saltRefill": "{{SaltRefill}}",
					"signalLevel": "{{SignalLevel}}",
					"mcReminderSetting": "{{MCReminderSetting}}",
					"cleanLReminder": "{{CleanLReminder}}",
					"nightDry": "{{NightDry}}",
					"delayStart": "{{DelayStart}}",
					"energySaver": "{{EnergySaver}}",
					"extraDry": "{{ExtraDry}}",
					"highTemp": "{{HighTemp}}",
					"dualZone": "{{DualZone}}",
					"halfLoad": "{{HalfLoad}}",
					"steam": "{{Steam}}",
					"autoDoor": "{{AutoDoor}}"
				}
			}
		},
		"setOption": {
			"command": "Set",
			"dataForm": {
				"dishwasher": {
					"rinseLevel": "{{RinseLevel}}",
					"softeningLevel": "{{SofteningLevel}}",
					"mcReminderSetting": "{{MCReminderSetting}}",
					"signalLevel": "{{SignalLevel}}",
					"cleanLReminder": "{{CleanLReminder}}"
				}
			}
		}
	},
	"ConvertingRule": {
		"Course": {
			"ControlConvertingRule": {
				"0": "NONE",
				"1": "AUTO",
				"2": "HEAVY/INTENSIVE",
				"3": "DELICATE",
				"4": "TURBO",
				"5": "NORMAL/ECO",
				"6": "RINSE",
				"7": "REFRESH",
				"8": "EXPRESS",
				"9": "MACHINE_CLEAN",
				"10": "SHORT_MODE",
				"11": "DOWNLOAD_CYCLE"
			},
			"MonitoringConvertingRule": {
				"NONE": "0",
				"AUTO": "1",
				"HEAVY/INTENSIVE": "2",
				"DELICATE": "3",
				"TURBO": "4",
				"NORMAL/ECO": "5",
				"RINSE": "6",
				"REFRESH": "7",
				"EXPRESS": "8",
				"MACHINE_CLEAN": "9",
				"SHORT_MODE": "10",
				"DOWNLOAD_CYCLE": "11",
				"ACCELERATED_MODE": "12",
				"WASHING_ONLY": "13"
			}
		},
		"SmartCourse": {
			"ControlConvertingRule": {
				"0": "NONE",
				"1": "POTS_PANS",
				"2": "CASSEROLES",
				"3": "GLASSWARES",
				"4": "NIGHT_CARE"
			},
			"MonitoringConvertingRule": {
				"NONE": "0",
				"POTS_PANS": "1",
				"CASSEROLES": "2",
				"GLASSWARES": "3",
				"NIGHT_CARE": "4"
			}
		}
	},
	"Course": {
		"1": {
			"_comment": "Auto",
			"courseType": "Course",
			"id": 1,
			"name": "@DW_COURSE_AUTO_W",
			"imgIndex": 1,
			"function": [{
					"value": "AutoDoor",
					"default": "OFF"
				}, {
					"value": "DualZone",
					"default": "OFF"
				}, {
					"value": "HalfLoad",
					"default": "OFF"
				}, {
					"value": "EnergySaver",
					"default": "OFF"
				}, {
					"value": "Steam",
					"default": "OFF"
				}, {
					"value": "HighTemp",
					"default": "OFF"
				}, {
					"value": "ExtraDry",
					"default": "OFF"
				}, {
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"2": {
			"_comment": "Intensive",
			"courseType": "Course",
			"id": 2,
			"name": "@DW_COURSE_INTENSIVE_W",
			"imgIndex": 1,
			"function": [{
					"value": "AutoDoor",
					"default": "OFF"
				}, {
					"value": "DualZone",
					"default": "OFF"
				}, {
					"value": "HalfLoad",
					"default": "OFF"
				}, {
					"value": "Steam",
					"default": "OFF"
				}, {
					"value": "HighTemp",
					"default": "OFF"
				}, {
					"value": "ExtraDry",
					"default": "OFF"
				}, {
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"3": {
			"_comment": "Delicate",
			"courseType": "Course",
			"id": 3,
			"name": "@DW_COURSE_DELICATE_W",
			"imgIndex": 1,
			"function": [{
					"value": "AutoDoor",
					"default": "OFF"
				}, {
					"value": "HalfLoad",
					"default": "OFF"
				}, {
					"value": "EnergySaver",
					"default": "OFF"
				}, {
					"value": "Steam",
					"default": "OFF"
				}, {
					"value": "ExtraDry",
					"default": "OFF"
				}, {
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"4": {
			"_comment": "Turbo",
			"courseType": "Course",
			"id": 4,
			"name": "@DW_COURSE_TURBO_W",
			"imgIndex": 1,
			"function": [{
					"value": "AutoDoor",
					"default": "OFF"
				}, {
					"value": "DualZone",
					"default": "OFF"
				}, {
					"value": "Steam",
					"default": "OFF"
				}, {
					"value": "HighTemp",
					"default": "OFF"
				}, {
					"value": "ExtraDry",
					"default": "OFF"
				}, {
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"5": {
			"_comment": "Eco",
			"courseType": "Course",
			"id": 5,
			"name": "@DW_COURSE_ECO_W",
			"imgIndex": 1,
			"function": [{
					"value": "AutoDoor",
					"default": "OFF"
				}, {
					"value": "DualZone",
					"default": "OFF"
				}, {
					"value": "HalfLoad",
					"default": "OFF"
				}, {
					"value": "EnergySaver",
					"default": "OFF"
				}, {
					"value": "Steam",
					"default": "OFF"
				}, {
					"value": "HighTemp",
					"default": "OFF"
				}, {
					"value": "ExtraDry",
					"default": "OFF"
				}, {
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"6": {
			"_comment": "Rinse",
			"courseType": "Course",
			"id": 6,
			"name": "@DW_COURSE_RINSE_W",
			"imgIndex": 1,
			"function": [{
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"7": {
			"_comment": "Refresh",
			"courseType": "Course",
			"id": 7,
			"name": "@DW_COURSE_REFRESH_W",
			"imgIndex": 1,
			"function": [{
					"value": "AutoDoor",
					"default": "OFF"
				}, {
					"value": "Steam",
					"default": "OFF"
				}, {
					"value": "ExtraDry",
					"default": "OFF"
				}, {
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"8": {
			"_comment": "Express",
			"courseType": "Course",
			"id": 8,
			"name": "@DW_COURSE_EXPRESS_W",
			"imgIndex": 1,
			"function": [{
					"value": "AutoDoor",
					"default": "OFF"
				}, {
					"value": "DualZone",
					"default": "OFF"
				}, {
					"value": "HighTemp",
					"default": "OFF"
				}, {
					"value": "ExtraDry",
					"default": "OFF"
				}, {
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"9": {
			"_comment": "Machine Clean",
			"courseType": "Course",
			"id": 9,
			"name": "@DW_COURSE_MACHINE_CLEAN_W",
			"imgIndex": 1,
			"function": [{
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		},
		"11": {
			"_comment": "Download Cycle",
			"courseType": "Course",
			"id": 11,
			"name": "@DW_TERM_SMARTCOURSE_W",
			"imgIndex": 1,
			"function": [{
					"value": "DelayStart",
					"default": "OFF"
				}
			]
		}
	},
	"SmartCourse": {
		"1": {
			"_comment": "Pots & Pans (Default)",
			"courseType": "SmartCourse",
			"id": 1,
			"Course": 2,
			"name": "@DW_SMARTCOURSE_POTS_PANS_W",
			"script": "@DW_SMARTCOURSE_SCRIPT_POTS_PANS_S",
			"imgIndex": 14,
			"function": [{
					"value": "AutoDoor",
					"default": "ON"
				}, {
					"value": "ExtraDry",
					"default": "ON"
				}
			]
		},
		"2": {
			"_comment": "Casseroles",
			"courseType": "SmartCourse",
			"id": 2,
			"Course": 2,
			"name": "@DW_SMARTCOURSE_GREASY_DISHES_W",
			"script": "@DW_SMARTCOURSE_SCRIPT_GREASY_DISHES_S",
			"imgIndex": 12,
			"function": [{
					"value": "AutoDoor",
					"default": "ON"
				}
			]
		},
		"3": {
			"_comment": "Glasswares",
			"courseType": "SmartCourse",
			"id": 3,
			"Course": 3,
			"name": "@DW_SMARTCOURSE_GLASSWARES_W",
			"script": "@DW_SMARTCOURSE_SCRIPT_GLASSWARES_S",
			"imgIndex": 15,
			"function": [{
					"value": "AutoDoor",
					"default": "ON"
				}
			]
		},
		"4": {
			"_comment": "Night Care(US)",
			"courseType": "SmartCourse",
			"id": 4,
			"Course": 3,
			"name": "@DW_SMARTCOURSE_OVERNIGHT_W",
			"script": "@DW_SMARTCOURSE_SCRIPT_OVERNIGHT_S",
			"imgIndex": 11,
			"function": [{
					"value": "AutoDoor",
					"default": "ON"
				}, {
					"value": "ExtraDry",
					"default": "ON"
				}
			]
		}
	}
}

If you have the descriptor of the thinq thing, you’ve already discovered it in some way. When the device gonna be supported by this binding, the Thing will start to work as well.

Perfect, thanks again.

Thank you so much for your effort and the LG ThinQ Binding. I got it running on openHAB 4.0.2.
But after upgrading to openHAB 4.0.3 the addon disappeared and I’m not able to reinstall. Neither by placing it in /usr/share/openhab/addons (chown openhab:openhab), nor via Karaf console, nor via custom json-file which looks like that:

[
  {
    "uid": "org-openhab-binding-lgthinq",
    "id": "lgthinq",
    "type": "binding",
    "version": "4.1.0-SNAPSHOT",
    "author": "Nemer Daud",
    "maturity": "stable",
    "content_type": "application/vnd.openhab.feature",
    "link": "https://github.com/nemerdaud/openhab-thinq-stuff",
    "url": "https://github.com/nemerdaud/openhab-thinq-stuff/raw/main/org.openhab.binding.lgthinq-4.1.0-SNAPSHOT.jar",
    "title": "LG ThinQ Binding",
    "description": "This binding can control ThinQ enabled devices by LG "
  }
]

Also did a openhab-cli clean-cache, but without success. I would appreciate any idea how I could get your fantastic addon running again.

Hello, Christian.

This issue is more related to the OpenHab/Add-on deployment than this binding itself.
What I can suggest you to do is:

  1. Remove the this binding jar file from addson directory
  2. execute again openhab-cli clean-cache
  3. use openhab-config to fix files permissions
  4. restart openhab. After cleaning cache, you can see some erros in the log, but it can occur only the first time. Wait until the OpenHab is fully started.
  5. Tail the openhab log (i usally do this by the openhab’s kafka console)
  6. Copy the latest 4.0 version of this binding to addons folder. See if the binding is installed or some message is displayed in the log. If not, let me know.

Attention: use the 4.1.0-SNAPSHOT version only if you are running OpenHab in 4.1.X version. If not, use the 4.0.X-SNAPSHOT version of this binding.

Regards

Thanks, Nemer, for your superfast advice.
I got your addon working again.
Since openhab-config (step 3) wasn’t available on my plain vanilla Debian, I fixed ownership and permissions manually.
Maybe the problem was a left over directory: /var/lib/openhab/thinq which I removed before reinstalling the binding.
Regards

Nemer, thank you for your contribution to the community. I’ve been able to successfully implement my LG washer using the 4.1.0-SNAPSHOT version of the binding. However, I keep getting the below error when I try to add my Dryer. I’ve tried reinstalling the binding, removing and recreating the Thing, clearing cache, and removing the .json files in the “thinq” userdata directory followed by a restart of the binding. I’m guessing that perhaps this model isn’t currently compatible with the binding.

I’m running the latest milestone build (4.1.0.M3). My LG dryer model is DLEX3900W.

2023-11-09 12:44:57.312 [ERROR] [al.handler.LGThinQWasherDryerHandler] - Error updating thing DRYER/ab5e6a00-096a-11e9-aa98-2c2bf9cf190c from LG API. Thing goes OFFLINE until next retry: Error getting monitor data for the device:ab5e6a00-096a-11e9-aa98-2c2bf9cf190c
org.openhab.binding.lgthinq.internal.errors.LGThinqApiException: Error getting monitor data for the device:ab5e6a00-096a-11e9-aa98-2c2bf9cf190c
	at org.openhab.binding.lgthinq.internal.handler.LGThinQAbstractDeviceHandler.getSnapshotDeviceAdapter(LGThinQAbstractDeviceHandler.java:692) ~[bundleFile:?]
	at org.openhab.binding.lgthinq.internal.handler.LGThinQAbstractDeviceHandler.updateThingStateFromLG(LGThinQAbstractDeviceHandler.java:465) [bundleFile:?]
	at org.openhab.binding.lgthinq.internal.handler.LGThinQAbstractDeviceHandler$UpdateThingStateFromLG.run(LGThinQAbstractDeviceHandler.java:458) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: DeviceTypeUuid [lgthinq:202] not expected for WashingTower/Machine
	at org.openhab.binding.lgthinq.internal.handler.LGThinQWasherDryerHandler.getDeviceType(LGThinQWasherDryerHandler.java:295) ~[bundleFile:?]
	at org.openhab.binding.lgthinq.internal.handler.LGThinQAbstractDeviceHandler.getSnapshotDeviceAdapter(LGThinQAbstractDeviceHandler.java:677) ~[bundleFile:?]
	... 8 more

Nope.
It’s a bug in the binding. Unfortunately there are no much people available for test devices then sometimes I face some silly mistake like this.

I’ve fixed it and you can please try it out again.
Since the Dryer was not tested for the users, if you can do this for me, I will appreciate.

Regards.

1 Like

Thanks, that seemed to eliminate the error and allow me to add the Dryer. I did start getting the below periodic warning though. Also, should the transformations update automatically or do I need to manually update the .json file with the information for my dryer model?

Thanks again for your help and work on this binding.

2023-11-09 14:50:50.247 [WARN ] [ervices.model.DefaultSnapshotBuilder] - BitKey DoorLock not found in the Options feature values description capability. It's mostly a bug

Hummm… Can you send me the thinq-xxxxxx-cap.json file?
It’s present in [OH-USERDATA]/thinq directory

Just an FYI… If you are in the UK using this binding, it doesn’t seem to work if you configure the User Country as United Kingdom… I had to configure it as other and specify GB as the Manual User Country… My suspicion is the binding sets the User Country as UK rather than GB.

Hummm that’s it. Thanks for your feedback. I will fix it!

Hi,

can the Plugin also handle standalone tumble-dryers?`
like this one: https://www.lg.com/de/waeschepflege/trockner/v9a2xt/

Thx
/Franz

If you can control your device through LG Thinq App, then you can control with this binding.

2 Likes

This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.

Upfront: sorry for asking here, my issues are not directly binding related, so please ignore my post in case, but I think all the people to possibly know are here in this thread, reading this.
(being a moderator, I re-opened this thread in case you wonder).

I’m having ‘generic’ problems with both, getting the LG Thinq gateway to work with my heat pump, and installing the binding.
First, my I cannot create my heat pump’s cloud gateway in the Thinq app. I push the register button but the app does not find the cloudgw. It’s connected via Ethernet, I traced that it opens a webserver during registration.
Does anyone know how the app gets to find the cloudgw? I can imagine that when using Wi-Fi, it’s a well known IP address it tries talking to, but with Ethernet I have no such fixed address.
I have not found a means to tell the app to add a device with a specific IP, does anyone know how to?

Second, and strange for right me as an openHAB veteran to admit that, I once had an earlier version of this binding working, but now I don’t manage to install the SNAPSHOT binding in my OH 4.2.1.
I tried moving the jar to /usr/share/openhab/addons, plus tried in openHAB console
bundle:install https://github.com/nemerdaud/openhab-thinq-stuff/tree/main/org.openhab.binding.lgthinq-4.2.0-SNAPSHOT.jar
But it doesn’t install the bundle. No log output of use either. Same with 4.1.3, 4.3.0 version jars.
Any idea ?

If you are trying to registry your thinq device in your account through the LGThinq App, the general process (I said general, because depending on the version and kind of the device, the registration can be different. It’s a mess) is to hard-reset your HeatPump device. When you do this, your device will enter in a “paring” mode opening a Wifi AdHoc connection. Then, you can proceed with the registration in the App. The newest devices has a QRCore to make easier to registry, but if yours don’t have once, you can choose in the app based on the kind, model, version, etc. Then, the App will try to find a near device following a kind of Wifi ID pattern and you pair with it. But, as I said… this is the general registration. Pay attention in the following:

  1. Your cellphone must be near to the heatpump, because if it isn’t, it won’t find the Wifi of the device to pair with.
  2. If you previously regitry the heatpump in another account (of if it was owner by other) you must hard-reset the device. To do it, please see the manual.
  3. The first registry process is a process between your App and the device. No cloudgw is involved. After the the App and HeatPump is paired, then the App registry it in your account at the LGCloud then you can see it in the App after.

Second, and strange for right me as an openHAB veteran to admit that, I once had an earlier version of this binding working, but now I don’t manage to install the SNAPSHOT binding in my OH 4.2.1.
I tried moving the jar to /usr/share/openhab/addons, plus tried in openHAB console
bundle:install https://github.com/nemerdaud/openhab-thinq-stuff/tree/main/org.openhab.binding.lgthinq-4.2.0-SNAPSHOT.jar
But it doesn’t install the bundle. No log output of use either. Same with 4.1.3, 4.3.0 version jars.
Any idea ?

You are not alone on this. I have a case of other user that has the exactly same problem. In the 4.2.1 OH version, it doesn’t recognize the binding and it doesn’t install and you can’t see any log related. I’m running the 4.2.0 version and it’s working fine with 4.2 and 4.3 releases of the binding. Today late, I will upgrade my OH to the 4.2.1 to see if a report the same issue.

Thanks for your comprehensive explanation and help.
However, it does not match my situation and I believe we need to distinguish at this point before we misunderstand each other.
LG heat pumps either have a Wi-Fi dongle (inside-USB-) attached or even builtin just like most other LG devices do.
But mine does not and so I cannot directly add the hp from within the app using Wi-Fi.

Instead, my heat pump has a modbus serial cable connection to a LG ‘cloud gateway’.
That CGW now needs to be added in the app on behalf of the hp, and that is where it’s failing.
I connected my CGW using Ethernet and DHCP so IP is dynamic there is no well-known IP the app would know to talk to.
(There probably is an ever-same IP when the device spans up a (temporary) 1:1 Wi-Fi that you then connect your mobile phone into for the initial networking config step, like with Shelly devices.)
Or LG might be using mDNS but it fails for the Ethernet interface.
I don’t know, it’s all LG internals. I just hope someone here knows better than I do.