Никто ещё не писал прогнозировщик погоды на основе данных метеостанции? Давления, влажности, температуры???
Отправлено с моего Redmi Note 3 через Tapatalk
Локальный прогноз погоды
Модератор: immortal
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Локальный прогноз погоды
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Локальный прогноз погоды
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Локальный прогноз погоды
пока нагородил такой огород, собираю статистику
СпойлерПоказать
header("Content-Type: text/plain; charset=utf-8");
$curtemp=gg('all_in_one.zaoknomtemp');
$curhum=gg('all_in_one.zaoknomhum');
$curpress=gg('onesensor.pressure');
//среднее значение давления за месяц
$ti= '-4 day';
//$ti= "-1 day";
$avgpress=getHistoryAvg('onesensor.pressure',strtotime($ti));
//$avgpress=getHistoryAvg('all_in_one.zaoknomtemp',strtotime($ti));
$month=date('m');
//определям времена года
$vrgoda="zima";
if ($month>='03' and $month<'06') {$vrgoda="vesna";}
if ($month>='06' and $month<'09') {$vrgoda="leto";}
if ($month>='09' and $month<'12') {$vrgoda="osen";}
// определяем трэнд давления
$press1=getHistoryAvg('onesensor.pressure', strtotime("-1 hour"));
$press2=getHistoryAvg('onesensor.pressure',"-2 hour" ,"-1 hour");
$press3=getHistoryAvg('onesensor.pressure',"-3 hour" ,"-2 hour");
$press4=getHistoryAvg('onesensor.pressure',"-4 hour" ,"-3 hour");
$delta=10;
$ca=$curpress-$avgpress;
$ac=$avgpress-$curpress;
$pressvid="среднее";
if ($ca>$delta) {$pressvid='высокое';}
if ($ac<-$delta) {$pressvid="низкое";}
echo $month,PHP_EOL;
echo '$ti:'.$ti,PHP_EOL;
echo '$vrgoda:'.$vrgoda,PHP_EOL;
echo '$curtemp:'.$curtemp,PHP_EOL;
echo '$curhum:'.$curhum,PHP_EOL;
echo '$curpress:'.$curpress,PHP_EOL;
echo '$avgpress:'.$avgpress,PHP_EOL;
echo '$press1:'.$press1,PHP_EOL;
echo '$press2:'.$press2,PHP_EOL;
echo '$press3:'.$press3,PHP_EOL;
echo '$press4:'.$press4,PHP_EOL;
echo '$ca:'.$ca,PHP_EOL;
echo '$ac:'.$ac,PHP_EOL;
echo '$pressvid:'.$pressvid,PHP_EOL;
if ($vrgoda="vesna") {echo "vesna";}
sg('trand.forecast', 'ясно');
$curtemp=gg('all_in_one.zaoknomtemp');
$curhum=gg('all_in_one.zaoknomhum');
$curpress=gg('onesensor.pressure');
//среднее значение давления за месяц
$ti= '-4 day';
//$ti= "-1 day";
$avgpress=getHistoryAvg('onesensor.pressure',strtotime($ti));
//$avgpress=getHistoryAvg('all_in_one.zaoknomtemp',strtotime($ti));
$month=date('m');
//определям времена года
$vrgoda="zima";
if ($month>='03' and $month<'06') {$vrgoda="vesna";}
if ($month>='06' and $month<'09') {$vrgoda="leto";}
if ($month>='09' and $month<'12') {$vrgoda="osen";}
// определяем трэнд давления
$press1=getHistoryAvg('onesensor.pressure', strtotime("-1 hour"));
$press2=getHistoryAvg('onesensor.pressure',"-2 hour" ,"-1 hour");
$press3=getHistoryAvg('onesensor.pressure',"-3 hour" ,"-2 hour");
$press4=getHistoryAvg('onesensor.pressure',"-4 hour" ,"-3 hour");
$delta=10;
$ca=$curpress-$avgpress;
$ac=$avgpress-$curpress;
$pressvid="среднее";
if ($ca>$delta) {$pressvid='высокое';}
if ($ac<-$delta) {$pressvid="низкое";}
echo $month,PHP_EOL;
echo '$ti:'.$ti,PHP_EOL;
echo '$vrgoda:'.$vrgoda,PHP_EOL;
echo '$curtemp:'.$curtemp,PHP_EOL;
echo '$curhum:'.$curhum,PHP_EOL;
echo '$curpress:'.$curpress,PHP_EOL;
echo '$avgpress:'.$avgpress,PHP_EOL;
echo '$press1:'.$press1,PHP_EOL;
echo '$press2:'.$press2,PHP_EOL;
echo '$press3:'.$press3,PHP_EOL;
echo '$press4:'.$press4,PHP_EOL;
echo '$ca:'.$ca,PHP_EOL;
echo '$ac:'.$ac,PHP_EOL;
echo '$pressvid:'.$pressvid,PHP_EOL;
if ($vrgoda="vesna") {echo "vesna";}
sg('trand.forecast', 'ясно');
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 510
- Зарегистрирован: Ср июн 08, 2016 4:17 pm
- Благодарил (а): 124 раза
- Поблагодарили: 101 раз
Re: Локальный прогноз погоды
Есть такая вещь называется предсказатель Замбретти
"Наиболее часто в бытовых приборах и метеостанциях используется алгоритм, который называется "предсказатель Zambretti". Этот алгоритм в простейшем виде использует всего три параметра: текущее атмосферное давление, тенденция изменения давления и направление ветра. Алгоритм был разработан в начале 20 века в Европе на основе большого количества эмпирических наблюдений и данных. Тем не менее, несмотря на свою "бородатость" и простоту, методика Zambretti дает правильный результат более чем в 90% случаях (у буржуев, разумеется)."
Тут подробно с реализацией на пэхапэ http://ab-log.ru/smart-house/weather-station/forecast
"Наиболее часто в бытовых приборах и метеостанциях используется алгоритм, который называется "предсказатель Zambretti". Этот алгоритм в простейшем виде использует всего три параметра: текущее атмосферное давление, тенденция изменения давления и направление ветра. Алгоритм был разработан в начале 20 века в Европе на основе большого количества эмпирических наблюдений и данных. Тем не менее, несмотря на свою "бородатость" и простоту, методика Zambretti дает правильный результат более чем в 90% случаях (у буржуев, разумеется)."
Тут подробно с реализацией на пэхапэ http://ab-log.ru/smart-house/weather-station/forecast
- За это сообщение автора C_3AXAPOB поблагодарил:
- directman66 (Вт май 30, 2017 1:34 pm)
- Рейтинг: 1.16%
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
--------------------------------------------------
http://connect.smartliving.ru/profile/908
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Локальный прогноз погоды
Если у вас метеостанция и вы пользуетесь программой cumulus, там есть встроенный прогноз по Замбретти. Довольно часто попадает в точку с теперешними погодами.
Я добавил передачу в Мажордомо передачу этого прогноза, доработав скрипт cumulus.php.
Я добавил передачу в Мажордомо передачу этого прогноза, доработав скрипт cumulus.php.
cumulus_my.phpПоказать
Код: Выделить всё
<?php
chdir('../');
include_once("./config.php");
include_once("./lib/loader.php");
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once("./load_settings.php");
$res = '';
//default days to keep data
const DAYS_TO_HISTORY_KEEP = 7;
$known_fields = array(
'tempOutside' => 2,
'relHumOutside' => 3,
'dewPoint' => 4,
'windLatest' => 6,
'windBearing' => 7,
'windavgbearing' => 46,
'windAverage' => 5,
'rainfallRate' => 8,
'rainfallHour' => 47,
'rainfall24' => 9,
'pressure' => 10,
'pressureRt' => -1,
'pressureTrend' => 18,
'windDirection' => 11,
'windDirectionAverage' => 51,
'tempInside' => 22,
'relHumInside' => 23,
'updatedTime' => 1,
'updatedDate' => 0,
'sensorContactLost' => 50,
'forecastNumber' => 48,
);
$data = explode(' ', $_POST['data']);
$total = count($data);
for ($i = 0; $i < $total; $i++)
{
$res .= 'data[' . $i . '] = ' . $data[$i] . "\n";
}
//DebMes('cumulus data: '.$res);
$obj = getObject('ws');
if (!$obj)
{
$rec = array();
$rec['TITLE'] = 'ws';
$rec['ID'] = SQLInsert('objects', $rec);
$obj = getObject('ws');
}
$sqlQuery = "SELECT *
FROM objects
WHERE ID = '" . $obj->id . "'";
$object_rec = SQLSelectOne($sqlQuery);
if (!$object_rec['CLASS_ID'])
{
$class_rec = array();
$class_rec['TITLE'] = 'WeatherStations';
$class_rec['SUB_LIST'] = 0;
$class_rec['PARENT_LIST'] = 0;
$class_rec['ID'] = SQLInsert('classes', $class_rec);
$object_rec['CLASS_ID'] = $class_rec['ID'];
SQLUpdate('objects', $object_rec);
}
foreach ($known_fields as $k => $v)
{
$sqlQuery = "SELECT *
FROM properties
WHERE TITLE LIKE '" . DBSafe($k) . "'
AND CLASS_ID = '" . $object_rec['CLASS_ID'] . "'";
$prop_rec = SQLSelectOne($sqlQuery);
if (!$prop_rec['ID'])
{
$prop_rec['CLASS_ID'] = $object_rec['CLASS_ID'];
$prop_rec['TITLE'] = $k;
$prop_rec['KEEP_HISTORY'] = DAYS_TO_HISTORY_KEEP;
$prop_rec['ID'] = SQLInsert('properties', $prop_rec);
}
}
$res = '';
$updated = array();
$latest_update=gg('ws.updatedTimestamp');
foreach ($known_fields as $k => $v)
{
if ($v < 0)
continue;
$res .= $k . ' = ' . $data[(int)$v] . "\n";
$old_value = getGlobal('ws.' . $k);
if ($old_value != $data[(int)$v] || ((time()-$latest_update)>30*60))
{
$updated[$k] = 1;
setGlobal('ws.' . $k, $data[(int)$v]);
}
}
if ($updated['pressure'])
{
setGlobal('ws.pressureRt', round((((float)getGlobal('ws.pressure'))/1.33322)-0.3,1));
}
if ($updated['forecastNumber'])
{
if(gg('ws.tempoutside')>2){
$zumber=array(
"Неопределенная",
"Отличная, ясно",
"Хорошая, ясно",
"Становление хорошей, ясной",
"Хорошая, но ухудшается",
"Хорошая, возможен ливень",
"Достаточно хорошая, улучшается",
"Достаточно хорошая, возможен ливень",
"Достаточно хорошая, но ожидается ливень",
"Ливень, но улучшается",
"Переменчивая, но улучшается",
"Достаточно хорошая, вероятны ливни",
"Пасмурно, но проясняется",
"Пасмурно, возможно улучшение",
"Ливни, возможны временные прояснения",
"Ливни, становится менее устойчивой",
"Переменчивая, небольшие дожди",
"Пасмурная, короткие прояснения",
"Пасмурная, ожидаются дожди",
"Пасмурная, временами дожди",
"Преимущественно очень пасмурная",
"Временами дожди, ухудшение",
"Временами дожди, очень плохая, пасмурно",
"Дожди очень часто",
"Дожди, очень плохая, пасмурно",
"Штормовая, но улучшается",
"Штормовая!, дожди");
}else{
$zumber=array(
"Неопределенная",
"Отличная, ясно",
"Хорошая, ясно",
"Становление хорошей, ясной",
"Хорошая, но ухудшается",
"Хорошая, возможен снегопад",
"Достаточно хорошая, улучшается",
"Достаточно хорошая, возможен снегопад",
"Достаточно хорошая, но ожидается снегопад",
"Снегопад, но улучшается",
"Переменчивая, но улучшается",
"Достаточно хорошая, вероятен снегопад",
"Пасмурно, но проясняется",
"Пасмурно, возможно улучшение",
"Снегопады, возможны временные прояснения",
"Снегопады, становится менее устойчивой",
"Переменчивая, небольшой снег",
"Пасмурная, короткие прояснения",
"Пасмурная, ожидается снег",
"Пасмурная, временами снег",
"Преимущественно очень пасмурная",
"Временами снег, ухудшение",
"Временами снег, очень плохая, пасмурно",
"Снег очень часто",
"Снег, очень плохая, пасмурно",
"Штормовая, но улучшается",
"Штормовая!, снегопад");
}
setGlobal('ws.forecast', $zumber[gg('ws.forecastNumber')]);
}
echo "OK";
$db->Disconnect(); // closing database connection
win10 connect https://connect.smartliving.ru/profile/303
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Локальный прогноз погоды
Немного о прогнозах в целом.
Так как я увлекаюсь ветрозависимым видом спорта я про прогноз погоды знаю достаточно много. Особенно про капризный ветер.
Бородатый и проверенный способ по Замбретти это хорошо в среднестатистической массе. Тобиш если вы там.
Утрирываю:
В горах прогноз смотреть бесполезно, там погода может меняться радикально каждые 4 часа.
Если вы в городе поведение погоды будет сильно отличаться от поведения в сельской местности. За счёт выделения тепла транспортом и прогретым асфальтом. Те-же многоэтажном застройки образующие тоннели сильно меняют микроклимат.
Прогноз в сельской местности на возвышенности будет отличаться от сельской на впадене хоть и расстояние между ними к примеру 100 км.
К чему это я?
Заибретти удобно за не именем альтернативы и отсутствием отягчающих обстоятельств в виде близости гор, города, впадины или возвышенности, большого озера, море океана. Ну и если интернета нету.
Я бы порекомендовал пользоваться лучше проффесиональным прогнозом. Так как они просчитываются более сложными алгоритмами разработанными институтами на основе движения воздушных масс не только на поверхности. Давления и влажности не только в одной точке. Кстати у этих алгоритмов есть один громкоговорящий параметр как площадь обрабатываем ой информации для прогноза для данной точки. Тоесть профессиональный прогноз рассчитывается на основе замеров большой площади а не одной точки.
Существует на данный момент 3 признанных и используемых в крупных метеокомпаниях алгоритма вычисления прогноза погоды. И смысл менять что то более проффесиональное на упрощенное не вижу.
По своему опыту ловца ветра могу сказать что прогноз на 3 день уже 70% вероятности, на неделю 40%. Цифры приведены интуитивно.
Для более любопытных посмотрите и побалуйтесь сервисом узконаправленным и более проффесьным в области погоды. Там же есть и api, там можно настроить точку прогноза погоды в любом месте мира, хоть во дворе своего дома. Для более точного прогноза там ещё можно вносить корректировочные данные. Обычно это отягчающие обстоятельства описанные мною выше. Заметьте прогноза погоды более недели там нет, так как это бессмысленно.
Ни разу не реклама :
http://www.windguru.cz
Маленькое но:
Бесплатно там прогноз с трехдевней задержкой. Но даже с такой задержкой он точнее всяких альтернатив.
Отправлено с моего Redmi Note 3 через Tapatalk
Так как я увлекаюсь ветрозависимым видом спорта я про прогноз погоды знаю достаточно много. Особенно про капризный ветер.
Бородатый и проверенный способ по Замбретти это хорошо в среднестатистической массе. Тобиш если вы там.
Утрирываю:
В горах прогноз смотреть бесполезно, там погода может меняться радикально каждые 4 часа.
Если вы в городе поведение погоды будет сильно отличаться от поведения в сельской местности. За счёт выделения тепла транспортом и прогретым асфальтом. Те-же многоэтажном застройки образующие тоннели сильно меняют микроклимат.
Прогноз в сельской местности на возвышенности будет отличаться от сельской на впадене хоть и расстояние между ними к примеру 100 км.
К чему это я?
Заибретти удобно за не именем альтернативы и отсутствием отягчающих обстоятельств в виде близости гор, города, впадины или возвышенности, большого озера, море океана. Ну и если интернета нету.
Я бы порекомендовал пользоваться лучше проффесиональным прогнозом. Так как они просчитываются более сложными алгоритмами разработанными институтами на основе движения воздушных масс не только на поверхности. Давления и влажности не только в одной точке. Кстати у этих алгоритмов есть один громкоговорящий параметр как площадь обрабатываем ой информации для прогноза для данной точки. Тоесть профессиональный прогноз рассчитывается на основе замеров большой площади а не одной точки.
Существует на данный момент 3 признанных и используемых в крупных метеокомпаниях алгоритма вычисления прогноза погоды. И смысл менять что то более проффесиональное на упрощенное не вижу.
По своему опыту ловца ветра могу сказать что прогноз на 3 день уже 70% вероятности, на неделю 40%. Цифры приведены интуитивно.
Для более любопытных посмотрите и побалуйтесь сервисом узконаправленным и более проффесьным в области погоды. Там же есть и api, там можно настроить точку прогноза погоды в любом месте мира, хоть во дворе своего дома. Для более точного прогноза там ещё можно вносить корректировочные данные. Обычно это отягчающие обстоятельства описанные мною выше. Заметьте прогноза погоды более недели там нет, так как это бессмысленно.
Ни разу не реклама :
http://www.windguru.cz
Маленькое но:
Бесплатно там прогноз с трехдевней задержкой. Но даже с такой задержкой он точнее всяких альтернатив.
Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.