Страница 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
Как это не обнаружил??? А это что??
Код: Выделить всё
/*
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 минут.Единственное - все названия надо писать маленькими буквами.
Вот это непонятно. Куда перенести и зачем? И какие названия и почему маленькими?
----------------------
Новый интерфейс