Node-RED で温湿度計測 bcm2835
Node-RED で温湿度センサー(DHT-11) を使って温湿度を取得するスクリプトとして、以下のコードをよく紹介されている。
var sensorLib = context.global.dht;
sensorLib.initialize(11, 4);
var readout = sensorLib.read();
var temperature readout.temperature.toFixed(2);
var humidity = readout.humidity.toFixed(2);
context.global.data.d.humidity = humidity;
context.global.data.d.temperature = temperature ;
でも、連続して使用していると
bcm2835_init: gpio mmap failed: Cannot allocate memory
というようにメモリ確保に失敗するエラーが出力されて、Node-RED を停止させてしまうことがある。
その対策として、以下のようにコードを変更することで、メモリ確保のエラーは改善されます。
var sensorLib = context.global.dht;
var readout = sensorLib.readSpec(11,4);
var temperature readout.temperature.toFixed(2);
var humidity = readout.humidity.toFixed(2);
context.global.data.d.humidity = humidity;
context.global.data.d.temperature = temperature ;