Skip to content

Instantly share code, notes, and snippets.

@AkosLukacs
Created January 3, 2016 13:53
Show Gist options
  • Save AkosLukacs/27d5f670c0e5c87b256e to your computer and use it in GitHub Desktop.
Save AkosLukacs/27d5f670c0e5c87b256e to your computer and use it in GitHub Desktop.
espruino-dht22-thingspeak-hack
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