{"id":34192807,"url":"https://github.com/jurgen-kluft/go-home","last_synced_at":"2026-03-10T08:30:58.980Z","repository":{"id":80842482,"uuid":"76336552","full_name":"jurgen-kluft/go-home","owner":"jurgen-kluft","description":"Automated home with Apple Home, Aqara, Philips Hue, Xiaomi, Wemo, Yee, GL-inet, NATS.io, using Golang","archived":false,"fork":false,"pushed_at":"2025-11-24T00:51:54.000Z","size":14839,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-11-24T02:59:51.751Z","etag":null,"topics":["automation","calendar","darksky","flux","golang","hue","netgear","pubsub","suncalc","wemo","xiaomi","yee"],"latest_commit_sha":null,"homepage":"","language":"Go","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/jurgen-kluft.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-12-13T08:02:20.000Z","updated_at":"2025-11-24T00:51:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"e1ed1c20-3a8e-4fa2-adbf-28c7ed949818","html_url":"https://github.com/jurgen-kluft/go-home","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jurgen-kluft/go-home","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jurgen-kluft%2Fgo-home","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jurgen-kluft%2Fgo-home/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jurgen-kluft%2Fgo-home/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jurgen-kluft%2Fgo-home/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jurgen-kluft","download_url":"https://codeload.github.com/jurgen-kluft/go-home/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jurgen-kluft%2Fgo-home/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30328251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"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":["automation","calendar","darksky","flux","golang","hue","netgear","pubsub","suncalc","wemo","xiaomi","yee"],"created_at":"2025-12-15T16:24:54.369Z","updated_at":"2026-03-10T08:30:58.965Z","avatar_url":"https://github.com/jurgen-kluft.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-home\n\nAutomated home using Go.\n\n## Status\n\nTotal overhaul of the project, all code is being scratched and redone in Go.\n\n## App Structure\n\nNote:\n  InfluxDB for tracking metrics and usage of some processes.\n  Since all of this is written in Go it should be able to run anywhere, from a Raspberry PI, Arduino to a Windows/Mac machine.\n\n- Since every process is just running it's own logic want we need is a pub/sub server where every process\n  can register itself to specific events that it is interested in.\n  -\u003e MQTT Server (Pub/Sub server where you can subscribe to channel(s))\n     This is also useful for any third-party device to integrate into the whole system.\n\n- Following sub-processes:\n  - Apple HomeKit       WIP, (Apple Home Kit accessory emulator, our **UI** solution)\n  - Wemo                Ok, (Wemo WiFi powerplug)\n  - Config              Ok, (A service that is the provider of configurations for all other services)\n  - Presence            Ok, (Connects to Router to obtain list of devices present on the network)\n  - Flux                Ok, (Calculates Color-Temperature and Brightness during the day)\n  - AQI                 Ok, (Air Quality Index)\n  - Suncalc             Ok, (Computes sun-rise, sun-set etc..)\n  - Season              Ok, (Computes the season (Spring, Summer, Autumn, Winter) based on the date)\n  - Weather             Ok, (Darksky)\n  - Calendar            Ok, (Reads calendars from icloud and determines active events and makes sensors out of them)\n  - Shout               Ok, (Push notifications to HomePods?)\n  - Yee                 Ok, (Xiaomi Yee lighting, turn on/off, change CT and BRI)\n  - Wiz                 Ok, (Xiaomi Yee lighting, turn on/off, change CT and BRI)\n  - Sony Bravia TV      Ok, (Turn on/off, HDMI Input, Volume for Sony Bravia TV(s))\n  - Samsung TV Remote   Ok, (Turn on/off Samsung TV(s))\n\nTODO:\n  - ESPHome; For custom mmWave/Air-Quality sensors (https://github.com/pteich/esphomekit)\n  - DD-WRT; For some form of presence (https://github.com/awilliams/wifi-presence)\n  - MQTT; https://github.com/antlinker/libmqtt\n  \n## Automation Logic\n  \nAutomation, reacting to all events and executing automation rules, all written in Go.\n\n## Devices / Hardware\n\n- Home 1:\n  - Aqara M2 Hub (Zigbee Sensors, Lights, Switches, Plugs)\n  - Aqara E1 Hub (Zigbee Repeater)\n  - Apple Mac Mini M4, running Go\n  - Apple TV 4K (this is the HomeKit controller since it can be Ethernet connected)\n  - Apple HomePod\n  - 2 TP-Link Deco routers\n  - Hue, Yee, Ikea, Wiz and Aqara lighting\n  - Aqara Switches\n  - Sony Bravia TV\n  - ESPHome devices (bed presence, air quality)\n\n- Home 2:\n  - Apple Mac Mini M4, running Go\n  - Apple TV 4K (this is the HomeKit controller since it can be Ethernet connected)\n  - Aqara M3 Hub (Zigbee Sensors, Lights, Switches, Plugs)\n  - 2 x Aqara M2 Hub (Zigbee Sensors, Lights, Switches, Plugs)\n  - Apple HomePod\n  - GL.inet routers\n  - Wiz and Aqara lighting\n  - Aqara Switches\n  - LG TV's (HomeKit compatible)\n  - ESPHome devices (room presence, bed presence, air quality)\n\n## Apple HomePod\n\nActs as a HomeKit Hub (Server) and also is able to serve `announcements` to all HomePods in the house. This is useful for automations that need to announce something, like when the door bell is pressed or when the front door is opened or when the wash machine or dryer is done.\n\n## Mac Mini As Home-Server\n\nDoing it with a Mac Mini allows us to play audio on a HomePod by switching the `audio output` on the Mac Mini, we can do this from the terminal. This means we can write a script that can convert text to an mp4 and then play it on one or more HomePods. This is useful for automations that need to announce something, like when the door bell is pressed or when the front door is opened or when the wash machine or dryer is done.\nWe can do this by writing to an announcement.queue file, and we have a process that tails the file and plays the announcements one at a time on the designated HomePod(s).\n\nExample announcement on HomePod1 and HomePod2:\n```\nsay \"Hello, this is a test announcement\" --output announcement.mp4\nselect audio output as HomePod1\nafplay announcement.mp4\nselect audio output as HomePod2\nafplay announcement.mp4\n```\n\n## HomeKit Accessory Server\n\nFor simulating HK accessories, so that in your automations you can use those `virtual` accessories. Our HomeKit automation can easily incorporate these virtual devices, and we can use them to trigger automations but also trigger them.\n\nWe can use Golang and C#, our favorite languages to implement this. The HomeKit Accessory Server is a simple server that can be run on any device that supports Golang or C#. It can be run on a PC, a Mac, or any other device that supports Golang or C#.\n\n### NFC Tags\n\nTo keep this simple for each Tag we will have a virtual accessory that is triggered when the tag is scanned. This accessory can be used in automations to trigger other accessories or automations.\n\nSo: Scan NFC Tag -\u003e Set the state of a specific `Virtual Switch` to ON\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjurgen-kluft%2Fgo-home","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjurgen-kluft%2Fgo-home","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjurgen-kluft%2Fgo-home/lists"}