feat(devices): add some aqara devices
Added Aqara temperature/humidity, switch and window magnet
This commit is contained in:
@@ -8,12 +8,13 @@
|
|||||||
sid: {value: "", required: true},
|
sid: {value: "", required: true},
|
||||||
temperature: {value: "{{temperature}}"},
|
temperature: {value: "{{temperature}}"},
|
||||||
humidity: {value: "{{humidity}}"},
|
humidity: {value: "{{humidity}}"},
|
||||||
|
pressure: {value: "{{pressure}}"},
|
||||||
divide: {value: true},
|
divide: {value: true},
|
||||||
output: {value: "0"}
|
output: {value: "0"}
|
||||||
},
|
},
|
||||||
inputs: 1,
|
inputs: 1,
|
||||||
outputs: 2,
|
outputs: 3,
|
||||||
outputLabels: ["Temperature","Humidity"],
|
outputLabels: ["Temperature","Humidity","Pressure"],
|
||||||
paletteLabel: "sensor HT",
|
paletteLabel: "sensor HT",
|
||||||
icon: "thermometer-icon.png",
|
icon: "thermometer-icon.png",
|
||||||
label: function () {
|
label: function () {
|
||||||
@@ -86,6 +87,10 @@
|
|||||||
<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>
|
||||||
|
<div class="form-row node-input-msg">
|
||||||
|
<label for="node-input-pressure"><i class="fa fa-mixcloud"></i> Pressure</label>
|
||||||
|
<input type="text" id="node-input-pressure"/>
|
||||||
|
</div>
|
||||||
<div class="form-row node-input-msg">
|
<div class="form-row node-input-msg">
|
||||||
<label> </label>
|
<label> </label>
|
||||||
<i></i> <input type="checkbox" id="node-input-divide" style="display: inline-block; width: auto; vertical-align: top;">
|
<i></i> <input type="checkbox" id="node-input-divide" style="display: inline-block; width: auto; vertical-align: top;">
|
||||||
@@ -101,7 +106,7 @@
|
|||||||
<dt>payload
|
<dt>payload
|
||||||
<span class="property-type">json</span>
|
<span class="property-type">json</span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>Gateway <code>sensor_ht</code> message of type <code>read_ack</code>, <code>heartbeat</code> or <code>report</code></dd>
|
<dd>Gateway <code>sensor_ht</code> and <code>weather.v1</code> message of type <code>read_ack</code>, <code>heartbeat</code> or <code>report</code></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h3>Outputs</h3>
|
<h3>Outputs</h3>
|
||||||
@@ -121,7 +126,7 @@
|
|||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h3>Details</h3>
|
<h3>Details</h3>
|
||||||
<p>The incoming json message is parsed if the type model is <code>sensor_ht</code> and
|
<p>The incoming json message is parsed if the type model is <code>sensor_ht</code> or <code>weather.v1</code> and
|
||||||
the <code>sid</code> matches the configured value for this device.</p>
|
the <code>sid</code> matches the configured value for this device.</p>
|
||||||
<p>Three output types are supported:
|
<p>Three output types are supported:
|
||||||
<ul>
|
<ul>
|
||||||
@@ -156,7 +161,8 @@
|
|||||||
data: "{
|
data: "{
|
||||||
"voltage":3005,
|
"voltage":3005,
|
||||||
"temperature":"2325",
|
"temperature":"2325",
|
||||||
"humidity":"5699"
|
"humidity":"5699",
|
||||||
|
"pressure":"98126"
|
||||||
}"
|
}"
|
||||||
}</pre></p>
|
}</pre></p>
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ module.exports = function(RED) {
|
|||||||
var payload = msg.payload;
|
var payload = msg.payload;
|
||||||
node.log("Received message from: " + payload.model + " sid: " + payload.sid + " payload: " + payload.data);
|
node.log("Received message from: " + payload.model + " sid: " + payload.sid + " payload: " + payload.data);
|
||||||
|
|
||||||
if (payload.sid == node.sid && payload.model == "sensor_ht") {
|
if (payload.sid == node.sid && ["sensor_ht", "weather.v1"].indexOf(payload.model) >= 0) {
|
||||||
var data = JSON.parse(payload.data)
|
var data = JSON.parse(payload.data)
|
||||||
|
|
||||||
if (data.voltage) {
|
if (data.voltage) {
|
||||||
@@ -41,6 +41,7 @@ module.exports = function(RED) {
|
|||||||
} else if (node.output == "1") {
|
} else if (node.output == "1") {
|
||||||
var temp = null;
|
var temp = null;
|
||||||
var humidity = null;
|
var humidity = null;
|
||||||
|
var pressure = null;
|
||||||
|
|
||||||
if (data.temperature) {
|
if (data.temperature) {
|
||||||
temp = {"payload": data.temperature};
|
temp = {"payload": data.temperature};
|
||||||
@@ -49,10 +50,15 @@ module.exports = function(RED) {
|
|||||||
if (data.humidity) {
|
if (data.humidity) {
|
||||||
humidity = {"payload": data.humidity};
|
humidity = {"payload": data.humidity};
|
||||||
}
|
}
|
||||||
node.send([temp, humidity]);
|
|
||||||
|
if (data.pressure) {
|
||||||
|
pressure = {"payload": data.pressure};
|
||||||
|
}
|
||||||
|
node.send([temp, humidity, pressure]);
|
||||||
} else if (node.output == "2") {
|
} else if (node.output == "2") {
|
||||||
var temp = null;
|
var temp = null;
|
||||||
var humidity = null;
|
var humidity = null;
|
||||||
|
var pressure = null;
|
||||||
|
|
||||||
if (data.temperature) {
|
if (data.temperature) {
|
||||||
if (this.divide) {
|
if (this.divide) {
|
||||||
@@ -67,7 +73,14 @@ module.exports = function(RED) {
|
|||||||
}
|
}
|
||||||
humidity = {"payload": mustache.render(node.humidity, data)}
|
humidity = {"payload": mustache.render(node.humidity, data)}
|
||||||
}
|
}
|
||||||
node.send([temp, humidity]);
|
|
||||||
|
if (data.pressure) {
|
||||||
|
if (this.divide) {
|
||||||
|
data.pressure = String(data.pressure / 1000);
|
||||||
|
}
|
||||||
|
pressure = {"payload": mustache.render(node.pressure, data)}
|
||||||
|
}
|
||||||
|
node.send([temp, humidity, pressure]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -92,7 +92,7 @@
|
|||||||
<dt>payload
|
<dt>payload
|
||||||
<span class="property-type">json</span>
|
<span class="property-type">json</span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>Gateway <code>magnet</code> message of type <code>read_ack</code>, <code>heartbeat</code> or <code>report</code></dd>
|
<dd>Gateway <code>magnet</code> and <code>sensor_magnet.aq2</code> message of type <code>read_ack</code>, <code>heartbeat</code> or <code>report</code></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h3>Outputs</h3>
|
<h3>Outputs</h3>
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h3>Details</h3>
|
<h3>Details</h3>
|
||||||
<p>The incoming json message is parsed if the type model is <code>magnet</code> and
|
<p>The incoming json message is parsed if the type model is <code>magnet</code> or <code>sensor_magnet.aq2</code> and
|
||||||
the <code>sid</code> matches the configured value for this device.</p>
|
the <code>sid</code> matches the configured value for this device.</p>
|
||||||
<p>Three output types are supported:
|
<p>Three output types are supported:
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ module.exports = function(RED) {
|
|||||||
// var payload = JSON.parse(msg);
|
// var payload = JSON.parse(msg);
|
||||||
var payload = msg.payload;
|
var payload = msg.payload;
|
||||||
|
|
||||||
if (payload.sid == node.sid && payload.model == "magnet") {
|
if (payload.sid == node.sid && ["magnet", "sensor_magnet.aq2"].indexOf(payload.model) >= 0) {
|
||||||
var data = JSON.parse(payload.data)
|
var data = JSON.parse(payload.data)
|
||||||
|
|
||||||
// if (data.status && data.status == "open") {
|
// if (data.status && data.status == "open") {
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
<dt>payload
|
<dt>payload
|
||||||
<span class="property-type">json</span>
|
<span class="property-type">json</span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>Gateway <code>switch</code> message of type <code>read_ack</code>, <code>heartbeat</code> or <code>report</code></dd>
|
<dd>Gateway <code>switch</code> and <code>sensor_switch.aq2</code> message of type <code>read_ack</code>, <code>heartbeat</code> or <code>report</code></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h3>Outputs</h3>
|
<h3>Outputs</h3>
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h3>Details</h3>
|
<h3>Details</h3>
|
||||||
<p>The incoming json message is parsed if the type model is <code>switch</code> and
|
<p>The incoming json message is parsed if the type model is <code>switch</code> or <code>sensor_switch.aq2</code> and
|
||||||
the <code>sid</code> matches the configured value for this device.</p>
|
the <code>sid</code> matches the configured value for this device.</p>
|
||||||
<p>Three output types are supported:
|
<p>Three output types are supported:
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ module.exports = function(RED) {
|
|||||||
// var payload = JSON.parse(msg);
|
// var payload = JSON.parse(msg);
|
||||||
var payload = msg.payload;
|
var payload = msg.payload;
|
||||||
|
|
||||||
if (payload.sid == node.sid && payload.model == "switch") {
|
if (payload.sid == node.sid && ["switch", "sensor_switch.aq2"].indexOf(payload.model) >= 0) {
|
||||||
var data = JSON.parse(payload.data)
|
var data = JSON.parse(payload.data)
|
||||||
|
|
||||||
if (data.voltage) {
|
if (data.voltage) {
|
||||||
|
|||||||
Reference in New Issue
Block a user