feat: use mqtt power, update dependencies
This commit is contained in:
parent
0c69e35d9c
commit
4448106b56
6 changed files with 4337 additions and 59 deletions
29
flukso.js
29
flukso.js
|
@ -1,29 +0,0 @@
|
|||
var util = require('util');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var request = require('request');
|
||||
|
||||
var Flukso = function(hostname, pathname) {
|
||||
var self = this;
|
||||
|
||||
this.pollPower = function() {
|
||||
request({url: "http://" + hostname + pathname}, function(error, res, response) {
|
||||
if (error) {
|
||||
self.emit('failed', error)
|
||||
} else {
|
||||
|
||||
try {
|
||||
var jsondata = JSON.parse(response);
|
||||
var power = jsondata[jsondata.length-1][1];
|
||||
|
||||
self.emit('done', parseInt(power));
|
||||
} catch(err) {
|
||||
console.log("error parsing fluxo data");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
util.inherits(Flukso, EventEmitter);
|
||||
module.exports = Flukso;
|
2658
package-lock.json
generated
Normal file
2658
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
15
package.json
15
package.json
|
@ -1,19 +1,18 @@
|
|||
{
|
||||
"name": "ctdo-raumstatus",
|
||||
"description": "ctdo raumstatus app",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"connect-flash": "0.1.1",
|
||||
"events": "1.1.0",
|
||||
"express": "4.13.3",
|
||||
"events": "3.3.0",
|
||||
"express": "5.1.0",
|
||||
"jade": "1.11.0",
|
||||
"mqtt": "2.1.3",
|
||||
"mqtt": "5.13.3",
|
||||
"path": "0.12.7",
|
||||
"request": "2.67.0",
|
||||
"socket.io": "1.4.3",
|
||||
"underscore": "1.8.3",
|
||||
"util": "0.10.3"
|
||||
"request": "2.88.2",
|
||||
"socket.io": "4.8.1",
|
||||
"util": "0.12.5"
|
||||
},
|
||||
"main": "raumstatus.js",
|
||||
"scripts": {
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
var express = require('express'),
|
||||
app = express(),
|
||||
server = require('http').createServer(app),
|
||||
io = require('socket.io').listen(server);
|
||||
server = require('http').createServer(app);
|
||||
const { Server } = require("socket.io");
|
||||
var flash = require('connect-flash');
|
||||
var Flukso = require("./flukso");
|
||||
const io = new Server(server);
|
||||
var IpPoll = require("./ip-poll");
|
||||
var routes = require("./routes");
|
||||
var path = require('path');
|
||||
|
@ -65,8 +65,6 @@ var simpleanswer = {state: "unknown", lastchange: 0, power: 0};
|
|||
|
||||
|
||||
var ippoll = new IpPoll(process.env.STATUS_POLL_HOST || "snapserv.raum.ctdo.de");
|
||||
var flukso = new Flukso(process.env.FLUKSO_HOST || "flukso.raum.ctdo.de",
|
||||
process.env.FLUKSO_URL || "/sensor/cf00e0b22230f4a8870af58f2b8719dd");
|
||||
var mqtt = mqttClient.connect(process.env.MQTT_SERVER || 'mqtt://mqtt.ctdo.de');
|
||||
var connected = false;
|
||||
|
||||
|
@ -89,25 +87,22 @@ ippoll.on('doneState', function (state) {
|
|||
console.log("room state changed: " + JSON.stringify(simpleanswer))
|
||||
});
|
||||
|
||||
flukso.on('done', function (num) {
|
||||
simpleanswer.power = num;
|
||||
spaceanswer.sensors.power_consumption[0].value = num;
|
||||
io.sockets.emit('sdata', {data: simpleanswer});
|
||||
});
|
||||
|
||||
flukso.on('failed', function (error) {
|
||||
console.log("Flukso: " + error);
|
||||
});
|
||||
|
||||
mqtt.on('connect', function () {
|
||||
console.log("connected to mqtt");
|
||||
mqtt.subscribe('raumstatus/simple');
|
||||
mqtt.subscribe('sml2mqtt/ctdo-keller/active_power');
|
||||
});
|
||||
|
||||
mqtt.on('message', function (topic, message) {
|
||||
if (topic === 'raumstatus/simple') {
|
||||
connected = (message.toString() === 'true');
|
||||
}
|
||||
if (topic === 'sml2mqtt/ctdo-keller/active_power') {
|
||||
power = Number(message.toString());
|
||||
simpleanswer.power = power;
|
||||
spaceanswer.sensors.power_consumption[0].value = power;
|
||||
io.sockets.emit('sdata', {data: simpleanswer});
|
||||
}
|
||||
});
|
||||
|
||||
function sendSimple() {
|
||||
|
@ -122,9 +117,6 @@ function work() {
|
|||
setInterval(work, process.env.PING_INTERVAL_MS || 60000);
|
||||
work();
|
||||
|
||||
setInterval(flukso.pollPower, 5000);
|
||||
flukso.pollPower();
|
||||
|
||||
app.use(express.static('public'));
|
||||
app.use(flash());
|
||||
|
||||
|
|
|
@ -4,10 +4,11 @@ block content
|
|||
|
||||
.intro
|
||||
p
|
||||
| Hier siehst du den aktuellen Status von uns. Die Daten werden vom Router und unserem Flukso
|
||||
| eingesammelt. Der Status selber werden Minütlich abgefragt. Unseren
|
||||
| Energieverbrauch bekommst du alle fünf Sekunden neu. Den Status "geöffnet" oder "geschlossen"
|
||||
| bestimmt das Programm mit einem ping auf ein Gerät im Raum.
|
||||
| Hier siehst du den aktuellen Status von uns.
|
||||
| Die Daten werden von unserem Pi am Stromzähler per sml2-mqtt und von unserem Router eingesammelt.
|
||||
| Der Status selber wird minütlich abgefragt.
|
||||
| Unseren Energieverbrauch bekommst du alle fünf Sekunden neu.
|
||||
| Den Status "geöffnet" oder "geschlossen" bestimmt das Programm mit einem ping auf ein Gerät im Raum.
|
||||
|
||||
.ink-grid(ng-controller='StatusCtrl')
|
||||
.column-group.gutters
|
||||
|
|
Loading…
Add table
Reference in a new issue