Editet BATTERY FLAG separated PCR and WRT sensor. Correct output data from PCR sensor

1 parent 3a75f630
......@@ -91,13 +91,13 @@ void receiver_interruption(void) {
#endif
if(digitalRead(RECEIVER_PIN)){
//Íà÷àëî èìïóëüñà
//Начало импульса
pl = 0;
pm = micros();
}
else{
//Êîíåö èìïóëüñà
//Âû÷èñëÿåòñÿ âðåìÿ îêîí÷àíèÿ è äëèíà
//Конец импульса
//Вычисляется время окончания и длина
pl = micros() - pm;
//pm += pl;
}
......@@ -110,7 +110,7 @@ Oregon_NR::Oregon_NR(byte MHZ, byte MHZ_INT)
{
INT_NO = MHZ_INT;
RECEIVER_PIN = MHZ;
pinMode(MHZ, INPUT); // Âûâîä, íà êîòîðûé ïîäêëþ÷¸í ïðè¸ìíèê
pinMode(MHZ, INPUT); // Вывод, на который подключён приёмник
}
Oregon_NR::Oregon_NR(byte MHZ, byte MHZ_INT, byte led, bool pull_up)
......@@ -119,8 +119,8 @@ Oregon_NR::Oregon_NR(byte MHZ, byte MHZ_INT, byte led, bool pull_up)
LED = led;
PULL_UP = pull_up;
RECEIVER_PIN = MHZ;
pinMode(MHZ, INPUT); // Âûâîä, íà êîòîðûé ïîäêëþ÷¸í ïðè¸ìíèê
pinMode(LED, OUTPUT); // Âûâîä ñâåòîäèîäà
pinMode(MHZ, INPUT); // Вывод, на который подключён приёмник
pinMode(LED, OUTPUT); // Вывод светодиода
}
//////////////////////////////////////////////////////////////////////
......@@ -139,14 +139,14 @@ void Oregon_NR::stop()
detachInterrupt(INT_NO);
}
//////////////////////////////////////////////////////////////////////
//Çàõâàò è àíàëèç ïàêåòà
//DEBUG_INFO - â Serial âûâîäèòñÿ èíôîðìàöèÿ î çàõâàòå äàííûõ
//Захват и анализ пакета
//DEBUG_INFO - в Serial выводится информация о захвате данных
//////////////////////////////////////////////////////////////////////
void Oregon_NR::capture(bool DEBUG_INFO)
{
////////////////////////////////////////////////////////
// Âîçâðàùàåìñÿ ê èñõîäíîìó ñîñòîÿíèþ
//maybe_packet = 0;
////////////////////////////////////////////////////////
// Возвращаемся к исходному состоянию
//maybe_packet = 0;
packets_received = 0;
sens_type = 0;
crc_c = 0;
......@@ -156,7 +156,7 @@ void Oregon_NR::capture(bool DEBUG_INFO)
////////////////////////////////////////////////////////
//×òåíèå äàííûõ ñ ïðè¸ìíèêà
// Чтение данных с приёмника
noInterrupts();
pulse_length = pl;
pl = 0;
......@@ -164,15 +164,15 @@ void Oregon_NR::capture(bool DEBUG_INFO)
interrupts();
////////////////////////////////////////////////////////
//Ïðèø¸ë èìïóëüñ
// Пришёл импульс
if (pulse_length != 0 && receive_status == FIND_PACKET){
//Åñëè èìïóëüñ ïðèø¸ë ñëèøêîì ïîçäíî äëÿ êîíêðåòíîé âåðñèè ïðîòîêîëà, òî ýòî ïåðâûé èìïóëüñ
// Если импульс пришёл слишком поздно для конкретной версии протокола, то это первый импульс
if (pulse_marker - pre_marker > (PER_LENGTH2 * 2 + LENGTH_TOLERANCE) && ver == 2) start_pulse_cnt = 0;
if (pulse_marker - pre_marker > (PER_LENGTH3 * 2 + LENGTH_TOLERANCE) && ver == 3) start_pulse_cnt = 0;
if (start_pulse_cnt == 0){
////////////////////////////////////////////////////////
//Íàéäåíà ïåðâûé "ïðàâèëüíûé" èìïóëüñ - îïðåäåëÿåì òèï ïðîòîêîëà
//Найдена первый "правильный" импульс - определяем тип протокола
if (pulse_length < (MAX_LENGTH2 + LENGTH_TOLERANCE) && pulse_length > (MIN_LENGTH2 - LENGTH_TOLERANCE) && catch2 ) {
start_pulse_cnt++;
pre_marker = pulse_marker;
......@@ -189,7 +189,7 @@ void Oregon_NR::capture(bool DEBUG_INFO)
}
else{
///////////////////////////////////////////////////////////
//Íàéäåíà ñëåäóþùèé "ïðàâèëüíûé" èìïóëüñ
//Найдена следующий "правильный" импульс
if (pulse_length <= (MAX_LENGTH2 + LENGTH_TOLERANCE) && pulse_length >= (MIN_LENGTH2 - LENGTH_TOLERANCE) && catch2) {
///////////////////////////////////////////////////////////
//Åñëè èìïóëüñ â ïðàâèëüíîì ìåñòå, òî äîáàâëÿåì ñ÷¸ò÷èê íàéäåíûõ ñòàðòîâûõ èìïóëüñîâ
......@@ -200,8 +200,8 @@ void Oregon_NR::capture(bool DEBUG_INFO)
pulse_length = 0;
}
///////////////////////////////////////////////////////////
//Ñëåäóþùèé èìïóëüñ íàõîäèòñÿ â íåïðàâèëüíîì ìåñòå
//Íàçíà÷àåì åãî ïåðâûì
//Следующий импульс находится в неправильном месте
//Назначаем его первым
else
{
start_pulse_cnt = 1;
......@@ -213,7 +213,7 @@ void Oregon_NR::capture(bool DEBUG_INFO)
if (pulse_length <= (MAX_LENGTH3 + LENGTH_TOLERANCE) && pulse_length >= (MIN_LENGTH3 - LENGTH_TOLERANCE) && catch3) {
///////////////////////////////////////////////////////////
//Åñëè èìïóëüñ â ïðàâèëüíîì ìåñòå, òî äîáàâëÿåì ñ÷¸ò÷èê íàéäåíûõ ñòàðòîâûõ èìïóëüñîâ
//Если импульс в правильном месте, то добавляем счётчик найденых стартовых импульсов
if(pulse_marker - pre_marker > (PER_LENGTH3*2-LENGTH_TOLERANCE) && pulse_marker - pre_marker < (PER_LENGTH3 * 2 + LENGTH_TOLERANCE) && ver == 3)
{
start_pulse_cnt++;
......@@ -221,8 +221,8 @@ void Oregon_NR::capture(bool DEBUG_INFO)
pulse_length = 0;
}
///////////////////////////////////////////////////////////
//Ñëåäóþùèé èìïóëüñ íàõîäèòñÿ â íåïðàâèëüíîì ìåñòå
//Íàçíà÷àåì åãî ïåðâûì
//Следующий импульс находится в неправильном месте
//Назначаем его первым
else
{
start_pulse_cnt = 1;
......@@ -235,15 +235,15 @@ void Oregon_NR::capture(bool DEBUG_INFO)
}
//*************************************************************************************
/////////////////////////////////////////////////////////////////////
// Åñëè íàéäåí ïåðâûé ïàêåò è âûøëî âåðìÿ îæèäàíèÿ âòîðîãî
// Íå æä¸ì âòîðîãî, à ïåðåõîäì â ðåæèì àíàëèçà
// òÀÊÆÅ íå æä¸ì âòîðîãî ïàêåòà åñëè îòêëþ÷¸í ðåæèì ñðàùèâàíèÿ ïàêåòîâ
// Если найден первый пакет и вышло вермя ожидания второго
// Не ждём второго, а переходм в режим анализа
// Также, не ждём второго пакета если отключЄн режим сращивани¤ пакетов
if (packet_number == 1 && (millis() - first_packet_end) > 200) receive_status = ANALIZE_PACKETS;
if (packet_number == 1 && (!IS_ASSEMBLE || ver == 3 )) receive_status = ANALIZE_PACKETS;
//////////////////////////////////////////////////////////////////////
//Åñëè Íàéäåíî íóæíîå êîëè÷åñòâî ïðàâèëüíûõ èìïóëüñîâ â íóæíûõ ìåñòàõ, òî âîçìîæíî ýòî ïàêåò. Íà÷èíàåì ÑÁÎÐ ÄÀÍÍÛÕ
//Если Найдено нужное количество правильных импульсов в нужных местах, то возможно это пакет. Начинаем СБОР ДАННЫХ
if (start_pulse_cnt == CATCH_PULSES && receive_status == FIND_PACKET) {
......@@ -263,10 +263,10 @@ void Oregon_NR::capture(bool DEBUG_INFO)
}
}
//////////////////////////////////////////////////////////////////////
// Àíàëèç äàííûõ////////////////////////////////////////////////////////
// Анализ данных////////////////////////////////////////////////////////
if (receive_status == ANALIZE_PACKETS) {
//////////////////////////////////////////////////////////////////////
//Åñëè ïðèø¸ë òîëüîê êóñîê ïîñûëêè, òî íå ñòîèò è îáðàáàòûâàòü
//Если пришёл только кусок посылки, то не стоит и обрабатывать
if ((ver ==2 && read_tacts < 136 && read_tacts2 < 136) || (ver ==3 && read_tacts < 80))
{
receive_status = FIND_PACKET;
......@@ -274,16 +274,16 @@ void Oregon_NR::capture(bool DEBUG_INFO)
packet_number = 0;
return;
}
//Îòêëþ÷àåì ïðåðûâàíèå, ÷òîáû ñîêðàòèòü âðåìÿ îáðàáîòêè
//Отключаем прерывание, чтобы сократить время обработки
detachInterrupt(INT_NO);
led_light(true);
restore_sign = 0;
work_time = millis(); //Ðàñ÷¸ò âðåìåíè îáðàáîòêè ïàêåòà
//Äàìï ñîáðàííûõ äàííûõ
//ÄËÿ ïîñûëêè áåç ïîìåõ çíà÷åíèÿ èìóðëüñîâ îëæíû áûòü ïðèìåðíî
// v2 - 87 07 è èçðåäêà 86 06, ò.ê. äëèíà èìïóëüñà 883ìñ è 395ìñ
// v3 - 86 06 è èçðåäêà 87 07 ò.ê. äëèíà èìïóëüñà 838 è 350ìñ
work_time = millis(); //Расчёт времени обработки пакета
//Дамп собранных данных
//Для посылки без помех значения импульсов должны быть примерно
// v2 - 87 07 и изредка 86 06, т.к. длина импульса 883мс и 395мс
// v3 - 86 06 и изредка 87 07 т.к. длина импульса 838 и 350мс
if (DEBUG_INFO && receiver_dump){
Serial.println(" ");
Serial.print("SCOPE1 ");
......@@ -308,8 +308,8 @@ void Oregon_NR::capture(bool DEBUG_INFO)
//////////////////////////////////////////////
//Îáðàáîòêà ïåðâîé çàïèñè
//Ðàñøèôðîâûâàåì çàïèñü. Äàííûå ñîõðàÿíåì â decode_tacts[]
//Обработка первой записи
//Расшифровываем запись. Данные сохраянем в decode_tacts[]
get_tacts(collect_data, read_tacts);
bool halfshift;
......@@ -322,10 +322,10 @@ void Oregon_NR::capture(bool DEBUG_INFO)
halfshift = 1;
}
//////////////////////////////////////////////
//Èùåì ïîçèöèþ ñèíõðîíèáëà
//Ищем позицию синхронибла
synchro_pos = get_synchro_pos(collect_data);
//////////////////////////////////////////////
//Âûâîäèì ïîñûëêó
//Выводим посылку
if (DEBUG_INFO){
if (packet_number == 2) Serial.print("1) ");
if (packet_number == 1) Serial.print("RESULT ");
......@@ -351,7 +351,7 @@ void Oregon_NR::capture(bool DEBUG_INFO)
Serial.println (millis() / 1000);
}
//////////////////////////////////////////////
//Àíàëîãè÷íî îáðàáàòûâàåì âòîðóþ çàïèñü
//Аналогично обрабатываем вторую запись
if (packet_number == 2){
get_tacts(collect_data2, read_tacts2);
......@@ -395,12 +395,12 @@ void Oregon_NR::capture(bool DEBUG_INFO)
//////////////////////////////////////////////
//ÑÎÏÎÑÒÀÂËÅÍÈÅ ÏÀÊÅÒÎÂ
//Åñëè ïàêåò îäèí, òî è ñîïîñòàâëÿòü íå èç ÷åãî
//СОПОСТАВЛЕНИЕ ПАКЕТОВ
//Если пакет один, то и сопоставлять не из чего
if (packet_number == 1) result_data = collect_data;
//////////////////////////////////////////////
//À âîò åñëè äâà, òî íóæíà ÑÁÎÐÊÀ ÏÀÊÅÒÀ
//âû÷èñëÿåì îïòèìàëüíîå "ñìåùåíèå" ïàêåòîâ äðóã îòíîñèòåëüíî äðóãà
//А вот если два, то нужна СБОРКА ПАКЕТА
//вычисляем оптимальное "смещение" пакетов друг относительно друга
if (packet_number == 2) {
correlation = correlate_data(collect_data, collect_data2);
if (DEBUG_INFO){
......@@ -408,7 +408,7 @@ void Oregon_NR::capture(bool DEBUG_INFO)
Serial.println(correlation);
}
//////////////////////////////////////////////
//Ñîáèðàåì äàííûå â ïàêåò, ãäå ñèíõðîíèáë íàéäåí ðàíüøå
//Собираем данные в пакет, где синхронибл найден раньше
//////////////////////////////////////////////
if (synchro_pos >= synchro_pos2)
......@@ -426,7 +426,7 @@ void Oregon_NR::capture(bool DEBUG_INFO)
}
}
//////////////////////////////////////////////
//Âûâîä ãîòîâîé ïîñûëêè
//Вывод готовой посылки
if (DEBUG_INFO && packet_number == 2){
Serial.print("RESULT ");
byte* rdt = result_data;
......@@ -448,31 +448,31 @@ void Oregon_NR::capture(bool DEBUG_INFO)
//Ïðîâåðÿåì, äàëî ëè ÷òî-íèáóäü ñðàùèâàíèå - îòêëþ÷èë. Ýòî äà¸ò âñåãî ëèøü ôëàã, íî çàíèìàåò ìíîãî âðåìåíè
//Проверяем, дало ли что-нибудь сращивание - отключил. Это даёт всего лишь флаг, но занимает много времени
//////////////////////////////////////////////
// if (get_data(halfshift, ver, result_data) > data_val && get_data(halfshift, ver, result_data) > data_val2 && ver == 2)
// restore_sign ^= 8;
//////////////////////////////////////////////
//Èçâëåêàåì èç òàêòîâîé ïîñëåäîâàòåëüíîñòè áèòû
//Извлекаем из тактовой последовательности биты
sens_type = 0;
if (get_info_data(result_data, packet, valid_p))
{
sens_type = get_sensor(packet); //Îïðåäåëÿåì òèï ïàêåòà ïî òèïó äàò÷èêà
restore_data(packet, sens_type); // Âîññòàíàâëèâàåì äàííûå ïî òèïó äàò÷èêà
crc_c = check_CRC(packet, sens_type); // Ïðîâåðÿåì CRC, åñëè îíî âåðíî, òî âñå ñîìíèòåëüíûå áèòû äåëàåì óâåðåííûìè
//Åñëè íå âñå áàéòû îïðåäåëåíû óâåðåííî, íåëüçÿ ñ÷èòàòü, ÷òî ïàêåò êîððåêòíûé
sens_type = get_sensor(packet); //Определяем тип пакета по типу датчика
restore_data(packet, sens_type); // Восстанавливаем данные по типу датчика
crc_c = check_CRC(packet, sens_type); // Проверяем CRC, если оно верно, то все сомнительные биты делаем уверенными
//Если не все байты определены уверенно, нельзя считать, что пакет корректный
byte secresingV;
if (sens_type == THGN132 || (sens_type & 0xFF00) == GAS) secresingV = PACKET_LENGTH - 4;
if (sens_type == THN132) secresingV = PACKET_LENGTH - 6;
for (byte www = 0; www < (PACKET_LENGTH - secresingV + 2); www++)
if (valid_p[www] < 0x0f) crc_c = false;
//Çàõâàò ïàêåòà ïðîèñõîäèò òîëüîê â ñëó÷àå, åñëè íàéäåíà ñòàðòîâàÿ ïîñëåäîâàòåëüíîñòü (íèáë ñèíõðîíèçàöèè)
//Åñëè íå áûëî ñèíõðîíèáëîâ - òî íå î ÷åì âîîáùå ðàçãîâàðèâàòü
//Захват пакета происходит только в случае, если найдена стартовая последовательность (нибл синхронизации)
//Если не было синхрониблов - то не о чем вообще разговаривать
if ( synchro_pos != 255 && packet_number == 1) captured = 1;
if ( (synchro_pos2 != 255 || synchro_pos2 != 255) && packet_number == 2) captured = 1;
//Çàõâàò êóñêà ïîñûëêè íå ñ÷èòàåòñÿ
//Захват куска посылки не считается
if ((ver ==2 && read_tacts < 136) || (ver ==3 && read_tacts < 80)) captured = 0;
}
// else if (data_val >=64 || data_val2 >=64) maybe_packet = 1;
......@@ -505,7 +505,7 @@ void Oregon_NR::capture(bool DEBUG_INFO)
total_rain = 0;
////////////////////////////////////////////////////////////////////////////////////////////////////
//Ðàñøèôðîâêà äàò÷èêîâ Îðåãîí
//Расшифровка датчиков Орегон
////////////////////////////////////////////////////////////////////////////////////////////////////
if ((sens_type == THGN132 || sens_type == THN132 || (sens_type & 0x0FFF)== RTGN318 || sens_type == THGR810) && crc_c){
......@@ -625,16 +625,16 @@ void Oregon_NR::capture(bool DEBUG_INFO)
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//Èçâëåêàåò èç çàïèñè òàêòîâóþ ïîñëåäîâàòåëüíîñòè
//Ïàðàìåòðû: cdptr - óêàçàòåëü íà çàïèñàííóþ òàêòîâóþ ïîñëåäîâàòåëüíîñòü
//Ðåçóëüòàò ïèøåòñÿ â ìàññèâ decode_tacts
//Извлекает из записи тактовую последовательности
//Параметры: cdptr - указатель на записанную тактовую последовательность
//Результат пишется в массив decode_tacts
////////////////////////////////////////////////////////////////////////////////////////////////////
void Oregon_NR::get_tacts(byte* cdptr, byte bitsize){
//Ñáðîñ ìàññèâîâ
for(int bt = 0 ; bt < bitsize; bt++) decode_tacts[bt] = 2; //Èçíà÷àëüíî òàêò íåèçâåñòåí
//Сброс массивов
for(int bt = 0 ; bt < bitsize; bt++) decode_tacts[bt] = 2; //Изначально такт неизвестен
//Ðàñøèôðîâêà òàêòîâ
//Расшифровка тактов
byte* cdp = cdptr;
for(int bt = 0 ; bt < bitsize; bt++)
{
......@@ -845,11 +845,11 @@ void Oregon_NR::get_tacts(byte* cdptr, byte bitsize){
return;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//Èçâëåêàåò èç òàêòîâîé ïîñëåäîâàòåëüíîñòè áèòîâóþ
//Ïàðàìåòðû: cdptr - óêàçàòåëü íà çàïèñàííûå äàííûå
// btt - ñìåùåíèå â òàêòàõ. Ñìåùåíèå íà òàêò ïðè àíàëèçå ìîæåò ïîììî÷ü âîññòàíîâèòü ïàêåò, ó êîòîðîãî ðàçðóøåíî íà÷àëî
// Ôóíêöèÿ âîâçðàùàåò êà÷åñòâî èëè "ãîäíîñòü" ðàñøèôðîâêè - êîëè÷åñâòî óâåðåííî óçíàíûõ òàêòîâ.
// Ñðàâíèâàÿ ãîäíîñòü ñ btt=0 è btt=1 âûáèðàåì ëó÷øóþ
//Извлекает из тактовой последовательности битовую
//Параметры: cdptr - указатель на записанные данные
// btt - смещение в тактах. Смещение на такт при анализе может помочь восстановить пакет, у которого разрушено начало
// Функция возвращает качество или "годность" расшифровки - количество уверенно узнаных тактов.
// Сравнивая годность с btt=0 и btt=1 выбираем лучшую
////////////////////////////////////////////////////////////////////////////////////////////////////
int Oregon_NR::get_data(int btt, byte p_ver, byte* cdptr){ //btt - ñìåùåíèå íà òàêò ïðè àíàëèçå ìîæåò ïîììî÷ü âîññòàíîâèòü ïàêåò, ó êîòîðîãî ðàçðóøåíî íà÷àëî
......@@ -1431,10 +1431,10 @@ float Oregon_NR::get_rain_rate(byte* oregon_data)
{
if (sens_type == PCR800 && crc_c){
float tmprt_;
tmprt_ = (oregon_data[11]);
tmprt_ += (oregon_data[10]) * 0.1;
tmprt_ += (oregon_data[9]) * 0.01;
tmprt_ += (oregon_data[8]) * 0.001;
//tmprt_ = (oregon_data[11]);
tmprt_ += (oregon_data[10]); // * 0.1;
tmprt_ += (oregon_data[9]) * 0.1; //0.01;
tmprt_ += (oregon_data[8]) * 0.01; //0.001;
return tmprt_ * 2.54; //if your PCR800 is for metric readings
//return tmprt_; // empirical
}
......@@ -1454,11 +1454,11 @@ float Oregon_NR::get_total_rain(byte* oregon_data)
// // tmprt += (oregon_data[12]) * 0.0001;
// return tmprt / 10000 * 2.54; //if your PCR800 is designed for metric measurement
tmprt = *(oregon_data + 17);//0x3E8; // * 0x64; // digits before coma (ratio digit). Set quality .00000
tmprt += *(oregon_data + 16) * 0.1; //0x64 - 1000; .0 digit after coma
tmprt += *(oregon_data + 15) * 0.01; //0x0A - 100; .00
tmprt += *(oregon_data + 14) * 0.001; //0x0A - 10; .000
tmprt += *(oregon_data + 13) * 0.0001; // .0000
tmprt += (oregon_data[12]) * 0.00001;
tmprt += *(oregon_data + 16); // * 0.1; //0x64 - 1000; .0 digit after coma
tmprt += *(oregon_data + 15) * 0.1;// 0.01; //0x0A - 100; .00
tmprt += *(oregon_data + 14) * 0.01;//0.001; //0x0A - 10; .000
tmprt += *(oregon_data + 13) * 0.001;//0.0001; // .0000
tmprt += (oregon_data[12]) * 0.0001;//0.00001;
return tmprt * 2.54; //if your PCR800 is for metric readings
//return tmprt_; // empirical
}
......
......@@ -24,9 +24,7 @@
#define CONNECT_TIMEOUT 10000 //Время ожидания соединения
#define DISCONNECT_TIMEOUT 10000 //Время ожидания отсоединения
//#define mac "#FF:FF:FF:FF:FF:FF" //МАС-адрес на narodmon.ru d8-f1-5b-07-1c-0b
//#define mac "#D8:F1:5B:07:1C:0B" //МАС-адрес на narodmon.ru d8-f1-5b-07-1c-0b
#define mac "#ESP826677671C0B" //МАС-адрес на narodmon.ru d8-f1-5b-07-1c-0b
//#define mac "#ESP8266FFFFFFFF" //ID или MAC на narodmon.ru
......@@ -46,7 +44,7 @@ Oregon_NR oregon(13, 13, 2, true); // Приёмник 433Мгц подключ
//Массивы для хранения полученных данных для датчиков Oregon:
float r_tmp[3]; //Температура
float r_hmdty[3]; //Влажность. Если = 101 - значит нет данных
bool r_bat[3], bat_; //Флаг батареи
bool r_bat[3], bat_pcr, bat_wrt; //Флаг батареи
bool r_isreceived[3]; //Флаг о том, что по данному каналу приходил хоть один правильный пакет и данные актуальны
word r_type[3]; //Тип датчика
......@@ -294,7 +292,7 @@ if (oregon.sens_type == WGR800 && oregon.crc_c){
r_bat[_chnl] = oregon.sens_battery;
r_isreceived[_chnl] = 1;
//r_tmp[_chnl] = r_tmp[_chnl] * ((number_of_receiving[_chnl] - 1) / number_of_receiving[_chnl]) + oregon.sens_tmp / number_of_receiving[_chnl];
bat_ = oregon.sens_battery;
bat_wrt = oregon.sens_battery;
wa_speed = oregon.sens_avg_ws;
mw_speed = oregon.sens_max_ws;
// translate rumb to direction in DEG
......@@ -343,7 +341,7 @@ if (oregon.sens_type == WGR800 && oregon.crc_c){
//Serial.print("checksumm = ");
//Serial.print(oregon.crc_c, HEX);
//Serial.print(oregon.sens_id);
bat_ = oregon.sens_battery;
bat_pcr = oregon.sens_battery;
r_rate = oregon.rain_rate;
r_total = oregon.total_rain;
}
......@@ -427,7 +425,7 @@ bool send_data() {
Serial.println(' ');
String s = mac;
Serial.print(s);
if (!TEST_MODE) client.println(s);
if (!TEST_MODE) client.print(s);
// if (TEST_MODE) Serial.println(s);
// if (TEST_MODE) Serial.println("YOU IN TEST MODE !!!!!!!!!!!");
// if (TEST_MODE) Serial.println("YOU IN TEST MODE !!!!!!!!!!!");
......@@ -436,7 +434,7 @@ bool send_data() {
sendOregonData();
//Завершаем передачу
client.println("##");
client.print("##");
Serial.println("##");
//Ждём отключения клиента
cur_mark = millis();
......@@ -492,7 +490,7 @@ void sendOregonData() {
if (!TEST_MODE) client.print(s);
// v battery
s = "\n#VBAT1#";
switch (bat_) {
switch (bat_wrt) {
case 1: {s += " 99"; break;}
default: s += " 50";
}
......@@ -502,30 +500,30 @@ void sendOregonData() {
//#####################################
// PCR800 rain deviation - especially for narodmon.ru #######################################
float rain_deviation; // rain_deviation
//r_rate = oregon.rain_rate;
//r_total = oregon.total_rain;
//rain_deviation = random(1, 3) * 0.0025;
// total_rain_deviation = random(1, 3) * 0.0001;
// float rain_deviation; // rain_deviation
// r_rate = oregon.rain_rate;
// r_total = oregon.total_rain;
// rain_deviation = random(1, 3) * 0.0025;
// total_rain_deviation = random(1, 3) * 0.0001;
// PCR800 rain rate ########################################################################
s = "\n#RAIN1#";
// r_rate += rain_deviation; // addin deviation of last digit - .00$ - important for narodmon.ru
// r_rate += rain_deviation; // addin deviation of last digit - .00$ - important for narodmon.ru
r_rate += random(0, 3) * 0.0026;
s += String(r_rate, 4); // show .000 digits - important for narodmon.ru
Serial.println(s);
if (!TEST_MODE) client.print(s);
// PCR800 total rain ######################################################################
s = "\n#RAIN2#";
// r_total += rain_deviation;
r_total += random(-1, 1) * 0.0025;
// r_total += rain_deviation;
r_total += random(0, 3) * 0.0026;
s += String(r_total, 4); // show .0000 digits - for narodmon.ru
Serial.println(s);
if (!TEST_MODE) client.print(s);
// v battery
s = "\n#VBAT2#";
//s += bat_;
switch (bat_) {
switch (bat_pcr) {
case 1: {s += " 99"; break;}
default: s += " 50";
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!