Страница 20 из 119

Re: Arduino Mega Server для esp8266

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

Но в работе он не тестировался — может работать, а может и нет.

Re: Arduino Mega Server для esp8266

Добавлено: Чт июн 30, 2016 8:46 am
serghei
Как это не обнаружил??? А это что??
SPOILERSPOILER_SHOW

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

/*
  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


Re: Arduino Mega Server для esp8266

Добавлено: Чт июн 30, 2016 12:47 pm
Mochalov_da
Как это не обнаружил???
Не исключено что я что то упустил...
В архиве порта для ESP не было файла temperature.ino
Я правильно понимаю что модули описываются в отдельных файлах?

*** Сообщение запрещено. Включите JavaScript. ***

Re: Arduino Mega Server для esp8266

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

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

Отправлено с моего Xperia Z через Tapatalk

Re: Arduino Mega Server для esp8266

Добавлено: Пт июл 08, 2016 12:14 am
serghei
Наконец то и я сегодня получил свои D1 и MCU V3. После полугода въезжания в тему АМС ,месяца теоретического изучения установки ESP все залилось с нуля за 8 минут, даже как то скучно ))))).
Для модуля NODE MCU V3. Выбирайте плату MCU 0.9 будет все нормально. С MCU 1.0 будут дикие тормоза, но все работает. При всех открытых модулях кроме лаурента и ФТП загрузка 55 процентов памяти. Завтра начну прикручивать градусники, экран,NRF 24 (тут самое главное не забыть ,где они находятся физически))) ну и конечно модуль электро. Самое смешное - это все прописано в сервере-ажакс!!!

Re: Arduino Mega Server для esp8266

Добавлено: Пт июл 08, 2016 8:15 am
Alex
После полугода въезжания в тему АМС...
Вот, один раз потратил усилия на освоение и дальше чувствуешь себя «властелином всего» :) Мои поздравления.
NRF 24 (тут самое главное не забыть ,где они находятся физически)))
Это интересно, как «прикрутите» — сообщите о результатах.
ну и конечно модуль электро.
На ESP8266 всего один аналоговый порт — с «прикручиванием» модуля «Электро» могут быть очевидные проблемы

Re: Arduino Mega Server для esp8266

Добавлено: Пт июл 08, 2016 8:45 am
serghei
Сейчас самое главное разобраться с пинами подключения. Плата NODE MCU V3 . Сервер завелся с пол оборота.Надписи на плате и в интернете не соответствуют друг другу. Через неделю придет тройка шилд для него.Тут главное ничего не спалить.Начну с градусников.О результатах доложу обязательно. С модулем электро все очень просто.Как говорил Остап Бендер есть 3 относительно честных способа измерения мощности на ардуино . Все они прекрасно расписаны в библии мониторинга электро знергии https://openenergymonitor.org/emon/buil ... e-counting Тут как вариант.Для меня самое сложное будет привести полученные значения мощности к готовым гет-запросам.

Re: Arduino Mega Server для esp8266

Добавлено: Сб июл 09, 2016 9:51 am
serghei
2 платы NodeMCU_V3. На подключение градусников реагируют на пине D4. ID адреса определяют правильно, но одна в сериале пишет ERROR ,а другая показывает температуру 87 градусов и выводит её в даш панель.градусники 100 процентов рабочие. У кого нибудь получилось добиться нормального результата?

Re: Arduino Mega Server для esp8266

Добавлено: Сб июл 09, 2016 10:39 am
serghei
Поменял в скетче подключение на 4 пин ,соответственно на плате D2 . Все заработало корректно.
Значит с далласами разобрался. Теперь по NRF 24. Перенести HTM и JS файлы по воздуху заняло 20 минут.Единственное - все названия надо писать маленькими буквами. Со скетчем сложнее. Слепое копирование (добавление) файлов компилируется ,но приводит к перезапуску АМС. Возможно не правильно подключил NRF. Пока разбираюсь с подключением модуля.

Re: Arduino Mega Server для esp8266

Добавлено: Сб июл 09, 2016 4:58 pm
Alex
Теперь по NRF 24. Перенести HTM и JS файлы по воздуху заняло 20 минут.Единственное - все названия надо писать маленькими буквами.
Вот это непонятно. Куда перенести и зачем? И какие названия и почему маленькими?

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

Новый интерфейс