honeywell brdg-03em01 with dru fireplace
Moderators: leecollings, remb0
honeywell brdg-03em01 with dru fireplace
Hi!
I was wondering if someone out here got a DRU gas fireplace connected to domoticz by the honeywell brdg-03em01. Or, would it be possible to connect the brdg-03em01 to domoticz? Would someone be soo nice to help me out, since im not that good with code?
I know some guys got it done with openhab (https://community.openhab.org/t/dru-fir ... us/53876/4)
but, i rather stay with domoticzzz ofcourse;)
Thanks!
I was wondering if someone out here got a DRU gas fireplace connected to domoticz by the honeywell brdg-03em01. Or, would it be possible to connect the brdg-03em01 to domoticz? Would someone be soo nice to help me out, since im not that good with code?
I know some guys got it done with openhab (https://community.openhab.org/t/dru-fir ... us/53876/4)
but, i rather stay with domoticzzz ofcourse;)
Thanks!
-
- Posts: 5
- Joined: Tuesday 08 March 2016 14:38
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2020.2
- Location: Amersfoort
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
The OpenHab solution uses a Modbus integration. A Domoticz plugin for Modbus can be dowloaded at GitHub:
Plugin : https://github.com/DomoticX/domoticz-modbus
Product URL: http://domoticx.nl
So far so good. Now how do I need to configure the hardware in Domoticz using this plugin (if possible at all)?
I would like to use the following functions for controlling the Dru fireplace through ModBus hardware in Domoticz:
1) Turn fire off
2) Turn fire on
3) Read fire level (and on/off status)
4) Level fire up
5) Level fire down
6) Gas Usage
7) Internal temperature
8) Relays 1 & 2 on and off
9) Status of relays 1 & 2
10) Other internal parameters
If anybody could share the knowledge how to set this up, it would be very much appreciated. By me and probably, a large part of the 1000 readers of this topic.
A pointer to useful documentation or a way how to sniff out the codes would also help. If that enables me to configure the hardware, I will share the setup in this topic.
Plugin : https://github.com/DomoticX/domoticz-modbus
Product URL: http://domoticx.nl
So far so good. Now how do I need to configure the hardware in Domoticz using this plugin (if possible at all)?
I would like to use the following functions for controlling the Dru fireplace through ModBus hardware in Domoticz:
1) Turn fire off
2) Turn fire on
3) Read fire level (and on/off status)
4) Level fire up
5) Level fire down
6) Gas Usage
7) Internal temperature
8) Relays 1 & 2 on and off
9) Status of relays 1 & 2
10) Other internal parameters
If anybody could share the knowledge how to set this up, it would be very much appreciated. By me and probably, a large part of the 1000 readers of this topic.
A pointer to useful documentation or a way how to sniff out the codes would also help. If that enables me to configure the hardware, I will share the setup in this topic.
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hi,
As you might have seen the available protocol from the Honeywell interface brdg-03em01 is based on Modbus
This is a widely used standard protocol in industrial applications, based on polling registers.
The way the protocol is implemented, you can find at: https://github.com/snoekieboe/HABpanel/ ... db3523.pdf
You might have seen also, some OpenHAB users have tried to implement it, both indirectly, using Node Red, and also some attempts to use OpenHAB bindings directly. I do not expect that Domoticz is able to handle the Modbus registers directly.
For the plugin, see: https://github.com/DomoticX/domoticz-modbus, but we will not use this.
As on github the Node Red code has been posted (see: https://github.com/snoekieboe/DRU-Modbu ... b2-NodeRed) it would be not a big job to implement the MQTT interface to Domoticz and to pick-up the Modbus data in Node Red.
To do so, you have to take the following steps (software can be installed on the same device as Domoticz is installed on):
1. Install Mosquitto (See: https://mosquitto.org/download/)
2. Install NodeJS (See: https://nodejs.org/en/ and https://nodejs.org/en/download/package-manager/)
For Raspberry Pi: See: https://nodered.org/docs/getting-started/raspberrypi
3. Install Node Red (for other OS than Raspberry Pi OS). See: https://nodered.org/docs/getting-started/local
Download the Node Red flow: https://github.com/snoekieboe/DRU-Modbu ... deRed.json and import it in Node Red.. From there we can start.
If needed, I 'm happy to give you support to implement it in Domoticz
Regards
As you might have seen the available protocol from the Honeywell interface brdg-03em01 is based on Modbus
This is a widely used standard protocol in industrial applications, based on polling registers.
The way the protocol is implemented, you can find at: https://github.com/snoekieboe/HABpanel/ ... db3523.pdf
You might have seen also, some OpenHAB users have tried to implement it, both indirectly, using Node Red, and also some attempts to use OpenHAB bindings directly. I do not expect that Domoticz is able to handle the Modbus registers directly.
For the plugin, see: https://github.com/DomoticX/domoticz-modbus, but we will not use this.
As on github the Node Red code has been posted (see: https://github.com/snoekieboe/DRU-Modbu ... b2-NodeRed) it would be not a big job to implement the MQTT interface to Domoticz and to pick-up the Modbus data in Node Red.
To do so, you have to take the following steps (software can be installed on the same device as Domoticz is installed on):
1. Install Mosquitto (See: https://mosquitto.org/download/)
2. Install NodeJS (See: https://nodejs.org/en/ and https://nodejs.org/en/download/package-manager/)
For Raspberry Pi: See: https://nodered.org/docs/getting-started/raspberrypi
3. Install Node Red (for other OS than Raspberry Pi OS). See: https://nodered.org/docs/getting-started/local
Download the Node Red flow: https://github.com/snoekieboe/DRU-Modbu ... deRed.json and import it in Node Red.. From there we can start.
If needed, I 'm happy to give you support to implement it in Domoticz
Regards
Last edited by FireWizard on Wednesday 09 December 2020 21:14, edited 1 time in total.
-
- Posts: 5
- Joined: Tuesday 08 March 2016 14:38
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2020.2
- Location: Amersfoort
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
@FireWizard, Thank you very much for your explanation.
I am not very familiar with MQTT or Node-Red, but I have both of them installed. Before adapting the Node Red flow, I would like to check if the setup I have is suitable or whether I have to install any of the component on another device.
My setup:
Domoticz v2020.2 productive on Raspberry Pi 4, 8gb with Raspbian GNU/Linux 10 (buster)
Test setup of Home Assistant on separate Raspberry Pi 4, 8gb. Here Node Red is running as well.
MQTT running on Synology NAS
I also have another Raspberry Pi (3b) for testing OpenHab. Probably not relevant here.
As MQTT and Node Red are not on the same device as Domoticz, my starting point is a bit different from what FireWizard suggests. If this only means that I replace 'localhost' with the IP-address of my Domoticz implementation, that should be fine. If not, I may have to change the setup.
Can you please confirm that my setup is OK?
I am not very familiar with MQTT or Node-Red, but I have both of them installed. Before adapting the Node Red flow, I would like to check if the setup I have is suitable or whether I have to install any of the component on another device.
My setup:
Domoticz v2020.2 productive on Raspberry Pi 4, 8gb with Raspbian GNU/Linux 10 (buster)
Test setup of Home Assistant on separate Raspberry Pi 4, 8gb. Here Node Red is running as well.
MQTT running on Synology NAS
I also have another Raspberry Pi (3b) for testing OpenHab. Probably not relevant here.
As MQTT and Node Red are not on the same device as Domoticz, my starting point is a bit different from what FireWizard suggests. If this only means that I replace 'localhost' with the IP-address of my Domoticz implementation, that should be fine. If not, I may have to change the setup.
Can you please confirm that my setup is OK?
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hi, @heureekma
You can use your setup. Also my Node Red instances and MQTT run on different machines and hardware.
My Setup:
One MQTT broker runs in a FreeNas (FreeBSD) jail, as well as a Node Red in another jail with a different IP address.
Another MQTT server, together with Node Red runs on a Raspberry Pi 1B (!)
Everything works fine together, so if you take care of the correct IP address, it will work.
No need to change your setup.
Regards
You can use your setup. Also my Node Red instances and MQTT run on different machines and hardware.
My Setup:
One MQTT broker runs in a FreeNas (FreeBSD) jail, as well as a Node Red in another jail with a different IP address.
Another MQTT server, together with Node Red runs on a Raspberry Pi 1B (!)
Everything works fine together, so if you take care of the correct IP address, it will work.
No need to change your setup.
Regards
-
- Posts: 16
- Joined: Thursday 16 November 2017 20:02
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hi
I also have a DRU fireplace with a honeywell bridge (03em01). Im dreaming of implementing and controling it from domoticz.
Can you explain how to do this in domoticz instead of openhab?
I also have a DRU fireplace with a honeywell bridge (03em01). Im dreaming of implementing and controling it from domoticz.
Can you explain how to do this in domoticz instead of openhab?
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hi,
Solution for Domoticz is ready.
Flows will be published probably this week.
Using Modbus, Node Red, MQTT, with Google Home (Assistant) support.
First user test has been completed.
Regards
Solution for Domoticz is ready.
Flows will be published probably this week.
Using Modbus, Node Red, MQTT, with Google Home (Assistant) support.
First user test has been completed.
Regards
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
HI all,
Introduction
This post describes the interface between a Dru Burner and Domoticz with use of Node Red.
As not all burners have the same functionality and possibilities all functions are implemented, but some of them are commented out.
If the functionality is required, it is sufficient to remove the 2 forward slashes (//), but we were not able to test all functios with a real burner.
Everything has been tested against a Modbus simulator (ModbusPal under Linux)
Preparation of Node Red
In order to be able to use the flow extra nodes should be loaded into Node Red, beside the default nodes.
Load the following extra nodes, using "Manage Palette":
1. node-red-contrib-simple-gate
2. node-red-contrib-modbus
3. node-red-contrib-bit
4. node-red-contrib-filter
Preparation of Domoticz
Create the following virtual devices (if needed) in Domoticz and note down the index numbers:
Flow
The flow consists of 3 parts, each under a different tab in Node Red.
Feel free to re-organize this.
It is assumed that the MQTT server (Mosquitto) runs on the same device as Node Red. If not you have to change this in the config of the MQTT nodes.
Also you have to configure the Modbus server, currently called "Simulator", and set the correct IP address. Leave the other items unchanged.
Tab 1: Main flow, including communication from Dru Burner (Modbus) to Domoticz and communication from Domoticz to Dru Burner.
Tab 2: Control of "Wave pattern"
Tab 3: Control of the command to the Dru Burner by means of Google Home (Assistant)
Each part will be described separately.
The first Node Red Modbus node polls the Modbus register 40203 and 40204 every 10 seconds. Faster is not recommended.
Register 40203 contains status information and in case of an error Register 40204 contains the error code.
This payload is send to 2 change nodes, the upper for the status information and the lower one for the error code. In case of the change node for the error code also the topic "modbus_fault" is added. The 16 bit register for the status information is split up in a 16 bit array and as this node is unable to pass a topic, we add the topic modbus_status after it. Both data is joined into 1 object. The function node creates the correct messages to Domoticz.
This node contains also the error text from the user manual and users should check there error codes and texts, if it still complies with the error texts in the node. The "loose" Function node is identical but with English texts for the error code. Users can change this to their local language
In the function node the following sensors and switches are controlled.
- Error status (uses the error codes)
- Main burner On or Off
- Secondary burner On or Off (Currently commented out, as not every Dru type has a secondary burner)
- Low battery DFRC status
- 230 V Phase fault status
- Boost fan On or Off (Currently commented out, as not every Dru type has a boost fan)
- Light On or Off (Currently commented out, as not everyone uses the light)
- Wave active or inactive
- Pilot flame On or Off (Currently commented out, as not every Dru type has a pilot flame, but DBI ignition)
If particular functions are not desired, you can simple put 2 forward slashes (//) in front or it and if you need currently functions, that has been commented out, you can remove the forward slashed.
The upper part reads Modbus register 40207 and puts the measured temperature in a Temperature sensor.
The lower part read Modbus register 40250 and puts the thermostat value in the Thermostat device in Domoticz.
As this was not is use the nodes were disabled. These can be simply enabled, if you want to use them.
This part controls the Dru Burner from Domoticz. After the MQTT input node, we have a filter node, that splits the commands from the various push buttons and switches to different outputs.
The first output, if in use, sets the temperature set point by writing the temperature value to register 40250.
As this was not is use the nodes were disabled. These can be simply enabled, if you want to use them.
The second output writes some action, like Burner Off and Wave active to Modbus register 40200.
If applicable, also the Boost fan and the Light are controlled there. To use them, remove //.
The third output controls the ignition of the Main Burner and, if applicable, the Secondary Burner and Pilot Flame.
However this is conditional if the status register indicate that ignition is allowed. In case this register indicate that ignition is not allowed the gate node is closed and commands will not have any effect.
The fourth output handles the possibility to reset the fireplace. If it is allowed, the gate is open, otherwise closed.
The fifth output is also conditional If temperature control is possible, the gate is open otherwise closed.
As this was not is use the nodes were disabled. These can be simply enabled, if you want to use them.
The sixth output is also conditional. If the flame height can be changed by the user at this moment the gate is open en a command can be send to register 40201.
Some of the "Link" node point to another tab and that will be published in the future.
The complete flow is published below.
To be continued
Introduction
This post describes the interface between a Dru Burner and Domoticz with use of Node Red.
As not all burners have the same functionality and possibilities all functions are implemented, but some of them are commented out.
If the functionality is required, it is sufficient to remove the 2 forward slashes (//), but we were not able to test all functios with a real burner.
Everything has been tested against a Modbus simulator (ModbusPal under Linux)
Preparation of Node Red
In order to be able to use the flow extra nodes should be loaded into Node Red, beside the default nodes.
Load the following extra nodes, using "Manage Palette":
1. node-red-contrib-simple-gate
2. node-red-contrib-modbus
3. node-red-contrib-bit
4. node-red-contrib-filter
Preparation of Domoticz
Create the following virtual devices (if needed) in Domoticz and note down the index numbers:
- Temperatuurregeling (Temperature Control) 25 Light/Switch Switch on/off
Doeltemperatuur (⁰C) (Room Thermostat) 15 Thermostat SetPoint
Haard Uit (Fireplace Off) 27 Light/Switch Push OFF Button
Hoofd Brander (Main Burner) 17 Light/Switch Switch on/off
Wave aktief (Wave Active) 23 Light/Switch Switch on/off
Ontstekingsvlam (pilot) 24 Light/Switch Switch on/off
Vlam Hoogte (Flame Height) 26 Light/Switch Level (Dimmer)
Haard Reset (Fireplace reset) 28 Light/Switch Push ON Button
Haard Status (Status) 16 General Alert
Haard 230 Fase Status (230V Phase) 20 General Alert
Batterij Afstandsbediening Status (Low battery DFRC) 19 General Alert
Verlichting (Light) 22 Light/Switch Switch on/off
Boost Fan (Boost Fan) 21 Light/Switch Switch on/off
Tweede Brander (Second Burner) 18 Light/Switch Switch on/off
Kamertemperatuur (Room Temperature) 14 Temp (sensor)
Interval Time (Wave Interval time) 29 Light/Switch Level (Dimmer)
HA Wave Eco 1 Scene
HA Wave Comfort 2 Scene
Flow
The flow consists of 3 parts, each under a different tab in Node Red.
Feel free to re-organize this.
It is assumed that the MQTT server (Mosquitto) runs on the same device as Node Red. If not you have to change this in the config of the MQTT nodes.
Also you have to configure the Modbus server, currently called "Simulator", and set the correct IP address. Leave the other items unchanged.
Tab 1: Main flow, including communication from Dru Burner (Modbus) to Domoticz and communication from Domoticz to Dru Burner.
Tab 2: Control of "Wave pattern"
Tab 3: Control of the command to the Dru Burner by means of Google Home (Assistant)
Each part will be described separately.
The first Node Red Modbus node polls the Modbus register 40203 and 40204 every 10 seconds. Faster is not recommended.
Register 40203 contains status information and in case of an error Register 40204 contains the error code.
This payload is send to 2 change nodes, the upper for the status information and the lower one for the error code. In case of the change node for the error code also the topic "modbus_fault" is added. The 16 bit register for the status information is split up in a 16 bit array and as this node is unable to pass a topic, we add the topic modbus_status after it. Both data is joined into 1 object. The function node creates the correct messages to Domoticz.
This node contains also the error text from the user manual and users should check there error codes and texts, if it still complies with the error texts in the node. The "loose" Function node is identical but with English texts for the error code. Users can change this to their local language
In the function node the following sensors and switches are controlled.
- Error status (uses the error codes)
- Main burner On or Off
- Secondary burner On or Off (Currently commented out, as not every Dru type has a secondary burner)
- Low battery DFRC status
- 230 V Phase fault status
- Boost fan On or Off (Currently commented out, as not every Dru type has a boost fan)
- Light On or Off (Currently commented out, as not everyone uses the light)
- Wave active or inactive
- Pilot flame On or Off (Currently commented out, as not every Dru type has a pilot flame, but DBI ignition)
If particular functions are not desired, you can simple put 2 forward slashes (//) in front or it and if you need currently functions, that has been commented out, you can remove the forward slashed.
The upper part reads Modbus register 40207 and puts the measured temperature in a Temperature sensor.
The lower part read Modbus register 40250 and puts the thermostat value in the Thermostat device in Domoticz.
As this was not is use the nodes were disabled. These can be simply enabled, if you want to use them.
This part controls the Dru Burner from Domoticz. After the MQTT input node, we have a filter node, that splits the commands from the various push buttons and switches to different outputs.
The first output, if in use, sets the temperature set point by writing the temperature value to register 40250.
As this was not is use the nodes were disabled. These can be simply enabled, if you want to use them.
The second output writes some action, like Burner Off and Wave active to Modbus register 40200.
If applicable, also the Boost fan and the Light are controlled there. To use them, remove //.
The third output controls the ignition of the Main Burner and, if applicable, the Secondary Burner and Pilot Flame.
However this is conditional if the status register indicate that ignition is allowed. In case this register indicate that ignition is not allowed the gate node is closed and commands will not have any effect.
The fourth output handles the possibility to reset the fireplace. If it is allowed, the gate is open, otherwise closed.
The fifth output is also conditional If temperature control is possible, the gate is open otherwise closed.
As this was not is use the nodes were disabled. These can be simply enabled, if you want to use them.
The sixth output is also conditional. If the flame height can be changed by the user at this moment the gate is open en a command can be send to register 40201.
Some of the "Link" node point to another tab and that will be published in the future.
The complete flow is published below.
Code: Select all
[{"id":"69f1448b.1e22f4","type":"tab","label":"Dru Fireplace","disabled":false,"info":""},{"id":"aa8ef443.806b3","type":"modbus-read","z":"69f1448b.1e22f4","d":true,"name":"Room Temperature","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"40207","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"eaeccf99.767198","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":170,"y":380,"wires":[["ed2ba6ba.8b9018"],[]]},{"id":"74d940d.6c649c","type":"comment","z":"69f1448b.1e22f4","d":true,"name":"Modbus Read Room Temperature 40207","info":"","x":240,"y":337,"wires":[]},{"id":"ed2ba6ba.8b9018","type":"function","z":"69f1448b.1e22f4","d":true,"name":"","func":"msg.payload = {\"command\":\"udevice\",\"idx\":14,\"nvalue\":0,\"svalue\":(msg.payload[0]/10).toString()};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":440,"y":377,"wires":[["3b68b413.534c0c"]]},{"id":"3b68b413.534c0c","type":"mqtt out","z":"69f1448b.1e22f4","d":true,"name":"Domoticz In","topic":"domoticz/in","qos":"0","retain":"false","broker":"f9f13036.e28b58","x":670,"y":437,"wires":[]},{"id":"2d2f96b5.265b02","type":"modbus-read","z":"69f1448b.1e22f4","d":true,"name":"Temperature Control Setpoint","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"40250","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"eaeccf99.767198","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":200,"y":500,"wires":[["79c417d.b57ee68"],[]]},{"id":"a7fdf480.63a8d","type":"comment","z":"69f1448b.1e22f4","d":true,"name":"Modbus Read Temperature Control Setpoint 40250","info":"","x":270,"y":460,"wires":[]},{"id":"79c417d.b57ee68","type":"function","z":"69f1448b.1e22f4","d":true,"name":"","func":"msg.payload = {\"command\":\"udevice\",\"idx\":15,\"nvalue\":0,\"svalue\":(msg.payload[0]/10).toString()};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":440,"y":500,"wires":[["3b68b413.534c0c"]]},{"id":"91cecba1.9d58b8","type":"mqtt in","z":"69f1448b.1e22f4","name":"Domoticz Out","topic":"domoticz/out","qos":"0","datatype":"json","broker":"f9f13036.e28b58","x":130,"y":640,"wires":[["e235a0ca.7aa218"]]},{"id":"e4a4ce34.f56a18","type":"function","z":"69f1448b.1e22f4","d":true,"name":"Set Temperature","func":"msg.payload = Number(msg.payload.svalue1 * 10);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":590,"y":600,"wires":[["d2210ee3.bfb7d8"]]},{"id":"d2210ee3.bfb7d8","type":"modbus-write","z":"69f1448b.1e22f4","d":true,"name":"Temperature Control Setpoint","showStatusActivities":false,"showErrors":true,"unitid":"","dataType":"HoldingRegister","adr":"40250","quantity":"1","server":"eaeccf99.767198","emptyMsgOnFail":false,"keepMsgProperties":false,"x":890,"y":600,"wires":[[],[]]},{"id":"6802092c.83a5c","type":"comment","z":"69f1448b.1e22f4","d":true,"name":"Modbus Write Temperature Control Setpoint 40250","info":"","x":830,"y":560,"wires":[]},{"id":"e235a0ca.7aa218","type":"filter","z":"69f1448b.1e22f4","name":"Filter Buttons","property":"payload.idx","propertyType":"msg","asArray":false,"itemProperty":"","itemPropertyType":"item","rules":[{"t":"eq","v":"15","vt":"num","output":1},{"t":"eq","v":"17","vt":"num","output":3},{"t":"eq","v":"18","vt":"num","output":3},{"t":"eq","v":"21","vt":"num","output":2},{"t":"eq","v":"22","vt":"num","output":2},{"t":"eq","v":"23","vt":"num","output":2},{"t":"eq","v":"24","vt":"str","output":3},{"t":"eq","v":"25","vt":"str","output":5},{"t":"eq","v":"26","vt":"str","output":6},{"t":"eq","v":"27","vt":"str","output":2},{"t":"eq","v":"28","vt":"str","output":4}],"checkall":"true","outputs":6,"x":340,"y":640,"wires":[["e4a4ce34.f56a18"],["e1d4516b.cf5f88"],["9d0a3143.9bede8"],["ec100ed6.1f30b"],["84a9afa.b34b9d"],["f102acd8.9d50b"]]},{"id":"c20e293a.3cdea8","type":"mqtt out","z":"69f1448b.1e22f4","name":"Domoticz In","topic":"domoticz/in","qos":"0","retain":"false","broker":"f9f13036.e28b58","x":1292,"y":100,"wires":[]},{"id":"e1d4516b.cf5f88","type":"function","z":"69f1448b.1e22f4","name":"Set Fireplace action","func":"switch (msg.payload.idx) {\n \n// Boost Fan\n// Currently not used\n\n// case 21:\n// if (msg.payload.nvalue === 0) {\n// msg.payload = 6\n// } else if (msg.payload.nvalue === 1) {\n// msg.payload = 104\n// }\n// break;\n\n// Light\n// Currently not used\n\n// case 22:\n// if (msg.payload.nvalue === 0) {\n// msg.payload = 5\n// } else if (msg.payload.nvalue === 1) {\n// msg.payload = 103\n// }\n// break;\n\n// Wave active\n\n case 23:\n if (msg.payload.nvalue === 0) {\n msg.payload = 7\n } else if (msg.payload.nvalue === 1) {\n msg.payload = 105\n }\n break;\n\n\n// Fireplace Off\n\n case 27:\n if (msg.payload.nvalue === 0) {\n msg.payload = 1\n } else if (msg.payload.nvalue === 1) {\n msg.payload = 0\n }\n break;\n\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":660,"y":700,"wires":[["8b03ae6d.1d482"]]},{"id":"8b03ae6d.1d482","type":"modbus-write","z":"69f1448b.1e22f4","name":"Fireplace action","showStatusActivities":false,"showErrors":true,"unitid":"","dataType":"HoldingRegister","adr":"40200","quantity":"1","server":"eaeccf99.767198","emptyMsgOnFail":false,"keepMsgProperties":false,"x":940,"y":780,"wires":[[],[]]},{"id":"50cdaf81.38ca58","type":"comment","z":"69f1448b.1e22f4","name":"Modbus Write Fireplace action 40200","info":"","x":870,"y":660,"wires":[]},{"id":"83130643.bd1ce","type":"function","z":"69f1448b.1e22f4","name":"Set Flame height","func":"if (msg.payload.nvalue !== 0)\n\n{\n msg.payload = Number(msg.payload.svalue1)\n}\n\nelse if (msg.payload.nvalue === 0)\n\n{\n msg.payload = 0\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":710,"y":960,"wires":[["682f6248.ee68dc"]]},{"id":"682f6248.ee68dc","type":"modbus-write","z":"69f1448b.1e22f4","name":"Flame height","showStatusActivities":false,"showErrors":true,"unitid":"","dataType":"HoldingRegister","adr":"40201","quantity":"1","server":"eaeccf99.767198","emptyMsgOnFail":false,"keepMsgProperties":false,"x":950,"y":960,"wires":[[],[]]},{"id":"127fe532.772693","type":"comment","z":"69f1448b.1e22f4","name":"Modbus Write Flame height 40201","info":"","x":880,"y":920,"wires":[]},{"id":"7e9fb276.00b1ac","type":"link out","z":"69f1448b.1e22f4","name":"Link Out","links":["245e8aaa.4456e6","37546fe8.09d5e8","80e10346.5a8d3","3c551c28.15fb74"],"x":1057,"y":180,"wires":[]},{"id":"245e8aaa.4456e6","type":"link in","z":"69f1448b.1e22f4","name":"Link In","links":["7e9fb276.00b1ac","1dc0f9b2.b9a4be"],"x":219,"y":960,"wires":[["463baa3f.da1024"]]},{"id":"dba495f2.925088","type":"modbus-read","z":"69f1448b.1e22f4","name":"Status/Fault","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"40203","quantity":"2","rate":"10","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"f8bdbf46.ef61f8","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":150,"y":140,"wires":[["bff8202f.b2568","40b07d88.c988fc"],[]]},{"id":"bff8202f.b2568","type":"change","z":"69f1448b.1e22f4","name":"Change 1 rule","rules":[{"t":"move","p":"payload[0]","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":100,"wires":[["ea315768.be7e3"]]},{"id":"ea315768.be7e3","type":"bit-simple-sixteen","z":"69f1448b.1e22f4","name":"","x":572,"y":100,"wires":[["96e9c51c.eaf2c"]]},{"id":"40b07d88.c988fc","type":"change","z":"69f1448b.1e22f4","name":"Change 2 rules","rules":[{"t":"move","p":"payload[1]","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"modbus_fault","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":180,"wires":[["57cdb61a.9ecc68"]]},{"id":"1cba4fc7.6924e8","type":"comment","z":"69f1448b.1e22f4","name":"Modbus Read Status 40203 and 40204","info":"","x":210,"y":40,"wires":[]},{"id":"96e9c51c.eaf2c","type":"change","z":"69f1448b.1e22f4","name":"Set Topic","rules":[{"t":"set","p":"topic","pt":"msg","to":"modbus_status","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":762,"y":100,"wires":[["57cdb61a.9ecc68"]]},{"id":"57cdb61a.9ecc68","type":"join","z":"69f1448b.1e22f4","name":"Join","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":932,"y":100,"wires":[["7e9fb276.00b1ac","165f619f.a64dc6"]]},{"id":"89fdbb33.7e4ad","type":"function","z":"69f1448b.1e22f4","name":"Set Ignition","func":"switch (msg.payload.idx) {\n \n// Main Burner \n\n case 17:\n if (msg.payload.nvalue === 0) {\n msg.payload = 3\n } else if (msg.payload.nvalue === 1) {\n msg.payload = 101\n }\n break;\n\n// Second Burner\n// Currently not used\n\n// case 18:\n// if (msg.payload.nvalue === 0) {\n// msg.payload = 4\n// } else if (msg.payload.nvalue === 1) {\n// msg.payload = 102\n// }\n// break;\n\n// Pilot\n// Currently not used\n\n// case 24:\n// if (msg.payload.nvalue === 0) {\n// msg.payload = 2\n// } else if (msg.payload.nvalue === 1) {\n// msg.payload = 100\n// }\n// break;\n\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":690,"y":760,"wires":[["8b03ae6d.1d482"]]},{"id":"f563fca3.674ec","type":"function","z":"69f1448b.1e22f4","d":true,"name":"Set temperature Control","func":"// Temperature Control\n// Currently not used\n\nif (msg.payload.nvalue === 0) {\n msg.payload = 8\n} else if (msg.payload.nvalue === 1) {\n msg.payload = 106\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":730,"y":883,"wires":[["8b03ae6d.1d482"]]},{"id":"37546fe8.09d5e8","type":"link in","z":"69f1448b.1e22f4","d":true,"name":"Link In","links":["7e9fb276.00b1ac"],"x":219,"y":883,"wires":[["b4042f01.399948"]]},{"id":"80e10346.5a8d3","type":"link in","z":"69f1448b.1e22f4","name":"Link In","links":["7e9fb276.00b1ac","1dc0f9b2.b9a4be"],"x":219,"y":760,"wires":[["858fc90f.f9301"]]},{"id":"463baa3f.da1024","type":"function","z":"69f1448b.1e22f4","name":"","func":"if (msg.payload.modbus_status[10] === false) {\n msg.topic = \"control\";\n msg.payload = \"open\"\n }\n else {\n msg.topic = \"control\";\n msg.payload = \"close\";\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":341,"y":960,"wires":[["f102acd8.9d50b"]]},{"id":"f102acd8.9d50b","type":"gate","z":"69f1448b.1e22f4","name":"Gate","controlTopic":"control","defaultState":"closed","openCmd":"open","closeCmd":"close","toggleCmd":"toggle","defaultCmd":"default","persist":false,"x":510,"y":960,"wires":[["83130643.bd1ce"]]},{"id":"9d0a3143.9bede8","type":"gate","z":"69f1448b.1e22f4","name":"Gate","controlTopic":"control","defaultState":"closed","openCmd":"open","closeCmd":"close","toggleCmd":"toggle","defaultCmd":"default","persist":false,"x":510,"y":760,"wires":[["89fdbb33.7e4ad"]]},{"id":"84a9afa.b34b9d","type":"gate","z":"69f1448b.1e22f4","d":true,"name":"Gate","controlTopic":"control","defaultState":"closed","openCmd":"open","closeCmd":"close","toggleCmd":"toggle","defaultCmd":"default","persist":false,"x":510,"y":883,"wires":[["f563fca3.674ec"]]},{"id":"858fc90f.f9301","type":"function","z":"69f1448b.1e22f4","name":"","func":"if (msg.payload.modbus_status[15] === false) {\n msg.topic = \"control\";\n msg.payload = \"open\"\n }\n else {\n msg.topic = \"control\";\n msg.payload = \"close\";\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":341,"y":760,"wires":[["9d0a3143.9bede8"]]},{"id":"b4042f01.399948","type":"function","z":"69f1448b.1e22f4","d":true,"name":"","func":"if ((msg.payload.modbus_status[13] === false) && (msg.payload.modbus_status[14] === false)) {\n msg.topic = \"control\";\n msg.payload = \"close\"\n }\n else {\n msg.topic = \"control\";\n msg.payload = \"open\";\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":341,"y":883,"wires":[["84a9afa.b34b9d"]]},{"id":"5b79bff0.ca1de","type":"function","z":"69f1448b.1e22f4","name":"Reset Fireplace","func":"// Fireplace reset\n \nif (msg.payload.nvalue === 0) {\n msg.payload = 0\n} else if (msg.payload.nvalue === 1) {\n msg.payload = 1000\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":700,"y":820,"wires":[["8b03ae6d.1d482"]]},{"id":"3c551c28.15fb74","type":"link in","z":"69f1448b.1e22f4","name":"Link In","links":["7e9fb276.00b1ac","1dc0f9b2.b9a4be"],"x":219,"y":820,"wires":[["c1552b64.b7e658"]]},{"id":"ec100ed6.1f30b","type":"gate","z":"69f1448b.1e22f4","name":"Gate","controlTopic":"control","defaultState":"closed","openCmd":"open","closeCmd":"close","toggleCmd":"toggle","defaultCmd":"default","persist":false,"x":510,"y":820,"wires":[["5b79bff0.ca1de"]]},{"id":"c1552b64.b7e658","type":"function","z":"69f1448b.1e22f4","name":"","func":"if (msg.payload.modbus_status[6] === true) {\n msg.topic = \"control\";\n msg.payload = \"open\"\n }\n else {\n msg.topic = \"control\";\n msg.payload = \"close\";\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":341,"y":820,"wires":[["ec100ed6.1f30b"]]},{"id":"165f619f.a64dc6","type":"function","z":"69f1448b.1e22f4","name":"","func":" /*jshint maxerr: 100000 */\nmsg1 = {};\nmsg2 = {};\n//msg3 = {};\nmsg4 = {};\nmsg5 = {};\n//msg6 = {};\n//msg7 = {};\nmsg8 = {};\n//msg9 = {};\nvar fault_text = {};\n\n// Register 40203\n// Fireplace Status Fault\n\nif (msg.payload.modbus_status[0] === true) {\n switch (msg.payload.modbus_fault) {\n\n case 0:\n fault_text = \"Onbekende foutcode\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 1: \n fault_text = \"Communicatieverlies tussen ontvanger en branderautomaat\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 2: \n fault_text = \"Ontvanger oververhit (60° boven kamertemperatuur)\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 3: \n fault_text = \"Interne (ontvanger) NTC-sensor werkt niet correct\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n \n case 4: \n fault_text = \"Externe NTC-sensor, werkt niet correct\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 5: \n fault_text = \"Interne veiligheidsfout\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 6: \n fault_text = \"Communicatieverlies tussen zender en ontvanger\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 7: \n fault_text = \"Raadpleeg installatiehandleiding\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 8: \n fault_text = \"Geen ionisatie\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 9: \n fault_text = \"Onbekende foutcode\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 10: \n fault_text = \"Onbekende foutcode\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 11: \n fault_text = \"Onbekende foutcode\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 12: \n fault_text = \"ESYS wordt niet vrijgegeven\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 13: \n fault_text = \"Vlamverlies wanneer alleen de hoofdbrander aan staat\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 14: \n fault_text = \"Vlamverlies wanneer beide branders aan staan\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 15: \n fault_text = \"Geen branderautomaat of High limit error\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 16:\n fault_text = \"Hardware Fout ESYS\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 17: \n fault_text = \"Disable contact is gesloten\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n \n default:\n fault_text = \"Onbekende foutcode\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Foutcode \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n } \n} else if (msg.payload.modbus_status[0] === false) {\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":1,\"svalue\":\"Normaal\"}\n}\n\n// Fireplace Status Pilot flame ON\n\n//if (msg.payload.modbus_status[1] === true) {\n// msg9.payload = { \"command\" : \"switchlight\" , \"idx\" : 24 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload.modbus_status[1] === false) {\n// msg9.payload = { \"command\" : \"switchlight\" , \"idx\" : 24 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Main Burner ON\n\nif (msg.payload.modbus_status[2] === true) {\n msg2.payload = { \"command\" : \"switchlight\" , \"idx\" : 17 , \"switchcmd\" : \"On\" }\n} else if (msg.payload.modbus_status[2] === false) {\n msg2.payload = { \"command\" : \"switchlight\" , \"idx\" : 17 , \"switchcmd\" : \"Off\" }\n}\n\n// Fireplace Status Second Burner ON\n// Currently not used\n\n//if (msg.payload.modbus_status[3] === true) {\n// msg3.payload = { \"command\" : \"switchlight\" , \"idx\" : 18 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload_status[3] === false) {\n// msg3.payload = { \"command\" : \"switchlight\" , \"idx\" : 18 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Low battery DFRC\n\nif (msg.payload.modbus_status[4] === true) {\n msg4.payload = {\"command\":\"udevice\",\"idx\":19,\"nvalue\":2,\"svalue\":\"Fout\"}\n} else if (msg.payload.modbus_status[4] === false) {\n msg4.payload = {\"command\":\"udevice\",\"idx\":19,\"nvalue\":1,\"svalue\":\"Normaal\"}\n}\n\n// Fireplace Status 230V phase fault\n\nif (msg.payload.modbus_status[5] === true) {\n msg5.payload = {\"command\":\"udevice\",\"idx\":20,\"nvalue\":2,\"svalue\":\"Fout\"}\n} else if (msg.payload.modbus_status[5] === false) {\n msg5.payload = {\"command\":\"udevice\",\"idx\":20,\"nvalue\":1,\"svalue\":\"Normaal\"}\n}\n\n// Fireplace Status Boost Fan ON\n// Currently not used\n\n//if (msg.payload.modbus_status[7] === true) {\n// msg6.payload = { \"command\" : \"switchlight\" , \"idx\" : 21 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload_status[7] === false) {\n// msg6.payload = { \"command\" : \"switchlight\" , \"idx\" : 21 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Light ON\n// Currently not used\n\n//if (msg.payload.modbus_status[8] === true) {\n// msg7.payload = { \"command\" : \"switchlight\" , \"idx\" : 22 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload_status[8] === false) {\n// msg7.payload = { \"command\" : \"switchlight\" , \"idx\" : 22 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Wave active\n\nif (msg.payload.modbus_status[9] === true) {\n msg8.payload = { \"command\" : \"switchlight\" , \"idx\" : 23 , \"switchcmd\" : \"On\" }\n} else if (msg.payload.modbus_status[9] === false) {\n msg8.payload = { \"command\" : \"switchlight\" , \"idx\" : 23 , \"switchcmd\" : \"Off\" }\n}\n\n//return [[msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9]];\nreturn [[msg1,msg2,msg4,msg5,msg8]];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1100,"y":100,"wires":[["c20e293a.3cdea8"]]},{"id":"c2ad6f52.2dabd","type":"function","z":"69f1448b.1e22f4","name":"","func":" /*jshint maxerr: 100000 */\nmsg1 = {};\nmsg2 = {};\n//msg3 = {};\nmsg4 = {};\nmsg5 = {};\n//msg6 = {};\n//msg7 = {};\nmsg8 = {};\nmsg9 = {};\nvar fault_text = {};\n\n// Register 40203\n// Fireplace Status Fault\n\nif (msg.payload.modbus_status[0] === true) {\n switch (msg.payload.modbus_fault) {\n\n case 0:\n fault_text = \"Unknown Fault code\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 1: \n fault_text = \"Communication loss between receiver and burner device\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 2: \n fault_text = \"Receiver overheated (60° above room temperature)\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 3: \n fault_text = \"Internal (receiver) NTC sensor does not work correctly\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n \n case 4: \n fault_text = \"External NTC sensor does not work correctly\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 5: \n fault_text = \"Internal safety error\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 6: \n fault_text = \"Communication loss between transmitter and receiver\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 7: \n fault_text = \"Unknown Fault code\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 8: \n fault_text = \"No ionization\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 9: \n fault_text = \"Unknown Fault code\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 10: \n fault_text = \"Unknown Fault code\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 11: \n fault_text = \"Unknown Fault code\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 12: \n fault_text = \"ESYS is not released\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 13: \n fault_text = \"(ionisation <0.8 μA) Flame loss when only the main burner is on\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 14: \n fault_text = \"(ionisation <0.8 μA) Flame loss when both burners are on\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 15: \n fault_text = \"No burner device or High limit error\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 16:\n fault_text = \"Hardware Error ESYS\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n\n case 17: \n fault_text = \"Disable contact is closed\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n break;\n \n default:\n fault_text = \"Unknown Fault code\";\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":2,\"svalue\":\"Fault code \" + \"F\" + msg.payload.modbus_fault + \"\\n\" + fault_text};\n } \n} else if (msg.payload.modbus_status[0] === false) {\n msg1.payload = {\"command\":\"udevice\",\"idx\":16,\"nvalue\":1,\"svalue\":\"Normal\"}\n}\n\n// Fireplace Status Pilot flame ON\n\n//if (msg.payload.modbus_status[1] === true) {\n// msg9.payload = { \"command\" : \"switchlight\" , \"idx\" : 24 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload.modbus_status[1] === false) {\n// msg9.payload = { \"command\" : \"switchlight\" , \"idx\" : 24 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Main Burner ON\n\nif (msg.payload.modbus_status[2] === true) {\n msg2.payload = { \"command\" : \"switchlight\" , \"idx\" : 17 , \"switchcmd\" : \"On\" }\n} else if (msg.payload.modbus_status[2] === false) {\n msg2.payload = { \"command\" : \"switchlight\" , \"idx\" : 17 , \"switchcmd\" : \"Off\" }\n}\n\n// Fireplace Status Second Burner ON\n// Currently not used\n\n//if (msg.payload.modbus_status[3] === true) {\n// msg3.payload = { \"command\" : \"switchlight\" , \"idx\" : 18 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload_status[3] === false) {\n// msg3.payload = { \"command\" : \"switchlight\" , \"idx\" : 18 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Low battery DFRC\n\nif (msg.payload.modbus_status[4] === true) {\n msg4.payload = {\"command\":\"udevice\",\"idx\":19,\"nvalue\":2,\"svalue\":\"Fault\"}\n} else if (msg.payload.modbus_status[4] === false) {\n msg4.payload = {\"command\":\"udevice\",\"idx\":19,\"nvalue\":1,\"svalue\":\"Normal\"}\n}\n\n// Fireplace Status 230V phase fault\n\nif (msg.payload.modbus_status[5] === true) {\n msg5.payload = {\"command\":\"udevice\",\"idx\":20,\"nvalue\":2,\"svalue\":\"Fault\"}\n} else if (msg.payload.modbus_status[5] === false) {\n msg5.payload = {\"command\":\"udevice\",\"idx\":20,\"nvalue\":1,\"svalue\":\"Normal\"}\n}\n\n// Fireplace Status Boost Fan ON\n// Currently not used\n\n//if (msg.payload.modbus_status[7] === true) {\n// msg6.payload = { \"command\" : \"switchlight\" , \"idx\" : 21 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload_status[7] === false) {\n// msg6.payload = { \"command\" : \"switchlight\" , \"idx\" : 21 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Light ON\n// Currently not used\n\n//if (msg.payload.modbus_status[8] === true) {\n// msg7.payload = { \"command\" : \"switchlight\" , \"idx\" : 22 , \"switchcmd\" : \"On\" }\n//} else if (msg.payload_status[8] === false) {\n// msg7.payload = { \"command\" : \"switchlight\" , \"idx\" : 22 , \"switchcmd\" : \"Off\" }\n//}\n\n// Fireplace Status Wave active\n\nif (msg.payload.modbus_status[9] === true) {\n msg8.payload = { \"command\" : \"switchlight\" , \"idx\" : 23 , \"switchcmd\" : \"On\" }\n} else if (msg.payload.modbus_status[9] === false) {\n msg8.payload = { \"command\" : \"switchlight\" , \"idx\" : 23 , \"switchcmd\" : \"Off\" }\n}\n\n//return [[msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9]];\nreturn [[msg1,msg2,msg4,msg5,msg8]];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1100,"y":260,"wires":[[]]},{"id":"82922db3.6a5b88","type":"comment","z":"69f1448b.1e22f4","name":"English","info":"","x":1090,"y":220,"wires":[]},{"id":"bdd14a.a06c56b8","type":"link in","z":"69f1448b.1e22f4","name":"From Google Home","links":["5b0023b8.5845fc"],"x":295,"y":720,"wires":[["9d0a3143.9bede8"]]},{"id":"12332a5e.1289ee","type":"link in","z":"69f1448b.1e22f4","name":"From Google Home Flame height","links":["4f77570a.2bd55"],"x":295,"y":920,"wires":[["f102acd8.9d50b"]]},{"id":"917605be.cc1c8","type":"comment","z":"69f1448b.1e22f4","name":"Dutch","info":"","x":1090,"y":60,"wires":[]},{"id":"eaeccf99.767198","type":"modbus-client","z":"69f1448b.1e22f4","name":"Simulator","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.10.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"2","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true},{"id":"f9f13036.e28b58","type":"mqtt-broker","name":"localhost","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"f8bdbf46.ef61f8","type":"modbus-client","name":"Simulator","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.10.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":2,"commandDelay":1,"clientTimeout":1000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true}]
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hi all,
Wave
This post is the second part of the flow description for the DRU Burner and describes the flow part, covering the wave and flame control.
This part is programmed in a separate tab in Node Red.
Below you will find the complete flow.
In order to operate particular scenes, you have to create a "Scene" in Domoticz and configure it to start the "Wave active" switch, as follows:
From the MQTT input node, we send the incoming messages to the first "Filter" node in order to separate the Scene indexes from the Switch indexes.
A second "Filter" node splits Scene IDX 1 and Scene IDX 2.
The first Scene (Eco) activates the Eco Pattern and sends the values to the Modbus Write register 40421, while the second Scene (Comfort) sends the values of the Comfort Pattern to the Modbus Write register. The "Link" node is used in combination with Google Home (Assistant) and can be ignored for now.
The source of the values for the Scenes is a little bit unknown and has been borrowed from a user "Snoekieboe", who made something for OpenHab.
See: lines 1592 and 1905 in https://github.com/snoekieboe/DRU-Modbu ... deRed.json.
This part requires testing with a real Burner and to define which values are suitable for Eco and which are suitable for Comfort.
To determine these values and also others an Inject node and a Function has been introduced for users to find out their own pattern.
The values that can be used, are 1 – 15 and 20 values together make the pattern of the wave. They are written into 10 Modbus registers
You can insert for each of the twenty flames a value from 1 to 15, where 1 is the lowest possible flame and 15 is the highest possible flame.
Be aware the Inject mode is not protected against faulty input, outside the range 1 -15. This can result in strange values.
If someone has developed a nice pattern he/she can define a Scene for it and put the values in a Function node. Debug nodes are present.
The wave requires also a "Wave interval" which can be easily adjusted in Domoticz by means of a Dimmer (switch).
The IDX of this Dimmer is filtered by a "Filter" node and as the Dimmer runs from 0% to 100%, we have to do some calculations.
Wave interval time
Total period of wave pattern is 20 times this interval time.
Note: from valve position 1 to 15 can takes up to 5 seconds. So a small interval time and a large difference might not be visible for the end
user. Therefore the lowest possible value (0%) has been defined as 5 seconds, while the highest (100%) is defined as 30 seconds.
The final value is written into Modbus Write register 40420
This Wave pattern requires definitively more testing and I am open for feedback.
The complete flow is published below.
To be continued
Wave
This post is the second part of the flow description for the DRU Burner and describes the flow part, covering the wave and flame control.
This part is programmed in a separate tab in Node Red.
Below you will find the complete flow.
In order to operate particular scenes, you have to create a "Scene" in Domoticz and configure it to start the "Wave active" switch, as follows:
From the MQTT input node, we send the incoming messages to the first "Filter" node in order to separate the Scene indexes from the Switch indexes.
A second "Filter" node splits Scene IDX 1 and Scene IDX 2.
The first Scene (Eco) activates the Eco Pattern and sends the values to the Modbus Write register 40421, while the second Scene (Comfort) sends the values of the Comfort Pattern to the Modbus Write register. The "Link" node is used in combination with Google Home (Assistant) and can be ignored for now.
The source of the values for the Scenes is a little bit unknown and has been borrowed from a user "Snoekieboe", who made something for OpenHab.
See: lines 1592 and 1905 in https://github.com/snoekieboe/DRU-Modbu ... deRed.json.
This part requires testing with a real Burner and to define which values are suitable for Eco and which are suitable for Comfort.
To determine these values and also others an Inject node and a Function has been introduced for users to find out their own pattern.
The values that can be used, are 1 – 15 and 20 values together make the pattern of the wave. They are written into 10 Modbus registers
You can insert for each of the twenty flames a value from 1 to 15, where 1 is the lowest possible flame and 15 is the highest possible flame.
Be aware the Inject mode is not protected against faulty input, outside the range 1 -15. This can result in strange values.
If someone has developed a nice pattern he/she can define a Scene for it and put the values in a Function node. Debug nodes are present.
The wave requires also a "Wave interval" which can be easily adjusted in Domoticz by means of a Dimmer (switch).
The IDX of this Dimmer is filtered by a "Filter" node and as the Dimmer runs from 0% to 100%, we have to do some calculations.
Wave interval time
Total period of wave pattern is 20 times this interval time.
Note: from valve position 1 to 15 can takes up to 5 seconds. So a small interval time and a large difference might not be visible for the end
user. Therefore the lowest possible value (0%) has been defined as 5 seconds, while the highest (100%) is defined as 30 seconds.
The final value is written into Modbus Write register 40420
This Wave pattern requires definitively more testing and I am open for feedback.
The complete flow is published below.
Code: Select all
[{"id":"5ee7c7ea.9c5108","type":"tab","label":"Wave pattern","disabled":false,"info":""},{"id":"cd554a33.b93078","type":"mqtt in","z":"5ee7c7ea.9c5108","name":"Domoticz Out","topic":"domoticz/out","qos":"0","datatype":"json","broker":"f9f13036.e28b58","x":150,"y":380,"wires":[["63cb210e.f452c8","7c7d03a3.90e40c"]]},{"id":"7386cd17.7f5bfc","type":"debug","z":"5ee7c7ea.9c5108","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":990,"y":220,"wires":[]},{"id":"63cb210e.f452c8","type":"filter","z":"5ee7c7ea.9c5108","name":"Filter Scenes","property":"payload.Type","propertyType":"msg","asArray":false,"itemProperty":"","itemPropertyType":"item","rules":[{"t":"eq","v":"Scene","vt":"str","output":1}],"checkall":"true","outputs":1,"x":350,"y":260,"wires":[["d4def901.bafdc"]]},{"id":"d4def901.bafdc","type":"filter","z":"5ee7c7ea.9c5108","name":"Filter IDX","property":"payload.idx","propertyType":"msg","asArray":false,"itemProperty":"","itemPropertyType":"item","rules":[{"t":"eq","v":"1","vt":"num","output":1},{"t":"eq","v":"2","vt":"num","output":2}],"checkall":"true","outputs":2,"x":541,"y":260,"wires":[["54d20946.938c9"],["81891ebc.84fb1"]]},{"id":"341b4bbe.187a74","type":"debug","z":"5ee7c7ea.9c5108","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":990,"y":320,"wires":[]},{"id":"54d20946.938c9","type":"function","z":"5ee7c7ea.9c5108","name":"Pattern Eco","func":"msg.payload = [1797,2312,2569,2313,1800,1029,259,257,513,1283];\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":734,"y":220,"wires":[["7a667655.2c06f","7386cd17.7f5bfc"]]},{"id":"6f4a87b6.8cf498","type":"comment","z":"5ee7c7ea.9c5108","name":"Eco Wave ECO","info":"","x":744,"y":180,"wires":[]},{"id":"81891ebc.84fb1","type":"function","z":"5ee7c7ea.9c5108","name":"Pattern Comfort","func":"msg.payload = [2569,3340,3854,3342,2572,1801,773,514,1027,2054];\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":744,"y":300,"wires":[["7a667655.2c06f","341b4bbe.187a74"]]},{"id":"e5d02c4.bb069d","type":"comment","z":"5ee7c7ea.9c5108","name":"Eco Wave COMFORT","info":"","x":760,"y":260,"wires":[]},{"id":"7a667655.2c06f","type":"modbus-write","z":"5ee7c7ea.9c5108","name":"","showStatusActivities":false,"showErrors":false,"unitid":"","dataType":"MHoldingRegisters","adr":"40421","quantity":"10","server":"f8bdbf46.ef61f8","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1000,"y":260,"wires":[[],[]]},{"id":"a97f93cf.56dfe8","type":"debug","z":"5ee7c7ea.9c5108","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1010,"y":560,"wires":[]},{"id":"7c7d03a3.90e40c","type":"filter","z":"5ee7c7ea.9c5108","name":"Filter Wave Interval","property":"payload.idx","propertyType":"msg","asArray":false,"itemProperty":"","itemPropertyType":"item","rules":[{"t":"eq","v":"29","vt":"num","output":1}],"checkall":"true","outputs":1,"x":510,"y":500,"wires":[["46ab89e9.323aa"]]},{"id":"46ab89e9.323aa","type":"function","z":"5ee7c7ea.9c5108","name":"Calculate Wave Interval","func":"msg.payload = parseInt((msg.payload.svalue1/4) + 5);\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":770,"y":500,"wires":[["dc12f4f.75c6708","a97f93cf.56dfe8"]]},{"id":"dc12f4f.75c6708","type":"modbus-write","z":"5ee7c7ea.9c5108","name":"","showStatusActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"40420","quantity":"1","server":"f8bdbf46.ef61f8","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1020,"y":500,"wires":[[],[]]},{"id":"da0df2d2.9d727","type":"comment","z":"5ee7c7ea.9c5108","name":"Modbus Write Wave pattern 40421","info":"","x":1060,"y":180,"wires":[]},{"id":"8f9facd5.417488","type":"comment","z":"5ee7c7ea.9c5108","name":"Modbus Write Wave interval 40420","info":"","x":960,"y":440,"wires":[]},{"id":"4e03f46e.252a24","type":"link in","z":"5ee7c7ea.9c5108","name":"From Wave Eco","links":["ff8f8651.272a78"],"x":575,"y":220,"wires":[["54d20946.938c9"]]},{"id":"2939c8f6.ad1c08","type":"inject","z":"5ee7c7ea.9c5108","name":"Inject Flame Height 1-15","props":[{"p":"payload.flame1","v":"1","vt":"num"},{"p":"payload.flame2","v":"1","vt":"num"},{"p":"payload.flame3","v":"1","vt":"num"},{"p":"payload.flame4","v":"1","vt":"num"},{"p":"payload.flame5","v":"1","vt":"num"},{"p":"payload.flame6","v":"1","vt":"num"},{"p":"payload.flame7","v":"1","vt":"num"},{"p":"payload.flame8","v":"1","vt":"num"},{"p":"payload.flame9","v":"1","vt":"num"},{"p":"payload.flame10","v":"1","vt":"num"},{"p":"payload.flame11","v":"1","vt":"num"},{"p":"payload.flame12","v":"1","vt":"num"},{"p":"payload.flame13","v":"1","vt":"num"},{"p":"payload.flame14","v":"1","vt":"num"},{"p":"payload.flame15","v":"1","vt":"num"},{"p":"payload.flame16","v":"1","vt":"num"},{"p":"payload.flame17","v":"1","vt":"num"},{"p":"payload.flame18","v":"1","vt":"num"},{"p":"payload.flame19","v":"1","vt":"num"},{"p":"payload.flame20","v":"1","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"str","x":490,"y":360,"wires":[["af0c8e52.4aa0e8"]]},{"id":"af0c8e52.4aa0e8","type":"function","z":"5ee7c7ea.9c5108","name":"Custom pattern","func":"var v0 = (msg.payload.flame1) + (msg.payload.flame2<<8);\nvar v1 = (msg.payload.flame3) + (msg.payload.flame4<<8);\nvar v2 = (msg.payload.flame5) + (msg.payload.flame6<<8);\nvar v3 = (msg.payload.flame7) + (msg.payload.flame8<<8);\nvar v4 = (msg.payload.flame9) + (msg.payload.flame10<<8);\nvar v5 = (msg.payload.flame11) + (msg.payload.flame12<<8);\nvar v6 = (msg.payload.flame13) + (msg.payload.flame14<<8);\nvar v7 = (msg.payload.flame15) + (msg.payload.flame16<<8);\nvar v8 = (msg.payload.flame17) + (msg.payload.flame18<<8);\nvar v9 = (msg.payload.flame19) + (msg.payload.flame20<<8);\n\nmsg.payload = [v0,v1,v2,v3,v4,v5,v6,v7,v8,v9];\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":740,"y":360,"wires":[["f7691aee.6292a8","7a667655.2c06f"]]},{"id":"f7691aee.6292a8","type":"debug","z":"5ee7c7ea.9c5108","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":990,"y":360,"wires":[]},{"id":"4d84491d.677488","type":"link in","z":"5ee7c7ea.9c5108","name":"From Wave Comfort","links":["62ad8605.bd5128"],"x":575,"y":300,"wires":[["81891ebc.84fb1"]]},{"id":"f9f13036.e28b58","type":"mqtt-broker","name":"localhost","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"f8bdbf46.ef61f8","type":"modbus-client","name":"Simulator","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.10.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":2,"commandDelay":1,"clientTimeout":1000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true}]
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hi all,
Google Assistant
This post is the third part of the flow description for the DRU Burner and describes the interaction with Google Home (Assistant).
With this part you will be able to control the Dru Burner with your voice. As not all Dru Burners has the same functionality, the principle is described and users can extend its functionality, dependent on the functionality of the Burner.
This part is programmed in a separate tab in Node Red.
Nora
As the integration with the Google Assistant will use "Nora", you should first install "Nora" and take care that this is functioning correctly.
See for details: viewtopic.php?f=69&t=27588&hilit=Nora
Other links: https://flows.nodered.org/node/node-red-contrib-nora and
https://notenoughtech.com/home-automati ... n-nodered/
Domoticz switches
You should have probably some switches in Domoticz, which are used to control the Dru Burner.
As an example support for the switch "Main Burner" and for the level (Dimmer) "Flame Height" has been created.
If you want to implement more switches or dimmers, it is an easy task to copy/paste the required nodes.
Some switches might not be recommended, to use "Voice Control", such as "Fireplace reset".
Beside the switches and dimmers also 2 "Scenes" has been implemented, for "Wave Eco" and "Wave Comfort".
The complete flow, including "Debug" nodes and "Inject" nodes, in order to be able to test the functionality, without being connected to Google Home, is shown below. If everything functions as it should be, the "Debug" and "Inject" nodes may be removed.
From the left MQTT input node, you send the messages to a "Filter" node, with will filter the messages between an "On/Off" Switch type or a "Dimmer" Switch type. In the upper stream you send the filtered messages to a "Function" node, which will convert some payloads and make them suitable for the "Nora" node. In the Switch node, marked "Switch Topics", you split the various On/Of buttons to different "Nora" switches. Currently we use only one switch "Dru Main Burner". If desired you can expand the "Switch" node and control multiple "Nora" nodes.
The "Dru Main Burner" is represented by a Google Home switch node.
The output of the "Nora" node is connected to a "Function" node. This node converts the "true" and "false", received from Google Home to values, suitable to control the Dru Burner and synchronizes the Domoticz Switch. This "Function" node has 2 outputs, the upper one is used to send the correct message to the Burner and the lower one controls the Domoticz switch. The use of two outputs avoids configuring "Prevent loop" for MQTT in Domoticz.
In the lower stream you send the filtered messages for a "Dimmer" device to a "Function" node, which will convert the payloads and make them suitable for the "Nora" node. In the lower Switch node, marked "Switch Topics", you split the various sliders to different "Nora" "lights". Currently we use only one "dimmer" "Flame Height". If desired you can expand the "Switch" node and control multiple "Nora" nodes.
The "Flame Height" is represented by a Google Home light node.
The output of the "Nora" node is connected to a "Function" node. This node converts the "true" and "false" and value, received from Google Home to values, suitable to control the Flame Height and synchronizes the Domoticz slider. This "Function" node has 2 outputs, the upper one is used to send the correct message to the Burner and the lower one controls the Domoticz slider. The use of two outputs avoids configuring "Prevent loop" for MQTT in Domoticz.
Last we will find two "Scenes" Both functions identical, but for another "Wave pattern".
The "Nora" node represents a Google Home scene. The upper output simply send the value "true" and triggers the "Wave" pattern, while the lower synchronizes the status with the Domoticz Scene switch.
The various "Inject" nodes simulate the output of the "Nora" nodes. If testing has been finished, these can be removed.
Please find below the complete flow:
This post concludes a series of 3 posts, where a solution for the control by Domoticz of a Dru Burner has been described, including voice control by Google Home.
I'm open for comments, suggestions, improvements and other ideas. However I do not own a Dru Burner and so I'm unable to carry out real tests.
Everything has been tested against a Modbus simulator (ModbusPal under Linux).
Real live tests has been carried out by the user @heureekma. Without his help and will to test everything this project would not have been possible.
Many things still require more and extensive life testing.
Best regards.
Google Assistant
This post is the third part of the flow description for the DRU Burner and describes the interaction with Google Home (Assistant).
With this part you will be able to control the Dru Burner with your voice. As not all Dru Burners has the same functionality, the principle is described and users can extend its functionality, dependent on the functionality of the Burner.
This part is programmed in a separate tab in Node Red.
Nora
As the integration with the Google Assistant will use "Nora", you should first install "Nora" and take care that this is functioning correctly.
See for details: viewtopic.php?f=69&t=27588&hilit=Nora
Other links: https://flows.nodered.org/node/node-red-contrib-nora and
https://notenoughtech.com/home-automati ... n-nodered/
Domoticz switches
You should have probably some switches in Domoticz, which are used to control the Dru Burner.
As an example support for the switch "Main Burner" and for the level (Dimmer) "Flame Height" has been created.
If you want to implement more switches or dimmers, it is an easy task to copy/paste the required nodes.
Some switches might not be recommended, to use "Voice Control", such as "Fireplace reset".
Beside the switches and dimmers also 2 "Scenes" has been implemented, for "Wave Eco" and "Wave Comfort".
The complete flow, including "Debug" nodes and "Inject" nodes, in order to be able to test the functionality, without being connected to Google Home, is shown below. If everything functions as it should be, the "Debug" and "Inject" nodes may be removed.
From the left MQTT input node, you send the messages to a "Filter" node, with will filter the messages between an "On/Off" Switch type or a "Dimmer" Switch type. In the upper stream you send the filtered messages to a "Function" node, which will convert some payloads and make them suitable for the "Nora" node. In the Switch node, marked "Switch Topics", you split the various On/Of buttons to different "Nora" switches. Currently we use only one switch "Dru Main Burner". If desired you can expand the "Switch" node and control multiple "Nora" nodes.
The "Dru Main Burner" is represented by a Google Home switch node.
The output of the "Nora" node is connected to a "Function" node. This node converts the "true" and "false", received from Google Home to values, suitable to control the Dru Burner and synchronizes the Domoticz Switch. This "Function" node has 2 outputs, the upper one is used to send the correct message to the Burner and the lower one controls the Domoticz switch. The use of two outputs avoids configuring "Prevent loop" for MQTT in Domoticz.
In the lower stream you send the filtered messages for a "Dimmer" device to a "Function" node, which will convert the payloads and make them suitable for the "Nora" node. In the lower Switch node, marked "Switch Topics", you split the various sliders to different "Nora" "lights". Currently we use only one "dimmer" "Flame Height". If desired you can expand the "Switch" node and control multiple "Nora" nodes.
The "Flame Height" is represented by a Google Home light node.
The output of the "Nora" node is connected to a "Function" node. This node converts the "true" and "false" and value, received from Google Home to values, suitable to control the Flame Height and synchronizes the Domoticz slider. This "Function" node has 2 outputs, the upper one is used to send the correct message to the Burner and the lower one controls the Domoticz slider. The use of two outputs avoids configuring "Prevent loop" for MQTT in Domoticz.
Last we will find two "Scenes" Both functions identical, but for another "Wave pattern".
The "Nora" node represents a Google Home scene. The upper output simply send the value "true" and triggers the "Wave" pattern, while the lower synchronizes the status with the Domoticz Scene switch.
The various "Inject" nodes simulate the output of the "Nora" nodes. If testing has been finished, these can be removed.
Please find below the complete flow:
Code: Select all
[{"id":"2fab98.b88a8468","type":"tab","label":"Dru Google Home","disabled":false,"info":""},{"id":"19406f9f.060778","type":"mqtt in","z":"2fab98.b88a8468","name":"Domoticz Out","topic":"domoticz/out","qos":"2","datatype":"json","broker":"f9f13036.e28b58","x":110,"y":260,"wires":[["fc09fd43.f54fd8"]]},{"id":"4784f6c0.b2b0b8","type":"mqtt out","z":"2fab98.b88a8468","name":"Domoticz In","topic":"domoticz/in","qos":"2","retain":"false","broker":"f9f13036.e28b58","x":1470,"y":200,"wires":[]},{"id":"fc09fd43.f54fd8","type":"filter","z":"2fab98.b88a8468","name":"Filter Switch","property":"payload.switchType","propertyType":"msg","asArray":false,"itemProperty":"","itemPropertyType":"item","rules":[{"t":"eq","v":"On/Off","vt":"str","output":1},{"t":"eq","v":"Dimmer","vt":"str","output":2}],"checkall":"true","outputs":2,"x":312,"y":260,"wires":[["54ceca03.8fa864"],["3f76af95.31523"]]},{"id":"54ceca03.8fa864","type":"function","z":"2fab98.b88a8468","name":"Function In On/Off","func":"msg.topic = msg.payload.idx\nif (msg.payload.nvalue === 1)\n{\n msg.payload = true\n}\nelse if (msg.payload.nvalue === 0)\n{\n msg.payload = false\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":532,"y":177,"wires":[["3928c435.f18ccc"]]},{"id":"3928c435.f18ccc","type":"switch","z":"2fab98.b88a8468","name":"Switch Topics","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"17","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":762,"y":177,"wires":[["586d988c.5839a"]]},{"id":"bdfbc600.62299","type":"function","z":"2fab98.b88a8468","name":"Function Out On/Off","func":"var msg1 = {};\nvar msg2 = {};\nvar idx = parseInt(msg.topic);\nif ( msg.payload === true )\n{\n msg1.payload = { \"nvalue\": 1, \"idx\": idx};\n msg2.payload = { \"command\" : \"switchlight\", \"idx\": idx, \"switchcmd\": \"On\" };\n}\nelse if ( msg.payload === false )\n{\n msg1.payload = { \"nvalue\": 0, \"idx\": idx}; \n msg2.payload = { \"command\" : \"switchlight\", \"idx\": idx, \"switchcmd\": \"Off\" };\n}\nreturn [msg1,msg2]","outputs":2,"noerr":0,"initialize":"","finalize":"","x":1240,"y":177,"wires":[["5b0023b8.5845fc","979eea0b.28cb8"],["4784f6c0.b2b0b8","3bc2b228.a1c54e"]]},{"id":"586d988c.5839a","type":"nora-switch","z":"2fab98.b88a8468","devicename":"Gashaard","roomhint":"Woonkamer","name":"Dru Main Burner","passthru":false,"nora":"6f52ea33.833a2c","topic":"17","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":990,"y":177,"wires":[["bdfbc600.62299"]]},{"id":"5b0023b8.5845fc","type":"link out","z":"2fab98.b88a8468","name":"To Dru Ignition","links":["bdd14a.a06c56b8"],"x":1415,"y":157,"wires":[]},{"id":"2384097d.0b432e","type":"nora-light","z":"2fab98.b88a8468","devicename":"Vlamhoogte","lightcolor":false,"brightnesscontrol":true,"turnonwhenbrightnesschanges":false,"passthru":false,"statepayload":true,"brightnessoverride":"","roomhint":"Woonkamer","name":"Flame Height","nora":"6f52ea33.833a2c","topic":"26","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":980,"y":340,"wires":[["c8efea06.6c1ef8"]]},{"id":"604f760.5f2ed8c","type":"switch","z":"2fab98.b88a8468","name":"Switch Topics","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"26","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":760,"y":340,"wires":[["2384097d.0b432e"]]},{"id":"3f76af95.31523","type":"function","z":"2fab98.b88a8468","name":"Function Level","func":"msg.topic = msg.payload.idx;\n\nif (msg.payload.nvalue !== 0) {\n msg.payload = {\n on : true,\n brightness : msg.payload.Level\n }\n}\n\nelse if (msg.payload.nvalue === 0) {\n msg.payload = {\n on : false,\n brightness : msg.payload.Level\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":520,"y":340,"wires":[["604f760.5f2ed8c"]]},{"id":"c8efea06.6c1ef8","type":"function","z":"2fab98.b88a8468","name":"Function Flame Height","func":"var msg1 = {};\nvar msg2 = {};\nvar idx = parseInt(msg.topic);\nif ( msg.payload.on === true )\n{\n msg1.payload = { \"nvalue\": 1, \"idx\": idx, \"svalue1\": msg.payload.brightness};\n msg2.payload = { \"command\" : \"switchlight\", \"idx\" : idx, \"switchcmd\" : \"Set Level\", \"level\" : msg.payload.brightness };\n}\nelse if ( msg.payload.on === false )\n{\n msg1.payload = { \"nvalue\": 0, \"idx\": idx, \"svalue1\": msg.payload.brightness };\n msg2.payload = { \"command\" : \"switchlight\", \"idx\" : idx, \"switchcmd\": \"Off\" };\n}\nreturn [msg1,msg2]","outputs":2,"noerr":0,"initialize":"","finalize":"","x":1250,"y":340,"wires":[["4f77570a.2bd55","3a3ca1af.5efab6"],["486f2b7f.72f87c"]]},{"id":"4f77570a.2bd55","type":"link out","z":"2fab98.b88a8468","name":"To Dru Flame height","links":["12332a5e.1289ee"],"x":1415,"y":320,"wires":[]},{"id":"cd68b409.6426a8","type":"nora-scene","z":"2fab98.b88a8468","devicename":"Wave Eco","roomhint":"Woonkamer","scenereversible":true,"name":"Activate Wave Eco","nora":"79401d28.15b15c","topic":"wave","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":990,"y":440,"wires":[["176c8f26.b4d399"]]},{"id":"176c8f26.b4d399","type":"function","z":"2fab98.b88a8468","name":"Function Scene On","func":"msg1 = {};\nmsg2 = {};\n\nif ( msg.payload === true ) {\n msg1.payload = true;\n msg2.payload = { \"command\" : \"switchscene\" , \"idx\": 1, \"switchcmd\": \"On\" };\n return [msg1,msg2];\n}\n\nelse if ( msg.payload === false ) {\n msg2.payload = { \"command\" : \"switchlight\", \"idx\" : 23, \"switchcmd\": \"Off\" };\n return [null,msg2];\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","x":1230,"y":440,"wires":[["ff8f8651.272a78"],["c678df93.62d178"]]},{"id":"c678df93.62d178","type":"mqtt out","z":"2fab98.b88a8468","name":"Domoticz In","topic":"domoticz/in","qos":"2","retain":"false","broker":"f9f13036.e28b58","x":1470,"y":460,"wires":[]},{"id":"ff8f8651.272a78","type":"link out","z":"2fab98.b88a8468","name":"To Wave Eco","links":["4e03f46e.252a24"],"x":1415,"y":420,"wires":[]},{"id":"486f2b7f.72f87c","type":"mqtt out","z":"2fab98.b88a8468","name":"Domoticz In","topic":"domoticz/in","qos":"2","retain":"false","broker":"f9f13036.e28b58","x":1470,"y":360,"wires":[]},{"id":"8dc2f8ad.5b56f","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload"},{"p":"topic","v":"17","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":970,"y":60,"wires":[["bdfbc600.62299"]]},{"id":"db82d3da.fdb81","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload"},{"p":"topic","v":"17","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":970,"y":100,"wires":[["bdfbc600.62299"]]},{"id":"979eea0b.28cb8","type":"debug","z":"2fab98.b88a8468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1530,"y":160,"wires":[]},{"id":"3bc2b228.a1c54e","type":"debug","z":"2fab98.b88a8468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1470,"y":260,"wires":[]},{"id":"5ef11153.e38ae","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload.brightness","v":"75","vt":"str"},{"p":"topic","v":"26","vt":"num"},{"p":"payload.on","v":"true","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"str","x":970,"y":260,"wires":[["c8efea06.6c1ef8"]]},{"id":"3a3ca1af.5efab6","type":"debug","z":"2fab98.b88a8468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1530,"y":320,"wires":[]},{"id":"d4c5d50e.2763a","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload.brightness","v":"75","vt":"str"},{"p":"topic","v":"26","vt":"num"},{"p":"payload.on","v":"false","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"str","x":970,"y":300,"wires":[["c8efea06.6c1ef8"]]},{"id":"6db9dad2.86a0e4","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload"},{"p":"topic","v":"17","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":970,"y":500,"wires":[["176c8f26.b4d399"]]},{"id":"46e8accf.795364","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload"},{"p":"topic","v":"17","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":970,"y":540,"wires":[["176c8f26.b4d399"]]},{"id":"edebbd29.28e608","type":"nora-scene","z":"2fab98.b88a8468","devicename":"Wave Eco","roomhint":"Woonkamer","scenereversible":true,"name":"Activate Wave Comfort","nora":"79401d28.15b15c","topic":"wave","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1000,"y":620,"wires":[["e1a11ca8.342aa"]]},{"id":"e1a11ca8.342aa","type":"function","z":"2fab98.b88a8468","name":"Function Scene On","func":"msg1 = {};\nmsg2 = {};\n\nif ( msg.payload === true ) {\n msg1.payload = true;\n msg2.payload = { \"command\" : \"switchscene\" , \"idx\": 1, \"switchcmd\": \"On\" };\n return [msg1,msg2];\n}\n\nelse if ( msg.payload === false ) {\n msg2.payload = { \"command\" : \"switchlight\", \"idx\" : 23, \"switchcmd\": \"Off\" };\n return [null,msg2];\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","x":1230,"y":620,"wires":[["62ad8605.bd5128"],["6ce3291f.68f84"]]},{"id":"1f32186c.0afda8","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload"},{"p":"topic","v":"17","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":970,"y":680,"wires":[["e1a11ca8.342aa"]]},{"id":"ab22c91c.06f09","type":"inject","z":"2fab98.b88a8468","name":"","props":[{"p":"payload"},{"p":"topic","v":"17","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":970,"y":720,"wires":[["e1a11ca8.342aa"]]},{"id":"6ce3291f.68f84","type":"mqtt out","z":"2fab98.b88a8468","name":"Domoticz In","topic":"domoticz/in","qos":"2","retain":"false","broker":"f9f13036.e28b58","x":1470,"y":640,"wires":[]},{"id":"62ad8605.bd5128","type":"link out","z":"2fab98.b88a8468","name":"To Wave Comfort","links":["4d84491d.677488"],"x":1415,"y":600,"wires":[]},{"id":"f9f13036.e28b58","type":"mqtt-broker","name":"localhost","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"6f52ea33.833a2c","type":"nora-config","d":true,"name":"Nora Config","group":"Mendelssohn92","notify":false},{"id":"79401d28.15b15c","type":"nora-config","name":"nora config","group":"Mendelssohn92","notify":false}]
I'm open for comments, suggestions, improvements and other ideas. However I do not own a Dru Burner and so I'm unable to carry out real tests.
Everything has been tested against a Modbus simulator (ModbusPal under Linux).
Real live tests has been carried out by the user @heureekma. Without his help and will to test everything this project would not have been possible.
Many things still require more and extensive life testing.
Best regards.
-
- Posts: 90
- Joined: Saturday 22 August 2020 13:36
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
A new Dru fireplace has been installed yesterday and excellent to see that the Domoticz community has recently been working on the integration. Thanks FireWizard for your work and the instructions. I've followed them. It is almost working, but it seems that my Domoticz devices are not communicating properly with Node-RED.
The status of the Domoticz In and Out nodes state 'connected': But the devices in Domoticz are not updated: I have changed all the IDX numbers which I found in the Function nodes and the Filter button node to my IDX numbers, see this one for example:
Do you have any idea what goes wrong in my situation?
The status of the Domoticz In and Out nodes state 'connected': But the devices in Domoticz are not updated: I have changed all the IDX numbers which I found in the Function nodes and the Filter button node to my IDX numbers, see this one for example:
Do you have any idea what goes wrong in my situation?
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hello @riko,
I think that you have to check the IDX numbers carefully. See the first post of the description under preparation of Domoticz.
Here you will see the IDX numbers used in the flow.
Secondly, you have to check the Functionality of your Burner, with the functionality in the flow.
Not all Burners has all the functions, e.g. a second burner or a pilot.
So it might be possible that particular functions will not be available.
I also see that the Room Temperature and Temperature Control Setpoint nodes are disabled.
If you have them in your Burner enable them, by clicking Enabled (In the left bottom corner you will find a toggle button to enable/disable the node)
Do that for all nodes which are available and you want to use, if they are disabled.
I note also that the Main Burner has been updated today at 11:42:12h. So something should work.
Try first to enable all nodes (with the dotted line) and lets check what is working and what not.
Regards
I think that you have to check the IDX numbers carefully. See the first post of the description under preparation of Domoticz.
Here you will see the IDX numbers used in the flow.
Secondly, you have to check the Functionality of your Burner, with the functionality in the flow.
Not all Burners has all the functions, e.g. a second burner or a pilot.
So it might be possible that particular functions will not be available.
I also see that the Room Temperature and Temperature Control Setpoint nodes are disabled.
If you have them in your Burner enable them, by clicking Enabled (In the left bottom corner you will find a toggle button to enable/disable the node)
Do that for all nodes which are available and you want to use, if they are disabled.
I note also that the Main Burner has been updated today at 11:42:12h. So something should work.
Try first to enable all nodes (with the dotted line) and lets check what is working and what not.
Regards
-
- Posts: 90
- Joined: Saturday 22 August 2020 13:36
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
That's quick! Unfortunately no success yet. See my reaction below:
I have added a debug node to check what is received: It looks that the data from DRU is correctly received, and the IDX that it should be sent to is correct as well. Do you know a way how I can test the connectivity between Node-RED and Domoticz. Although is shows 'connected', maybe there is something wrong with it. Might it be possible to create a test node that is just updating a device, for instance on a certain moment?
Yes I've noticed your IDX numbering, but I am not able to use the same numbers for the device. The numbers you use are already occupied and I cannot change them. Therefore I went through the Node-RED script and changed all the numbers after "idx" and the ones mentioned in 'Filter Buttons'. I double checked and that should be correct.FireWizard wrote: ↑Wednesday 10 March 2021 14:38 I think that you have to check the IDX numbers carefully. See the first post of the description under preparation of Domoticz.
Here you will see the IDX numbers used in the flow.
For the sake of testing, I've now enabled all nodes. But no difference unfortunatelyFireWizard wrote: ↑Wednesday 10 March 2021 14:38 Try first to enable all nodes (with the dotted line) and lets check what is working and what not.
Sharpe eye. Unfortunately that we myself clicking on the device in Domoticz earlier today. No updates yet from Node-REDFireWizard wrote: ↑Wednesday 10 March 2021 14:38 I note also that the Main Burner has been updated today at 11:42:12h. So something should work.
I have added a debug node to check what is received: It looks that the data from DRU is correctly received, and the IDX that it should be sent to is correct as well. Do you know a way how I can test the connectivity between Node-RED and Domoticz. Although is shows 'connected', maybe there is something wrong with it. Might it be possible to create a test node that is just updating a device, for instance on a certain moment?
-
- Posts: 90
- Joined: Saturday 22 August 2020 13:36
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
It's solved. I forgot to add the 'MQTT client gateway with LAN interface' on the hardware page. I think it was giving the connected status because there was already another connectivity with MQTT (for Zigbee devices)
-
- Posts: 90
- Joined: Saturday 22 August 2020 13:36
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
As I have a second burner, I've decommented that part and actually found a little bug in the code.
Please replace
into
This appears in various locations in the code, for instance
Please replace
Code: Select all
msg.payload_status
Code: Select all
msg.payload.modbus_status
Code: Select all
if (msg.payload.modbus_status[3] === true) {
msg3.payload = { "command" : "switchlight" , "idx" : 262 , "switchcmd" : "On" }
} else if (msg.payload_status[3] === false) {
msg3.payload = { "command" : "switchlight" , "idx" : 262 , "switchcmd" : "Off" }
}
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hello @riko
If you need more info, just ask.
Regards
Thanks for reporting. I didn't get any remarks from other users, bit I will look to it.actually found a little bug in the code.
If you need more info, just ask.
Regards
-
- Posts: 90
- Joined: Saturday 22 August 2020 13:36
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
I'm still busy fine-tuning the script for my Dru Passo Wave fireplace. I have two questions at this moment, does somebody know this?
I will post my Node-RED flow later on when I've finalized it btw
- Is it possible to receive back the current flame level value. In register 40201 you can set the flame height. And in register 40203 (status) I see something about flame height but that it cannot be changed. Not clear what they mean
- Does somebody know how the OEM bytes work for the Wave pattern (40421-40430). I don't get why high values like 1797 and 1800 are used. What is the max and what is the min and how are they linked to the 'normal flame levels 1-15?
I will post my Node-RED flow later on when I've finalized it btw
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hello @riko
First of all I do not own a Dru burner, so any change in the flow has to be tested by at least one, but preferable more users.
These flows has been developed mainly by me, but in close corporation with @heureekma, as the owner of a DRU Burner, who has tested it all.
So I can change things, but these have to be tested by others.
To answer your questions.
In register 40203 you have Status information and one of them is bit 10 (xxxxx1xxxxxxxxxx Flame height cannot be changed by user at this
moment) I used this to block any data that has the intention to change the flame height. I'm not sure what is does, if one tries to change it, while this bit has been set and so it is not allowed. Read register 40201 is used for something else (LSB Assigned slave address / UID).
So I'm not aware of a Read register where you can read the flame height.
So in this case you will have:
Register MSB LSB
40421 Flame2 Flame1
40422 Flame4 Flame3
etc
40430 Flame20 Flame19
So you have twenty flames and each can have a value 0-15.
0-15 are 4 bits, so theoretically you can have 4 flames in a 16 bit register, however Dru puts the value of two flames in one (16 bit) Modbus register.
So an example:
Let us assume that you want to write the values of Flame 5 and Flame 6.
These values has to be written into Modbus register 40423, where Flame 5 is the LSB and Flame 6 is the MSB
You have to write the register in one cycle.
Suppose you write 1797 which means in binary notation: 0000011100000101 (See a converter: https://www.rapidtables.com/convert/num ... inary.html)
So Flame number 5 is the most right 8 bits (00000101), which means flame height 5.
And Flame number 6 is the most left 8 bits ( 00000111, which means flame height 7.
And so is 1800 flame height 8 and flame height 7.
The min is simple: both flames are 0 and that is binary also 0. Put two 0 in a 16 bit register and the result is ....0.
The max is of course in binary form 0000111100001111 and that is (use the converter) in decimal 3855.
As the flow is under different tabs, I think we can write them as global variables and put them in the Setup of a Function node. This node is run once as the flow is deployed. Something I will test.
I have not been able, yet, to look to the bug in the code. Will probably have time next week.
Regards
First of all I do not own a Dru burner, so any change in the flow has to be tested by at least one, but preferable more users.
These flows has been developed mainly by me, but in close corporation with @heureekma, as the owner of a DRU Burner, who has tested it all.
So I can change things, but these have to be tested by others.
To answer your questions.
Modbus Register 40201 is a "Write" register and you can write the flame height (0-100%) into it.Is it possible to receive back the current flame level value. In register 40201 you can set the flame height. And in register 40203 (status) I see something about flame height but that it cannot be changed. Not clear what they mean
In register 40203 you have Status information and one of them is bit 10 (xxxxx1xxxxxxxxxx Flame height cannot be changed by user at this
moment) I used this to block any data that has the intention to change the flame height. I'm not sure what is does, if one tries to change it, while this bit has been set and so it is not allowed. Read register 40201 is used for something else (LSB Assigned slave address / UID).
So I'm not aware of a Read register where you can read the flame height.
In the documentation you will find:Does somebody know how the OEM bytes work for the Wave pattern (40421-40430). I don't get why high values like 1797 and 1800 are used. What is the max and what is the min and how are they linked to the 'normal flame levels 1-15?
It are not the OEM bytes, but the format is similar to the OEM bytes.Wave pattern, values that can be used 1 – 15
20 values together make the pattern of the wave.(layout as OEM
bytes)
Note: This settings are only stored once a day in none volatile memory,
therefor the setting might be lost after a (rare) power interruption
So in this case you will have:
Register MSB LSB
40421 Flame2 Flame1
40422 Flame4 Flame3
etc
40430 Flame20 Flame19
So you have twenty flames and each can have a value 0-15.
0-15 are 4 bits, so theoretically you can have 4 flames in a 16 bit register, however Dru puts the value of two flames in one (16 bit) Modbus register.
So an example:
Let us assume that you want to write the values of Flame 5 and Flame 6.
These values has to be written into Modbus register 40423, where Flame 5 is the LSB and Flame 6 is the MSB
You have to write the register in one cycle.
Suppose you write 1797 which means in binary notation: 0000011100000101 (See a converter: https://www.rapidtables.com/convert/num ... inary.html)
So Flame number 5 is the most right 8 bits (00000101), which means flame height 5.
And Flame number 6 is the most left 8 bits ( 00000111, which means flame height 7.
And so is 1800 flame height 8 and flame height 7.
The min is simple: both flames are 0 and that is binary also 0. Put two 0 in a 16 bit register and the result is ....0.
The max is of course in binary form 0000111100001111 and that is (use the converter) in decimal 3855.
That is very well possible, but I started this flow (and it took all together about 1.5 month with all testing and Google Home integration) in a step by step process. So the Domoticz IDX came in the various parts.And then one suggestion for improvement of the script. Might it be possible to use parameters to configure the IDX numbers? As each implementation will have different numbers. I have found them all in the flow and changed them. But it is a bit hard for a beginner I guess.
As the flow is under different tabs, I think we can write them as global variables and put them in the Setup of a Function node. This node is run once as the flow is deployed. Something I will test.
I have not been able, yet, to look to the bug in the code. Will probably have time next week.
Regards
Last edited by FireWizard on Wednesday 29 December 2021 18:07, edited 2 times in total.
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
hello @riko
You wrote March 10, 20:45
I haven't that high IDX number of 262 in my flows.
Can you indicate the origin of your flow and the nodes it concerns?
That would help me.
Regards
You wrote March 10, 20:45
I have been searching for this "bug", but I cannot find it.As I have a second burner, I've decommented that part and actually found a little bug in the code.
Please replace
Code: Select all
msg.payload_status
into
Code: Select all
msg.payload.modbus_status
This appears in various locations in the code, for instance
Code: Select all
if (msg.payload.modbus_status[3] === true) {
msg3.payload = { "command" : "switchlight" , "idx" : 262 , "switchcmd" : "On" }
} else if (msg.payload_status[3] === false) {
msg3.payload = { "command" : "switchlight" , "idx" : 262 , "switchcmd" : "Off" }
}
I haven't that high IDX number of 262 in my flows.
Can you indicate the origin of your flow and the nodes it concerns?
That would help me.
Regards
- FireWizard
- Posts: 1887
- Joined: Tuesday 25 December 2018 12:11
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Voorthuizen (NL)
- Contact:
Re: honeywell brdg-03em01 with dru fireplace
Hello @riko,
You came up with the suggestion:
I tested it with an example in another application.
You can find that at:viewtopic.php?f=38&t=26549&p=271164#p271164
See the post of: 16 Mar 2021, 22:59
What is your opinion?
Regards
You came up with the suggestion:
I implemented a Configuration node, in order to configure the Domoticz IDX's outside the main flow.And then one suggestion for improvement of the script. Might it be possible to use parameters to configure the IDX numbers? As each implementation will have different numbers. I have found them all in the flow and changed them. But it is a bit hard for a beginner I quess.
I tested it with an example in another application.
You can find that at:viewtopic.php?f=38&t=26549&p=271164#p271164
See the post of: 16 Mar 2021, 22:59
What is your idea? I think it is a bit of overkill if you do not have that many IDX's to send to Domoticz. But I believe it is much simpler in the case you have a lot of IDX's.The right "Configuration" node is used to configure the Domoticz IDX numbers.
All 39 possible sensors are pre-configured. If someone want to reduce the number of received sensors, that will be sent to Domoticz, you can simple delete the environment variable. Delete also the corresponding block of code in the last "Function" node.
The Confiuration node sets an environment variable composed by IDX and the topic (so example: IDXaverageFuelConsumption)
The topic is set in the last Function node that parses the array, received from Volvo.
What is your opinion?
Regards
Who is online
Users browsing this forum: No registered users and 1 guest