Раньше изобретал велосипед по созданию собственного облачного сервиса на основе MaxSite CMS для мониторинга устройства Arduino.
Было интересно.
Теперь воспользуемся облачным сервером RemoteXY для подключения Arduino UNO + ESP8266.
Уже забросил платы Arduino подальше и тут встретил связку - приложение и облачный сервис RemoteXY.
Достал платы, чтобы проверить - неужели все так просто.
Будем считывать температуру, влажность и мигать светодиодом, подключая платы по WiFi через интернет посредством облачного сервиса.
Есть возможность подключаться к платам, как к точке доступа, сразу из мобильного приложения, минуя интернет и облачный сервис. Но зачем? WiFi роутер всегда включен.
Прочитав статью про быстрый старт Arduino UNO + ESP8266 через облачный сервер, создадим такой проект:

В автоматически сгенерированный скетч добавим свои датчики:
/*
-- New project --
This source code of graphical user interface
has been generated automatically by RemoteXY editor.
To compile this code using RemoteXY library 2.3.5 or later version
download by link http://remotexy.com/en/library/
To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
- for ANDROID 4.3.1 or later version;
- for iOS 1.3.5 or later version;
This source code is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
*/
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__ESP8266_HARDSERIAL_CLOUD
#include <RemoteXY.h>
// настройки соединения
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600
#define REMOTEXY_WIFI_SSID "***********"
#define REMOTEXY_WIFI_PASSWORD "**********"
#define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com"
#define REMOTEXY_CLOUD_PORT 6376
#define REMOTEXY_CLOUD_TOKEN "**************************"
#include <dht11.h> // Добавляем библиотеку DHT11
dht11 DHT; // Объявление переменной класса dht11
#define DHT11_PIN 7 // Датчик DHT11 подключен к цифровому пину номер 4
const int analogSignal = A3; //подключение аналогового сигналоьного пина
const int digitalSignal = 8; //подключение цифрового сигнального пина
boolean noGas; //переменная для хранения значения о присутствии газа
int gas = 0; //переменная для хранения количества газа
float hum = 0; //переменная для хранения влажности
float temp = 0; //переменная для хранения температуры
int chk; //переменная для хранения ошибки DHT
char msgBuffer[20];
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,1,0,24,0,74,0,8,13,2,
2,0,38,44,22,11,7,81,22,11,
2,26,31,31,79,78,0,79,70,70,
0,66,132,10,13,31,24,7,10,27,
21,2,24,66,132,56,13,31,24,4,
41,31,24,2,24,67,4,16,5,20,
5,38,23,20,5,2,26,11,67,4,
63,6,20,5,39,52,20,5,2,26,
11 };
// структура определяет все переменные вашего интерфейса управления
struct {
// input variable
uint8_t switch_1; // =1 если переключатель включен и =0 если отключен
// output variable
int8_t level_1; // =0..100 положение уровня
int8_t level_2; // =0..100 положение уровня
char text_1[11]; // =строка UTF8 оканчивающаяся нулем
char text_2[11]; // =строка UTF8 оканчивающаяся нулем
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_SWITCH_1 13
void setup()
{
RemoteXY_Init ();
pinMode (PIN_SWITCH_1, OUTPUT);
// TODO you setup code
}
void loop()
{
RemoteXY_Handler ();
digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);
noGas = digitalRead(digitalSignal); //считываем значение о присутствии газа
gas = analogRead(analogSignal); // и о его количестве
chk = DHT.read(DHT11_PIN);
hum = DHT.humidity;
temp = DHT.temperature;
RemoteXY.level_1 = hum;
RemoteXY.level_2 = temp;
dtostrf(hum, 6, 2, RemoteXY.text_1);
dtostrf(temp, 6, 2, RemoteXY.text_2);
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
}Используем бутерброд из плат предыдущего опыта.
Неожиданно все сразу же заработало:

С момента обнаружения облачного сервиса RemoteXY до фото выше прошел час.
Особенности работы с RemoteXY.
1. Все очень просто. По своему это хорошо. С Blynk и Cayenne, например, вряд ли с нуля за час получится разобраться. Для использования же, например, "KaScada Cloud" нужно приблуду покупать специальную.
2. Нет никакой обработки и хранения данных на стороне сервера: нет связи с платой - в приложении висит "Нет подключения".
3. Бесплатно только 5 элементов дизайна, но приложение PRO стоит не дороже пол дня потраченного времени.
4. Есть возможность из одного приложения осуществлять связь с платой как через облачный сервер, так и на прямую. Правда не одновременно конечно. И переключить оперативно невозможно - нужно менять скетч в плате. Есть также возможность осуществлять связь смартфона с платой по Блютус и USB.









