Пришлось создать 10 сценариев и это не предел для демонстрации. Зато не заикается сейчас. Сценарии запускаются друг за другом в определенном порядке и по времени, рассчитанному методом научного тыка после экспериментальных действий. Может кому будет интересно
Код: Выделить всё
Demo01
callAPI('/api/module/yadevices','GET',array('station'=>1,'command'=>'setVolume','volume'=>10));
sleep(3);
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'Здравствуйте!'));
setTimeOut('DemoTimer',"runScript('Demo02');",2);
Demo02
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'Меня зовут Алиса. Я помощница в этом доме и сейчас расскажу о том, что я знаю и умею.'));
setTimeOut('DemoTimer',"runScript('Demo03');",7);
Demo03
//Температура
$tempw=round(gg("Sensor_temp02.value"));
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'Во-первых, я в курсе того, какая температура в разных комнатах. К примеру сейчас на кухне температура составляет '.round(gg("Sensor_temp02.value")).' '.GetNumberWord($tempw,array('градус','градуса','градусов')).' цельсия',2));
setTimeOut('DemoTimer',"runScript('Demo04');",11);
Demo04
//Температура
$tempw=round(gg("Sensor_temp01.value"));
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'А в ванной '.round(gg("Sensor_temp01.value")).' '.GetNumberWord($tempw,array('градус','градуса','градусов')).' '));
setTimeOut('DemoTimer',"runScript('Demo05');",5);
Demo05
//Температура
$tempw=round(gg("ow_fact.temperature"));
//влажность
$tempcels=round(gg("ow_fact.humidity"));
//давление
$pressure=(float)gg("ow_fact.pressure_mmhg");
if ($pressure<728) {
$stp=" Атмосферное давление пониженное. ";
} elseif ($pressure>768) {
$stp=" Атмосферное давление повышенное. ";
} else {
$stp=" Атмосферное давление нормальное. ";
}
//ветер
$WindSpeed=(float)gg("ow_fact.wind_speed");
if ($WindSpeed<1) {
$stw.=" Ветра нет.";
} elseif ($WindSpeed<3) {
$stw.=" Ветер слабый.";
} elseif ($WindSpeed<6) {
$stw.=" Ветер сильный.";
} elseif ($WindSpeed<9) {
$stw.=" Ветер очень сильный.";
} else {
$stw.=" Ожидается ураган ";
}
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'Так же я знаю, что на улице сейчас '.gg("ow_fact.weather_type").'. '.round(gg("ow_fact.temperature")).' '.GetNumberWord($tempw,array('градус','градуса','градусов')).' цельсия. "." Относительная влажность: '.round(gg("ow_fact.humidity")).' '.GetNumberWord($tempcels,array('процент','процента','процентов')).'. '.$stp.$stw.';'));
setTimeOut('DemoTimer',"runScript('Demo06');",12);
Demo06
//проверяем кто дома
$user=getObjectsByClass("Users");
$total=count($user);
for($i=0;$i<$total;$i++) {
$user[$i]['presence']=getGlobal($user[$i]['TITLE'].'.presence');
$user[$i]['user']=getGlobal($user[$i]['TITLE'].'.fullName');
if ($user[$i]['presence']) {
$res_user[]=$user[$i]['user'];
}
}
if ($res_user){
$isHomeText="Сейчас дома: ".implode(", ",$res_user);
}else{
$isHomeText="Если сейчас дома кто-то есть, то я его не знаю.";
}
//склонения проценты
$proc=round(gg("Lena.BattLevel"));
$proc1=round(gg("Nastya.BattLevel"));
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'В мои обязанности входит наблюдение за тем, где находятся мои хозяева. '.$isHomeText.' Уровень заряда телефона Лены сейчас '.gg('Lena.BattLevel').' '.GetNumberWord($proc,array('процент','процента','процентов')).', а у Насти '.gg('Nastya.BattLevel').' '.GetNumberWord($proc1,array('процент','процента','процентов')).'. Если телефон у кого-нибудь будет разряжен, то я об этом предупрежу.'));
setTimeOut('DemoTimer',"runScript('Demo07');",18);
Demo07
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'Я могу управлять освещением в зависимости от присутствия, восхода и заката солнца. Сейчас поиграю освещением на кухне.'));
setTimeOut('DemoTimer',"runScript('Demo08');",11);
Demo08
sg('Relay04.status', '1'); sleep (1);
sg('Relay05.status', '1'); sleep (3);
sg('Relay05.status', '0'); sleep (1);
sg('Relay04.status', '0'); sleep (1);
if (gg("DarknessMode.active")){
sg('Relay04.status', '1'); sleep (1);
sg('Relay05.status', '1'); sleep (1);
}else{
sg('Relay04.status', '0'); sleep (1);
sg('Relay05.status', '0'); sleep (1);
}
setTimeOut('DemoTimer',"runScript('Demo09');",5);
Demo09
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'Кроме управления освещением, я могу помочь и с развлечением. Например сейчас включу на телевизоре канал карусель для Алексея.'));
setTimeOut('DemoTimer',"runScript('Demo10');",8);
Demo10
TuyaIR('bf935764d7d65cc3d3ipqh', '8');
Запускается через добавленное устройство в модуле Yandex Home.