{"id":17252085,"url":"https://github.com/ppetr/home-automation-can","last_synced_at":"2026-03-19T00:19:11.942Z","repository":{"id":146160464,"uuid":"292006833","full_name":"ppetr/home-automation-CAN","owner":"ppetr","description":"SW and HW for an inexpensive home automation communication network based on the CAN bus","archived":false,"fork":false,"pushed_at":"2020-10-07T06:17:29.000Z","size":255,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T12:10:35.513Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ppetr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/code-of-conduct.md","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}},"created_at":"2020-09-01T13:34:25.000Z","updated_at":"2022-04-18T15:25:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"91947d6c-0f68-494e-a93b-a23e3d5125c1","html_url":"https://github.com/ppetr/home-automation-CAN","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ppetr/home-automation-CAN","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppetr%2Fhome-automation-CAN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppetr%2Fhome-automation-CAN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppetr%2Fhome-automation-CAN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppetr%2Fhome-automation-CAN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ppetr","download_url":"https://codeload.github.com/ppetr/home-automation-CAN/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppetr%2Fhome-automation-CAN/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29455601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":[],"created_at":"2024-10-15T06:52:59.882Z","updated_at":"2026-02-14T21:03:09.555Z","avatar_url":"https://github.com/ppetr.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Home automation communication network\n\n_*Disclaimer:* This is not an officially supported Google product._\n\nThis project aims to create both SW and HW for an inexpensive home automation\ncommunication network based on the\n[CAN bus](https://en.wikipedia.org/wiki/CAN_bus) using common components and\ninfrastructure.\n\nEventually it will contain hardware plans\n([KiCAD](https://en.wikipedia.org/wiki/KiCad)) and software to control\nindividual modules.\n\nAt the moment subdirectories contain work in progress, untested, and not\nsuitable for any use whatsoever.\n\n## Design goals:\n\n* Local with respect to network changes. That is, changing one part of the\n  network should not require modification of the network as a whole.\n* Easy to use. Adding or removing devices should be simple.\n* Allow complex topologies, ideally multi-star.\n* Use existing infrastructure - CAT 5 cables and RJ45 connectors.\n* Universal - modules should be able to provide GPIO pins, as well as standard\n  short-range communication buses such as I²C.\n* Inexpensive.\n\nSee also\n[Linearizing multi-star network for home automation](https://electronics.stackexchange.com/questions/512147/linearizing-multi-star-network-for-home-automation)\non StackExchange.\n\n## Detailed design\n\n### RJ45 connector for CAN\n\nThe project uses the standard [RJ45](https://en.wikipedia.org/wiki/RJ45)\nconnector and [CAT5](https://en.wikipedia.org/wiki/Category_5_cable) (or better\ncables).\n\nFor power distribution it uses pins 4 and 5 for positive voltage and pins 7 and\n8 for negative (ground) voltage. This is compatible with [Power over\nEthernet](https://en.wikipedia.org/wiki/Power_over_Ethernet). It should be\npossible to use any _passive_ PoE injector up to 48V.\n\nPin pairs 1 \u0026 2 and 3 \u0026 6 are used for the CAN bus. The standard requires that\nthe CAN bus data connections form a serial bus. In order to support arbitrary\ntree [topologies](https://en.wikipedia.org/wiki/Network_topology), each node in\nthe network provides a linar segment of a CAN bus. This linear segment goes\nfrom pins 1 (_LEFT CAN+_) and 2 (_LEFT CAN-_) to pins 3 (_RIGHT CAN+_) and 6\n(_RIGHT CAN-_). All these segments are then concatenated into a single serial\nline.\n\n![RJ54 interface](docs/rj45-schema.png)\n\nA simple **end node** must connects pins 1-3 and 2-6 to connect the bus segment\n\"on its left\" with the other segment \"on its right\". At the same time, it\nconnects its CAN transceiver to these pins and to the ground pins. It can also\ndraw power from the PoE positive voltage pins.\n\n![RJ54 end node](docs/rj45-node-schema.png)\n\nA **splitter node** just connects the power pins among all RJ45 connectors. The\ndata pin connections are more complicated: The CAN network \"going from the\nleft\" is first connected to one branch (CAN1), the \"right\" part of the branch\nis connected to the \"left\" part of the other branch (CAN2), and finally\ncontinues \"to the right\" (CAN3).\n\n![RJ54 splitter node](docs/rj45-splitter-schema.png)\n\nThis corresponds to depth-first\n[tree traversal](https://en.wikipedia.org/wiki/Tree_traversal) of the network.\n\nNotice that the splitter node is fully symmetric. Therefore any connector can\nbe used as the one connected to the main network, and all the others as\nbranches. It can also split into more than two branches. However, in any case\n**all branches must be connected** to nodes, even just to dummy ones that only\nconnect pins 1-3 and 2-6, in order to ensure that the whole network is\ninterconnected.\n\nFinally, exactly one node on the network must be a **terminating node**, to\nprovide proper\n[electrical termination](https://en.wikipedia.org/wiki/Electrical_termination).\nWithout such a node the whole network would form a ring and suffer from echoes\n(see also [Signal reflection](https://en.wikipedia.org/wiki/Signal_reflection)).\n\n![RJ54 terminator node](docs/rj45-terminator-schema.png)\n\n## Contributions and future plans\n\nOnce a skeleton of the project becomes available, contributions will be\nwelcomed! Please see [Code of Conduct](docs/code-of-conduct.md) and\n[Contributing](docs/contributing.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppetr%2Fhome-automation-can","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fppetr%2Fhome-automation-can","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppetr%2Fhome-automation-can/lists"}