Attempts to get Fanimation fan integrated into HA, Smartthings skipping the fan but imports everything else

I have a Fanimation fan with the wifi dongle. It is connected already into Google Home, SmartThings, and Alexa. There is no direct HA integration for this manufacturer… see: Fanimation controller for HA? - #10 by Jason_Hayes

I am trying to create a card for this single fan.

I’ve started my HA Cloud trial, and connected Alexa + Google Assistant + Smartthings. My understanding is that Alexa + GA are really only for those voice assistants to control HA items, and not the other direction, which is what I need.

Smartthings imported a lot of devices, all of which were already integrated into HA… EXCEPT the fan. Weird. Not sure why it skipped it. Here’s the info page for the device from SmartThings.

Is there something simple I’m missing on why HA did not import this specific device?

If I can’t get it imported via Smartthings, is there a way of getting a card made via Alexa or Google Home to control this fan?

1 Like

Hi

Were you ever able to get this resolved?

1 Like

Just a bit of help if you guys want to look into this deeper:

It has some suggestions how to get things from the SmartThings API with Rest calls.
And how to check what the API provides for your device.

Also, there is a custom component based on the HA version of the SmartThings integration which promises all the capabilities of the SmartThings API.

You can give it a try as well…

1 Like

Mother f er!!! You did it!!! That worked!!! (Sorry for the profanity…it’s the Jersey in me) It’s only showing as a switch and when I change the entity to a fan it only allows me to operate it as a switch(on/off, no speed control). I’ll play with that and see if I can get it working but either way this is good enough for my situation. THANK YOU!!!

1 Like

Thank you so much for these revelations!

Previously my workaround was to make a Scene within SmartThings. These were detected and integrated into HA by the regular SmartThings integration. On, off, toggle, and setting the fan to a set speed were possible via this method. But, seeing the actual state of the fan within HA was not possible with this.

For whatever reason, even though the native Fanimation app has granular 0-100% control of fan speed, native SmartThings only has off, low, medium, high. Google Home used to have % control years ago, which then disappeared. Alexa still has full % control.

Wonderfully, the custom HAC Smartthings integration you pointed to helped! Now, the fan entity is natively visible. This new integration doesn’t seem to see % speed unfortunately, but we’ll take what we can get!

1 Like

Yeah so far I can’t get fan speed to work at all. If I call the service from dev tools I get an error that the entity doesn’t support that service. I’m guessing it’s the way the API is being called or whats open with the API, either way I 95% of the time use it on high speed since it’s two outdoor fans so I can live with using the remote to change speeds the 3 times a year I do actually change them.

If you figure something out with the speeds let me know and I’ll do the same if I do when tinkering around with it.

Okay, I spoke too soon. Even though I gained the fan switch, I found some unfortunate issues with the alternate smarthings integration.

It seems like I’ve lost several devices/entities, including many switches and battery levels.

Very odd behavior. I’m pretty sure these popped up after I integrated the new integration. Will have to investigate more.

I’ll try uninstalling the normal Smartthings integration, reinstalling the alternate HACS installation, and rebooting.

EDIT: Confirmed the HACS integration misses some other entities. These specific entities are 3rd parties connected to Smartthings, namely U-Tec and Thermador appliances. U-Tec has lock status + battery status. The lock status is still fully functional. The battery status has been lost. All Thermador entities (oven, dishwasher) are lost.

I guess I’ll have to choose whichever one I care about most. I don’t think I can have both versions of Smartthings integration installed simultaneously?

@HA-one, you can install one of the forks of that work, which is called smartthings_custom, and meanwhile use the official HA Core integration, it will not override each other, but they can be run parallel.

Otherwise, could you or @bcre3306 provide the attributes and command data from my.smartthings.com? It should show how the fan modes has been implemented.

And yes, you are right, it is very likely that you will loose some other entity content with the HACS integration. It focuses mainly on the not main attributes.

1 Like

@GSzabados Thank you so much for providing the link to the other fork.

I tried it out briefly and found that it restored UTec lock battery info, but did not include the fan switch nor Thermador appliance data. Such an interesting trio of Smartthings integrations with each providing a different combination of entities!

In the first post, I do have a screenshot of the attributes for the fan. Can you clarify what you need for command data?

Fist of all, you can try to remove the previous HACS custom_component and add this version. It is the same as the contemplator1998, but it uses a smarthings_custom name and domain, and most likely you need to authenticate this one separately. (I have not tried it.)

And yes, I am talking about that, but could you export it with the top right Export data icon there and paste it here as text? There is a json export option. I want to understand why and how the custom integration is handling the switch there and how the Core one handles the others.
Smartthings has an extremely bad structure, and quite hard to interface in one integration.

Also, could you export the commands as well?

1 Like

Thanks for continuing to work with us on this.

It looks like I had tried a different smartthings custom integration than the one you just listed above. It was this one, which I simply pulled from a google search:

This one did not allow the native integration to be installed at the same time.

I uninstalled that one, and installed the one you listed - tmh88.
This tmh88 custom integration does miss the aforementioned utec lock battery + Thermador appliance data, but the fan does get imported! And I just confirmed the native integration can now be installed alongside!

Here’s the export data you requested for the fan.

Fan Attributes:

[
    {
        "component": "fan",
        "capability": "fanSpeed",
        "attribute": "fanSpeed",
        "value": 3,
        "timestamp": "2024-07-03T03:59:03.819Z"
    },
    {
        "component": "fan",
        "capability": "switch",
        "attribute": "switch",
        "value": "off",
        "timestamp": "2024-07-08T03:44:41.373Z"
    },
    {
        "component": "light",
        "capability": "switch",
        "attribute": "switch",
        "value": "off",
        "timestamp": "2024-06-29T06:17:03.861Z"
    },
    {
        "component": "light",
        "capability": "switchLevel",
        "attribute": "level",
        "value": 10,
        "timestamp": "2024-06-29T06:16:57.882Z"
    },
    {
        "component": "light",
        "capability": "switchLevel",
        "attribute": "levelRange",
        "value": null
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "checkInterval",
        "value": 60,
        "timestamp": "2024-03-01T08:54:41.840Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-DeviceStatus",
        "value": "online",
        "timestamp": "2024-06-27T14:58:39.886Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-Enroll",
        "value": null
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "healthStatus",
        "value": null
    }
]

Fan commands:

[
    {
        "componentId": "fan",
        "capabilityId": "fanSpeed",
        "name": "setFanSpeed"
    },
    {
        "componentId": "fan",
        "capabilityId": "switch",
        "name": "off"
    },
    {
        "componentId": "fan",
        "capabilityId": "switch",
        "name": "on"
    },
    {
        "componentId": "light",
        "capabilityId": "switch",
        "name": "off"
    },
    {
        "componentId": "light",
        "capabilityId": "switch",
        "name": "on"
    },
    {
        "componentId": "light",
        "capabilityId": "switchLevel",
        "name": "setLevel"
    },
    {
        "componentId": "main",
        "capabilityId": "healthCheck",
        "name": "ping"
    },
    {
        "componentId": "main",
        "capabilityId": "refresh",
        "name": "refresh"
    }
]
1 Like

Thanks for this. It is as I thought. The Core SmartThings integration takes care of the attributes which have the main component. Which was the case for a while in other integrations in SmartThings, but as you see your fanSpeen and switch is under the fan component. So the integration did not handle it, but the custom one. The veista one, that you linked, that handles some of the OCF specific device components, specifically coded into the custom component. But not generally any component.

The other custom component handles the components, but it does not handle well the main component, but I did not figured it out why yet. I will have to have a look in the code.

For me not the Fanimation is the important, but some of the Samsung OCF stuff. But as you noticed loosing the lock battery, I lost some other stuff, which I wanted to use.

To be honest, the best would be if the Core code would handle the specific case like the veista integration. And if anybody has a device which is not integrated with the main and default settings, then it would be added specifically, like it is all done in the Z2M.

Can you share the Attributes and Commands for the U-Tec and Thermador appliances?

And just out of curiosity, do the light switch working with the tmh88 custom component on your Fanimation fan?

Yes, the fan light switch is included with the tmh88 custom integration. (I don’t actually have a light installed in the fan to physically test, but the switch does respond).

Here’s the U-Tec attributes:

[
    {
        "component": "main",
        "capability": "battery",
        "attribute": "battery",
        "value": 0,
        "timestamp": "2024-05-17T22:58:24.822Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "checkInterval",
        "value": 60,
        "timestamp": "2024-05-13T05:33:07.001Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-DeviceStatus",
        "value": "online",
        "timestamp": "2024-07-03T22:18:35.574Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-Enroll",
        "value": null
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "healthStatus",
        "value": null
    },
    {
        "component": "main",
        "capability": "lock",
        "attribute": "lock",
        "value": "locked",
        "timestamp": "2024-07-07T17:19:13.943Z"
    },
    {
        "component": "main",
        "capability": "lock",
        "attribute": "supportedLockCommands",
        "value": null
    },
    {
        "component": "main",
        "capability": "lock",
        "attribute": "supportedLockValues",
        "value": null
    }
]

U-tec commands:

[
    {
        "componentId": "main",
        "capabilityId": "healthCheck",
        "name": "ping"
    },
    {
        "componentId": "main",
        "capabilityId": "lock",
        "name": "lock"
    },
    {
        "componentId": "main",
        "capabilityId": "lock",
        "name": "unlatch"
    },
    {
        "componentId": "main",
        "capabilityId": "lock",
        "name": "unlock"
    },
    {
        "componentId": "main",
        "capabilityId": "refresh",
        "name": "refresh"
    }
]

Here’s the Thermador dishwasher attributes:

[
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "checkInterval",
        "value": 60,
        "timestamp": "2024-05-12T22:34:36.672Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-DeviceStatus",
        "value": "online",
        "timestamp": "2024-07-01T10:57:01.333Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-Enroll",
        "value": null
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "healthStatus",
        "value": null
    },
    {
        "component": "main",
        "capability": "signalahead13665.applianceoperationstatesv2",
        "attribute": "operationState",
        "value": "Inactive",
        "timestamp": "2024-07-09T05:57:04.858Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.dishwasherprogramsv2",
        "attribute": "availablePrograms",
        "value": [
            "Dishcare_Dishwasher_Program_Intensiv70",
            "Dishcare_Dishwasher_Program_Auto2",
            "Dishcare_Dishwasher_Program_Eco50",
            "Dishcare_Dishwasher_Program_Glas40",
            "Dishcare_Dishwasher_Program_Quick45",
            "Dishcare_Dishwasher_Program_PreRinse"
        ],
        "timestamp": "2024-06-18T06:30:53.597Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.dishwasherprogramsv2",
        "attribute": "program",
        "value": "Dishcare_Dishwasher_Program_Auto2",
        "timestamp": "2024-07-07T04:23:16.759Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.startstopprogramv2",
        "attribute": "startstop",
        "value": "stop",
        "timestamp": "2024-07-09T05:57:04.858Z"
    },
    {
        "component": "main",
        "capability": "switch",
        "attribute": "switch",
        "value": "off",
        "timestamp": "2024-07-09T05:57:04.865Z"
    }
]

Thermador dishwasher commands:

[
    {
        "componentId": "main",
        "capabilityId": "healthCheck",
        "name": "ping"
    },
    {
        "componentId": "main",
        "capabilityId": "refresh",
        "name": "refresh"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.dishwasherprogramsv2",
        "name": "setProgram"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.dishwasherprogramsv2",
        "name": "stop"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.startstopprogramv2",
        "name": "setStartstop"
    },
    {
        "componentId": "main",
        "capabilityId": "switch",
        "name": "off"
    },
    {
        "componentId": "main",
        "capabilityId": "switch",
        "name": "on"
    }
]

Thermador oven attributes:

[
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "checkInterval",
        "value": 60,
        "timestamp": "2024-05-17T03:33:27.028Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-DeviceStatus",
        "value": "online",
        "timestamp": "2024-07-08T18:35:11.745Z"
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "DeviceWatch-Enroll",
        "value": null
    },
    {
        "component": "main",
        "capability": "healthCheck",
        "attribute": "healthStatus",
        "value": null
    },
    {
        "component": "main",
        "capability": "signalahead13665.applianceoperationstatesv2",
        "attribute": "operationState",
        "value": "Inactive",
        "timestamp": "2024-07-06T06:30:54.508Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.ovenprogramsv2",
        "attribute": "availablePrograms",
        "value": [
            "Cooking_Oven_Program_HeatingMode_TopBottomHeating",
            "Cooking_Oven_Program_HeatingMode_IntensiveHeat"
        ],
        "timestamp": "2024-05-17T03:33:33.277Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.ovenprogramsv2",
        "attribute": "program",
        "value": "None",
        "timestamp": "2024-06-03T06:30:53.580Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.pauseresumev2",
        "attribute": "pauseState",
        "value": "play",
        "timestamp": "2024-06-03T01:45:12.682Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.programdurationv2",
        "attribute": "duration",
        "value": 1,
        "timestamp": "2024-05-17T03:33:33.277Z"
    },
    {
        "component": "main",
        "capability": "signalahead13665.startstopprogramv2",
        "attribute": "startstop",
        "value": "stop",
        "timestamp": "2024-06-03T02:07:52.856Z"
    },
    {
        "component": "main",
        "capability": "switch",
        "attribute": "switch",
        "value": "off",
        "timestamp": "2024-06-03T02:07:58.430Z"
    }
]

Thermador oven commands:

[
    {
        "componentId": "main",
        "capabilityId": "healthCheck",
        "name": "ping"
    },
    {
        "componentId": "main",
        "capabilityId": "refresh",
        "name": "refresh"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.ovenprogramsv2",
        "name": "setProgram"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.ovenprogramsv2",
        "name": "stop"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.pauseresumev2",
        "name": "setPauseState"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.programdurationv2",
        "name": "setProgramDuration"
    },
    {
        "componentId": "main",
        "capabilityId": "signalahead13665.startstopprogramv2",
        "name": "setStartstop"
    },
    {
        "componentId": "main",
        "capabilityId": "switch",
        "name": "off"
    },
    {
        "componentId": "main",
        "capabilityId": "switch",
        "name": "on"
    }
]

But if I can guess that switch is not even showing up with the Core one, right?

I fiddle arround a bit with the custom integration, deleted the previous install and loaded again, and I can clearly see, that it does not load anything which has "component": "main",, that’s why all of those entities lost with the custom integration, it loads everything else, but not the main ones, opposite to the Core integration.

Correct, no element of the fan is visible on the core integration, including the associated light switch.

In the custom one do you have light level control for the light?

Good question.

In the custom tmh88 integration, it shows as only a switch and there is no dimmer function, in HA. If I change the type from “switch” to “light” it still remains on/off only.

The native Smartthings app does show the light dimmer function as you’d expect.

Can you try this?

This would bring the contemplator1998 and the Core integration together into one. I managed to get the “main” component sensors, binary sensors and switches back, as they are in the Core integration.

I need to figure out how to update for the fan functionality, but there is a chance that it could be working as well.

As the contemplator1998 version, it will take over the place of the Core integration.

1 Like

sorry been quite on this one as I’ve been traveling and not at home to test anything. Will be back tonight to see what I am seeing with the fans. Thanks for all the help!

Thank you. I just installed it (removed core and tmh88 integrations first) and it does add the fan functions + utec lock battery.

Thermador appliances are not visible however.

Also not seeing fan speed or light dimmer functions.

But a promising start!