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 🙏

© 2025 – Pkg Stats / Ryan Hefner

orvibo-b25-server

v1.0.1

Published

A server to control the Orvibo B25 range of smart sockets

Downloads

9

Readme

Orvibo B25 Smart Socket Server

A server to control the B25 range of wifi Smart Sockets

While building a home automation system I bought a couple of Orvibo smart sockets from ebay that were advertised as the S20 model. When they arrived they were actually the B25 (AUS) version and I could not find any node libraries to control them.

After a bit of searching, reading research by other people and some time with Wireshark I manged to setup a relay server that would decrypt the packets going back and forth between the sockets and the server and worked out the protocol.

After that I created this project which is basically a server that the Orvibo sockets connect to instead of the actual one. Once the sockets have connected you can toggle them on and off

Getting Started

To run this server you will need to have Node.js installed. I run v6.11.0 but it may work with earlier versions.

You will need to add the Orvibo PK key to decrypt and encrypt the initial packets. You can find this using helpful bash script from Grayda getKey.sh (you may have to add www to to url to make it work) Once you have this key you will need to add it the OrviboSettings.js file or you can pass it into as part of the settings object when you create the orvibo server object.

You can see this in the Example.js file

// Create a settings object to pass PK key and map sockets to names
const settings = {
    LOG_PACKET: false, //Show incoming packet data from the socket
    ORVIBO_KEY: '', // put your PK key here as plain text (See Readme)
    plugInfo : [
        // Add uid and a name so you can easily identify the connected sockets
        {
            uid :'53dd7fe74de7',
            name: "Lamp in Kitchen"
        },
    ],
};

let orvbio = new Orvibo(settings);

Because these new sockets don't use UDP packets to communicate like the older versions you will also need to redirect all traffic from the host name homemate.orvibo.com on TCP port 10001 the computer running the server.

I used an Ubuntu machine running dnsmasq and set this server as my DNS server in my router but depending on your network you might have to do it differntly.

server=8.8.8.8
address=/homemate.orvibo.com/192.168.0.106

Just a node: If you try to add a socket after you've redirected the DNS you will be ale to setup WiFi and use it with this library but your phone will probably timeout when trying to add the device to the official Orvibo server.

Installing

From Github

Clone the repo and then run

npm install 

to install the dependencies (buffer-crc32)

or from npm just run

npm i orvibo-b25-server

Usage

The best way to see how to use this library is to see Example.js

To start the example http server run

npm start 

This will start the Orvibo socket server create a basic example HTTP server used for interacting with sockets. Calling this http server with no parameters will return the uid, state or the switch, modelId and name of the socket.

You can then use the uid to toggle the state of the switch like http://localhost:3000?uid=5dcf7ff76e7a

One thing to note is the Orvibo uses 1 as off and 0 as on for the socket state.

Configuration

One you've got a socket connecting you can add it to the plugInfo array in the OrviboSettings.js or to your settings object you pass in. This will match to uid to a name so you can easily see which socket is which.

Contributing

I'm more than happy for other people to contribute to this library just send a pull request.

This project will probably work with other versions of the smart sockets that use the homemate app. If you manage to get it working let me know so I can add it here as supported.

Also if you'd like to contribute to help me buy additional Orvibo products to add to this server or the software has helped you in your own home automation projects and you just want to buy me a beer. You can sponsor it via my paypal account at http://paypal.me/sandysounds

Authors

License

This project is licensed under the Apache 2.0 License - see the LICENSE.md file for details

Acknowledgments

Big thanks to Grayda and insertjokehere for all their research and hard work into how these sockets work