NEWS
Скрипт для Thingspeak
-
Thingspeak - это облачный сервис приема данных, анализа и их визуализации.
Приложение для андройда ThingView
https://play.google.com/store/apps/deta … view&hl=ru
Api отправки данных на сервер читаем тут.
https://www.mathworks.com/help/thingspe ... -feed.html
Можно передавать на один "канал" до 8 значений.
! api_key (строка) - Записать ключ API для конкретного канала.
! field1 - Поле 1 данных (опционально)
! field2 - Поле 2 данных (опционально)
! field3 - Поле 3 данных (опционально)
! Field4 - Поле 4 данных (опционально)
! Field5 - Поле 5 данных (опционально)
! field6 - Поле 6 данных (опционально)
! field7 - Поле 7 данных (опционально)
! field8 - Поле 8 данных (опционально)
! Lat (десятичное) - широта в градусах (опционально)
! long (десятичное) - Долгота в градусах (опционально)
! elevation (целое число) - Высота в метрах (опционально)
! status (строка) - Сообщение о состоянии обновления (необязательно)
! Twitter (строка) - имя пользователя Twitter связана с ThingTweet (опционально)
! tweet (строка) - обновление статуса Twitter; см Обновление Twitter статуса для получения дополнительной информации (опционально)
! created_at (DateTime) - Дата, когда запись была создана, в формате ISO 8601, например: 2014-12-31 23:59:59. Время зоны могут быть заданы с помощью параметра часового пояса (опция)Скрипт отправки данных на сервер.
schedule("*/1 * * * *", function () { //запускаем наш скрипт каждые 1 мин var request = require('request'); var field1 = getState ("mqtt.0.admin.ESP00F3F006.sensors.dsw1"/*admin/ESP00F3F006/sensors/dsw1*/).val; //берем значение из iobroker и заносим в переменную var field2 = getState ("mqtt.0.admin.ESP00F3F006.sensors.dhth1"/*admin/ESP00F3F006/sensors/dhth1*/).val; var field3 = getState ("mqtt.0.admin.ESP00F3F006.sensors.bmpp"/*admin/ESP00F3F006/sensors/bmpp*/).val; var field4 = getState ("mqtt.0.admin.ESP00F3F006.sensors.adc"/*admin/ESP00F3F006/sensors/adc*/).val; var field5 = getState ("mqtt.0.admin.ESP00F3F637.sensors.dsw1"/*admin/ESP00F3F637/sensors/dsw1*/).val; var field6 = getState ("mqtt.0.admin.ESP00F3F637.sensors.dsw2"/*admin/ESP00F3F637/sensors/dsw2*/).val; var field7 = getState ("mqtt.0.admin.ESP00F3F637.gpio.input14"/*admin/ESP00F3F637/gpio/input14*/).val; var field8 = getState ("admin.0.info.updatesNumber"/*Number of adapters to update*/).val; var channel_id = 12345; // id канала на thingspeak var api_key = "1234567890ABCDEF"; // api_key ключ "канала" на отправку данных на сервер, получаем после регистрации request({ //Отправляем запрос на thingspeak url: 'https://api.thingspeak.com/update.json', //URL api thingspeak method: 'POST', // Метод POST json: { "api_key":api_key, // api ключ "channel_id": channel_id, // id канала "field1": field1, //Значение поле1 для отправки на сервер "field2": field2, //Значение поле2 для отправки на сервер "field3": field3, //Значение поле3 для отправки на сервер "field4": field4, //Значение поле4 для отправки на сервер "field5": field5, //Значение поле5 для отправки на сервер "field6": field6, //Значение поле6 для отправки на сервер "field7": field7, //Значение поле7 для отправки на сервер "field8": field8, //Значение поле8 для отправки на сервер "created_at": null, // Дата, когда запись была создана. если не указывать сервер поставит дату приема данных } }, function(error, response, body){ //обрабатываем результат if(error) { log(error); //выводим в лог в случаи ошибки ответа от сервера } else { log(JSON.stringify(body)); //выводим в лог ответа в виде строки. } }); });
Скрипт приема данных от сервера.
schedule("*/5 * * * *", function () { //запускаем наш скрипт каждые 5 мин createState('Thingspeak.field1', ''); //создаем переменную field1 в iobroker createState('Thingspeak.field2', ''); //т.д... createState('Thingspeak.field3', ''); createState('Thingspeak.field4', ''); createState('Thingspeak.field5', ''); createState('Thingspeak.field6', ''); createState('Thingspeak.field7', ''); createState('Thingspeak.field8', ''); var request = require('request'); var id_chennal = 12345; //Создаем переменную и записываем в нее нужный нам номер id канала Thingspeak request({ //Отправляем запрос на Thingspeak url: "https://api.thingspeak.com/channels/"+id_chennal+"/feeds.json?results=1", //URL api Thingspeak method: 'GET', // Метод GET }, function(error, response, body){ //обрабатываем результат if(error) { log(error); //выводим в лог в случаи ошибки ответа от сервера } else { //log(body); //выводим в лог ответа в виде строки. var jsob_obj = JSON.parse(body); //преобразуем json ответ от сервера в объект var field1 = jsob_obj.feeds[0].field1; //вытаскиваем значения field1 из ответа от сервера var field2 = jsob_obj.feeds[0].field2; //т.д... var field3 = jsob_obj.feeds[0].field3; var field4 = jsob_obj.feeds[0].field4; var field5 = jsob_obj.feeds[0].field5; var field6 = jsob_obj.feeds[0].field6; var field7 = jsob_obj.feeds[0].field7; var field8 = jsob_obj.feeds[0].field8; setState("javascript.0.Thingspeak.field1"/*Thingspeak.field1*/, field1); // записывает значения field1 в переменную iobroker setState("javascript.0.Thingspeak.field2"/*Thingspeak.field2*/, field2); // т.д... setState("javascript.0.Thingspeak.field3"/*Thingspeak.field3*/, field3); setState("javascript.0.Thingspeak.field4"/*Thingspeak.field4*/, field4); setState("javascript.0.Thingspeak.field5"/*Thingspeak.field5*/, field5); setState("javascript.0.Thingspeak.field6"/*Thingspeak.field6*/, field6); setState("javascript.0.Thingspeak.field7"/*Thingspeak.field7*/, field7); setState("javascript.0.Thingspeak.field8"/*Thingspeak.field8*/, field8); } }); });
-
Отправку понимаю, можно в облаке визуализацию строить.
А для каких целей прием? Пример можно?
-
Можно сделать типа моста между ioброкерами. (альтернатива MQTT )
Или использовать как удаленное управление, включить или ввыключить устройства, отправив запрос с любого браузера (предварительно конечно нужно знать номер канала и api_key)