Last active
October 27, 2018 00:59
-
-
Save kkm/6c7ef72585c85c7b13ade33b34b6ce05 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 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