-
Content Count
10 -
Joined
-
Last visited
Community Reputation
2 NeutralRecent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
MQTT и вперед.- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
ИМХО... результат прям вообще так себе. Видно что вы только ступаете на путь программирования, но уже учите... if (s == "PIN_0") { res = 0; }; if (s == "PIN_1") { res = 1; }; if (s == "PIN_2") { res = 2; }; А знаете ли вы что даже если будет PIN_0, то он все равно будет продолжать перебирать по остальным? В таком контексте было бы правильнее сделать так: if (s == "PIN_0") { res = 0; } else { if (s == "PIN_1") { res = 1; } else { if (s == "PIN_2") { res = 2; }}} Потом где вы вообще видели за закрывающей скобкой точку с запятой? Вы в курсе что это в программировании грубо говоря пустая строка? if (bla) ; В данном случае будет выполнена проверка и по итогу ни чего не сделано. Но и в данном случае такая себе идея гонять строки. Откройте для себя switch ... case Вычленяем все до "_" + проверяем после него на "W" и "A" и после уже в числовую переменную номер пина. pin_val_get(0, true); pin_val_get(1, true); pin_val_get(2, true); pin_val_get(3, true); pin_val_get(4, true); pin_val_get(5, true); pin_val_get(6, true); pin_val_get(7, true); pin_val_get(8, true); pin_val_get(9, true); pin_val_get(10, true); pin_val_get(11, true); Тоже тема знатная... for еще не проходили? if (va < 0) {va = 0; } if (va > 1) {va = 1; } Зачем этот изврат? Вы в курсе что в половине случаев вы просто сделаете лишние тики? if (va <= 0) va = 0 else va = 1; Опять же зачем плодить лишние {}? Да и подобные простые вещи тоже так громоздко не пишут давно va = (va <= 0) ? 0 : 1; Так же можно было и сократить и ваши ифы выше: res = (s == "PIN_0") ? 0 : (s == "PIN_1") ? 1 : (s == "PIN_2") ? 2; Вот по теме ссылка первая в гугле - https://wm-school.ru/js/js_if_else.php Далее по отдаче данных. Кто же отдает кашу? Как там что разбирать? Или отдавайте json, ну или на худой конец xml. И для того и для другого во всех языках есть драйвер по работе. У вас же каждый раз при изменении символа в строке придется городить проверки и прочее. Там еще есть вопрос по переменным... Там тебе и "bool res=" и "int res;" Чего только стоит "String sAct = ""; // действие: GET: или SET:" Вы же заранее знаете что там кроме этого ни чего не будет. "char sAcr[4];" - и уже памяти экономим вагон! Но и это изврат: "bool GetSet;" Да и работать с ним куда проще (в плане тиков на операцию). А это... "const int soundPin = 3;" Серьезно? Вы под номер пина выделяете 16 бит? byte - 8 бит. от 0 до 255 вам будет с головой. Но и это тот еще изврат если это постоянная. "#define soundPin 3" - ВСЕ!!! При компиляции машинного кода эта тройка подставится везде. Вы же define вообще обходите стороной... Блин чувак, ты позиционируешь этот код как обучающий ("пример", "настоятельно рекомендую"). Да тебе еще самому обучаться и обучаться.- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
Поддерживаю камрада @U-M, все нормально.- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
Если вдруг кто решит заняться некрофилией как я, то BMP085 - https://github.com/adafruit/Adafruit-BMP085-Library/releases/tag/1.0.0 ESP8266 v.2.4.0 - https://github.com/esp8266/Arduino/releases/tag/2.4.0 А то пришлось повозится ) Почему не выкладывать целиком проект со всеми зависимостями? И не могу побороть SPIFFS Error: mkspiffs not found! Arduino IDE 1.8.5 win10. КОмпилируеется, но ни прошивка не заливается, типа esptool not found, ни SPIFFS не загружается... Есть у кого прям готовая arduino ide под это все дело?- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Василий Залукаев changed their profile photo
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
Вопросом на вопрос? Не очевидны? Я тебе типы данных привел, а дальше намекнул. Головой подумать не судьба? И даже на про мини это бы не могло работать, ибо компилятор не дурак чтобы тебе беззнаковую переменную скомпилировать как знаковую. Ну и исполняемый код тоже бы ни как не смог поместить число отрицательное в беззнаковую переменную. По минимуму просто было бы смещение.- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
Так я тебе тут показал куда копать.- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
А при чем тут разрядность? uint8_t output; https://ru.wikipedia.org/wiki/Stdint.h Типы с точной шириной. Не все системы могут поддерживать все эти типы. Тип Описание int8_t 8-битовый со знаком int16_t 16-битовый со знаком int32_t 32-битовый со знаком int64_t 64-битовый со знаком uint8_t 8-битовый без знака uint16_t 16-битовый без знака uint32_t 32-битовый без знака uint64_t 64-битовый без знака Как ты получишь знаковое число в без знаковую переменную?- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
Именно так.- 862 replies
-
- 2
-
-
-
- web server
- mqtt
- (and 8 more)
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
Рассматривался. Но тут возникла проблема на которую не реагирует даже производитель. Есть ИБП eaton P5 в количестве несколько штук. Так вот еще при USB подключении я словил неприятность - часть ИБП отваливали интерфейсы. Была возможность взять плату расширения (2ethernet) и с ней абсолютна такая же история. Т.е. сам ИБП прекрасно работает, проблем нет, но вот его интерфейс... при чем не все, а часть. По сему сейчас все просто - выключили свет - ждем 5 минут - выключаем все. ИБП умеют при появлении питания дергать POWER на выходах, все железо настроено на Power on, и все включается. В старом здании было очень актуально. В новом всего 2 раза за год выключили питание. За остальное спасибо. Поиском правда пробежался, но... видимо плохо искал )- 862 replies
-
- web server
- mqtt
- (and 8 more)
-
Василий Залукаев started following Метеостанция на ESP8266 от it4it.club
-
Метеостанция на ESP8266 от it4it.club
Василий Залукаев replied to Kitsum's topic in Espressif Systems
Спасибо большое автору. Подскажите пожалуйста как сделать график не по 10 минут, а по часу и скажем не на сутки, а на неделю. И еще - небольшая интеграция в мою систему. Начало истории тут http://arduino.ru/forum/proekty/vatchdog-220v-klient-server-win Это детектор 220В. С клиентской частью для отключения ПК после отсутствия электричества определенное время (для тех у кого есть проблема с получением данных из ИБП). Сейчас по случаю решил переделать все это на ESP. Добавлен класс watchdog220 В нем описана функция "инициализации", запроса состояния линии и функция отправки в Broadcast. Из изменений в авторском коде: В ESP8266_WS_V2.0_iT4IT.CLUB-220watchdog.ino объявляем заголовочный файл: #include "watchdog220.h" // 220WatchDog В функции setup() инициализируем наш пин (пин определяется в заголовочном файле. не стал выносить лишнее в авторский код) и тут же добавляем в Cron задание на отправку сообщений раз в секунду: /* Инициализация Wathcdog'а*/ watchdog220.startwatchdog(); /* Добавление в планировщик заданий по проверке 220В на линии и отправке данных на внешнии ресурсы */ cron.add(cron::time_1s, [&](){ watchdog220.send2broarcast(); }); // Отправка данных в Broarcast По идее в кроне была и проверка линии, но... как-то не срасталось. Вынес функцию просто в loop(): watchdog220.acCheck(); Из настроек: #define WATCHDOGPIN D5 - пин на котором висит датчик #define WAITTIME 10000 - время через которое система меняет статус на "отсутствие 220В" (дело в том что частота у нас 50Гц и когда попадешь на полупериод, когда не попадешь...) IPAddress broadcastIp(192, 168, 0, 255); - IP широковещательный (последний адрес в подсети (для привычных 255.255.255.0 - это 255)) int udpPort = 4545; - порт как ни странно ) Лично я схему почерпнул от сюда: http://arduino.ru/forum/apparatnye-voprosy/nuzhno-otslezhivat-nalichie-220-volt-na-linii#comment-237805 Из дополнений к ней (в комменте указано) - цифровой пин на котором будем ловить сигнал надо подтянуть к +3В через резистор (4,7кОм) Тут программа с исходниками: https://www.dropbox.com/s/4741p3jdc3isqfd/win.7z?dl=0 Для данной реализации нужна только клиентская часть. Еще раз автору данной метеостанции большое спасибо! ESP8266_WS_V2.0_iT4IT.CLUB-220watchdog.7z- 862 replies
-
- web server
- mqtt
- (and 8 more)