@@ -22,33 +22,36 @@ function handler (req, res) {
2222}
2323
2424
25- // for each client connection, subscribe to mqtt and push updates
25+
2626io . sockets . on ( 'connection' , function ( socket ) {
27- var mqtt = require ( 'mqtt' ) ;
28- var client = mqtt . createClient ( 1883 , 'localhost' , function ( err , client ) {
29- keepalive: 1000
30- } ) ;
31- // set of per client local variables
32- var powercumulative = 0 ;
33- var powerlasttime = new Date ( ) . getTime ( ) ; // UNIX time in ms
34-
35- client . on ( 'connect' , function ( ) {
36- client . subscribe ( 'sensors/+/+' ) ;
37-
38- client . on ( 'message' , function ( topic , message ) {
39- // console.log('topic: ' + topic + ' payload: ' + message);
40- socket . emit ( 'data' , { topic : topic , value : message } ) ;
41- if ( topic == "sensors/power/0" ) {
42- var powercurrenttime = new Date ( ) . getTime ( ) ;
43- var duration = ( powercurrenttime - powerlasttime ) / 1000.0 ;
44- var powerused = parseInt ( message , 10 ) * ( duration / 3600.0 ) ;
45- powercumulative += powerused ;
46- // console.log("duration ", duration, "powerused ", powerused, "cumulative ", powercumulative);
47- socket . emit ( 'data' , { topic : "powercumulative" , value : powercumulative . toFixed ( 3 ) } ) ;
48- powerlasttime = powercurrenttime ;
49- }
50- } ) ;
51- } ) ;
27+ } ) ;
28+
29+
30+ // subscribe to MQTT
31+ var mqtt = require ( 'mqtt' ) ;
32+ var client = mqtt . createClient ( 1883 , 'localhost' , function ( err , client ) {
33+ keepalive: 1000
34+ } ) ;
35+ // global variables for tracking cumulative power usage
36+ var powercumulative = 0 ;
37+ var powerlasttime = new Date ( ) . getTime ( ) ; // UNIX time in ms
38+
39+ client . on ( 'connect' , function ( ) {
40+ client . subscribe ( 'sensors/+/+' ) ;
41+
42+ client . on ( 'message' , function ( topic , message ) {
43+ // console.log('topic: ' + topic + ' payload: ' + message);
44+ io . sockets . emit ( 'data' , { topic : topic , value : message } ) ;
45+ if ( topic == "sensors/power/0" ) {
46+ var powercurrenttime = new Date ( ) . getTime ( ) ;
47+ var duration = ( powercurrenttime - powerlasttime ) / 1000.0 ;
48+ var powerused = parseInt ( message , 10 ) * ( duration / 3600.0 ) / 1000.0 ; // convert to KWh
49+ powercumulative += powerused ;
50+ console . log ( "duration " , duration , "powerused " , powerused , "cumulative " , powercumulative ) ;
51+ io . sockets . emit ( 'data' , { topic : "powercumulative" , value : powercumulative . toFixed ( 3 ) } ) ;
52+ powerlasttime = powercurrenttime ;
53+ }
54+ } ) ;
5255} ) ;
5356
5457
0 commit comments