npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

smart-home

v0.5.16

Published

Netbeast dashboard, IoT apps manager

Downloads

519

Readme

| Linux & Mac | Windows | Docker | Docs | Forum | * |----------|:-------------:|:------:|:------:|:------:|:------:|------:| | Build Status | Windows Build Status | | | |

Netbeast Dashboard

Connect everything. Regardless its brand or technology,

One API, unlimited products and hacks. Netbeast middleware translates messages from different IoT protocols and device interfaces so they work as one. Have no more "hubs". Work across devices not brands.

var netbeast = require('netbeast')
netbeast.find().then(function () {
  netbeast('lights').set({ power: 1 }) // will turn on all lights in your home
})

Contents

Installation

Basic

Make sure you have installed git and nodejs.

bash
npm install -g netbeast-cli
netbeast start

Find it live at http://localhost:8000 or run it as netbeast start --port <PORT>

Pro tip. To get started developing you will find handy to have it installed in a folder of your choice.

git clone https://github.com/netbeast/dashboard
cd dashboard
npm install --production
npm start

Dashboard live GIF

## Raspberry / Beagle Bone / Pine64 or your choice of board

Make sure again you have installed git and nodejs. It can be tricky depending on your OS & architecture. If any doubts please reach forum or open an issue.

  1. Apply the basic installation from above, preferably using git.
git clone https://github.com/netbeast/dashboard . # clone in this folder
npm i --production # no front-end or test dependencies
  1. Keep it running 24h 7 days a week, to use it as Smart Home Hub. You can use utilities such as forever or pm2.
npm i -g pm2
sudo pm2 start index.js --port 80
  1. [Soon] Learn how to attach a DHCP name to your Netbeast as https://home.netbeast and how to deal with wireless configuration in Linux from our blog.

Using docker :whale:

Make sure you already have docker installed.

  1. Download the netbeast image from dockerhub
docker pull netbeast/netbeast
  1. Run it
docker run -p 49160:8000 -d netbeast/netbeast

This will run your docker container on the port 49160

  1. You can now play on it. Access to your docker CONTAINER_IP.

 http://CONTAINER_IP:49160

– Et voilà

Overview

Find inspiration, think about new projects, connect your new hardware.

Netbeast apps are HTML5 user interfaces that enable controlling IoT or visualizing their data. Netbeast plugins are apps that translate from the Netbeast IoT Unified Scheme, to each particular implementation of an IoT device.

Explore existing apps and plugins of our public registry.

Control devices regardless of their brand and technology

Take a look on our unified API on action in this demo on youtube, under a Netbeast app that creates new scenes.

IMAGE ALT TEXT HERE

https://www.youtube.com/watch?v=YNERwJdykuQ

Measure all your data

Use the Netbeast API along with the dashboard to publish data through MQTT or reuse it in your apps. Read more.

Dashboard live GIF

## Write IoT apps without spending on hardware or suffering expensive deployments Take advance of Netbeast IoT middleware to test your apps with software that mocks the hardware interface.

Virtual plugins

Find tutorials in the docs, read a blog post about it on TopTal or join the forum to ask how to do it.

Documentation

We publish a gitbook with fresh documentation on https://docs.netbeast.co. If you want to open an issue, contribute or edit it, find your way on its github repo https://github.com/netbeast/docs

Create IoT with Node.js

In Netbeast we care about education, openness and interoperability. We have created a series of workshops to teach developers to better use HTTP, MQTT in combination with the Dashboard to create data bindings and incredible apps. Use your favorite boards and platforms as Arduino, Pi Zero, Pine64, Belkin Wemo, Homekit and a infinite list, connected.

Apps

A Netbeast app allows you to run the Dashboard unique API in the browser or backend equally. Just expose some user interface in your apps root. In the following snippet we serve in the root all files inside public folder.

var express = require('express')
var app = express()

// Netbeast apps need to accept the port to be launched by parameters
var argv = require('minimist')(process.argv.slice(2))

app.use(express.static('public'))

var server = app.listen(argv.port || 31416, function () {
  var host = server.address().address
  var port = server.address().port
  console.log('Example app listening at http://%s:%s', host, port)
})

Learn how to create new scenes and user interfaces as bots, speech recognition, smart triggers. Learn how to develop Netbeast apps, debug and publish them on the documentation

Connect Devices

A plugin is an app that enables your Dashboard to communicate with a different protocol or proprietary device. It's like if you, that want to learn Chinese, could speak Chinese by installing an app. Luis, cofounder of Netbeast

A basic plugin must implement at least a discovery primitive to declare itself on Netbeast's database. Fill the gaps to create your first hardware integration into Netbeast:

var netbeast = require('netbeast')
var express = require('express')
var cmd = require('commander') // reads --port from command line

// Netbeast tells you in which port to run your Plugin endpoint
cmd.option('-p, --port <n>', 'Port to start the HTTP server', parseInt)
.parse(process.argv)

var app = express()

/*
* Discover your resources / scan the network
* And declare your routes into the API
*/

app.get('/discover', function () {
	/* TODO, implement discovery */

	/* for each device */
	netbeast('topic').create({ app: 'my-first-plugin', hook: 'DEVICE_ID' })
	/* end of for */

	/* or */
	/* Register all device together and delete the resources no longer available */
	netbeast('topic').udateDB({ app: 'my-first-plugin', hook: ['DEVICE1_ID', 'DEVICE2_ID', 'DEVICE3_ID', 'DEVICE4_ID'] })
})

/*
* Create here your API routes
* app.get(...), app.post(...), app.put(...), app.delete(...)
*/

app.get('/:device_id', function (req, res) {
	// id of the device the dashboard wants
	// << req.params.device_id >>
	// dashboard will do GET on this route when
	// netbeast('topic').get({})

	/* TODO: Return device values from req.query */

	// res.json({ YOUR_PLUGIN_DATA })
})

app.post('/:device_id', function (req, res) {
	// id of the device the dashboard wants
	// << req.params.device_id >>
	// dashboard will do POST on this route when
	// netbeast('topic').set({})

	/* TODO: Change device values from req.body */

	// res.json({ YOUR_PLUGIN_DATA })
})


var server = app.listen(cmd.port || 4000, function () {
  console.log('Netbeast plugin started on %s:%s',
  server.address().address,
  server.address().port)
})

Learn how to launch it, debug it and publish it on the documentation.

Community

Join us in our forum
Ask for an invitation to join our Slack team here

Contribute

Take a look to our CONTRIBUTING.md file in order to see how can you be part of this project. Or take a look on Netbeast's discourse forum to find for inspiration, projects and help.

TL;DR Make a Pull Request. If your PR is eventually merged don't forget to write down your name on the AUTHORS.txt file.