Hardware components | ||||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
Software apps and online services | ||||||
![]() |
| |||||
|
Climate control is crucial when fermenting beer. While it is not too expensive to get an Inkbird, one of the main disadvantages is Wi-Fi. The garden house where my fermentation fridge is located does not have a stable Wi-Fi connection. Extending my Zigbee network was much easier.
Setting up the hardware takes less than 15 minutes. Create an extension cord with a lamp socket on one end. Screw the bulb into it and place it in the fridge. Plug both smart plugs into the electricity. One is for the fridge, and the other is for the bulb.
As you know (for the younger generation), old lighbulbs transmitted more heat then light. 50-100W is sufficient to heat an isolated fridge.
Ideally, the temperature sensor should be placed in the fermenting wort. I built the GravityFloat for this purpose. In addition to measuring the specific gravity (SG), it also contains a Zigbee temperature sensor.
Programming:The logic is built in Node-RED, with Zigbee2MQTT for communication.
First, you need a setup that includes:
- Setpoint: the desired temperature
- Cooling activation temperature (above setpoint)
- Cooling deactivation temperature (below setpoint)
- Heating activation temperature (below setpoint)
- Heating deactivation temperature (above setpoint)
It is useful to add an extra functionality to completely turn off one or both of the smart plugs.
The temperature sensor regularly publishes data over MQTT. The value is compared against the setpoint and the hysteresis. Node-RED then sends commands to the smart plugs (on/off).
Finally, the data can be stored in a database.
The system is not PID controlled. Nonetheless, it is not advisable to frequently start and stop a fridge. With a few tweaks during the first couple of days, you can easily find the right values to only deviate a few tenths of a degree Celsius from the setpoint.
Everything can be monitored and controlled from the Node-RED dashboard.
Node-RED flow SensiBrewFridge
JSONAdjust MQTT topic and SQL statements to your environment.
Past the below code in Node-RED as a flow.
[
{
"id": "ad7a6251289ab8de",
"type": "tab",
"label": "sensibrew frigo",
"disabled": false,
"info": "",
"env": []
},
{
"id": "aff77ff8c09b12af",
"type": "group",
"z": "ad7a6251289ab8de",
"name": "sliders",
"style": {
"label": true
},
"nodes": [
"d624e88a448ed3a8",
"c3e15463d30de163",
"c46154a834701088",
"7e3ae0846c9d406c",
"af385b0133c05d3d",
"c4bd81d975f6dc9e",
"19eb435bd1095164",
"6cd942e3d7d1fbb8",
"a59dc6bf7da69ed7",
"d8a3f683f762e15a",
"a2b011a916adf849",
"132e9a911c83a54a",
"e4e9c5ff2593c91d",
"9e5745286f112ad1"
],
"x": 74,
"y": 279,
"w": 1152,
"h": 222
},
{
"id": "0d8462514f658104",
"type": "group",
"z": "ad7a6251289ab8de",
"name": "controls",
"style": {
"label": true
},
"nodes": [
"51cf4e394f2072e8",
"5e6966e87ad5be1c",
"6047f767c957c559",
"320fce6a01a9ce0f",
"46128974df2925f0",
"ce107242e9c84b05",
"c1ed3ddbf784ed92",
"e5eab0079bba0679",
"bcbf20a4491ddd09",
"d0997b83a4de4732",
"29bd707f01821137"
],
"x": 74,
"y": 79,
"w": 1392,
"h": 162
},
{
"id": "cc2504afcfb921ec",
"type": "group",
"z": "ad7a6251289ab8de",
"name": "allow cooling or heating",
"style": {
"label": true
},
"nodes": [
"3fd9fd4298f06b53",
"2f056722fc7e42c1",
"fda957b78c1e8d82",
"7ce15c41ce087706",
"c0a53322eee9e960",
"10520bb8ff53a047"
],
"x": 74,
"y": 779,
"w": 692,
"h": 122
},
{
"id": "e93edcb05d63ed7d",
"type": "group",
"z": "ad7a6251289ab8de",
"name": "settings",
"style": {
"label": true
},
"nodes": [
"6591730abb9a618e",
"025ec7107a2e1cfc",
"4ba144a9ed07ff82",
"4f356a714d254e33",
"f812afdd22269d75",
"24f92d8433e0a05b",
"a9435c9f215ef7a5",
"8891bc5ddf624ddc",
"c09d990a023b8f2e",
"b7ed9d9c78673b2d",
"6014139a5bcf56ff",
"4997aeb9da9caf02",
"6fa479fc3b95b70e",
"65bd07ccd0689003",
"e310b6e4c58765c9",
"2bdb065ed37c1200"
],
"x": 74,
"y": 519,
"w": 1092,
"h": 242
},
{
"id": "d624e88a448ed3a8",
"type": "mqtt in",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"topic": "zigbee2mqtt/lidl_smartplug_1",
"qos": "2",
"datatype": "json",
"broker": "a476b97.9de4d48",
"nl": false,
"rap": false,
"inputs": 0,
"x": 220,
"y": 420,
"wires": [
[
"c46154a834701088"
]
]
},
{
"id": "c3e15463d30de163",
"type": "ui_switch",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"label": "koeling",
"tooltip": "",
"group": "868ea87d6cd5a071",
"order": 2,
"width": "4",
"height": "1",
"passthru": false,
"decouple": "true",
"topic": "",
"topicType": "str",
"style": "",
"onvalue": "{\"state\" : \"ON\"}",
"onvalueType": "json",
"onicon": "",
"oncolor": "",
"offvalue": "{\"state\" : \"OFF\"}",
"offvalueType": "json",
"officon": "",
"offcolor": "",
"animate": false,
"x": 800,
"y": 420,
"wires": [
[
"af385b0133c05d3d"
]
]
},
{
"id": "c46154a834701088",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"func": "var x = msg.payload.state;\nglobal.set(\"frigo_ferment_koel_state\", msg.payload);\nif (x == \"ON\"){\n msg.payload = '{\"state\" : \"ON\"}';\n}\nelse if (x ==\"OFF\"){\n msg.payload = '{\"state\" : \"OFF\"}';\n}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 440,
"y": 420,
"wires": [
[
"7e3ae0846c9d406c"
]
]
},
{
"id": "7e3ae0846c9d406c",
"type": "json",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 610,
"y": 420,
"wires": [
[
"c3e15463d30de163",
"9e5745286f112ad1"
]
]
},
{
"id": "af385b0133c05d3d",
"type": "mqtt out",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"topic": "zigbee2mqtt/lidl_smartplug_1/set",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "a476b97.9de4d48",
"x": 1060,
"y": 420,
"wires": []
},
{
"id": "c4bd81d975f6dc9e",
"type": "mqtt out",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"topic": "zigbee2mqtt/lidl_smartplug_2/set",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "a476b97.9de4d48",
"x": 1060,
"y": 360,
"wires": []
},
{
"id": "19eb435bd1095164",
"type": "ui_switch",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"label": "verwarming",
"tooltip": "",
"group": "868ea87d6cd5a071",
"order": 3,
"width": "4",
"height": "1",
"passthru": false,
"decouple": "true",
"topic": "",
"topicType": "str",
"style": "",
"onvalue": "{\"state\" : \"ON\"}",
"onvalueType": "json",
"onicon": "",
"oncolor": "",
"offvalue": "{\"state\" : \"OFF\"}",
"offvalueType": "json",
"officon": "",
"offcolor": "",
"animate": false,
"x": 810,
"y": 360,
"wires": [
[
"c4bd81d975f6dc9e"
]
]
},
{
"id": "6cd942e3d7d1fbb8",
"type": "json",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 610,
"y": 360,
"wires": [
[
"19eb435bd1095164",
"e4e9c5ff2593c91d"
]
]
},
{
"id": "a59dc6bf7da69ed7",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"func": "var x = msg.payload.state;\nglobal.set(\"frigo_ferment_warm_state\", msg.payload);\nif (x == \"ON\"){\n msg.payload = '{\"state\" : \"ON\"}';\n}\nelse if (x ==\"OFF\"){\n msg.payload = '{\"state\" : \"OFF\"}';\n}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 440,
"y": 360,
"wires": [
[
"6cd942e3d7d1fbb8"
]
]
},
{
"id": "d8a3f683f762e15a",
"type": "mqtt in",
"z": "ad7a6251289ab8de",
"g": "aff77ff8c09b12af",
"name": "",
"topic": "zigbee2mqtt/lidl_smartplug_2",
"qos": "2",
"datatype": "json",
"broker": "a476b97.9de4d48",
"nl": false,
"rap": false,
"inputs": 0,
"x": 220,
"y": 360,
"wires": [
[
"a59dc6bf7da69ed7"
]
]
},
{
"id": "f812afdd22269d75",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 73",
"func": "global.set(\"frigo_ferment_hyst_boven_koel\", msg.payload);\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1070,
"y": 560,
"wires": [
[]
]
},
{
"id": "4f356a714d254e33",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 74",
"func": "global.set(\"frigo_ferment_hyst_onder_koel\", msg.payload);\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1070,
"y": 600,
"wires": [
[]
]
},
{
"id": "4ba144a9ed07ff82",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 75",
"func": "global.set(\"frigo_ferment_setpunt\", msg.payload);\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1070,
"y": 640,
"wires": [
[]
]
},
{
"id": "bcbf20a4491ddd09",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"name": "cool or heat ? ",
"func": "global.set(\"frigo_ferment_vat\", msg.payload);\nvar vat = msg.payload;\nvar setpunt = global.get(\"frigo_ferment_setpunt\");\nvar boven_koel = global.get(\"frigo_ferment_hyst_boven_koel\");\nvar onder_koel = global.get(\"frigo_ferment_hyst_onder_koel\");\nvar boven_warm = global.get(\"frigo_ferment_hyst_boven_warm\");\nvar onder_warm = global.get(\"frigo_ferment_hyst_onder_warm\");\nvar koel = global.get(\"frigo_ferment_koel_state\");\nvar warm = global.get(\"frigo_ferment_warm_state\");\nvar kamer = global.get(\"frigo_ferment_kamer\");\nvar status = global.get(\"frigo_ferment_status\")\n\nmsg.payload = \"niets...\";\n\n//start koelen\nif (status == \"uit\" && vat >= setpunt + boven_koel ){\n global.set(\"frigo_ferment_status\", \"koelen\");\n msg.frigo = { \"state\": \"ON\" };\n msg.verwarming = { \"state\": \"OFF\" };\n msg.payload = 1;\n}\n//blijf koelen\nelse if (status == \"koelen\" && vat > setpunt - onder_koel){\n global.set(\"frigo_ferment_status\", \"koelen\");\n msg.frigo = { \"state\": \"ON\" };\n msg.verwarming = { \"state\": \"OFF\" };\n msg.payload = 2\n}\n//stop koelen\nelse if (status == \"koelen\" && vat <= setpunt - onder_koel) {\n global.set(\"frigo_ferment_status\", \"uit\");\n msg.frigo = { \"state\": \"OFF\" };\n msg.verwarming = { \"state\": \"OFF\" };\n msg.payload = 3;\n}\n// start warmen\nelse if (status == \"uit\" && vat <= setpunt - onder_warm) {\n global.set(\"frigo_ferment_status\", \"verwarmen\");\n msg.frigo = { \"state\": \"OFF\" };\n msg.verwarming = { \"state\": \"ON\" };\n msg.payload = 4;\n}\n//blijf verwarmen\nelse if (status == \"verwarmen\" && vat < setpunt + boven_warm) {\n global.set(\"frigo_ferment_status\", \"verwarmen\");\n msg.frigo = { \"state\": \"OFF\" };\n msg.verwarming = { \"state\": \"ON\" };\n msg.payload = 5;\n}\n//stop warmen \nelse if (status == \"verwarmen\" && vat >= setpunt + boven_warm) {\n global.set(\"frigo_ferment_status\", \"uit\");\n msg.frigo = { \"state\": \"OFF\" };\n msg.verwarming = { \"state\": \"OFF\" };\n msg.payload = 6;\n}\nelse {\n global.set(\"frigo_ferment_status\", \"uit\");\n msg.frigo = { \"state\": \"OFF\" };\n msg.verwarming = { \"state\": \"OFF\" };\n msg.payload = 7;\n}\n\n\n\n\nmsg.topic = \"INSERT INTO frigoferment(vat, warm, koel) VALUES(\"+vat+\",'\"+ warm.state +\"', '\"+koel.state+\"')\";\nmsg.temp = Math.round(vat*10)/10;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 700,
"y": 160,
"wires": [
[
"6047f767c957c559",
"5e6966e87ad5be1c",
"51cf4e394f2072e8"
]
]
},
{
"id": "025ec7107a2e1cfc",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 78",
"func": "global.set(\"frigo_ferment_hyst_boven_warm\", msg.payload);\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1070,
"y": 680,
"wires": [
[]
]
},
{
"id": "6591730abb9a618e",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 79",
"func": "global.set(\"frigo_ferment_hyst_onder_warm\", msg.payload);\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1070,
"y": 720,
"wires": [
[]
]
},
{
"id": "6047f767c957c559",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"name": "function 80",
"func": "msg.payload = msg.frigo;\nmsg.state = msg.frigo.state;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 970,
"y": 120,
"wires": [
[
"320fce6a01a9ce0f"
]
]
},
{
"id": "e5eab0079bba0679",
"type": "mqtt out",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"name": "",
"topic": "cooling",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "a476b97.9de4d48",
"x": 1360,
"y": 120,
"wires": []
},
{
"id": "5e6966e87ad5be1c",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"name": "function 81",
"func": "msg.payload = msg.verwarming;\nmsg.state = msg.payload.state;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 970,
"y": 160,
"wires": [
[
"46128974df2925f0"
]
]
},
{
"id": "c1ed3ddbf784ed92",
"type": "mqtt out",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"name": "",
"topic": "heating",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "a476b97.9de4d48",
"x": 1360,
"y": 160,
"wires": []
},
{
"id": "ce107242e9c84b05",
"type": "mysql",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"mydb": "cb7380f5.93081",
"name": "",
"x": 1370,
"y": 200,
"wires": [
[]
]
},
{
"id": "24f92d8433e0a05b",
"type": "ui_text_input",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "",
"label": "koelen start (hyst)",
"tooltip": "",
"group": "ccb84829b92a2ca1",
"order": 14,
"width": 0,
"height": 0,
"passthru": false,
"mode": "number",
"delay": 300,
"topic": "topic",
"topicType": "msg",
"x": 830,
"y": 560,
"wires": [
[
"f812afdd22269d75"
]
]
},
{
"id": "a9435c9f215ef7a5",
"type": "ui_text_input",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "",
"label": "koelen stop (hys)",
"tooltip": "",
"group": "ccb84829b92a2ca1",
"order": 14,
"width": 0,
"height": 0,
"passthru": false,
"mode": "number",
"delay": 300,
"topic": "topic",
"topicType": "msg",
"x": 830,
"y": 600,
"wires": [
[
"4f356a714d254e33"
]
]
},
{
"id": "8891bc5ddf624ddc",
"type": "ui_text_input",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "",
"label": "setpunt",
"tooltip": "",
"group": "ccb84829b92a2ca1",
"order": 14,
"width": 0,
"height": 0,
"passthru": true,
"mode": "number",
"delay": 300,
"topic": "topic",
"topicType": "msg",
"x": 800,
"y": 640,
"wires": [
[
"4ba144a9ed07ff82"
]
]
},
{
"id": "c09d990a023b8f2e",
"type": "ui_text_input",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "",
"label": "verwarmen stop (hys)",
"tooltip": "",
"group": "ccb84829b92a2ca1",
"order": 14,
"width": 0,
"height": 0,
"passthru": true,
"mode": "number",
"delay": 300,
"topic": "topic",
"topicType": "msg",
"x": 840,
"y": 680,
"wires": [
[
"025ec7107a2e1cfc"
]
]
},
{
"id": "b7ed9d9c78673b2d",
"type": "ui_text_input",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "",
"label": "verwarmen start (hys)",
"tooltip": "",
"group": "ccb84829b92a2ca1",
"order": 14,
"width": 0,
"height": 0,
"passthru": true,
"mode": "number",
"delay": 300,
"topic": "topic",
"topicType": "msg",
"x": 840,
"y": 720,
"wires": [
[
"6591730abb9a618e"
]
]
},
{
"id": "e310b6e4c58765c9",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 83",
"func": "msg.payload = global.get(\"frigo_ferment_hyst_boven_koel\");\nreturn msg;\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 610,
"y": 560,
"wires": [
[
"24f92d8433e0a05b"
]
]
},
{
"id": "65bd07ccd0689003",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 84",
"func": "msg.payload = global.get(\"frigo_ferment_hyst_onder_koel\");\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 610,
"y": 600,
"wires": [
[
"a9435c9f215ef7a5"
]
]
},
{
"id": "6fa479fc3b95b70e",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 85",
"func": "msg.payload = global.get(\"frigo_ferment_setpunt\");\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 610,
"y": 640,
"wires": [
[
"8891bc5ddf624ddc"
]
]
},
{
"id": "4997aeb9da9caf02",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 86",
"func": "msg.payload = global.get(\"frigo_ferment_hyst_boven_warm\");\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 610,
"y": 680,
"wires": [
[
"c09d990a023b8f2e"
]
]
},
{
"id": "6014139a5bcf56ff",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "function 87",
"func": "msg.payload = global.get(\"frigo_ferment_hyst_onder_warm\");\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 610,
"y": 720,
"wires": [
[
"b7ed9d9c78673b2d"
]
]
},
{
"id": "2bdb065ed37c1200",
"type": "inject",
"z": "ad7a6251289ab8de",
"g": "e93edcb05d63ed7d",
"name": "startup",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 180,
"y": 640,
"wires": [
[
"e310b6e4c58765c9",
"65bd07ccd0689003",
"6fa479fc3b95b70e",
"4997aeb9da9caf02",
"6014139a5bcf56ff"
]
]
},
{
"id": "51cf4e394f2072e8",
"type": "delay",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "15",
"rateUnits": "minute",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"allowrate": false,
"outputs": 1,
"x": 980,
"y": 200,
"wires": [
[
"ce107242e9c84b05"
]
]
},
{
"id": "3fd9fd4298f06b53",
"type": "ui_switch",
"z": "ad7a6251289ab8de",
"g": "cc2504afcfb921ec",
"name": "",
"label": "koeling ",
"tooltip": "",
"group": "ccb84829b92a2ca1",
"order": 14,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 480,
"y": 820,
"wires": [
[
"2f056722fc7e42c1"
]
]
},
{
"id": "2f056722fc7e42c1",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "cc2504afcfb921ec",
"name": "function 104",
"func": "if (msg.payload == true){\n global.set(\"frigo_ferment_koeling\", msg.payload)\n}\nelse{\n global.set(\"frigo_ferment_koeling\", false)\n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 670,
"y": 820,
"wires": [
[]
]
},
{
"id": "fda957b78c1e8d82",
"type": "inject",
"z": "ad7a6251289ab8de",
"g": "cc2504afcfb921ec",
"name": "",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "frigo_ferment_koeling",
"payloadType": "global",
"x": 240,
"y": 820,
"wires": [
[
"3fd9fd4298f06b53"
]
]
},
{
"id": "7ce15c41ce087706",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "cc2504afcfb921ec",
"name": "function 105",
"func": "if (msg.payload == true){\n global.set(\"frigo_ferment_verwarming\", msg.payload)\n}\nelse{\n global.set(\"frigo_ferment_verwarming\", false)\n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 670,
"y": 860,
"wires": [
[]
]
},
{
"id": "c0a53322eee9e960",
"type": "ui_switch",
"z": "ad7a6251289ab8de",
"g": "cc2504afcfb921ec",
"name": "",
"label": "verwarming",
"tooltip": "",
"group": "ccb84829b92a2ca1",
"order": 14,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "topic",
"topicType": "msg",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"animate": false,
"x": 490,
"y": 860,
"wires": [
[
"7ce15c41ce087706"
]
]
},
{
"id": "10520bb8ff53a047",
"type": "inject",
"z": "ad7a6251289ab8de",
"g": "cc2504afcfb921ec",
"name": "",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "frigo_ferment_verwarming",
"payloadType": "global",
"x": 260,
"y": 860,
"wires": [
[
"c0a53322eee9e960"
]
]
},
{
"id": "46128974df2925f0",
"type": "function",
"z": "ad7a6251289ab8de",
"g": "0d8462514f658104",
"name": "heating is allowed ? ",
"func": "var x = global.get(\"frigo_ferment_verwarming\");\n\nif (x == true){\n return msg;\n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1170,
"y": 160,
"wires": [
[
...
This file has been truncated, please download it to see its full contents.
Comments
Please log in or sign up to comment.