Skip to content
This repository has been archived by the owner on May 19, 2024. It is now read-only.

Use the Homie Configuration API to setup a homie board. This is an alternative to using the web configuration interface and the Android app. You could use this to setup lots of boards if you needed or design your own web interface.

Notifications You must be signed in to change notification settings

hongkongkiwi/node-homie-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HomieConfig

HomieConfig is a node.js module to configure esp8266 boards loaded with Homie firmware.

It seems the only options are a web-based interface or an Android app. I wasn't very happy with this so I created a node.js module so I could configure one or more boards easily.

QuickStart

You can grab homie-config from npm.

npm install --save homie-config

Make sure to set an ip address or hostname for the board. By default, homie.local is used in case you don't pass anything.

var HomieConfig = require('homie-config');

var homie = new HomieConfig();

If you want to set the url you can do it this way:

var homie = new HomieConfig({url: 'homie.local'});

Traditional Callbacks

// You can choose to use traditional callbacks
homie.getHeartBeat(function(isAlive) {
  if (!isAlive) {
    return console.log("Oh no, we don't have a heartbeat!");
  }
  console.log("We have a heartbeat!");
});

Promises are also supported by attaching (async) to method names

homie.getHeartBeatAsync()
  .then(function(isAlive) {
    if (!isAlive) {
      console.log("Oh no, we don't have a heartbeat! Please check the server url " + this.baseUrl);
    }
    console.log("We have a heartbeat!");
  }).catch(function (error) {
    console.log('error',error);
  });

You can chain up the methods easily using promises. I recommend you always use getHeartBeat before otehr methods.

homie.getHeartBeatAsync()
  .then(function(isAlive) {
    if (!isAlive) {
      console.log("Oh no, we don't have a heartbeat! Please check the server url " + this.baseUrl);
    }
    return homie.getDeviceInfoAsync();
  }).then(function(deviceInfo) {
    console.log('Device Info', deviceInfo);
  }).catch(function (error) {
    console.log('error',error);
  });

Please find more examples in the examples directory.

Configuration Wizard

There is a simple interactive configuration wizard available incase you just don't want to both with using it programatically.

In the examples directory run node ./configWizard.js

Supported Methods

The library supports all current Configuration API functions.

These require the board to be accessible.

  • getHeartBeat(callback)
  • getDeviceInfo(callback)
  • getNetworks(callback)
  • saveConfig(config, callback)
  • connectToWifi(ssid, password, callback)
  • getWifiStatus(callback)
  • setTransparentWifiProxy(enable, callback)
  • generateConfig(device_name, device_id, wifi_ssid, wifi_password, mqtt_host, mqtt_options, ota, callback)

Contributing

Feel free to submit any pull requests or add functionality, I'm usually pretty responsive.

If you like the module, please consider donating some bitcoin or litecoin.

Bitcoin

BTC QR Code

1DJsQhquTjUakES5Pddh94t1XSMb7LDYyh

LiteCoin

LTC QR Code

LNzdZksXcCF6qXbuiQpHPQ7LUeHuWa8dDW

About

Use the Homie Configuration API to setup a homie board. This is an alternative to using the web configuration interface and the Android app. You could use this to setup lots of boards if you needed or design your own web interface.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published