From 21b40bca3c0465e15a3ed0f86658674a74691870 Mon Sep 17 00:00:00 2001 From: Gonzalo Ayuso Date: Sun, 30 Apr 2017 18:20:13 +0200 Subject: [PATCH] initial import --- .gitignore | 1 + README.md | 290 ++++++++++++++++++ img/arduino.png | Bin 0 -> 89416 bytes img/nodemcu.png | Bin 0 -> 46837 bytes img/openui5.png | Bin 0 -> 23961 bytes iot/arduino/firmware.ino | 101 ++++++ iot/nodemcu/firmware.ino | 96 ++++++ package.json | 15 + server/io.js | 25 ++ www/.htaccess | 8 + www/gonzalo123/Component.js | 32 ++ .../controller/Controller.controller.js | 71 +++++ www/gonzalo123/i18n/i18n.properties | 5 + www/gonzalo123/model/io.js | 55 ++++ www/gonzalo123/view/App.view.xml | 7 + www/gonzalo123/view/Main.view.xml | 44 +++ www/index.html | 36 +++ 17 files changed, 786 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 img/arduino.png create mode 100644 img/nodemcu.png create mode 100644 img/openui5.png create mode 100644 iot/arduino/firmware.ino create mode 100644 iot/nodemcu/firmware.ino create mode 100644 package.json create mode 100644 server/io.js create mode 100644 www/.htaccess create mode 100644 www/gonzalo123/Component.js create mode 100644 www/gonzalo123/controller/Controller.controller.js create mode 100644 www/gonzalo123/i18n/i18n.properties create mode 100644 www/gonzalo123/model/io.js create mode 100644 www/gonzalo123/view/App.view.xml create mode 100644 www/gonzalo123/view/Main.view.xml create mode 100644 www/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f53982 --- /dev/null +++ b/README.md @@ -0,0 +1,290 @@ +Playing with Iot, MQTT, Arduino and Rasperry Pi. Building a dashboard with openUI5 +====== + +I've been playing with MQTT in previous posts. Today I want to build a simple dashboard. Basically because I've got a 3.5inch display for my Raspberry Py and I want to use it. The idea is set up my Rasperry Pi as a web kiosk and display the MQTT variables in real time using websockets. Let's start. + +Set up Raspberry Pi as a web kiosk is pretty straightforward. You only need to follow instructions detailed here (https://medium.com/stories-from-upstatement/how-to-build-a-web-kiosk-with-a-raspberry-pi-some-cables-and-a-tv-3dc2724acaa1). Now will prepare the mqtt inputs. Today we're going to reuse one example of previous post. A potentiometer controlled by a nodemcu microcontroller connected to our mqtt server via Wifi. + +![Circuit](img/nodemcu.png "NodeMcu") + +We also will build another circuit using a Arduino board and a ethernet Shield. + +![Circuit](img/arduino.png "Arduino") + +With this circuit we'll register the temperature (using a LM35 temperature sensor), a photo resistor (CDS) to show the light level and a relay to switch on/off a light bulb. The Idea of the circuit is emit the temperature and light level to mosquitto mqtt server and listen to switch status form mqtt server to fire the relay. That's the arduino code + +```c +#include +#include +#include + +const int photocellPin = 1; +const int tempPin = 0; +const int relayPin = 9; +bool lightStatus = false; + +const byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; + +// mqtt configuration +const char* mqttServer = "192.168.1.104"; +const int mqttPort = 1883; +const String topicLightChange = "sensors/arduino/light/change"; +const String topicLightStatus = "sensors/arduino/light/status"; +const String topicTemp = "sensors/arduino/temperature/room1"; +const String topicLight = "sensors/arduino/light/room1"; +const char* clientName = "com.gonzalo123.arduino"; + +EthernetClient ethClient; +PubSubClient client(ethClient); + +void mqttReConnect() { + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + if (client.connect(clientName)) { + Serial.println("connected"); + client.subscribe(topicLightChange.c_str()); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + delay(5000); + } + } +} + +void mqttEmit(String topic, String value) { + if (client.publish((char*) topic.c_str(), (char*) value.c_str())) { + //Serial.print("Publish ok (topic: "); + //Serial.print(topic); + //Serial.print(", value: "); + //Serial.print(value); + //Serial.println(")"); + } else { + Serial.println("Publish failed"); + } +} + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] payload: "); + String data; + for (int i = 0; i < length; i++) { + data += (char)payload[i]; + } + + if (strcmp(topic, topicLightChange.c_str()) == 0) { + lightStatus = (data == "1") ? true : false; + Serial.print(data); + } + + Serial.println(""); +} + +void setup() +{ + Serial.begin(9600); + pinMode(relayPin, OUTPUT); + digitalWrite(relayPin, LOW); + + client.setServer(mqttServer, mqttPort); + client.setCallback(callback); + if (Ethernet.begin(mac) == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + } + + delay(1500); +} + +void loop() +{ + if (!client.connected()) { + mqttReConnect(); + } + + client.loop(); + + if (lightStatus == 1) { + digitalWrite(relayPin, HIGH); + } else { + digitalWrite(relayPin, LOW); + } + mqttEmit(topicLightStatus, lightStatus ? "1" : "0"); + mqttEmit(topicLight, (String) analogRead(photocellPin)); + mqttEmit(topicTemp, (String) ((5.0 * analogRead(tempPin) * 100.0) / 1024.0)); + + delay(500); +} +``` + +Now we're going to work with dashboard. This days I'm working with OpenUI5 within various projects and because of that we'll use this library to build the dashboard. we'll build something like this: + +![Circuit](img/openui5.png "openui5") + + +Basically it's a view +```xml + + + + + + + + + + + + + + + + + + + + + + +``` + +And a controller: +```js +sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/core/mvc/Controller', + 'sap/ui/model/json/JSONModel', + "sap/ui/model/resource/ResourceModel", + 'gonzalo123/model/io' + ], + + function (jQuery, Controller, JSONModel, ResourceModel, io) { + "use strict"; + + io.connect("//192.168.1.104:3000/"); + + return Controller.extend("gonzalo123.controller.Controller", { + model: new JSONModel({ + light: { + status: false, + level: undefined + }, + potentiometer: undefined, + temperature: undefined + }), + + onInit: function () { + var model = this.model; + io.on('mqtt', function (data) { + switch (data.topic) { + case 'sensors/arduino/temperature/room1': + model.setProperty("/temperature", data.payload); + break; + case 'sensors/arduino/light/room1': + model.setProperty("/light/level", data.payload); + break; + case 'sensors/nodemcu/potentiometer/room1': + model.setProperty("/potentiometer", data.payload); + break; + case 'sensors/arduino/light/status': + model.setProperty("/light/status", data.payload == "1"); + break; + } + }); + + this.getView().setModel(this.model); + + var i18nModel = new ResourceModel({ + bundleName: "gonzalo123.i18n.i18n" + }); + this.getView().setModel(i18nModel, "i18n"); + }, + + onStatusChange: function (oEvent) { + var status = this.getView().getModel().oData.light.status + console.log("onStatusChange", status); + io.emit('mqtt', { + topic: 'sensors/arduino/light/change', + payload: (status ? "1" : "0") + }); + }, + + onColorChange: function (oEvent) { + var color = oEvent.getSource().data("color"); + var value = this.getView().getModel().oData.light[color]; + console.log(color, value); + io.emit('mqtt', { + topic: 'sensors/arduino/light/' + color + '/change', + payload: value + }); + } + }); + } +); +``` + +The real time part we need a gateway between websockets and mqtt data. We'll use socket.io. Here is the server: + +```js +var mqtt = require('mqtt'); +var mqttClient = mqtt.connect('mqtt://192.168.1.104'); +var httpServer = require('http').createServer(); +io = require('socket.io')(httpServer, {origins: '*:*'}); + +io.on('connection', function(client){ + client.on('mqtt', function(msg){ + console.log("ws", msg); + mqttClient.publish(msg.topic, msg.payload.toString()); + }) +}); + +mqttClient.on('connect', function () { + mqttClient.subscribe('sensors/#'); +}); + +mqttClient.on('message', function (topic, message) { + console.log("mqtt", topic, message.toString()); + io.sockets.emit('mqtt', { + topic: topic, + payload: message.toString() + }); +}); + +httpServer.listen(3000, '0.0.0.0'); +``` + +# Hardware: +* 1 Arduino Uno +* 1 NodeMCU (V3) +* 1 potentiometer +* 1 Servo (SG90) +* 1 Raspberry Pi 3 +* 3.5inch Display Hat for Raspberry Pi +* LM35 +* CDS +* pull down resistor + +# Demo +[![Playing with mqtt, Arduino, Raspberry Pi and OpenUI5 ](http://img.youtube.com/vi/4cdecwQ74U4/0.jpg)](https://www.youtube.com/watch?v=4cdecwQ74U4) \ No newline at end of file diff --git a/img/arduino.png b/img/arduino.png new file mode 100644 index 0000000000000000000000000000000000000000..96bf39c21e0743150fa5c59dbfb36236bbe5912a GIT binary patch literal 89416 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

mnx?Yp$}u0rCc0l8F(^cSD+%v2$g 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 J0afo(_}_a!^aTI_ literal 0 HcmV?d00001 diff --git a/iot/arduino/firmware.ino b/iot/arduino/firmware.ino new file mode 100644 index 0000000..9aa496b --- /dev/null +++ b/iot/arduino/firmware.ino @@ -0,0 +1,101 @@ +#include +#include +#include + +const int photocellPin = 1; +const int tempPin = 0; +const int relayPin = 9; +bool lightStatus = false; + +const byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; + +// mqtt configuration +const char* mqttServer = "192.168.1.104"; +const int mqttPort = 1883; +const String topicLightChange = "sensors/arduino/light/change"; +const String topicLightStatus = "sensors/arduino/light/status"; +const String topicTemp = "sensors/arduino/temperature/room1"; +const String topicLight = "sensors/arduino/light/room1"; +const char* clientName = "com.gonzalo123.arduino"; + +EthernetClient ethClient; +PubSubClient client(ethClient); + +void mqttReConnect() { + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + if (client.connect(clientName)) { + Serial.println("connected"); + client.subscribe(topicLightChange.c_str()); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + delay(5000); + } + } +} + +void mqttEmit(String topic, String value) { + if (client.publish((char*) topic.c_str(), (char*) value.c_str())) { + //Serial.print("Publish ok (topic: "); + //Serial.print(topic); + //Serial.print(", value: "); + //Serial.print(value); + //Serial.println(")"); + } else { + Serial.println("Publish failed"); + } +} + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] payload: "); + String data; + for (int i = 0; i < length; i++) { + data += (char)payload[i]; + } + + if (strcmp(topic, topicLightChange.c_str()) == 0) { + lightStatus = (data == "1") ? true : false; + Serial.print(data); + } + + Serial.println(""); +} + +void setup() +{ + Serial.begin(9600); + pinMode(relayPin, OUTPUT); + digitalWrite(relayPin, LOW); + + client.setServer(mqttServer, mqttPort); + client.setCallback(callback); + if (Ethernet.begin(mac) == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + } + + delay(1500); +} + +void loop() +{ + if (!client.connected()) { + mqttReConnect(); + } + + client.loop(); + + if (lightStatus == 1) { + digitalWrite(relayPin, HIGH); + } else { + digitalWrite(relayPin, LOW); + } + mqttEmit(topicLightStatus, lightStatus ? "1" : "0"); + mqttEmit(topicLight, (String) analogRead(photocellPin)); + mqttEmit(topicTemp, (String) ((5.0 * analogRead(tempPin) * 100.0) / 1024.0)); + + delay(500); +} \ No newline at end of file diff --git a/iot/nodemcu/firmware.ino b/iot/nodemcu/firmware.ino new file mode 100644 index 0000000..63d6a6f --- /dev/null +++ b/iot/nodemcu/firmware.ino @@ -0,0 +1,96 @@ +#include +#include + +const int potentiometerPin = 0; + +// Wifi configuration +const char* ssid = "my_wifi_ssid"; +const char* password = "my_wifi_password"; + +// mqtt configuration +const char* server = "192.168.1.104"; +const char* topic = "sensors/nodemcu/potentiometer/room1"; +const char* clientName = "com.gonzalo123.nodemcu"; + +int value; +int percent; +String payload; + +WiFiClient wifiClient; +PubSubClient client(wifiClient); + +void wifiConnect() { + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("WiFi connected."); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + if (client.connect(clientName)) { + Serial.print("Connected to MQTT broker at "); + Serial.print(server); + Serial.print(" as "); + Serial.println(clientName); + Serial.print("Topic is: "); + Serial.println(topic); + } + else { + Serial.println("MQTT connect failed"); + Serial.println("Will reset and try again..."); + abort(); + } +} + +void mqttReConnect() { + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + if (client.connect(clientName)) { + Serial.println("connected"); + client.subscribe(topic); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + delay(5000); + } + } +} + +void mqttEmit(String topic, String value) +{ + if (client.publish((char*) topic.c_str(), (char*) value.c_str())) { + Serial.print("Publish ok (topic: "); + Serial.print(topic); + Serial.print(", value: "); + Serial.print(value); + Serial.println(")"); + } else { + Serial.println("Publish failed"); + } +} + +void setup() { + Serial.begin(9600); + client.setServer(server, 1883); + wifiConnect(); + delay(10); +} + +void loop() { + if (!client.connected()) { + mqttReConnect(); + } + + mqttEmit(topic, (String) (int) ((analogRead(potentiometerPin) * 100) / 1010)); + + delay(200); +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..cf9daae --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "mqtt_dashboard_openui5", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Gonzalo Ayuso (https://gonzalo123.com/)", + "license": "MIT", + "dependencies": { + "mqtt": "^2.6.2", + "socket.io": "^1.7.3" + } +} diff --git a/server/io.js b/server/io.js new file mode 100644 index 0000000..22cd14b --- /dev/null +++ b/server/io.js @@ -0,0 +1,25 @@ +var mqtt = require('mqtt'); +var mqttClient = mqtt.connect('mqtt://192.168.1.104'); +var httpServer = require('http').createServer(); +io = require('socket.io')(httpServer, {origins: '*:*'}); + +io.on('connection', function(client){ + client.on('mqtt', function(msg){ + console.log("ws", msg); + mqttClient.publish(msg.topic, msg.payload.toString()); + }) +}); + +mqttClient.on('connect', function () { + mqttClient.subscribe('sensors/#'); +}); + +mqttClient.on('message', function (topic, message) { + console.log("mqtt", topic, message.toString()); + io.sockets.emit('mqtt', { + topic: topic, + payload: message.toString() + }); +}); + +httpServer.listen(3000, '0.0.0.0'); \ No newline at end of file diff --git a/www/.htaccess b/www/.htaccess new file mode 100644 index 0000000..876b982 --- /dev/null +++ b/www/.htaccess @@ -0,0 +1,8 @@ + + Options -MultiViews + RewriteEngine On + #RewriteBase /path/to/app + RewriteCond %{REQUEST_FILENAME} !-f + #RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^ index.php [L] + \ No newline at end of file diff --git a/www/gonzalo123/Component.js b/www/gonzalo123/Component.js new file mode 100644 index 0000000..7fb8232 --- /dev/null +++ b/www/gonzalo123/Component.js @@ -0,0 +1,32 @@ +sap.ui.define(['jquery.sap.global', 'sap/ui/core/UIComponent'], + function (jQuery, UIComponent) { + "use strict"; + + var Component = UIComponent.extend("gonzalo123.Component", { + metadata: { + rootView: "gonzalo123.view.App", + routing: { + config: { + targetsClass: "sap.m.routing.Targets", + viewPath: "gonzalo123.view", + controlId: "rootControl", + controlAggregation: "pages", + viewType: "XML" + }, + targets: { + main: { + viewName: "Main", + viewLevel: 0 + } + } + } + }, + + init: function () { + UIComponent.prototype.init.apply(this, arguments); + this.getTargets().display("main"); + } + }); + + return Component; + }); diff --git a/www/gonzalo123/controller/Controller.controller.js b/www/gonzalo123/controller/Controller.controller.js new file mode 100644 index 0000000..e930a98 --- /dev/null +++ b/www/gonzalo123/controller/Controller.controller.js @@ -0,0 +1,71 @@ +sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/core/mvc/Controller', + 'sap/ui/model/json/JSONModel', + "sap/ui/model/resource/ResourceModel", + 'gonzalo123/model/io' + ], + + function (jQuery, Controller, JSONModel, ResourceModel, io) { + "use strict"; + + io.connect("//192.168.1.104:3000/"); + + return Controller.extend("gonzalo123.controller.Controller", { + model: new JSONModel({ + light: { + status: false, + level: undefined + }, + potentiometer: undefined, + temperature: undefined + }), + + onInit: function () { + var model = this.model; + io.on('mqtt', function (data) { + switch (data.topic) { + case 'sensors/arduino/temperature/room1': + model.setProperty("/temperature", data.payload); + break; + case 'sensors/arduino/light/room1': + model.setProperty("/light/level", data.payload); + break; + case 'sensors/nodemcu/potentiometer/room1': + model.setProperty("/potentiometer", data.payload); + break; + case 'sensors/arduino/light/status': + model.setProperty("/light/status", data.payload == "1"); + break; + } + }); + + this.getView().setModel(this.model); + + var i18nModel = new ResourceModel({ + bundleName: "gonzalo123.i18n.i18n" + }); + this.getView().setModel(i18nModel, "i18n"); + }, + + onStatusChange: function (oEvent) { + var status = this.getView().getModel().oData.light.status + console.log("onStatusChange", status); + io.emit('mqtt', { + topic: 'sensors/arduino/light/change', + payload: (status ? "1" : "0") + }); + }, + + onColorChange: function (oEvent) { + var color = oEvent.getSource().data("color"); + var value = this.getView().getModel().oData.light[color]; + console.log(color, value); + io.emit('mqtt', { + topic: 'sensors/arduino/light/' + color + '/change', + payload: value + }); + } + }); + } +); \ No newline at end of file diff --git a/www/gonzalo123/i18n/i18n.properties b/www/gonzalo123/i18n/i18n.properties new file mode 100644 index 0000000..37bcb2e --- /dev/null +++ b/www/gonzalo123/i18n/i18n.properties @@ -0,0 +1,5 @@ +dashboard=Dashboard +leds=Leds +potentiometer=Potentiometer +temperature=Temperature +light=Light \ No newline at end of file diff --git a/www/gonzalo123/model/io.js b/www/gonzalo123/model/io.js new file mode 100644 index 0000000..54ba1e1 --- /dev/null +++ b/www/gonzalo123/model/io.js @@ -0,0 +1,55 @@ +sap.ui.define([], function () { + "use strict"; + + var socket, + status; + + return { + disconnect: function (onDisconnection) { + if (socket) { + console.log('socket.disconnect'); + socket.disconnect(); + socket = undefined; + if (onDisconnection) onDisconnection(); + } + }, + connect: function (uri, onConnection) { + if (!socket) { + console.log('socket.connect', uri); + socket = io(uri, {query: '_=' + (new Date()).valueOf(), 'transports': ['polling', 'websocket', 'htmlfile', 'xhr-polling']}); + socket.on('connect', function () { + status = "Conected"; + if (onConnection) onConnection(); + }); + + socket.on('connect_error', function (e) { + status = "Connect error: " + JSON.stringify(e); + console.log('webssocket connect_error:' + JSON.stringify(e)); + }); + + socket.on('disconnect', function () { + status = "disconnect "; + console.log('webssocket disconnect'); + }); + } + }, + + removeAllListeners: function () { + socket.removeAllListeners(); + }, + + on: function (eventName, callback) { + socket.on(eventName, function (message) { + callback(message); + }); + }, + + emit: function (eventName, data, callback) { + socket.emit(eventName, data, function () { + if (callback) { + callback.apply(socket, arguments); + } + }); + } + }; +}); diff --git a/www/gonzalo123/view/App.view.xml b/www/gonzalo123/view/App.view.xml new file mode 100644 index 0000000..9be064d --- /dev/null +++ b/www/gonzalo123/view/App.view.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/www/gonzalo123/view/Main.view.xml b/www/gonzalo123/view/Main.view.xml new file mode 100644 index 0000000..e2ec18a --- /dev/null +++ b/www/gonzalo123/view/Main.view.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..2293a13 --- /dev/null +++ b/www/index.html @@ -0,0 +1,36 @@ + + + + + + MQTT Dashboard + + + + + + + + \ No newline at end of file