[Скрипт] Предсказатель погоды v0.1b

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

[Скрипт] Предсказатель погоды v0.1b

Сообщение nick7zmail » Пн окт 02, 2017 10:26 pm

Все знают народные приметы, относящиеся к погоде, связанные с передвижениями животных и насекомых. А вы задумывались о том, как представители животного мира узнают о предстоящих ненастьях или улучшении погоды? Ответ на самом деле прост...они чуствуют изменения давления. Конечно есть второстепенные факторы - аля геомагнитное поле и т.п., но основным показателем является давление.
Итак...выбравши наконец немного свободного времени на чтение матчасти и изучение материала по теме - навоял скриптик "Предсказатель погоды"))

Изображение

...как бы это "громко" не звучало, но более подходящего названия не нашел. Лично у меня в регионе погода пока стабильная (не говорю, что хорошая...просто хреновая и стабильная =D) в связи с чем хотелось бы задействовать народ из других регионов в тестировании данного, пока ещё непонятного, алгоритма.
Для тестирования - скопируйте себе данный скрипт, привяжите его запуск к изменению свойства давления (естественно с историей) и в скрипте укажите имя свойства (давление должно быть в мм. рт. ст....перевод в Паскали уже забит в скрипт. Если у кого другие единицы - не забудьте поправить формулу перевода.
!Опасно! Мат часть !Опасно!Показать
Для тех, кому интересно как эта хренатень работает(в кратце): вытягиваем из истории разбросанные значения за час, строим линию аппроксимации, вычисляем её угол, и по этой прямой вычисляем на сколько поменялось давление (в паскалях). Фишка в том что значение вычисляется не только по первому и последнему числу, но так же берутся все промежуточные. Не уверен будет ли работать на самом деле эта фигня, и на сколько эффективно...но...как говорится, попробовать стоит)) лично у меня пока не разу не сработала...в смысле погода пока резко не менялась...если кто заметит ошибку в формулах (в таком месиве можно заметить ошибку?))) - сообщайте, обязательно поправим.
Собственно вот сам скрипт
СкриптПоказать

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

//предсказатель погоды v0.1 beta
$sensor='Sensor_pressure01.value';
$period=60*60;
$history=getHistory($sensor, time()-$period, time());
$sumX=0;
$sumY=0;
$sumX2=0;
$sumXY=0;
$i=0;
foreach($history as $h_part){
     $pres=$h_part['VALUE']*133.322; //перевести в паскали
    $sumX += time()-strtotime($h_part['ADDED']);
     $sumY += $pres;
     $sumX2 += (time()-strtotime($h_part['ADDED']))*(time()-strtotime($h_part['ADDED']));
     $sumXY += (time()-strtotime($h_part['ADDED'])) * $pres;
     $i++;
}
$a=$i*$sumXY;
$a=$a-$sumX*$sumY;
$a=$a/($i*$sumX2-$sumX*$sumY);
$dt = -$a * $i;
$dt = round($dt);
//print_r($dt);
if($dt<-250) {
 say('Апокалипсис не за горами. Дельта'.$dt);
} elseif ($dt<-150) {
 say('Ожидается резкое ухудшение погоды. Значение дельты '.$dt);
} elseif ($dt<-50) {
 say('Ожидается ухудшение погоды. Значение дельты '.$dt);
} elseif ($dt>50) {
 say('Ожидается улучшение погоды. Значение дельты '.$dt);
} elseif ($dt>150) {
 say('Ожидается резкое улучшение погоды. Значение дельты '.$dt);
} elseif ($dt>250) {
 say('Апокалипсис не за горами. Дельта '.$dt);
}
Всех участвующих в тесте прошу выкладывать результаты по мере поступления...к примеру -
- [сбылось] Сообщение Ожидается ухудшение погоды. Значение дельты -72. По факту похолодало через 2 часа.
- [сбылось] Сообщение Ожидается резкое улучшение погоды. Значение дельты +175. По факту потеплело на 15 градусов через час.
- [не сбылось] Сообщение Ожидается резкое ухучшение погоды. Значение дельты -160. Погода не изменилась
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение Logrus » Пн окт 02, 2017 11:15 pm

этим летом был внезапный шторм -несколько человек убило (давление)
прошлой весной проморгали резкое потепление - затопило (температура)
штормгласс (оба параметра)
магнитные бури (бывают чувствительны однако)

можно под ow_fact.pressure_mmhg адаптировать (вопрос про период и формулы, т.к. получение данных раз в час два)? датчики лежат, но хз как до них руки дойдут.
Последний раз редактировалось Logrus Вт окт 03, 2017 4:47 pm, всего редактировалось 1 раз.
За это сообщение автора Logrus поблагодарил:
Samir77 (Сб янв 09, 2021 11:50 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение xor » Вт окт 03, 2017 12:02 am

На ab-log лежит реализация алгоритма Замбретти на пхп - краткосрочный прогноз для данной местности по текущим температуре, ветру, давлению.
За это сообщение автора xor поблагодарил:
Samir77 (Сб янв 09, 2021 11:50 pm)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение nick7zmail » Вт окт 03, 2017 6:24 am

Прочитал статью)) Кажется видел её раньше....
Можно попробовать объединить с этим алгоритмом, ибо давление там крайне условно анализируется. Как раз разницей между 2 точками, что не есть показательно.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение directman66 » Вт окт 03, 2017 12:15 pm

вот тут мы такое пробовали

viewtopic.php?f=13&t=4104&p=53663&hilit ... %B8#p53663
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение neromih » Сб окт 07, 2017 9:56 pm

Думал о реализации прогноза по давлению.
Весит на стене простой барометр, там шкалы в зависимости от давления, шторм, ясно, переменно и тд, плюс стрелка фиксирования замеров.
Как вариант и одного датчика давления достаточно для оперативного прогноза, но вероятность его будет ниже 0,4 и стремиться к нулю при долгосрочных прогнозах.
У себя планирую сделать датчик направления ветра, дополнительно к датчику давления, плюс с народного монитора данные датчиков температуры, давления на отдаление 100-150 км, от точки прогноза.
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение Logrus » Пн мар 19, 2018 7:48 pm

ошибка Warning: Division by zero in /var/www/html/modules/objects/objects.class.php(581) : eval()'d code on line $a=$a/($i*$sumX2-$sumX*$sumY);
отбой, разобрался (я тут сначала накосячил($sensor='Sensor_pressure01.value';)), только ноль сейчас (проверил на интервале 4 и 6 часов, на первом менее мм., на втором почти 2 мм рт ст разница, буду дальше посмотреть)
2018-03-19 21:45:33
NAN
2018-03-19 21:49:59
-0
Последний раз редактировалось Logrus Пн мар 19, 2018 7:55 pm, всего редактировалось 3 раза.
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение nick7zmail » Пн мар 19, 2018 7:49 pm

Разово или постоянно?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение Logrus » Вт мар 20, 2018 4:16 pm

создал метод predictor
СпойлерПоказать

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

//предсказатель погоды v0.1 beta
$sensor='ow_fact.pressure_mmhg';
$period=6*60*60;
$history=getHistory($sensor, time()-$period, time());
$sumX=0;
$sumY=0;
$sumX2=0;
$sumXY=0;
$i=0;
foreach($history as $h_part){
     $pres=$h_part['VALUE']*133.322; //перевести в паскали
    $sumX += time()-strtotime($h_part['ADDED']);
     $sumY += $pres;
     $sumX2 += (time()-strtotime($h_part['ADDED']))*(time()-strtotime($h_part['ADDED']));
     $sumXY += (time()-strtotime($h_part['ADDED'])) * $pres;
     $i++;
}
$a=$i*$sumXY;
$a=$a-$sumX*$sumY;
$a=$a/($i*$sumX2-$sumX*$sumY);
$dt = -$a * $i;
$dt = round($dt);
//print_r($dt);

file_put_contents('./texts/predictor.txt', date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND);
file_put_contents('./texts/predictor.txt', $dt . PHP_EOL, FILE_APPEND);
/*
if($dt<-250) {
 say('Апокалипсис не за горами. Дельта'.$dt);
} elseif ($dt<-150) {
 say('Ожидается резкое ухудшение погоды. Значение дельты '.$dt);
} elseif ($dt<-50) {
 say('Ожидается ухудшение погоды. Значение дельты '.$dt);
} elseif ($dt>50) {
 say('Ожидается улучшение погоды. Значение дельты '.$dt);
} elseif ($dt>150) {
 say('Ожидается резкое улучшение погоды. Значение дельты '.$dt);
} elseif ($dt>250) {
 say('Апокалипсис не за горами. Дельта '.$dt);
}
*/
связал со свойством ow_fact.pressure_mmhg (история пишется)
при изменении значения в св-ве на 10 или 100 единиц, на выходе меняется только знак "-" перед нулем
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: [Скрипт] Предсказатель погоды v0.1b

Сообщение nick7zmail » Вт мар 20, 2018 5:04 pm

Да, чет по ходу сломалось после обновления php. Посмотрю, как время будет.
За это сообщение автора nick7zmail поблагодарил:
Logrus (Вт мар 20, 2018 5:13 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить