Ребят,есть большая просьба.
Если у кого завалялся РАБОЧИЙ КОД который соответствует требованием:
1 отправляет данные на умный дом
2 принимает данные от умного дома
дайте пожалуйста. На форуме есть куча кодов НО......
большая просьба выложить этот код если не трудно со ВСЕМИ БИБЛИОТЕКАМИ и написать для какой он версии оболочки.
я не могу найти "работающий" варианты библиотек. ставлю одну-что то работает,что то другое перестаёт итд итп.
ОЧЕНЬ ПРОШУ СДЕЛАТЬ ГОТОВЫЙ ВАРИАНТ!!!!!!
Скетч Arduino + W5100 нужен рабочий скотч
Модератор: immortal
-
- Сообщения: 330
- Зарегистрирован: Пн апр 06, 2015 9:51 am
- Благодарил (а): 37 раз
- Поблагодарили: 22 раза
Re: Скетч Arduino + W5100 нужен рабочий скотч
расшифрую нужный функционал. может кто чего подкинет.
есть кнопка входа-выхода из квартиры
при нажатие на неё ардуина передаёт переменную key=1 в умный дом,тот соответственно говорит "до свидание",проверяет на отключение электро сеть, подтверждает что все выключено итд итп. если не выключено предупреждает.если Вам пофиг(или не раслышали) и Вы ушли то включается таймер на 5 минут(как пример),через 5 минут передаётся команда ардуинке на отключение релюшки (обрыв питания электросети). При приходу домой алгоритм практически такой же но с другими действиями.
есть кнопка входа-выхода из квартиры
при нажатие на неё ардуина передаёт переменную key=1 в умный дом,тот соответственно говорит "до свидание",проверяет на отключение электро сеть, подтверждает что все выключено итд итп. если не выключено предупреждает.если Вам пофиг(или не раслышали) и Вы ушли то включается таймер на 5 минут(как пример),через 5 минут передаётся команда ардуинке на отключение релюшки (обрыв питания электросети). При приходу домой алгоритм практически такой же но с другими действиями.
-
- Сообщения: 11
- Зарегистрирован: Вс фев 22, 2015 8:57 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 13 раз
- Поблагодарили: 2 раза
Re: Скетч Arduino + W5100 нужен рабочий скотч
Вот мой вариант, который собран из найденного здесь и не только. Работает на 2560 + W5100, считывает: температуру, влажность, ток, один геркон и датчик движения; управляет кондеем по ИК. Команды подаются ардуине путём вызова ссылки вида "http://192.168.1.210/acoff", где "acoff" нужная команда. ПосмОтрите внутри, там несложно реализовано, можно сделать по аналогии. Только сразу предупреждаю - внутри полная индия (ну не программист я, что поделать!).
Версия IDE - 1.0.5-r2. Прилагаю все либы.
Версия IDE - 1.0.5-r2. Прилагаю все либы.
- Вложения
-
- libraries.rar
- (114.66 КБ) 214 скачиваний
-
- MDM_Eth_IR_2560.rar
- (3.63 КБ) 255 скачиваний
Debian, версия 1.1.0b, CONNECT
-
- Сообщения: 330
- Зарегистрирован: Пн апр 06, 2015 9:51 am
- Благодарил (а): 37 раз
- Поблагодарили: 22 раза
Re: Скетч Arduino + W5100 нужен рабочий скотч
Дружище в любом случаи спасибо!!!!! Вопрос в другом -умный дом как узнает что ардуина кондей включила ?
сейчас код посмотрю.
сейчас код посмотрю.
-
- Сообщения: 11
- Зарегистрирован: Вс фев 22, 2015 8:57 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 13 раз
- Поблагодарили: 2 раза
Re: Скетч Arduino + W5100 нужен рабочий скотч
Да никак. В принципе, у меня там есть доступ к кабелю, чтобы на него датчик тока повесить, но я с этим не заморачивался. Работает уже несколько месяцев без сбоев.gagarin74 писал(а):умный дом как узнает что ардуина кондей включила ?
Debian, версия 1.1.0b, CONNECT
-
- Сообщения: 330
- Зарегистрирован: Пн апр 06, 2015 9:51 am
- Благодарил (а): 37 раз
- Поблагодарили: 22 раза
Re: Скетч Arduino + W5100 нужен рабочий скотч
Странно ,но у Вас в скетче явным образом указано что система работает в двух направленном режимеColp писал(а):Да никак. В принципе, у меня там есть доступ к кабелю, чтобы на него датчик тока повесить, но я с этим не заморачивался. Работает уже несколько месяцев без сбоев.gagarin74 писал(а):умный дом как узнает что ардуина кондей включила ?
//геркон двери
// Serial.println("G");
int current_door=!digitalRead(5);
//Serial.println(current_door);
if (current_door!=(int)old_door) {
old_door=(int)current_door;
sprintf(buf, "GET /objects/?object=sensorDoor&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_door);
sendHTTPRequest();
}
CurrentSensor();
как я понял из этого,ардуина передает значение переменной об изменение положение дверей в умный дом.Тобишь даёт понять умнику что дверь или закрылась или открылась.
Я это и спрашивал.Так же решается и скондеем. Я понимаю что можно повесить датчик тока и умничать дальше
Кстати не подскажите как у Вас он реализован и какой ?
-
- Сообщения: 330
- Зарегистрирован: Пн апр 06, 2015 9:51 am
- Благодарил (а): 37 раз
- Поблагодарили: 22 раза
Re: Скетч Arduino + W5100 нужен рабочий скотч
общими силами получился вот такой код.
код демонстративный. Умеет посылать какие либо команды на умный дом (в данном примере температуру в переменную кидает).
умеет получать команды из умного дома(в данном примере мигает светодиодом)
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
#include <DallasTemperature.h>
#include <OneWire.h>
//#include "EmonLib.h" // Include Emon Library
#include "DHT.h"
//#include <IRremote.h>
//EnergyMonitor emon1; // Create an instance
template<class T>
inline Print &operator <<(Print &obj, T arg)
{
obj.print(arg);
return obj;
}
// mac & ip
static uint8_t mac[] = { 0xDE, 0xAA, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 55 };
byte server1[] = { 77, 252, 153, 121 };
uint16_t port = 5556;
#define ONE_WIRE_BUS 2 // OneWire шина
#define pirPin 7 // Пин датчика движения
#define DHTPIN 6// Пин DHT
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
//IRsend irsend; //IR светодиод подключать к 9 пину на меге 2560
/**********************/
int old_temperature1 = 0;
float old_temperature2 = 0;
float old_humidity = 0;
float old_heatindex = 0;
int old_temperature3 = 0;
int old_light = 0;
int old_door = 0;
int old_movement_1 = 0;
int gateState = 0;
int old_Irms;
char buf[80];
int cmd = 0; //код выполняемой команды
/*********************************************************************************************************/
/************************/
OneWire oneWire(ONE_WIRE_BUS);
EthernetClient rclient;
DallasTemperature sensors(&oneWire);
// Адреса датчиков
DeviceAddress Thermometer1 = {
0x28, 0xC3, 0xC7, 0x3B, 0x05, 0x00, 0x00, 0x42
}; // адрес датчика DS18B20
DeviceAddress Thermometer2 = {
0x28, 0x3C, 0xDD, 0x5F, 0x05, 0x00, 0x00, 0x4B
};
DeviceAddress Thermometer3 = {
0x28, 0x96, 0x1E, 0x60, 0x05, 0x00, 0x00, 0x66
};
#define PREFIX ""
WebServer webserver(PREFIX, 80);
void testCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
server.httpSuccess();
Serial.println("meow");
server.println("meow");
}
void svet(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
server.httpSuccess();
Serial.println("COMMANDACHeatMedLed");
server.println("работает и моргает SVET");
// digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
/**********************/
/*********************************************************************************************************/
// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
Serial.println("111111");
if (rclient.connect(server1, port)) {
Serial.println("OK");
rclient.println(buf);
rclient.println("Host: 192.168.1.");
rclient.println();
delay(1000);
rclient.stop();
} else {
Serial.println("FAILED");
}
}
void setup()
{
pinMode(13, OUTPUT);
// Ethernet.begin(mac, ip);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
// try to congifure using IP address instead of DHCP:
Ethernet.begin(mac, ip);
}
// give the Ethernet shield a second to initialize:
delay(1000);
webserver.setDefaultCommand(&testCmd);
webserver.addCommand("svet", &svet);
webserver.begin();
sensors.begin();
sensors.setResolution(Thermometer1, 10); //Точность термодатчиков
sensors.setResolution(Thermometer2, 10);
sensors.setResolution(Thermometer3, 10);
pinMode(pirPin, INPUT); // Датчик движения
old_movement_1 = digitalRead(pirPin);
pinMode(5, INPUT); // Датчик входной двери
digitalWrite(5, HIGH);
old_door = !digitalRead(5);
Serial.begin(9600); // Скорость порта
}
void loop()
{
char buff[64];
int len = 64;
webserver.processConnection(buff, &len); // process incoming connections one at a time forever
// опрашиваем датчики DS18B20
sensors.requestTemperatures();
// TEMP SENSOR 1
float current_temp1 = 0;
current_temp1 = sensors.getTempC(Thermometer1);
if (old_temperature1 != (int)current_temp1) {
int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=temperatura&op=set&p=arbait&v=%0d.%d HTTP/1.1", (int)current_temp1, abs(temp1));
sendHTTPRequest();
old_temperature1 = (int)current_temp1;
}
}
код демонстративный. Умеет посылать какие либо команды на умный дом (в данном примере температуру в переменную кидает).
умеет получать команды из умного дома(в данном примере мигает светодиодом)
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
#include <DallasTemperature.h>
#include <OneWire.h>
//#include "EmonLib.h" // Include Emon Library
#include "DHT.h"
//#include <IRremote.h>
//EnergyMonitor emon1; // Create an instance
template<class T>
inline Print &operator <<(Print &obj, T arg)
{
obj.print(arg);
return obj;
}
// mac & ip
static uint8_t mac[] = { 0xDE, 0xAA, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 55 };
byte server1[] = { 77, 252, 153, 121 };
uint16_t port = 5556;
#define ONE_WIRE_BUS 2 // OneWire шина
#define pirPin 7 // Пин датчика движения
#define DHTPIN 6// Пин DHT
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
//IRsend irsend; //IR светодиод подключать к 9 пину на меге 2560
/**********************/
int old_temperature1 = 0;
float old_temperature2 = 0;
float old_humidity = 0;
float old_heatindex = 0;
int old_temperature3 = 0;
int old_light = 0;
int old_door = 0;
int old_movement_1 = 0;
int gateState = 0;
int old_Irms;
char buf[80];
int cmd = 0; //код выполняемой команды
/*********************************************************************************************************/
/************************/
OneWire oneWire(ONE_WIRE_BUS);
EthernetClient rclient;
DallasTemperature sensors(&oneWire);
// Адреса датчиков
DeviceAddress Thermometer1 = {
0x28, 0xC3, 0xC7, 0x3B, 0x05, 0x00, 0x00, 0x42
}; // адрес датчика DS18B20
DeviceAddress Thermometer2 = {
0x28, 0x3C, 0xDD, 0x5F, 0x05, 0x00, 0x00, 0x4B
};
DeviceAddress Thermometer3 = {
0x28, 0x96, 0x1E, 0x60, 0x05, 0x00, 0x00, 0x66
};
#define PREFIX ""
WebServer webserver(PREFIX, 80);
void testCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
server.httpSuccess();
Serial.println("meow");
server.println("meow");
}
void svet(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
server.httpSuccess();
Serial.println("COMMANDACHeatMedLed");
server.println("работает и моргает SVET");
// digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
/**********************/
/*********************************************************************************************************/
// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
Serial.println("111111");
if (rclient.connect(server1, port)) {
Serial.println("OK");
rclient.println(buf);
rclient.println("Host: 192.168.1.");
rclient.println();
delay(1000);
rclient.stop();
} else {
Serial.println("FAILED");
}
}
void setup()
{
pinMode(13, OUTPUT);
// Ethernet.begin(mac, ip);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
// try to congifure using IP address instead of DHCP:
Ethernet.begin(mac, ip);
}
// give the Ethernet shield a second to initialize:
delay(1000);
webserver.setDefaultCommand(&testCmd);
webserver.addCommand("svet", &svet);
webserver.begin();
sensors.begin();
sensors.setResolution(Thermometer1, 10); //Точность термодатчиков
sensors.setResolution(Thermometer2, 10);
sensors.setResolution(Thermometer3, 10);
pinMode(pirPin, INPUT); // Датчик движения
old_movement_1 = digitalRead(pirPin);
pinMode(5, INPUT); // Датчик входной двери
digitalWrite(5, HIGH);
old_door = !digitalRead(5);
Serial.begin(9600); // Скорость порта
}
void loop()
{
char buff[64];
int len = 64;
webserver.processConnection(buff, &len); // process incoming connections one at a time forever
// опрашиваем датчики DS18B20
sensors.requestTemperatures();
// TEMP SENSOR 1
float current_temp1 = 0;
current_temp1 = sensors.getTempC(Thermometer1);
if (old_temperature1 != (int)current_temp1) {
int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=temperatura&op=set&p=arbait&v=%0d.%d HTTP/1.1", (int)current_temp1, abs(temp1));
sendHTTPRequest();
old_temperature1 = (int)current_temp1;
}
}
-
- Сообщения: 130
- Зарегистрирован: Пн окт 28, 2013 5:06 pm
- Откуда: Молдова
- Благодарил (а): 11 раз
- Поблагодарили: 10 раз
Re: Скетч Arduino + W5100 нужен рабочий скотч
Сюда глянь, тут есть все что тебе нужно.
http://majordomo.smartliving.ru/forum/v ... 47&start=0
http://majordomo.smartliving.ru/forum/v ... 47&start=0
Server: Raspberry Pi 3 B+
OS: Rasbian
OS: Rasbian