Skip to content

Instantly share code, notes, and snippets.

@kkm
Last active October 27, 2018 00:59
Show Gist options
  • Save kkm/6c7ef72585c85c7b13ade33b34b6ce05 to your computer and use it in GitHub Desktop.
Save kkm/6c7ef72585c85c7b13ade33b34b6ce05 to your computer and use it in GitHub Desktop.
var fs = require('fs');
var util = require('util');
var log_file = fs.createWriteStream('/home/pi/debug.log', {flags : 'w'});
var log_stdout = process.stdout;
console.log = function(d) { //
log_file.write(util.format(d) + '\n');
log_stdout.write(util.format(d) + '\n');
};
var cloudscraper = require('cloudscraper');
//Sensor
const Fiber = require("fibers");
var ds18b20 = require('ds18b20');
//Grove
var GrovePi = require('node-grovepi').GrovePi;
var Commands = GrovePi.commands;
var Board = GrovePi.board;
var AirQualityAnalogSensor = GrovePi.sensors.AirQualityAnalog
var DHTDigitalSensor = GrovePi.sensors.DHTDigital
var airqualitysensor, dhtSensor;
var board = new Board({
debug : false,
onError : function(err) {
console.log('Something wrong just happened', err)
},
onInit : function(res) {
if(res) {
console.log('GrovePi Version :: ' + board.version())
//Air Quality Sensor Analog Port 0
airqualitysensor = new AirQualityAnalogSensor(0);
//DHT Sensor Port 4
dhtSensor = new DHTDigitalSensor(4, DHTDigitalSensor.VERSION.DHT11, DHTDigitalSensor.CELSIUS);
}
}
})
board.init()
//Monitor interval
var off = false;
var on = false;
setInterval(function() {
var dht = dhtSensor.read();
var air = airqualitysensor.read();
var temp_in = ds18b20.temperatureSync("28-01131a7a2734");
var temp_left = ds18b20.temperatureSync("28-01131a7fc7ed");
var temp_water = ds18b20.temperatureSync("28-01131a569cb2");
console.log(new Date());
console.log("DHT", dht);
console.log("AIR", air);
console.log("TEMP_IN", temp_in);
console.log("TEMP_LEFT", temp_left);
console.log("TEMP_WATER", temp_water);
console.log("---");
var d = new Date();
var hours = d.getHours();
//LIGHT ON: von 18 Uhr bis 12 Uhr Mittag für 18 Stunden //ALT ALT
//GROW LIGHT: von 19 Uhr bis 7 Uhr Morgen für 12 Stunden
if(hours <= 7 || hours >= 19) {
//Heizung einschalten
if(temp_left < 24 && (off == true || on == false)) {
console.log("HEAT ON: LIGHT ON");
relay_on();
off = false;
on = true;
}
//Heizung abschalten
if(temp_left > 24 && off == false) {
console.log("HEAT OFF: LIGHT ON");
relay_off();
off = true;
}
} else {
if(temp_left < 20 && (off == true || on == false)) {
console.log("HEAT ON: LIGHT OFF");
relay_on();
off = false;
on = true;
}
//Heizung abschalten
if(temp_left > 21 && off == false) {
console.log("HEAT OFF: LIGHT OFF");
relay_off();
off = true;
}
}
//DATA Upload
var data = {
dht : dht,
air : air,
temp_in : temp_in,
temp_left : temp_left,
temp_water : temp_water,
relay_3 : relay_get_port_status() == "false\n" ? false : true
}
http_data_send(JSON.stringify(data));
}, 5 * 1000);
function http_data_send(data) {
cloudscraper.post('http://kkm.tikatoy.com:3000/api/', {
value : data
}, function(error, response, body) {
if(error)
console.log(error);
});
}
function relay_get_port_status() {
return require('child_process').execSync('python /home/pi/GrowPi/relay/3status.py').toString();
}
function relay_on() {
return require('child_process').execSync('python /home/pi/GrowPi/relay/3on.py').toString();
}
function relay_off() {
return require('child_process').execSync('python /home/pi/GrowPi/relay/3off.py').toString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment