Перейти к публикации
iT4iT.CLUB

Рекомендованные сообщения

8Насколько  я понял из пояснения, в ОС обновился какой-то сетевой модуль,  в связи с этим перестали работать некоторые сетевые функции ОС  по взаимодействию с вэбинтерфейсом метеостанции. И всего то. Перезагрузить комп и делов  то. Метеостанция не при чем.

Кстати, учитывая ограничения в количество сессий никто другой в этот момент к вэбинтерфейсу метеостанции подключен быть не мог?

  • Haha 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Alex_DIY , я же просил - адекватные!

PS и при чем" ,"веб-интерфе́йс" (Русский орфографический словарь РАН), не уважаете собеседников, уважайте хотя бы русский язык...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Во-первых, Вы не достаточно образованы, чтобы судить об адекватности моих предположений. Во-вторых, вы в соседней теме свои сообщения в мой адрес прочитайте, прежде чем говорить об уважении. В третьих, я набираю текст с телефона, который ещё и слова порой меняет. Раз Вы позволяете себе общаться в такой манере, то помогайте себе сам. 

  • Haha 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, Alex_DIY сказал:

помогайте себе сам

@Alex_DIY , а в чём конкретно помощь.?! 

22 часа назад, Alex_DIY сказал:

... какой-то ... некоторые ... всего то ... делов  то ...

Буду весьма благодарен если впредь, вы оставите свои "ответы"  на мои вопросы на форуме при себе. Спасибо...

Изменено пользователем EndWar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все доброго времени суток.

В 21.12.2017 в 21:16, EndWar сказал:

Чёт я не понял, у меня одного сегодня показания в веб по нулям стали.?!

Ваша ошибка единична и вызвана внешними факторами. Если она повторится, и в web интерфейс начнет себя вести не адекватно, то перейдите в "Инструменты разработчика" и просмотрите список ошибок во вкладке "Console". В описании ошибки имеется отсылка на исполняемый файл и часть кода в котором она произошла. Это информация поможет разобраться на чьей стороне проблемы и, какие действия стоит предпринять с Вашей стороны.

@EndWar @Alex_DIY Друзья, давайте перестанем заниматься спорами, это пустая трата времени.

Не буду загадывать, но постараюсь в следующем месяце выложить большое обновление для метеостанции. Оно пока в разработке и в основном связано с исправлением кучи косяков и багов. В планах следующее (часть кода уже реализована):

  • Перебрать весь код, исправить много ошибок и разбить его на модули
  • Вынести из основного файла все лишнее, что мешает пользователям быстро внедрить свои наработки в проект
  • Упростить систему выбора датчиков. Избавиться от системы комментариев и перейти на понятные людям ON/OFF или что-то подобное.
  • Упростить, для пользователей, работу с файлом конфигурации и свести к минимуму доработки кода для добавления собственных параметров.
  • Уйти от зоопарка констант и кучи кода отслеживающих наступления того или иного события. Реализовать не сложный планировщик задач, по идеологии напоминающий cron в unix системах, способный обрабатывать любые пользовательские функции с указанным интервалом времени и корректно отлавливающим переполнение uint32_t (unsigned long).
  • Переработать web сервер для ускорения его работы с клиентами. Быстро передавать информацию и освобождать соединение. Уже имеется x10 кратный прирост скорости передачи, что в совокупности с системой кэширования дает возможность отказаться от дублирования ресурсов web сервера микроконтроллера на стороне. Лабораторные тесты, если их можно так назвать, с отключенной системой кэширования, показали загрузку всего Web интерфейса из spiflash менее чем за 3 секунды, а с eTag менее 1 секунды.
  • Модернизировать систему работы с сенсорами. Как минимум, перенести все вычисление в один объект т.к по сути, структура и класс, это одно и тоже. Так зачем, например, держать расчеты для графиков вне объекта самого сенсора...? (риторический вопрос)
  • Пересмотреть систему работы с внешними серверами - одно соединение на всех. Возможно добавить работу с thingspeak (под вопросом).
  • Добавить поддержку скрытых домашних беспроводных сетей.
  • ...

Постараюсь не затрагивать web интерфейс, на тот случай, если вы вносили собственные доработки при условии эксплуатации базового API. 

Цель - изменение идеологии проекта. Довести присутствие в нем метеостанции к минимуму и показать, что Вы можете использовать его для своих уникальных целей. И помните, что мы работаем над проектом вместе и если Вы будите конфликтовать, то ничего хорошего из этого не выйдет.

PS: я старался не упоминать об обновлении в постах, но раз уж Вы стремитесь куда-то направить свою энергию, то делайте это в благих целях. И я предлагаю Вам направить её для проработки Ваших идей и предложений. Возможно стоит что-то внедрить или доработать. Но не кидайте сырые идеи, обдумайте предложения, я буду Вам признателен. Спасибо!

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Kitsum

54 минуты назад, Kitsum сказал:
  • Уйти от зоопарка констант и кучи кода отслеживающих наступления того или иного события. Реализовать не сложный планировщик задач, по идеологии напоминающий cron в unix системах, способный обрабатывать любые пользовательские функции с указанным интервалом времени и корректно отлавливающим переполнение uint32_t (unsigned long).
  • Пересмотреть систему работы с внешними серверами - одно соединение на всех. Возможно добавить работу с thingspeak (под вопросом).
  • Упростить систему выбора датчиков. Избавиться от системы комментариев и перейти на понятные людям ON/OFF или что-то подобное.

Это не вызовет сильное увеличение размера бинарника для прошивки? Вопрос к тому, что для заливки прошивки через вэб интерфейс необходимо иметь свободной памяти в устройстве в размере прошивки, которую планируется залить, а у меня на  1МБайте, за вычетом SPIFFs получалось почти впритык, чтобы оставалось на загрузку обновляемого бинарникаB|  На устройствах с 4Мбайтами , наверное, это не отразится.

 

Изменено пользователем Alex_DIY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@EndWar Если Вы имели в виду пропадание показаний с индикаторов в web интерфейсе, то я смог воссоздать Вашу ситуацию только нарушив стандарт json, который используется в API проекта. Передав место числового значения строковое. Если это длилось длительное время, то Вы сможете увидеть отражение этого инцидента на графике самой метеостанции и на сторонних ресурсах, куда Вы можете отправлять данные. Проверьте это для меня если у Вас есть такая возможность.

@Alex_DIY К моему сожалению, я не могу дать точной информации по использованной flash памяти, это станет известно ближе к завершению обновления. На данный момент, хоть и реализовано больше половины задуманного, но я думаю, что этого недостаточно для увеличения доступности проекта нашим менее опытным коллегам и друзьям. Тем более, учитывая тот факт, что моим познаниям в программировании стоит пожелать лучшего, всегда будет то, что стоит улучшить и доработать. Для себя я выбрал основным связку из BH1750 и BME280 и оценивать объем занимаемого места могу только с использованием соответствующих библиотек. Какой объем памяти Вы можете себе позволить за вычетом Ваших дополнений?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый вечер.

@Kitsum , в том то и дело, что всё, кроме индикаторов в веб-интерфейсе работает без сбоев...

Скрытый текст

5a3d562edc8f7_2017-12-2221-19-56-GoogleChrome.thumb.jpg.8d3d42c952e87c4bfdfdab421fe3e07e.jpg5a3d563c7b471_2017-12-2221-12-34PPS77-2(ESP8266)--GoogleChrome.thumb.jpg.a3b442db3e666d3351061d183b3029db.jpg

А ошибки в консоли видит только лишь Edge:

Скрытый текст

 5a3d566e83e11_2017-12-2221-07-38-MicrosoftEdge.thumb.jpg.522201d18251170fa4e710983347f960.jpg

Хром думает, что всё нормально:

5a3d56732e1dc_2017-12-2221-11-45-GoogleChrome.thumb.jpg.2bf54d9d61ee2478f712e420f22cec2a.jpg

но тем не менее

5a3d57b2a371b_2017-12-2221-43-37-GoogleChrome(2).thumb.jpg.dffb8f6d096133986f5eee50ba99f78d.jpg

но должно быть ведь так:

5a3d5bc8f035e_2017-12-2222-23-10-GoogleChrome.thumb.jpg.e93eaee9b921e2cf6cd91e24e3b23c16.jpg

Откуда могут вдруг появляться вот эти кавычки:5a3d5e1ded4a3_2017-12-2221-43-37-GoogleChrome(3).jpg.34c4fb30e916796ea84057eca66dfd18.jpg

И появилось это всё не после каких-то изменений, а просто ни с чего... Появляется и пропадает без видимых причин... Но дайте мне пар часов, есть предположение...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Kitsum Стоит учесть, что и код страницы у специалиста может быть модифицирован, ибо

скриншот об намекает. Особенно адресная строка. Так что воссоздать это вряд ли удастся.

2 часа назад, Kitsum сказал:

я смог воссоздать Вашу ситуацию только нарушив стандарт json

А ведь постом выше скриншота, в той же теме, и о json вопросы поступали, я думаю Вы на правильном пути в плане моделирования.

Ставлю 100 рублей, что проблема не в коде метеостанции :D

 

По поводу свободного у меня места в грядущем обновлении, не то чтобы это меня сильно затрагивает. Существующий код более чем работоспособен и меня полностью устраивает (Вы ж не майкрософт, обновления силой не устанавливаете :D ) , поэтому все-таки ради большинства стоит внедрить задуманное. Просто ранее я сказал, что добавлю поддержку датчика MH-Z19b и подумал, что лень будет проверить самому, так как возможность перепрошивки через вэбинтерфейс демотивирует от припаивания проводков rx, tx и периодическому щелканью кнопкой. Поэтому, если прошивка не будет в меня помещаться, то на себе проверять , прошивая через uart  будет крайне лениво. Отладим на добровольце если что.

Датчик ко мне уже пришел, но что-то времени нет его даже проверить надеюсь на новогодние каникулы.

Изменено пользователем Alex_DIY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Kitsum сказал:

Для себя я выбрал основным связку из BH1750 и BME280

И кстати, я вот думал, думал, зачем метеостанции датчик освещенности? который создавался, чтобы в цифровом виде передать освещенность воспринимаемую человеческим зрением. Всё равно он не дает достоверной информации о времени восхода и заката и не только потому, что он 1) в будке, 2) информация с него зависит от его расположения  (грубо говоря дом расположен с севера на юг и датчик свотрит на запад, а восток ему загораживает дом). Но также и потому, что хоть разработчики стремились восприятие освещенности датчиком сделать как у человека, но так и не достигли совершенства и в сумерках он слаб, хоть и значительно лучше себя ведет , чем тот же фоторезистор, который очень грубо оценивает освещенность, да еще и не во всем диапазоне волн. (вопрос тоже ближе к риторическому, понимаю, что есть хотелки - хочу и сделаю, право каждого челоека но всё-таки, может я чего-то не понимаю вдруг мне тоже надо? 9_9).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
31 минуту назад, Alex_DIY сказал:

Стоит учесть, что и код страницы у специалиста может быть модифицирован...

... воссоздать это вряд ли удастся ...

... Вы на правильном пути в плане моделирования ...

Ваши, по моему мнению, крайне противоречивые,  деструктивные высказывания считаю не несут ни какой практической пользы. Прошу вас не думайте о моих проблемах, займитесь своими пожалуйста... Ещё раз повторяю (если вы не в состоянии понять с одного раза), конечно модифицирован и код arduino и html файл, но всё дело в том, что он работает уже долгое время, лишь иногда последнее время начали появляться упомянутые выше ошибки... И ещё раз, пожалуйста @Alex_DIY, не надо меня цитировать, упоминать и вообще думать о проблемах и вопросах связанных со мной, надеюсь на ваше понимание... Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@EndWar Так, сразу Вас остановлю, да бы Вы не тратили свое время зря. Двойные кавычки есть во всех "пакетах" и соответствуют стандарту json. Разница лишь в том, как разные обработчики предоставили вывод той или иной информации, но это как философский камень... Любые строковые параметры передаются только в двойных кавычках. Проблема явно была в другом. Я уверен, что она не связана с метеостанцией, но как здравомыслящий человек, я хочу разобраться в ситуации.

12 минуты назад, Alex_DIY сказал:

И кстати, я вот думал, думал, зачем метеостанции датчик освещенности?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
48 минут назад, Kitsum сказал:

Я уверен, что она не связана с метеостанцией

Абсолютно согласен с Вами и прошу меня извинить, что поднял этот вопрос именно в данной ветке форума. Честно не ожидал, что один вопрос

В 21.12.2017 в 21:16, EndWar сказал:

Чёт я не понял, у меня одного сегодня показания в веб по нулям стали.?!

вызовет столь долгую дискуссию по сути не по теме метеостанции...

PS Спасибо, что заинтересовались моим вопросом, считаю Вы вправе, и я не буду возражать, если эти обсуждения будут перенесена в соответствующий для них раздел форума.

Изменено пользователем EndWar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Kitsum сказал:

Двойные кавычки есть во всех "пакетах" и соответствуют стандарту json.

Это я понимаю.

8 часов назад, Kitsum сказал:

Так, сразу Вас остановлю, да бы Вы не тратили свое время зря

А вот тут позволил себе не согласиться и... )) судя по всему нашел решение проблемы. Вы определённо были правы натолкнув меня на мысль по поводу

11 час назад, Kitsum сказал:

 стандарт json, который используется в API проекта

я значительно увеличил количество передаваемых данных и

StaticJsonBuffer<200> jsonBuffer;

видимо стало не хватать для корректного формирования строки ответа на запрос показаний датчиков.

StaticJsonBuffer<1000> jsonBuffer;

всё исправил. Думаю в дальнейших модификациях Вашей метеостанции буду применять динамический размер буфера тем более библиотека позволяет...

Спасибо, что не остались равнодушным...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, Kitsum сказал:

Как минимум для того, чтобы понимать, когда начинается восход или закат

Метеостанция не имеет часов, да и вообще она можно сказать slave устройство. На Masterе часы быть должны, в принципе как и доступ в интернет(ну или по крайней мере устройство, с которого всегда можно получить точно время) , соответственно точное время наступления восхода и заката (рассчитывается)  на мастер устройстве иметь не проблема. В сильно пасмурную погоду по датчику можно получить закат на пол дня раньше. 

18 часов назад, Kitsum сказал:

жалюзи, освещения внешних зон жилого дома

Об этом не подумал, тут да, датчик кстати. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 Alex_DIY 

Вы выше упомянули про 1 мб., а Автор про изменение идеологии, вопрос а на Sonoff она (прошивка) встанет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 24.12.2017 в 06:41, LogOFF сказал:

Вы выше упомянули про 1 мб., а Автор про изменение идеологии, вопрос а на Sonoff она (прошивка) встанет?

ни одного модуля Sonoff я в руках не держал, но так как на них есть кастомные прошивки, то значит они как минимум прошиваются. Так что теоретически прошивкой Kitsum ее прошить можно. Теперь о памяти, тут чуть менее позитивно. Мне на свой модуль esp8266-07 с 1 мегабайтом на борту удалось установить самую первую прошивку и то пройдясь по граблям с неработающим обновлением через web интерфейс (из-за недостаточного объема флеш памяти). Прошивка Kitsum безусловно очень красивая и функциональная, но для 1 мегабайта не пригодна, поэтому чтобы сохранить ее функционал я урезал web интерфейс (жертвой пала графика фона). Выделил под SPIFFs 192 кБ. В итоге первая версия прошивки в таком варианте работает. Все функции сохранены и работают замечательно, даже обновление через web интерфейс.

Далее я пошел своим путем и сделал себе метеодатчик с автономным питанием.

Но в связи с тем,что решил сделать еще и комнатный вариант для контроля микроклимата в помещении с датчиком СО2, то решил вернуться к прошивкам Kitsum.На дня скачал версию от 28.11.2017. Пока не устанавливал, изучаю код, так как с момента первого релиза, который я урезал она претерпела некоторые изменения, добавились функции и она потолстела. И сейчас, даже если просто убрать графику фона, файлы web сервера в 192 кБ SPIFFs не помещаются (пока удалось урезать с 977 кБ до 202 кБ). Думаю, как можно выйти из положения, чтобы установить на имеющийся модуль без урезания функционала, так как если отказаться от временных графиков, то всё должно получиться, но мне не хочется терять этот функционал. Пока положение дел такое. Увеличить SPIFFs тоже больше нельзя, так как в таком случае обновление прошивки через web интерфейс станет невозможным, так как не будет места для сохранения обновляемой прошивки, а ее размер порядка 322-324 кБ и плюс к этому небольшую часть от этой памяти отъедает загрузчик.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не делиться мне пока нечем, меня пока даже читателем громко назвать. Нодемку 3 шт., есп 12ф с площадками несколько и сонофф пара без датчиков, но есть пять пинов и один с датчиком, пока еще ничего ни разу не прошивал, даже "среду" не настраивал, все с МДМ воюю, ну вроде б уже можно переключаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну что ж, по поводу статического буфера json, уверен некоторые особи тут (видимо из за малого количества памяти esp и я подозреваю ума) не способны представить себе даже существование такой проблемы, тем более уж возможности её решить, так как с убеждённостью дебила считают что все "непонятные глюки" компьютера решаются  "всего то. Перезагрузить комп и делов  то", так вот кто так не считает и имеет достаточное количество памяти, прошу под кат.

Скрытый текст

После обновления кода метеостанции в августе, я слегка его подправил под собственные нужды и немного добавил функционал. Так как считаю, что не всегда удобно и оперативно только лишь для того, что-бы посмотреть температуру включать ноутбук, стационарный компьютер или возиться с браузером телефона, мной был добавлен OLED экран и энкодер для его включения/выключения и навигации по страницам, так как на 0.96 128x64 мной выводилось не только температура, давление, влажность (BME 280) и освещённость (BH1750) но и текущее время, прогноз погоды на ближайшие три дня и ещё несколько датчиков в квартире. Так же все показания этих дополнительных датчиков были добавлены на индикаторы в веб-интерфейсе метеостанции

5a3f39bc02f96_2017-12-2408-19-13-GoogleChrome.jpg.c04b80c0b9ebce3bd8dafae9b057384d.jpg 

Как я уже писал пользоваться мне удобнее Oled дисплеем 

20112017094.thumb.jpg.d48719a02a63d41c753574a57963e57d.jpg.c6f93c798a5507b35bafbc4861a907c7.jpg

Скрытый текст

 

 

по этому не сразу заметил, что иногда (почему именно иногда поясню ниже) в веб-интерфейсе возникает вот такая ситуация

5a3fcfb6720ca_2017-12-2419-01-08-GoogleChrome.jpg.88ce2883705b7cbfdeb093e9fce9733f.jpg

а в "инструментах разработчика" браузера, вместо вот такой картинки

5a3fdf611f6e3_2017-12-2420-04-49-GoogleChrome(2).jpg.7c4097563cf7cba033903681b20fcd86.jpg

мы видим

5a3fe2cadf8d9_2017-12-2221-43-37-GoogleChrome(2).jpg.529bad364d3f7f40fc30891580c63c31.jpg

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


{"light":13,"temperature":26.13,"humidity":50.15,"pressure":726.777,"vcc":3.238,"temperatureT6":"1","temperatureT0":"57.0","temperatureTV":"26.0","temperatureHV":"40.0","temperatureVV":"0"}

а во втором так


{"light":11254,"temperature":26.13,"humidity":50.14648,"pressure":726.45673,"vcc":3.238,"temperatureT6":"-2.1","temperatureT0":"57.0","temperatureTV":"26.0","temperatureHV":"40.0","temperatureVV":}

найдите пять отличий..?! )) Думаю раз вы тут, то все справились, конечно количеством передаваемых данных, а изменяется оно от степени освещённости, количества символов после запятой давления, влажности, температуры и знака температуры, но самое важное, что в первом случае строка собираемая библиотекой json в ответ на запрос показании датчиков, заканчивается корректно "temperatureVV":"0"} а во втором обрывается на "temperatureVV":}  и по этой причине, как я предполагаю, не может быть верно обработана.

То есть в стандартный StaticJsonBuffer<200> при неизменной прошивке строка данных может как помещаться так и нет, этим и объясняется появление и пропадание данного эффекта без видимых для пользователя причин ... Увеличиваем буфер JSON до StaticJsonBuffer<1000> и вуаля, ни каких ошибок в веб-интерфейсе больше не появляется...

Удачных всем экспериментов! 

 

Изменено пользователем EndWar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Цитата

Но не кидайте сырые идеи, обдумайте предложения, я буду Вам признателен. Спасибо!

Дабы повернуть в конструктивное русло, не сырых не получится, да и наверное ветку отдельную нужно.

https://majordomo.smartliving.ru/forum/viewtopic.php?f=5&t=3544&start=2330#p67240

и выше несколько начало, условия настолько противоречивы, а датчики не точны и дороги, что нормально решить такую (проблема с вентиляцией, с уличным воздухом - загрязнен, с теплопотерями при проветривании) проблему не возможно (или дорого), хотя и можно подумать/обсудить, к примеру: около темы "метеостанция"  некоторые загрязнения появляются при определенных климатических условиях -  при штиле, "линзирование" и при дальнейшем возникновении нисходящих потоков (в основном на закате/восходе), вероятно это возможно учитывать скромным набором датчиков.

Или расчет заморозков, входные параметры температура на 13 и 21 часов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Kitsum

В связи с приходом модуля  ESP-12E с 4 МБ флешем и датчика bme280 решил скомпилировать Вашу прошивку "в стоке", то есть без изменений.

В итоге компилятор спотыкается на 

  #ifdef TG_BME_280_I2C_H
    BME280I2C::Settings settings;
    settings.bme280Addr = 0x76;
    BME.setSettings(settings);
    Wire.beginTransmission(settings.bme280Addr);
    if (Wire.endTransmission() == 0) {
      temperature.status = humidity.status = pressure.status = BME.begin();
    }
  #endif


ESP8266_WS_iT4iT.CLUB.ino: In function 'void setup()':
ESP8266_WS_iT4iT.CLUB:258: error: invalid conversion from 'int' to 'BME280I2C::I2CAddr' [-fpermissive]
invalid conversion from 'int' to 'BME280I2C::I2CAddr' [-fpermissive]

Тип данных у этой переменной, исходя из библиотеки BME280,  `uint8_t`, вроде бы причем тут `int` непонятно.

P.S. в принципе пример "BME_280_I2C_Test" из библиотеки BM280, тоже не хотел сразу компилироваться, пока include <SPI.h> не добавил в скетче. Поэтому подумалось, что с библиотека с сюрпризами.

Решил проблему в вашей прошивке следующим путем. Заменил строку на

settings.bme280Addr = BME280I2C::I2CAddr_0x76;

Откомпилировалось без единой ошибки и предупреждения и работает. Не знаю, баг-не баг, но всё же.

И еще сломал голову. Добавляю контроллер в домашнюю сеть. С компьютера, подключенного к роутеру через Eth я не могу попасть в web интерфейс контроллера. В то же время, через телефоны, подключенные по wifi к домашнему роутеру, я попадаю в web интерфейс контроллера легко и непринужденно. С компьютера я контроллер пингую - он отвечает, через web интерфейс могу скачать ico, png файлы. Gzip я уже скачать не могу. Браузеры chrome, firefox последних версий. Я уже и на дефрагментацию пакетов грешил и роутинг на роутере, но ни в какую. В COM порт сообщения о том, что запрос на index.htm с компьютера поступил появляются, то есть проблема не в сети.

Да и судя по режиму отладки в Chrome заголовок от web интерфейса esp прилетает, но кроме заголовка больше ничего. Т.е. соединение и не рвется сразу, но и ничего больше не приходит после заголовка http пакета.

P.S. всему виной библиотека ESP8266 2.4.0-rc2. В другом проекте с этой версией библиотеки mqtt не работал на narodmon.ru, но прекрасно работал на локальный mqtt брокер. Откатил версию библиотеки и всё заработало. В этой версии еще и ESP.getVcc() выдает на 0,3 мВ больше, чем 2.3.0.

P.S. P.S. .Смотрю вышел релиз 2.4.0. С ним пока не игрался.

Ну и добавил датчик концентрации.

image.png.c7554dbd5200e9df73d9194c98d033d2.png

 

Изменено пользователем Alex_DIY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Работает нестабильно. переодически ESP перезагружается. Максимально часов 14 без перезагрузки продержался. Буду смотреть мои ли прикручивания датчика СО2 стали пому причиной, либо чип ESP сам по себе неудачный пришел.

Скрытый текст

image.thumb.png.497d4f782bbbda8dca0de93cf541f11c.png

 

Изменено пользователем Alex_DIY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Alex_DIY сказал:

Работает нестабильно. переодически ESP перезагружается. Максимально часов 14 без перезагрузки продержался. Буду смотреть мои ли прикручивания датчика СО2 стали пому причиной, либо чип ESP сам по себе неудачный пришел.

  Показать содержимое

image.thumb.png.497d4f782bbbda8dca0de93cf541f11c.png

 

Можете выложить свой текущий вариант? У меня тоже есть MH-Z19B. Протестирую, отпишусь о стабильности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Serg у MH-Z19 весьма спорные характеристики по документации

Скрытый текст

5a4f5788d1cc6_2018-01-0513-31-17MH-Z19CO2Ver1.0.pdf-GoogleChrome.jpg.930673d5303fed7543f25aa2cfb64019.jpg5a4f578c51db8_2018-01-0513-32-00mh-z19b-co2-ver1_0.pdf-GoogleChrome.jpg.f2746bb29f65ebf7148d473cf31cdca2.jpg

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

Ещё в коде, автор сделал следующую оговорку 

  /*
     Инициализация консоли
     Желательно полностью избавиться от вывода в консоль
  */
  Serial.begin(115200);
  Serial.println("\n");

с чего бы это.?!

Изменено пользователем EndWar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@EndWar Я отключил у MH Z19B автокалибровку (ABC), откалибровал вручную на уличном воздухе на 400ppm  и теперь его показания очень хорошо коррелируют с метеостанцией, содержащей датчик CO2, которую я одалживал на работе.   Когда уровень CO2 становится выше 1000ppm - появляется повод проветрить помещение.  В дальнейшем думаю прикрутить приточную вентиляцию, управляемую nodemcu.

У каждого свой приоритет по набору используемых датчиков. К примеру мне сейчас еще едет оптический датчик микрочастиц в воздухе (пыли). А кому-то интересно измерять радиацию... Уважаемый @Kitsum недавно описывал планы по развитию проекта и там виден тренд на унификацию используемых датчиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пожалуйста, войдите для комментирования

Вы сможете оставить комментарий после входа



Войти сейчас

  • Похожие публикации

    • Автор: Kitsum
      Хотите помочь проекту или спонсировать новый?
      Yandex.Money PayPal.me Тема проекта
      Arduino IDE + Project + Libraries + tools: https://yadi.sk/d/jseefFB50NMhAg
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека CMD, реализует настройку микроконтроллера и управление вашей программой через терминал.
      Основная задача библиотеки, это прием пользовательских команд через UART интерфейс, их обработка и выполнение пользовательского кода, связанного с той или иной командой.
      Данная библиотека позволяет реализовать:
      Управление микроконтроллером Любую настройку, будь то WiFi, другие библиотеки или часть Вашей программы Вызывать Ваши задачи (функции) из терминала по команде и передавать им требуемые параметры Использовать контроллер в качестве шлюза между датчиками и программами на PC Внимание: любая команда, передаваемая в терминал обязана заканчиваться символом перевода строки "\n".
      Подключение библиотеки
      #include <cmd.h> Инициализация объекта, к которому мы будем обращаться для добавления команд. В качестве параметра объекту необходимо передать указатель на объект Serial или любой другой схожий по типу интерфейс.
      cmd command(&Serial); В функции Setup описываем какие команды требуется обрабатывать. Например, по команде "test" вызывать пользовательскую функцию с именем "myFunctionName". Имя пользовательской функции может быть абсолютно любым.
      void Setup() { Serial.begin(115200); command.add("test", myFunctionName); } Пользовательская функция будет вызываться каждый раз, когда по интерфейсу Serial поступит команда "test". Если команда будет передана с параметрами, то эти параметры будут переданы в качестве аргументов пользовательской функции.
      В функции loop должна находится команда вызова обработчика.
      void loop() { command.handleEvents(); } Пользовательская функция обязана соответствовать ряду требований:
      Не возвращать никакого результата (быть объявленной с типом void) Принимать в качестве первого аргумента переменную с типом byte в которой будет храниться число равное количеству переданных параметров Принимать в качестве второго параметра переменную с типом char** в которой будет храниться указатель на массив со всеми указателями (char*) на переданные параметры void myFunctionName(byte argc, char** argv) { /* ... */ } Функция всегда должна иметь такой вид, даже если не подразумевается, что ей будут передаваться какие-либо параметры.
      Чтобы перебрать все переданные параметры и вывести их в консоль, можно воспользоваться следующим примером
      void myFunctionName(byte argc, char** argv) { if (0 < argc) { for (uint8_t i = 0; i < argc; i++) { Serial.printf("%i. %s\n", i, argv[i]); } } } Пример вызова пользовательской функции без параметров и с ними
      # test No parameter was passed # test p1 p2 p3 p4 p5 0. p1 1. p2 2. p3 3. p4 4. p5 Помните, что параметры представлены в виде указателей и работать с ними нужно как с обычными переменными не получится т.к указатель содержит не значение переменной (переданный параметр), а указатель на ту область памяти микроконтроллера в которой это значение находится.
      Чтобы сравнить два значения, например, параметр под индексом 0 (идет первым в списке) с каким-либо значением в программе, воспользуйтесь функцией strcmp, которая возвращает целочисленное значение, указывающее на лексическое расхождение строк. Если строки равны, то возвращаемое значение равно 0.
      if (!strcmp(argv[0], "wifi")) { Serial.println(F("Первый аргумент WiFi")); } else { Serial.println(F("Первый аргумент НЕ WiFi!!!")); } Для копирования значения указателя в другую переменную с типом char можно воспользоваться функцией strcpy
      char myVar[20]; strcpy(myVar, argv[0]); if (myVar == "123456") { Serial.prinln(F("ok")); } Также можно обернуть указатель объектом String и получить весь функционал этого объекта, который будет содержать значение параметра
      String param1(argv[0]); // String param1 = argv[0]; Serial.printf("argv[0] length: %i\n", param1.length()); Serial.printf("argv[0] is integer?: %s\n", param1.toInt() ? "YES" : "NO"); if (param1 == "qwerty") { Serial.println(F("Hello QWERTY!")); } С библиотекой идут несколько примеров, в том числе и пример конфигурации WiFi в режиме STA.
      Автор Kitsum Добавлен 05.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека smartBlink, реализует умное управление штатным светодиодом, что позволяет добавить индикацию состояния вашей программы или микроконтроллера.
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
      Автор Kitsum Добавлен 10.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...