Giter Club home page Giter Club logo

hautomo's Introduction

Build Status Download

Home automation hub built to serve my specific requirements.

Due to Golang runs pretty much anywhere, but some specifics work best with a Raspberry Pi.

Features

  • Powering devices on/off. Alexa: tv on, amplifier off
  • Color of lights. Alexa: set kitchen lights to yellow
  • Dimming lights. Alexa: dim kitchen lights to 50 percent
  • Controlling playback. Alexa: pause computer (context dependent, f.ex. pauses/resumes Spotify, YouTube or Netflix)
  • Routines (via Alexa), for example every weekday morning turn bedroom lights on, read news and weather.
  • Infrared remapping (receive via LIRC, transmit via Logitech Harmony Hub). Dedicate any remote to use with your home automation. When remote button pressed, send IR signal to a device not originally controlled by that remote.

Supported integrations

  • Voice control for all of this (via Alexa)
  • IKEA Trådfri lights and Trådfri wall sockets
  • Infrared devices (via HarmonyHub)
  • Custom 433 MHz power sockets (via custom hardware attached to Particle)
  • Computer (via EventGhost)
  • Happylights
  • MCEUSB (via LIRC)
  • Logitech Harmony Hub
  • Wall power sockets (via custom hardware)

Adapters / sensors architecture

Configuring

Configured using HCL syntax. Example config file:

(TODO: some of the options here are outdated)


adapter {
	id = "sqs"
	type = "sqs"

	sqs_queue_url = "https://sqs.us-east-1.amazonaws.com/1234567890/HomeAutomation"

	sqs_key_id = "AKIAIDJJXAOTADKM"
	sqs_key_secret = "..."
}

adapter {
	id = "harmonyHubAdapter"
	type = "harmony"

	harmony_addr = "192.168.1.153:5222"
}

adapter {
	id = "lirc"
	type = "lirc"
}

device {
	id = "c0730bb2"
	adapter = "harmonyHubAdapter"
	adapters_device_id = "47917687"
	name = "Amplifier"
	description = "Onkyo TX-NR515"
	power_on_cmd = "PowerOn"
	power_off_cmd = "PowerOff"
}

device {
	id = "7e7453da"
	adapter = "harmonyHubAdapter"
	adapters_device_id = "47918441"
	name = "TV"
	description = "Philips 55'' 4K 55PUS7909"

	# for some reason the TV only wakes up with PowerToggle, not PowerOn
	power_on_cmd = "PowerToggle"
	power_off_cmd = "PowerOff"
}

devicegroup {
	id = "cfb1b27f"
	name = "All devices"

	device_ids = [ "c0730bb2", "7e7453da" ]
}

ir2ir {
	remote_key = "KEY_VOLUMEUP"
	to_device = "c0730bb2"
	ir = "VolumeUp"
}

ir2ir {
	remote_key = "KEY_VOLUMEDOWN"
	to_device = "c0730bb2"
	ir = "VolumeDown"
}

hautomo's People

Contributors

joonas-fi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

backwardn

hautomo's Issues

Maybe pass DeviceConf along with outbound messages

This would by type-safer in cases where the adapter needs to look up config for device before acting on it. Looks awkward having to resolve device config based on the device's adapter id - in theory it could return nil but it shouldnt..

Changes to adapter initialization

  • They could take a preinitialized Adapter instance
  • They could access settings via AdapterConfig, and thus we wouldn't need additional code to map the settings to func args

Implement happylights client

Not much point in it (mainly for debugging), but as long as the CLI code exists in the repo we should support it

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.