node-red-contrib-sds011-dust-sensor
Version:
Node-RED node to enable a communication with the SDS011 sensor which is connected via UART/serial connection.
104 lines (95 loc) • 4.94 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('SDS011', {
category: 'Air quality sensors',
defaults: {
name: {value: 'SDS011'},
port: {value: '/dev/serial0', required: true},
},
inputs: 1,
inputLabels: 'Command',
outputs: 3,
outputLabels: ['PM2.5', 'PM10', 'info'],
color: '#E9967A',
icon: "serial.png",
label: function() {
return this.name || 'SDS011';
},
});
</script>
<script type="text/x-red" data-template-name="SDS011">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-port"><i class="fa fa-pencil"></i>Device (e.g.RPi: /dev/serial0)</label>
<input type="text" id="node-input-port" placeholder="/dev/serial0">
</div>
</script>
<script type="text/x-red" data-help-name="SDS011">
<h3>Outputs</h3>
<ol class="node-ports">
<li>PM2.5
<dl class="message-properties">
<dt>payload: <span class="property-type">number</span></dt>
<dd>PM2.5 value in ug/m3</dd>
</dl>
</li>
<li>PM10
<dl class="message-properties">
<dt>payload: <span class="property-type">number</span></dt>
<dd>PM10 value in ug/m3</dd>
</dl>
</li>
<li>Info
<dl class="message-properties">
<dt>payload: <span class="property-type">string</span></dt>
<dd>Additional sensor information, such as measure frequency, working mode etc.</dd>
</dl>
</li>
</ol>
<h3>Inputs</h3>
<ol class="node-ports">
<li>Commands
<dl class="message-properties">
<dt>payload: <span class="property-type">string</span></dt>
<dd>
setActive <br/>
setQuery <br/>
queryData <br/>
getDataReportingMode <br/>
<br/>
setWorkingPeriod(parameter) <br/>
getWorkingPeriod <br/>
setContinuousMode <br/>
<br/>
checkFirmwareVersion <br/>
<br/>
getStatus <br/>
setStatus(parameter) <br/>
work <br/>
sleep <br/>
<br/>
setDeviceId<br/>
</dd>
<dt class="optional">payload.command<span class="property-type">string</span></dt>
<dd>Parameter for commands that need parameter</dd>
</dl>
</li>
</ol>
<h3>Details</h3>
<p><code>msg.payload</code> contains the commands you want to send to SDS011 Sensor. Most commands can be send without a paramter in payload.parameter. </p>
<p><code>setActive</code> SDS011 actively reports measured values. This is factory default value and recommended mode. Note: This setting is persistent and remains after power loss.</p>
<p><code>setQuery</code> SDS011 doesn't report measurements. You have to send <code>queryData</code> to get measurements.</p>
<p><code>queryData</code> Get the data for query mode. Get last measurement again for
<p><code>getDataReportingMode</code> Query current sensor mode.</p>
<p><code>setWorkingPeriod</code> Time in minutes the sensor will wake up and reports data. Note: Sensor needs 30 seconds to have stable values. In active reporting mode, sensor wakes up, measures and after 30 seconds data is reported. So when setting to 3 minutes, sensor will sleep 2.5 minutes and then measure for 30 seconds and report one value. Recommended value 3 minutes. You pass this value in <code>msg.payload.parameter</code>. Note: According to manufacturer sensor lifetime is about 8000 hours. So when using every minute it is on for half of the time, so 16.000 hours which is about 1.82 years. So when setting this to every 3 minutes lifetime is about 5.44 years.</p>
<p><code>getWorkingPeriod</code> Query current working period.</p>
<p><code>setContinuousMode</code> Set continious mode. Sensor runs all the time and reports every second one measurement.</p>
<p><code>checkFirmwareVersion</code> Prints the firmware version oft the SDS011 sensor. Firmware version is also printed with every command. Firmware version is the firmware date.</p>
<p><code>getStatus</code> Returns if sensor is currently sleeping or working.</p>
<p><code>setStatus</code> Send either work or sleep in <code>msg.payload.parameter</code>. Note: After sending to sleep SDS011 needed power cycle to wake up again. So use with care.</p>
<p><code>sleep</code> Sends sensor to sleep immediately. Note: After sending to sleep SDS011 needed power cycle to wake up again. So use with care.</p>
<p><code>work</code> Should wake up the sensor after sending to sleep. But didn't work, see above.</p>
<p><code>setDeviceId</code> DeviceId / serialnumber can be set. This is permanent after powercycle. Please see datasheet "Laser Dust Sensor Control Protocol" for details. Not recommended to use.</p>
</script>