A comprehensive home automation system built on the Controller Area Network (CAN) bus, designed for flexibility, reliability, and open standards.
HabitatCAN is a flexible, reliable, and open smart home bus that leverages CAN bus technology to provide deterministic messaging, robust arbitration, fault tolerance, and low hardware costs. Unlike proprietary solutions, HabitatCAN enables organic smart home growth without addressing collisions, topology limits, or vendor lock-in.
- Introduction - Purpose, vision, and why CAN bus
- System Overview - High-level architecture and node types
- Addressing & Identity - UID, NetworkID, RoomID, and NodeID
- Controllers - Main, Backup, and Room Controllers
- CAN Network Layer - Physical topology and signaling
- Protocol Specification - Frame types and communication
- Devices - Device classes and implementation
- Discovery & Commissioning - Device onboarding process
- Grouping & Scenes - Multicast and scene management
- Fault Tolerance - Reliability and error handling
- Security - Authentication and threat protection
- External Integration - MQTT, Home Assistant, APIs
- Roadmap - Future development plans
- Glossary - Key terms and definitions
- Wiring Pinouts - Physical connection specifications
- Message Format Reference - Protocol details
- Registry Values - Standard codes and identifiers
- Examples - Implementation examples and topologies
- CAN ID Layouts - CAN identifier ranges and priorities
- Scene Encoding - Example scene implementations
- Fault Code Reference - Error codes and meanings
- Maintenance Commands - Device management operations
- Reserved Values - Future expansion guidelines
- Scalable: Supports thousands of devices across multiple rooms
- Reliable: Built on proven CAN bus technology with fault tolerance
- Open: Vendor-neutral specification with open source implementations
- Flexible: Works with existing Ethernet cabling infrastructure
- Secure: HMAC authentication and network isolation
- Local-First: Operates without internet or cloud dependencies
- Hardware Setup: Install Main Controller and Room Controllers
- Wiring: Use Cat5e/Cat6 structured cabling with RJ45 connectors
- Power: 24V DC distribution via PoE or dedicated supplies
- Commissioning: Devices auto-discover and receive addresses
- Integration: Connect to Home Assistant or other automation platforms
This repository contains the complete HabitatCAN specification organized into logical sections:
- Core Specification (01-06): Fundamental concepts and protocols
- Implementation (07-09): Device development and system operation
- Advanced Topics (10-12): Reliability, security, and integration
- Reference (Appendices): Technical details and examples
HabitatCAN is an open specification. Contributions, feedback, and implementations are welcome. Please see the Roadmap for current development priorities.
This specification is published under the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0). This license encourages open development and vendor-neutral implementations while requiring derivative works to be shared under the same terms.
Last updated: 2024