/var/www/myprog.com.ua/server/node
Edit: /var/www/myprog.com.ua/server/node/core.js (13993B)
const log = require('./logs/log')
var SunCalc = require('suncalc');
var scenario = [];
var scenario_timers = [];
var poliv_start = false;
var poliv_started = false;
var poliv_finish = false;
var poliv_timer = 0;
// get today's sunlight times for London
var times = SunCalc.getTimes(new Date(), 38.09835, 23.97326); // NeaMakri, Greece
// format sunrise time from the Date object
var sunriseHours = times.sunrise.getHours();
var sunriseMinutes = times.sunrise.getMinutes();
var sunsetHours = times.sunset.getHours();
var sunsetMinutes = times.sunset.getMinutes();
class Core {
constructor() {
}
async load() {
let conf = await this.context.get_config()
for (let c of conf) {
config[c.key] = c.value
}
// await this.service_orders.load_orders()
return true
}
run() {
let _self = this;
console.log("TODAY SUNRISE ON "+sunriseHours+":"+sunriseMinutes)
console.log("TODAY SUNSET ON "+sunsetHours+":"+sunsetMinutes)
setTimeout(async function upd() {
const dateNow = new Date();
// get current day of week
let day = dateNow.getDay();
// get current hours
let hours = dateNow.getHours();
// get current minutes
let minutes = dateNow.getMinutes();
// get current seconds
let seconds = dateNow.getSeconds();
// Получаем время захода солнца каждый день
if (hours == 0 && minutes == 0 && seconds == 0) {
times = SunCalc.getTimes(new Date(), 38.09835, 23.97326); // NeaMakri, Greece
sunriseHours = times.sunrise.getHours();
sunriseMinutes = times.sunrise.getMinutes();
sunsetHours = times.sunset.getHours();
sunsetMinutes = times.sunset.getMinutes();
}
// let sunSatHour =
// let sunSatMinute =
// console.log('Date Now: ' + hours + ':' + minutes + ':' + seconds)
// if (hours == 7 && minutes == 0 && seconds == 0) {
// // START FIRST POLIV
// if (day != 1) {
// poliv_start = true;
// }
// }
if (hours == 5 && minutes == 0 && seconds == 0) {
// START SECOND POLIV
// if (day != 2 && day != 4 && day != 6) {
if (day != 2) {
poliv_start = true;
}
}
if (hours == sunsetHours && minutes == sunsetMinutes && seconds == 0) {
// LIGHT ON
console.log("POOL LIGHT ON")
_self.sessions_manager.send_to_host(14, "relay_on", "1");
console.log("LIGHT ZABOR ON")
_self.sessions_manager.send_to_host(15, "relay_on", "1");
_self.sessions_manager.send_to_host(15, "relay_off", "1");
console.log("LIGHT KOZIR ON")
_self.sessions_manager.send_to_host(15, "relay_on", "2");
_self.sessions_manager.send_to_host(15, "relay_off", "2");
console.log("LIGHT HOUSE ON")
_self.sessions_manager.send_to_host(15, "relay_on", "3");
_self.sessions_manager.send_to_host(15, "relay_off", "3");
console.log("LIGHT ON HOUSE ON")
_self.sessions_manager.send_to_host(15, "relay_on", "4");
_self.sessions_manager.send_to_host(15, "relay_off", "4");
console.log("LIGHT ON GAZON")
_self.sessions_manager.send_to_host(12, "relay_on", "1");
_self.sessions_manager.send_to_host(12, "relay_off", "1");
// let dev1 = await _self.service_devices.get_device(15, 'io', '1')
// if (dev1.event_id == 44) {
// console.log("LIGHT ZABOR ON")
// _self.sessions_manager.send_to_host(15, "relay_on", "1");
// _self.sessions_manager.send_to_host(15, "relay_off", "1");
// }
// let dev2 = await _self.service_devices.get_device(15, 'io', '2')
// if (dev2.event_id == 38) {
// console.log("LIGHT KOZIR ON")
// _self.sessions_manager.send_to_host(15, "relay_on", "2");
// _self.sessions_manager.send_to_host(15, "relay_off", "2");
// }
// let dev3 = await _self.service_devices.get_device(15, 'io', '3')
// if (dev3.event_id == 36) {
// console.log("LIGHT HOUSE ON")
// _self.sessions_manager.send_to_host(15, "relay_on", "3");
// _self.sessions_manager.send_to_host(15, "relay_off", "3");
// }
// let dev4 = await _self.service_devices.get_device(15, 'io', '4')
// if (dev4.event_id == 46) {
// console.log("LIGHT ON HOUSE ON")
// _self.sessions_manager.send_to_host(15, "relay_on", "4");
// _self.sessions_manager.send_to_host(15, "relay_off", "4");
// }
}
if (hours == 1 && minutes == 0 && seconds == 0) {
//_self.sessions_manager.send_to_host(15, "relay_on", "2");
//_self.sessions_manager.send_to_host(15, "relay_off", "2");
_self.sessions_manager.send_to_host(14, "relay_off", "1");
// let dev2 = await _self.service_devices.get_device(15, 'io', '2')
// if (dev2.event_id == 37) {
// console.log("LIGHT KOZIR OFF")
// _self.sessions_manager.send_to_host(15, "relay_on", "2");
// _self.sessions_manager.send_to_host(15, "relay_off", "2");
// }
}
if (hours == 2 && minutes == 0 && seconds == 0) {
// LIGHT OFF
console.log("LIGHT ZABOR OFF")
_self.sessions_manager.send_to_host(15, "relay_on", "1");
_self.sessions_manager.send_to_host(15, "relay_off", "1");
_self.sessions_manager.send_to_host(15, "relay_on", "3");
_self.sessions_manager.send_to_host(15, "relay_off", "3");
_self.sessions_manager.send_to_host(15, "relay_on", "4");
_self.sessions_manager.send_to_host(15, "relay_off", "4");
console.log("LIGHT OFF GAZON")
_self.sessions_manager.send_to_host(12, "relay_on", "1");
_self.sessions_manager.send_to_host(12, "relay_off", "1");
// let dev1 = await _self.service_devices.get_device(15, 'io', '1')
// if (dev1.event_id == 43) {
// console.log("LIGHT ZABOR OFF")
// _self.sessions_manager.send_to_host(15, "relay_on", "1");
// _self.sessions_manager.send_to_host(15, "relay_off", "1");
// }
// let dev3 = await _self.service_devices.get_device(15, 'io', '3')
// if (dev3.event_id == 35) {
// console.log("LIGHT HOUSE OFF")
// _self.sessions_manager.send_to_host(15, "relay_on", "3");
// _self.sessions_manager.send_to_host(15, "relay_off", "3");
// }
// let dev4 = await _self.service_devices.get_device(15, 'io', '4')
// if (dev4.event_id == 45) {
// console.log("LIGHT ON HOUSE OFF")
// _self.sessions_manager.send_to_host(15, "relay_on", "4");
// _self.sessions_manager.send_to_host(15, "relay_off", "4");
// }
}
if (hours == 10 && minutes == 0 && seconds == 0) {
console.log("POOL PUMP ON")
_self.sessions_manager.send_to_host(14, "relay_on", "2");
}
if (hours == 13 && minutes == 0 && seconds == 0) {
console.log("POOL PUMP OFF")
_self.sessions_manager.send_to_host(14, "relay_off", "2");
}
if (hours == 22 && minutes == 0 && seconds == 0) {
console.log("POOL PUMP ON")
_self.sessions_manager.send_to_host(14, "relay_on", "2");
}
if (hours == 1 && minutes == 0 && seconds == 0) {
console.log("POOL PUMP OFF")
_self.sessions_manager.send_to_host(14, "relay_off", "2");
}
// log.debug('core', 'cron 1 sec');
if (poliv_start) {
poliv_timer = 0;
poliv_start = false;
poliv_started = true;
console.log('------- START POLIV')
}
if (poliv_finish) {
poliv_finish = false;
// OFF WATER
_self.sessions_manager.send_to_host(21, "relay_off", "5");
console.log('------- FINISH POLIV')
}
if (poliv_started) {
if (poliv_timer == 0) {
// START TREES
_self.sessions_manager.send_to_host(21, "relay_on", "3");
// ON WATER
_self.sessions_manager.send_to_host(21, "relay_on", "5");
}
poliv_timer++;
// ------------------------------------------------------------- //
if (poliv_timer == 10 * 60) {
// START PALM
_self.sessions_manager.send_to_host(21, "relay_on", "4");
}
if (poliv_timer == 10 * 60 + 3) {
// STOP TREES
_self.sessions_manager.send_to_host(21, "relay_off", "3");
}
// ------------------------------------------------------------- //
if (poliv_timer == 20 * 60) {
// START GAZON
_self.sessions_manager.send_to_host(21, "relay_on", "2");
}
if (poliv_timer == 20 * 60 + 3) {
// STOP PALM
_self.sessions_manager.send_to_host(21, "relay_off", "4");
}
// ------------------------------------------------------------- //
if (poliv_timer == 35 * 60) {
// STOP
poliv_finish = true;
_self.sessions_manager.send_to_host(17, "relay_off", "5");
}
if (poliv_timer > 35 * 60 + 30) {
// STOP ALL
_self.sessions_manager.send_to_host(21, "relay_off", "2");
_self.sessions_manager.send_to_host(21, "relay_off", "3");
_self.sessions_manager.send_to_host(21, "relay_off", "4");
poliv_started = false;
console.log('------- CLOSE ALL VALVES')
}
}
setTimeout(upd, 1 * 1000);
});
setTimeout(async function upd_sec() {
// log.debug('core', 'cron 1 sec');
// log.debug(scenario_timers);
if(scenario_timers)
for (let s of scenario_timers) {
if(s['timeout']){
s['timeout']--;
}else{
s['timeout'] = s.data.timer;
}
// log.debug(s);
}
setTimeout(upd_sec, 1 * 1000);
});
}
start_poliv() {
poliv_start = true;
}
stop_poliv() {
poliv_finish = true;
}
load_scenario(){
this.service_scenario.get_scenario().then((j) => {
if(j == null){
log.debug('load_scenario', "error");
}else{
scenario = j;
for (let s of scenario) {
try {
s.data = JSON.parse(s.json);
} catch (err) {
log.debug('error', err);
}
if(s.type == 'timer'){
scenario_timers.push(s);
}
}
}
});
}
async normalize_phone(phone) {
try {
if (phone) {
phone = phone.trim()
let mobile_operators = await this.context.get_mobile_operators()
if (phone.substr(0, 1) == '+') {
phone = phone.substr(config.prefix.length)
}
phone = phone.length > 10 ? phone.substr(-10) : phone
if (10 == phone.length) {
let operator = mobile_operators.find(p => p && p.code == phone.substr(0, p.code.length))
if (operator) {
return config.prefix + phone
} else {
return false
}
} else {
return false
}
} else {
return false
}
} catch (e) {
log.error('core.js', 'normalize_phone', e)
}
}
make_random_string(length, only_digits) {
var result = ''
var characters = ''
if (only_digits) {
characters = '0123456789'
} else {
characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
}
var charactersLength = characters.length
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength))
}
return result
}
log(msg){
this.sessions_manager.send_to_admins('log',msg);
}
/*
static get_hosts(user_id) {
return this.service_devices.get_hosts(user_id);
}
*/
}
module.exports = Core;