#1 Re: Програмування Arduino » POST запрос и ответ W5100 на внешний WEB сервер » 2016-12-18 14:03:05

freeman пише:

esp8266 + mqtt

Спасибо! протокол mqtt - уже собранный "велосипед", который я пытаюсь собрать.

Насколько я понял есть готовая библиотека-клиент mqtt для UNO + шилд W5100
https://github.com/mqtt/mqtt.github.io/wiki/software?id=software

Остается собрать простенький сервер-брокер на ПК/виртуалке или raspberryPi.

И что самое приятное что у esp8266 практически такие же возможности что у и UNO+WiFi
при этом цена за распаянный экземпляр ниже.

Минусы (имхо) в том что простые хостинги не предоставляют протокол mqtt, броадкаст режит фаерволл, и при выключении сервера - два клиента не могут общаться между собой. Но все решаемо.

#2 Re: Програмування Arduino » POST запрос и ответ W5100 на внешний WEB сервер » 2016-12-14 18:37:38

Немного подправил код,

Основная идея: Ардуино постит значения датчиков на веб-сервер, сервер обрабатывает значения и отвечает что делать дальше Ардуине, Ардуино делает. (т.е. мозг = конфа заложенная в веб-сервер, а ардуино = руки)

Условный пример: можно задавать уровень яркости светодиода посредством внесения значения в БД веб-сервера. (далее написать авторизатор для множества ардуин и через одну веб-страничку управлять освещением улиц районов).


1. в data помещаем запрос для POST, переменным присваиваем значения датчиков Ардуины (для примера переменная test = значение 223344)
2. Отправляем пост на WEB сервер
3. Сервер отвечает контентом ОК=1, ищем совпадение в контенте "ОК=1",  выполняем действия Ардуиной (например включаем светодиод)

#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };
IPAddress dnServer(8, 8, 8, 8);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress ip(192, 168, 1, 230);

EthernetClient client;
String data = "";

void setup() 
{ 
   Serial.begin(9600);
   Ethernet.begin(mac, ip, dnServer, gateway, subnet);
}

void loop()
{

	data = "test=223344";

	if (client.connect("192.168.1.125",80)) 
	{   
		client.println("POST /index.php HTTP/1.1"); 
		client.println("Host: 192.168.1.125");
		client.println("Content-Type: application/x-www-form-urlencoded"); 
		client.print("Content-Length: "); 
		client.println(data.length()); 
		client.println(); 
		client.print(data);
	}

delay(1000);

while(client.connected()) 
{
   if(client.available())
   {
      String c = client.readString();   
      if(c.indexOf("OK=1") >0) //indexOf или contains
      {
          //тут условия для выполнения действий Ардуиной, если найдено OK=1
       }
   }
}

client.stop();
delay(5000);

}

#3 Re: Програмування Arduino » POST запрос и ответ W5100 на внешний WEB сервер » 2016-12-14 16:21:21

NoName пише:

по логике , добавьте   паузу в течении которой ожидаете данные

Задержка реально помогла, спасибо.

+Заменил переменную:
String c = client.readString();

#4 Re: Програмування Arduino » POST запрос и ответ W5100 на внешний WEB сервер » 2016-12-14 11:59:04

NoName пише:

что делает client.stop(); ?

https://www.arduino.cc/en/Reference/ClientStop

Насколько я понимаю посылает по протоколу окончание связи, разрывает коннект.
client.connected() становится фолс, и шилд доступен для подключения к другим серверам.
Читал что одновременно шилд тянет 2-3 подключения к внешним серверам.

#5 Програмування Arduino » POST запрос и ответ W5100 на внешний WEB сервер » 2016-12-14 10:55:20

fratl
відповідей: 10

Arduino UNO + шилд W5100 + внешний веб сервер

Ардуино постит данные на внешний веб-сервер.
В зависимости от отправленных данных на сервер, сервер, дает разные ответы.

Необходимо ловить ардуиной уникальный ответ от сервера на соответствующий пост и записывать значение в переменную.

Подскажите как словить ответ на пост?
client.read() не срабатывает


#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };

//можно убрать если в сети есть DHCP сервер:
IPAddress dnServer(8, 8, 8, 8);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress ip(192, 168, 1, 230);

EthernetClient client;
String data;


void setup() { 
	Serial.begin(9600);

	if (Ethernet.begin(mac) == 0) {
		Serial.println("Failed to configure Ethernet using DHCP"); 
	}
 else {
  Ethernet.begin(mac, ip, dnServer, gateway, subnet); //можно убрать если в сети есть DHCP сервер
  Serial.println("DHCP OK");
  Serial.println(Ethernet.localIP());
  }
 
	data = "";
}

void loop(){

	data = "test=Karumba";

	if (client.connect("192.168.1.125",80)) 
	{
    Serial.println(data);
    
		client.println("POST /index.php HTTP/1.1"); 
		client.println("Host: 192.168.1.125");
		client.println("Content-Type: application/x-www-form-urlencoded"); 
		client.print("Content-Length: "); 
		client.println(data.length()); 
		client.println(); 
		client.print(data); 
	} 
  else
  {
    Serial.println("server connect failed");
  }

//тут ничего не происходит
 if (client.available()) {
   char c = client.read();
   Serial.print("RESPONSE: ");
   Serial.println(c);
 }
 else {
  Serial.println("NG");
  }

	if (client.connected()) { 
		client.stop();
	}

	delay(5000);
}

#6 Re: Проекти » Нужен специалист на проект Arduino-СКУД » 2016-11-20 13:08:09

NoName пише:

готовый системы смотрели? там есть много интересных ...
тот же http://secur.ua/kk/
и много других

Например готовый контроллер за 5000грн, туда входит: 1реле + программирующая схема + батарейка + сетевая + софт (аналог на китайских Ардуино+деталях 200-300грн)

Минус в быстрой взаимозаменяемости элементов готовой сборки,
при поломке придется менять дорогостоющий контроллер вцелом, а не элемент.
Завязываешься на конкретного производителя, который может быстро уйти с рынка.

#7 Re: Проекти » Нужен специалист на проект Arduino-СКУД » 2016-11-20 01:43:33

NoName пише:

"- Управление Проводная передача голоса" ?  это радио точками управлять? вкл/выкл, громкость и т.д.

Другими словами "домофон на ардуино"
Гости у ворот нажимают на кнопку - активируется микрофон+динамик с одной стороны, динамик+микрофон с другой (при нажатии охраной на ответную кнопку/ответ на зуммер).
Дополнительная кнопка под рукой охранника открывает дверь (замыкает реле) и заканчивает передачу динамик-микрофон.

#8 Проекти » Нужен специалист на проект Arduino-СКУД » 2016-11-19 04:03:31

fratl
відповідей: 5

Нужен специалист на проект "Система контроля управления доступом"

Проект состоит из совокупности небольших проектов,
комбинации которых будут установлены на объекты управления:

- Контроль Датчики движения
- Контроль Пожарные датчики
- Контроль Датчики размыкания окон
- Управление Кодовые/кнопочные/сенсорные замки
- Управление Цифровые бесконтактные считыватели/ключи RDFID+NFC
- Управление Раидио пулты для выполнения событий постановки/открытия
- Управление Проводная передача голоса
- Управление GSM смс командами
- Контроль GPS мобильных объектов
- Управление отопительными системами
- Контроль Подсчет электроэнергии и тепла
- Контроль Управление микроклиматом (влажность)
- Управление точками электроснабжения
- Управление 36 контроллерами через центральный веб-сервер

Необходимо:
- Закупить необходимые детали
- Собрать модель
- Запрограммировать модель
- Протестировать модель
- Установить систему на объектах

Оплата за готовую модель согласно ТЗ объекта.
Оплата за монтаж. Оплата за детали.

Заинтересованным - пишите в лс.

#9 Re: Програмування Arduino » КАК СДЕЛАТЬ POST запрос на сервер? » 2016-11-19 03:37:52

Так же интересует вопрос с отправкой POST запросов Ардуиной в одностороннем порядке на заданный сервер.

Arduino Uno + Enc28j60
библеотека ethercard

Подскажите как правильно написать POST запрос используя библиотеку ethercard
спасибо

#10 Проекти » Подсчет электроэнергии однофазных счетчиков НИК (оплачу $ за скетч) » 2016-11-13 16:07:50

fratl
відповідей: 13

Вступление

Электросчетчики НИК заняли весомую долю рынка Украины
У компании НИК существуют счетчики с которых удаленно можно снять показания спец приборами,
и промышленные счетчики, которые подключаются через контроллер в Интренет и отправляют данные в КиевЭнерго, где собственно а автоматическом режиме происходит списание средств с банковского счета абонента.
Все это сертифицированно, согласованно и стоит заоблачных денег (от 20к грн).

Аналогичная реализация на Ардуино (без сертификации и согласования = для себя) нам обойдется в 100-150грн:
Ардуино уно + Фоторезистор + Ethernet Шилд HR9111 (или аналогичные детали с Aliexpress)

Принцип работы (Простой способ, не срывая пломбы с счетчика):

Фоторезистор крепят(клеят поверх крышки) на сведодиод счетчика, считают "блымки", накаунтированное значение переводят в кВатты исходя из значения счетчика imp/kWh. Далее через Езернет шилд выводят на веб, или постом загоняют во внешнюю БД на вебсервер.
Реализаций схем/кода в Интернет более чем достаточно. Но при бешанном энергопотреблении, фоторезистор не успевает точно считать количество "блымок", итоговые показания за месяц расходятся.

Принцип работы 2 (срывая пломбы счетчика)

Данный способ подразумевает точное считывания показаний счетчика.
Счетчик не состоит в Гос. учете. = "счетчик для себя/счетчик купленный на растерзание"
Для эксперимента был взял счетчик НИК 2102-04.M2.
Счетчик не автоматизирован с завода - умеет только крутить циферблат.
У счетчика есть консоль для "калибровки" - синяя колодка сбоку, контакт 14 15.


Задача:

Получить риалтайм точные значения потребления электроэнергии используя ардуино уно/нано + езернет шилд (пост запросы на sql сервер), одним из следующих методов:

1. Подключится к светодиоду напрямую, и считывать падение вольтажа (импульсы)
2. Подключится к "шаговому мотору", который крутит циферблат, и считывать напряжение. Далее перевести значение напряжения в кВатт согласно делениям/обороту циферблата.
После определенного количества "блымок" светодиода слышно отчетливый "клац" циферблата.
3. считывать ток на катушке, прикрепленной к Фазе.

Фото счетчика Ник 2102-04.М2:
https://drive.google.com/open?id=0B24sY9_hoJYdWVppR3VzODk5dUE

mini_IMG_1438.jpegmini_IMG_1437.jpegmini_IMG_1435.jpegmini_IMG_1434.jpegmini_IMG_1432.jpegmini_IMG_1431.jpegmini_IMG_1430.jpgmini_IMG_1429.jpegmini_IMG_1428.jpegmini_IMG_1427.jpegmini_IMG_1426.jpegmini_IMG_1425.jpegmini_IMG_1424.jpegmini_IMG_1423.jpegmini_IMG_1422.jpegmini_IMG_1421.jpegmini_IMG_1420.jpegmini_IMG_1419.jpegmini_IMG_1418.jpegmini_IMG_1417.jpeg

Підвал форуму