2
0

Divide values from HT sensors when using templates

This commit is contained in:
Harald Rietman
2017-11-05 14:02:58 +01:00
parent 6e74320f2d
commit ab7ea0413c
3 changed files with 23 additions and 8 deletions

View File

@@ -8,6 +8,7 @@
sid: {value: "", required: true}, sid: {value: "", required: true},
temperature: {value: "{{temperature}}"}, temperature: {value: "{{temperature}}"},
humidity: {value: "{{humidity}}"}, humidity: {value: "{{humidity}}"},
divide: {value: true},
output: {value: "0"} output: {value: "0"}
}, },
inputs: 1, inputs: 1,
@@ -69,10 +70,6 @@
<label for="node-input-sid"><i class="icon-tag"></i> Device</label> <label for="node-input-sid"><i class="icon-tag"></i> Device</label>
<select id="node-input-sid" placeholder="xiaomi gateway"></select> <select id="node-input-sid" placeholder="xiaomi gateway"></select>
</div> </div>
<!--<div class="form-row">-->
<!--<label for="node-input-sid"><i class="fa fa-id-badge"></i> Device SID</label>-->
<!--<input type="text" id="node-input-sid">-->
<!--</div>-->
<div class="form-row"> <div class="form-row">
<label for="node-input-output"><i class="icon-tag"></i> Output</label> <label for="node-input-output"><i class="icon-tag"></i> Output</label>
<select id="node-input-output" style="width:70%;"> <select id="node-input-output" style="width:70%;">
@@ -87,7 +84,12 @@
</div> </div>
<div class="form-row node-input-msg"> <div class="form-row node-input-msg">
<label for="node-input-humidity"><i class="fa fa-mixcloud"></i> Humidity</label> <label for="node-input-humidity"><i class="fa fa-mixcloud"></i> Humidity</label>
<input type="text" id="node-input-humidity"> <input type="text" id="node-input-humidity"/>
</div>
<div class="form-row node-input-msg">
<label>&nbsp;</label>
<i></i>&nbsp;&nbsp;<input type="checkbox" id="node-input-divide" style="display: inline-block; width: auto; vertical-align: top;">
<label for="node-input-divide" style="width: 70%;">Divide values by 100</label>
</div> </div>
</script> </script>
@@ -135,7 +137,14 @@
<p>Only passes the string values for temperature on output 1 and humidity on output 2.</p> <p>Only passes the string values for temperature on output 1 and humidity on output 2.</p>
<h4>Template</h4> <h4>Template</h4>
<p>Use your own template to pass the values on. The template can contain <a href="http://mustache.github.io/mustache.5.html">mustache-style</a> tags. <p>Use your own template to pass the values on. The template can contain <a href="http://mustache.github.io/mustache.5.html">mustache-style</a> tags.
Any property from the data section of the full object can be used.</p> Any property from the data section of the full object can be used. As the HT sensor is sending data in thousends, you can check this box to have it in hundreds.
Here an template example to send the temperature to homebridge-mqtt:
<pre>
{
"name":"Temperatuur woonkamer",
"characteristic":"CurrentTemperature",
"value":{{temperature}}
}</pre></p>
<p>Sample message:</p> <p>Sample message:</p>
<p><pre> <p><pre>

View File

@@ -1,7 +1,6 @@
module.exports = function(RED) { module.exports = function(RED) {
"use strict"; "use strict";
var mustache = require("mustache"); var mustache = require("mustache");
var udpInputPortsInUse = {};
var dgram = require('dgram'); var dgram = require('dgram');
function XiaomiHtNode(config) { function XiaomiHtNode(config) {
@@ -11,6 +10,7 @@ module.exports = function(RED) {
this.output = config.output; this.output = config.output;
this.temperature = config.temperature; this.temperature = config.temperature;
this.humidity = config.humidity; this.humidity = config.humidity;
this.divide = config.divide;
var node = this; var node = this;
@@ -55,10 +55,16 @@ module.exports = function(RED) {
var humidity = null; var humidity = null;
if (data.temperature) { if (data.temperature) {
if (this.divide) {
data.temperature = String(data.temperature / 100);
}
temp = {"payload": mustache.render(node.temperature, data)} temp = {"payload": mustache.render(node.temperature, data)}
} }
if (data.humidity) { if (data.humidity) {
if (this.divide) {
data.humidity = String(data.humidity / 100);
}
humidity = {"payload": mustache.render(node.humidity, data)} humidity = {"payload": mustache.render(node.humidity, data)}
} }
node.send([temp, humidity]); node.send([temp, humidity]);

View File

@@ -1,6 +1,6 @@
{ {
"name": "node-red-contrib-xiaomi-devices", "name": "node-red-contrib-xiaomi-devices",
"version": "1.0.12", "version": "1.0.13",
"description": "A set of nodes to control some of the popular Xiaomi sensors which are connected to the Xiaomi Gateway.", "description": "A set of nodes to control some of the popular Xiaomi sensors which are connected to the Xiaomi Gateway.",
"repository": { "repository": {
"type": "git", "type": "git",