company_banner

Маячки Eddystone для контроля расхода электроэнергии

    В июле 2016, разбирая статьи на «Хабрахабре», я узнал о конкурсе Device Lab от Google, в котором предлагалось попробовать в работе BLE-маячки (beacons) c технологией Eddystone и описать в статье свое решение на их базе.

    Статья автора Павла Валентова, в рамках конкурса «Device Lab от Google».

    Про BLE-маячки мы уже знали из обсуждений на форуме разработчиков FireMonkey, портала разработчиков Google, из видео блога Максима Кульгина, и уже придумывали, как можно их использовать в своих мобильных приложениях.

    BLE устройства (Bluetooth Low Energy, англ.) — это устройства, которые имеют крайне низкий уровень потребления энергии при передаче данных по каналу Bluetooth. Маячки тоже относятся к BLE-устройствам, созданные для общения разработчиков ПО с объектами реального мира. Предлагаю прочитать про маячки статью на Хабрахабре.

    А я хочу рассказать о нашем опыте использования маячков. «СофтИнтерГрупп» (www.singro.ru) создает мобильные приложения. В нашем портфолио есть Android приложение «Контроль приборов учета электроэнергии», разработанное для АО «Орелоблэнерго». Это приложение создавалось для работы контролёров, которые ежедневно получают с сервера предприятия задания, обходить определенные адреса абонентов, проверять целостность счетчиков электроэнергии, записывать показания в приложение и передавать результаты работы на сервер предприятия.

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

    Для этих целей было решено принять участие в конкурсе и протестировать работу маячков.

    Получили маячки


    После регистрации на сайте конкурса, я подал заявку на получение маячков, рассказал о нашем мобильном приложении и планах применения технологии Eddystone. Хотелось развернуть сеть маячков, поэтому в заявке я запросил протестировать сразу тридцать маячков. В ответ сотрудник Google сообщил мне, что можно получить только два.

    — Ну что же, два так два. — ответил я, и уже на следующий поехал в офис Google на Балчуге, где на ресепшене меня ждали обещанные маячки.

    Как тестировали?


    Полученные маячки называются iBKS 105А.



    Чтобы проверить их работоспособность на своем HTC One с Android 6.0 было достаточно включить на смартфоне Bluetooth, а из маячка выдернуть пластиковую перемычку, которая размыкает контакт с батарейкой.

    Через пару секунд на смартфоне в шторке уведомлений высветилась нотификация с иконкой «Physical Web» и заголовком сайта «Github».


    Щелкнув по этой нотификации, в Хроме открылась страница «Eddystone» на Github с описанием технологии и API Eddystone. Я уже знал, что мы перешли по ссылке, которая была изначально зашита в маячке.

    Для программирования маячка было установлено из Google Play приложение «iBKS Config Tool».


    Это приложение позволяет полностью переконфигурировать маячки, задать уникальные идентификаторы и данные, которые рассылает маячок, изменить технологию рассылки пакетов, например, заменить технологию Eddystone на iBeacon.


    Мобильное приложение для работы с Eddystone


    Разработку мобильных приложений мы осуществляем в среде Embarcadero RAD Studio. Это очень удобно, потому что все необходимые компоненты и библиотеки для работы с маячками уже входят в поставку среды разработки, создание приложения для отладки маячков заняло 15 минут:

    — кинул на форму кнопку «Включить Bluetooth», компонент “Beacon” и текстовое поле для отладочной информации;



    — включил пару разрешений Android для работы с Bluetooth;



    — связал логику событий компонентов;

    procedure TForm2.BeaconBeaconEnter(const Sender: TObject; const ABeacon: IBeacon;
      const CurrentBeaconList: TBeaconList);
    begin
      case ABeacon.KindofBeacon of
        iBeacons:
          m.Lines.Add('Enter iBeacons: ' + ABeacon.DeviceIdentifier);
        AltBeacons:
          m.Lines.Add('Enter AltBeacons: ' + ABeacon.DeviceIdentifier);
        Eddystones:
          m.Lines.Add('Enter Eddystones: ' + ABeacon.DeviceIdentifier);
        iBAltBeacons:
          m.Lines.Add('Enter iBAltBeacons: ' + ABeacon.DeviceIdentifier);
      end;
    end;
    
    procedure TForm2.BeaconBeaconError(const Sender: TObject; AError: TBeaconError; const ErrorMsg: string;
      const ABeacon: TBeaconInfo);
    begin
      m.Lines.Add('Error: ' + ErrorMsg);
    end;
    
    procedure TForm2.BeaconBeaconExit(const Sender: TObject; const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
    begin
      m.Lines.Add('Exit: ' + ABeacon.DeviceIdentifier);
    end;
    
    procedure TForm2.BeaconCalculateDistances(const Sender: TObject; const ABeacon: IBeacon; ATxPower, ARssi: Integer;
      var NewDistance: Double);
    begin
      m.Lines.Add('Distanced: ABeacon: ' + ABeacon.DeviceIdentifier + ', Distance: ' + NewDistance.ToString);
    end;
    
    procedure TForm2.BeaconEnterRegion(const Sender: TObject; const UUID: TGUID; AMajor, AMinor: Integer);
    begin
      m.Lines.Add('Enter region: UUID:' + UUID.ToString);
    end;
    
    procedure TForm2.BeaconExitRegion(const Sender: TObject; const UUID: TGUID; AMajor, AMinor: Integer);
    begin
      m.Lines.Add('Exit region: UUID:' + UUID.ToString);
    end;
    
    procedure TForm2.BeaconNewEddystoneTLM(const Sender: TObject; const ABeacon: IBeacon;
      const AEddystoneTLM: TEddystoneTLM);
    begin
      m.Lines.Add('EddystoneTLM: ID:' + ABeacon.DeviceIdentifier);
    end;
    
    procedure TForm2.BeaconNewEddystoneURL(const Sender: TObject; const ABeacon: IBeacon;
      const AEddystoneURL: TEddystoneURL);
    begin
      m.Lines.Add('URL: ' + ABeacon.DeviceIdentifier + ' - ' + AEddystoneURL.URL);
    end;
    
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      Beacon1.Enabled := not Beacon1.Enabled;
      if not Beacon1.Enabled then
        m.Lines.Clear;
    end;
    

    — нажал кнопку «Запустить проект», проект собрался и запустился на подключенном к компьютеру устройстве.

    После запуска приложения «полилась» информация с маячков: ссылки, идентификаторы, вход и выход из настроенных зон, расстояние до датчиков, уровень заряда аккумуляторов, температура на борту датчика.



    Приступили к расстановке датчиков, и начали ходить со смартфоном и отслеживать изменения параметров, которые пригодятся в дальнейшей разработке.



    Какую технологию маячков применять Eddystone или iBeacon?


    Особенности работы нашего приложения в том, что разработано для работы на планшетах без интернета. Данные в него попадают с датчиков GPS и вводятся стилусами контролёров. Поэтому использование рекламной ссылки Eddystone-URL для нас было не актуально, ведь по этой ссылки перейти в интернет сотрудники не смогут. Однако смогут перейти все те, кто интернет имеют, поймают на своих смартфонах сигнал маячков и из любопытства захотят открыть ссылку. Поэтому в качестве URL зашили в маячки ссылку на сайт «Орёлоблэнерго».

    Интересная особенность. В процессе тестирования выяснилось, что Physical Web показывает рекламные ссылки в области уведомлений (в шторке) только, когда ссылка указывает на защищенный SSL сертификатом сайт, то есть адрес сайта начинается с HTTPS. Разработчики Eddystone объясняют, зачем это сделано. Переадресация через Google URL Shortener вопрос не решает, нужно, чтобы конечный ресурс открывался по протоколу HTTPS. Сайт заказчика работает без SSL, поэтому Physical Web в шторку его не выводит. Ну и ладно, сейчас у нас другая задача.

    Для нашей задачи мы задействовали параметр маячка Eddystone-UID. Нам был нужен уникальный идентификатор маячка, который привязан к идентификаторам в базе данных счетчиков предприятия, и к которому привязаны гео-координаты местоположения прибора учета. К приложению разработали сервис, который опрашивает маячки. Если обнаружен маячок Eddystone, со ссылкой на сайт «ОрёлОблЭнерго», информация об этом появится в области уведомления планшета или смартфона.


    Нажимаем на уведомление, открывается форма со списком обнаруженных маячков и информацией о счетчиках, привязанных в базе данных к ним.

    На этом экран необходимо выбрать прибор учета, с которым планируется работа.



    Если найден один маячок, сразу открывается форма для просмотра информации о приборе учета и ввода показаний счетчика.


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

    Таким образом маячки Eddystone заступили на службу контроля расхода электроэнергии.
    А мы уже приступили к проектированию системы позиционирования.
    Google 92,13
    Филин Лаки
    Поделиться публикацией
    Похожие публикации
    Комментарии 16
    • +1
      Вы, конечно, меня извините, но разве технология PowerLine для счетчиков не подходит? Или такие счетчики намного дороже?
      • 0

        ЕМНИП оно еще и дорого, особенно если окучивается не дом целиком, а только единичные клиенты — их же надо ставить до подстанции… плюс организовывать размещение и т.д.

      • +3
        вообще не расписано как маячки подключены к счетчикам
        • +1
          зашел в статью именно за этим
          • +1
            Двустронним скотчем.

            Никак они не подключены. Это тупо маячек который заполняет поля с описанием счетчика вместо контроллера Марьи Ивановны. Той остается все так же фонариком в подвале высвечивать показания и вводить в поля программы.

            Возникает вопрос чем не угодил NFC
            • 0
              NFC-метка считывается при непосредственном контакте с ней, нужно устройство очень близко поднести.
              В нашем приложении для таких целей есть считывание QR-кода счетчика, смысл такой-же — считал код, открылась карточка прибора учета.
            • 0

              как они тут применяются вместо GPS для поиска счетчика, и только, как я понял.

            • 0
              Вроде все так прикольно, технологично, трендово, синезубово, но… в итоге никакого контроля-то нет!
              Так что тема применения этих маяков не раскрывается. Хотя за пример на Delphi спасибо.
              • 0

                контроль обходчиками. которые и на пломбу посмотрят, и что магнитов не поставлено проверят :)

                • 0
                  Quis custodiet ipsos custodes? (Кто устережёт самих сторожей?).

                  Приложение позволяет автоматизировать передачу данных и улучшить контроль исполнения поручений. Обходчики, они же контролеры, конечно и так делают эту работу, а на сколько формально к ней подходят было до сих пор не известно.
              • 0
                1. Чем вызвано отсутствие интернета на планшете — нет необходимости или прям нельзя передавать данные наружу?

                2. Счетчики в помещении. Как работает GPS? У меня обычно не работает совсем.

                3. Можно фотографировать счетчик и распознавать как показания, так и серийный номер. Отпадёт необходимость в маячках :)

                И небольшое замечание по русскому языку:
                Щелкнув по этой нотификации, в Хроме открылась страница

                Получается, страница сама щелкнула по нотификации и открылась. Грамотно будет написать: «Щелчком по уведомлению можно открыть страницу».
                • 0
                  Да Вы правы, спасибо за замечание.

                  1. Заказчик на данном этапе не пожелал усложнять инфраструктуру — дополнительные расходы на связь, не целевое использование планшетов, дополнительные договоры с оператором GSM.

                  2. Приложение считывает ID маячка, в БД зашиты GPS координаты маячка, GPS трекер понимает эти, как полученные со спутника.

                  3. Спасибо за отзыв. Этот функционал может появиться в следующих версиях ПО.
                  • 0
                    3. неудобно с многотарифными счетчиками, это ж придется момент ловить, или вообще ролик снимать :)
                    • 0
                      Действительно, не подумал. Придётся несколько фоток делать. Зато документальное подтверждение!
                  • 0
                    Как искать маячок, когда сядет батарейка?
                    • 0
                      Сервис маячков — это дополнительный дополнительное направление бизнеса, которое можно вести клиентам самостоятельно, а можно отдать на аутсорсинг сервисной компании. Пример кейсов на эту тему уже показывал Максим Кульгин.
                      Мы знаем, где стоят наши маячки — в базе есть поле с их GPS координатами. Позднее добавили еще поле «описание», куда пишем, например — «закреплен на полке над входом в ангар» — чтобы проще потом маячки искать, и поле «статус маячка» — для сбора информации о текущем заряде и температуре.

                      Другой вариант: по заявлению производителей батарейка маячка живет 30-40 месяцев, если села батарейка, забыл про него и поставил новый. Периоды замены маячком можно привязать к срокам поверки счетчиков.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое