Управление android по ethernet

Взаимодействие Android-устройств в локальной сети

Предположим, мы пишем игру для Android, которая подразумевает некое сетевое взаимодействие между устройствами. Причем наши устройства находятся в одной сети и мы хотим, чтобы взаимодействие между ними осуществлялось быстро, а значит вариант с обменом данными через интернет нам не подходит. Ах да, еще одна маленькая ложка дегтя — мы хотим охватить максимально возможную аудиторию, для чего нам необходимо поддерживать Android 2.3.
Что же нам делать? Давайте поговорим об этом, а заодно рассмотрим относительно новые возможности Android SDK для соединения двух и более устройств.

О чем это и для кого это?

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

Какие возможные способы решения существуют?

  1. Android Network Service Discovery. Простой и эффективный способ обнаружения устройств. На Android Developer есть пошаговое руководство по подключению NSD, есть пример NsdChat, который можно скачать там же. Но есть один существенный минус — данный метод поддерживается только начиная с API Level 16, то есть с Android 4.1 Jelly Bean;
  2. Второе решение, предлагаемое нам на сайте Android Developer — Wi-Fi Peer-to-Peer. Проблема этого метода та же самая — поддерживается он только начиная с API Level 16;
  3. Есть странное решение, которое предлагается некоторыми программистами на Stack Overflow — самостоятельно сканировать локальную сеть на предмет наличия сервера. То есть проходить по всем адресам сети. Это уже сейчас звучит как странный велосипед, а теперь представьте, что порт нашего сервера назначается автоматически. Таким образом, сканирование даже самую небольшой сети становится достаточно долгой и трудоемкой задачей;
  4. Наконец, мы можем обратить внимание на Java-библиотеки и написать что-нибудь с их использованием. Например, JmDNS.

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

Я вооружился JmDNS и решил попробовать соорудить несколько классов, которые по максимуму упростят написание описанных выше приложений. Но для начала пришлось немного повырезать дубликаты .class-файлов из jar-пакета JmDNS (проблема описана здесь):

Далее я взял исходный код NsdChat с Android Developer и изменил его служебный класс, который отвечает за инициализацию сокетов и организацию сетевого взаимодействия. Также я написал wrapper для JmDNS

Здесь размещены 4 основные функции для работы Network Discovery:

  1. startServer для создания сервера и регистрации соответствующего сервиса в локальной сети;
  2. findServers для поиска серверов;
  3. reset для окончания работы с Network Discovery и последующего освобождения ресурсов;
  4. wifiLock для запроса блокировки Wi-Fi.

В завершении я написал универсальный класс ConnectionWrapper для полноценной организации обнаружения, а также обмена сообщениями в локальной сети. Таким образом, создание сервера в конечном приложении выглядит следующим образом:

А вот и mServerHandler, использующийся для приема и обработки сообщений:

Отправка сообщений еще проще:

И, наконец, метод для обнаружения и подключения к серверу:

Как видите, все очень просто. А главное, все это работает в любой версии Android для максимум двух устройств. Но сделать так, чтобы это работало для условно неограниченного числа устройств очень легко, и очевидное решение придет к вам почти сразу после детального изучения класса Connection. Пусть это будет в качестве домашнего задания.
Ах, да, весь код доступен для изучения и использования всеми желающими в моем репозитории на GitHub.. И, конечно, не исключаю то, что некоторые вещи можно сделать лучше и проще, поэтому не стесняйтесь форкать и делать pull request’ы.

Читайте также:  Android adapter pcui что это

Источник

Как подключить Android-устройства к локальной сети

В данном руководстве я опишу как реализовать:
1) Подключение мобильного устройства к жестким дискам ПК на Windows;
2) Общие принципы создания домашней локальной сети (LAN).

Подключение Android-устройства к LAN

Итак, вот что нам потребуется (типовой набор):

  1. Мобильное устройство (в моем случает планшет Asus Nexus);
  2. Android-приложение ES Проводник;
  3. Компьютер, к жестким дискам которого мы будем подключаться;
  4. Роутер, к которому подключены компьютер и Android-устройство;

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

ES Проводник является одним из наиболее популярных приложений для работы с файлами, которое умеет работать с удаленными сетями из «коробки». Устанавливаем его через Google Play на Android-девайс.

Открываем приложение и переходим на вкладку «Сеть > LAN». Нажимаем «Scan» для запуска поиска устройств в нашей локальной сети.

Если не все ваши устройства определились, то возможны проблемы с открытием доступа к папкам и файлам на компьютерах. Также рекомендуется задать вручную IP-адреса устройств и добавить их в ES Проводнике самостоятельно, кликнув кнопку «Создать» (см. раздел Настройка локальной сети).

Настройка локальной сети

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

Заходим в «Панель управления > Система», ищем раздел «Имя компьютера, имя домена, имя рабочей группы» и жмем «Изменить параметры» и снова «Изменить».

В поле «Рабочая группа» пишем «WORKGROUP». После чего жмем «OK» и перезагружаем ПК.

Общий доступ к файлам

Заходим в «Панель управления > Сеть и Интернет > Центр управления сетями и общим доступом» и расшариваем папки.

Если по каким-то причинам получаем ошибку про недоступность RPC сервера, то заходим в «Управление (правый клик мышки на иконке «Мой компьютер») > Службы и приложения» и запускаем службы:

  • Удаленный вызов процедур (RPC);
  • Сервер;
  • Модуль запуска процессов DCOM-сервера;

Пробуем в EN Проводнике обнаружить наши ПК, если снова неудача, переходим к следующему разделу.

Настройка IP-адресов

При сложностях подключения устройств в локальной сети рекомендуется прописывать IP-адреса устройств вручную. Занятие это утомительное, но не сложное 🙂

1. Заходим на компьютере в «Панель управления > Сеть и Интернет > меняем вид на «Крупные значки» в правом верхнем углу > Центр управления сетями и общим доступом > Изменение параметров адаптера».

Выбираем наше подключение, у меня ноутбук подсоединен к роутеру через Ethernet-кабель («Подключение по локальной сети»), поэтому настраиваю его. Аналогичным образом можно настроить и «Беспроводное соединение».

2. Чтобы упростить себе задачу жмем правой кнопкой мыши по иконке нашего соединения и выбираем пункт «Состояние», в открывшемся окне жмем кнопку «Сведения».

Интересуют нас текущий IP-адрес компьютера и основного шлюза. Они нам понадобятся в следующем пункте. Оставляем пока это окно открытым.

3. Снова кликаем правой кнопкой мыши на «Подключение по локальной сети» (пункт 2). В списке выбираем «Свойства». И переходим к свойствам «Протокол Интернет версии IP (TCP/IPv4)».

Вбиваем значения из окна «Сведения», которые мы оставляли открытым ранее.

Замечу, что основной шлюз должен быть одинаковым у всех устройств, а вот последнее число в IP-адресе должно отличаться. Например, 192.168.0.94; 192.168.0.4; 192.168.0.12 и т.д.

Ура! Самая нудная часть закончена 🙂

Вот, в принципе, и всё. Повторю рассмотрен лишь типовой пример, потому как разнообразие вариантов организации сеток и подключаемых устройств велико. Например, я в домашней сети настроил подключение со своих устройств к сетевому медиацентру с HDD на 1TB, используя его как основное хранилище данных. Проводами подключил все ПК к роутеру (+свитч), а подсоединение планшета осуществляю через Wi-Fi.

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

Источник

Ethernet-шлюз nooLite PR1132 — управление светом со смартфона и планшета

Неоднократно на хабре писали про систему nooLite, позволяющую управлять освещением и электроприборами по радио. Недавно белорусская компания «Ноотехника» — производитель системы nooLite — начала выпуск нового устройства — Ethernet-шлюза nooLite, позволяющего управлять светом с любого смартфона или планшета.
Итак, встречайте! Ethernet-шлюз PR1132:

Читайте также:  Ядра андроид для чего они

Девайс работает в локальной сети (например, его можно подключить к роутеру, который раздает интернет по квартире). Управление светом происходит через веб-интерфейс (т.е. через браузер) или через HTTP API.

Технические характеристики

Шлюз имеет 32 канала управления. Это значит, что с его помощью можно управлять 32 независимыми группами светильников. ИМХО, для квартиры это — более, чем достаточно. Для загородного дома, скорее всего, тоже. Радует тот факт, что шлюз имеет более мощный передатчик, чем у обычных пультов nooLite. Мощность передатчика шлюза около 5 мВт, у пультов — около 3 мВт. Благодаря этому, максимальная дальность расположения силовых блоков увеличена до 100 м (с помощью пультов можно управлять силовыми блоками на дальности до 50 м).
Кроме передатчика, шлюз имеет также приемник nooLite, с помощью которого он может принимать данные от датчиков температуры/влажности PT111 (на текущий момент их пока еще нет в продаже). К шлюзу можно привязать до 4 датчиков и просматривать их показания через веб-интерфейс.
Питается шлюз от сети 220 В, 50 Гц, потребляемая мощность — 3,5 Вт.

Внешний вид и комплектация

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

Внутри находятся: сам шлюз PR1132 и антенна к нему, блок питания, инструкция, соединительный кабель Patch Cord длиной 1м.

Устройство не отличается необычным дизайном, но выглядит вполне современнно. Шлюз имеет относительно небольшие размеры: 115х85х35 мм — чуть больше мыльницы 🙂

На передней панели указано название модели, логотип nooLite и светодиодный индиктор работы шлюза.

Когда шлюз работает, индиктор постоянно горит. Индиктор светится не очень ярко: у меня дома шлюз стоит в спальне на шкафу и ночью свечение индиктора абсолютно не мешает.

На задней панели находится SMA-разъём для подключения передающей антенны, разъем для подключения кабеля Ethernet и разъем для блока питания. Между антенной и разъемом для Etherntet-кабеля находится сервисная кнопка, с помощью которой можно перевести шлюз в режим обновления прошивки или сбросить его настройки на стандартные (типа hard reset).

Подключение

Переходим к подключению шлюза — тут все очень просто.

Ethernet-кабель подключаем к роутеру, кабель питания — в розетку: загорелся светодиодный индикатор — шлюз готов к работе. Набираем в адресной строке браузера 192.168.0.168 и видим:

По умолчанию в настройках шлюза установлен статический IP-адрес 192.168.0.168 и маска 255.255.255.0. Если параметры вашей сети отличаются, необходимо подключить шлюз в сеть с совместимыми параметрами и поменять его настройки.

Интерфейс

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

Интерфейс корректно отображается как на компьютере, так и на маленьких экранах смартфонов.
На компьютере есть небольшое ощущение, что элементы управления чрезмерно большие, но в целом воспринимается нормально.
Также была замечена особенность: в браузере Windows Phone 8 (смотрел на Nokia Lumia 625) часть надписей отображается чрезмерно большим шрифтом. Насколько я знаю, это особенность Internet Explorer в Windows Phone — он выделяет текст на странице по своему усмотрению. При просмотре сайтов с контентом это удобно, но при работе с приложениями, похожими на шлюз, смотрится не слишком хорошо. В целом — не критично. На Android и iPhone — все ок.

Раздел управления светом

Этот раздел открыт по умолчанию. Он содержит несколько групп, в каждой из которых находятся элементы управления. Например, можно создать группы по комнатам («кухня», «коридор», «спальня») и внутри разместить элементы управления светильниками (например, в спальне может быть «основной свет» и «бра»).

Для каджого элемента можно выбрать его тип: переключатель (кнопки ВКЛ/ВЫКЛ), диммер (позволяет менять яркость света), сценарная кнопка, управление светодиодной RGB-лентой. Каждому элементу управления можно назначить один или несколько каналов, в которые он будет посылать команды.

Читайте также:  Как начать разрабатывать под android

Кроме элементов управления в каждую группу можно добавить панель, отображающую информацию с датчиков температуры/влажности. Шлюз имеет 4 канала для привязки датчиков. В настройках группы можно выбрать, какие датчики в ней отображать.

Раздел таймеров

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

Шлюз позволяет настроить до 8 таймеров. Для каждого из них можно указать время срабатывания, дни недели срабатывания (например, чтобы действия выполнялось только в будние дни) и, собственно, действие, которое должно выполняться при наступлении заданного времени (например, отправить команду включения или вызвать сценарий освещения).

Раздел настроек

Третий большой раздел — настройки шлюза.

Тут очень много всего — не буду подробно описывать, только перечислю что там есть.
Итак:

  • группы и элементы управления;
  • датчики;
  • привязка/отвязка силовых блоков;
  • настройки системного времени;
  • настройки сети;
  • информация о текущей версии ПО и обновление прошивки.
Дизайн интерфейса

Как я уже писал выше, интерфейс шлюза адаптируется под маленькие размеры экранов. На мой взгляд, на маленьком экране он смотрится значительно лучше 🙂 Мы пробовали работать со шлюзом в разных браузерах и на различных мобильных устройствах (WP, iPhone, Android), проблем замечено не было.
Единственное пожелание по внешнему виду, которое приходит в голову — сделать более светлый дизайн — текущее оформление смотрится очень уж сурово. И, как оказалось, движение в этом направлении уже идет. Выглядеть будет примерно так:

Шлюз имеет возможность управления привязанными силовыми блоками посредством отправки HTTP запросов. Для передачи команды необходимо запросить со шлюза методом GET файл «api.htm», передав в параметрах номер канала, тип команды и данные для команды. Если команда выполнена успешно, в ответ на этот запрос шлюз вернет строку «ОК».

Подробное описание формата запросов смотрите в инструкции к шлюзу.

Для получения информации с привязанных датчиков нужно запросить со шлюза файл «sens.xml». Шлюз вернет результат в следующем формате:

В файле присутствут элементы snstX (температура), snshX (влажность), sntX (состояние датчика), где X — это номер датчика (от 0 до 3). Немного неудобно, что номер датчика задан в названии элемента, а не значением атрибута (например, нельзя единообразно обработать датчики в цикле), но в виду небольшого количества датчиков особых проблем это доставить не должно.

Также хотелось бы иметь возможность получить со шлюза список групп и элементов управления в них. Например, это было бы удобно при написании мобильного клиента для шлюза. Сейчас единственный вариант — запрашивать страницы групп элементов и парсить их. По нашей информации, в будущем API будет доработан и появится возможность экспорта и импорта настроек шлюза. Этот функционал предназначен для работы с настройками (например, восстановление ранее сохраненных настроек), но с его помощью можно получить и список групп.

В целом, на мой взгляд, API шлюза — довольно удобный. С его помощью можно использовать шлюз в собственных системах «умного дома».

Установленная производителем стоимотсь щлюза — $112. Когда в конце прошлого года начались резкие изменения курса доллара, «Ноотехника» попросила партнеров зафиксировать курс, по которому производится расчет цены на значении 35 рублей за доллар. Таким образом, в Москве можно купить шлюз за 3920 руб. На мой взгляд, цена немного завышена, но, особенно, если сравнить со стоимостью аналогичных устройств, вполне приемлема.

Вместо заключения

В целом можно сказать, что получилось достойное устройство, обладающее большими возможностями.
Достоинства:
— легкость подключения и настройки,
— удобно использовать как на компьютере, так и на телефоне,
— простой и удобный API.
Недостатки:
— брутальный дизайн, местами немного едет верстка;
— немного завышена цена (ИМХО).

Источник

Оцените статью