{"id":26225010,"url":"https://github.com/bazzilic/smart-aircon-control","last_synced_at":"2026-05-23T07:07:32.108Z","repository":{"id":93437619,"uuid":"327923401","full_name":"bazzilic/smart-aircon-control","owner":"bazzilic","description":"R\u0026D project to create a smart aircon control that is compatible with Google Home.","archived":false,"fork":false,"pushed_at":"2021-01-08T17:18:08.000Z","size":4013,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-29T00:57:50.537Z","etag":null,"topics":["airconditioning","google-assistant","google-home","infrared","raspberry-pi","smarthome"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bazzilic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-01-08T14:20:59.000Z","updated_at":"2021-01-08T17:19:26.000Z","dependencies_parsed_at":"2023-03-06T13:45:18.417Z","dependency_job_id":null,"html_url":"https://github.com/bazzilic/smart-aircon-control","commit_stats":{"total_commits":4,"total_committers":2,"mean_commits":2.0,"dds":0.25,"last_synced_commit":"b3abff52e66ab6e94327c56d0702b38b0b295fdc"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bazzilic/smart-aircon-control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bazzilic%2Fsmart-aircon-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bazzilic%2Fsmart-aircon-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bazzilic%2Fsmart-aircon-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bazzilic%2Fsmart-aircon-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bazzilic","download_url":"https://codeload.github.com/bazzilic/smart-aircon-control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bazzilic%2Fsmart-aircon-control/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33386089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airconditioning","google-assistant","google-home","infrared","raspberry-pi","smarthome"],"created_at":"2025-03-12T18:30:13.478Z","updated_at":"2026-05-23T07:07:32.088Z","avatar_url":"https://github.com/bazzilic.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Smart Aircon Controller\n\nIn this repo I will document my research and development of a smart Google Home-compatible aircon control device and share all and any sources I will write.\n\n## R\u0026D Log\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e08 Jan 2021 / #0 / The Initial Commit\u003c/b\u003e\u003c/summary\u003e\nAlright, first entry.\n\nWhat I want to achieve by the end of the project.\n\n**Plan MIN**: A device that can\n\n- Turn the aircon on and off\n- Be controlled through an API\n- Be controlled through Google Home (\"Hey Google turn on the aircon\")\n\n**Plan MAX**: A device that can do everything from plan MIN and also\n\n- Set the desired settings on the aircon\n- Detect room temperature and switch between aircon and fan\n- Detect people in the room\n\nI know that there are devices out there  that you can buy and that can do the whole conundrum. There are smart IR blasters, smart thermostats, etc. I even have some of those. However, this is an educational project for me, I never worked with electronics before. Also, this seems fun.\n\nI'm going to focus on Mitsubishi Electric aircons because that's what I have currently but I'll try to make it easy to switch to another remote signal.\n\n![Photos of two types of Mitsubishi aircons I have at my place](img/0001-aircons.jpg)\n\nMy initial vision of how this should work was: a Raspberry Pi Zero W with a small REST server with endpoints such as `/on` and `/off` that sends infrared (IR) signals through an IR LED, mimicking how a remote does it. Google Home then can just ping the endpoints - that is, if we somehow can teach it to.\n\nAfter that came a bit of research with some interesting findings.\n\n**AC Remote Infrared Codes**\nFirst things first, I needed to make sure that my aircon is controlled by IR signals and not something else. IR is invisible to human eye so just looking down the remote wouldn't tell us much. I could have looked it up on the internet but that's boring too, so I remembered that webcams are often sensitive to IR, so I blasted it in my webcam and lo and behold it was blinking:\n\n![Infrared diode in the AC remote visibly blinks on the webcam footage](img/0002-ac-remote.gif)\n\nAfter that the whole project seemed easy. I quickly ordered these two components, an IR diode (left) and an IR receiver (right):\n\n![A photo of IR diodes and IR receivers I ordered](img/0003-ir-tranceiver.jpg)\n\nThe plan was crystal clear: record the \"on\", \"off\", \"temperature up\", \"temperature down\" signals from the IR remote using the receiver and then just replay them using the diode when necessary.\n\nAfter talking to a friend who meddled with controlling aircons before, I learned an awful truth about aircons and their remotes: they don't use the \"on\", \"temperature up\", \"temperature down\" signals at all. Instead, when you press the power button on your remote to turn the AC on, the remote sends the full settings matrix for the current settings that you see on you remote. So if you have on your remote the settings for \"20 degrees, cooling mode, fan power 2, vane fully up\", that's what the remote will send to the AC unit when you turn it on. If afterwards you press \"temperature up\" on your remote, instead of sending a \"temperature up\" code, it will send \"**_21_** degrees, cooling mode, fan power 2, vane fully up\" code. They do have the \"off\" signal though.\n\nThis makes the idea to record the signals from the remote much less attractive, as the signals afterwards could only be used to switch the aircon to a fixed predetermined setting.\n\nIt is still possible to try and decode the signals with some analysis. After a brief search I managed to find a repo where this was already done for Mitsubishi aircons, so for now I will probably rely on that: https://github.com/r45635/HVAC-IR-Control\n\n**Connecting a Device to Google Home**\nAnother avenue of exploration was on how to connect the device to Google Home and make it work with the Assistant. After reading the docs I found out that since recently Google Home can do something that's called [Local Fulfilment](https://developers.google.com/assistant/smarthome/concepts/local) that enables the Assistant to work with devices on LAN directly through a REST API.\n\nUnfortunately as it turns out you still have to create some kind of a Google Action (I haven't looked into this yet) in the online developer panel and setup a cloud fulfilment for that action as a fallback if LAN fulfilment doesn't work. To me it seems weird that you have to have a cloud fulfilment path and there is no way to have pure local devices; seems like a lot of potential customers with security requirements (organizations) are simply locked out of Google Home infra because of that.\n\n**Detecting Presence**\nI didn't do a lot of research on this topic but I found that you can buy passive infrared sensors for about a dollar a piece and they can output a signal if there is someone in their range.\n\n![Passive infrared sensor](img/0007-PIR.jpg)\n\nI haven't done any further research in this direction so far.\n\n**Other Stuff**\nMy Raspberry Pi Zero W turned out to be missing GPIO pins head, so I had to solder them on. This was the fourth time I was holding a soldering iron in my hands, so it was quite stressful.\n\n![Soldering the GPIO head onto Raspberry Pi Zero W](img/0004-soldering-start.jpg)\n\nAfter soldering 40 tiny junctions however, I feel much more confident in my skills. After visual inspection it seems that all junctions are properly soldered but time will tell.\n\n![Photo of GPIO head fully soldered on to the raspberry pi](img/0005-soldering-complete.jpg)\n\nSome junctions are just fine, others are a not so good (bottom right on the image below). Hopefully they will all work out.\n\n![Microscope photo of GPIO head fully soldered on to the raspberry pi with good and bad junctions visible](img/0006-closeup.jpg)\n\nThat's all for now, signing off.\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbazzilic%2Fsmart-aircon-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbazzilic%2Fsmart-aircon-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbazzilic%2Fsmart-aircon-control/lists"}