Заметки любителя экспериментов

Позднее Ctrl + ↑

НПФ Сбербанка

Вспомнилось мне тут, что подавал я заявление на внесение изменений в персональные данные в НФП. Хм, а давай проверим как там обстоят дела? Зашел в личный кабинет, осматриваюсь — ничего не изменилось. Мелькнула мысль: «Сколько раз нужно подавать заявление и сколько лет должно пройти, чтобы изменения были внесены?» Следующим моим порывом было написать заявление через сам личный кабинет, благо такая возможность там появилась. Для подачи заявления требуется авторизация в госуслугах. Прошел авторизацию, меня вернуло в личный кабинет, где меня ждало сообщение об ошибке — мои данные на госуслугах не совпадают с данными в личном кабинете НПФ. Логично, что тут скажешь? Номера паспортов-то не совпадают. Иду в профиль клиента, на всякий случай записываю номер паспорта, который там сейчас указан, вбиваю новый, сохраняю изменения. Возвращаюсь в список договоров, заключенных между мной и НПФ. Хм, договор на месте. Перестраховываюсь и жму комбинацию клавиш Ctrl+F5 на клавиатуре — это позволяет очистить кэш браузера и получить актуальные данные. Договор на месте. Уже становится интересней... Снова пробую подать заявление из личного кабинета по той же схеме. На этот раз все получается, появляется номер договора и только одна причина для подачи заявления — изменение персональных данных. В последнее время они не изменялись, поэтому отказываюсь от продолжения. Следующей проверкой становится отправка небольшой суммы в качестве взноса на счет. Оплата проходит, о чем сайт мне успешно рапортует. При этом предупреждает, что зачисление средств и отображение их в личном кабинете может занять до 5 дней. В принципе, это нормальная ситуация, поэтому позже проверю.
Что могу сказать? Понадобилось написать одно заявление на внесение изменений в персональные данные, пожаловаться на flamp’е на то, что оно не было обработано, написать еще одно заявление, подождать в сумме около 2,5 лет, прежде чем изменения наконец-то были внесены.

Отказ флэшки

Вчера на работе отказала флэшка. С какого-то перепуга она вдруг стала «smi usb memory bar usb device». Файловая система также отсутствовала. Почитав один знакомый сайт на эту тему, понял, что все файлы, которые на ней были, уже не восстановить. Кстати, очень интересно стал мигать светодиод на флэшке — он как бы мерцал. Выглядело, конечно, красиво, но непривычно.
Скачал с официального сайта утилиту восстановления, запустил и указал какую флэшку ремонтировать. А сам ушел курить. Обидно, конечно, что придется восстанавливать все файлы, программы, документы и т. д. Но сам виноват — надо чаще делать резервные копии. Впрочем, думаю, что часть из них у меня все-таки осталась на домашнем компьютере, вечером проверю.
Вернулся с перекура, утилита уже закончила работу. Написала, что ее можно закрыть, а флэшку — вытащить из гнезда и снова вставить в компьютер. Так и сделал. Нормальная работа была восстановлена, осталось закинуть все программы на неё. Немного опасался, что флэшка будет распознана как другая модель или будет повреждение одного из чипов памяти, что приведет к снижению ее объема. Но все оказалось в норме.

Проблемы с ЭЦП

Почти две недели боролся с ЭЦП на работе. В первом случае просто-напросто сдох eToken. Порой он определялся системой, но любая попытка работы с ним приводила к «зависанию» программы. Но чаще он появлялся в списке диспетчера устройств и тут же исчезал. Лично у меня сложилось впечатление, что он вышел из строя. Разговоры с технической поддержкой системы привели к тому, что они выслали инструкцию по проверке ключа и, через несколько дней, утилиту для его проверки. По итогу все пришли к выводу, что да, носитель умер. Я, конечно, понимаю, что моих слов им недостаточно, но сроки, сроки... Затем техподдержка обнаружила старую заявку от завода на выпуск квалифицированного сертификата. Решили использовать ее, выслали счет на оплату. Деньги они получили в пятницу или понедельник, не суть важно. В течение следующей недели удалось найти другой носитель и сформировать запрос на сертификат. Документы, насколько я понимаю, до сих пор не отправлены. Без них нового сертификата мы не получим, увы. Поэтому ждем и надеемся...
Во втором случае компания вспомнила, что им нужно провести торги на площадке. Но работать с ней не получится, пока нет регистрации на сайте госуслуг. Взяли у генерального директора ключ и понеслась. Поначалу не получалось прикрепить организацию к существующему аккаунту (интересно когда он был заведен, нужно поинтересоваться) — она была не до конца подтверждена. На подтверждение ушло несколько дней. Хорошо, пробуем дальше. В этот раз при попытке зарегистрировать компанию я получал ошибку о несовпадении данных учетной записи и сертификата на ключе. Перепроверил все, что можно — все совпадает. Отправил запрос в техподдержку госуслуг — тишина. Через два дня уже сами позвонили узнать что и как. В ответ мне выслали форму для обращения за поддержкой. Заполнил, прикрепил все необходимые файлы, отправил. Пришло уведомление о прочтении и... Снова тишина. Еще через два дня перезваниваю. Как я понял из разговора с оператором, она только в момент нашей беседы зарегистрировала заявку и направила ее в технический отдел. Ну хотя бы номер заявки получил :-( Так как на дворе был вечер пятницы, было решено звонить с утра в понедельник, чтобы узнать что там с нашей проблемой. Мысленно отложив все дела в сторону, поехал на встречу со своим старым другом посидеть, попить пивка.
Утро субботы ознаменовалось письмом от техподдержки госуслуг, в котором говорилось, что проблема у нас заключается в том, что есть расхождение между значение поля «Фамилия» в личном кабинете и ключом. Посоветовали убрать лишний пробел после фамилии и, если в течение трех дней не будет от нас никакой дополнительной информации, они закрывают заявку. Ну так-то да, хорошо придумали — пока закончатся выходные, как раз три дня пройдет. Внес исправления на сайте, отписался Фомину об этом, ждем понедельника. Хотя лично меня «убило», что:

  • а) про торги вспомнили, когда они уже закончились по регламенту;
  • б) при заполнении личной информации допустили ошибку при вводе.

Самое интересное, что я обнаружил при работе со вторым случаем — это то, что моя учетная запись является полностью подтвержденной и мне не нужно предпринимать никаких шагов, если я, например, захочу создать себе какое-нибудь ИП или ООО. Единственный вариант как моя учетная запись оказалась подтвержденной — я сделал это после получения собственной ЭЦП на УЭК. Видимо, позже я заходил на сайт госуслуг и подтвердил свою учётку.

Синхронизация с облаком

Задумался на днях о том, что неплохо было бы сделать синхронизацию файлов с каким-нибудь облаком. Во избежание, так сказать. Компаний, предоставляющих подобного рода услуги, достаточно много, но... К тем же китайцам, например, обращаться не хотелось бы. Ну нет у меня к ним никакого доверия. Значит придется использовать «наши» серверы.
Итак, что у нас есть? Есть 15 Гб на Яндекс. Этого хватит для создания резервных копий небольших файлов, но не того же, например, видеонаблюдения. Зачем мне копия видеонаблюдения в интернете? Представим себе такую гипотетическую ситуацию (тьфу-тьфу-тьфу): к вам в квартиру вломились и вынесли все, включая компьютер, на котором располагаются все записи. И все, вы больше ничего и никого не увидите. С облаком же есть хоть какой-то шанс.
Но продолжим. Есть примерно 120 Гб на серверах Google и около 1 Тб на Mail.ru. Конечно, предпочтительней было бы использовать последний, но, с учетом того, что работать с ним придется из командной строки, чего он не поддерживает, насколько я знаю, то Mail.ru отпадает. Значит, остается Google. Поиск в интернете выдал всего пару утилит для работы с облаком из командной строки. В репозиториях системы тоже ничего не нашлось. Оказавшись в столь стесненных обстоятельствах, будем использовать то, что есть.
Начал я с утилиты gdrive. Забегая вперед, скажу, что, скорее всего, на ней я и остановлюсь, не буду пока рассматривать вторую. Что она умеет? А умеет они все, что может нам пригодиться. Самое главное, что у нее есть функция синхронизации, что требуется. Установка также не требуется, это еще один «плюс». Справка очень хорошая, в конце показаны примеры использования. В моем случае достаточно дополнить нужной командой скрипты, которые выполняются при завершении записи движения. Иными словами, все оказалось настолько просто, что у меня отпало желание экспериментировать с другими программами.
Чуть раньше я наткнулся на официальный клиент Яндекс, который может использоваться в командной строке linux. Его я тоже опробовал и также остался им доволен. Устанавливается в систему, работает как демон и автоматически синхронизирует указанную при первичной настройке папку. Не умеет синхронизировать несколько папок, но тут есть выход — использовать символические ссылки, работу с ними он поддерживает. Есть список исключений, здесь уже можно указать несколько объектов, которые не должны синхронизироваться. В общем и целом он меня тоже бы устроил, если бы у меня в облаке Яндекса было больше места. Можно купить один из тарифов, заплатив всего 800 рублей за год и получив 100 Гб пространства. Или другой, заплатив 2000 и получив 1 ТБ. Меня это пока что не устраивает, поэтому оставим все, как есть.
Компания Mail.ru меня, конечно, порадовала. Для начала тем, что по прошествии многих лет так и нет нормального способа синхронизации файлов, кроме их родного клиента. Который, конечно, не умеет работать из командной строки. Вроде бы как был доступ по webdav для корпоративных клиентов, но на их сайте больше нет такой информации, поэтому будем считать что эту функцию они тоже убрали. Затем я поинтересовался ценами. В корпоративном сегменте объем диска не регламентируется, но вы будете платить 2,3 руб./день за каждый гигабайт хранящейся информации, а также будете платить за то, что скачиваете ее из облака. Или, в случае с видеофайлами, за их просмотр. Закачать или удалить информацию — бесплатно. Напоминает старый анекдот про бесплатное катание на верблюде, слезть с которого стоит определенную сумму.

Исправление ошибок

Уже вечером исправил косяки с новой станцией. После переброса на другую линию питания датчика ds18b20 он заработал. Это радует.
Также вроде бы решил проблему со скриптом отправки данных. Вместо накопления данных в нескольких файлах, размер каждого из которых не превышает 4 кБ, сделал обработу ответа «ERROR NO CHANGES». Если скрипт получает такой ответ, то просто стирается содержимое временного файла. Иными словами, он реагирует так же, как будто получил ответ «ОК». Это, конечно, не решает вопроса длительного отсутствия связи с сервером. Так что будем думать дальше.
Не могу пока что придумать как разместить станцию. По хорошему ее нужно разместить подальше от стены, чтобы исключить ее влияние на показания. Но тут встает вопрос как закрепить круглую металлическую трубку на стене. С другой стороны, самый простой вариант — разместить станцию, прикрутив с наружной стороны лоджии, просто на саморезы. На решение времени осталось не так уж и много — скоро наступят холода, работать будет не очень комфортно.

Тестирование новое метеостанции

Вчера провел на лоджию электричество, только розетку пока что не закреплял. Собрал станцию, включил в розетку и выставил на улицу. К стене дома крепить не стал, закреплю когда она пройдет испытания. К сожалению, почему-то перестал работать один из датчиков — ds18b20. Думал, что где-то нет контакта, подергал все проводки, проверил разъем, но ничего не изменилось. Так как мультиметр остался на работе, то поиск неисправности, похоже, откладывается до понедельника.
Попробовал также настроить станцию на отправку показаний на сервер WeatherUnderground, но с этим вышла какая-то непонятка. В прошивке esp8266 есть только поля для ввода логина и пароля, в то время как в скрипте на роутере, который отправляет показания, надо также указывать ID станции, которая была создана при регистрации на сайте. Вчера ввел качестве логина ID станции, в качестве пароля указал ключ от нее. Потом смотреть журнал отправки было некогда, проверил только сейчас. Появились показания влажности воздуха, но с пропусками. Пока что непонятно, идет отправка или нет, буду наблюдать дальше.
Также в скрипте обнаружилась досадная ошибка, которую нужно исправлять, но я не совсем пока что понимаю как это реализовать. Суть ошибки состоит в том, что в какой-то момент скрипт перестает стирать содержимое временного файла с показаниями. При следующей отправке сервер отвечает не «ОК», а «ERROR NO CHANGES», так как в пакете присутствуют более ранние показания, которые сервер принял, а скрипт заново пытается их отправить. В результате данные начинают накапливаться и через примерно 4 часа размер файла начинает превышать 4 кБ — максимальный размер данных, которые можно отправить на сервер. Как результат данные, которые принимает сервер, обрезаются до 4 кБ. То есть появляется новая ошибка — отсутствует строка с закрывающими «##». По логике нужно начинать записывать данные в другой файл, но как потом искать все файлы с данными — непонятно. Буду думать.

Апгрейд видеонаблюдения

На позапрошлой неделе начальником охраны был поднят вопрос о модернизации компьютера, на котором операторы наблюдают за территорией завода. Так как количество камер увеличилось, то картинка стала поступать с задержками, около 4 секунд. Запросил в «Техномаксе» счет с новыми комплектующими, который, к некоторому моему удивлению (не тот сейчас период), подписали без вопросов. В прошедшую субботу приехал менять комплектующие. К сожалению, систему пришлось переустанавливать, потому что старая не могла использовать весь объем оперативной памяти. Во время переустановки выяснилось, что половина диска имеет неправильный формат структуры, так что диск тоже пришлось переразбивать.
По итогу мощность компьютера возросла в несколько раз, но, как показали эксперименты, картинка все равно поступает с запозданием в 1-2 секунды. Впрочем, это уже не так критично, запись все равно идет нормально. Процессор занят почти все время на 80-100%, сеть также загружена на 70-85%. Немного подумав, поняли, что в такой загрузке сети виноват старенький хаб, стоящий на посту. Переключили ради интереса напрямую, минуя этот самый хаб, — нагрузка на сеть упала до 7-8%. Сделал вывод, что его нужно будет поменять на другой с пропускной способностью в 1 Гб. С процессором пока что будет думать.

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

Синхронизация времени в Windows

Возник тут вопрос о том, чтобы синхронизировать время на компьютере сразу после загрузки Windows. Поднял свои архивы, нашел один пакетный файл, который писал еще много лет назад. Он работал, но, как говорится, «время идет», появились новые пожелания. Поэтому файл был полностью переписан.
Для внесения изменений в параметры службы Windows нам нужно ее остановить, внести необходимые изменения и заново запустить. После всего этого выполнить синхронизацию времени. Что данный «батник» и делает.
Интервал обновления изменен на «один раз в сутки» против значения по умолчанию «один раз в неделю». Также убраны ограничения интервалов, дата на компьютере может быть любой, синхронизация все равно будет произведена. Тестировал на разнице в 7 лет. В качестве сервера времени выбран ru.pool.ntp.org.
Ниже код того, что у меня получилось. Можно, конечно, еще добавить команды для добавления задания в планировщик, но, на мой взгляд, это уже лишнее и лучше проделать это руками.

@echo off
net stop w32time

sc config w32time start= auto

reg add HKLM\SYSTEM\CurrentControlSet\services\W32Time\Config /v MaxNegPhaseCorrection /t REG_DWORD /d "4294967295" /f
reg add HKLM\SYSTEM\CurrentControlSet\services\W32Time\Config /v MaxPosPhaseCorrection /t REG_DWORD /d "4294967295" /f
reg add HKLM\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient /v SpecialPollInterval /t REG_DWORD /d "86400" /f

net start w32time

w32tm /config /syncfromflags:manual /manualpeerlist:ru.pool.ntp.org
w32tm /config /update
w32tm /resync

exit

Настройка VPN на OpenWrt

Доступ в домашнюю сеть

На фоне запретов на VPN и анонимайзеров, взбрело в голову прокинуть туннель в свою домашнюю сеть. Так сказать, пока это не стало противоправным действием :-) Все делал вот по этой статье. С первого раза ничего не заработало. После небольшого расследования оказалось, что клиентский сертификат неверно сгенерировался и получился файл нулевого размера. Пришлось переделывать все заново. После этого я смог подключиться к домашней сети, но у меня не было доступа ни к одному компьютеру в ней. Для доступа к ней пришлось выполнить еще одно действие из этой же статьи, из англоязычной ее части:

# uci add_list openvpn.myvpn.push='route 192.168.1.0 255.255.255.0'

Так как подсеть у меня такая же, то не пришлось править адрес и маску. После перезапуска OpnVPN на роутере все заработало: доступ в сеть есть, к компьютерам — тоже. Все работает, отлично!
Но, как обычно, показалось этого мало. Настроил OpenVPN и на смартфоне. Применение такого доступа нашлось сразу же: быстрый просмотр записей с камеры. VLC, конечно, на такой скорости плохо кэширует (надеюсь, это лечится), но снимки, которые создает motion из записанного видеофайла просмотреть можно. Уже, как говорится, хлеб.
Затем, ради интереса, заглянул на собранную метеостанцию, посмотрел как там дела обстоят. Затем зашел на роутер, проглядел папку с торрентами.
Из «минусов» подключения по VPN вижу только то, что работать приходится не с именами машин, а с их IP-адресами. Но это уже мелочи.

Сборка новой метеостанции

Увы, после обновления движка блога картинки перестали вставляться. Забываю отписаться автору движка и узнать об этом. Сейчас прочитал у него на сайте, что да, был такой баг, но он исправляется изменением формирования адресов в настройках. Хотел вставить в эту заметку картинки, но придется обойтись без них. Если не забуду, позже добавлю. Но это все лирика, переходим к основному вопросу.
Вчера весь день почему-то было страшно начинать сборку новой метеостанции. Сегодня пересилил себя и засел ее собирать. Все датчики не стал паять сразу на плату, использовал разъемы. В дальнейшем это позволит мне быстро заменить вышедший из строя датчик. Нужно будет только перед тем, как размещать ее на улице, залить контакты «пистолетным» клеем.
В ходе сборки столкнулся с проблемой — не заработали датчики am2320 и bme280. Проблема со вторым оказалась в коротком замыкании между двумя контактами, устранил быстро. А вот первый так и не «завелся». Позже соберу его на беспаечной макетке, но думаю, что там он заработает нормально. Проверю.
Еще меня мучает один вопрос. Если со старым датчиком температуры я его решил, написав скрипт, который может накапливать данные при отсутствии связи с сервером, то как себя поведет новая станция, когда эта связь пропадет?
Пока же остается только протестировать работу новой схемы, попутно подбирая корпус для нее, упаковать ее в этот самый корпус и прикрепить снаружи. А также провести электричество на лоджию и постараться ее хоть немного утеплить.

Скрипт передачи данных на сервер narodmon.ru

Как и писал ранее, в какой-то момент надоело, что роутер периодически не может отправить данные на сервер, поэтому пришлось немного подредактировать его. После недельного тестирования отправил его администрации ресурса и, после некоторых уточнений, он был добавлен на сайт. Сейчас он находится в разделе «Справка» — «OpenWRT, OR-WRT» — «6. Скрипт для отправки показаний с отказоустойчивостью». Сам скрипт был размещен на github. Было добавлено краткое описание работы и кусок журнала его работы, из которого видно как он накапливает данные во время отсутствия связи с сервером, а затем, когда она появляется вновь, отправляет все недоставленные пакеты.
Самый «интересный» на мой взгляд момент состоит в том, что в моих планах заменить текущий датчик температуры на другие, которые будут передавать данные через домашний WiFi, что, в свою очередь, означает, что я не смогу воспользоваться пакетом owfs и скрипт будет бесполезен для меня. Хотя возможно, что я оставлю этот датчик в качестве «контрольной группы».

Подключение датчиков

Вчера купил пару bme280. Утром пришел на работу с большим желанием подключить его и посмотреть на показания. Достал из рюкзака пенал с паяльными принадлежностями... А он внутри залит спиртово-канифольным флюсом. Запах сильный, конечно. Пришлось потратить кучу времени на отмывание всего, что было в пенале. Как оказалось, лопнула крышка у банки с флюсом.
Дождавшись когда все просохнет, воткнул в макетку все датчики, которые у меня есть: am2302, am2320, DS18b20 и bme280. Затем отправился на сайт за прошивкой с поддержкой bme280. Эта функция оказалась платной, поэтому пришлось также заплатить за лицензию. Цена небольшая — всего 110 рублей, но есть привязка к устройству. Иными словами, вы не можете использовать одну лицензию для разных ESP8266. Ну да ладно, я пока не собираюсь массово их закупать.
Настроил все необходимые параметры в модуле и вернулся на главную страницу, где отображаются показания все датчиков. Показания меня несколько удивили. Так bme280 показывал температуру примерно на 1 градус выше, чем все остальные датчики. Влажность отличалась у всех трех: am2302, am2320 и bme280. И только температура через некоторое время стала примерно равной у всех. Так как давление у меня умеет измерять только один, пришлось сравнивать показания с ближайшими датчиками на сайте narodmon.
Итог:

am2320 am2302 bme280 ds18b20
Температура 27,6 27,5 28,6 27,6
Влажность 45,0% 43,2% 36,7%
Давление 743,30 mmHg

UPD. Уже ближе к вечеру наткнулся на датчик освещенности и углекислого газа. Последний, после коротких раздумий, решил не брать, а вот первый взял, не выдержал. Заодно приобрел пару коробочек для будущей метеостанции.
Остается решить только один теоретический вопрос. Для измерения некоторых вещей, таких как давление, влажность, освещенность, требуется создать в боксе отверстия. Но отверстия нужно создать так, чтобы в них не попадала вода, чтобы они не перекрывались льдом при наступлении зимы. Думаю, что нужно попробовать связаться с теми пользователями narodmon, которые уже сделали что-то подобное и выяснить у них этот вопрос.

Еще одна модификация скрипта

Сутки наблюдения за модифицированным скриптом отправки данных на narodmon.ru показали, что есть огрехи в выбранном алгоритме — данные отправляются, сервер отвечает с задержкой, которую скрипт воспринимает за «молчание» сервера. Спустя некоторое время, от 15 минут до одного часа, сервер все-таки отвечает за настолько короткий промежуток, что скрипт успевает его «поймать». Пришлось еще раз изменить скрипт. На этот раз был добавлен цикл, в котором данные отправляются, затем он ждет 5 секунд ответ от сервера и, если ответ не получен, повторяет отправку данных. После 5 попыток отправки цикл сбрасывается и начинает накапливать данные во временном файле. Анализ журнала отправки показал, что данные отправляются если не с первого, то со второго раза. Будем продолжать наблюдение.

Подключение датчиков к ESP8266

На прошлой неделе попробовал таки подключить датчики к ESP8266. Собрал схему на беспаечной макетке, залил бесплатную прошивку от WiFi-IoT, настроил ее на рабочий WiFi и начал подключать сами датчики. Для начала попробовал AM2302. В настройках прошивки указал пин, к которому подключил датчик и вернулся на главную страницу, где должны отображаться показания. Датчик отобразил температуру, а вот с влажностью вышел прокол — показывал 1%. Списав это на косяк датчика, подключил AM2320, практически такой же. Этот верно показал все данные: температуру, влажность. Дальше на очереди был DS18B20. Подключил его на другой пин, указал в прошивке нужные параметры и вуаля! На этот раз на странице были показания двух датчиков: AM2320 и DS18B20.
Дальнейшие опыты показали, что в бесплатной версии прошивки я не могу использовать более одного датчика типа AM2302. Также припомнил, что влажность у них отображается не сразу, а спустя некоторое время. И при этом данные отображаются с некоторым запозданием. С этим ничего не поделать, такая у них технология работы. Оба датчика AM2302 и AM2320 работают нормально, все показывают верно, но есть небольшое расхождение с DS18B20, в 1-2 градуса. Так как последний более точен, по сравнению с остальными, то и веры ему больше :-)
В планах приобрести еще один — BME280, у которого, помимо температуры и влажности, есть еще измерение давления. Тут главное не ошибиться при приобретении, потому что он выглядит аналогично BMP280, который, к сожалению, давление не измеряет.
Благодаря тому, что ESP8266 7-й версии имеет множество пинов, есть возможность подключения кучи датчиков и/или реле.
И, похоже, что придется ставить еще один температурный датчик в квартиру, а то и не один, в каждую комнату. В начале месяца скачал квитанцию с сайта ГУК «Жилфонд», посмотрел сколько начислили за май месяц. Среди прочих платежей было доначисление за отопление за последние 5 месяцев. Так как сумма вышла не маленькая, порядка 10 тысяч рублей, а температура в квартире в зимний период оставляла желать лучшего, придется, видимо, вызывать следующей зимой работников ЖЭКа, когда в квартире станет холодно. Поговорив с некоторыми соседями, узнал, что у них также были большие начисления за отопление — от 10 до 15 тысяч, а в квартире было холодно.

Отправка данных на narodmon.ru

Так как порой случались сбои в отправке данных на сервер narodmon (нет интернета, сервер занят либо ничего не отвечает и т. д.) принял решение немного модифицировать скрипт отправки. В идеале, в случае любого сбоя данные должны накапливаться и затем, когда все «устаканиться», скопом быть отправлены.
Скрипт был модифицирован, были внесены несколько дополнительных проверок и он ушел в работу. В ходе работы создается временный файл, куда пишутся все данные. Если сервер narodmon ответил, что данные приняты нормально, то содержимое файла удалялось. В противном случае данные добавляются в этот файл с отметкой времени, когда они были добавлены.
Но, как обычно, не обошлось без ложки дегтя. В случае, если сервер не отвечает достаточно долгое время, данных накапливается много (в обычном варианте замеры проводятся каждые 5 минут). Когда их размер превысит 4 Кб, сервер narodmon, насколько я понимаю, просто откажется принимать такое множество данных. Но тут ничего не попишешь, будем тестировать и смотреть что получится.

Первый опыт с ESP8266

Не так давно приобрел ESP8266-07 с адаптером под «гребенку» с шагом 2,54 мм. Давно была мысль попробовать что она из себя представляет, а тут просто вспомнил и прикупил. Обошлось мне все это буквально в 275 рублей. Думаю, что это не та сумма, которую было бы жалко за опыт.
До экспериментов несколько дней руки не доходили, пока не утащил на работу Там, когда выдалось свободное время, занялся платой. Для подключения использовал беспаечную плату, кабели для подключения и адаптер USB-TTL. Для начала система, как обычно, скачала и поставила драйверы на адаптер, затем уже я начал собирать схему.
Без приключений не обошлось. Поначалу компьютер ни в какую не хотел «общаться» с ESP. Не считывал данные, не мог перепрошить, вообще ничего не мог с ней сделать. Плюсом к этому всему была «любовь» Windows к работе с COM-портами. Здесь я подразумеваю тот момент, что если ты не освободил порт (например, программа зависла и ее пришлось завершать принудительно) или сделал еще какие-то его настройки, «несовместимые» с Windows — тебя ждет перезагрузка системы. Сколько я этого «накушался», когда занимался торгово-кассовым оборудованием!!!
И вот, ура! Адаптер определился программой, можно считать параметры и так далее. Первое, что я сделал — перепрошивка. Особой надобности в этом не было (по крайней мере, пока что), просто хотелось получить опыт в этом направлении. С перепрошивкой пришлось помучиться. В итоге, программа залила на плату другую прошивку, но в самом конце выдала сообщение о невозможности выхода из режима прошивки. Пока пытался что-то сделать с платой, привести ее в рабочее состояние, сложилось впечатление, что я получил «кирпич». В тоже самое время не покидала мысль, что ЭТО невозможно убить. Заменил программу прошивки. Поначалу смутило множество настроек — память подсказывала, что почти все они критичны для прошивки. Поменял те, которые, на мой взгляд, было нужно и перепрошил. Получил рабочую плату, которая перезагружалась в самый неожиданный момент. Снова битва с прошивальщиком... В конце концов я получил вполне работоспособную плату, которая адекватно реагировала на команды и не перезагружалась в самый неподходящий момент. В итоге, причиной всех перезагрузок платы оказался плохой контакт питания. Но это я понял уже в самом конце экспериментов.
Завтра возьму с собой на работу датчики, попробую подключить к плате, прошив перед этим NodeMCU — там есть возможность использовать скрипты на lua. Посмотрим что из этого всего получится...

Мой «сосед»

Как говорится, ничто не предвещало...
Вчера вечером раздается звонок в домофон. Я бы его вообще не услышал, потому что курил на лоджии, но у собаки есть дурацкая привычка заливаться лаем каждый раз, когда кто-то звонит в домофон или дверной звонок. Снимаю трубку, спрашиваю кто там. Меня в ответ спрашивают не проживает ли по данному адресу такой-то. Нет, говорю. После чего мне сообщают, что это милицию и они хотят мне задать несколько вопросов. Впускаю их и иду открывать входную дверь. На пороге стояли два молодых человека, один из которых предъявил мне удостоверение работника милиции. Хорошо, теперь я готов к разговору.
В ходе беседы оказалось, что по их данным в моей квартире прописан житель Кыргыстана. Я слегка удивился. Мне показали бумагу, в которой черным по белому в строке с ФИО этого гражданина был написан мой адрес. С учетом того, что я живу в этой квартире более 10 лет, это слегка, скажем так, не соответствует действительности. Сама же квартира была куплена еще перед поступлением сестры в ВУЗ, то есть более 20 лет.
В конце они записали мои данные, написали от руки заявление, что квартира принадлежит мне, проживаю я с женой и указанный гражданин здесь не числится и не проживает. После этого извинились и ушли.
Чуть позже я уехал по делам. Спустя некоторое время звонит мужчина с незнакомого номера, представляется моим участковым и спрашивает не приходили ли ко мне ребята. Подтверждаю, после чего он снова уточняет что со мной не проживает данный гражданин. Говорю, что нет такого и никогда не было. Он вздыхает и говорит, что будет разбираться с миграционной службой.
Потом я позвонил маме, рассказал эту историю. Она посоветовала мне проверить сколько человек прописано в квартире. Зашел на сайт «Жилфонда», распечатал квитанцию об оплате, проверил. Все верно, прописан только я. Хоть это успокаивает.
Ждем продолжения истории. Чувствую, что этим дело не закончится

«ДНС» на Говорова

Понадобилась мне тут мышь взамен сломанной. Так как день был выходной, то решил зайти в ближайший компьютерный магазин «ДНС». Нашел мышки, начал рассматривать. Я, в принципе, не так уж часто заглядываю в упаковку — нет надобности. Но тут что-то нашло. Начал вскрывать упаковки. И ладно бы если только они были надорваны — это могли сделать покупатели. Но следы грязи на кнопках от пальцев (в процессе использования на них собирается грязь с рук) меня просто убили. Одна, вторая, третья, четвертая... Да вы что, издеваетесь? В общем, магазин, как говорится, «ни разу не палится», выкладывает мыши, которые явно не один месяц перед этим провели на стенде. И никто ничего бы не заметил, если бы их хотя бы протерли перед тем, как заново упаковать и выложить на продажу.

Создание бота Telegram

Для чего мне это понадобилось? Как писал ранее, телефон не всегда почему-то проверяет почту, несмотря на заданный минимальный интервал проверки. Более удобным показалось использовать telegram для срочных оповещений. Задавшись этой целью, установил на сервер telegram-cli, который, как оказалось позднее, не понадобился. Снесу, однако :-)
Для начала создаем бота при помощи @BotFather. Задаем ему имя и описание. Я также задал и юзерпик для красоты. Открываем чат с этим ботом, набрав в браузере ссылку https://t.me/<имя_вашего_бота>. Затем нужно узнать ваш идентификатор. Для этого я воспользовался ботом @userinfobot, вы можете использовать другие методы. В принципе, вся нужная информация у нас есть.
Следующей задачей стала отправка сообщений из скрипта linux. Здесь нам поможет стандартный curl. После серии опытов обрисовалось примерно вот такое тело скрипта:

ChatID=*****
BotToken=******
Text="Hello, world!"

curl -s -X POST "https://api.telegram.org/bot$BotToken/sendMessage" -F chat_id="$ChatID" -F text="$Text"

Здесь ChatID, BotToken и Text — ваш идентификатор в telegram, токен бота, который вам выдали при его создании, и текст сообщения, соответственно. Хочу обратить внимание на то, что переменные в строке curl взяты в двойные кавычки. Это сделано для того, чтобы избежать утери части текста, если в нем присутствуют пробелы.
С текстом разобрались, остается отправка фотографии. Здесь все чуть-чуть сложней:

curl -s -X POST "https://api.telegram.org/bot$BotToken/sendPhoto" -F chat_id="$ChatID" -F photo="@$1" -F caption="$Text"

Добавился еще один параметр photo, в который передается имя файла. Полный путь к файлу у меня передается самому скрипту, поэтому просто используем его. Также параметр text из предыдущего примера я заменил на необязательный caption — название фото.
На текущий момент motion оповещает меня об обнаружении движения, чуть позже присылает фото и ссылку на файл с записью. В планах еще добавить обнаружение лиц на фото, чтобы было видно кто пришел или ушел. Следующим шагом может стать, например, автоматическое включение моего компьютера когда прихожу домой.

Настройка motion

Так как незадолго до этого мой сервер «приказал жить» (оказалось, что проблема в кабеле питания камеры, но сейчас не об этом), то заодно заново установил систему и, соответственно, перенастраивал половину программ. В том числе и motion.
После настройки оказалось, что в кадре присутствуют помехи, на счет которых у меня была мысль. Но проверить ее удалось только вчера. И действительно, оказалось, что я подключил питание камеры к кабелю, на котором было расположено питание жесткого диска, который и создавал наводки в питании камеры. Переключение на другой кабель устранило эту проблему.
Затем вспомнил, что давно хотел ускорить получение сообщений о появлении движения в поле зрения камеры. Самым подходящим для этого показался Telegram. Поиск соответствующих пакетов в репозитории выдал результат в виде пакета telegram-cli. После его установки никак не получалось его активизировать. По идее, после запуска программы она должна выдать запрос на авторизацию, но ничего не происходило. Процесс висел достаточно продолжительное время, после чего просто выдавал сообщение о крахе. «Игры» с ключами ни к чему не привели, результат был таким же. Вопрос в чат разработчиков остался без ответа. Остается только оставить такой же вопрос на форуме и надеяться на то, что хоть кто-то ответит на него. И, конечно, гуглить, яндексить и так далее...

Ранее Ctrl + ↓