What happens when you try to integrate the device?
Do you receive an error or is it unresponsive?
Hi, sorry for the late response. When I itegreate with smartthings, I donât get any error per say, but the deivce doesnât register as an aircon and I canât control it.
When looking in home assistant, I get the attributes:
sensor.air_conditioner_air_quality
sensor.air_conditioner_dust_level
sensor.air_conditioner_fine_dust_level
sensor.air_conditioner_odor_sensor
All of these attributes come back with null values. The important entities (to control the on/off state, mode, temperature) arenât part of the itegration with makes it unusable.
Like with the other poster, when I look in the smartthings console, I can see that the DTH is âplaceholderâ. Manually setting it to something else doesnât help either.
The app on my phone can control everything and the integration wtih IFTTT can control most attributes so there must be an API that it can work with.
Is there an IDE or API somehwere where I can see all the data comming in and out of the device?
Yes also Apologies it has been quite a while since I had time to sit down and do things with automation. Covid had the opposite affect on my work.
@Mikhail_D_Souza I believe the local control I was receiving via curl will not assist with the âSmart thingsâ integration itself unless a local control is written with home assistant.
I can also confirm all that I receive is the sensors mentioned above.
I will have some spare time later on today I will try play around with the states and what Smart Things Pushes over.
Would anyone know if there is any smart things documentation about the previously mentioned âLegacy Platformâ so I can go through the Home Assistants Code and see if its going of DTH and not Capabilities.
Many thanks again all!
Have a good day
I would actually be quite happy with this local control, I have my home assistant instance running locally. Unfortunately, Iâm unable to get the access code out of the device. I think the most recent firmware might have remove what would seem like a vulnerability (unless I was doing something wrong). The ancient version of SSL the communcation uses also makes that step complicated.
I currently have my home assistant talking to IFTTT, which then talks to Smart things and I can turn the aircon on and off. I canât change the mode or temperature set point. This integration is slow AF.
Unfortunately any device in IDE with Placholder as the device type should not be changed. Placeholders are for the new schema and will not work with the old groovy device handlers that will eventually be phased out.
I see. Is there a new platform to develop DTHes? I feel like samsung may have given up on these devices but Iâd be happy to look into it.
There is a platform, called edge, for developing the equivalent of new DTHs for zigbee devices, Z wave devices, and some LAN devices. Hereâs the FAQ on that.
FAQ: I have no idea what Edge is. Is that a new developer tool? (2022)
However, unfortunately itâs not going to help with this specific device, which is called a âOCF âdevice. As discussed upthread, those work with a different type of integration and thereâs not much you can do with those.
@nayelyz can say more.
Oh yikes. Thatâs a bummer. That that mean those devices will stop working completely? Is there an way to get my hands on the access codes (Samsung AC - #111 by Milebe - Feature Requests - Home Assistant Community didnât work for me ) so that I can control over LAN?
I got the Device Access token a year ago when I started this thread. I have to say its probably like playing a game of roulette. Very hard to get. I have a guide I was typing up on a .txt file on my PC iâll post when I get home.
@JDRoberts Probably my fault this device does not attach itself as an âOCFâ device. That was a DTH I tried changing to see if it would change in home assistant which it did. (Hence this is why I think it is something to do with the DTH) even though on the home assistant integration it specifically mentions âCapabilitiesâ and not DTHâs.
out of topic:
@Mikhail_D_Souza I had a local control working for a while then home assistant changed to async2 which broke my integration I should be able to whip something up over the next week in python for local control which I still find slow its not very âSnappyâ a bit faster than the smart things app but non the less faster.
Hi, everyone. This post might be a little long but I want to clarify some points to avoid confusion. Please, let me know if you have any questions regarding the points below:
- Yes, âplaceholderâ means it is not using a DTH and it must not be changed because it will affect the deviceâs functionality.
- Old integrations like Home Assistant work with the Groovy integration (DTH - Device Type Handlers). There, a list of capabilities was defined as part of the deviceâs metadata.
Note: I donât know why HA limits you to devices that work with Groovy, because the other integrations also have a set of capabilities defined in their Device Profile and making requests to the ST API, you can get their values.
- You need to reinstall the device and without changing anything, check the capabilities and status that you can see through the SmartThings REST API. There are two ways to do that:
Using the SmartThings CLI and itâs commands. The authentication is automatic and itâs more for personal use to get the info you need.
Using this way, you can create a server that makes REST requests to the ST API endpoints (see the official API reference)
- A Personal Access Token (PAT). For simplicity purposes, generate one with all the permissions on this page (you have to log in). Copy it and save it securely, next time you enter this page, it will be hidden for your safety.
- A REST API client or the ability to use cURL (or your own server). For example, to get the list of devices and see the capabilities that belong to it, you need to make a request to
https://api.smartthings.com/v1/devices
and use the PAT as authorization. In this sample, Iâm using Postman:
- Once you get all that info, you can see the capabilitiesâ current value (device status) and which commands you can send to the device.
- That would be controlling them over the Cloud, to be a LAN integration, the device should have enabled an IP that you could reach to send commands or be able to integrate it with Edge for example but I donât know if thatâs possible.
@JDRoberts is right about OCF devices, thatâs why I wanted your help to check the result in the API without modifying the device type. This will let us know what you can actually do with the device and which information you can get (not from third-parties but from ST directly).
Hi @nayelyz
Thanks for the detailed write up.
Here is the output of from postman
GET: https://api.smartthings.com/v1/devices/
"items": [
{
"deviceId": "REDACTED",
"name": "Wifi-kit 2",
"label": "Front Aircon",
"manufacturerName": "Samsung Electronics",
"presentationId": "DA-AC-SAC-100001",
"deviceManufacturerCode": "Samsung Electronics",
"locationId": "REDACTED",
"ownerId": "REDACTED",
"roomId": "REDACTED",
"deviceTypeName": "Samsung OCF Air Conditioner",
"components": [
{
"id": "main",
"label": "main",
"capabilities": [
{
"id": "ocf",
"version": 1
},
{
"id": "switch",
"version": 1
},
{
"id": "airConditionerMode",
"version": 1
},
{
"id": "airConditionerFanMode",
"version": 1
},
{
"id": "temperatureMeasurement",
"version": 1
},
{
"id": "thermostatCoolingSetpoint",
"version": 1
},
{
"id": "airQualitySensor",
"version": 1
},
{
"id": "dustSensor",
"version": 1
},
{
"id": "odorSensor",
"version": 1
},
{
"id": "refresh",
"version": 1
},
{
"id": "execute",
"version": 1
},
{
"id": "custom.disabledCapabilities",
"version": 1
},
{
"id": "samsungce.driverVersion",
"version": 1
}
],
"categories": [
{
"name": "AirConditioner",
"categoryType": "manufacturer"
}
]
}
],
"createTime": "2021-12-30T06:31:02.617Z",
"profile": {
"id": "REDACTED"
},
"ocf": {
"ocfDeviceType": "oic.d.airconditioner",
"name": "Wifi-kit 2",
"specVersion": "core.1.1.0",
"verticalDomainSpecVersion": "res.1.1.0,sh.1.1.0",
"manufacturerName": "Samsung Electronics",
"modelNumber": "MIM-H03N",
"vendorId": "DA-AC-SAC-100001",
"lastSignupTime": "2021-12-30T06:31:01.085944Z"
},
"type": "OCF",
"restrictionTier": 0,
"allowed": []
},
I am playing around with it now
and will post more findings shortly
Edit 1:
here is the output of the device status when the unit is running:
GET: https://api.smartthings.com/v1/devices/{DeviceId}/status
{
"components": {
"main": {
"refresh": {},
"airConditionerMode": {
"supportedAcModes": {
"value": null
},
"airConditionerMode": {
"value": null
}
},
"execute": {
"data": {
"value": null
}
},
"airQualitySensor": {
"airQuality": {
"value": null
}
},
"switch": {
"switch": {
"value": "on",
"timestamp": "2022-04-27T11:53:24.313Z"
}
},
"ocf": {
"st": {
"value": null
},
"mndt": {
"value": null
},
"mnfv": {
"value": null
},
"mnhw": {
"value": null
},
"di": {
"value": "REDACTED",
"timestamp": "2021-12-30T06:31:03.363Z"
},
"mnsl": {
"value": null
},
"dmv": {
"value": "res.1.1.0,sh.1.1.0",
"timestamp": "2021-12-30T06:31:03.363Z"
},
"n": {
"value": "Wifi-kit 2",
"timestamp": "2021-12-30T06:31:03.363Z"
},
"mnmo": {
"value": "MIM-H03N",
"timestamp": "2021-12-30T06:31:03.363Z"
},
"vid": {
"value": "DA-AC-SAC-100001",
"timestamp": "2021-12-30T06:31:03.363Z"
},
"mnmn": {
"value": "Samsung Electronics",
"timestamp": "2021-12-30T06:31:03.363Z"
},
"mnml": {
"value": null
},
"mnpv": {
"value": null
},
"mnos": {
"value": null
},
"pi": {
"value": "shp",
"timestamp": "2021-12-30T06:31:03.363Z"
},
"icv": {
"value": "core.1.1.0",
"timestamp": "2021-12-30T06:31:03.363Z"
}
},
"odorSensor": {
"odorLevel": {
"value": null
}
},
"airConditionerFanMode": {
"fanMode": {
"value": null
},
"supportedAcFanModes": {
"value": null
}
},
"custom.disabledCapabilities": {
"disabledCapabilities": {
"value": [
"airConditionerMode",
"airConditionerFanMode",
"temperatureMeasurement",
"thermostatCoolingSetpoint",
"airQualitySensor",
"dustSensor",
"odorSensor"
],
"timestamp": "2021-12-30T06:31:03.701Z"
}
},
"samsungce.driverVersion": {
"versionNumber": {
"value": 21041401,
"timestamp": "2021-12-30T06:31:03.701Z"
}
},
"temperatureMeasurement": {
"temperature": {
"value": null
}
},
"dustSensor": {
"dustLevel": {
"value": null
},
"fineDustLevel": {
"value": null
}
},
"thermostatCoolingSetpoint": {
"coolingSetpoint": {
"value": null
}
}
}
}
}
So Some further playing around I have found that the capability of âswitchâ is the air conditioners âonâ or âoffâ state and setting these values I can turn the airconditioner on and off through the rest API.
However any other capability with value: null will not respond to commands even though smart things responds with accepted
Iâve been googling around and found some old information nayelyz has been linking but the links are expired and just redirect to the developers home page. I have some questions just to make sure everyone is on the same page
-
When I added this to smart things I had no idea of its capabilities. I then started playing with all of the DTH handlers. I then removed these devices from my smart things account and re-added. They are now place holder and I havenât changed them. Does this affect the capabilities stating Null? or is this now permanently broken?
-
Just for my own understanding how does the phone app actually communicate with the device? Does it send a curl requests when I use the app to change the temperature?
-
To move on from here would custom capabilities help in this regard? I see a capability of custom.disabledCapabilities in the device status could these be enabled and perhaps I could start pulling data
"custom.disabledCapabilities": {
"disabledCapabilities": {
"value": [
"airConditionerMode",
"airConditionerFanMode",
"temperatureMeasurement",
"thermostatCoolingSetpoint",
"airQualitySensor",
"dustSensor",
"odorSensor"
],
"timestamp": "2021-12-30T06:31:03.701Z"
}
},
-
As this mentions its a OCF device is there any control that can created using groovy, etc or is it pretty much locked to the smart things app?
-
I notice all the time stamps on these devices are from 2021 when I orignally added them to my smart things app. These are still the same dates even though I had deleted them from the app and re-added them.
Note: Things previously posted in this thread are all making sense now sorry for the delay in understanding. I had a crash course on rest, etc with a module we just created at work so playing around with it here makes sense.
No, thatâs whatâs interesting about OCF devices. Basically, when a manufacturer defines the handler of the device, they set the capabilities that will be exposed in the ST API.
In the case of OCF devices (Ovens, AC, etc.), the behavior is a little different. To attempt to shed some light on why some capabilities might show up in the ST app but not on the API side, the team shared these details:
- The phone client (ST app) uses OCFâs COAP protocol, which allows the physical device to define its resources (such as the temperature values).
- So, these values can be written there by the device and as a result, they can be displayed by the app.
- The APIs do not work via OCF, but, the profile is the manifest of what values are available to be accessed from there.
I donât know if that would bring a positive result but, you can see which commands can be used for each capability by querying its definition. In the CLI, the command is:
smartthings capabilities custom.disabledCapabilities [-j or -y]
You can use the -j
or -y
flags to get the info in JSON or YAML formats respectively. For example, the capability custom.disabledCapabilities
doesnât have commands so itâs read-only.
As Groovy-based things (DTH, Groovy SmartApps, etc.) are par of the Legacy platform, I wouldnât suggest that. Also, only the manufacturer has access to the controller used by those devices.
It could be because the Device ID
doesnât change for this kind of device, did you check it before adding it and after? Thatâs curious but the info with that date is mostly the ocf
properties which refer to the model, vid, etc.
This can happen because thereâs no handler on the device controller for that specific command and this is only controlled through the app.
A bit late to the party but I have similar findings to @Derf . I removed and readded my device back and this is what I got
My device
./smartthings devices xxxx -y
deviceId: xxxx
ownerId: xxxx
name: Wifi-kit
label: Air Conditioner
deviceManufacturerCode: Samsung Electronics
manufacturerName: Samsung Electronics
presentationId: DA-AC-SAC-100001
locationId: xxxx
roomId: xxxx
sharedLocations: []
components:
- id: main
label: main
capabilities:
- id: ocf
version: 1
- id: switch
version: 1
- id: airConditionerMode
version: 1
- id: airConditionerFanMode
version: 1
- id: temperatureMeasurement
version: 1
- id: thermostatCoolingSetpoint
version: 1
- id: airQualitySensor
version: 1
- id: dustSensor
version: 1
- id: odorSensor
version: 1
- id: refresh
version: 1
- id: execute
version: 1
- id: custom.disabledCapabilities
version: 1
- id: samsungce.driverVersion
version: 1
categories:
- name: AirConditioner
categoryType: manufacturer
createTime: '2022-04-28T02:02:30.395Z'
profile:
id: xxxx
ocf:
ocfDeviceType: oic.d.airconditioner
name: Wifi-kit
specVersion: core.1.1.0
verticalDomainSpecVersion: res.1.1.0,sh.1.1.0
manufacturerName: Samsung Electronics
modelNumber: MIM-H03
vendorId: DA-AC-SAC-100001
lastSignupTime: '2022-04-28T02:02:28.702732Z'
type: OCF
vid: DA-AC-SAC-100001
mnmn: Samsung Electronics
ocfDeviceType: oic.d.airconditioner
restrictionTier: 0
allowed: []
And for the status
./smartthings devices:status xxx -y
components:
main:
refresh: {}
airConditionerMode:
supportedAcModes:
value: null
airConditionerMode:
value: null
execute:
data:
value: null
airQualitySensor:
airQuality:
value: null
switch:
switch:
value: 'off'
timestamp: '2022-04-28T02:02:31.514Z'
ocf:
st:
value: null
mndt:
value: null
mnfv:
value: null
mnhw:
value: null
di:
value: xxx
timestamp: '2022-04-28T02:02:31.140Z'
mnsl:
value: null
dmv:
value: res.1.1.0,sh.1.1.0
timestamp: '2022-04-28T02:02:31.140Z'
'n':
value: Wifi-kit
timestamp: '2022-04-28T02:02:31.140Z'
mnmo:
value: MIM-H03
timestamp: '2022-04-28T02:02:31.140Z'
vid:
value: DA-AC-SAC-100001
timestamp: '2022-04-28T02:02:31.140Z'
mnmn:
value: Samsung Electronics
timestamp: '2022-04-28T02:02:31.140Z'
mnml:
value: null
mnpv:
value: null
mnos:
value: null
pi:
value: shp
timestamp: '2022-04-28T02:02:31.140Z'
icv:
value: core.1.1.0
timestamp: '2022-04-28T02:02:31.140Z'
odorSensor:
odorLevel:
value: null
airConditionerFanMode:
fanMode:
value: null
supportedAcFanModes:
value: null
custom.disabledCapabilities:
disabledCapabilities:
value:
- airConditionerMode
- airConditionerFanMode
- temperatureMeasurement
- thermostatCoolingSetpoint
- airQualitySensor
- dustSensor
- odorSensor
timestamp: '2022-04-28T02:02:31.514Z'
samsungce.driverVersion:
versionNumber:
value: 21041401
timestamp: '2022-04-28T02:02:31.514Z'
temperatureMeasurement:
temperature:
value: null
dustSensor:
dustLevel:
value: null
fineDustLevel:
value: null
thermostatCoolingSetpoint:
coolingSetpoint:
value: null
Lots of nulls, just like you described.
I got the Device Access token a year ago when I started this thread. I have to say its probably like playing a game of roulette. Very hard to get. I have a guide I was typing up on a .txt file on my PC iâll post when I get home.
@Derf How did you go with finding that .txt file?
I have edited this post as I now have created local control of this device and integrated it into home assistant.
Thanks for everyoneâs Help I will be create a indepth guide on local control and post it in the coming days.
Hi,
Follow last postâs in
to get token from MIM-H03N
It is not necessary to switch the device on / off with a fuse.
it worked for me
run server.py
in the new terminal, run actest.py
MIM-S03N will enter Requesting a token mode (power LED is on, Wi-Fi Connect LED is OFF, Wi-Fi Configure blinks)
press the AP button and the token should appear in server.py
sad that MIM-S03N control by the smartthing cloud does not work
@StefanSiarzewski you magnificent person!
press the AP button and the token should appear in server.py
I had no idea I had to do this step! My wifi module sits in my ceiling cavity (I got lazy with the wiring) so I never noticed that the LEDs changed and I had to press a button. Thanks for letting me know about that. I managed to get my token now and I can integrate it with my Home assistant. Smartthings might be able to control but my home assistant instance that I can reach from anywhere in the world can. Thatâs good enough for me.
There is very little information on the network about downloading a token from Wifi-kit
most of them refer to the split unit where you just do OFF / ON and the token shows up.
In my case, MIM-S03N in Smartthings is detected as a âplaceholderâ - I can control but only from the smartthing application
In case of integration with openhab (or home assistant), have to connect via LAN
Hi All,
Iâve completed the home assistant integration for this aircon here GitHub - mikdsouza/samsungrac: Home Assistant Climate Device for controlling (not only) Samsung AC
Iâve submitted a PR to the parent repo with the fixes too but in the mean time, if you have the device token and device id, you can now control it from home assistant.
Hello,
i want to integrate my samsung airco into homeassistant.
I then need a device token. In post 36 (and on other places in other fora) it is told how to do so.
I tried on my mac computer, installing python3.
when I start server.py I got a list of warnings:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Warning (from warnings module):
File â/Users/home/Downloads/server.pyâ, line 44
server.socket = ssl.wrap_socket(server.socket, certfile=âcert.pemâ, server_side=True)
DeprecationWarning: ssl.wrap_socket() is deprecated, use SSLContext.wrap_socket()
Traceback (most recent call last):
File â/Users/home/Downloads/server.pyâ, line 48, in
main()
File â/Users/home/Downloads/server.pyâ, line 44, in main
server.socket = ssl.wrap_socket(server.socket, certfile=âcert.pemâ, server_side=True)
File â/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.pyâ, line 1443, in wrap_socket
context.load_cert_chain(certfile, keyfile)
ssl.SSLError: [SSL: CA_MD_TOO_WEAK] ca md too weak (_ssl.c:3874)
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
They are warnings, but could not be ignored, the run stops.
Running the actest.py (set the right ip-adres and right path to cert) I got an error
I am on the same network as the AC and the AC is off when I run actest.
How is that to fix??
The error:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
SyntaxError: unterminated string literal (detected at line 4)
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<