Skip to content

Instantly share code, notes, and snippets.

@hubidubi
Created November 24, 2015 07:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hubidubi/8abb4bf8433e61644d82 to your computer and use it in GitHub Desktop.
Save hubidubi/8abb4bf8433e61644d82 to your computer and use it in GitHub Desktop.
HTTP.get problems
require("ESP8266").logDebug(false);
var SSID = '';
var PASS = '';
var THINGSPEAK_KEY = '';
var ADAFRUIT_KEY = '';
var ADAFRUIT_GROUP = '';
var period = 60 * 1; //period of reading sensor in sec.
var GPIO0 = new Pin(12); // onewire
var LED1 = new Pin(2); // internal led
var toggle = 1;
var ow = new OneWire(GPIO0);
var sensor = require("DS18B20").connect(ow);
var blinky = function() {
print("Starting blinky...");
setInterval(function() {
toggle = !toggle;
LED1.write(toggle);
}, 1000);
};
var connectToWifi = function() {
print('Connecting to wifi...');
LED1.write(0);
ESP8266WiFi.init();
ESP8266WiFi.connect(SSID, PASS, function() {
print('Connected to ' + SSID);
var ipInfo = ESP8266WiFi.getIPInfo();
print("Current IP address is: " + ESP8266WiFi.getAddressAsString(ipInfo.ip));
LED1.write(1);
timer();
});
};
var resolveAddress = function(callback, data) {
if (typeof dnsCache == 'undefined') {
dnsCache = {};
}
if (!dnsCache[data.hostName]) {
var ESP8266 = require("ESP8266");
ESP8266.getHostByName(data.hostName, function(address) {
var ipAddress = ESP8266.getAddressAsString(address);
print(data.hostName + ' => ' + ipAddress);
dnsCache[data.hostName] = ipAddress;
concatParams(callback, data);
});
} else {
concatParams(callback, data);
}
};
var concatParams = function(callback, data) {
var result = [];
for (var property in data.params) {
if (data.params.hasOwnProperty(property)) {
var item = property + '=' + data.params[property];
result.push(item);
}
}
data.paramString = result.join('&');
callback(data);
};
var sendToThingSpeak = function(key, params) {
print('Sending to ThingSpeak...');
var data = {
'key': key,
'params': params,
'hostName': 'thingspeak.com'
};
resolveAddress(thingSpeakClient, data);
};
var thingSpeakClient = function(data) {
var path = '/update?key=' + data.key + '&' + data.paramString;
print('GET http://' + dnsCache[data.hostName] + path);
var http = require("http");
http.get({
host: dnsCache[data.hostName],
path: path
},
function(response) {
response.on('data', function(data) {
print('ThingSpeak data counter: ' + data);
});
}
);
};
var sendToAdafruit = function(key, group, params) {
print('Sending to Adafruit...');
var data = {
'key': key,
'group': group,
'params': params,
'hostName': 'io.adafruit.com'
};
resolveAddress(adafruitClient, data);
};
var adafruitClient = function(data) {
var path = '/api/groups/' + data.group + '/send.json?x-aio-key=' + data.key + '&' + data.paramString;
print('GET http://' + dnsCache[data.hostName] + path);
var http = require("http");
http.get({
host: dnsCache[data.hostName],
path: path
},
function(response) {
response.on('data', function(data) {
//var result = JSON.decode(data);
print('Adafruit done');
});
}
);
};
var testTs = function() {
var thingspeakParams = {
'field1': 90
};
sendToThingSpeak(THINGSPEAK_KEY, thingspeakParams);
};
var testAda = function() {
var adafruitParams = {
'temperature': 90
};
sendToAdafruit(ADAFRUIT_KEY, ADAFRUIT_GROUP, adafruitParams);
};
var measureAndSend = function() {
sensor.getTemp(function(temperature) {
var date = new Date();
print(date.toString() + ' => ' + temperature);
var thingspeakParams = {
'field1': temperature
};
sendToThingSpeak(THINGSPEAK_KEY, thingspeakParams);
var adafruitParams = {
'temperature': temperature
};
sendToAdafruit(ADAFRUIT_KEY, ADAFRUIT_GROUP, adafruitParams);
});
};
var timer = function() {
measureAndSend();
setInterval(measureAndSend, period * 1000);
};
var init = function() {
connectToWifi();
blinky();
};
E.on('init', init);
@hubidubi
Copy link
Author

I wrote a simple data logger that sends measured temperature to two logger service: thingspeak and adafruit.

Thingspeak logging basically worked for >10 hours, although according to logs, board reseted for couple of times (logging interval is 10 minutes). This logging returns an incremental counter as text that I can print to console in response.on('data', ...

Adafruit logger sometimes works sometimes not. It usually logs data, although it doesn't run response.on('data', ...
Normally Adafruit returns a json (parsing is another story)

If both logger are enables, board resets constantly.

I use EspruinoBuilds repo and version Build for 2015-11-18

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment