Created
January 3, 2016 13:53
-
-
Save AkosLukacs/27d5f670c0e5c87b256e to your computer and use it in GitHub Desktop.
espruino-dht22-thingspeak-hack
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var miez = "dht22-send-to-thingspeak"; | |
var httpLib = require("http"); | |
var dht22Lib = require("DHT22"); | |
function readDht22(pin, cb){ | |
console.log('trying connect to dht22@', pin); | |
var dhtConn = dht22Lib.connect(pin); | |
dhtConn.read(function (a) { | |
console.log('Temp @', pin, ' is '+a.temp.toString()+' and RH is '+a.rh.toString()); | |
if(cb){ cb(a); } | |
dhtConn = null; | |
a = null; | |
}); | |
} | |
function sendTS(payload, callback){ | |
var url = "https://api.thingspeak.com/update?api_key=*" + payload+"&status="+JSON.stringify(process.memory()); | |
console.log('url:', url); | |
httpLib.get(url, function(res) { | |
var d = ""; | |
res.on('data', function(data) { d += data; }); | |
res.on('close', function() { if (callback) callback(d); }); | |
}); | |
} | |
function addToTempPayload(start, a){ | |
if(a && a.temp && a.rh && (a.temp != -1 || a.rh != -1)){ | |
//start:temp, start+1:rh | |
return "&field"+start+"="+a.temp+"&field"+(start+1)+"="+a.rh; | |
} else { return ""; } | |
} | |
function onTimer() { | |
// Get the temperature | |
console.log('getting temperatures...'); | |
var payload = ""; | |
var doneOne = false; | |
readDht22(2, function(x){ payload += addToTempPayload(1, x); if(doneOne){ sendTS(payload, function(resp){console.log('ts resp:', resp);});}else{doneOne=true;}}); | |
readDht22(4, function(x){ payload += addToTempPayload(3, x); if(doneOne){ sendTS(payload, function(resp){console.log('ts resp:', resp);});}else{doneOne=true;}}); | |
} | |
function khn(){ readDht22(2); readDht22(3); readDht22(4); } | |
function onInit() { | |
console.log("@init ", miez); | |
clearInterval(); | |
var wifiLib = require("Wifi"); | |
wifiLib.connect("*", {password: "%"}, | |
function(err){ | |
if(err){console.log('wifi err', arguments); | |
} else { | |
console.log("wifi connected!", arguments); | |
onTimer(); | |
setInterval(onTimer, 20000); | |
} | |
}); | |
} | |
onInit(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment