Arduino Mega Server

Модератор: Alex

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

Я так понимаю для нормальной работы AMS с MDM мне не нужно включать тандемный режим? Достаточно раскоментировать строку "//#define MAJORDOMO_FEATURE"?
Забудьте про тандемный режим, это пережиток прошлого, в 0.16 версии его уже нет.
Эти файлы отличаются чем-то существенным от тех, которые идут в архиве microSD.zip? И с чем удобней и проще работать, с исходниками или архивом?
Исходники для изменения и отправки на сервер. Содержимое microSD.zip для первоначальной записи на карту.
Allar
Сообщения: 35
Зарегистрирован: Пн авг 22, 2016 9:22 am

Re: Arduino Mega Server

Сообщение Allar »

что не так делаю?
SPOILERSPOILER_SHOW
1970-01-01 00:00:07 Modul Temperature...
1970-01-01 00:00:07 Parasite power OFF
1970-01-01 00:00:07 Found 0 devices
1970-01-01 00:00:07 #0: 0 0 0 0 0 0 0 tempSTR
1970-01-01 00:00:07 #1: 0 0 0 0 0 0 0 tempHOM
1970-01-01 00:00:07 #2: 0 0 0 0 0 0 0 tempWRM
1970-01-01 00:00:07 started
1970-01-01 00:00:07 Modul nooLite... started
1970-01-01 00:00:07 GLOBAL Init DONE (7s)
почему Parasite power OFF ?

*** Сообщение запрещено. Сообщение похоже на спам. ***
cahek2202
Сообщения: 23
Зарегистрирован: Пт окт 07, 2016 7:35 pm
Откуда: Москва

Re: Arduino Mega Server

Сообщение cahek2202 »

Добрый вечер! В скетче сенсора обнаружил небольшой недочет. В данной реализации температура не будет передаваться на сервер если дельта температуры за исходный промежуток времени не превышает 0,5 градуса (то есть отправил сенсор на сервер показание 27,5 градуса, следующее измерение дает значение 27,1 градуса, статус "отправка не требуется" и он это значение сохраняет в переменную temp1Back, и следующее значение например, 26,7 градуса, от начального показания разница составляет уже 0,8 градуса и отправка на сервер нужна, но скетч считает разницу 0,4 градуса и отправки не происходит. Опытным путем у меня вышло нерегистрируемое изменение температуры до 4 градусов.
Если нужно - могу выложить свой скетч, но я его подправил под себя немного, и выглядит он несколько топорно, опыта еще маловато, по ходу дела изучаю...

Если не сложно - подскажите что значат вот эти символы "->" и "*" вот в этой части кода например:

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

void makePacket(struct Sender *p, byte tpe, byte cmd, byte dest, String pwd, String dta) {
  // sender
  if (p->required) {p->active = true;  p->success = false;}
              else {p->active = false; p->success = true;}

  p->command = cmd;
  p->timer   = millis();
  
  byte type;
  if (p->type) {type = p->type;}
          else {type = tpe;} 
не могу понять что значат вот эти строки "struct Sender *p" и "p->required". Подскажите, пожалуйста, что это значит или ткните где почитать можно, гугл символы не воспринимает)
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Обязательно выкладывайте!!! У меня ситуация еще хуже - при старте температура передается сразу , а по мере быстрого прогрева бойлера в сериале вижу алармы, но АМС их не обрабатывает. Температура так и стоит , как при старте. Вообще хочется ,чтобы передавалась тупо каждый настраиваемый промежуток времени ( ну хотя бы раз в минуту или пять). Интересно смотреть за нагревом в двух баках одного бойлера.)))
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

В данной реализации температура не будет передаваться на сервер если дельта температуры за исходный промежуток времени не превышает 0,5 градуса
Это сделано специально, чтобы и за температурой можно было следить и не загружать эфир постоянными посылками. И эти параметры можно изменять в зависимости от вашей задачи.
Если не сложно - подскажите что значат вот эти символы "->" и "*" вот в этой части кода например:

не могу понять что значат вот эти строки "struct Sender *p" и "p->required". Подскажите, пожалуйста, что это значит или ткните где почитать можно, гугл символы не воспринимает)
Это нужно целую лекцию читать и не одну. Если коротко, то

p->active = true;

Значит присвоить свойству active объекта p значение true.

“*” - это большая тема про сылочные типы и указатели — смотрите в поиске — статей огромное количество в Интернет.
cahek2202
Сообщения: 23
Зарегистрирован: Пт окт 07, 2016 7:35 pm
Откуда: Москва

Re: Arduino Mega Server

Сообщение cahek2202 »

Alex писал(а):
В данной реализации температура не будет передаваться на сервер если дельта температуры за исходный промежуток времени не превышает 0,5 градуса
Это сделано специально, чтобы и за температурой можно было следить и не загружать эфир постоянными посылками. И эти параметры можно изменять в зависимости от вашей задачи.
Я описание читал, и логику работы понял, но в данном скетче она не соответствует описанию. В данном случае получается что если на сервер отправил температуру например 27,5 градуса, а последующие, скажем пять измерений имели такие значения 27,1; 26,8; 26,4; 26,1; 25,7. То на сервере так и останется температура 27,5 градуса. Хотя изменение температуры составило уже 1,8 градуса. Суть в том что temp1Back=temp1 выполняется на каждом цикле измерения температуры, а по факту необходимо это действие выполнять только при отправлении данных о температуре на сервер.

я это вот так у себя реализовал:

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

case 0: 
        temp1 = getTemperature(0);
      #ifdef NRF24_FEATURE
        if      (temp1 == TEMP_NOT_PRESENT) {temp1NeedSend = NEED_SEND_NOT_PRESENT;}
        else if (temp1 == TEMP_NOT_DEFINED) {temp1NeedSend = NO_NEED_SEND;}        
        else if (temp1 == TEMP_REMOVED)     {temp1NeedSend = NEED_SEND_REMOVED;}
        else if (temp1 == TEMP_ERROR)       {temp1NeedSend = NEED_SEND_ERROR;}        
        else {
          if (temp1Back != TEMP_NOT_DEFINED) {
            float t1 = temp1 - temp1Back;
            if (abs(t1) > 0.5) {temp1NeedSend = NEED_SEND_TEMP; temp1Back = temp1;}
            if (temp1 - temp1Back > 3)   {temp1NeedSend = NEED_SEND_ALARM_UP; }
            if (temp1Back - temp1 > 3)   {temp1NeedSend = NEED_SEND_ALARM_DOWN;}
          } else {        
          temp1Back = temp1;
          }
        } // else
      #endif // NRF24_FEATURE
        break; 
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

Я описание читал, и логику работы понял, но в данном скетче она не соответствует описанию. В данном случае получается что если на сервер отправил температуру например 27,5 градуса, а последующие, скажем пять измерений имели такие значения 27,1; 26,8; 26,4; 26,1; 25,7. То на сервере так и останется температура 27,5 градуса. Хотя изменение температуры составило уже 1,8 градуса. Суть в том что temp1Back=temp1 выполняется на каждом цикле измерения температуры, а по факту необходимо это действие выполнять только при отправлении данных о температуре на сервер.
Вполне возможно. Когда я буду заниматься этим кодом - обращу внимание на этот момент. А пока кто-нибудь может проверить ваше решение и подтвердить его работоспособность.
cahek2202
Сообщения: 23
Зарегистрирован: Пт окт 07, 2016 7:35 pm
Откуда: Москва

Re: Arduino Mega Server

Сообщение cahek2202 »

serghei писал(а):Обязательно выкладывайте!!!
https://drive.google.com/file/d/0B6zA4V ... sp=sharing
здесь архив со скетчем для сенсора. Из изменений - на сенсоре 3 датчика температуры, на начальной стадии попытка подружить его с датчиком DHT. Так же по 1-wire добавил обязательную отправку температуры раз в 5 минут с последней отправки данных (если в течении 5 минут данные отправляются по условию изменения температуры на 0,5 градуса, счетчик сбрасывается и начинается новый отсчет). На этих выходных в планах разобраться окончательно с DHT, подружить с реле, начать работу с адресами (возможно каналами) для стабильной работы нескольких модулей.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Обязательно проверю и отпишусь.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
cahek2202
Сообщения: 23
Зарегистрирован: Пт окт 07, 2016 7:35 pm
Откуда: Москва

Re: Arduino Mega Server

Сообщение cahek2202 »

serghei писал(а):при старте температура передается сразу
а можете свой вариант тоже показать? Пытался сделать первую передачу температуры сразу после старта сенсора, но внятного ничего не получилось, решил это оставить на потом, пока есть более насущные вопросы.
Ответить