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 🙏

© 2026 – Pkg Stats / Ryan Hefner

thinglator

v3.2.0

Published

An API that provides a uniform interface for interacting with IOT and home automation devices

Readme

Thinglator

Building a home automation platform? You're in the right place.

Thinglator (which is stands for internet of things translator) makes home automation simple and flexible. It provides a uniform interface for interacting with IOT and home automation devices. Rather than trying to integrate with different APIs and communication protocols for each IOT device out there, Thinglator will expose them as consistent and simple APIs. You don't need to know how a particular device works or it's API - you just need to integrate with the basic Thinglator APIs. This allows you to stop worrying about connecting to each device, you can concrentate on making a killer home automation user interface. The brilliant part is that your product will automatically support hundreds of IOT things devices out of the box!

The really cool thing is that the Thinglator ecosystem is entirely open source and based around npm. Developers, manufacturers (or anyone with knowledge of JavaScript) can add support for a particular device by creating a driver (this is an npm package that tells Thinglator how to communicate with a particular device). Thinglator will then expose the device to your home automation UI using REST APIs and websockets.

So for example, to make a LIFX lightbulb turn on over 2 seconds and go blue..

POST http://localhost:3003/devices/:deviceId/setHSBState
{
  "colour": {
    "hue": 230,
    "saturation": 1,
    "brightness": 0.5
  },
  "duration": 2
}

.. and to make a Philips Hue lightbulb turn on over 2 seconds and go blue..

POST http://localhost:3003/devices/:deviceId/setHSBState
{
  "colour": {
    "hue": 230,
    "saturation": 1,
    "brightness": 0.5
  },
  "duration": 2
}

(no it's not a mistake - both requests are identical (apart from the device ID)!) Thinglator removes the requirement to know about different types of devices and their different APIs and networking technologies. Instead they're exposed as a uniform API.

Requirements

  • node.js

Installation

yarn add thinglator

Run

yarn dev

This should launch a REST API and websocket server on http://localhost:3003

Test

yarn test or yarn test:watch

##Getting started Out of the box Thinglator has no knowledge of any devices on your network or how to talk to them. The first thing you need to do is to get an interface. An interface tells Thinglator how to communicate with devices over a certain networking technology - this could be http, zwave, zigbee, bluetooth, 433mhz, or anything else you have the appopriate hardware for.

The next thing to get are drivers - these allow Thinglator to search and communicate with specific devices on your network. Check out https://github.com/richardwillars/thinglator/wiki/Drivers to learn how to search for and add drivers.

Once you have some drivers installed you can make calls to the APIs documented at https://github.com/richardwillars/thinglator/wiki/devices. These APIs are used to discover devices on your network (using the drivers you just installed) and find out information each device.

If a driver doesn't exist for the device you want to talk to then you need to create a driver. More information on this can be found at https://github.com/richardwillars/thinglator/wiki/Drivers

You can keep your home automation user interface up to date using the events API. More information on this can be found at https://github.com/richardwillars/thinglator/wiki/events

Todo

  • documentation
  • bluetooth adapter
  • zigbee adapter