Giter Site home page Giter Site logo

tripflex / node-homie2-config Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 0.0 24 KB

Use the Homie Configuration API to setup a homie board (using Homie 2.0+). 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.

Home Page: https://github.com/marvinroger/homie

JavaScript 100.00%
homie homie-esp8266 homie-convention nodejs node npm npm-package

node-homie2-config's Introduction

Homie2Config

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

This is for Homie version 2.0+, original codebase from HomieConfig

QuickStart

You can grab homie2-config from npm.

npm install --save homie2-config

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

var Homie2Config = require('homie2-config');

var homie2 = new Homie2Config();

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

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

Traditional Callbacks

// You can choose to use traditional callbacks
homie2.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

homie2.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 other methods.

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

Please find more examples in the examples directory.

Meteor Package

There is also a Meteor Package available that uses this npm module, and includes numerous other Homie helper methods:

https://github.com/tripflex/meteor-homie

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, and check out the Meteor Package that includes this module, as well as numerous other helper methods: https://github.com/tripflex/meteor-homie

node-homie2-config's People

Contributors

hongkongkiwi avatar tripflex avatar

Watchers

 avatar  avatar  avatar

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.