Скетч Arduino + Ethernet Shield - BASIC
Модератор: immortal
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Скетч Arduino + Ethernet Shield - BASIC
Господа, кто пользуется Ардуино и передает данные через Ethernet shield, не могли бы выложить скетч ардуины для самого примитивного сервера, только чтобы можно было получать данные от МЖД и отправлять данные ему?
Скетч основной ветки обсуждения очень хорош, но он отжирает 80% памяти Uno, превращая его по сути только в передатчик.
Потратьте минутку, запостите здесь или сразу в Библиотеку.
Скетч основной ветки обсуждения очень хорош, но он отжирает 80% памяти Uno, превращая его по сути только в передатчик.
Потратьте минутку, запостите здесь или сразу в Библиотеку.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Скетч Arduino + Ethernet Shield - BASIC
вот к примеру простой скетчик которые отправляет данные температуры на сервер
Код: Выделить всё
#include <Ethernet.h>
#include <SPI.h>
// Библиотеки ниже нет в стандартной поставке среды разработки Arduino.
// придётся её скопировать.
#include <DallasTemperature.h>
// MAC-адрес нашего устройства
byte mac[] = { 0x00, 0x2A, 0xF6, 0x12, 0x68, 0xFC };
// ip-адрес устройства
byte ip[] = { 192, 168, 0, 72 };
// ip-адрес удалённого сервера
byte server[] = { 192, 168, 0, 17 }; // измените на свой
int cycle_counter=0;
int old_temperature1=0;
char buf[80];
Client rclient(server, 80); // 80-порт.
DallasTemperature tempSensor1;
// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
if (rclient.connect()) {
Serial.println("OK");
rclient.println(buf);
rclient.println("Host: 192.168.0.17");
rclient.println();
delay(2000);
rclient.stop();
} else {
Serial.println("FAILED");
}
}
void setup()
{
Ethernet.begin(mac, ip); // Инициализируем Ethernet Shield
tempSensor1.begin(2); // Датчик температуры на 2-й пин (котёл)
Serial.begin(115200); // Скорость консольного порта 115200 (пригодится для отладки)
}
void loop()
{
int valid_sensor=0;
delay(100); // задержка в 0.1 сек.
cycle_counter++;
if (cycle_counter>600) {
cycle_counter=0;
// TEMP SENSOR 1
float current_temp1=0;
// Соединяемся
// Обработчик ошибок датчика
valid_sensor=1;
switch(tempSensor1.isValid())
{
case 1:
Serial.println("Err T1"); // ошибка контрольной суммы
tempSensor1.reset(); // сбросить девайс
valid_sensor=0;
case 2:
Serial.println("Err T1"); // какой-то "левый" датчик :)
tempSensor1.reset(); // сбросить девайс
valid_sensor=0;
}
if (valid_sensor==1) {
Serial.println("T1");
current_temp1=tempSensor1.getTemperature(); // получаем температуру
Serial.println(current_temp1);
if ((old_temperature1!=(int)current_temp1) && (current_temp1<79) && (current_temp1>5)) {
int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=sensorKotel&op=m&m=tempChanged&t=%0d.%d HTTP/1.0", (int)current_temp1, abs(temp1));
sendHTTPRequest();
}
old_temperature1=(int)current_temp1;
}
}
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Скетч Arduino + Ethernet Shield - BASIC
Спасибо, с отправкой я разобрался легко.
А можно скетч сервера - чтобы получить команду от МЖД. Такой же максимально простой и короткий - обработать строку вида http://xx.xx.xx.xx/command?3=155 (pin 3, value 155)?
Чтобы после обработки у меня были значения pin и value
А можно скетч сервера - чтобы получить команду от МЖД. Такой же максимально простой и короткий - обработать строку вида http://xx.xx.xx.xx/command?3=155 (pin 3, value 155)?
Чтобы после обработки у меня были значения pin и value
Последний раз редактировалось PAV Пн янв 20, 2014 4:37 pm, всего редактировалось 1 раз.
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Скетч Arduino + Ethernet Shield - BASIC
Кстати скетч выше уже работать не будет, библиотека поменялась.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Скетч Arduino + Ethernet Shield - BASIC
Такой же простой и короткий надо писать, возьму то что под рукой -- это веб-сервер с поддержкой нескольких команд. По коду в принципе можно разобраться как оно устроено и под себя переделать.
Код: Выделить всё
// Universal Arduino controller for MajorDoMo (http://smartliving.ru)
// v 0.1
#include <Ethernet.h>
#include <SPI.h>
#include <VirtualWire.h>
#include <EasyTransferVirtualWire.h>
#include <EEPROM.h> //Needed to access the eeprom read write functions
#define MAX_COMMAND_LEN (10)
#define MAX_PARAMETER_LEN (30)
#define COMMAND_TABLE_SIZE (10)
#define TO_UPPER(x) (((x >= 'a') && (x <= 'z')) ? ((x) - ('a' - 'A')) : (x))
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xDA, 0x7D, 0x5E, 0xDF, 0xCE, 0xED };
//byte ip[] = { 192,168,0,75 };
IPAddress ip(192,168,0,75);
//byte pingAddr [] = {192, 168, 0, 1};
//SOCKET pingSocket = 0;
String url = "";
int maxLength=25;
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
EthernetClient webClient;
#define PIN_LED A3
#define PIN_LED_T A3
#define PIN_RF A0
#define RF_SEND_COUNTER 3
int webRequest = false; // is command requested by HTTP?
int startPin=2;
int endPin=9; // 10,11,12,13 used by ethernet shield,
//create object
EasyTransferVirtualWire ET;
struct SEND_DATA_STRUCTURE{
//put your variable definitions here for the data you want to send
//THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
//Struct can'e be bigger then 26 bytes for VirtualWire version
unsigned int device_id;
unsigned int destination_id;
unsigned int packet_id;
byte command;
int data;
};
unsigned int unique_device_id = 0;
//give a name to the group of data
SEND_DATA_STRUCTURE mydata;
char gCommandBuffer[MAX_COMMAND_LEN + 1];
char gParamBuffer[MAX_PARAMETER_LEN + 1];
String commandReceived;
String parametersReceived;
long gParamValue;
typedef struct {
char const *name;
void (*function)(void);
} command_t;
command_t const gCommandTable[COMMAND_TABLE_SIZE] = {
{"HELP", commandsHelp,},
{"LED", commandsLed, },
{"ON", commandsOn, },
{"OFF", commandsOff, },
{"STATE", commandsState, },
{"CLICK", commandsClick, },
{"LCLICK", commandsLClick, },
{"RCLICK", commandsRClick, },
{"RF", commandsRF, },
{NULL, NULL }
};
//This function will write a 2 byte integer to the eeprom at the specified address and address + 1
void EEPROMWriteInt(int p_address, unsigned int p_value)
{
byte lowByte = ((p_value >> 0) & 0xFF);
byte highByte = ((p_value >> 8) & 0xFF);
EEPROM.write(p_address, lowByte);
EEPROM.write(p_address + 1, highByte);
}
//This function will read a 2 byte integer from the eeprom at the specified address and address + 1
unsigned int EEPROMReadInt(int p_address)
{
byte lowByte = EEPROM.read(p_address);
byte highByte = EEPROM.read(p_address + 1);
return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00);
}
void blinking(int count) {
for(int i=0;i<count;i++) {
digitalWrite(PIN_LED, HIGH);
delay(200);
digitalWrite(PIN_LED, LOW);
delay(200);
}
}
void sendRFData() {
Serial.print("Transmitting packets ... ");
for(int i=0;i<RF_SEND_COUNTER;i++) {
if (i>0) {
delay(200);
}
digitalWrite(PIN_LED_T, HIGH);
ET.sendData();
digitalWrite(PIN_LED_T, LOW);
}
Serial.println("DONE");
}
void printLine(const char line[]) {
if (webRequest) {
if (webClient) {
if (webClient.connected()) {
webClient.println(line);
webClient.println("<br/>");
}
}
} else {
Serial.println(line);
}
}
int cliBuildCommand(char nextChar) {
static uint8_t idx = 0; //index for command buffer
static uint8_t idx2 = 0; //index for parameter buffer
enum { COMMAND, PARAM };
static uint8_t state = COMMAND;
if ((nextChar == '\n') || (nextChar == ' ') || (nextChar == '\t') || (nextChar == '\r'))
return false;
//if (nextChar == '\r') {
if (nextChar == ';') {
gCommandBuffer[idx] = '\0';
gParamBuffer[idx2] = '\0';
idx = 0;
idx2 = 0;
state = COMMAND;
return true;
}
if (nextChar == ',') {
state = PARAM;
return false;
}
if (state == COMMAND) {
gCommandBuffer[idx] = TO_UPPER(nextChar);
idx++;
if (idx > MAX_COMMAND_LEN) {
idx = 0;
return true;
}
}
if (state == PARAM) {
gParamBuffer[idx2] = nextChar;
idx2++;
if (idx > MAX_PARAMETER_LEN) {
idx2 = 0;
return true;
}
}
return false;
}
void cliProcessCommand(void)
{
int bCommandFound = false;
int idx;
gParamValue = strtol(gParamBuffer, NULL, 0);
for (idx = 0; gCommandTable[idx].name != NULL; idx++) {
if (strcmp(gCommandTable[idx].name, gCommandBuffer) == 0) {
bCommandFound = true;
break;
}
}
if (bCommandFound == true) {
if (!webRequest) {
printLine("");
}
(*gCommandTable[idx].function)();
}
else {
if (!webRequest) {
printLine("");
}
printLine("Command not found:");
printLine(gCommandBuffer);
}
}
void commandsLed(void) {
printLine("LED command received.");
if (gParamValue >=0 && gParamValue <= 255) {
analogWrite(PIN_LED, gParamValue);
}
else {
printLine("wrong parameter value");
}
}
void commandsOn(void) {
printLine("ON command received.");
if (gParamValue>=startPin && gParamValue<=endPin) {
printLine("Turning ON");
digitalWrite(gParamValue,LOW);
} else {
printLine("Incorrect PIN");
}
}
void commandsOff(void) {
printLine("OFF command received.");
if (gParamValue>=startPin && gParamValue<=endPin) {
printLine("Turning OFF");
digitalWrite(gParamValue,HIGH);
} else {
printLine("Incorrect PIN");
}
}
void commandsClick(void) {
printLine("CLICK command received.");
if (gParamValue>=startPin && gParamValue<=endPin) {
printLine("Clicking");
digitalWrite(gParamValue,LOW);
delay(1000);
digitalWrite(gParamValue,HIGH);
} else {
printLine("Incorrect PIN");
}
}
void commandsLClick(void) {
printLine("LCLICK command received.");
digitalWrite(6,LOW);
if (gParamValue==1) {
digitalWrite(9,LOW);
delay(2000);
digitalWrite(9,HIGH);
}
if (gParamValue==2) {
digitalWrite(8,LOW);
delay(2000);
digitalWrite(8,HIGH);
}
if (gParamValue==3) {
digitalWrite(7,LOW);
delay(2000);
digitalWrite(7,HIGH);
}
digitalWrite(6,HIGH);
}
void commandsRClick(void) {
printLine("RCLICK command received.");
digitalWrite(5,LOW);
if (gParamValue==1) {
digitalWrite(9,LOW);
delay(2000);
digitalWrite(9,HIGH);
}
if (gParamValue==2) {
digitalWrite(8,LOW);
delay(2000);
digitalWrite(8,HIGH);
}
if (gParamValue==3) {
digitalWrite(7,LOW);
delay(2000);
digitalWrite(7,HIGH);
}
digitalWrite(5,HIGH);
}
void commandsRF(void) {
printLine("RF command received");
printLine(gParamBuffer);
//gParamBuffer
//to-command-data
//parametersReceived
String paramString;
unsigned int destination_id=0;
byte command=0;
int data=0;
int splitPosition;
splitPosition=parametersReceived.indexOf('-');
if(splitPosition != -1) {
paramString=parametersReceived.substring(0,splitPosition);
destination_id=paramString.toInt();
parametersReceived=parametersReceived.substring(splitPosition+1,parametersReceived.length());
splitPosition=parametersReceived.indexOf('-');
if(splitPosition != -1) {
paramString=parametersReceived.substring(0,splitPosition);
command=paramString.toInt();
parametersReceived=parametersReceived.substring(splitPosition+1,parametersReceived.length());
data=parametersReceived.toInt();
}
}
mydata.packet_id = random(65535);
mydata.command = command;
mydata.data = data;
mydata.destination_id = destination_id;
sendRFData();
//gparam
}
void commandsState(void) {
for(int i=startPin;i<=endPin;i++) {
int st=digitalRead(i);
char my_st[5];
itoa(st,my_st,10);
// printLine("PIN"+i);
printLine(my_st);
}
}
void commandsHelp(void) {
int idx;
for (idx = 0; gCommandTable[idx].name != NULL; idx++) {
printLine(gCommandTable[idx].name);
}
}
void setup() {
pinMode(PIN_LED_T, OUTPUT);
pinMode(PIN_LED, OUTPUT); // sets the pin as output
for (int thisPin = startPin; thisPin <=endPin; thisPin++) {
pinMode(thisPin, OUTPUT);
digitalWrite(thisPin,HIGH);
}
delay(200);
Serial.begin(9600);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
Serial.println("Arduino command processing example");
Serial.print('>');
ET.begin(details(mydata));
vw_set_tx_pin(PIN_RF);
vw_set_rx_pin(A1);
vw_set_ptt_pin(A2);
//vw_set_ptt_inverted(true);
vw_setup(2000); // Bits per sec
randomSeed(analogRead(0));
// Device ID
Serial.print("Getting Device ID... ");
unique_device_id=EEPROMReadInt(0);
//unique_device_id=0;
if (unique_device_id<10000 || unique_device_id>60000) {
Serial.print("N/A, updating... ");
unique_device_id=random(10000, 60000);
EEPROMWriteInt(0, unique_device_id);
}
Serial.println(unique_device_id);
mydata.device_id = unique_device_id;
mydata.destination_id = 0;
}
void loop() {
char rcvChar;
int bCommandReady = false;
if (Serial.available() > 0) {
rcvChar = Serial.read();
Serial.print(rcvChar);
bCommandReady = cliBuildCommand(rcvChar);
}
if (bCommandReady == true) {
webRequest = false;
bCommandReady = false;
cliProcessCommand();
Serial.print('>');
}
// web server
// listen for incoming clients
EthernetClient client = server.available();
webClient = client;
//webClient = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
//Serial.write(c);
if (url.length() < maxLength) {
url+=(c);
}
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
Serial.print("HTTP request: ");
Serial.println(url);
if (url.indexOf("?")>=0) {
int PosB=url.indexOf("?")+1;
int PosE=url.indexOf("HTTP");
if (url.indexOf(",")>=0) {
// command has parameters
int PosP=url.indexOf(",");
commandReceived=url.substring(PosB,PosP);
parametersReceived=url.substring(PosP+1,PosE-1);
} else {
// command does not have parameters
commandReceived=url.substring(PosB,PosE-1);
parametersReceived="";
}
//Serial.print("Command: ");
//Serial.println(commandReceived);
//Serial.print("Parameter: ");
//Serial.println(parametersReceived);
commandReceived.toUpperCase();
parametersReceived.toUpperCase();
//strcpy (gCommandBuffer, commandReceived.toCharArray());
commandReceived.toCharArray(gCommandBuffer,commandReceived.length()+1);
if (parametersReceived.length()>0) {
//strcpy (gParamBuffer, parametersReceived.toCharArray());
parametersReceived.toCharArray(gParamBuffer,parametersReceived.length()+1);
}
} else {
//no command defined, showing help string
strcpy (gCommandBuffer, "HELP\0");
}
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html><head><title>Arduino</title></head><body>");
webRequest = true;
bCommandReady = false;
cliProcessCommand();
client.println("</body><html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
url = "";
client.stop();
Serial.println("client disonnected");
}
}
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Скетч Arduino + Ethernet Shield - BASIC
Этот - большой и сложный. Он из основной ветки, где обсуждается скетч.
Я и его в том числе разбираю, но пока понять не могу, тем более, что он отжирает 80% памяти Ардуино
Я и его в том числе разбираю, но пока понять не могу, тем более, что он отжирает 80% памяти Ардуино
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Скетч Arduino + Ethernet Shield - BASIC
Самый простой можно подсмотреть здесь http://arduino.cc/en/Tutorial/WebServer
Он, правда, команды не принимает, а только выводит значение датчика.
Он, правда, команды не принимает, а только выводит значение датчика.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Скетч Arduino + Ethernet Shield - BASIC
Все, разобрался, сейчас доработаю и выложу в библиотеку, чтобы больше никто так не мудохался
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Скетч Arduino + Ethernet Shield - BASIC
В общем так. Ниже самый простой скетч для взаимодействия МЖД и Ардуины. Занимает 15K памяти.
Отправка данных с ардуины /objects/?object=sensorLight1&op=m&m=statusChanged&status=%i
Получение данных от МЖД http://172.22.16.66/command?1,255 где commandReceived - 1, parametersReceived - 255.
Надеюсь следующий ищущий не будет мудохаться столько же, сколько я.
Прошу гуру ну хоть глазком код глянуть, почему-то при вызове идет два подключения к серверу и я не уверен, что правильно закрываю сессию.
Отправка данных с ардуины /objects/?object=sensorLight1&op=m&m=statusChanged&status=%i
Получение данных от МЖД http://172.22.16.66/command?1,255 где commandReceived - 1, parametersReceived - 255.
Надеюсь следующий ищущий не будет мудохаться столько же, сколько я.
Прошу гуру ну хоть глазком код глянуть, почему-то при вызове идет два подключения к серверу и я не уверен, что правильно закрываю сессию.
Код: Выделить всё
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xE4, 0xDE, 0x35 }; // MAC-адрес нашего устройства
IPAddress ip(172,22,16,16); // ip-адрес нашего устройства
byte subnet[] = { 255, 255, 255, 128 };
byte gateway[] = { 172, 22, 16, 10 };
byte dns_server[] = { 192, 168, 10, 243 };
byte rserver[] = { 172, 22, 16, 66 }; // ip-адрес удалённого сервера
char buf[200];
#define MAX_COMMAND_LEN (10)
#define MAX_PARAMETER_LEN (30)
String url = "";
int maxLength=25;
int webRequest = false;
char gCommandBuffer[MAX_COMMAND_LEN + 1];
char gParamBuffer[MAX_PARAMETER_LEN + 1];
String commandReceived;
String parametersReceived;
int MDcommand;
unsigned long MDparameter;
int stat;
int old_stat;
int sensorPin = A4; // подключен фоторезистор
unsigned int sensorValue = 0; // цифровое значение фоторезистора
int DimPin1=0;
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
EthernetClient rclient;
void setup() {
Serial.begin(9600); // Open serial communications and wait for port to open:
Ethernet.begin(mac, ip); // Инициализируем Ethernet Shield
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// Отправка значения фоторезистора в МЖД - Значение stat будет передано в метод statusChanged объекта sensorLight1 как status
sensorValue = analogRead(sensorPin); // считываем значение с фоторезистора
if (sensorValue <= 50) {
int stat=0;
}
if (sensorValue > 50) {
int stat=1;
}
if (stat != old_stat) {
sprintf(buf, "GET /objects/?object=sensorLight1&op=m&m=statusChanged&status=%i HTTP/1.0", (int)stat);
sendHTTPRequest();
old_stat=stat;
}
//WEB Server - сервер ждет команды от МЖД вида http://172.22.16.66/command?1,255 где commandReceived - 1, parametersReceived - 255. Например потом использовать, как Pin1 = 255
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (url.length() < maxLength) {
url+=(c);
}
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
Serial.print("HTTP request: ");
Serial.println(url);
if (url.indexOf("?")>=0) {
int PosB=url.indexOf("?")+1;
int PosE=url.indexOf("HTTP");
if (url.indexOf(",")>=0) {
// command has parameters
int PosP=url.indexOf(",");
commandReceived=url.substring(PosB,PosP);
parametersReceived=url.substring(PosP+1,PosE-1);
} else {
// command does not have parameters
commandReceived=url.substring(PosB,PosE-1);
parametersReceived="";
}
MDcommand = commandReceived.toInt();
MDparameter = parametersReceived.toInt();
}
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html><head><title>Arduino</title></head><body>");
client.println("</body><html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}// end if (client.available())
} //END while (client.connected())
// give the web browser time to receive the data
delay(1);
// close the connection:
url = "";
client.stop();
Serial.println("client disconnected");
//Обработка команд
if (MDcommand == 1) {//Включить свет в холле 1=вкл, 0-выкл
int stat = MDparameter;
digitalWrite(DimPin1, stat);
}
} //END if (client) {
// END LOOP
//************************************************* WEB Server END****************************************************************************************
}
// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
if (rclient.connect(rserver, 80)) {
Serial.println(buf);
rclient.println(buf);
rclient.println("Host: 172.22.16.16");
rclient.println();
delay(100); // 500!!!
rclient.stop();
} else {
Serial.println("not connected");
}
} //end sendHTTPRequest
Последний раз редактировалось PAV Пн сен 29, 2014 11:19 am, всего редактировалось 2 раза.
- Рейтинг: 3.49%
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Скетч Arduino + Ethernet Shield - BASIC
У меня RaZberry. Поставил софт как описано на сайте (см. библиотеку) после чего получил веб интерфейс http://localhost:8083 - далее привязал димер (интерфейс простой). После этого можно потыкать в ихнем веб интерфейсе. После создал объект и привязал свойства. Описание в библиотеки с картинками.
Насчёт вашего устройства не знаю. Можно попробовать его функционал в веб море Z-Wave но насколько я понял ЮСБ свистки не поддерживает МАжорДомо, возможно я ошибаюсь
Насчёт вашего устройства не знаю. Можно попробовать его функционал в веб море Z-Wave но насколько я понял ЮСБ свистки не поддерживает МАжорДомо, возможно я ошибаюсь
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4