Weather Station

agamemnen
agamemnen аватар
Offline
Зарегистрирован: 30.09.2013

Все доброго врмени суток.

Есть метеостанция реализованная по проекту описанному в данной статье.

В текущей модификации проект дополнен радиомодулем и радиодатчиком Oregon THGN132N.

Вся система прекрасно функционирует, данные в порт выводятся стабильно и с внутренних и с внешних датчиков.

Но столкнулся с проблемой, не могу решить проблему вывода информации с радиодатчика на генерируемую WEB-страницу.

Увы, опыт работы с данной платформой, не такой большой. Поэтому сам понять где ошибмаюсь не могу.

Может кто поможет,с кодом, как верно сделатьвывод в WEB?

 

Ссылка на скетч

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

А почему сразу на web-страницу? Выведите их куда-нибудь поближе: на сериал монитор, например...

maksim
Offline
Зарегистрирован: 12.02.2012

agamemnen пишет:

Но столкнулся с проблемой, не могу решить проблему вывода информации с радиодатчика на генерируемую WEB-страницу.

С какой проблеиой? В указанной вами статье есть вывод в браузер.

И почитайте это Вставка программного кода в тему/комментарий.

agamemnen
agamemnen аватар
Offline
Зарегистрирован: 30.09.2013

 

Согласен, что изложил проблему несколько расплывчато.

Сделаю оговорку, на данный момент схема имеет внутренние датчики температуры, давления и влажности, а так же радио-модуль и подпрограмму позволяющую расшифровывать данные с датчика Oregon THGN132N, получаемые по радиоканалу (температуру и влажность).

В сериал монитор данные со всех датчиков прекрасно выводятся:

 

В начале идут данные с внешнего датчика, потом в внутренних.

На WEB-старницу выводятся данные только внутренних датчков:

   //==============Вывод значений на web-страницу============================
              client.println("<hr />");//линия=====================================
            client.println("Tемпература = ");    //Температура с DHT 22
            client.println(t_dth);
            client.println(" *C");
              client.println("<br> "); //перенос на след. строчку
            client.println("Влажность = ");    //Влажность с DHT 22
            client.println(h_dth);
            client.println(" %\t");
              client.println("<br> "); //перенос на след. строчку
              client.println("<hr />");//линия=====================================
            client.println("Давление = ");    //давление с BMP 085
            client.println(Pa);
            client.println(" mm.рт.ст.");
               client.println("<br> "); //перенос на след. строчку
            client.println("<hr />");  //линия=====================================
            client.println("Давление = ");    //давление с BMP 085
            client.println(Pa2);
            client.println(" in Hg");
               client.println("<br> "); //перенос на след. строчку
               client.println("<hr />");  //линия=====================================
            client.println("Tемпература внутреняя = ");//температура с BMP 085
            client.println(tdpa);
            client.println(" *C");
               client.println("<br> "); //перенос на след. строчку
               client.println("<hr />");  //линия=====================================
            //====================================================================         
            client.println("</body></html>");
            //очищаем строку для следующего считывания      
            //==============Останавливаем web-client===============================
            readString="";
            client.stop();
            //====================================================================

 

Данные с внешнего датчика выводяться в сериал порт в данном отрывке:

 

#ifndef DISABLE_DEBUG
    Serial.print("[THGN132N,...] Id:");
    Serial.print(data[3], HEX);
    Serial.print(", Channel:");
    Serial.print(channel(data));
    Serial.print(", temp:");
    Serial.print(temperature(data));
        Serial.print("С");
    Serial.print(", hum:");
    Serial.print(humidity(data));
      Serial.print("%");
    Serial.print(", bat:");
    Serial.print(battery(data));
      Serial.print("%");
    Serial.println();
#endif  
    if (channel(data) > 0 && channel(data) < 4){
      t[channel(data)-1]=temperature(data);
      h[channel(data)-1]=humidity(data);
      b[channel(data)-1]=battery(data);
    }
  }

 

 

При попытках вывести их на WEB-старницу, выполнение программы просто виснет и нет ни генерации старницы,ни данных в порт. Пытался делать так:

             client.println("Tемпература внешняя = ");//температура с ОРЕГОН
          client.println(t_oregon);
          client.println(" *C");
          client.println("<br> "); //перенос на след. строчку
          client.println("<hr />");  //линия=====================================

Подскажите как правильно написать вывод данных внешнего датчика.Исходный общий код в первом посте.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Тут несколько вариантов: либо упираетесь в общий объем страницы, который больше буфера сетевого контроллера, либо тип данных некорректный. Попробуйте закомментировать только строку вывода самой переменной, и сохранив страницу - посмотреть ее объем в байтах.

agamemnen
agamemnen аватар
Offline
Зарегистрирован: 30.09.2013

Данный вариант расматривал.

С объемом данных норма. А вот с типом данных думаю проблема.

Но, увы,ее решения не вижу, не столько опыта работы с данной платформой. 

maksim
Offline
Зарегистрирован: 12.02.2012

Для начала выложите весь код ,но сверните его по сылке выше показано как это сделать.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

agamemnen пишет:

Но, увы,ее решения не вижу, не столько опыта работы с данной платформой. 

Закомментируйте строчки:

client.println(t_oregon);

client.println(" *C");

или замените их временно статическим текстом и проверьте работу... Платформа тут не при чем.

Ну и вот такие выкрутасы

client.println(" *C");
client.println("<br> "); //перенос на след. строчку
client.println("<hr />");  //линия=====================================
//====================================================================       

 

я бы сократил до одной строчки: client.println("oC <br>  <hr />"); Браузер сам отрендерит строчки как надо.

agamemnen
agamemnen аватар
Offline
Зарегистрирован: 30.09.2013

Согласен, спасибо за подсказку.

 

Температура, в порт , выводиться вот так:

Serial.print(temperature(data));

Но если написать вот так, для вывода на страницу, не идет:

client.println(temperature(data)); 

Почему в порт так выводиться, а на страницу нет? Или я чтото упускаю?

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

agamemnen, а если так:



String out="";
char buf[10];
dtostrf(temperature(data), 3, 1, buf);
out+= buf;
client.println(out);

 

agamemnen
agamemnen аватар
Offline
Зарегистрирован: 30.09.2013

Хорошая идея

но:

METEO_RAB_ITOG.ino: In function 'void datchiki()':
METEO_RAB_ITOG:396: error: 'client' was not declared in this scope
METEO_RAB_ITOG:438: error: 'data' was not declared in this scope
METEO_RAB_ITOG.ino: At global scope:
METEO_RAB_ITOG:451: error: expected declaration before '}' token

 

agamemnen
agamemnen аватар
Offline
Зарегистрирован: 30.09.2013

а нельзя как то из порта выдрать данные в страницу?

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

agamemnen, ну это не из-за моего примера ))

Ищи ошибки в коде.

Только что попробовал тот код - компилится. А вот твой (из первого поста) нет - именно такие ошибки

agamemnen пишет:

а нельзя как то из порта выдрать данные в страницу?

А что подразумевается под "выдрать данные на страницу"?

agamemnen
agamemnen аватар
Offline
Зарегистрирован: 30.09.2013

отобразить, вывести..............

 

Может есть иные команды позволяющие это?

 

PS

В статье, там без внешнего датчка.

А тут в первом посте уже с ним.

Лог то в порт я получаю и компилиться все. А вот в WEB не отобразить.

Просто задумвалось как домашняя сетевая метео станция,а данных с внешнего датчика как раз и не получить. А выводить проводные датчики как то не сильно хочется.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

agamemnen пишет:

Почему в порт так выводится, а на страницу нет? Или я чтото упускаю?

Вообще говоря, данные выводить в любом случае должно, правда там будет ахинея или псевдографика...

Не выводятся только переменные? Если вместо переменной вбить обычный (статический) текст - выводится нормально?