Main

Погодная станция WH-2080

Основные параметры окружающей среды, получаемые станцией:

  • Скорость ветра
  • Направление ветра
  • Атмосферное давление
  • Температура внутри
  • Температура снаружи
  • Влажность внутри
  • Влажность снаружи
  • Количество осадков

Подробнее о самой станции можно почитать здесь: Обзор погодной станции и подключение к компьютеру

Ниже будет рассмотрен способ интеграции данных от станции в систему MajorDoMo

Windows

Вместе со станцией идёт ПО Easyweather, но нам понадобится другое -- есть такой бесплатный проект Cumulus. Само по себе ПО не менее функциональное и обладающее возможностью запускать внешнюю программу каждый раз после считывания информации с погодной станции.

Первоначальная настройка сводится в переходу в раздел конфигурации станции и выборе типа станции Fine Offset. После этого данные со станции должны отображаться в программе.

Затем надо перейти в раздел настройки Internet и там включить обновление данных в реальном времени:

(позже мы ещё вернёмся на этот экран)

Далее, необходимо скачать и распаковать написанную мной программу Cumulus Gateway. После запуска программы необходимо ввести базовые настройки:

1. Путь к файлу realtime.txt (находится в папке, куда был установлен Cumulus)
2. Адрес скрипта, который будет принимать данные (скрипт должен уже находится в соответствующей папке majordomo)
3. Нажимаем Send, чтобы проверить что данные отправляются
4. Ставим галочку Auto-send at startup, чтобы данные отправлялись после запуска
5. Снова жмём Send -- программа отправит данные и автоматически закроется

(между прочим, Cumulus Gateway может быть использован не только с MajorDoMo, т.к. его единственная функция заключается в чтении файла realtime.txt и отправки его содержимое POST-запросом по указанной в настройках ссылке)

Возвращаемся на экран настроек Internet программы Cumulus и указываем путь запуска Cumulus Gateway в разделе Realtime Program:

Собственно всё, для проверки заходим в панель управления MajorDoMo в раздел "Классы объектов" и смотрим появился ли объект нашей погодной станции:

Кликнув на свойства объекта, видим:

Т.е. система получает данные со станции и сохраняет их свойства объекта. Теперь можно в своём скрипте получить значение температуры на улицы следующим кодом:

$temp=getGlobal("ws.tempOutside");

Так же можно использовать эти переменные для построения и вывода графиков.

Linux

Пока не реализовано, но можно перейти по ссылке сверху страницы и по аналогии организовать интеграцию.

 
 

Обсуждение

 

sergejey: Обсуждение страницы Погодная станция WH-2080

Vit: Подключил, все работает, осталось графики нарисовать и вывести все показания в систему.. :)

Vit: Вывел данные в систему с погодной станции, пока в таком виде :) http://clip2net.com/clip/m117725/1345205477-clip-16kb.jpg http://clip2net.com/clip/m117725/1345206266-clip-51kb.png

tammat: Прикупил тут станцию lw301. с выводом данных в Инет. Но как вытащить данные из нее??? Подключаю без модуля через usb, ни windows, ни linux Или как вытащить свои же данные с osanywhereweather.com. Как передавать параметры внутрь ??? Спасибо

sergejey: Теоретически, через веб переменные (если там не закрыто паролем). Или почитать здесь про вытягивание данных из интернета: viewtopic.php?f=4&t=563 Там как раз с погодной станцией я разбирался (от другого производителя) -- та же история.

tammat: Я в java-близок к нулю $('#loginView #loginForm').submit( function(e){ e.preventDefault(); e.stopImmediatePropagation(); UIController.showProgress(); setTimeout(function(){ AnywhereWeather.doLogin($('#loginForm #email').val(), $('#loginForm #password').val()) .then( function(data){ //$('#weatherBackground').css({'background-image': "url('img/bg/main_bg1.jpg')"}); AnywhereWeather.showLive(); }).fail(function(data){ alert('The password you entered is incorrect.'); }).always(function(){UIController.hideProgress();}); }, 600); return false; А форма входа <form name="loginForm" id="loginForm" method="get"> <input id="email" placeholder="E-mail" type="text"> <input id="password" placeholder="Password" type="password"> <button class="btn" type="submit" id="loginSubmit" autofocus="">LOGIN</button> Насколько я понимаю, надо передать поля email, password и скачать страницу osanywhereweather.com/#live а затем уже web переменные... Как это лучше сделать? PS. Попробывал Ваш скрипт сохраняет пустой файл. Возможно ли это обойти? Спасибо

Anton_kulibin: Вообщем и я обзавелся WH-2080, проблемы с внедрением в МДМ конечно были, но это скорее с нехваткой времени для изучения питона, но вопрос не в этом интересует rain, в каких единицах он грузится со станции?

sergejey: мне кажется, что в мм выпавших осадков. там, кстати, с дождём глюк есть, который всё никак руки не доходят исправить. в файле ./scripts/cumulus.php есть такие строчки $known_fields = array( 'tempOutside' => 2, 'relHumOutside' => 3, 'dewPoint' => 4, 'windLatest' => 6, 'windAverage' => 5, 'rainfallRate' => 8, 'rainfallHour' => 9, 'rainfall24' => 47, 'pressure' => 10, 'pressureRt' => -1, 'pressureTrend' => 18, 'windDirection' => 11, 'windDirectionAverage' => 51, 'tempInside' => 22, 'relHumInside' => 23, 'updatedTime' => 1, 'updatedDate' => 0, ); это соответствие данных порядковому номеру числа, передаваемого программой в параметрах вызова. так вот, с дождём что-то перепутано -- то ли текущее показание осадков со среднесуточным, то ли со среднечасовым. короче, в систему попадает одно вместо другого, но т.к. не мог подловить, чтобы все числа были разные (что б однозначно определить что к чему), то пока так и оставил. если будешь видеть, как должно быть, то дай знать пожалуйста -- исправлю в исходниках :)

Anton_kulibin: мне кажется, что в мм выпавших осадков. там, кстати, с дождём глюк есть, который всё никак руки не доходят исправить. в файле ./scripts/cumulus.php есть такие строчки $known_fields = array( 'tempOutside' => 2, 'relHumOutside' => 3, 'dewPoint' => 4, 'windLatest' => 6, 'windAverage' => 5, 'rainfallRate' => 8, 'rainfallHour' => 9, 'rainfall24' => 47, 'pressure' => 10, 'pressureRt' => -1, 'pressureTrend' => 18, 'windDirection' => 11, 'windDirectionAverage' => 51, 'tempInside' => 22, 'relHumInside' => 23, 'updatedTime' => 1, 'updatedDate' => 0, ); это соответствие данных порядковому номеру числа, передаваемого программой в параметрах вызова. так вот, с дождём что-то перепутано -- то ли текущее показание осадков со среднесуточным, то ли со среднечасовым. короче, в систему попадает одно вместо другого, но т.к. не мог подловить, чтобы все числа были разные (что б однозначно определить что к чему), то пока так и оставил. если будешь видеть, как должно быть, то дай знать пожалуйста -- исправлю в исходниках :) Это все понятно, я не твою программку использую просто у меня сервер на linux, и значение не меняется застряло на 21, на станции в меню щелкал дак это значение Total. но опять 21 мм дождя это не мало, а его практически небыло

Anton_kulibin: Вообщем все я вроде разобрался с метеостанцией, Если уж все работает на linux пришлось повозиться с pywws. Вообще то все описано на ab-log.ru. Проблема в том что со станции данные дождя приходят нарастающим итогом, пришлось часовые показания считать самому, на сколько правильно получилось сказать не могу. Предсказание погоды тоже сделал. Так что буду наблюдать.

kanakoff: Ребята помогите новичку. У меня станция WH-1080. Сервер на Ubuntu. Станцию подключил, снимаю показания как описано у соседей (ab-log.ru). Разъясните по подробней как интегрировать в МДМ?

Дядя Вова: Ребята помогите новичку. У меня станция WH-1080. Сервер на Ubuntu. Станцию подключил, снимаю показания как описано у соседей (ab-log.ru). Разъясните по подробней как интегрировать в МДМ? Тоже озадачен этим вопросом. Пробую запустить /var/www/scripts/cumulus.php но: 1) пришлось полностью указать путь: chdir('../');

include_once(
"/var/www/config.php");
include_once(
"/var/www/lib/loader.php");
2) // connecting to database
db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME); 
PHP Fatal error: Class 'mysql' not found in /var/www/scripts/cumulus.php on line 9 Если поменять на mysqli, то тоже ошибка, но нефатальная - проскакивает дальше. Видимо настройки php mysql подкачали или нет? 3) Как называется нужная таблица в db_terminal? пока не нашел.

xor: По поводу дождя - вроде, кумулус в rainfall24 присылает кол-во осадков не за 24 часа, а в текущие сутки. Добавил в cumulus.php sensorContactLost - потеря контакта с внешним модулем forecastNumber - номер текущего прогноза по алгоритму Замбретти - прикольно :                   'sensorContactLost'    => 50,
                  'forecastNumber'       => 48, и ещё в конце: if ($updated['pressure'])
{
   setGlobal('ws.pressureRt', round(((float)getGlobal('ws.pressure')) / 1.33), 1);
}
//--------------------------------добавлено
if ($updated['forecastNumber'])
{
   if(gg('ws.tempoutside')>2){
         $zumber=array(
         "Неопределенная", 
         
"Отличная, ясно", 
         
"Хорошая, ясно", 
         
"Становление хорошей, ясной", 
         
"Хорошая, но ухудшается", 
         
"Хорошая, возможен ливень", 
         
"Достаточно хорошая, улучшается", 
         
"Достаточно хорошая, возможен ливень", 
         
"Достаточно хорошая, но ожидается ливень", 
         
"Ливень, но улучшается", 
         
"Переменчивая, но улучшается", 
         
"Достаточно хорошая, вероятны ливни", 
         
"Пасмурно, но проясняется", 
         
"Пасмурно, возможно улучшение", 
         
"Ливни, возможны временные прояснения", 
         
"Ливни, становится менее устойчивой", 
         
"Переменчивая, небольшие дожди", 
         
"Пасмурная, короткие прояснения", 
         
"Пасмурная, ожидаются дожди", 
         
"Пасмурная, временами дожди", 
         
"Преимущественно очень пасмурная", 
         
"Временами дожди, ухудшение", 
         
"Временами дожди, очень плохая, пасмурно", 
         
"Дожди очень часто", 
         
"Дожди, очень плохая, пасмурно", 
         
"Штормовая, но улучшается", 
         
"Штормовая!, дожди");
   }else{
         $zumber=array(
         "Неопределенная",
         "Отличная, ясно", 
         
"Хорошая, ясно", 
         
"Становление хорошей, ясной", 
         
"Хорошая, но ухудшается", 
         
"Хорошая, возможен снегопад", 
         
"Достаточно хорошая, улучшается", 
         
"Достаточно хорошая, возможен снегопад", 
         
"Достаточно хорошая, но ожидается снегопад", 
         
"Снегопад, но улучшается", 
         
"Переменчивая, но улучшается", 
         
"Достаточно хорошая, вероятен снегопад", 
         
"Пасмурно, но проясняется", 
         
"Пасмурно, возможно улучшение", 
         
"Снегопады, возможны временные прояснения", 
         
"Снегопады, становится менее устойчивой", 
         
"Переменчивая, небольшой снег", 
         
"Пасмурная, короткие прояснения", 
         
"Пасмурная, ожидается снег", 
         
"Пасмурная, временами снег", 
         
"Преимущественно очень пасмурная", 
         
"Временами снег, ухудшение", 
         
"Временами снег, очень плохая, пасмурно", 
         
"Снег очень часто", 
         
"Снег, очень плохая, пасмурно", 
         
"Штормовая, но улучшается", 
         
"Штормовая!, снегопад");
   }
    setGlobal('ws.forecast', $zumber[gg('ws.forecastNumber')]);
}
////--------------------------------/добавлено
echo "OK";

[ Обсудить на форуме ]

 

MajorDomo

Информация

Проекты

Партнёры

edit SideBar

 
 
 

 

Blix theme adapted by David Gilbert, powered by PmWiki