…а вот не видать из Челябинска моего Лампочкометра,
я вам скажу больше – его уже и из-за угла не видать…
я вам скажу больше – его уже и из-за угла не видать…
Кто не понял, вообще о чём речь, смотрите мои статьи на Датагоре:
• Лампочкометр - контроллер освещения, прибор для отображения количества исправных ламп
• Лампочкометр возвращается! (vol. 2)
Моя работа связана с частыми и, бывает, продолжительными командировками. А лампочки как сгорали, так и горят. Причем они как чувствуют. Бывает, за месяц не одной не сгорит, но стоит мне отлучиться в командировку, сразу начинают перегорать. Как-то я был в командировке в Челябинске двадцать три дня – сгорело 10 ламп!!! Все бы хорошо: есть Лампочкометр, есть сосед, с которым я договорился, чтобы он менял за меня лампы. Но вот сказать ему, в каком подъезде сгорела лампа, я не могу, мне же не видно свой Лампочкометр из Челябинска, Магнитогорска или Новотроицка. Естественно, мало по малу начинала зреть мысль о том, как вывести Лампочкометр в «свет» – в ИНТЕРНЕТ!!!
Итак, встречайте, новый Лампочкометр-WEB!!
Содержание статьи / Table Of Contents
↑ Реализация
Начну с самого простого – с аппаратной части. Контроллер нижнего уровня остался без изменений, есть в планах и его модернизировать, но пока руки не доходят. А вот контроллер верхнего уровня выглядит теперь по-другому. Это практически полноценный компьютер, на miniITX материнской плате и с твердотельным диском в качестве основного носителя, собранный специально для нового Лампочкометра.Главный аргумент – в навигаторе отсутствует Ethernet-порт, необходимый для доступа в сеть. В принципе, можно было и подешевле сделать, всякие там Ethernet-модули и пр. Но, не все так просто как хотелось бы, простой пример предыдущего Лампочкометра, танцы с бубном для того, чтобы состыковать FT232 c навигатором(WindowsCE). На обычной платформе все гораздо проще да и возможностей больше. Преобразователь USB-RS485, тоже претерпел незначительные изменения, был убран стабилизатор питания для навигатора и самого преобразователя. Преобразователь теперь, как и положено, питается от шины USB. Вот собственно и все по аппаратной части.
↑ Программа
Программа переписана на 95%, остался нетронутым модуль связи. Изменен интерфейс и частично функционал.Интерфейс программы состоит из двух вкладок – «Калибровка» и «Настройки».
Вкладка «Калибровка»
Основная вкладка, на которой я отображаю данные АЦП, принятые от обоих контроллеров нижнего уровня (лестниц и тамбуров) в табличном виде.
Из явных элементов управления всего две кнопки:
«Выгрузка XML» – тестовая кнопка для принудительной выгрузки файла с данными всех каналов, в процессе работы данные выгружаются только по изменению состояния канала.
«Калибровка» – кнопка для выполнения процедуры калибровки каналов, активна только, когда выбраны каналы для калибровки.
Теперь о неявных элементах управления. Чтобы не городить кучу кнопок или чекбоксов (окошечек с галочками), я использую сами ячейки. Для сброса аварийного канала нужно сделать двойной клик по соответствующей ячейке. Таким же образом выбираются каналы для калибровки. В ячейках выбранных каналов выводиться «Да», кнопка «Калибровка» становится активной, после нажатия кнопки будут калиброваны только выбранные каналы.
Вкладка «Настройки»
На вкладке есть группа настроек связи и группа «Program Crash Setting», которая как я надеюсь, в будущем будет ликвидирована. В группе присутствует всего один элемент – чекбокс. При установке опции «Close the program after losing connection» - программа закрывается. В общем, это одна часть костыля, есть одна проблемка, которую я пока не смог решить.
Периодически пропадает связь, при этом порт в системе не пропадает. Закрыть и снова открыть порт в программе недостаточно, или я неправильно это делаю, ведь функция, ведущая обмен с контроллером нижнего уровня, работает в отдельном потоке. Лечится проблема пропажи связи только перезапуском программы. Но, как вы понимаете, просто закрыть программу недостаточно, нужно ведь её снова запустить. Для этого у меня написана программа – вторая часть костыля, которая по таймеру проверяет, запущена ли программа Лампочкометр, если нет, то запускает. Так или иначе, метод полезен, я могу быть уверен, что программа всегда работает.
Ниже под вкладками расположено поле статуса, где я вывожу информацию об активности обмена и Crash Counter – количество аварийных (при потере связи) закрытий программы.
Как вы помните, в предыдущем Лампочкометре я собирался сделать логирование, которое на момент выхода статьи еще не было сделано, я его сделал, но немного позже. В текстовый файл я записывал следующие события:
«Программа запущена»
«Программа закрыта»
«Авария, лестница подьезд № n»
«Сброс аварии, лестница подъезд № n»
К каждому событию прибавлялось время и дата. Но и тут был косячок, дата и время периодически «слетали», видимо сказывалось не совсем нормальное состояние навигатора.
В этом Лампочкометре я так же сделал логирование, но не так как в предыдущем, а именно: я пишу сообщения в журнал операционной системы. Чтобы не путаться, я создал свой журнал.
Вот так красивенько это выглядит – совсем по-взрослому
Возможность управления насосом из программы убрана. Старый насос приказал долго жить. Купили новый насос, не шумный, с частотным регулированием, включили и забыли, но это уже совсем другая история.
Теперь о взаимодействии с Веб-интерфейсом. Сразу оговорюсь, в Веб-разработке я полный профан, а посему пришлось обращаться за помощью к другу. Для обмена данными с сайтом, в программе реализована выгрузка данных в XML формате, а также загрузка данных с сайта, когда производиться операция сброса аварии. На страничке Лампочкометра изображение жилого дома с подъездами.
Цвет окон и дверей отображает статус лестниц и тамбуров:
Голубой(темно-серый для тамбуров) – свет выключен,
Желтый – свет включен, нагрузка номинальная.
Красный – авария.
Для сброса аварийного канала нужно кликнуть по аварийной двери/группе окон – выводиться диалог для ввода пароля. При корректном пароле будет сформирован файл InXML с номером сбрасываемого канала. Программа считывает файл, обрабатывает и удаляет.
↑ Видео
И напоследок кратенькое видео, как это все работает, для наглядности, вместо реального железа – эмулятор в Протеусе.Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.