История
21 сентября 2022
Новая страница: «Termostat("R01-TS16-1", "A60-M1W3/External Sensor 1", "Termostat/R01-TS16-1-setpoint", "wb-gpio/EXT4_R3A1", "Termostat/R01-TS16-1-onoff"); // Hallway underfloor heating»
−565
Новая страница: «== Thermostat == An example of a simple thermostat from the [https://support.wirenboard.com/t/novaya-versiya-dvizhka-pravil/4196/158 topic on the support portal].»
−145
Новая страница: «1. If the input voltage is less than the battery voltage, then the board is powered by the battery. In this case, 0V is also displayed as the input voltage.»
−97
Новая страница: «} });»
−168
Новая страница: «// A rule that will increase the brightness on a timer defineRule({ when: function () { return timers["input1_long_press"].firing; }, then: function () { var i = dev["wb-mdm3_58/Channel 1"];»
−56
Новая страница: «defineRule("_system_buzzer_params", { whenChanged: [ "buzzer/frequency", "buzzer/volume", ],»
−168
Новая страница: «<syntaxhighlight lang="ecmascript">»
−232
Новая страница: «2. If the input voltage is greater than the battery voltage, then the board is powered by an external power source. The measurement from the Vin channel is displayed as the input voltage.»
−195
Новая страница: «=== CO2 === When the CO2 concentration is less than 650, we flash green once every 10 seconds.»
−559
Новая страница: «runShellCommand("echo " + period + " > /sys/class/pwm/pwmchip0/pwm2/period"); runShellCommand("echo " + duty_cycle + " > /sys/class/pwm/pwmchip0/pwm2/duty_cycle"); };»
−90
Новая страница: «defineRule({ whenChanged: "wb-mcm8_20/Input 1 Long Press Counter", then: function (newValue, devName, cellName) { // Start a timer that will increase the value of the control startTicker("input1_long_press", 75); } });»
−280
Новая страница: «function _buzzer_set_params() { var period = parseInt(1.0 / dev.buzzer.frequency * 1E9); var duty_cycle = parseInt(dev.buzzer.volume * 1.0 / 100 * period * 0.5);»
−224
Новая страница: «defineRule({ whenChanged: "wb-mcm8_20/Input 1 Single Press Counter", then: function (newValue, devName, cellName) { dev["wb-mdm3_58/K1"] = true; } });»
−366
Новая страница: «→----------------------------: →2. Double Press Counter: Off action: →----------------------------: »
−13
Новая страница: «When the CO2 concentration is over 1001, we flash red once a second. <div class="mw-collapsible mw-collapsed"; style="width:600px; overflow: hidden;"> <syntaxhighlight lang="ecmascript"> defineRule("msw3_co2", { whenChanged: "wb-msw-v3_97/CO2", then: function(newValue, devName, cellName) { var co2_good = newValue < 650; var co2_middle = newValue < 1000 && newValue > 651; var co2_bad = newValue > 1001;»
−184
Новая страница: «=== System rules ===»
−131
Новая страница: «== Sensor MSW v.3 ==»
−256
Новая страница: «When the CO2 concentration is over 651, but less than 1000, we flash yellow once every 5 seconds.»
−95
Новая страница: «→---------------------------------------: →3. Long Press Counter: Increase brightness: →---------------------------------------: »
−170
Новая страница: «if (i > 0 && dev["wb-mcm8_20/Input 1"]) { i-- dev["wb-mdm3_58/Channel 1"] = i } else { timers["input1_shortlong_press"].stop(); } } });»
−520
Новая страница: «if (i < 100 && dev["wb-mcm8_20/Input 1"]) { i++ dev["wb-mdm3_58/Channel 1"] = i } else { timers["input1_long_press"].stop(); } } });»
−152
Новая страница: «→--------------------------------------------: →4. Shortlong Press Counter: Decrease brightness: →--------------------------------------------: »
−504
Новая страница: «Since changing the brightness requires a time-consuming action, we use a timer. We also control the state of the input with the button and stop the action when the button is released.»
−435
Новая страница: «=== Examples === {{YouTube |link=https://youtu.be/C60KB7TCeKg |text= Rule example }} In the example, we are using the WB-MCM8 to control the first dimmer channel WB-MDM3: # Short press turns on the channel. # Double - turns off the channel. # Long - increases brightness. # Short, then long - reduces brightness.»
−270
Новая страница: «Handling counters is conveniently done on wb-rules, but you can use any automation tool like Node-RED. To speed up meter polling, configure poll period.»
−230
Новая страница: «To process clicks, you need to track the state of the counter of the desired type of click on the controller and, when it changes, perform an action.»
−399
Новая страница: «defineRule("water_meter_1", { whenChanged: "wb-mcm8_29/Input 1 counter", then: function(newValue, devName, cellName) { if(newValue){ dev["water_meters"]["water_meter_1"] = ((parseInt(newValue) - counterCorrection) * inpulseValue) + meterCorrection; // We multiply the value of the counter by the number of liters / pulse and add the correction value. } } }); </syntaxhighlight>»
−137
Новая страница: «if (relay_down_timer_id) { relay_down_timer_id = clearTimeout(relay_down_timer_id); };»
−120
Новая страница: «defineRule("roller_shutter_1_both_on", { asSoonAs: function() { return relay_up_1 && relay_down_1; }, then: function () { relay_up_1 = 0; relay_down_1 = 0; log("Both roller shutter relays on, switching them off"); } }); })();»
−176
Новая страница: «If you need several such motion detectors, then in order not to copy the code, you can wrap the creation of the rule and variables in a function:»
−442
Новая страница: «var timeout_s = 15; // End of settings var relay_up_timer_id = null; var relay_down_timer_id = null; defineRule( "roller_shutter_up_on" + suffix, { asSoonAs: function() { return dev[relay_up_device][relay_up_control]; }, then: function () { if (relay_up_timer_id) { relay_up_timer_id = clearTimeout(relay_up_timer_id); };»
−56
Новая страница: «defineRule("roller_shutter_both_on" + suffix, { asSoonAs: function() { return dev[relay_up_device][relay_up_control] && dev[relay_down_device][relay_down_control]; }, then: function () { if (relay_up_timer_id) { relay_up_timer_id = clearTimeout(relay_up_timer_id); };»
−345
Новая страница: «var relay_down_device = "lc103_4"; var relay_down_control = "Relay 2";»
−168
Новая страница: «In addition, the rule turns off the engines after a specified time after being turned on.»
−170
Новая страница: «// time point marking the beginning of the interval // i.e. "today, at HH:MM". All dates are in UTC! var date_start = new Date(date); date_start.setHours(9); date_start.setMinutes(30);»
−178
Новая страница: «=== Activate the rule only at a certain time ===»
−54
Новая страница: «<syntaxhighlight lang="ecmascript"> var motion_timer_1_timeout_ms = 5 * 1000; var motion_timer_1_id = null; defineRule("motion_detector_1", { whenChanged: "wb-gpio/A1_IN", then: function (newValue, devName, cellName) { var date = new Date();»
−264
Новая страница: «defineRule("motion_detector_1", { whenChanged: "wb-gpio/D2_IN", then: function (newValue, devName, cellName) { if (newValue) { dev["wb-gpio"]["Relay_1"] = true; if (motion_timer_1_id) { clearTimeout(motion_timer_1_id); } motion_timer_1_id = setTimeout(function () { dev["wb-gpio"]["Relay_1"] = false; motion_timer_1_id = null; }, motion_t...»
−213
Новая страница: «<syntaxhighlight lang="ecmascript"> function makeMotionDetector(name, timeout_ms, detector_control, relay_control) { var motion_timer_id = null; defineRule(name, { whenChanged: "wb-gpio/" + detector_control, then: function(newValue, devName, cellName) { if (!newValue) { dev["wb-gpio"][relay_control] = true; if (motion_timer_id) { clearTimeout(motion_timer_id); }»
−56
Новая страница: «<syntaxhighlight lang="ecmascript"> var motion_timer_1_timeout_ms = 30 * 1000; var motion_timer_1_id = null;»
−237
Новая страница: «The rule works like this: * when movement appears, the light turns on. If a thirty-second "off" timer was previously started, this timer is disabled; * when motion is lost, a thirty second "off" timer is started. If he manages to reach the end, the light turns off.»
−432
Новая страница: «The lighting is connected via a built-in relay corresponding to the <code>wb-gpio/Relay_1</code> channel.»
−104
Новая страница: «A motion detector with a "dry contact" output is connected to input D2. When motion is detected, it shorts D2 and GND and status "1" appears on the corresponding <code>wb-gpio/D2_IN</code> channel.»
−173
Новая страница: «<syntaxhighlight lang="ecmascript"> defineVirtualDevice("simple_test", { title: "Simple switch", cells: { enabled: { type: "switch", value: false }, } });»
−81
Новая страница: «} }); </syntaxhighlight>»
−168
Новая страница: «The same, but with a virtual device as an event source. Usage example: scripted button that turns on/off the siren and light bulb.»
−209
Новая страница: «} });»
−411
Новая страница: «In the example, the motion sensor is connected to the "dry contact" input, control type "switch". The siren is connected to the built-in Wiren Board relay, and the lamp is connected to the relay box via Modbus. When the "dry contact" input (motion sensor output) is closed, "1" is supplied to the lamp and the relay, and "0" when it is off.»
−214
Новая страница: «For example, a rule can turn on a siren and a lamp if a motion sensor detects movement.»
−128
Новая страница: «This simplest rule keeps track of a control and sets another control to the same state.»
−145