Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/marvinroger/homie-server

Web server for managing Homie devices, a lightweight MQTT convention for the IoT
https://github.com/marvinroger/homie-server

Last synced: 3 months ago
JSON representation

Web server for managing Homie devices, a lightweight MQTT convention for the IoT

Lists

README

        

Homie server
============

**![warning](https://cdn2.iconfinder.com/data/icons/gnomeicontheme/16x16/status/gtk-dialog-warning.png) Currently unmaintained. Don't expect updates or support ATM, I prefer to focus on [homie-esp8266](https://github.com/marvinroger/homie-esp8266). Note this project is not abandoned, only on hold.**

[![npm version](https://img.shields.io/npm/v/homie-server.svg?style=flat-square)](https://www.npmjs.com/package/homie-server) [![Travis CI](https://img.shields.io/travis/marvinroger/homie-server.svg?style=flat-square)](https://travis-ci.org/marvinroger/homie-server) [![Coveralls](https://img.shields.io/coveralls/marvinroger/homie-server.svg?style=flat-square)](https://coveralls.io/r/marvinroger/homie-server) (broken) [![Dependency Status](https://img.shields.io/david/marvinroger/homie-server.svg?style=flat-square)](https://david-dm.org/marvinroger/homie-server) [![devDependency Status](https://img.shields.io/david/dev/marvinroger/homie-server.svg?style=flat-square)](https://david-dm.org/marvinroger/homie-server#info=devDependencies) ![Built with love](https://img.shields.io/badge/built%20with-%E2%99%A5-ff69b4.svg?style=flat-square)

A Web server for Homie, an MQTT convention for the IoT. Built with Node.js. The project is currently in alpha.

![Homie server screenshot](screenshot.png)

## Features

* Simple but efficient dashboard
* OTA updates
* Compatible starting with Node.js v0.12 (0.10 might work, but it is not CI-tested)

## Installation

`npm install -g homie-server`

## Usage

The Homie server can only be started using the CLI interface. Start Homie by calling `homie`. You can optionally provide a `--dataDir` argument that will be used to store the Homie data. By default, this directory is located at `/.homie`. You can also configure the HTTP server serving the UI with `--uiPort`, else it defaults to 80. Finally, you can change the log level of the output with the `--logLevel` parameter followed by the minimum log level to show (`0` for fatal, `1` for error, `2` for warning, `3` for info, `4` for debug).

### Configuration

Three files define the behavior of Homie, and are all contained in the data directory:

1. The `config.yml` file. It contains some configuration like your MQTT broker address.

```yaml
mqtt:
url: mqtt://127.0.0.1:1883
clientId: optional client ID
username: optional username
password: optional password
```

2. The `infrastructure.yml` file. This file contains the representation of your Homie devices. You can also group devices there.

```yaml
devices:
- id: abcd0123
location: Marvin's room
nodes:
- type: shutters
id: shutters
name: Shutters
- id: efab4567
location: Mathys's room
nodes:
- type: light
id: main
name: Main light
- type: light
id: bed
name: Bed light

groups:
- id: first-floor
name: First floor
devices:
- abcd0123
- efab4567
```

3. The `ota/manifest.yml` file. It contains a definition of the firmwares for your devices, like so:

```yaml
firmwares:
- name: light-firmware
version: 1.0.0
devices:
- marvin-lights
```

For this example manifest, you would put the firmware binary in `ota/firmwares/light-firmware.bin`, otherwise, OTA won't be handled. You can update the manifest while Homie is running, it will be hot loaded.

## Contribute

Contributions are very welcome!

To work/start the git Homie version, just run `npm run dev`.
This will build the public directory, and watch for changes in the `app` folder.
To start the server, run `npm start`. The GUI will be listening on port `3000`.