Умный дом говорит предсказания погоды, к примеру "В ближайшие два часа осадков не ожидается" или "В течении получаса начнется дождь".
А также, если выполнять в Cron, к примеру, каждые 15 минут (чаще не рекомендую), с параметром "change=1", будет сообщать изменения погоды, если оно произошло.
Данные получает с сайта yandex.by/pogoda/
Параметр $page_url = "https://yandex.by/pogoda/minsk"; задает вашу геолокацию.
Версия сырая, могут быть ошибки.
Если есть мысли как оптимизировать улучшить код, пишите в теме.
Код сценария yandexWeatherFact:
Код: Выделить всё
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];
$page_url = "https://yandex.by/pogoda/minsk"; //ссылка на погоду
//делаем до 10 запросов, т.к. сайт иногда не отвечает с первого раза
for ($i = 0; $i <= 10; $i++) {
if (!$page_cont) $page_cont = file_get_contents($page_url);
}
if ($page_cont) {
//ищем <p class="maps-widget-fact__title">(.*?)</p>
preg_match_all("/<p class=\"maps-widget-fact__title\">(.*?)<\/p>/ui", $page_cont, $match);
$ret = $match[1][0];
if ($ret) {
if ($change) {
echo "<br>Запрос: ";
if (gg("yw_mycity.osadki") !== $ret) { //если изменилась погода
say($ret, $level);
echo "<br>Погода изменилась!";
sg("yw_mycity.osadki", $ret);
} else {
echo "<br>Погода не изменилась!";
}
} else {
say($ret, $level);
echo "<br>" . $ret;
sg("yw_mycity.osadki", $ret);
}
}
} else {
echo "<br>Погода. Данные не получены.";
}
Crontab: */15 * * * *
Код: Выделить всё
runScript("yandexWeatherFact", array("change"=>"1"));
P/S. Модераторы. Если я опубликовал не в тот раздел тему, пожалуйста перенесите, поправьте.В ближайшие два часа осадков не ожидается