Make Your Own End Devices


I have created some PCB’s and libraries which allow you to easily create your own custom devices that will work with Zigbee2MQTT by programming in the Arduino IDE. You could create your own sensors and control End Devices.

The VT1100 in sleep mode consumes 7uA, so can run on battery for years.

See Documentation here:

They can also be used to create your own mesh networks and you can use Node-Red to forward messages to MQTT to use any IOT platform that supports MQTT.

Please let me know if you are interested. Basically if I get enough interest I will sell them cheaply.




That’s interesting. I’ve been trying (and failing) to create end devices myself using an xbee board but unfortunately they don’t have any built-in ZCL in micropython.
I wouldn’t be opposed to trying a different board if it’s easier, do you have any examples of an end device built with this ? Maybe even just a temperature sensor or something simple like that to give people the general structure of a ZCL project to iterate upon.

Thanks for your work !


I made a Basic on/off switch just to prove the concept and I was able to join it to Z2MQTT and send/receive commands. Be aware this won’t be a Zigbee compliant device, but it did work with Zgibee2MQTT. To make the switch you need to edit the AF_Register command in the Library to register an endpoint using the home automation profile and correct Device and Cluster ID’s. Then the first three bytes of the data need to be as specified below.

Here is my notes on this:
End Device

Example: A Basic On Off Switch

Home automation Profile ID

Device ID
0x0000 - On Off Switch

Cluster ID
0x0006 On/Off

The data should be length 3. The first byte is for frame control (0x01), second is for transaction sequence number (0x01), and the 3rd is for off(0x00)/on(0x01)/toggle(0x02).


When pair device it won’t have the ModelID and it needs to be added.

  1. Stop Zigbee2MQTT
  2. Update Database file here: C:\Zigbee2MQTT\data
  3. Example: “manufId”:0,“modelId”:“Ebyte”,“epList”
  4. Restart Zigbee2MQTT
  5. Add support for new device as normal

Add too Device.js
// Ebyte
zigbeeModel: [‘EBYTE’],
model: ‘EBYTE’,
vendor: ‘EBYTE’,
description: ‘Test’,
supports: ‘Test’,
fromZigbee: [],
toZigbee: [],


I have created a Node-Red Dashboard that can be used to manage the wireless network and display sensor data. No programming is involved when using the available sub-flows and sketches. New devices can be added by creating new Subflows.

This is designed for users who want to create their own devices. Example: create temperature and soil moisture sensors to monitor their plants.

Vertorix Node-Red Dashboard