Регистрация (получить id)
Обсуждение на esp8266.ru
 

Этот сайт о библиотеке WebSocket для ESP8266, облаке View24.RU и панели наблюдения и управления


Знакомимся с панелью

 http://view24.ru/test24

 


Скачиваем библиотеку

ESP-WebSocket-view24.zip

Эта библиотека содержит пример для ESP8266 модификаций WEMOS - Arduino, mini, а также "Witty Cloud" и всего того, что содержит слова 'node MCU'.

Скачиваем библиотеку

ESP8266WiFi.zip

Для регистрации в сети WiFi, хотя у вас она уже вероятно есть.

 
  Поговорим о панели

Пример работы с панелью можно увидеть по адресу

http://view24.ru/test24

панель демонстрирует постоянно работающую плату  Witty Cloud  содержащую встроенный датчик света, принимающий значение 0-1023, можно управлять встроенным светодиодом LED, клавиши панели on/off. Ночью особенно заметно, как включение  LED меняет показатель освещенности A0.

OFF

ON

 

 


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

http://view24.ru/auto

Регистрации не требуется, укажите только данные вашего wifi - имя станции и пароль


/* 

Этот скетч выдает в облако view24 освещенность и
состояние LED c с частотой 1 раз/сек.
Посколько id и пароль для view24 не указаны,
то регистрация будет по Вашему ip, пароль для 
этого случая не нужен.
URL для просмотра и управления http://view24.ru/auto
Если пожелаете иметь реальный id, то зарегистрируйтесь на 
на этом же сайте - ссылка регистрация
 
*/

#include <ESP8266WiFi.h>
#include <WebSocketClient24.h>

const char* ssid     = "your_ssid"; // имя Вашей  WiFi станции
const char* password = "ssid_pass"; // пароль Вашей  WiFi станции

char host[] = "view24.ru"; //char host[] = "echo.websocket.org";
char path[] = "/";
int port=8081;

WebSocketClient webSocketClient;

// Use WiFiClient class to create TCP connections
WiFiClient client;


// S E T U  P
void setup() {
                           while (1){//return if Handshake successful
pinMode(BUILTIN_LED, OUTPUT);
    
  Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  
  Serial.println("\n\nConnecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  delay(2000);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());  

  // Connect to the websocket server

  if (client.connect(host, port)) {
      Serial.println("Connected");
  } else {
    Serial.println("Connection failed.");
    continue;
  }

  // Handshake with the server
  webSocketClient.path = path;
  webSocketClient.host = host;
  if (webSocketClient.handshake(client)) {
  Serial.println("Handshake successful");
  
Serial.println(webio(""));
//webio("Ваш ID в view24");  // Для тех, кто зарегистрировался
//webio("Ваш пароль в view24");// и получил id для сервера view24
webio("timezone=3"); // Ваш часовой пояс, для времени в панеле
webio("format=A0,LED;"); // имена переменных, т.е. названия клавиш
webio("device=esp8266"); // тип устройства для всех esp8266

  return;
  
  } else {
    Serial.println("Handshake failed.");
    
  }
                                 };  // end while
}

long sec_old=0;
long sec_new=0;
String status_led="1";
void loop() {


while (sec_old == sec_new){sec_new=floor(millis()/1000);};
sec_old=sec_new;
Serial.println(sec_new);

  String mes=webio("data="+String(analogRead(A0))+","+status_led+";");
 
  String cmd=val(mes,"command");
    
  Serial.println("="+cmd+"="); // may comes several mes separated "\n"
  if (cmd == "reset"){setup();};
if (cmd == "off"){digitalWrite(BUILTIN_LED, HIGH);status_led="0";};
if (cmd == "on"){digitalWrite(BUILTIN_LED, LOW);status_led="1";};
  
};


String webio(String mes_to_send) { //func read/write websocket
String str;
  Serial.println(str);
  int mil=millis();  
  webSocketClient.sendData(mes_to_send);
  str=webSocketClient.recv();
  mil=millis()-mil;
  if (mil<200){setup();return "";};
  //Serial.println(mil);
  Serial.println(str); // may comes several mes separated "\n"
  return str;  
};


String val(String mes, String key)
{
int pos1=(";"+mes).indexOf(';'+key+"=");
int pos2=mes.indexOf(';',pos1+1);
return mes.substring(pos1+1+key.length(),pos2);
};

Замечания к скетчу

1. Записи подлежит 10000 временных точек измерений. Каков период измерений - считайте сами. Если посылаете раз в секунду, то хватит на  10000 секунд, то есть примерно 2.5 часа. Если раз в минуту то на 10000 минут,  т.е. примерно 10 дней.

2. Скетч неубиваемый, т.е. восстанавливает свою работу после отсутствия wifi или websocket сервера.

3. Сообщения от сервера приходят в виде key1=val1;key2=val2..... ;  

Функция  val (String mes, String key) служит для извлечения значений из сообщения в соответствии с ключевыми словами.

4. Какое сообщение приходит от панели, когда нажимаются клавиши ON, OFF или вводится SetPoint?

Пример:

command=on;var=LED;ch=0;  или

command=50;var=voltage;ch=2;

5. Должно иметь место соответствие между сообщениями типа 'format' и 'data'

после знака равенства идут  CSV значения через запятую. Но в случае формата - это наименования переменных (кнопок на панели), а в случае 'data' - соответствующие числовые значения переменных. Подчеркиваем - числовые! Если нужно отобразить бинарные значения on/off, то используются числа 0/1.

 Права на использование ПО

 Freeware и As Is. Запрещается применять данное ПО в мероприятиях попадающих под УК РФ и АК РФ.  Разработчики не несут ответственности за ущерб, причиненный пользователями и/или третьими лицами в связи с использованием данного ПО.

Протокол WebSocket View24.ru 

На 'ping='    отвечает ping=ok;

Особенности Witty Cloud

У witty cloud на ноге A0 - датчик света. Если будете использовать другую ESP8266, то можно просто касаться вывода A0 и напряжение наводки будет отражаться на графике.

 

FAQ

Как view24.ru работает?

Результаты измерений передаются шаг за шагом к view24.ru сервера в режиме реального времени и хранится там. 10000 последних измерений сохраняются на сервере. Экспериментатор может просматривать накопленные данные в виде графика, используя один из обычных веб-браузеров.


Где можно посмотреть текущие графики?

 http://view24.ru/test24


Как данные передаются на сервер для последующего просмотра?
 

С помощью обращений на WebSocket view24.ru  по  специальному протоколу  v24 запроса.

Где применяется
?

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

   





  


Разработка и поддержка  Tech-Recipe /View24.ru/ 2017