В этой статье описывается, как синхронизировать Android-вещи с Firebase, чтобы мы могли удаленно управлять светодиодом RGB в режиме реального времени. Более подробно этот проект показывает, как управлять удаленным светодиодом RGB в реальном времени, изменяя некоторые значения в базе данных Firebase. Как вы, возможно, уже знаете, Android Things — это ветка ОС Android, поэтому Android Things поддерживает Firebase из коробки. В этом руководстве описываются все шаги, необходимые для интеграции Android Things с Firebase, и как подключить светодиод RGB к плате Android Things. Синхронизация вещей Android с Firebase. Этот проект IoT в реальном времени меняет цвет светодиода в соответствии со значением, которое мы установили с помощью Firebase.
В этом руководстве предполагается, что вы уже знакомы с ОС Android Things и уже установили ее. Если вы впервые используете Android Things, вы можете прочитать, как установить ОС Android Things на свою плату . Этот проект Android Things IoT может быть дополнительно расширен, чтобы мы могли синхронизировать Android Things с Firebase, используя различные типы информации. Существует несколько сценариев, в которых синхронизация между Android Things и Firebase играет важную роль, поэтому важно знать, как это сделать.
Прежде чем углубиться в этот проект синхронизации Android Things Firebase, полезно выяснить, какие компоненты мы будем использовать:
- Raspberry Pi 3 (или совместимая с Android Things плата)
- общий анод RGB LED
Кроме того, вам нужна учетная запись Firebase, чтобы вы могли протестировать этот проект Android Things IoT.
Как синхронизировать Android-вещи с обзором проекта Firebase
Теперь мы знаем компоненты, которые мы будем использовать в этом проекте. Полезно иметь обзор этого проекта синхронизации, чтобы иметь четкий обзор. На рисунке ниже показано, как работает проект:
После того, как мы подключили Android Things к Firebase всякий раз, когда мы меняем значение в базе данных Firebase, новое значение вызывает событие, так что происходит синхронизация между Android Things и базой данных Firebase, передавая новое значение плате Android Things, которая, в свою очередь, устанавливает Цвет RGB LED.
Как настроить Firebase с Android Things
В этом разделе мы опишем, как настроить проект Firebase, чтобы мы могли интегрировать его с Android Things. Первый шаг — создание бесплатной учетной записи . Получив бесплатный аккаунт, вы можете создать новый проект Firebase, как показано ниже:
Следующим шагом является настройка вашего приложения:
Во время этого процесса настройки вы должны следовать инструкциям Firebase. Наконец, перед взаимодействием с Firebase необходимо изменить аспекты безопасности:
Наконец, мы можем настроить нашу базу данных, которая будет содержать цвета светодиодов:
На уровне приложения build.gradle
выглядит так:
1
2
3
4
5
6
7
|
...... dependencies { provided 'com.google.android.things:androidthings:0.4.1-devpreview' compile 'com.google.firebase:firebase-core:11.4.0' compile 'com.google.firebase:firebase-database:11.4.0' apply plugin: 'com.google.gms.google-services' } |
Как использовать Android вещи с Firebase
После того, как вы следовали инструкции во время настройки проекта Firebase, вы готовы приступить к программированию приложения Android Things. Все зависимости и настройки Firebase теперь готовы, и мы можем погрузиться в проект Android Things. Как описано выше, приложение Android Things должно прослушивать изменения значения Firebase и реагировать, управляя светодиодом RGB.
Индикатор RGB имеет 3 контакта по одному для каждого цвета, и мы подключаем их к контактам Raspberry GPIO. В соответствии со значением в базе данных Firebase приложение Android Things включает или выключает каждый вывод GPIO, контролируя, таким образом, цвет светодиода. Это приложение не имеет пользовательского интерфейса, потому что Android-вещи управляются удаленно .
Для создания этого приложения Android IoT необходимо создать новый проект Android Things, клонирующий проект шаблона . Если вы новичок, и вы впервые приближаетесь к Android Things, вы можете следовать этому руководству, описывающему, как начать работу с Android Things .
На предыдущем шаге мы создали таблицу в базе данных Firebase, содержащую три разных поля, представляющих цвета светодиодов. Чтобы сохранить новые значения Firebase, мы должны создать простой класс POJO, который представляет таблицу:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public class RGBColor { private int red; private int green; private int blue; public RGBColor() {} public int getRed() { return red; } public void setRed( int red) { this .red = red; } public int getGreen() { return green; } public void setGreen( int green) { this .green = green; } public int getBlue() { return blue; } public void setBlue( int blue) { this .blue = blue; } } |
Мы будем использовать этот простой класс для управления выводами GPIO.
Теперь мы можем сосредоточить наше внимание на основной деятельности, которая будет обрабатывать всю синхронизацию между Android Things и Firebase. Для этого вы можете использовать шаблон Activity, уже настроенный в проекте. В onCreate()
мы должны инициализировать соединение с Firebase и получить ссылку на PeripheralManagerService :
1
2
3
4
5
6
7
8
9
|
@Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); Log.d(TAG, "onCreate" ); databaseRef = FirebaseDatabase.getInstance().getReference(); databaseRef.addValueEventListener(veListener); pms = new PeripheralManagerService(); initPin(); } |
где databaseRef
является экземпляром DatabaseReference . Кроме того, приложение добавляет прослушиватель в databaseRef для получения уведомления об изменении значений. Кроме того, в этом методе мы инициализируем контакты, которые приложение использует для управления светодиодом:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
private void initPin() { try { redPin = pms.openGpio( "BCM26" ); redPin.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); greenPin = pms.openGpio( "BCM6" ); greenPin.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); bluePin = pms.openGpio( "BCM5" ); bluePin.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); } catch (IOException ioe) { Log.e(TAG, "Unable to open pins" ); } } |
Важно отметить, что в приведенном выше коде приложение Android Things IoT напрямую ссылается на имена пинов. Это не лучшая практика, если вы хотите, чтобы ваше приложение
портативный на разных досках . В любом случае, для этого урока мы можем использовать пин-код прямого доступа.
Синхронизация вещей Android с Firebase
Как только аппаратная часть готова и контакты инициализированы, необходимо получить уведомление, когда значения Firebase меняются. Для этого необходимо определить слушателя:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
private ValueEventListener veListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { RGBColor color = dataSnapshot.getValue(RGBColor. class ); // update pins updatePin(redPin, color.getRed()); updatePin(greenPin, color.getGreen()); updatePin(bluePin, color.getBlue()); } @Override public void onCancelled(DatabaseError databaseError) {} }; |
Приведенный выше код действительно прост, метод onDataChange вызывается при изменении одного или нескольких значений в базе данных. Класс RGBColor, описанный ранее, содержит новые значения. Последний шаг — обновление булавки, устанавливающей правильный цвет:
1
2
3
4
5
6
7
|
private void updatePin(Gpio pin, int value) { try { pin.setValue( value > 0 ? false : true ); } catch (IOException e) { e.printStackTrace(); } } |
В этом примере мы предполагаем, что если значение больше нуля, тогда PIN-код включен, если выключен. Обратите внимание, что мы используем общий катодный светодиод, поэтому отключаем вывод.
Теперь вы можете играть с помощью консоли Firebase, изменяя значения RGB, и заметьте, что светодиод меняет цвет.
Резюме
В конце этой статьи вы узнали о том, как синхронизировать вещи Android с Firebase, чтобы мы могли в реальном времени управлять платой вещей Android в режиме реального времени.
Опубликовано на Java Code Geeks с разрешения Франческо Аццолы, партнера по нашей программе JCG. См. Оригинальную статью здесь: Синхронизация вещей Android с Firebase: удаленное управление светодиодом RGB в режиме реального времени.
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |