AdyRock / com.smartthings

Home app to integrate SmartThings
GNU General Public License v3.0
12 stars 7 forks source link

Freezer #7

Closed keolse closed 3 years ago

keolse commented 3 years ago

Hello, added a freezer to homey. Not getting cooling temp or contact sensor data.

AdyRock commented 3 years ago

Could you enable the log and wait for the list to populate then send it to me. Hopefully it will show the parameter names so I can add them in.

keolse commented 3 years ago
keolse commented 3 years ago

2020-12-20

Also added many times on device page. I have just one.

AdyRock commented 3 years ago

Hmm, the thing that's strange is the values are all null so the system is not reporting anything for those capabilities. However I don't think the list is complete. So could you enable the log, wait until you see "* Next Interval = ", clear the log, wait for it to show the message again and then disable the log. Hopefully that should capture one complete refresh cycle, provided it's not more than 60kB of data.

So I can workout why it's showing multiple freezers, could you go through the process of adding a device (up to the point where it shows the list is enough) and then send me the Detected log. From that I should be able to pick up the key that identifies the freezer and add it as a new device.

keolse commented 3 years ago
keolse commented 3 years ago
"profile": {
    "id": "9e240516-6201-358d-80a8-2d4ce0c6803e"
  },
  "type": "OCF",
  "restrictionTier": 0
},
{
  "deviceId": "C0972783-A9E0-0000-0000-000000000000",
  "name": "Fryseskap",
  "label": "Fryseskap",
  "manufacturerName": "Samsung Electronics",
  "presentationId": "DA-REF-NORMAL-100001",
  "deviceManufacturerCode": "Samsung Electronics",
  "locationId": "675b5768-91f4-4880-892c-8be4ef063ad3",
  "ownerId": "67e36fe3-ac03-efe1-c8c4-262c9134fa1b",
  "roomId": "f4291aab-e54a-4111-93f9-9548a241ba85",
  "deviceTypeName": "Samsung OCF Refrigerator",
  "components": [
    {
      "id": "main",
      "capabilities": [
        {
          "id": "contactSensor",
          "version": 1
        },
        {
          "id": "execute",
          "version": 1
        },
        {
          "id": "ocf",
          "version": 1
        },
        {
          "id": "refresh",
          "version": 1
        },
        {
          "id": "refrigeration",
          "version": 1
        },
        {
          "id": "thermostatCoolingSetpoint",
          "version": 1
        },
        {
          "id": "custom.disabledCapabilities",
          "version": 1
        },
        {
          "id": "custom.disabledComponents",
          "version": 1
        },
        {
          "id": "custom.waterFilter",
          "version": 1
        },
        {
          "id": "samsungce.driverVersion",
          "version": 1
        }
      ],
      "categories": [
        {
          "name": "Refrigerator"
        }
      ]
    },
    {
      "id": "freezer",
      "capabilities": [
        {
          "id": "contactSensor",
          "version": 1
        },
        {
          "id": "thermostatCoolingSetpoint",
          "version": 1
        },
        {
          "id": "custom.disabledCapabilities",
          "version": 1
        }
      ],
      "categories": []
    },
    {
      "id": "cooler",
      "capabilities": [
        {
          "id": "contactSensor",
          "version": 1
        },
        {
          "id": "thermostatCoolingSetpoint",
          "version": 1
        },
        {
          "id": "custom.disabledCapabilities",
          "version": 1
        }
      ],
      "categories": []
    },
    {
      "id": "cvroom",
      "capabilities": [
        {
          "id": "contactSensor",
          "version": 1
        },
        {
          "id": "thermostatCoolingSetpoint",
          "version": 1
        },
        {
          "id": "custom.disabledCapabilities",
          "version": 1
        }
      ],
      "categories": []
    },
    {
      "id": "onedoor",
      "capabilities": [
        {
          "id": "contactSensor",
          "version": 1
        },
        {
          "id": "thermostatCoolingSetpoint",
          "version": 1
        },
        {
          "id": "custom.disabledCapabilities",
          "version": 1
        }
      ],
      "categories": []
    }
  ],
  "profile": {
    "id": "89141a0c-0041-3038-8b65-3dda35e34c9f"
  },
  "type": "OCF",
  "restrictionTier": 0
},
{
AdyRock commented 3 years ago

I can see one problem. This is the first device I have seen that has multiple components. Normally there is just the "main" component but the freezer has a component for each compartments as well. May app tries to handle sub components by adding them as separate devices, hence five entries. It would have been more obvious had I thought to add the component name to the list. The Homey interface isn't really optimised for multiple components of one devices so here we have a choice:

  1. Keep the components separate but correctly labeled. So you could have a device for the 'main' features, one for the 'freezer', one for the 'cooler', one for the 'cvroom' and one for the 'onedoor'. You would be able to choose which ones to include and change the names after adding the devices. I think this would be the easiest from my point of view dues to the restrictions of the device layout in Homey.

  2. Combine the components into one device. This would mean all the capabilities are kept together but I'm not sure how the labeling would work or how the flow cards would be differentiated.

So either way needs work but do you have a preference?

Note: I'm still not sure why all the values are reported as null for the capabilities.

keolse commented 3 years ago

Number 1 seems to be the best one? Then you can choose the one u prefere.

Can it have something with the dislpay on the freezer? It`s not activ when door is closed.

AdyRock commented 3 years ago

Can it have something with the dislpay on the freezer? Its not activ when door is closed.` I would be surprised if it was, but you could try capturing the log with the door open I guess.

Maybe there is something that can be enabled to make the data active. What is the model of the freezer?

AdyRock commented 3 years ago

I have publish a new version that should separate the components correctly. Also add a freezer type of icon. Still not sure about the null values though as I can't find any mention of that on the internet yet.

keolse commented 3 years ago

Hello, value from contact sensor is not working on "Main" the sensor data comes from "onedoor" Sending you log.

AdyRock commented 3 years ago

That's the downside of splitting the components into devices. So to get the door you would need to add the onedoor. I will explore the other method so everything is in one and see where that goes.

AdyRock commented 3 years ago

Just out of interest, what does the interface look like in the SmartThings App? How do they handle the different parts and what is actually displayed? The data provided by the API does not tell me what is really available and what is just nonsense. I wonder if the null values are returned for items that are no actually available?

What is the model number of the freezer?

keolse commented 3 years ago

20210102_113555 Screenshot_20210102-113046_SmartThings

Hello here is picture off app and model

keolse commented 3 years ago

You can find the quick freeze activation on components/main/status

sending log

keolse commented 3 years ago

The temperatur showed in smartthings is the set point temp. This is you can only get if you adjust freezer temp. Sending log

Setting logEnabled has changed.

AdyRock commented 3 years ago

It looks like Samsung have changed the API slightly so the devices log is not getting all the information that it used to. I have published a new version that has a new tab in the app Configuration page called Send Command. On this tab you can enter commands to send to your SmartThings account. The command is entered just below the text that says For debug use only. Could you type / paste the following command into the Send Command tab:

/devices/C0972783-A9E0-0000-0000-000000000000/status

Where C0972783-A9E0-0000-0000-000000000000 is the id of your freezer. Then tap on the Send button to get the result and finally send the log to me.

The old API used to include all of this information for every devices but it looks like they have slimmed down the response so now it has to be request for each one.

Hopefully this should provide a more detailed list of capabilities including the applicable list of values, etc. The original list you sent does not show any capability to get the current temperatures so it looks like it will only be possible to get the set temperatures.

keolse commented 3 years ago

getting an message: error: [object] object]

keolse commented 3 years ago

My fault. Here is the log! :)

{ "components": { "onedoor": { "contactSensor": { "contact": { "value": "closed", "timestamp": "2021-01-03T12:02:13.572Z" } }, "custom.disabledCapabilities": { "disabledCapabilities": { "value": null, "timestamp": "2020-12-20T21:13:25.828Z" } }, "thermostatCoolingSetpoint": { "coolingSetpoint": { "value": null, "timestamp": "2020-12-20T21:13:15.095Z" } } }, "cooler": { "contactSensor": { "contact": { "value": null, "timestamp": "2020-12-20T21:13:04.095Z" } }, "custom.disabledCapabilities": { "disabledCapabilities": { "value": null, "timestamp": "2020-12-20T21:13:04.095Z" } }, "thermostatCoolingSetpoint": { "coolingSetpoint": { "value": null, "timestamp": "2020-12-20T21:13:04.095Z" } } }, "freezer": { "contactSensor": { "contact": { "value": null, "timestamp": "2020-12-20T21:12:53.233Z" } }, "custom.disabledCapabilities": { "disabledCapabilities": { "value": null, "timestamp": "2020-12-20T21:12:53.233Z" } }, "thermostatCoolingSetpoint": { "coolingSetpoint": { "value": -21, "unit": "C", "timestamp": "2021-01-02T11:59:44.568Z" } } }, "main": { "custom.disabledComponents": { "disabledComponents": { "value": null, "timestamp": "2020-12-20T21:12:31.373Z" } }, "contactSensor": { "contact": { "value": null, "timestamp": "2020-12-20T21:12:20.314Z" } }, "ocf": { "st": { "value": null, "timestamp": "2020-12-20T21:11:57.941Z" }, "mndt": { "value": null, "timestamp": "2020-12-20T21:11:46.074Z" }, "mnfv": { "value": null, "timestamp": "2020-12-20T21:11:34.755Z" }, "mnhw": { "value": null, "timestamp": "2020-12-20T21:11:29.256Z" }, "di": { "value": "C0972783-A9E0-0000-0000-000000000000", "timestamp": "2020-12-17T16:50:28.251Z" }, "mnsl": { "value": null, "timestamp": "2020-12-20T21:10:54.004Z" }, "dmv": { "value": "res.1.1.0,sh.1.1.0", "timestamp": "2020-12-17T16:50:28.251Z" }, "n": { "value": "Fryseskap", "timestamp": "2020-12-19T21:14:32.694Z" }, "mnmo": { "value": "DONGLE_0280|00090841|00080028001130300100000000000000", "timestamp": "2020-12-19T21:14:32.694Z" }, "vid": { "value": "DA-REF-NORMAL-100001", "timestamp": "2020-12-17T16:50:28.251Z" }, "mnmn": { "value": "Samsung Electronics", "timestamp": "2020-12-17T16:50:28.251Z" }, "mnml": { "value": null, "timestamp": "2020-12-20T21:10:43.312Z" }, "mnpv": { "value": null, "timestamp": "2020-12-20T21:10:32.703Z" }, "mnos": { "value": null, "timestamp": "2020-12-20T21:10:22.155Z" }, "pi": { "value": null, "timestamp": "2020-12-20T21:10:11.586Z" }, "icv": { "value": "core.1.1.0", "timestamp": "2020-12-17T16:50:28.251Z" } }, "refrigeration": { "defrost": { "value": null, "timestamp": "2020-12-20T21:12:09.214Z" }, "rapidCooling": { "value": null, "timestamp": "2020-12-20T21:12:09.214Z" }, "rapidFreezing": { "value": "off", "timestamp": "2021-01-02T10:30:17.189Z" } }, "custom.disabledCapabilities": { "disabledCapabilities": { "value": null, "timestamp": "2020-12-20T21:10:00.994Z" } }, "samsungce.driverVersion": { "versionNumber": { "value": 20083101, "timestamp": "2020-12-19T00:13:02.212Z" } }, "refresh": {}, "execute": { "data": { "value": null, "data": {}, "timestamp": "2020-12-20T21:09:39.979Z" } }, "custom.waterFilter": { "waterFilterUsageStep": { "value": null, "timestamp": "2020-12-20T21:09:50.516Z" }, "waterFilterResetType": { "value": null, "timestamp": "2020-12-20T21:09:50.516Z" }, "waterFilterCapacity": { "value": null, "timestamp": "2020-12-20T21:09:50.516Z" }, "waterFilterUsage": { "value": null, "timestamp": "2020-12-20T21:09:50.516Z" }, "waterFilterStatus": { "value": null, "timestamp": "2020-12-20T21:09:50.516Z" } }, "thermostatCoolingSetpoint": { "coolingSetpoint": { "value": null, "timestamp": "2020-12-20T21:09:35.173Z" } } }, "cvroom": { "contactSensor": { "contact": { "value": null, "timestamp": "2020-12-20T21:12:42.535Z" } }, "custom.disabledCapabilities": { "disabledCapabilities": { "value": null, "timestamp": "2020-12-20T21:12:42.535Z" } }, "thermostatCoolingSetpoint": { "coolingSetpoint": { "value": null, "timestamp": "2020-12-20T21:12:42.535Z" } } } } }

keolse commented 3 years ago

Have you checked the log? :)

AdyRock commented 3 years ago

Ah, sorry, I completely forgot. Too many things going on at once. Where did we get to? What is missing or needs to be fixed?

keolse commented 3 years ago

You wrote "Hopefully this should provide a more detailed list of capabilities including the applicable list of values, etc."

Could it be possible to have set temp on Main? Can not see in the log that freezer temp is logged.

AdyRock commented 3 years ago

The only temperature in the log is in the freezer componet:

        "freezer": {
            "contactSensor": {
                "contact": {
                    "value": null,
                    "timestamp": "2020-12-20T21:12:53.233Z"
                }
            },
            "custom.disabledCapabilities": {
                "disabledCapabilities": {
                    "value": null,
                    "timestamp": "2020-12-20T21:12:53.233Z"
                }
            },
            "thermostatCoolingSetpoint": {
                "coolingSetpoint": {
                    "value": -21,
                    "unit": "C",
                    "timestamp": "2021-01-02T11:59:44.568Z"
                }
            }
        },

There is no temperature in main. Strange that they put the rapidFreezing in main though. To be honest, I think Samsung have made a bit of a mess with one. It looks like there are only three supported features and they are split over three different components:

If I recode it to combine all the components into one device, then all the capabilities will be together. But a tile can only show one of the following: alarm (door open), target temperature, On / Off (rapid freeze). I don't know which one takes priority.

I also need to find a way to ignore all of the seemingly unsupported but reported capabilities.

So, I have published a new version that supports the Rapid Freeze and I will look at a big change to try and combine just the parts the we have identified as usable so far. I think I'm going to implement the standard multiple driver approach so when you add a devices, you first select the type, e.g. refrigeration.

keolse commented 3 years ago

hello!

Tested new app, seems to be a problem with rapid freeze. Sending you log file. With it on and off.

AdyRock commented 3 years ago

If you are happy to side load apps from GitHub, could you grab the version from the DriverMethod branch? I have added a driver for the freezer so that it is specific about what it gets. This means I can group all the components together.

keolse commented 3 years ago

Hello! Loaded and tested. Everything seems to be good! Thank you!

AdyRock commented 3 years ago

That's good news. I will merge the branches and publish the app later. Originally, I was trying to keep it all as generic as possible to avoid having to create a driver for each device. But I think that approach is not robust enough for these more complex things. Also, I didn't have a big enough sample of devices to track down a unique identifier for types of device. With all the logs that have been submitted to me over time I have hopefully worked that out now.