I recently bought a Noma smart air conditioner from Canadian tire. It’s wifi-enabled, and connects to the Noma IQ app for control.
There is no official or community integration for Noma that I can find. I’ve discovered that Noma partnered with an IOT platform called Ayla for developing their smart products. I’ve been able to gather that Ayla is meant for manufacturers to use to help ‘smartify’ their devices. They have an API for developers at these manufacturers here https://docs.aylanetworks.com.
I’m a software developer, so I’m familiar with API documentation and these type of requests. I haven’t, however, built a Home Assistant custom integration before. Does anyone know if this would be possible, or if it would be a waste of my time?
Thanks in advance for any of your thoughts and input.
Hey @troyhatchard, I cannot help you with your question specifically, but generally this is how community integrations start. Someone keen figures out the API and then writes a custom integration.
I’m looking at a new Noma dehumidifier from Canadian Tire - I’d be super intersted in this integration if you are able to develop!
Thanks for your response! It’s good to hear that someone else might get some use out of it.
This Ayla solution sounds like it’s doing the same thing as Tuya. So if I can create a developer account with them, maybe I can use that to run a custom integration that works something like the Tuya integration.
Hey @troyhatchard , I just started as we speak to reverse engineering their API. I would like to integrate my portable AC to Home Assistant. I was curious to know if anyone else did it before and I found this thread. Have you found anything yet?
@JeePeeQC It’s great to hear you’re looking into this as well! I am not sure if their API is something we can tap into or not. It seems like everything I’ve seen is only relevant for developers working for manufacturers to create these devices. Their API reference should contain what we need to create an integration, but the problem I’ve run into is that I create a developer account with them without a business registered with them first.
I’m curious what you mean when you say you’ve started reverse engineering their API. Have you found a way to authenticate without this business account?
Just to add here, I have a few more thoughts if we can’t access the data through the API. I’m not sure if they’ll be really possible but I want to brainstorm a bit here.
Intercept the actual packets going between the machine and the API leaving the local network.
I don’t know if this would be possible with the packets being https encrypted. I’m only vaguely familiar with packet sniffing. Can https packets be decoded? Can you find just the header in case the requests are simply http GET requests and view get request params?
Somehow tweak the ESP device itself. Maybe replace Ayla with ESPHome?
This one is a long shot as well. Would be risky because it would involve opening up the machine. It could brick the machine esp device, and even if you did get esphome installed and working, how would you know what signals to send to and from the machine to control it and get data?
Control the device with a smart IR blaster
This is the simplest solution but not ideal. It would allow us to mimic the device’s remote control, so we could:
Turn the device on and off
Set the temperature, mode, fan speed
This would be missing the temperature and humidity sensor data in the device, and would restrict us to just the modes and operations the machine already has.
These are just my ideas for API alternatives if it comes to that. I do think the API could be the best solution if we got it figured out, although it wouldn’t allow any local control.
@troyhatchard I may not have used the correct terminology and by reverse engineering I meant trying to figure out how the mobile app, the portable AC and their cloud server communicate together.
You mentionned some great ideas. I’m attempting the first one by sniffing the network traffic. Yes there’s way to intercept HTTPs traffic with a proxy and custom SSL certificate.
I don’t know if it’s the right approach but my goal is basically trying to understand what the iOS app is doing and what requests it makes and reproduce that communication in a Home Assistant plugin.
@troyhatchard I’ve been able to intercept the HTTP request and get a good understanding. I was able to interact locally with the AC from my computer. This Home Assistant plugin for HiSense air conditioner (GitHub - deiger/AirCon: Scripts for controlling Air Conditioners, e.g. with HiSense modules.) could probably be compatible, but the Noma IQ app isn’t listed. My Noma AC is basically a rebranded Hisense AC but I wasn’t able to pair it with any of the listed app, only the NOMA IQ app. I’m confident we could create a plugin compatible with our Noma devices by also using some of the logic from the Deiger/Aircon plugin.
If you’d like to collaborate on this project, I would be more than happy. Let me know if you’d like to reach out on Discord or something.
I’m also interested in this integration. I just purchased a noma iq AC, and am also a software developer. Should we start a github project or something?
I just jumped onto the HA community after a long hiatus.
Here’s an updated discord link. There hasn’t been any recent activity, and no official project started yet, but others have posted some research and ideas into the Discord, so others should be able to join as well.
I don’t currently have time to start work on the integration. But I’m happy to participate in conversations and help however I can.