pilight 3.0

It has been 6 months since the original release of pilight. The source code is constantly being modified and fixed. The list of supported protocols is heavily increasing, currently supporting consumer hardware like KlikAanKlikUit, Home Easy and Impuls. But also the prototyping enthusiast stuff like DS18B20, DHT11/22 and LM75/76.

But wait Jim, there is more! Supporting more and more protocols isn’t the only thing in pilight 3.0 that is ‘new and better’. The continuing fixes of bugs and enhancements in code should be your number one priority to upgrade to the latest pilight version.

Because the pilight community is very compact and in close communication with coder CurlyMo, we see a lot of ‘personal bugs’ solved in no time. This make the program very stable, and chances are that some bugs will be fixed in 3.0 before you knew you had them!

New features

Added HTTP Login Ability

The pilight webgui can now be protected by setting a username and password. Everytime the webgui is opened, a login prompt will be shown. To use this new feature, make sure to add the following lines in the settings.json file:

"webserver-authentication": 1,
"webserver-username": "",
"webserver-password": ""

SSDP Discovery

SSDP is a feature that allows programs or devices to be automatically discovered on the network. This means that you don't have to know the ip and port number of the pilight instance you're running, but you can just seek for pilight by using ssdp.

A few changes have been made after the introduction of this feature. The mode setting has been removed. When you start a pilight instance, pilight will automatically seek the network for other pilight instances. Whenever a pilight instance has been found, it will connect to it and become a node. This means that both instances will start to cooperate. In a network only one pilight instance will be the daemon, the rest will be nodes.

The pilight clients will also use SSDP discovery to find the main daemon. When you send or want to see received codes, the client will automatically connect to the main daemon. The daemon will make sure all the nodes will receive the information as well

If you don't want to have a big network of pilight instances but seperate daemons, a new setting has been introduced to replace the old mode setting:

"standalone": 1

When a daemon runs in standalone mode, it won't start it's SSDP server and it will always daemonize. To connect to these daemons you need to use the -S and -P command line parameters.

Allow for Temperature and Humidity Correction

When you have sensors connected to your Raspberry Pi and you are sure certain sensors always report a certain degrees off, you can add manual corrections to this temperature.

"inside-temp": {
	"name": "Inside Temp.",
	"protocol": [ "dht22" ],
	"id": [{
		"gpio": 5
	"humidity": 507,
	"temperature": 166,
	"settings": {
		"interval": 10,
		"temp-corr": -50

In this example, pilight will substract 5 degrees (due to one decimals multiplied by 10)  from the temperature measured.

Multiple Hardware Support

Previously, pilight could only send and receive from one device at a time. This is annoying if you want to control devices within different frequencies. This new feature allows you to define all hardware modules in a separate hardware file. pilight will then send and receive by using the correct hardware device for each frequency. Currently, only 433.92Mhz is supported but 868Mhz will be added soon. The new hardware file looks like this:

	"433gpio": {
		"sender": 1,
		"receiver": 0

A new setting has been introduced to let pilight know where it can find the new hardware file:

"hardware-file": "/etc/pilight/hardware.json"

Other Small New Features

  1. Added support for the upcoming pilight kernel module.
  2. Webserver caching by using the appcache file.
  3. UUID node support*
  4. Basic webserver templating
  5. Log file will keep it's filesize below 1mb and check if the log file is manually removed.
  6. pilight-send help list is now ordered alphabetically.

New protocols

A new type of protocol has been introduces called API. These protocols read information from website APIs. In this version, two weather forecast sites are supported: Weather Underground and Open Weather Map. You can just add both protocols to your configuration just like any other protocol and pilight will extract the temperature and humidity information from them.


  1. REV
  2. Pollin
  3. Mumbi
  4. Conrad RSL


  1. KlikAanKlikUit
  2. Conrad RSL


  1. TI lm75 and lm76
  2. 1-wire ds18s20


  1. Weather Underground
  2. Open Weather Map


The last new protocol is called pilight_firmware. The upcoming new hardware filter will contain a specific pilight firmware. The new filter will communicate to pilight once a minute so pilight knows the filter is still working, and what the firmware version is of the filter. In future releases pilight will be able to automatically update the firmware when new version are released.


  1. Fixed the webserver crashes by splitting the https server and websocket server.
  2. Splitted the 1-wire dht22 and dht11 protocols due to difference parsing.
  3. webGUI decimals will now have a fixed length.
  4. The pilight API will now communicate numbers as numbers and strings as strings in it's JSON API**.
  5. Only allow one pilight client or daemon to run at a single time on the same device.
  6. The device polling interval in the sensor protocols is now thread safe.
  7. The bcm2835 protocols has been renamed to rpi_temp.

* A seperate tutorial has been created to explain this feature.
** This will potentially break external clients.

Published on