Size: a a a

ioBroker smarthome

2021 May 01

VS

Vitaliy Shmorgun in ioBroker smarthome
schedule({astro: "sunrise"}, function () {
   log("Просыпаемся!!!");
   // можно и стейт завести и здесь в него писать "утро"
  // а в нужных местах подписаться на его изменение
});

schedule({astro: "sunset"}, function () {
   log("Просыпаемся!!!");
  // аналогично
});
источник

A

Anzor in ioBroker smarthome
у меня так и было
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
И ... ,
источник

A

Anzor in ioBroker smarthome
но проблема в том, что есил пропадет свет и включится ночью, то действия не выполнятся
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
решаемо, и очень просто
источник

A

Anzor in ioBroker smarthome
var schedule1;


schedule1 = schedule('*/60 * * * *', async function () {
 if (compareTime(getAstroDate("night", undefined, 0), null, ">", null)) {
   setState("0_userdata.0.System.day", true);
   setState("megad.6.p12_P12", false);
   setState("megad.4.p8_P8", false);
 console.log('Рассвет.');      
 } else {
   setState("0_userdata.0.System.day", false);
   setState("megad.6.p12_P12", true);
   setState("megad.4.p8_P8", true);
 console.log('Закат.');    
 }
});
for (var count = 0; count < 1; count++) {
 if (compareTime(getAstroDate("night", undefined, 0), null, ">", null)) {
   setState("0_userdata.0.System.day", true);
   setState("megad.6.p12_P12", false);
   setState("megad.4.p8_P8", false);
 console.log('Рассвет.');      
 } else {
   setState("0_userdata.0.System.day", false);
   setState("megad.6.p12_P12", true);
   setState("megad.4.p8_P8", true);
 console.log('Закат.');    
 }
}
schedule({astro: "sunrise", shift: 0}, async function () {  //утро
   setState("0_userdata.0.System.day", true);
   setState("megad.6.p12_P12", false);
   setState("megad.4.p8_P8", false);
 console.log('Рассвет.');                      
});
schedule({astro: "sunset", shift: 0}, async function () { //вечер
   setState("0_userdata.0.System.day", false);
   setState("megad.6.p12_P12", true);
   setState("megad.4.p8_P8", true);
 console.log('Закат.');    
});
источник

A

Anzor in ioBroker smarthome
вот так решил )
источник

A

Anzor in ioBroker smarthome
может не самый "изящный" способ, но работать должен )
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
если отделить отдельно
   setState("0_userdata.0.System.day", true);
а все остальное в подписке на его изменение - будет меньше условий
и можно при запуске скрипта проверять не пропустил ли переход день-ночь
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
если пропустил - меняешь, а все остальное сработает автоматои
источник

A

Anzor in ioBroker smarthome
хороший вариант ) переделаю наверное так )
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
on({id: '0_userdata.0.System.day', change: "ne", val: true}, function(obj){
   // наступил день, все выключаем
   setState("0_userdata.0.System.day", true);
   setState("megad.6.p12_P12", false);
   setState("megad.4.p8_P8", false);
 console.log('Рассвет.');  
})


on({id: '0_userdata.0.System.day', change: "ne", val: false}, function(obj){
   // наступила ночь, все включаем
   setState("0_userdata.0.System.day", false);
   setState("megad.6.p12_P12", true);
   setState("megad.4.p8_P8", true);
   console.log('Закат.');    
})
источник

A

Anzor in ioBroker smarthome
setState("0_userdata.0.System.day", false);
а это зачем? и так же на него подписаны, зачем еще и его устанавливать? или забыл убрать? )
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
sorry 😞 copy - past
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
schedule({astro: "sunrise", shift: 0}, async function () {  //утро
   setState("0_userdata.0.System.day", true);                      
});
schedule({astro: "sunset", shift: 0}, async function () { //вечер
   setState("0_userdata.0.System.day", false);  
});
источник

A

Anzor in ioBroker smarthome
да, я понял ) поправил сам ), спасибо! )
источник

A

Anzor in ioBroker smarthome
var schedule1;

schedule1 = schedule('*/60 * * * *', async function () {
 if (compareTime(getAstroDate("night", undefined, 0), null, ">", null)) {
   setState("0_userdata.0.System.day", true);
 console.log('Рассвет.');      
 } else {
   setState("0_userdata.0.System.day", false);
 console.log('Закат.');    
 }
});
for (var count = 0; count < 1; count++) {
 if (compareTime(getAstroDate("night", undefined, 0), null, ">", null)) {
   setState("0_userdata.0.System.day", true);
 console.log('Рассвет.');      
 } else {
   setState("0_userdata.0.System.day", false);
 console.log('Закат.');    
 }
}
schedule({astro: "sunrise", shift: 0}, async function () {  //утро
   setState("0_userdata.0.System.day", true);
 console.log('Рассвет.');                      
});
schedule({astro: "sunset", shift: 0}, async function () { //вечер
   setState("0_userdata.0.System.day", false);
 console.log('Закат.');    
});

on({id: '0_userdata.0.System.day', change: "ne", val: true}, function(obj){
   // наступил день, все выключаем  
   setState("megad.6.p12_P12", false);  
   setState("megad.4.p8_P8", false);  
 console.log('Рассвет.');  
})

on({id: '0_userdata.0.System.day', change: "ne", val: false}, function(obj){
   // наступила ночь, все включаем
   setState("megad.6.p12_P12", true);  
   setState("megad.4.p8_P8", true);  
   console.log('Закат.');      
})
источник

A

Anzor in ioBroker smarthome
конечный вариант )
источник

VS

Vitaliy Shmorgun in ioBroker smarthome
нет, schedule1 - не нужен, проверка только при старте
источник

A

Anzor in ioBroker smarthome
источник