Tuya / Meross / C8 Pro

Hi there,

I have an ageing SmartThings v3 hub and, at this point, it really only exists for two reasons:

Meross garage door control

  • SmartThings lets me control the Meross garage door opener without the annoying Google Home PIN requirement.

  • I can then link that into Hubitat and Google Home via native integrations or Edge drivers, such as Mira, for voice control and virtual / physical actuator control.

Legacy gas heater control

  • I use a Tuya IR controller with a spoofed fan code workaround to control my analogue gas heater.

  • I can then expose that control path through SmartThings to both Hubitat and Google Home.

  • Both Tuya and Google Home appear to block direct heater control, so this was the only practical way I could get IR-based control working.

My questions are:

  • How good is the current C8 Pro Hubitat Tuya integration in practice, especially for virtual switches or scenes created in the Tuya cloud?

  • Can I simply sync a virtual switch or Tuya scene between Tuya and Hubitat?

  • Are there any plans for native Meross integration in Hubitat, particularly for garage door controllers?

To be clear, I am not trying to pair individual Tuya or Meross devices directly to Hubitat.

I am trying to understand whether Hubitat can integrate with the Tuya and Meross cloud/control plane in a similar way that SmartThings currently does.

IR control sounds doable. Ultimately, for your gas heater, you are trying to send IR commands for control. I use a Broadlink Mini IR controller to control my YMGI mini-split. It has a learning mode that stores the codes as state variables. You have the ability to enter custom bursts as well which should allow you to enter your spoofed fan codes manually.

For my mini-split, I use rules to control state. For example, rules named “minisplit on” and “minisplit off” send the appropriate IR code bursts. I also have simple virtual devices that fire those rules and those devices have been added to homekit. ,The key here is that that any given rule also turns the corresponding rule’s switch off. The effect in homekit is that when I press the “minisplit on” switch, the “minisplit off” switch turns off and vice versa, creating a radio button effect. Voice control = “Siri, turn on minispliton” or “turn on minisplitoff” (spaces left out on purpose since that is how I name the devices so that Siri doesn’t get confused). Not exactly ideal here but the overall method is quite effective since I actually have many minisplit buttons to switch between modes etc so they are grouped together like a keypad in homekit. I rarely, if ever, control the minisplit by voice.

Hi Kevin,

I have the basic IR-to-heater control working using a Tuya-based IR blaster.

The slightly odd workaround is that I had to set it up as if it were controlling a fan, then teach it the heater’s basic on/off IR signal, as there are no heater IR control codes in the Tuya device database.

At the moment I can trigger it directly from the Tuya app, or from SmartThings via the SmartThings/Tuya integration.

The problem is extending that control into Hubitat. To do that, I currently have to go:

1 Hubitat triggers virtual device
2 Maker API posts to ST Mira Edge
3 SmartThings triggers the Tuya integration
4 Tuya cloud triggers the IR blaster
5 IR blaster sends the learnt heater on/off command

That works, but it feels stupidly complex. My SmartThings hub is also getting old, and I would prefer not to keep it in the loop purely as an integration broker.

So what I’m really hoping for is a direct Hubitat-to-Tuya option. In this case it would probably need to be cloud-based, because the local device is effectively a custom virtual IR control rather than a standard local IP’d Tuya IR device.

Cheers,
Gordon

So are you using HubiThings to bring the Meross into Hubitat?

No Chris - I’m using Maker API on Hubitat and then CStup’s Mira Edge Driver on SmartThings. Never heard of HubiThings, will take a look.

I don’t know which IR blaster you have, but I have 5 of these:

https://www.aliexpress.us/item/3256805577280104.html

And use the community Tuya Zigbee IR Remote Control driver. It works for the TVs, fans, and other IR devices throughout the house. I have made some improvements to the driver, but the original author is no longer active here, so I’m considering releasing the updated driver myself.

As for the Meross GDO, can’t say about the newer models. I have the MSG100 (Wifi version) and am using the community Meross Smart WiFi Garage Door Opener driver. It’s actually a backup, once I evolved to make the primary control a Zooz ZEN16 multirelay.

Cheers Neerav,

I also have a MOES Remote - with the use of the Hubitat driver, how to you encode it to the specific external device, or do you still use the Tuya app to encode it and then the driver just triggers the established routine?

I also have the MSG100 and did not know about the community driver - will give it a try.

You’ve been a great help, thank you!

You have to teach the blaster each button/code using the blaster's device page. My modifications make it easier to copy/paste codes into the device. However, so far the copy/paste is only useful for codes that were learned and saved elsewhere using the original remote. The learned codes don't seem to match any that are available on the net, so not useful or possible to copy sets of codes.

OK - so I followed @neerav.modi’s advice on the community driver and found this GitHub - ithinkdancan/hubitat-meross: Hubitat Drivers for Meross Smart Plugs · GitHub from @ithinkdancan. Tested it and it did not work for me, so I’ve updated the original Meross Hubitat app and driver so they now work with the current Meross API and my MSG100 garage door opener on Huibitat C-8 v2.5.0.143.

Updates Meross app and driver files can be found here - Hubitat Meross MSG100 Edit

Summary of changes below

+++ @will2rob @Jost @erik.tank @kevin9 @vctgomes from a related MSG100 topic

The original code was built around an older Meross cloud login method and appeared to assume a multi-door Meross opener, where garage door channels started at 1. My MSG100 exposes the garage door differently, as channel 0, so the app could initially log in and find the Meross device, but it could not detect or create the actual garage door correctly.

The main app changes were to move from the old Meross login endpoint to the newer regional API flow, defaulting to the Asia-Pacific Meross endpoint, fix the request signing and encoding, and improve the way Hubitat parses the Meross login and device-list responses. I also added better error handling so failures are reported clearly instead of producing misleading Hubitat errors.

The discovery logic was also changed so the app supports single-door MSG100 devices and checks for garage door channel 0, rather than only scanning from channel 1. That allowed Hubitat to create the child garage-door device correctly.

The driver then needed to be changed because it was waiting to detect the firmware version before deciding how to sign local Meross commands. That created a circular failure, because it could not refresh the device until signing worked, and it could not determine the firmware until refresh worked. I changed the driver so that, when a valid Meross key is available, it uses the newer key-based signing path immediately.

Finally, the driver was adjusted so channel 0 is treated as valid during open, close, refresh and status parsing. The net result is that the updated app and driver now support my MSG100 directly from Hubitat to Meross Cloud without requiring an integration bridge.

@gordon.thelander

After beating Claude over the head multiple times because it kept telling me it can't be done, and supplying some websites and python scripts, I was able to create a (working) way to use codes available in IR files on the internet. I was able to quickly add 25 buttons for my Samsung AA59-00666A remote. Later, I will try to do the same for the Haier TV which has a dead remote and test it out on the IR devices.

Are you interested in testing it out and give feedback before I release it? PM me.