Support for Samsung Family Hub Refrigerator in the SmartThings integration

The Samsung Family Hub refrigerator (RF28M9580) is detected by the new SmartThings integration, but it only currently shows these three sensors in HA 0.90.2:

  • binary_sensor.refrigerator_family_hub_contact
  • binary_sensor.refrigerator_family_hub_filterstatus
  • sensor.refrigerator_family_hub_temperature_measurement

It would be great if we could enhance the SmartThings integration to fully support all of the sensors it exposes. Looking at the device in the web IDE, it consists of a primary device and three child devices. Most of the properties of the primary device aren’t included in the HA integration, and neither are the child devices that provide info for each of the refrigerator’s three separate compartments (4-door Flex layout).

  • Samsung OCF Refrigerator (primary device)

    • temperature: 37 F
    • contact: closed
    • rapidCooling: false
    • rapidFreezing: false
    • defrost: off
    • mode: Freezer (this is the flex compartment mode)
    • icemaker: on
    • misc other properties with string values (n, icv, dmv, di, pi, mnmn, mnml, mnmo, mnpv, mnos, mnhw, mnfv, vid)
  • Samsung OCF Refrigerator Door (child 1: Refrigerator Family Hub CV Room)

    • contact: closed
  • Samsung OCF Refrigerator Compartment (child 2: Refrigerator Family Hub Cooler)

    • temperature: 37 F
    • contact: closed
    • coolingSetpoint: 37 F
  • Samsung OCF Refrigerator Compartment (child 3: Refrigerator Family Hub Freezer)

    • temperature: 0 F
    • contact: closed
    • coolingSetpoint: 0 F

I’m happy to provide any additional detail that would be beneficial to supporting the device.

Thanks!

I think it should be possible to add the missing sensors… the child devices may be a larger change. Let’s start with getting some additional info. Can you run these commands and send me the output?

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.smartthings.com/v1/devices/DEVICE_ID

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.smartthings.com/v1/devices/DEVICE_ID/status
  • YOUR_ACCESS_TOKEN is the personal access token created for the integration.
  • DEVICE_ID is the GUID in the URL when you’re viewing the device in the SmartThings IDE (where those screen shots came from above). For example, when viewing the device, the URL looks something like: https://graph.api.smartthings.com/device/show/80e27aa1-8939-4a71-b6db-2510f7b2ace7. The Device ID is the part after /show/ in this case 80e27aa1-8939-4a71-b6db-2510f7b2ace.
  • If these show up as discrete devices in the IDE, run the commands for each ID and send me the output.

It looks like everything for the primary and child sensors is available in the single status call. As you mentioned in the original issue I filed, the status for all three child devices comes back empty.

Cooler is the primary refrigerated compartment, freezer is the bottom left freezer-only compartment, and cvroom is the “flexzone” compartment that can be either freezer or refrigerator.

DEVICE INFO

{
"deviceId": "********-****-****-****-************",
"name": "[refrigerator] Samsung (LCD)",
"label": "Refrigerator Family Hub",
"locationId": "********-****-****-****-************",
"roomId": "********-****-****-****-************",
"deviceTypeId": "5ce8f920-4075-4a14-b513-497b12d85f10",
"deviceTypeName": "Samsung OCF Refrigerator",
"deviceNetworkType": "UNKNOWN",
"components": [
    {
        "id": "cooler",
        "capabilities": [
            {
                "id": "temperatureMeasurement",
                "version": 1
            },
            {
                "id": "contactSensor",
                "version": 1
            },
            {
                "id": "sensor",
                "version": 1
            },
            {
                "id": "thermostatCoolingSetpoint",
                "version": 1
            }
        ]
    },
    {
        "id": "cvroom",
        "capabilities": [
            {
                "id": "contactSensor",
                "version": 1
            },
            {
                "id": "sensor",
                "version": 1
            }
        ]
    },
    {
        "id": "freezer",
        "capabilities": [
            {
                "id": "temperatureMeasurement",
                "version": 1
            },
            {
                "id": "contactSensor",
                "version": 1
            },
            {
                "id": "sensor",
                "version": 1
            },
            {
                "id": "thermostatCoolingSetpoint",
                "version": 1
            }
        ]
    },
    {
        "id": "main",
        "capabilities": [
            {
                "id": "temperatureMeasurement",
                "version": 1
            },
            {
                "id": "contactSensor",
                "version": 1
            },
            {
                "id": "refresh",
                "version": 1
            },
            {
                "id": "ocf",
                "version": 1
            },
            {
                "id": "refrigeration",
                "version": 1
            },
            {
                "id": "filterStatus",
                "version": 1
            },
            {
                "id": "execute",
                "version": 1
            }
        ]
    }
],
"dth": {
    "deviceTypeId": "5ce8f920-4075-4a14-b513-497b12d85f10",
    "deviceTypeName": "Samsung OCF Refrigerator",
    "deviceNetworkType": "UNKNOWN",
    "completedSetup": true,
    "networkSecurityLevel": "UNKNOWN"
},
"type": "DTH"
}

DEVICE STATUS

{
"components": {
    "cooler": {
        "contactSensor": {
            "contact": {
                "value": "closed"
            }
        },
        "temperatureMeasurement": {
            "temperature": {
                "value": 37,
                "unit": "F"
            }
        },
        "sensor": {},
        "thermostatCoolingSetpoint": {
            "coolingSetpoint": {
                "value": 37,
                "unit": "F"
            }
        }
    },
    "freezer": {
        "contactSensor": {
            "contact": {
                "value": "closed"
            }
        },
        "temperatureMeasurement": {
            "temperature": {
                "value": 0,
                "unit": "F"
            }
        },
        "sensor": {},
        "thermostatCoolingSetpoint": {
            "coolingSetpoint": {
                "value": 0,
                "unit": "F"
            }
        }
    },
    "main": {
        "contactSensor": {
            "contact": {
                "value": "closed"
            }
        },
        "refrigeration": {
            "defrost": {
                "value": "off"
            },
            "rapidFreezing": {
                "value": "false"
            },
            "rapidCooling": {
                "value": "false"
            }
        },
        "ocf": {
            "st": {
                "value": null
            },
            "mnfv": {
                "value": "1.0"
            },
            "mndt": {
                "value": null
            },
            "mnhw": {
                "value": "1.0"
            },
            "di": {
                "value": "********-****-****-****-************"
            },
            "mnsl": {
                "value": null
            },
            "dmv": {
                "value": "res.1.1.0,sh.1.1.0"
            },
            "n": {
                "value": "[refrigerator] Samsung (LCD)"
            },
            "vid": {
                "value": "DA-REF-NORMAL-000001"
            },
            "mnmo": {
                "value": "18K_REF_LCD_FHUB3.0|00079341|00000350021024280102000000000000"
            },
            "mnmn": {
                "value": "Samsung Electronics"
            },
            "mnml": {
                "value": "http://www.samsung.com"
            },
            "mnpv": {
                "value": "2015050100079341"
            },
            "mnos": {
                "value": "Tizen(3.0)"
            },
            "pi": {
                "value": "********-****-****-****-************"
            },
            "icv": {
                "value": "core.1.1.0"
            }
        },
        "filterStatus": {
            "filterStatus": {
                "value": null
            }
        },
        "refresh": {},
        "temperatureMeasurement": {
            "temperature": {
                "value": 37,
                "unit": "F"
            }
        },
        "execute": {
            "data": {
                "value": {
                    "payload": {
                        "x.com.samsung.da.items": [
                            {
                                "x.com.samsung.da.id": "0",
                                "x.com.samsung.da.openState": "Close"
                            },
                            {
                                "x.com.samsung.da.id": "1",
                                "x.com.samsung.da.openState": "Close"
                            },
                            {
                                "x.com.samsung.da.id": "2",
                                "x.com.samsung.da.openState": "Close"
                            }
                        ],
                        "if": [
                            "oic.if.baseline",
                            "oic.if.s"
                        ],
                        "rt": [
                            "x.com.samsung.da.doors"
                        ]
                    }
                }
            }
        }
    },
    "cvroom": {
        "contactSensor": {
            "contact": {
                "value": "closed"
            }
        },
        "sensor": {}
    }
}
}

So the child devices are definitely defined as components since they’re showing up under the definition of the main device. The only capability we’re not currently supporting is refrigeration. This isn’t documented publicly, so I don’t know what the definition of the attributes. Let me open ping someone at ST.

Supporting child devices will be a larger effort and not something we may want turned on for everything. Let me do some research and get back on that topic.

1 Like

Do you guys know if there is currently a way to get the inside view of the fridge to show on HomeAssistant?

Yes, familyhub is a supported platform for cameras.

-BK

1 Like

Has there been any progress on getting the other temperature sensors exposed in HA?

2 Likes

Hello Andrew,

The contact sensor on the door will not change to off in version 0.94.3 after it has changed to on. I can see in the debug log that the smartthings hub sends a push notification to HA but for some reason HA ignores it. This was working well in a previous version of HA and could be used to trigger automations when the door was closed or if open for too long. Now these don’t work.

Here are two lines from the log where openState changes from Open to Close for da.id 1:

Jun 25 23:06:26 hassbian hass[28497]: 2019-06-25 23:06:26 DEBUG (MainThread) [homeassistant.components.smartthings] Push update received: {'location_id': 'XXXXX-fc46-4e41-9e0e-76f034c391e0', 'device_id': 'XXXXX-7903-2053-55fb-6010ec59a3d1', 'component_id': 'main', 'capability': 'execute', 'attribute': 'data', 'value': {'payload': {'x.com.samsung.da.items': [{'x.com.samsung.da.id': '0', 'x.com.samsung.da.openState': 'Close'}, {'x.com.samsung.da.id': '1', 'x.com.samsung.da.openState': 'Open'}, {'x.com.samsung.da.id': '2', 'x.com.samsung.da.openState': 'Close'}], 'if': ['oic.if.baseline', 'oic.if.s'], 'rt': ['x.com.samsung.da.doors']}}, 'data': None}
Jun 25 23:07:23 hassbian hass[28497]: 2019-06-25 23:07:23 DEBUG (MainThread) [homeassistant.components.smartthings] Push update received: {'location_id': 'XXXXX-fc46-4e41-9e0e-76f034c391e0', 'device_id': 'XXXXX-7903-2053-55fb-6010ec59a3d1', 'component_id': 'main', 'capability': 'execute', 'attribute': 'data', 'value': {'payload': {'x.com.samsung.da.items': [{'x.com.samsung.da.id': '0', 'x.com.samsung.da.openState': 'Close'}, {'x.com.samsung.da.id': '1', 'x.com.samsung.da.openState': 'Close'}, {'x.com.samsung.da.id': '2', 'x.com.samsung.da.openState': 'Close'}], 'if': ['oic.if.baseline', 'oic.if.s'], 'rt': ['x.com.samsung.da.doors']}}, 'data': None}

Also in the log is a push message about updated firmware being available. I can’t work out if that means HA is using an old version of the API to talk to SmartThings or if it is saying SmartThings firmware needs to be updated somehow:

Jun 25 23:08:47 hassbian hass[28497]: 2019-06-25 23:08:47 DEBUG (MainThread) [homeassistant.components.smartthings] Push update received: {'location_id': 'XXXXX-fc46-4e41-9e0e-76f034c391e0', 'device_id': 'XXXXX-7903-2053-55fb-6010ec59a3d1', 'component_id': 'main', 'capability': 'execute', 'attribute': 'data', 'value': {'payload': {'if': ['oic.if.baseline', 'oic.if.a'], 'x.com.samsung.rm.micomdataLength': 94, 'rt': ['x.com.samsung.da.rm.micomdata'], 'x.com.samsung.rm.micomdata': 'XXXXXB00000000001AFE15051F5AA62001C381BDCFA8C39E0112C783C9010D00000000000000000001F07B00D0E0'}}, 'data': None}
Jun 25 23:08:48 hassbian hass[28497]: 2019-06-25 23:08:48 DEBUG (MainThread) [homeassistant.components.smartthings] Push update received: {'location_id': 'XXXXX-fc46-4e41-9e0e-76f034c391e0', 'device_id': 'XXXXX-7903-2053-55fb-6010ec59a3d1', 'component_id': 'main', 'capability': 'execute', 'attribute': 'data', 'value': {'payload': {'if': ['oic.if.baseline', 'oic.if.a'], 'x.com.samsung.rm.micomdataLength': 94, 'rt': ['x.com.samsung.da.rm.micomdata'], 'x.com.samsung.rm.micomdata': 'XXXXX00000000001BFE15051F5AA54400000000000000000000000000000000000000000000000001F04A00D1E0'}}, 'data': None}
Jun 25 23:08:48 hassbian hass[28497]: 2019-06-25 23:08:48 DEBUG (MainThread) [homeassistant.components.smartthings] Push update received: {'location_id': 'XXXXX-fc46-4e41-9e0e-76f034c391e0', 'device_id': 'XXXXX-7903-2053-55fb-6010ec59a3d1', 'component_id': 'main', 'capability': 'execute', 'attribute': 'data', 'value': {'message': {'payload': {'x.com.samsung.da.items': [{'x.com.samsung.da.type': 'Software', 'x.com.samsung.da.id': '0', 'x.com.samsung.da.number': '20190517_051451', 'x.com.samsung.da.newVersionAvailable': '0', 'x.com.samsung.da.name': 'default'}, {'x.com.samsung.da.type': 'Firmware', 'x.com.samsung.da.id': '1', 'x.com.samsung.da.number': '20150501', 'x.com.samsung.da.newVersionAvailable': '0', 'x.com.samsung.da.name': 'default'}], 'x.com.samsung.da.description': '18K_REF_LCD_FHUB3.0', 'if': ['oic.if.baseline', 'oic.if.a'], 'x.com.samsung.da.versionId': 'default', 'x.com.samsung.da.serialNum': '097D43BK300099X', 'x.com.samsung.da.modelNum': '18K_REF_LCD_FHUB3.0|00079341|0000033c021024380102000000000000', 'rt': ['x.com.samsung.da.information'], 'x.com.samsung.da.approvedState': 'default'}}, 'coapToken': 'XXXXXc0747384e', 'responseCode': 'CONTENT', 'receiverDi': 'XXXXX-7903-2053-55fb-6010ec59a3d1', 'observeOption': 'NOTHING', 'path': '/oic/route/XXXXX-7903-2053-55fb-6010ec59a3d1/information/vs/0', 'senderDi': 'OCFDeviceType'}, 'data': None}
Jun 25 23:08:49 hassbian hass[28497]: 2019-06-25 23:08:49 DEBUG (MainThread) [homeassistant.components.smartthings] Push update received: {'location_id': 'XXXXX-fc46-4e41-9e0e-76f034c391e0', 'device_id': 'XXXXX-7903-2053-55fb-6010ec59a3d1', 'component_id': 'main', 'capability': 'execute', 'attribute': 'data', 'value': {'payload': {'if': ['oic.if.baseline', 'oic.if.a'], 'x.com.samsung.rm.micomdataLength': 94, 'rt': ['x.com.samsung.da.rm.micomdata'], 'x.com.samsung.rm.micomdata': 'XXXXX00000000001CFE15051F5AA6083C000000000000000000000000000000000000000000000001F03900D6E0'}}, 'data': None}

Hopefully the firmware issue is a red herring as the value is zero. But the main problem is that the contact entity never changes state to off when closed but does go to on when opened!

A few weeks ago the Samsung fridge had a software update. Since then I am no longer able to see the picture of inside the fridge in my HA. Anybody else with this issue?

Yes I’m seeing the same issue with the picture inside no longer showing in the familyhub camera component after the Family Hub 4.0 update.

-BK

Has anyone heard about any progress on the family hub camera component?

1 Like