Вопросы от новенького

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Вопросы от новенького

Сообщение AndreyZak » Пн ноя 09, 2015 2:00 pm

Всем здравствуйте! Меня зовут Андрей, я пытаюсь потихоньку освоить данный проект, но пока плохо получается, т. к. ни разу не программист. Автору отдельное спасибо! В данный момент пытаюсь настроить выполнение сценария "Утреннее пробуждение". И вот собственно вопрос:
Я создал три скрипта "morningGreeting", "sayweather", "sayTodayAgenda", все тексты взяты с данного сайта. Теперь в объекте onNewMinute я делаю такую запись:

Код: Выделить всё

//Пробуждение
if (timeIs('08:00'))
        {
         runScript("morningGreeting"); //Доброе утро
         runScript("sayweather"); //Прогноз погоды
         runScript("sayTodayAgenda"); //Дела на сегодня
        } 
Но он работает не правильно, т.е. Алена, говорит "Восемь часов-Доброе утро", а остальное не произносит.
Скажите как правильно записать, что бы выполнялись все три скрипта по очереди? Спасибо.
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

Re: Вопросы от новенького

Сообщение Anton_kulibin » Пн ноя 09, 2015 2:53 pm

Ошибок в скриптах нет? В принципе все правильно. Должно говорить. Вот если в скрипте ошибка, например синтаксическая, тогда он выполняться не будет. Проверьте sayweather и sayTodayAgenda.
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Вопросы от новенького

Сообщение AndreyZak » Пн ноя 09, 2015 3:30 pm

sayweather - данный скрипт отдельно выполняется, при ручном запуске.
sayTodayAgenda - скрипт не выполняется при ручном запуске, но я думаю что это задумка автора скрипта(он же автор данного проекта).
Может нужно их через && какой нибудь написать?
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Вопросы от новенького

Сообщение ErmolenkoM » Пн ноя 09, 2015 3:41 pm

AndreyZak писал(а): я пытаюсь потихоньку освоить данный проект, но пока плохо получается, т. к. ни разу не программист.
Программист на вашем месте попытался бы локализовать проблему:
поменять местами скрипты
вставить отладочную информацию, что бы посмотреть до куда доходит выполнение кода
предоставить больше информации по приведенным трем скриптам (их код)
предоставить доступ к настройкам своей системы через КОННЕКТ
указать на винде или линухе МЖД

я к чему это: варианта два - или становимся программистом
aka msh555
Cubian на Cubietruck, Connect
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Вопросы от новенького

Сообщение AndreyZak » Пн ноя 09, 2015 3:52 pm

Скрипты местами менял, всегда выполняется только первые по очереди. Отладочную информацию вставить не могу, не программист))) Коннект не работает. Коды скриптов
//Погода//////////////////////////////////////////////////////////////////////

Код: Выделить всё

$status="";
    $status.="Сегодня ".gg("Tver.Type").".";
    say($status,6);
    
    $status="";
    $w=round(gg("Tver.Temp"));
    $tempw=$w;
    if($tempw >= 11 and $tempw <= 14){
    $tempcels=" градусов ";
    }
    else{

    while ($tempw > 9){
    $tempw=$tempw-10;
    }
    
    if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
    $tempcels= градусов ; }
    if($tempw == 1){
    $tempcels= градус ; }
    if($tempw >= 2 and $tempw <= 4){
    $tempcels= градуса ; }
    }
        //$tNew = abs((float)getGlobal('Tver.Temp'));
    $status.=' Температура '.getGlobal('Tver.Temp')." ".$tempcels." цельсия";
    say($status,6);
    $tempw="";
    $tempcels="";
    
    $status="";  
    $h=round(gg("Tver.Humidity"));
    $tempw=$h;
    if($tempw >= 11 and $tempw <= 14){
    $tempcels=" процентов ";
    }
    else{

    while ($tempw > 9){
    $tempw=$tempw-10;
    }
    
    if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
    $tempcels= процентов ; }
    if($tempw == 1){
    $tempcels= процент ; }
    if($tempw >= 2 and $tempw <= 4){
    $tempcels= процента ; }
    }
    $status.="Относительная влажность ".gg("Tver.Humidity")." ".$tempcels. ".";
    say($status,6);
    $tempw="";
    $tempcels="";
    
    $status="";
    $pressure=(float)gg("Tver.Pressure");
    if ($pressure<728) {
     $status.=' Атмосферное давление пониженное';
    } elseif ($pressure>768) {
     $status.=' Атмосферное давление повышенное.';
    } else {
     $status.=' Атмосферное давление нормальное.';
    }
    say($status,6);
    
    $status="";
    // ветер
    $WindSpeed=(float)gg("Tver.WindSpeed");
    if ($WindSpeed<1) {
     $status.=' Ветра нет.';
    } elseif ($WindSpeed<3) {
     $status.=' Ветер слабый.';
    } elseif ($WindSpeed<6) {
     $status.=' Ветер сильный.';
    } elseif ($WindSpeed<9) {
     $status.=' Ветер очень сильный.';
    } else {
     $status.=' Ветер очень! Очень сильный.';
    }
    $status.=' Направление '.getGlobal('Tver.WindDir').'.';
    say($status,6); 
//Список дел на сегодня///////////////////////////////////////////////////////////////

Код: Выделить всё

if (file_exists('./modules/app_calendar/app_calendar.class.php')) {
  include_once('./modules/app_calendar/app_calendar.class.php');
 $calendar=new app_calendar();
 $calendar->usual($out);
 
 $events=$out['EVENTS_TODAY'];
 $say_phrase='';

 if (is_array($events)) {
  $total=count($events);
  $tasks=array();
  $cals=array();
    
  for($i=0;$i<$total;$i++) {
   if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') {
    $tasks[]=$events[$i]['TITLE'];
   } elseif ($events[$i]['IS_TASK'] !='1') {
    $cals[]=$events[$i]['TITLE'];
   }
  } 
 
  // Tasks  
  $total_tasks=count($tasks);
  if ($total_tasks) {
    $say_phrase.="У вас на сегодня запланированы задачи. ";
    for($i=0;$i<$total_tasks;$i++) {
     $say_phrase.=($i+1).". ".$tasks[$i].". ";
    }
  } else {
    say("Никаких дел не запланировано.");
  }
  
  // Events  
  $total_cals=count($cals);  
  if ($total_cals) {
    $say_phrase.=("Сегодняшние события. ");
    for($i=0;$i<$total_cals;$i++) {
     $say_phrase.=$cals[$i].'. ';
    }
  }  
 }
 
 $events=$out['EVENTS_PAST'];
 if ($events[0]['TITLE']) {
  $say_phrase.=" Так же напоминаю о пропущенных задачах. ";
  $total_tasks=count($events);
  for($i=0;$i<$total_tasks;$i++) {
    $say_phrase.=($i+1).". ".$events[$i]['TITLE'].". ";
  }
 }
}

if ($say_phrase) {
 say($say_phrase);
} 
//Доброе утро////////////////////////////////////////////////////////////////////////

Код: Выделить всё

say("Доброе утро!"); 
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Вопросы от новенького

Сообщение AndreyZak » Пн ноя 09, 2015 3:53 pm

Операционная система Windows 8.1
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Вопросы от новенького

Сообщение ErmolenkoM » Пн ноя 09, 2015 4:08 pm

добавьте в onNewMinute в самый верх эти строки:

Код: Выделить всё

runScript("morningGreeting"); //И раз         
runScript("morningGreeting"); //И два
runScript("morningGreeting"); //И три 
что пишет?


отладка это просто: в нужное место кода вставляем

Код: Выделить всё

say('1');  
В следующее нужное место:

Код: Выделить всё

say('2');  
Дальше в чате смотрим что происходит.
aka msh555
Cubian на Cubietruck, Connect
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Вопросы от новенького

Сообщение AndreyZak » Пн ноя 09, 2015 4:24 pm

Пишет доброе утро три раза подряд. Про отладку спасибо, пометил для себя.
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Вопросы от новенького

Сообщение ErmolenkoM » Пн ноя 09, 2015 4:43 pm

теперь вместо этих трех строк пишем

Код: Выделить всё

runScript("sayweather"); //Прогноз погоды 
работает? прогноз погоды вывело?
aka msh555
Cubian на Cubietruck, Connect
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Вопросы от новенького

Сообщение AndreyZak » Пн ноя 09, 2015 8:16 pm

Нет не получилось. Ни чего не сказала и не написала. По аналогии написал три раза последний скрипт и тоже нет ни звука не записи в чате.
Ответить