diff --git a/README.md b/README.md
index 93597a5..83607f9 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,17 @@
# Zintercom
-## Zigbee Intercom Automator
-This device is designed to control the matrix intercom using Zigbee
+##### Zigbee Intercom Automator
+This device is designed to control the matrix intercom using Zigbee.
Using zigbee2mqtt you can:
1. Receive notification when the intercom rings. (also support **direct bind**)
2. Mute the sound on the intercom handset.
-3. Automatically or manually open the door or hang up when the intercom rings.
+3. Automatically or manually open the door or hang up when the intercom rings.
There are 4 work modes:
-Never - ordinary work mode, use handset to control
-Once - one time open door when intercom rings
-Always - open door when intercom rings
-Drop - hangs up all intercom rings, right after start
+1. `Never` - ordinary work mode, use handset to control
+2. `Once` - one time open door when intercom rings
+3. `Always` - open door when intercom rings
+4. `Drop` - hangs up all intercom rings, right after start
You can change the operating mode with z2m or by pressing the button.
After pressing the button, the LED will flash.
@@ -23,15 +23,14 @@ Reset to FN by press and hold BTN for 5 seconds.
LED will flash during reset.
+
### How to add device into zigbe2mqtt
Use [external converters](https://www.zigbee2mqtt.io/information/configuration.html#external-converters-configuration) feature
Converter file located [here](./converters/DIY_Zintercom.js)
-
-
-
+
### Schematic
@@ -47,8 +46,10 @@ Converter file located [here](./converters/DIY_Zintercom.js)
### DC Power
Support `router` and `end device` modes.
-Install `E18-MS1PA1`, `E18-MS1PA2` or `E18-MS1-PCB`.
-
+Install `E18-MS1PA1`, `E18-MS1PA2` or `E18-MS1-PCB`.
+
+
+
@@ -56,4 +57,30 @@ Install `E18-MS1PA1`, `E18-MS1PA2` or `E18-MS1-PCB`.
Support only `end device` mode.
Install `E18-MS1-PCB` only!
+
+Do not turn off `sound` because it turns U2 forever, which will drain the battery much faster.
+
+Since the device is in sleep mode, it cannot receive commands.
+But you have the ability to set the button mode or at the time of the call.
+
+If any commands are in the coordinator's queue, they will be executed after a button is pressed or a call is received.
+
+
+##### The mode set by the Zigbee command `overwrites` the mode set by the button.
+
+### Binding
+The device supports direct binding of an incoming call to the onOff cluster.
+
+For example, you can turn on the light while a call comes to the intercom, for notification in mute mode.
+
+
+### Files to reproduce
+* [Gerbers and BOM](https://github.com/diyruz/Zintercom/tree/master/hardware) by [xyzroe](https://t.me/xyzroe)
+* [Firmware](https://github.com/diyruz/Zintercom/releases) by [xyzroe](https://t.me/xyzroe)
+
+
+### Inspired by
+The original scheme of the intercom opener by [Alexander Vaidurov](https://easyeda.com/Alex_AW/domofon-with-battery)
+Various hardware solutions by [Jager](https://modkam.ru)
+Firmware for different Zigbee devices by [Anonymous](https://github.com/nurikk/)
diff --git a/converters/DIY_Zintercom.js b/converters/DIYRuZ_Zintercom.js
similarity index 78%
rename from converters/DIY_Zintercom.js
rename to converters/DIYRuZ_Zintercom.js
index b71d8aa..a9b415b 100644
--- a/converters/DIY_Zintercom.js
+++ b/converters/DIYRuZ_Zintercom.js
@@ -7,11 +7,6 @@ const {
const ep = exposes.presets;
const ea = exposes.access;
-const ZCL_DATATYPE_INT16 = 0x29;
-const ZCL_DATATYPE_UINT8 = 0x20;
-const ZCL_DATATYPE_UINT16 = 0x21;
-const ZCL_DATATYPE_BOOLEAN = 0x10;
-const ZCL_DATATYPE_INT32 = 0x2b;
const bind = async (endpoint, target, clusters) => {
for (const cluster of clusters) {
await endpoint.bind(cluster, target);
@@ -63,8 +58,6 @@ const repInterval = {
MINUTE: 60,
};
-
-
const fz = {
diy_zintercom_config: {
cluster: 'closuresDoorLock',
@@ -150,11 +143,10 @@ const tz = {
const device = {
zigbeeModel: ['DIY_Zintercom'],
- model: 'DIY_Zintercom',
- vendor: 'xyzroe',
- description: '[Intercom Auto Opener]',
- supports: '',
- //homeassistant: [hass.temperature, hass.presure, hass.humidity, hass.co2],
+ model: 'DIYRuZ_Zintercom',
+ vendor: 'DIYRuZ',
+ description: '[Matrix intercom auto opener](https://diyruz.github.io/posts/zintercom/)',
+ icon: 'https://github.com/diyruz/Zintercom/blob/master/images/z2m.png?raw=true',
fromZigbee: [
fromZigbeeConverters.battery,
fz.diy_zintercom_config,
@@ -169,37 +161,11 @@ const device = {
configure: async (device, coordinatorEndpoint) => {
const firstEndpoint = device.getEndpoint(1);
- //await bind(firstEndpoint, coordinatorEndpoint, ['msCO2', 'closuresDoorLock', 'genOnOff']);
-
await bind(firstEndpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
+
const overides = {min: 0, max: 3600, change: 0};
await configureReporting.batteryVoltage(firstEndpoint, overides);
await configureReporting.batteryPercentageRemaining(firstEndpoint, overides);
-/*
- if (device.applicationVersion < 3) { // Legacy PM2 firmwares
- const payload = [{
- attribute: 'batteryPercentageRemaining',
- minimumReportInterval: 0,
- maximumReportInterval: 3600,
- reportableChange: 0,
- }, {
- attribute: 'batteryVoltage',
- minimumReportInterval: 0,
- maximumReportInterval: 3600,
- reportableChange: 0,
- }];
- await firstEndpoint.configureReporting('genPowerCfg', payload);
- }
- */
-/*
- const msBindPayload = [{
- attribute: 'measuredValue',
- minimumReportInterval: 0,
- maximumReportInterval: 3600,
- reportableChange: 0,
- }];
- await firstEndpoint.configureReporting('msCO2', msBindPayload);
-*/
const payload = [{
attribute: {
@@ -212,20 +178,6 @@ const device = {
},
];
await firstEndpoint.configureReporting('closuresDoorLock', payload);
- /**/
- /*
- await firstEndpoint.configureReporting('msTemperatureMeasurement', msBindPayload);
- await firstEndpoint.configureReporting('msRelativeHumidity', msBindPayload);
-
- const pressureBindPayload = [{
- attribute: 'scaledValue',
- minimumReportInterval: 0,
- maximumReportInterval: 3600,
- reportableChange: 0,
- }];
- await firstEndpoint.configureReporting('msPressureMeasurement', pressureBindPayload);
- */
-
},
exposes: [
diff --git a/images/back_2xAAA.png b/images/back_2xAAA.png
index 1a1982e..c048337 100644
Binary files a/images/back_2xAAA.png and b/images/back_2xAAA.png differ
diff --git a/images/z2m_dashboard.gif b/images/z2m_dashboard.gif
new file mode 100644
index 0000000..8ee1364
Binary files /dev/null and b/images/z2m_dashboard.gif differ
diff --git a/images/z2m_dashboard.png b/images/z2m_dashboard.png
deleted file mode 100644
index 0c985f2..0000000
Binary files a/images/z2m_dashboard.png and /dev/null differ