core
:house_with_garden: Open source home automation that puts local control and privacy first.
Top Related Projects
Open source documentation of Microsoft Azure
Automate your life!
Open source Home Automation System
a C++ library to control Z-Wave Networks via a USB Z-Wave Controller.
A curated list of amazingly awesome Home Assistant resources.
Quick Overview
Home Assistant Core is an open-source home automation platform designed to be the central control system for smart homes. It allows users to integrate various smart devices and services, create automation rules, and control their home environment through a unified interface.
Pros
- Highly customizable and extensible
- Supports a wide range of devices and integrations
- Active community and frequent updates
- Privacy-focused, as it can be self-hosted
Cons
- Steep learning curve for beginners
- Requires some technical knowledge for advanced setups
- Can be resource-intensive on low-powered hardware
- Some integrations may require additional configuration
Code Examples
- Adding a simple automation:
automation:
- alias: "Turn on lights when motion detected"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
to: "on"
action:
- service: light.turn_on
target:
entity_id: light.living_room
- Creating a custom sensor:
from homeassistant.helpers.entity import Entity
class CustomSensor(Entity):
def __init__(self):
self._state = None
@property
def name(self):
return "Custom Sensor"
@property
def state(self):
return self._state
def update(self):
# Update the sensor state
self._state = "Some Value"
- Using the REST API to get entity states:
import requests
url = "http://your-home-assistant-url:8123/api/states"
headers = {
"Authorization": "Bearer YOUR_LONG_LIVED_ACCESS_TOKEN",
"content-type": "application/json",
}
response = requests.get(url, headers=headers)
print(response.json())
Getting Started
-
Install Home Assistant:
python3 -m venv homeassistant source homeassistant/bin/activate pip3 install homeassistant
-
Start Home Assistant:
hass --open-ui
-
Access the web interface at
http://localhost:8123
and follow the setup wizard. -
Add integrations and configure your devices through the web interface.
-
Create automations and customize your Home Assistant instance to fit your needs.
Competitor Comparisons
Open source documentation of Microsoft Azure
Pros of azure-docs
- Comprehensive documentation for a wide range of Azure services
- Regularly updated to reflect the latest Azure features and best practices
- Collaborative environment allowing community contributions
Cons of azure-docs
- Focused solely on documentation, not an active software project
- May have a steeper learning curve for newcomers to cloud computing
- Less direct community engagement compared to open-source projects
Code Comparison
azure-docs (Markdown):
# Azure Active Directory documentation
Azure Active Directory (Azure AD) is Microsoft's cloud-based identity and access management service.
## Features
- Single sign-on (SSO)
- Multi-factor authentication (MFA)
- Conditional Access
core (Python):
"""Provide an API to retrieve and set the state of devices."""
from typing import Any, Dict, List, Optional
from homeassistant.const import (
STATE_OFF,
STATE_ON,
STATE_UNAVAILABLE,
STATE_UNKNOWN,
)
While azure-docs primarily contains documentation in Markdown format, core is an active Python project for home automation. The azure-docs repository serves as a comprehensive resource for Azure services, while core provides a functional framework for controlling smart home devices.
Automate your life!
Pros of ioBroker
- More flexible and modular architecture, allowing for easier customization
- Stronger support for industrial and commercial automation scenarios
- Larger selection of adapters for various devices and services
Cons of ioBroker
- Steeper learning curve, especially for non-technical users
- Less polished and intuitive user interface
- Smaller community compared to Home Assistant, potentially leading to slower development and support
Code Comparison
ioBroker (JavaScript):
createState('myDevice.status', {
name: 'Device Status',
type: 'boolean',
role: 'switch'
});
on('myDevice.status', function (obj) {
console.log('Device status changed to: ' + obj.state.val);
});
Home Assistant (YAML):
switch:
- platform: template
switches:
my_device:
friendly_name: "Device Status"
value_template: "{{ is_state('input_boolean.device_status', 'on') }}"
turn_on:
service: input_boolean.turn_on
target:
entity_id: input_boolean.device_status
turn_off:
service: input_boolean.turn_off
target:
entity_id: input_boolean.device_status
Both projects are open-source home automation platforms, but they cater to slightly different audiences. ioBroker offers more flexibility and industrial-grade features, while Home Assistant provides a more user-friendly experience for home users. The code examples showcase the different approaches: ioBroker uses JavaScript for scripting, while Home Assistant primarily uses YAML for configuration.
Open source Home Automation System
Pros of Domoticz
- Lighter resource usage, suitable for low-power devices
- Built-in support for a wide range of hardware devices
- Simple setup process with a user-friendly web interface
Cons of Domoticz
- Smaller community and fewer third-party integrations
- Less frequent updates and slower development pace
- More limited customization options for advanced users
Code Comparison
Home Assistant (Python):
class Light(ToggleEntity):
@property
def is_on(self):
return self._state == STATE_ON
def turn_on(self, **kwargs):
self._state = STATE_ON
self.schedule_update_ha_state()
Domoticz (C++):
bool CDomoticzHardwareBase::SwitchLight(const int id, const std::string &switchcmd)
{
return false;
}
Home Assistant uses a more object-oriented approach with Python, while Domoticz employs C++ for potentially better performance. Home Assistant's code structure is generally more modular and easier to extend, whereas Domoticz's codebase is more tightly integrated but may be less flexible for customization.
Both projects aim to provide comprehensive home automation solutions, but Home Assistant offers a more modern, extensible platform with a larger ecosystem, while Domoticz focuses on efficiency and simplicity for users with specific hardware requirements or resource constraints.
a C++ library to control Z-Wave Networks via a USB Z-Wave Controller.
Pros of open-zwave
- Specialized focus on Z-Wave protocol, offering deep integration and control
- Lightweight and can be used independently of a larger smart home ecosystem
- Extensive device compatibility list for Z-Wave products
Cons of open-zwave
- Limited to Z-Wave devices only, lacking support for other smart home protocols
- Less active development and community support compared to core
- Requires more technical knowledge to implement and use effectively
Code Comparison
core (Python):
class ZwaveSwitch(ZWaveDeviceEntity, SwitchEntity):
"""Representation of a Z-Wave switch."""
def turn_on(self, **kwargs):
"""Turn the device on."""
self._node.set_switch(True)
open-zwave (C++):
bool SwitchMultilevel::SetLevel(uint8 const _level)
{
uint8 const level = (_level > 99) ? 99 : _level;
Msg* msg = new Msg("SwitchMultilevelCmd_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true);
msg->Append(GetNodeId());
msg->Append(3);
msg->Append(GetCommandClassId());
msg->Append(SwitchMultilevelCmd_Set);
msg->Append(level);
msg->Append(GetDriver()->GetTransmitOptions());
GetDriver()->SendMsg(msg, Driver::MsgQueue_Send);
return true;
}
A curated list of amazingly awesome Home Assistant resources.
Pros of awesome-home-assistant
- Curated list of resources, making it easier for users to find helpful tools and information
- Regularly updated with community contributions, providing fresh and relevant content
- Serves as a central hub for Home Assistant-related projects and integrations
Cons of awesome-home-assistant
- Not the official Home Assistant repository, potentially lacking direct support from core developers
- May include outdated or unmaintained projects if not rigorously curated
- Does not contain the actual Home Assistant codebase or core functionality
Code comparison
While a direct code comparison is not relevant due to the different nature of these repositories, here's a brief example of how they differ in content:
awesome-home-assistant:
## Integrations
- [Alarm Control Panel](https://www.home-assistant.io/integrations/alarm_control_panel/) - Interface for alarm control panels.
- [Light](https://www.home-assistant.io/integrations/light/) - Support for lights.
- [Media Player](https://www.home-assistant.io/integrations/media_player/) - Support for media players.
core:
from homeassistant.const import Platform
PLATFORMS = [
Platform.ALARM_CONTROL_PANEL,
Platform.LIGHT,
Platform.MEDIA_PLAYER,
]
The awesome-home-assistant repository provides a curated list of resources, while core contains the actual implementation of Home Assistant's core functionality.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Home Assistant |Chat Status|
Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.
Check out home-assistant.io <https://home-assistant.io>
__ for a demo <https://demo.home-assistant.io>
, installation instructions <https://home-assistant.io/getting-started/>
,
tutorials <https://home-assistant.io/getting-started/automation/>
__ and documentation <https://home-assistant.io/docs/>
__.
This is a project of the Open Home Foundation <https://www.openhomefoundation.org/>
__.
|screenshot-states|
Featured integrations
|screenshot-integrations|
The system is built using a modular approach so support for other devices or actions can be implemented easily. See also the section on architecture <https://developers.home-assistant.io/docs/architecture_index/>
__ and the section on creating your own components <https://developers.home-assistant.io/docs/creating_component_index/>
__.
If you run into issues while using Home Assistant or during development
of a component, check the Home Assistant help section <https://home-assistant.io/help/>
__ of our website for further help and information.
.. |Chat Status| image:: https://img.shields.io/discord/330944238910963714.svg :target: https://www.home-assistant.io/join-chat/ .. |screenshot-states| image:: https://raw.githubusercontent.com/home-assistant/core/dev/.github/assets/screenshot-states.png :target: https://demo.home-assistant.io .. |screenshot-integrations| image:: https://raw.githubusercontent.com/home-assistant/core/dev/.github/assets/screenshot-integrations.png :target: https://home-assistant.io/integrations/
Top Related Projects
Open source documentation of Microsoft Azure
Automate your life!
Open source Home Automation System
a C++ library to control Z-Wave Networks via a USB Z-Wave Controller.
A curated list of amazingly awesome Home Assistant resources.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot