Код: Выделить всё
#include <EtherCard.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <math.h>
// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
#define BUFFER_SIZE 400
byte Ethernet::buffer[BUFFER_SIZE];
BufferFiller bfill;
EtherCard eth;
const char website[] PROGMEM = "127.0.0.1";
static const byte hisip[] = { 127,0,0,1 };
#define ONE_WIRE_BUS 7 // Digital 10 pin Arduino (куда подключен выход с шины датчиков DS18X20
#define TEMPERATURE_PRECISION 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Датчик температуры на (комнату)
DeviceAddress Termometer1 = { 0x28,0x38,0xB1,0x5A,0x05,0x00,0x00,0x26 };
// Для поиска
DeviceAddress Termometers;
float tempC;
int old_temperature1=0;
char ipbuff[16];
// called when the client request is complete
static void my_callback (byte status, word off, word len) {
Serial.println(">>>");
Ethernet::buffer[off+300] = 0;
Serial.print((const char*) Ethernet::buffer + off);
Serial.println("...");
}
void setup () {
Serial.begin(9600);
Serial.println(F("\n[webClient]"));
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println("Failed to access Ethernet controller");
else
Serial.println("Ethernet controller initialized");
if (!ether.dhcpSetup())
Serial.println(F("DHCP failed"));
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
if (!ether.dnsLookup(website))
Serial.println("DNS failed");
ether.printIp("SRV: ", ether.hisip);
Serial.println("Start");
sensors.begin(); // Инициализация шины 1-wire (для датчиков температуры)
// Определим сколько датчиков на шине
Serial.print("1-wire: found ");
Serial.print(sensors.getDeviceCount(), DEC);
Serial.print(" devices.");
Serial.print(" Parasite power is: ");
if (sensors.isParasitePowerMode()) Serial.println("ON");
else Serial.println("OFF");
int numberOfDevices = sensors.getDeviceCount();
sensors.begin();
sensors.requestTemperatures();
for(int i=0;i<numberOfDevices; i++) {
if(sensors.getAddress(Termometers, i))
{
Serial.print("Found device ");
Serial.print(i, DEC);
Serial.print(" with address: ");
for (uint8_t i = 0; i < 8; i++) {
if (Termometers[i] < 16) Serial.print("0");
Serial.print(Termometers[i], HEX);
}
Serial.print("Resolution actually set to: ");
Serial.print(sensors.getResolution(Termometers), DEC);
Serial.println();
float tempC = sensors.getTempC(Termometers);
Serial.print(tempC);
Serial.println("C");
} else {
}
}
}
void loop() {
//ether.packetLoop(ether.packetReceive());
bfill = ether.tcpOffset();
sensors.requestTemperatures();
int valid_sensor=0;
delay(1000); // задержка в 2 сек.
float current_temp1=0;
float tempC = sensors.getTempC(Termometer1); // Получим температуру от датчика (или ошибку)
if (tempC == DEVICE_DISCONNECTED) {
// Устройство отсоединено
Serial.println("Termometer1 is DEVICE_DISCONNECTED"); }
else {
// Устройство отдало реальное значение температуры (или осталось старое)
Serial.print("T1: ");
current_temp1 = tempC; // получаем температуру
Serial.println(current_temp1);
//word len = ether.packetReceive(); // check for ethernet packet
//word pos = ether.packetLoop(len); // check for tcp packet
if ((old_temperature1!=(int)current_temp1) && (current_temp1<79) && (current_temp1>5)) {
int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
sprintf((char *)Ethernet::buffer, "GET ?object=sensorRoom&op=m&m=tempChanged&t=%0d.%d", (int)current_temp1, abs(temp1));
Serial.println((char *)Ethernet::buffer);
ether.packetLoop(ether.packetReceive());
ether.browseUrl(PSTR("/objects/"), (char *)Ethernet::buffer, NULL, my_callback);
}
old_temperature1=(int)current_temp1;
}
}
Код: Выделить всё
ether.packetLoop(ether.packetReceive());
ether.browseUrl(PSTR("/objects/"), (char *)Ethernet::buffer, NULL, my_callback);
класс и объекты на сервере созданы..