Arduino Mega Server для esp8266

Модератор: Alex

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server для esp8266

Сообщение Alex » Чт июн 30, 2016 7:10 am

Первое что пришло в голову - это подключить датчик ds18b20 но не обнаружил модуль "Temperature" вот и родился этот вопрос.
Если вы «не обнаружили» модуль "Temperature", то это не значит, что его нет. :)

Но в работе он не тестировался — может работать, а может и нет.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для esp8266

Сообщение serghei » Чт июн 30, 2016 8:46 am

Как это не обнаружил??? А это что??
СпойлерПоказать

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

/*
  Modul Temperature for ESP8266
  part of Arduino Mega Server project
*/

#ifdef TEMP_FEATURE

#include <DallasTemperature.h>
#include <OneWire.h>

#define ONE_WIRE_BUS      2
#define MAX_ID_DIGITS     7
#define FULL_HEALTH       100
#define ZERO_HEALTH       0
#define MAX_TEMP_NAME_LEN 12
#define MAX_TEMP_SENSORS  3
byte tempSensorHealth[MAX_TEMP_SENSORS];
byte tempModulHealth;

char objSens[MAX_TEMP_SENSORS][MAX_TEMP_NAME_LEN] = {"tempSTR", "tempHOM", "tempWRM"};

// Sensors ID's
byte idTempDat[MAX_TEMP_SENSORS][MAX_ID_DIGITS] = { 
  {40, 240, 72, 81, 3, 0, 0},
  {40, 221, 16, 81, 3, 0, 0},
  {40,  23, 98, 87, 3, 0, 0},
}; 

float current_temp[MAX_TEMP_SENSORS];
int temp_[MAX_TEMP_SENSORS];

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempSensor[MAX_TEMP_SENSORS];

void tempInit() {
  initStart("Temperature");
  sensors.begin();
  timeStamp();
  Serial.print("Parasite power ");
  if (sensors.isParasitePowerMode()) {Serial.println("ON");}
                                else {Serial.println("OFF");}
  oneWire.reset_search();

  // locate devices on the bus
  timeStamp();
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount());
  Serial.println(" devices");

  for (byte i = 0; i < MAX_TEMP_SENSORS; i++) {
    sensors.getAddress(tempSensor[i], i);
    tempSensorHealth[i] = FULL_HEALTH;
  }
  tempModulHealth = FULL_HEALTH;
  oneWire.reset_search();
  
  showSensorsId();
  modulTemp = MODUL_ENABLE;
  initDone();
}

void showSensorsId() {
  for (byte n = 0; n < MAX_TEMP_SENSORS; n++) {
    timeStamp();
    Serial.print("#");
    Serial.print(n);
    Serial.print(":");
    for (byte i = 0; i < MAX_ID_DIGITS; i++) {
      Serial.print(" ");
      Serial.print(tempSensor[n][i]);
    }
    Serial.print(" ");
    Serial.println(objSens[n]);
  }
}

void setModulTempHealth() {
  int sumSensorsHealth = 0;
  for (byte i = 0; i < MAX_TEMP_SENSORS; i++) {
    sumSensorsHealth += tempSensorHealth[i];
  }
  tempModulHealth = sumSensorsHealth / MAX_TEMP_SENSORS;
}

void tempWorks() {
  sensors.requestTemperatures();
  getTemperature(0); // STR
  getTemperature(1); // HOM (SRV)
  getTemperature(2); // WRM  
  #ifdef TEMP_DEBUG
    for (byte i = 0; i < MAX_TEMP_SENSORS; i++) {
      timeStamp();
      Serial.print("Sensor ");
      Serial.print(objSens[i]);
      Serial.print(" health: ");
      Serial.println(tempSensorHealth[i]);
    }
    setModulTempHealth();
    timeStamp();
    Serial.print("Modil Temperature Health: ");
    Serial.println(tempModulHealth);
  #endif // TEMP_DEBUG
}
  
void getTemperature(byte n) {
  if (tempSensor[n][1] == idTempDat[n][1] && 
      tempSensor[n][2] == idTempDat[n][2] && 
      tempSensor[n][3] == idTempDat[n][3]) {
    tempSensorHealth[n] = FULL_HEALTH;
    current_temp[n] = sensors.getTempC(tempSensor[n]);

    if (current_temp[n] != -127) {
      if (current_temp[n] != 85) {
        timeStamp();
        Serial.print(objSens[n]);
        Serial.print(": ");
        Serial.println(current_temp[n]);
         
        temp_[n] = (current_temp[n] - (int)current_temp[n]) * 100;

        if ((current_temp[n] > -1) && (current_temp[n] < 0)) {
          #ifdef MAJORDOMO_FEATURE
            sendRequestMinusM(objSens[n], "-", (int)current_temp[n], abs(temp_[n])); 
          #endif          
        } else {
            #ifdef MAJORDOMO_FEATURE
              sendRequestMinusM(objSens[n], "", (int)current_temp[n], abs(temp_[n])); 
            #endif            
          }  

      } else { // current_temp[n] = 85
          tempSensorHealth[n] = ZERO_HEALTH;
          timeStamp();
          Serial.print(objSens[n]);
          Serial.print(": ");
          Serial.println("error"); 
        }  
    } else { // current_temp[n] = -127
        tempSensorHealth[n] = ZERO_HEALTH;
        timeStamp();
        Serial.print(objSens[n]);
        Serial.print(": ");
        Serial.println("removed"); 
      }
  } else { // current Sensor ID != stored Sensor ID
      tempSensorHealth[n] = ZERO_HEALTH;
      timeStamp();
      Serial.print(objSens[n]);
      Serial.print(": ");
      Serial.println("ID problem or not present");
    }
} // getTemperature( )  

#endif // TEMP_FEATURE

AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Mochalov_da
Сообщения: 27
Зарегистрирован: Вт май 20, 2014 5:24 pm
Откуда: Ярославль
Благодарил (а): 7 раз
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server для esp8266

Сообщение Mochalov_da » Чт июн 30, 2016 12:47 pm

Как это не обнаружил???
Не исключено что я что то упустил...
В архиве порта для ESP не было файла temperature.ino
Я правильно понимаю что модули описываются в отдельных файлах?

*** Сообщение запрещено. Включите JavaScript. ***
Cubieboard A10(Cubian/MajorDoMo)+nRF24L01+ds18b20, ESP8266(AMS)+RGB+ds18b20, Attiny13a+nRF24L01
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server для esp8266

Сообщение nick7zmail » Чт июн 30, 2016 12:55 pm

Mochalov_da писал(а):
Как это не обнаружил???
Не исключено что я что то упустил...
В архиве порта для ESP не было файла temperature.ino
Я правильно понимаю что модули описываются в отдельных файлах?

*** Сообщение запрещено. Включите JavaScript. ***
Правильно...но назывался он rtemp вроде

Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для esp8266

Сообщение serghei » Пт июл 08, 2016 12:14 am

Наконец то и я сегодня получил свои D1 и MCU V3. После полугода въезжания в тему АМС ,месяца теоретического изучения установки ESP все залилось с нуля за 8 минут, даже как то скучно ))))).
Для модуля NODE MCU V3. Выбирайте плату MCU 0.9 будет все нормально. С MCU 1.0 будут дикие тормоза, но все работает. При всех открытых модулях кроме лаурента и ФТП загрузка 55 процентов памяти. Завтра начну прикручивать градусники, экран,NRF 24 (тут самое главное не забыть ,где они находятся физически))) ну и конечно модуль электро. Самое смешное - это все прописано в сервере-ажакс!!!
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server для esp8266

Сообщение Alex » Пт июл 08, 2016 8:15 am

После полугода въезжания в тему АМС...
Вот, один раз потратил усилия на освоение и дальше чувствуешь себя «властелином всего» :) Мои поздравления.
NRF 24 (тут самое главное не забыть ,где они находятся физически)))
Это интересно, как «прикрутите» — сообщите о результатах.
ну и конечно модуль электро.
На ESP8266 всего один аналоговый порт — с «прикручиванием» модуля «Электро» могут быть очевидные проблемы
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для esp8266

Сообщение serghei » Пт июл 08, 2016 8:45 am

Сейчас самое главное разобраться с пинами подключения. Плата NODE MCU V3 . Сервер завелся с пол оборота.Надписи на плате и в интернете не соответствуют друг другу. Через неделю придет тройка шилд для него.Тут главное ничего не спалить.Начну с градусников.О результатах доложу обязательно. С модулем электро все очень просто.Как говорил Остап Бендер есть 3 относительно честных способа измерения мощности на ардуино . Все они прекрасно расписаны в библии мониторинга электро знергии https://openenergymonitor.org/emon/buil ... e-counting Тут как вариант.Для меня самое сложное будет привести полученные значения мощности к готовым гет-запросам.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для esp8266

Сообщение serghei » Сб июл 09, 2016 9:51 am

2 платы NodeMCU_V3. На подключение градусников реагируют на пине D4. ID адреса определяют правильно, но одна в сериале пишет ERROR ,а другая показывает температуру 87 градусов и выводит её в даш панель.градусники 100 процентов рабочие. У кого нибудь получилось добиться нормального результата?
Вложения
NodeMCU_v3.png
NodeMCU_v3.png (43.41 КБ) 8211 просмотров
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server для esp8266

Сообщение serghei » Сб июл 09, 2016 10:39 am

Поменял в скетче подключение на 4 пин ,соответственно на плате D2 . Все заработало корректно.
Значит с далласами разобрался. Теперь по NRF 24. Перенести HTM и JS файлы по воздуху заняло 20 минут.Единственное - все названия надо писать маленькими буквами. Со скетчем сложнее. Слепое копирование (добавление) файлов компилируется ,но приводит к перезапуску АМС. Возможно не правильно подключил NRF. Пока разбираюсь с подключением модуля.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server для esp8266

Сообщение Alex » Сб июл 09, 2016 4:58 pm

Теперь по NRF 24. Перенести HTM и JS файлы по воздуху заняло 20 минут.Единственное - все названия надо писать маленькими буквами.
Вот это непонятно. Куда перенести и зачем? И какие названия и почему маленькими?

----------------------

Новый интерфейс
Вложения
new3.jpg
Новый интерфейс
new3.jpg (76.12 КБ) 8180 просмотров
Ответить