{"id":3445,"date":"2026-07-23T11:56:39","date_gmt":"2026-07-23T15:56:39","guid":{"rendered":"https:\/\/blog.lufamily.ca\/kang\/?p=3445"},"modified":"2026-07-23T11:56:43","modified_gmt":"2026-07-23T15:56:43","slug":"homebridge-2-0-and-garage-door-opener","status":"publish","type":"post","link":"https:\/\/blog.lufamily.ca\/kang\/2026\/07\/23\/homebridge-2-0-and-garage-door-opener\/","title":{"rendered":"Homebridge 2.0 and Garage Door Opener"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Back in 2017 (more than 9 years ago), I created my <a href=\"https:\/\/blog.lufamily.ca\/kang\/2017\/03\/14\/raspberry-pi-zero-w-with-relay\/\" data-type=\"post\" data-id=\"368\">own home automation garage door opener<\/a> using a Raspberry Pi Zero. I then wrote a homebridge plugin so that the garage door opener will work with Homebridge and HomeKit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The times of change has caught up to us. The original version of the plugin that I wrote with Homebridge was designed and coded for version 1.0. As of May 4, 2026, Homebridge released version 2.0. As of this writing, they are now on version 2.2.1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unfortunately for me, this upgrade rendered my old plugin not workable with the latest version of Homebridge. I was going to read the migration guide and performed the changes myself, but of course I was too lazy to get around to it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Today, I simply asked opencode.ai to tackle this problem. I have attached my opencode session at the end of this post.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I am super surprised that opencode using Qwen 3.6 27B LLM local model running on vLLM handled the changes in a single shot. This was truly a one-shot solution, no fuss, no muss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I still have to learn that AI can do many things for us and not to short sell it for future potential jobs. Live and learn.<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/blog.lufamily.ca\/kang\/wp-content\/uploads\/sites\/3\/2026\/07\/opencode.pdf\" type=\"application\/pdf\" style=\"width:100%;height:810px\" aria-label=\"Embed of opencode.\"><\/object><a id=\"wp-block-file--media-a1212d6a-9165-44a5-b2e7-2b8704312d3d\" href=\"https:\/\/blog.lufamily.ca\/kang\/wp-content\/uploads\/sites\/3\/2026\/07\/opencode.pdf\">opencode<\/a><a href=\"https:\/\/blog.lufamily.ca\/kang\/wp-content\/uploads\/sites\/3\/2026\/07\/opencode.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-a1212d6a-9165-44a5-b2e7-2b8704312d3d\">Download<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Back in 2017 (more than 9 years ago), I created my own home automation garage door opener using a Raspberry Pi Zero. I then wrote a homebridge plugin so that the garage door opener will work with Homebridge and HomeKit. The times of change has caught up to us. The original version of the plugin &hellip; <a href=\"https:\/\/blog.lufamily.ca\/kang\/2026\/07\/23\/homebridge-2-0-and-garage-door-opener\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Homebridge 2.0 and Garage Door Opener&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[111],"tags":[142,100,212,213,28],"class_list":["post-3445","post","type-post","status-publish","format-standard","hentry","category-tech","tag-ai","tag-home-automation","tag-homebridge","tag-opencode","tag-technology"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7V6i8-Tz","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/posts\/3445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/comments?post=3445"}],"version-history":[{"count":1,"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/posts\/3445\/revisions"}],"predecessor-version":[{"id":3447,"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/posts\/3445\/revisions\/3447"}],"wp:attachment":[{"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/media?parent=3445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/categories?post=3445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.lufamily.ca\/kang\/wp-json\/wp\/v2\/tags?post=3445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}