Универсальный многоканальный недельный и/или суточный программируемый таймер

Fenicksnet
Offline
Зарегистрирован: 25.03.2019

vema пишет:

Привет пытаюсь компелировать и не проходит выдает ошибку

 
sketch_jan18a:21:10: fatal error: Secrets.h: No such file or directory
   21 | #include "Secrets.h"
      |          ^~~~~~~~~~~
compilation terminated.
exit status 1
Secrets.h: No such file or directory
подскажи куда копать дальше
 

 закомментировать строку 21 (#include "Secrets.h") , разкомментировать 18 и 19 , вписать имя WIFI и пароль

vema
Offline
Зарегистрирован: 18.01.2022

подставляю свои данные

#define AP_SSID   "ssdi"
#define AP_PASS   "passwort"

и не чего

 

Fenicksnet
Offline
Зарегистрирован: 25.03.2019

Тогда создай в папке со скотчем файл secrets.h и вставь туда эти 2 строки

vema
Offline
Зарегистрирован: 18.01.2022

спасибо,

получилось посмотрим заработает или нет

Araris
Offline
Зарегистрирован: 09.11.2012

vema, в начале скетча есть комментарий

//
// Create a Secrets.h file with Wi-Fi connection settings as follows:
//
//   #define AP_SSID   "yourSSID"
//   #define AP_PASS   "yourPASSWORD"
//
что переводится как "Создайте файл Secrets.h с настройками подключения Wi-Fi следующим образом:"
 
Так обычно делают для того, чтобы при размещении исходников на Github не "светить" приватную информацию автора.
 
mistert83
mistert83 аватар
Offline
Зарегистрирован: 24.01.2021

Здравствуйте Araris. 

Делаю для  себя систему умного дома. Есть центральный контроллер на базе ESP8266, который собирает посредством UDP информацию от различных датчиков и отдаёт в MQTT, а также принимает из MQTT управляющие данные и отдаёт через UDP  датчикам. 

Для управления устройствами я использовал Smartrele Tuya с перепайкой их контроллера на ESP8285. За основу взял Ваш код таймера, добавил в него управление каналом(реле) по UDP, то есть состояние канала отправляется по UDP на центральный контроллер, и обратно - по команде с центрального контроллера меняется состояние канала. Естественно локальное управление через WEB тоже работает, что для меня важно. Но я не разбираюсь в WEB интерфейсах, и потому хочу спросить как сделать, чтобы при изменении состояния канала по UDP изменялось состояние кнопки c "Turn ON" на "Set OFF" и обратно в WEB интерфейсе?

  

 

Araris
Offline
Зарегистрирован: 09.11.2012

Здравствуйте, mistert83

Я тоже не разбираюсь в WEB-интерфейсах, поэтому у меня браузеру просто отдаётся статическая HTML-страница и всё, что я могу делать при таком подходе - это рефрешить (<META http-equiv='refresh' content='0;URL=....) страницу полностью при изменениях содержимого.

Чтобы полноценно реализовать задуманное, придётся Вам переходить на динамический HTML, благо информации о нём предостаточно, в том числе и на этом форуме.
vladimirk68
Offline
Зарегистрирован: 30.10.2015

Здравствуйте Araris!

Заметил обновление AVVersatileTimer.ino на Гитхабе.

А что за изменения?

Araris
Offline
Зарегистрирован: 09.11.2012

Здравствуйте, vladimirk68

Поднял повыше проверку daylight saving, вот и все изменения ))) :

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Спасибо, понятно!

smart_pic
Offline
Зарегистрирован: 17.04.2016

Araris пишет:

Спасибо на добром слове, у меня пропуски заданий однажды начались после активных игр с настройками, зачистил флеш - заработало как надо, причину так и не нашел. Поставлю-ка тестовую ЕСП с десятком-другим заданий, понаблюдаю.

Нужно смотреть что формирует HHTPсервер в заголовках

должно быть Cache-Control: no-cache  особенно в тех файлах в которых есть изменяющиеся данные.

Не знаю как насчет ESP это сделать , но в своем HHTPсервере на pic32 всегда управляю кешированием и другими параметрами.

smart_pic
Offline
Зарегистрирован: 17.04.2016

Araris пишет:

Был у меня случай, когда точное время необходимо, Интернета в месте расположения нет, GSM модуль ставить не хочется.

Время можно синхронизировать с временем компа(или мобильного девайса) при заходе на веб интерфейс.

В автономном режиме работаем по DS3231 (I2C) . Они достаточно точно тикают

cg_shura
Offline
Зарегистрирован: 15.07.2014

3000 строк в одном файле, это конечно.. Среда ардуино позволяет дробить код на файлы, или надо все в отдельном файле?

Функционал навороченный, все состояния в глобальных переменнных. Нужны нетривиальные усилия чтобы это все отладить и работало. О развитии речи не идет.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А зачем так сложно сделана обработка времени. У ESP есть родной функционал.

Установить системное время с NTP сервера: configTime(gmtOffset_sec, daylightOffset_sec, ntpServer) 

Получить время в структуру tm: getLocalTime(&timeinfo), она же проверяет инициализированность системного времени

Из tm в юникс формат (time_t): unixTime = mktime(&timeinfo), юникс формат (или таймштамп) - количество секунд прошедшие с 1.01.1970

Из юникс формата в tm: timeInfo=localtime(&unixTime);
 
Установить системное время вручную :
     timeval tv = { unixTime, 0 };
     timezone tz = { 0, 0 };
     settimeofday(&tv, &tz);
 
Такой подход позволит легко инициализировать системное время ESP с внешних RTC или других источников времени. Сначала в юникс таймштамп, потом в систему. Две строчки и все.
Araris
Offline
Зарегистрирован: 09.11.2012

Благодарю, не знал про такой функционал, так действительно проще, попробую на досуге.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Тогда если позволите еще один прием, который позволит сохранить показания системного времени при перегрузке ESP.

 RTC_DATA_ATTR time_t storeTime; // буфер хранения времени, для восстановления при перезагрузке

// перезгрузка ESPшки
void restart(){
   tm timeinfo;
   if(getLocalTime(&timeinfo)){ 
      storeTime = mktime(&timeinfo);// сохраняем время в памяти RTC ESP32
   } else {
      storeTime=0;
   }
   ESP.restart();
}

// при загрузке
void onLoad(){
  if(esp_sleep_get_wakeup_cause()){//если проснулись не по хардовому ресету
     timeval tv = {storeTime+(millis()/1000)+1, 0 }; // установить системное время, секунда на перезагрузку
     timezone tz = { 0, 0 };
     settimeofday(&tv, &tz);
  }
}

На самом деле, лучше сохранять системное время раз в секунду, тогда при сработке ватчдога призависании и перезагрузке, время все равно восстановится, да с потерей точности, но в таймере секунды не всегда важны.

Araris
Offline
Зарегистрирован: 09.11.2012

О, это тоже интересная фича, если на ESP8266 работает - воспользуюсь, спасибо.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Araris пишет:

О, это тоже интересная фича, если на ESP8266 работает - воспользуюсь, спасибо.

Да, забыл упомянуть, что возможно на 8266 работать не будет. Но , помоему, там так же есть RTC , в котором и память есть. И причину перезагрузки так же можно узнать.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Собрал в железе, работает, уже в корпусе. Будет работать в теплице на полив. Жду начала сезона.

Готов потестировать новые варианты программы.

Igor_116
Offline
Зарегистрирован: 09.11.2017

vladimirk68 пишет:

Собрал в железе.

Добрый день!

бинарником не поделитесь? а, то компилится что то не хочет..

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Igor_116 - адрес, куда послать файл?

Araris
Offline
Зарегистрирован: 09.11.2012

Для разных плат разные бинарники, имейте в виду.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

У меня скетч Araris без переделки работает с голой ESP-12, 6 каналов, GPIO 2, 4, 5, 12, 13, 14.

Igor_116
Offline
Зарегистрирован: 09.11.2017

vladimirk68 - Спасибо!

igonin1969собакаgmail.com

Araris
Offline
Зарегистрирован: 09.11.2012

Обновил скетч на Гитхабе. Принципиальных изменений нет.

1. Избавился от внешней библиотеки NTPClient.h, по совету уважаемого brokly работу с точным временем перевёл на родной функционал ESP.

2. Добавил использование RTC памяти и функции ESP.getResetInfoPtr() для мелких фич, просто интересно было разобраться, ещё один респект коллеге.

3. Некоторые незначительные изменения интерфейса.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Обновил по воздуху. Я дома, девайс - на даче.

Исчезла ошибка:

Ошибка NTP синхронизации времени

Все настройки сохранились.

Спасибо Автору и brokly!

 

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Не исчезла ошибка...

Журнал на 11.05.2022

Всего файловых блоков: 125 Занято блоков: 9 Доступно блоков: 116 Файлов с настройками: 2 Файлов журналов: 3

Найдены журналы на даты: 09.05.2022 - 11.05.2022


Дата и время Событие Задание  Канал  Новое состояние
5  11.05.2022 12:31:08 Ошибка синхронизации времени (NTP)
4  11.05.2022 10:31:00 Переключение по заданию 4 2  ВЫКЛ
3  11.05.2022 10:16:00 Переключение по заданию 3 2  ВКЛ
2  11.05.2022 10:15:00 Переключение по заданию 2 1  ВЫКЛ
1  11.05.2022 10:00:00 Переключение по заданию 1 1  ВКЛ

 

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Отвалился Интернет, девайс завис в 03.52.09.

В журнале повтор сообщений с 1 по 158.

Приехал, починил Интернет, перезапустил девайс, работает.

164  19.05.2022 22:45:17  Режим канала изменён с 'по заданиям'   2  'вручную'
163  19.05.2022 22:45:10  Режим канала изменён с 'по заданиям'   1  'вручную'
162  19.05.2022 16:57:02 Ошибка синхронизации времени (NTP)
161  19.05.2022 17:56:01  Включение питания, или внешний сброс системы
160  19.05.2022 17:56:01  Синхронизация времени (NTP) прошла успешно
159 19.05.2022 17:56:01 Старт
158  19.05.2022 03:52:09  Синхронизация времени (RTCMEM) прошла успешно
157 19.05.2022 03:52:09 Старт
156  19.05.2022 03:52:09  Синхронизация времени (RTCMEM) прошла успешно
155 19.05.2022 03:52:09 Старт
154  19.05.2022 03:52:09  Синхронизация времени (RTCMEM) прошла успешно
153 19.05.2022 03:52:09 Старт
152  19.05.2022 03:52:09  Синхронизация времени (RTCMEM) прошла успешно
151 19.05.2022 03:52:09 Старт
150  19.05.2022 03:52:09  Синхронизация времени (RTCMEM) прошла успешно
149 19.05.2022 03:52:09 Старт
148  19.05.2022 03:52:09  Синхронизация времени (RTCMEM) прошла успешно
147 19.05.2022 03:52:09 Старт
146  19.05.2022 03:52:09  Синхронизация времени (RTCMEM) прошла успешно
145 19.05.2022 03:52:09 Старт

Записи с 164 по 145 из 164

Araris
Offline
Зарегистрирован: 09.11.2012

Спасибо, интересный лог, есть мысль, что девайс не мог подключиться к Wi-Fi, попробую воспроизвести у себя.

Araris
Offline
Зарегистрирован: 09.11.2012

Посмотрел, да, возможно так и было.

При неудачной попытке подключиться к Wi-Fi таймер перезагружается в режим точки доступа, затем десять минут ожидает к себе подключения, затем перезагружается в режим станции, пытается подключиться к Wi-Fi, при неудачной попытке перезагружается... и так по кругу. Так и задумано.

Я слегка усовершенствовал журналирование и выложил свежий скетч на https://github.com/Araris/VersatileTimer , обновитесь при возможности - логи стали более информативны.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Araris, спасибо!

Забыл добавить - во время "висения" был включен 1 канал, и постоянно шел полив...

Прошивку обновил, буду наблюдать.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

За ночь вот:

24  21.05.2022 04:30:17  Синхронизация времени успешна (NTP)
23  21.05.2022 05:30:06  Подключено к Wi-Fi
22  21.05.2022 05:30:06  Синхронизация времени успешна (RTCMEM)
21  21.05.2022 05:30:06  Перезагрузка аппаратным сторожевым таймером
20 21.05.2022 05:30:06 Старт
19  21.05.2022 02:44:32  Синхронизация времени успешна (NTP)
18  21.05.2022 03:44:29  Подключено к Wi-Fi
17  21.05.2022 03:44:29  Синхронизация времени успешна (RTCMEM)
16  21.05.2022 03:44:29  Перезагрузка после сброса по исключению
15 21.05.2022 03:44:29 Старт
14  21.05.2022 00:33:48  Синхронизация времени успешна (NTP)
13  21.05.2022 01:33:44  Подключено к Wi-Fi
12  21.05.2022 01:33:44  Синхронизация времени успешна (RTCMEM)
11  21.05.2022 01:33:44  Программная перезагрузка
10 21.05.2022 01:33:44 Старт
9  21.05.2022 00:14:36  Синхронизация времени успешна (NTP)
8  21.05.2022 01:14:29  Подключено к Wi-Fi
7  21.05.2022 01:14:29  Синхронизация времени успешна (RTCMEM)
6  21.05.2022 01:14:29  Перезагрузка после сброса по исключению
5 21.05.2022 01:14:29 Старт

Записи с 24 по 5 из 24

Araris
Offline
Зарегистрирован: 09.11.2012

С этим вряд ли помогу, причину я искал бы в качестве питания, контактах, помехах, наводках и проч.

Кстати, спасибо, заметил неучтённое летнее время между RTCMEM и NTP, поправлю.

 

UPD 14:12 Поправил.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Лог за ночь:

40  22.05.2022 08:48:40  Ошибка синхронизации времени (NTP)
39  22.05.2022 10:47:09  Синхронизация времени успешна (NTP)
38  22.05.2022 10:46:58  Подключено к Wi-Fi
37  22.05.2022 10:46:58  Синхронизация времени успешна (RTCMEM)
36  22.05.2022 10:46:58  Перезагрузка аппаратным сторожевым таймером
35  22.05.2022 10:46:58  Старт
34  22.05.2022 10:14:41  Синхронизация времени успешна (NTP)
33  22.05.2022 10:14:38  Подключено к Wi-Fi
32  22.05.2022 10:14:38  Синхронизация времени успешна (RTCMEM)
31  22.05.2022 10:14:38  Перезагрузка после сброса по исключению
30  22.05.2022 10:14:38  Старт
29  22.05.2022 10:07:36  Синхронизация времени успешна (NTP)
28  22.05.2022 09:56:31  Подключено к Wi-Fi
27  22.05.2022 09:56:31  Синхронизация времени успешна (RTCMEM)
26  22.05.2022 09:56:31  Программная перезагрузка
25  22.05.2022 09:56:31  Старт
24  22.05.2022 09:56:31  Перезагрузка в режим точки доступа
23  22.05.2022 09:56:31  Подключение к Wi-Fi отсутствует
22  22.05.2022 09:56:31  Синхронизация времени успешна (RTCMEM)
21  22.05.2022 09:56:31  Перезагрузка после сброса по исключению
20  22.05.2022 09:56:31  Старт
19  22.05.2022 09:53:49  Подключено к Wi-Fi
18  22.05.2022 09:52:10  Подключение к Wi-Fi отсутствует
17  22.05.2022 09:50:18  Подключено к Wi-Fi
16  22.05.2022 09:49:25  Подключение к Wi-Fi отсутствует
15  22.05.2022 04:40:19  Синхронизация времени успешна (NTP)
14  22.05.2022 04:37:38  Подключено к Wi-Fi
13  22.05.2022 04:37:38  Синхронизация времени успешна (RTCMEM)
12  22.05.2022 04:37:38  Перезагрузка аппаратным сторожевым таймером
11  22.05.2022 04:37:38  Старт
10  22.05.2022 02:13:45  Синхронизация времени успешна (NTP)
9  22.05.2022 02:13:34  Подключено к Wi-Fi
8  22.05.2022 02:13:34  Синхронизация времени успешна (RTCMEM)
7  22.05.2022 02:13:34  Перезагрузка аппаратным сторожевым таймером
6  22.05.2022 02:13:34  Старт
5  22.05.2022 02:10:01  Синхронизация времени успешна (NTP)
4  22.05.2022 02:10:01  Подключено к Wi-Fi
3  22.05.2022 02:09:57  Программная перезагрузка
2  22.05.2022 02:09:57  Прошивка обновлена
1  22.05.2022 02:09:57  Старт
Karas1que
Offline
Зарегистрирован: 29.05.2022

Отличный таймер, есть практически всё необходимое.

Но так как в программировании микроконтроллеров дальше мигалок светодиодами я не продвинулся ещё, то не могу прикрутить один, как мне кажется, нужный функционал: ВКЛ/ВЫКЛ до следующего задания по физической кнопке.

Интуитивно понимаю, что добавить нужно буквально пару строк, но куда и что не понимаю. Поможете?

Araris
Offline
Зарегистрирован: 09.11.2012

Karas1que, простите великодушно, но нет, не помогу. Начиная писать таймер, я поставил себе жесткое ограничение : никакой периферии, кроме реле, и твердо его придерживаюсь. Все исходники выложены "как есть", любой желающий может использовать их как угодно и где угодно, сожалею, что Ваш уровень пока что не позволяет это сделать.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Araris, вижу обновление. А что изменилось?

Araris
Offline
Зарегистрирован: 09.11.2012

Да ничего существенного, на Гите (в issues) добрый человек нашел мелкий баг "при первом включении через точку доступа (192,168,4,1) , я в настройках выбираю свою сеть, ввожу пароль. ниже два переключателя, автоматитически получать IP , я выбираю данный пункт и при сохранении выходит ошибка, что поля ниже не заполонены (это шлюз, маска, IP)", я и пофиксил.

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Понятно, спасибо!

Девайс работает.

big_alex
Offline
Зарегистрирован: 31.10.2015

Здравствуйте!

Araris, не планируете ли добавить к таймеру GPS, для вариантов где интернета нет?

 

Araris
Offline
Зарегистрирован: 09.11.2012

Здравствуйте, big_alex, нет, не планирую, увы. Причину я изложил выше : "Начиная писать таймер, я поставил себе жесткое ограничение : никакой периферии, кроме реле, и твердо его придерживаюсь. Все исходники выложены "как есть", любой желающий может использовать их как угодно и где угодно".

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

локально тогда уж лучше часы на DS3231 добавить

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Почему то не пошло с динамическим назначением адреса. Просто вис веб интерфейс и всё.

со статикой всё заработало отлично!

Araris
Offline
Зарегистрирован: 09.11.2012

Странно это, я изначально использую DHCP на всех таймерах, на роутере выставляя адрес как static, чтобы не изменялся.

Araris
Offline
Зарегистрирован: 09.11.2012

Выложил обновление на Гитхаб.

Добавлено :

 - отслеживание выключений и пропаданий питания устройства;
 - подсчет и вывод статистики общего времени активного состояния по каналам управления за период дат. 
 
и ряд мелких изменений.
 
Шапка темы обновлена.
vladimirk68
Offline
Зарегистрирован: 30.10.2015

Попробовал скомпилировать последнюю версию с Гитхаба:

Arduino: 1.8.18 (Windows 10), Плата:"Generic ESP8266 Module, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounterC2Ejjb':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:5: multiple definition of `_ZN17EEPROMRingCounterC2Ejjb'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:5: first defined here
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounterC2Ejjb':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:5: multiple definition of `_ZN17EEPROMRingCounterC1Ejjb'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:5: first defined here
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounter9readValueEj':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:15: multiple definition of `_ZN17EEPROMRingCounter9readValueEj'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:15: first defined here
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounter10writeValueEjm':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:24: multiple definition of `_ZN17EEPROMRingCounter10writeValueEjm'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:24: first defined here
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounter4initEv':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:33: multiple definition of `_ZN17EEPROMRingCounter4initEv'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:33: first defined here
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounter3getEv':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:62: multiple definition of `_ZN17EEPROMRingCounter3getEv'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:62: first defined here
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounter3setEm':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:76: multiple definition of `_ZN17EEPROMRingCounter3setEm'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:76: first defined here
 
c:/users/user/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\EEPROMRingCounter\EEPROMRingCounter.cpp.o: in function `_ZN17EEPROMRingCounter5clearEv':
 
C:\Users\user\Documents\Arduino\libraries\EEPROMRingCounter/EEPROMRingCounter.cpp:124: multiple definition of `_ZN17EEPROMRingCounter5clearEv'; sketch\EEPROMRingCounter.cpp.o:D:\Projects\Таймер-Нагорнский\Удаленное управление\Универсальный таймер\24-04-2023\VersatileTimer-main\AVVersatileTimer/EEPROMRingCounter.cpp:124: first defined here
 
collect2.exe: error: ld returned 1 exit status
 
exit status 1
 
Ошибка компиляции для платы Generic ESP8266 Module.
 
Arduino IDE 1.8.18, esp boards 3.0.2
 
Библиотека EEPROMRingCounter - та, что в комплекте и исходником (с Гитхаба)
Какой-то косяк с ней.
 
Скомпилировал предыдущую версию исходника - без ошибок.
 
 
 
vladimirk68
Offline
Зарегистрирован: 30.10.2015

Разобрался.

В папке с AVVersatileTimer.ino должен быть только файл Secrets.h и больше ничего.

А я второпях свалил весь архив с Гитхаба в одну папку.

Компилируется без ошибокю

vladimirk68
Offline
Зарегистрирован: 30.10.2015

Arduino IDE 2.1.0, esp boards 3.1.2 тоже компилируется.

Уже залил последнюю версию по воздуху, скоро включу полив в теплице по этому таймеру.

Прошлый сезон прекрасно отработал.

Автору спасибо!!!

maksmkv
Offline
Зарегистрирован: 07.04.2013

Аналогично с таким  столкнулся 

denav76
Offline
Зарегистрирован: 21.04.2020

Доброго времени суток, при компиляции Arduino IDE выдает такую ошибку: 'AP_SSID' was not declared in this scope.

В стоках 2414, 2415 ( AP_name = AP_SSID; AP_pass = AP_PASS;) что необходимо указать подскажите пожалуйста. Я в программировании несилен. 

версия Arduino IDE 1.8.9    Boards 3.0.2

Заранее спасибо!