• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Простые WiFi часы

Pilnikov

Active member
@Pilnikov , ваш вариант с парсингом conf_data получился более красивым :)

Теперь можно какой-нибудь бутстрап туда впихнуть.
И наконец доделаю NRF24.
В планах добавить редактор строк(писать в вебморде то что будет выводиться на экране).
Кстати у вас будильник больше похож на планировщик задач ;)
В планах сделать "поминальник" - он же элемент управления "календарь" - чтобы в бегущей строке к примеру отображались дни рождения, праздники, и тд.
Я делал компиляцию для WiseClock (один канадский проект) - в нем много чего такого есть - можно позаимствовать.
По идее можно сделать текстовый файл с сообщениями - а редактировать его уже ч/з веб-морду
 

loginkr

New member
В планах сделать "поминальник" - он же элемент управления "календарь" - чтобы в бегущей строке к примеру отображались дни рождения, праздники, и тд.
Я делал компиляцию для WiseClock (один канадский проект) - в нем много чего такого есть - можно позаимствовать.
По идее можно сделать текстовый файл с сообщениями - а редактировать его уже ч/з веб-морду
Только вот не могу понять , если выключить 'сервер погоды', то вы выключаете веб интерфейс, та и вообще все... и соответственно больше зайти в настройки нельзя, приходится заново загружать конфиг
Зачем ?
 

Pilnikov

Active member
Изначально было так;). (Посмотрите оригинальные часы в этой теме) Вай фай запускался по кнопке (и щас так-же - кнопку подержите 5 сек - он запустится) и отключался за ненадобностью через минуту неактивности. В оригинале вайфай нужен изредка - только для настройки каких то параметров через вебморду. Когда проект "вырос" до клиент-серверного появилась необходимость держать вайфай постояноо включеным.
 

loginkr

New member
Вместо кириллицы кракозябры, и между цифрами часов нет пробела. В какую сторону копать?
 

Pilnikov

Active member
Вместо кириллицы кракозябры, и между цифрами часов нет пробела. В какую сторону копать?
В adafruit gfx заменить. Опосля перед компиляцией обязательно рестартануть дурину - она могет либы из кеша подгружать. Сам недавно наступил на эти грабли - гфикс обновилась, я файлик поздно поменял - попрыгать пришлось.
 

Вложения

Последнее редактирование:

demman

New member
Доброго времени суток всем.
Скачал архив, прошил, всё супер.
Появилось несколько вопросов:
- хотелось малость раздвинуть цифры от середины к краям матриц. Видимо это где-то в show_time, но вот где? Или придется править шрифт и весь вывод?
- возможно-ли убрать незначащий ноль в десятках часов?
 

Pilnikov

Active member
Доброго времени суток всем.
Скачал архив, прошил, всё супер.
Появилось несколько вопросов:
- хотелось малость раздвинуть цифры от середины к краям матриц. Видимо это где-то в show_time, но вот где? Или придется править шрифт и весь вывод?
- возможно-ли убрать незначащий ноль в десятках часов?
А чей архив? Оригинальный или мой?
 

Pilnikov

Active member
Да там все в шоу тайм. Гашение нуля - сточку hour/10 надо заменить на пустой символ (byte) 0x0 если час == 0
width_razd = 2; - это расстояние между символами
 

demman

New member
Гашение нуля - сточку hour/10 надо заменить на пустой символ (byte) 0x0 если час == 0
Спасибо. С нулём разобрался. Может и не кошерно, но работает. 0x0B - код символа ПРОБЕЛ в шрифте.
Код:
if (ds3231.Hour / 10 == 0 ) {
     dig[0] = byte( 0x0B);
    } else {
    dig[0] = ds3231.Hour / 10;
    }

width_razd = 2; - это расстояние между символами
Судя по экспериментам - это количество мигающих точек. При значении 1 это :, при 2 это ::, при 3 это :::
А я хотел добавить пробелов (пустых столбцов) между цифрами.
 

Pilnikov

Active member
Попробуйте изменить ширину шрифта. Добавить единичку к используемому width_font. Я наискось глянул - походу сделано через формирование строки - а потом она выводится на экран целиком. (Прогу писал уважаемый @voldemar2005, поэтому я, как не автор, могу и ошибаться)
 

demman

New member
Если я Вас правильно понял, то:
Код:
        if ( cur_dig != NULL && (cur_dig[poz] & cur_mask)) str32 |= 1;
      }
//      str32 <<= 1;
     if ( count_dig == 6) str32 <<= 1;   // <<<<<<<<<<<<<<<<<<<<<
       else str32 <<= 2;                 // <<<<<<<<<<<<<<<<<<<<<
    }
    str32 <<= add_shift;
Показания съехали влево. Фотку прилагаю.
Я пробовал добавлять шестой пустой столбец к шрифту. И выглядит это как-то некузяво :) Фотка 2.
В итоге вернул всё назад.
Шрифт тот-же что и в скетче, только я убрал "жирность" поэтому появилась пустая нижняя строка. Да и фиг с ней.
В идеале хочется добавить по пустому столбику перед и после мигающих точек. Если можно конечно.
 

Вложения

В идеале хочется добавить по пустому столбику перед и после мигающих точек.
ну тогда попробуйте заменить код со 145 строки на:
Код:
        str32 <<= 1;
        for ( int poz = 0; poz < width_razd; poz++)
        {
          str32 <<= 1;
          if ( points && (str == 1 || str == 2 || str == 5 || str == 6)) str32 |= 1;
        }
        str32 <<= 2;
 

demman

New member
Всем привет.
Попытался добавить еще один уровень яркости.
В Clock5web изменил:
Код:
uint16_t    brightness_level[6]; // число уровней для автояркости - было 5

и в секции //------------------ set_brightness

    int level;
    for ( int8_t i = 6; i > 0; i--)     // <<<<<  было i = 5
    {
В скетче "eeprom" добавил:
Код:
  eeprom_data.brightness_level[5] = 450;
В скетче "web" добавил:
Код:
 str += "<tr><td colspan='2'>Порог 5</td><td><input type='text' maxlength='4' size='3' id='brd5' name='brd5' value='";
  str += eeprom_data.brightness_level[5];
  str += "' /></td></tr>\n";

и в секции //----------------------- handleSetParam

eeprom_data.brightness_level[0] = 0;
  for( uint8_t i = 1; i <= 5; i++)  // <<<<< изменил 4 на 5
  {
Поле в вебе появляется со значением 450. Но при любых изменениях с сохранением из веба - поле принимает значение 1 и на перезапись не реагирует.
Я что-то видимо пропустил?
 
Я что-то видимо пропустил?
в структуре
Код:
struct eeprom_data_t
увеличить размер массива:
Код:
uint16_t    brightness_level[6];
и в модуле web в районе 105 строки сделать:

Код:
brd1=document.getElementById('brd1').value;\n\
brd2=document.getElementById('brd2').value;\n\
brd3=document.getElementById('brd3').value;\n\
brd4=document.getElementById('brd4').value;\n\
brd5=document.getElementById('brd5').value;\n\
...
url='/set_param?tzone='+tzone+'&abrd='+abrd+'&brd='+brd+'&brd1='+brd1+'&brd2='+brd2+'&brd3='+brd3+'&brd4='+brd4+'&brd5='+brd5+'&antp='+antp+'&hntp='+hntp+'&stim='+stim;\n\
 
Последнее редактирование:

demman

New member
Спасибо. Последние исправления помогли.
Видимо в этой конструкции:
Код:
int level;
    for ( int8_t i = 6; i > 0; i--)     // <<<<<  было i = 5
    {
      if( i == cur_brightness) level = eeprom_data.brightness_level[i] - 20;
      else if( i == cur_brightness+1) level = eeprom_data.brightness_level[i] + 20;
      else level = eeprom_data.brightness_level[i];
     DEBUG_MSG( "i=%d, foto=%d, level=%d\n", i, foto, level);
....
тоже нужно что-то изменить, т.к. в мониторе:
i=6, foto=748, level=-18
переменная foto реагирует на свет, а level так и остается и яркость не регулируется :(
 
Сверху Снизу