| Key | Value |
|---|---|
| uid | smartthingscloud |
| type | binding |
| author | Nanna Agesen |
| version range | [5.0.0;6.0.0) |
| download | org.openhab.binding.smartthingscloud-5.2.0-SNAPSHOT.jar |
Samsung SmartThings Cloud Binding
Connect your Samsung SmartThings cloud-connected appliances to openHAB β no hub, no Personal Access Token, no developer registration required.
Authorization uses OAuth2 PKCE (the same flow as the official SmartThings CLI). You click Authorize in the browser on the openHAB machine, log in with your Samsung account, and the bridge goes ONLINE. Tokens are persisted and auto-refreshed β no re-authorization needed after restart.
Note: This is not the legacy SmartThings Hub binding. That binding required a physical SmartThings Hub and Groovy SmartApps, which Samsung deprecated in 2022. This binding communicates directly with the Samsung SmartThings Cloud API and works with any Wi-Fi connected Samsung appliance.
Supported Things
| Thing Type | Description |
|---|---|
account (Bridge) |
Samsung SmartThings account β manages OAuth2 tokens |
washer |
Samsung washing machine |
television |
Samsung Smart TV |
presence |
SmartThings phone / presence sensor |
lightSensor |
SmartThings illuminance sensor |
scene |
SmartThings scene β trigger a scene with a Switch |
Channels
Account Bridge β Status (read-only)
| Channel | Type | Description |
|----|----|----|β|
| authStatus | String | Authorization state: Authorized β / Connection failed β check logs / Not authorized β open .../smartthingscloud |
Washer β State (read-only)
| Channel | Type | Description |
|---|---|---|
machineState |
String | Machine state: run, pause, stop |
jobState |
String | Cycle phase: washing, rinsing, spin, finish, none, etc. |
completionTime |
DateTime | Estimated finish time |
running |
Switch | ON while a cycle is active |
remaining |
Number | Minutes remaining |
remoteEnabled |
Switch | ON when remote control is permitted by the machine |
mode |
String | Active wash program code |
rinseMode |
String | Rinse count/mode |
spinSpeed |
String | Spin speed (rpm) |
temperature |
String | Wash temperature (Β°C) |
watt |
Number:Power | Current power consumption (W) |
kwh |
Number:Energy | Accumulated energy usage (kWh) |
waterLiters |
Number | Cumulative water consumed (lifetime total, liters) |
operatingState |
String | Detailed operating state: ready, running, paused, finished |
currentCycle |
String | Active wash program code from Samsung (e.g. B0, 1B, 65) |
kidsLock |
Switch | ON when child lock is active |
progress |
Number | Wash cycle progress 0β100 % (only populated while running) |
detergentRemaining |
Number | Detergent level remaining (%) |
softenerRemaining |
Number | Softener level remaining (%) |
delayEnd |
Number | Delay-end countdown remaining (minutes) |
supportedCourses |
String | Comma-separated list of supported wash programs |
Washer β Control (read/write)
| Channel | Type | Description |
|---|---|---|
power |
Switch | Power on/off |
bubbleSoak |
Switch | Bubble Soak pre-soak on/off |
volume |
Number | End-of-cycle buzzer volume: 0=off, 1β3 |
extraCare |
String | Extra Care mode (off, manual, userLocationBased) |
extraCareLocation |
String | Extra Care location (indoor, outdoor) |
Washer β Energy totals (read-only)
| Channel | Type | Description |
|---|---|---|
watt |
Number:Power | Live power consumption (W) |
kwh |
Number:Energy | Accumulated energy used (kWh) |
Television β State (read-only)
| Channel | Type | Description |
|----|----|----|β|
| tvVolume | Number | Current volume level (0β100) |
| tvMute | Switch | ON when muted |
| inputSource | String | Active input source (e.g. HDMI1, digitalTv) |
| tvChannel | String | Active channel number |
| tvChannelName | String | Active channel name |
| pictureMode | String | Picture mode: Standard, Movie, Game, etc. |
| soundMode | String | Sound mode: Standard, Movie, Music, etc. |
| playbackStatus | String | Current playback state |
| watt | Number:Power | Current power draw (W) |
| kwh | Number:Energy | Accumulated energy (kWh, lifetime) |
| firmwareVersion | String | TV firmware version |
| onlineStatus | String | Online status (Idle, Active) |
| supportedInputSources | String | Comma-separated list of available input sources |
| supportedPictureModes | String | Comma-separated list of available picture modes |
| supportedSoundModes | String | Comma-separated list of available sound modes |
Television β Control (read/write)
| Channel | Type | Description |
|----|----|----|β|
| power | Switch | Power on/off |
| tvVolume | Number | Set volume (0β100) |
| tvMute | Switch | Mute/unmute |
| inputSource | String | Set input source |
| tvChannel | String | Set channel number |
| pictureMode | String | Set picture mode |
| soundMode | String | Set sound mode |
| channelUp | Switch | Zap one channel up (momentary β resets to OFF automatically) |
| channelDown | Switch | Zap one channel down (momentary β resets to OFF automatically) |
Presence β State (read-only)
| Channel | Type | Description |
|---|---|---|
presence |
Switch | ON = home, OFF = away |
Light Sensor β State (read-only)
| Channel | Type | Description |
|---|---|---|
illuminance |
Number:Illuminance | Light level in lux |
brightnessLevel |
Dimmer | Brightness 0β100 % (maps lux to %) |
Scene β Control (write-only)
| Channel | Type | Description |
|----|----|----||
| trigger | Switch | Send ON to execute the scene β auto-resets to OFF |
Configuration parameters:
| Parameter | Required | Description |
|---|---|---|
sceneId |
SmartThings scene ID (UUID) | |
locationId |
Location ID β only needed for multi-location accounts |
Find your scene ID with the SmartThings CLI: smartthings scenes
Quick Start
smartthings.things
Bridge smartthingscloud:account:myaccount "Samsung SmartThings" [
pollingIntervalSeconds=30
] {
Thing washer mywasher "Samsung Washing Machine" [
deviceId="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
]
}
Tip: Find your
deviceIdin the Samsung SmartThings app under the deviceβs detail page, or it is shown on the authorization success page after the OAuth2 flow.
smartthings.items
Group gWasher "Washing Machine" <washingmachine>
// State
String Washer_MachineState "State [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:machineState" }
String Washer_JobState "Phase [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:jobState" }
Switch Washer_Running "Running" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:running" }
Number Washer_Remaining "Remaining [%.0f min]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:remaining" }
DateTime Washer_CompletionTime "Done at [%1$tH:%1$tM]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:completionTime" }
Switch Washer_RemoteEnabled "Remote Control [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:remoteEnabled" }
// Program
String Washer_Mode "Program [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:mode" }
String Washer_RinseMode "Rinse [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:rinseMode" }
String Washer_SpinSpeed "Spin [%s rpm]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:spinSpeed" }
String Washer_Temperature "Temperature [%s Β°C]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:temperature" }
// Energy & water
Number:Power Washer_Watt "Power [%.0f W]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:watt" }
Number:Energy Washer_kWh "Energy [%.2f kWh]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:kwh" }
Number Washer_WaterLiters "Water [%.1f L]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:waterLiters" }
// Extended state (read-only)
String Washer_OperatingState "Operating State [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:operatingState" }
String Washer_CurrentCycle "Active Program [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:currentCycle" }
Switch Washer_KidsLock "Child Lock [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:kidsLock" }
Number Washer_Progress "Progress [%.0f %%]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:progress" }
// Control
Switch Washer_Power "Power" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:power" }
Switch Washer_BubbleSoak "Bubble Soak" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:bubbleSoak" }
Number Washer_Volume "Volume [%.0f]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:volume" }
String Washer_ExtraCare "Extra Care [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:extraCare" }
String Washer_ExtraCareLocation "Location [%s]" (gWasher) { channel="smartthingscloud:washer:myaccount:mywasher:extraCareLocation" }
Sitemap tip: Use
mappings=[ON="On", OFF="Off"](uppercase) for Switch channels in sitemaps. Lowercase keys sendStringTypeinstead ofOnOffTypeand the command will be ignored.
OAuth2 Authorization
- Add the bridge and washer things (
.thingsfile or UI) - Open
http://localhost:8080/smartthingscloudin a browser on the openHAB machine itself - Click βAuthorize with SmartThingsβ and log in with your Samsung account
- Bridge goes ONLINE β done
Important: The browser must run on the same machine as openHAB. Samsungβs OAuth2 callback is hardcoded to
http://localhost:61973/finish(a Samsung-side constraint from the SmartThings CLI client ID β it cannot be changed). Use SSH port forwarding (ssh -L 8080:localhost:8080 user@openhab-host) if you only have remote access.
Why no PAT token?
The binding reuses the clientId from the open-source SmartThings CLI β a client ID registered by Samsung for personal use that supports the standard OAuth2 PKCE flow. No developer account, no app registration, no secrets to manage.
Beta β contributions welcome!
This is a beta release. The following thing types are currently implemented:
washerβ Samsung washing machine (26 channels)
televisionβ Samsung Smart TV (12 channels β power, volume, mute, input, channel, picture/sound mode, app ID, channel up/down, supported inputs/modes)
presenceβ SmartThings phone / arrival sensor
lightSensorβ illuminance (lux) + brightness level
sceneβ execute any SmartThings scene via a Switch channel
Still planned:
- Dryer
- Dishwasher
- Air purifier / air conditioner
- Fridge / freezer
If you own one of these and want openHAB support, Iβd love to hear from you. Open an issue on GitHub describing your device and Iβm happy to work with you to implement it β you donβt need Java experience, just the ability to test on your own device.
Resources
- Download JAR: org.openhab.binding.smartthingscloud-5.2.0-SNAPSHOT.jar
- Source Code: github.com/Prinsessen/openhab-smartthings-binding
- Full Documentation: README.md
- Release: v1.5.0 β Scene Support
- License: EPL-2.0
Tested on openHAB 5.2. Feedback on openHAB 4.x compatibility welcome.
