A Node-Red web server
My hardware:
This is what I tend to use for most of my
dabbling with IoT nowadays. It has three sensors on board: a
DHT11/22 temperature & humidity sensor, a ds18b20 one-wire
temperature sensor, and an optional I2C BMP085 pressure
& temperature sensor. It also has a push-button, LED, and
mains relay but I'm not using them here. The board uses an
Espressif ESP8266 - 03.
Generally, I use Node-Red & MQTT to see what is happening with
the sensors. The flow below collects the data and posts it to the
debug panel in Node-Red.
The sensors all publish data to a MQTT
broker which sits alongside Node-Red on a Raspberry Pi. I quite like
this arrangement but many (most?) people might not want to see
Node-Red at all!
We can quite easily(?) deliver data as a web
page. Probably the simplest way is to exploit the http nodes which are bundled
with Node-Red...
This is easiest to explain in reverse order:
The diagram above shows a flow wherein the data from the dht11 is
presented as a web page. The yellow box (lower left) responds to
http GET requests. It's quite simple, this is how it's configured:
What this means is that we are expecting a 'GET' request with a
URL: http://10.0.0.10:1880/api/dht11
- this is what I would enter in my browser.
My Node-Red is at 10.0.0.10 on port 1880.
The GET request from a browser is unlikely to happen at the exact
instant that data becomes available (via MQTT) from the dht11
sensor. We need to hang on to the dht11 data in readiness for the
request. This is achieved with the function node, that's
the one with a f labelled check data & hold it:
OK - we have a bit of javascript in the function node. The
important bit here is that 'context' holds on to data from the
dht11 until a GET request occurs. Then it's passed on to the template
node:
Essentially this builds a web page. We can make this as
complex/elaborate as we like but let's keep it simple for now.
Notice how our data {{payload}} is embedded in the page.
The http response node delivers the page to whoever requested it
(a browser perhaps). There is nothing to configure in this node:
The proof of the pudding is in the eating!
This is what the browser output looks like:
Summary
Sensor data is published to a MQTT broker. Node-Red examines the
data & delivers it as a web page.
Ian Sexton