Позднее Ctrl + ↑

Синхронизация времени в 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 лет.
В конце они записали мои данные, написали от руки заявление, что квартира принадлежит мне, проживаю я с женой и указанный гражданин здесь не числится и не проживает. После этого извинились и ушли.
Чуть позже я уехал по делам. Спустя некоторое время звонит мужчина с незнакомого номера, представляется моим участковым и спрашивает не приходили ли ко мне ребята. Подтверждаю, после чего он снова уточняет что со мной не проживает данный гражданин. Говорю, что нет такого и никогда не было. Он вздыхает и говорит, что будет разбираться с миграционной службой.
Потом я позвонил маме, рассказал эту историю. Она посоветовала мне проверить сколько человек прописано в квартире. Зашел на сайт «Жилфонда», распечатал квитанцию об оплате, проверил. Все верно, прописан только я. Хоть это успокаивает.
Ждем продолжения истории. Чувствую, что этим дело не закончится

Ранее Ctrl + ↓