All Projects → maddox → Harmony Api

maddox / Harmony Api

Licence: mit
🗼 A simple server allowing you to query/control multiple local Harmony Home Hubs over HTTP or MQTT

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Harmony Api

Android Mqtt Alarm Panel
Android Alarm Panel for Home Assistant and Home Automation Platforms (http://thanksmister.com/android-mqtt-alarm-panel/)
Stars: ✭ 124 (-64.06%)
Mutual labels:  home-assistant, home-automation, mqtt
Home Assistant
Home-Assistant-Config
Stars: ✭ 182 (-47.25%)
Mutual labels:  home-assistant, home-automation, mqtt
Temper Esp8266
Temper is a compact temperature sensor based on ESP8266 and SHT30 with large 13x7 pixel led display.
Stars: ✭ 155 (-55.07%)
Mutual labels:  home-assistant, home-automation, mqtt
Home Assistant Configuration
My Home Assistant Config. For more Information visit ->
Stars: ✭ 102 (-70.43%)
Mutual labels:  home-assistant, home-automation, mqtt
M5Stack-Air-Quality-ESPHome
ESPHome configuration for M5Stack's PM2.5 Air Quality Kit with the PMSA003 particulate matter sensor and the SHT20 temperature and humidity sensor
Stars: ✭ 19 (-94.49%)
Mutual labels:  home-automation, mqtt, home-assistant
Loadcelloccupany
Home automation occupancy sensor using load cells
Stars: ✭ 103 (-70.14%)
Mutual labels:  home-assistant, home-automation, mqtt
Openmqttgateway
MQTT gateway for ESP8266, ESP32, Sonoff RF Bridge or Arduino with bidirectional 433mhz/315mhz/868mhz, Infrared communications, BLE, Bluetooth, beacons detection, mi flora, mi jia, LYWSD02, LYWSD03MMC, Mi Scale, TPMS, BBQ thermometer compatibility, SMS & LORA.
Stars: ✭ 2,413 (+599.42%)
Mutual labels:  home-assistant, home-automation, mqtt
Open Home
Projeto de automação residencial usando softwares e hardwares open source.
Stars: ✭ 41 (-88.12%)
Mutual labels:  home-assistant, home-automation, mqtt
amshan-homeassistant
Home Assistant integrasjon for strømmålere (AMS/HAN/P1). Integrasjonen støter både streaming (serieport/TCP-IP) og MQTT (Tibber Pulse, energyintelligence.se etc)
Stars: ✭ 39 (-88.7%)
Mutual labels:  home-automation, mqtt, home-assistant
soma-ctrl
Node util for controlling SOMA smart shade via MQTT or HTTP
Stars: ✭ 19 (-94.49%)
Mutual labels:  home-automation, mqtt, home-assistant
Frigate
NVR with realtime local object detection for IP cameras
Stars: ✭ 1,329 (+285.22%)
Mutual labels:  home-assistant, home-automation, mqtt
Awesome Home Assistant
A curated list of amazingly awesome Home Assistant resources.
Stars: ✭ 3,487 (+910.72%)
Mutual labels:  home-assistant, home-automation, mqtt
Homeautomation.codesys3
Home Automation system build in CoDeSys 3 with MQTT communication to any third party Home Automation software
Stars: ✭ 55 (-84.06%)
Mutual labels:  home-assistant, home-automation, mqtt
Itead sonoff
Alternative firmware for Itead Sonoff switches, based on the MQTT protocol and a TLS connection
Stars: ✭ 115 (-66.67%)
Mutual labels:  home-assistant, home-automation, mqtt
Wavin Ahc 9000 Mqtt
Esp8266 mqtt interface for Wavin AHC-9000/Jablotron AC-116
Stars: ✭ 47 (-86.38%)
Mutual labels:  home-assistant, home-automation, mqtt
Home Assistant Config Fr
🏠Configuration de Home Assistant en français. 👨🏻‍💻 N'hésitez pas à ⭐ mon repo et à copier les bonnes idées ! 🇨🇵
Stars: ✭ 175 (-49.28%)
Mutual labels:  home-assistant, home-automation, mqtt
Hassio Zigbee2mqtt
Hass.io add-on for zigbee2mqtt
Stars: ✭ 547 (+58.55%)
Mutual labels:  home-assistant, home-automation, mqtt
Open Home Automation
Open Home Automation with Home Assistant, ESP8266/ESP32 and MQTT
Stars: ✭ 820 (+137.68%)
Mutual labels:  home-assistant, home-automation, mqtt
texecom2mqtt-hassio
Home Assistant add-on. Connect to Texecom Premier Elite alarm panels and publish updates to MQTT. Supports arming/disarming as well as zone updates and alarm events.
Stars: ✭ 15 (-95.65%)
Mutual labels:  home-automation, mqtt, home-assistant
Kmansonoff
Firmware for ESP8266 based itead Sonoff switches for use with HomeAssistant / mqtt
Stars: ✭ 282 (-18.26%)
Mutual labels:  home-assistant, home-automation, mqtt

Harmony API!!

Harmony API is a simple server allowing you to query/control multiple local Harmony Home Hubs and their devices over HTTP or MQTT.

With HTTP, you can simply turn on and off activities, check hub status, and send commands to individual devices with simple HTTP requests from almost any other project.

With MQTT, you can easily monitor the state of your devices as well as set the current activity of your hub or send specific commands per device. This makes it super easy to integrate into your existing home automation setup.

Features

  • Control multiple Harmony hubs.
  • List activities.
  • Get current status, including if everything is off, or what the current activity is.
  • Turn everything off.
  • Start a specific activity.
  • List devices.
  • List device commands.
  • Execute discrete commands for each device.

Setup

script/bootstrap

Settings

Harmony API discovers your hubs automatically. You can optionally add your MQTT broker's host to connect to it.

{
  "mqtt_host": "mqtt://192.168.1.106",
  "mqtt_options": {
      "port": 1883,
      "username": "someuser",
      "password": "somepassword",
      "rejectUnauthorized": false
  },
  "topic_namespace": "home/harmony"
}

mqtt_options is optional, see the mqtt project for allowed host and options values.

Running It

Get up and running immediately with script/server.

Note:

On some distros, you might get an error when running it: /usr/bin/node: No such file or directory

That can probably be fixed by creating a symlink: sudo ln -s `which nodejs` /usr/bin/node

Harmony API will run on port 8282 by default. Use the PORT environment variable to use your own port.

Forever

harmony-api has support for Forever. It uses launchd on OS X to kick it off so that it starts on boot.

Development

You can simply run it by calling script/server. This will run it in development mode with logging to standard out.

Install as Service on OS X

script/install

Install as systemd unit on Linux

sudo script/install-linux

Docker

Installation with Docker is straightforward. Adjust the following command so that /path/to/your/config points to the folder where your want to store your config and run it:

$ docker run --name="harmony-api" -v /path/to/your/config:/config \
    -p 8282:8282 -d jonmaddox/harmony-api

This will launch Harmony API and serve the web interface from port 8282 on your Docker host. Hub discovery requires host networking (--net=host). However, you can specify your Harmony Hub IP address in config.json as hub_ip.

Logging

Harmony API logs all of its requests. In production, it logs to a file at log/logs.log. In development mode, it just logs to stdout.

How to Upgrade to 2.0

Simply run script/upgrade from the root of the project and Harmony API will upgrade to the newest version.

You are then going to have to change anything you integrate with Harmony API to reflect the change in HTTP endpoints and MQTT topics. Read the docs in this README to see how they have changed.

Development

Launch the app via script/server to run it in the development environment.

MQTT Docs

harmony-api can report its state changes to your MQTT broker. Just edit your config file in config/config.json to add your MQTT host and options.

By default harmony-api publishes topics with the namespace of: harmony-api. This can be overriden by setting topic_namespace in your config file.

State Topics

When the state changes on your harmony hub, state topics will be immediately broadcasted over your broker. There's quite a few topics that are broadcasted.

State topics are namespaced by your Harmony hub's name, as a slug. You can rename your hub in the Harmony app.

Here's a list:

Current State

This topic describes the current power state. Message is on or off.

harmony-api/hubs/family-room/state on

Current Activity

This topic describes what the current activity of the hub is. The message is the slug of an activity name.

harmony-api/hubs/family-room/current_activity watch-tv

Activity States

These topics describe the state of each activity that the hub has. The message is on or off. There will a topic for every activity on your hub.

harmony-api/hubs/family-room/activities/watch-tv/state off
harmony-api/hubs/family-room/activities/watch-apple-tv/state on
harmony-api/hubs/family-room/activities/play-xbox-one/state off

Command Topics

You can also command harmony-api to change activities, and issue device and acivity commands by publishing topics. harmony-api listens to these topics and will change to the activity, or issue the command when it sees it.

Switching activities

Just provide the slug of the hub and activity you want to switch to and on as the message. Any use of this topic with the message off will turn everything off.

harmony-api/hubs/family-room/activities/watch-tv/command on

Device commands

Just provide the slug of the hub and the device to control with the command you want to execute. harmony-api/hubs/family-room/devices/tv/command volume-down

To optionally repeat the command any number of times, provide an optional repeat integer. harmony-api/hubs/family-room/devices/tv/command volume-down:5

Current activity commands

Just provide the slug of the hub and the command you want to execute. harmony-api/hubs/family-room/command volume-down

To optionally repeat the command any number of times, provide an optional repeat integer. harmony-api/hubs/family-room/command volume-down:5

HTTP API Docs

This is a quick overview of the HTTP service. Read app.js if you need more info.

Resources

Here's a list of resources that may be returned in a response.

Activity Resource

The Activity resource returns all the information you really need for an Activity set up in your Harmony Hub.

{
  "id": "15233552",
  "slug": "watch-tv",
  "label": "Watch TV",
  "isAVActivity": true
}

Device Resource

The Device resource returns all the information you need to know about the devices set up for the hub.

{
  "id": "38343689",
  "slug": "tivo-premiere",
  "label": "TiVo Premiere"
}

Command Resource

The Command resource returns all the information you really need for a Command to let you execute it.

{
  "name": "ChannelDown",
  "slug": "channel-down",
  "label":"Channel Down"
}

Status Resource

The Status resource returns the current state of your Harmony Hub.

{
  "off": false,
  "current_activity": {
    "id": "15233552",
    "slug": "watch-tv",
    "label": "Watch TV",
    "isAVActivity": true
  }
}

Methods

These are the endpoints you can hit to do things.

Info

Use these endpoints to query the current state of your Harmony Hub.

GET /hubs => {"hubs": ["family-room", "bedroom"] }
GET /hubs/:hub_slug/status => StatusResource
GET /hubs/:hub_slug/commands => {"commands": [CommandResource, CommandResource, ...]}
GET /hubs/:hub_slug/activities => {"activities": [ActivityResource, ActivityResource, ...]}
GET /hubs/:hub_slug/activities/:activity_slug/commands => {"commands": [CommandResource, CommandResource, ...]}
GET /hubs/:hub_slug/devices => {"devices": [DeviceResource, DeviceResource, ...]}
GET /hubs/:hub_slug/devices/:device_slug/commands => {"commands": [CommandResource, CommandResource, ...]}

Control

Use these endpoints to control your devices through your Harmony Hub.

PUT /hubs/:hub_slug/off => {message: "ok"}
POST /hubs/:hub_slug/commands/:command_slug => {message: "ok"}
POST /hubs/:hub_slug/commands/:command_slug?repeat=3 => {message: "ok"}
POST /hubs/:hub_slug/activities/:activity_slug => {message: "ok"}
POST /hubs/:hub_slug/devices/:device_slug/commands/:command_slug => {message: "ok"}
POST /hubs/:hub_slug/devices/:device_slug/commands/:command_slug?repeat=3 => {message: "ok"}

Contributions

  • fork
  • create a feature branch
  • open a Pull Request
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].