Нам понадобится
- Отладочная плата AVR. Предпочтительно Arduino UNO/Piranha UNO или любая другая плата AVR, совместимая с Ethernet шилдом. Если Ваша панель использует большое количество переменных и/или Ваш скетч использует большое количество библиотек, необходимо использовать отладочную плату на базе микроконтроллера с большей статической и динамической памятью, такую как Arduino MEGA или Piranha ULTRA
- Ethernet шилд W5500 (если Вы используете шилд на базе чипа ENC28J60, необходимо использовать отладочную плату на базе микроконтроллера с большей статической и динамической памятью, такую как Arduino MEGA или Piranha ULTRA, при этом необходимо скачать и установить последнюю версию библиотеки UIPEthernet и изменить в скетче Ethernet.h на UIPEthernet.h).
- Провод RJ45-RJ45 категории cat5e.
- Маршрутизатор со свободным гнездом RJ-45 LAN.
- Подключение к сети Интернет.
Создание переменной-кнопки на сайте iocontrol.ru
Подробнее о создании переменных и работе с API на сайте Вы можете узнать по этой ссылке
- Если у Вас уже есть созданная панель, пропустите этот шаг, если у Вас ещё не создано ни одной панели, создайте её руководствуясь нашей инструкцией.
- Теперь зайдите в одну из созданных ранее панелей сначала нажав на вкладку "ПАНЕЛИ" (сверху, если Вы находитесь на десктоповом сайте, или снизу, если Вы используете мобильное приложение или мобильную версию сайта) и, затем, на название созданной Вами ранее панели.
- Внутри панели нажмите "Создать переменную". Введите название переменной, например myButton. Нажмите создать. В Вашей панели появится новая карточка с названием переменной.
- Нажмите на шестеренку в правом верхнем углу карточки переменной
- Нажмите на меню "Вид панели" справа от карточки переменной и выберите "Кнопка".
- Нажмите кнопку "Сохранить"
- Перейдите в панель в навигаторе сверху от карточки переменной
- Ваша переменная имеет вид кнопки и её можно переключать прямо в панели
Подключение оборудования
Подключите Ethernet Shield к Arduino UNO
Подключите Arduino к ПК, подключите Ethernet Shield к сети LAN
Скетч Arduino
Если Вы никогда не работали в среде разработки Arduino, по этой ссылке можно узнать как её установить и настроить.
Для работы с библиотекой её необходимо установить в Arduino IDE. Для установки скачайте библиотеку и в Arduino IDE в меню выберите Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку
и выберите скачанный .zip файл библиотеки. Подробнее об установке библиотек можно узнать по этой ссылке.
В скетче ниже необходимо заменить "название_панели"
на название Вашей панели и "название_переменной"
на название переменной кнопки, которую мы создали ранее (например "myButton"
)
Данный скетч переключает созданную на сайте кнопку с частотой, заданной функцией writeUpdate() подобно примеру BlinkWithoutDelay из Arduino IDE, но в отличии от него все интервалы осуществлены внутри библиотеки в функции writeUpdate(). Так же, функция делает запрос на сервер только если произошли какие-либо изменения переменных. Из-за этого в коде функции setup() переменная myButton инициируется со значением, отличным от прочитанного с сервера, иначе функция writeUpdate() никогда не вернёт статус код OK и переменная myButton никогда не поменяет своё значение. Подробнее про статус коды, возвращаемые функциями begin(), writeUpdate() и readUpdate() можно прочитать по этой ссылке.
#include <iocontrol.h> #include <SPI.h> #include <Ethernet.h> // Название панели на сайте iocontrol.ru const char* myPanelName = "название_панели"; // Название переменной с типом кнопки на сайте iocontrol.ru const char* myVarName = "название_переменной"; // Если панель использует ключ // const char* key = "ключ"; // Переменная, значение которой необходимо записать bool myButton; // Создаём объект клиента класса EthernetClient EthernetClient client; // Создаём объект iocontrol, передавая в конструктор название панели и клиента iocontrol mypanel(myPanelName, client); // Если панель использует ключ // iocontrol mypanel(myPanelName, key, client); // MAC адреса Ethernet шилда. Должен быть уникальным в сети byte mac[] = { 0xFE, 0xED, 0xDE, 0xAD, 0xFA, 0xCC }; void setup() { Serial.begin(9600); Ethernet.begin(mac); // Вызываем функцию первого запроса к сервису mypanel.begin(); // Инициируем переменную myButton = !mypanel.readBool(myVarName); } void loop() { // Записываем состояние переменной mypanel.write(myVarName, myButton); // Обновляем переменные на сайте int status = mypanel.writeUpdate(); // Если статус равен константе OK... if (status == OK) { // Выводим текст в последовательный порт Serial.println("Updated"); // Меняем состояние переменной myButton = !myButton; } }
Теперь скетч, загруженный в микроконтроллер, будет менять переменную на сайте.