I am slowly automating my observatory to the point of complete remote operation.
Sadly, the observatory isn't quite run of the mill and wont take some 'standard' after-market add-ons so I have to make some of them my self.
In this case this topic is about the node-red dashboard that controls and monitors it all.
Node red is an event-driven workflow engine that runs on top of node.js and provides a very low cost entry
( i.e. relatively easy) to flow-oriented programming, passing events and messages to perform activities like
turn lights on or respond to weather events.
Node-red also provides a range of basic pre-canned functions such as web calls, dashboard GUI items,
alexa integration and a whole lot more.
Finally node-red is multi-platform and open-source. I run mine on the observatory PC which runs 24x7 and it consumes
a few percent of the i7/16GB processor capacity available.
Current situation
I have taken Node-red to be the basis of my web dashboard, providing various tabbed pages to monitor visual elements and devices in the observatory and
It can also behave as an entire website so can implement ASCOM drivers on the ALPACA model which are natively integrated into the MQTT publish/subscribe model.
Examples of these drivers include the ASCOM Safety driver and the ASCOM Observing conditions driver.
The rest is the dashboard for central switch control, central monitor for remote systems health, all sky camera monitor page, environment sensing and weather pages and finally essential third party links.
Data collection & MQTT
The data for the dashbvoard is collected via the Message Queuing text transfer (MQTT) pub/sub model .
This is where devices can subscribe to a message box and listen for a message and decide to do something to respond to that.
Similarly, the same devices also report their system health and collected data by oisting the data to message boxes hosted in Node Red by the
MQTT Service.
An address might look like /Skybadger/devices/
There are a bunch of sensors reporting to the server. They all report to the central MQTT reponse handler and then get despatched to the consuming components e.g weather dashboard, observing conditions etc.
Future work
Planned extensions include