Após várias tentativas e depois de testar com os sketches de demonstração da lib DallasTemperature, constatei que mesmo usando
for (int(i)=0;i<8;i++)
{
ethernet.print(deviceAddress[i]);
}
o endereço físico não é bem "copiado" para o html.
Decidi enveredar por outro caminho, usando o ID do sensor no bus, até conseguir fazer de outra maneira.
O código que tenho agora é:
#include "stdlib.h"
#include "etherShield.h"
#include "ETHER_28J60.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include "RTClib.h"
#include "String.h"
#define ONE_WIRE_BUS 3
#define TEMPERATURE_PRECISION 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int numberOfDevices;
DeviceAddress deviceAddress;
RTC_DS1307 RTC;
static uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
static uint8_t ip[4] = {192,168,10,159};
static uint16_t port = 80;
ETHER_28J60 ethernet;
void setup()
{
Serial.begin(9600);
ethernet.setup(mac, ip, port);
sensors.begin();
Wire.begin();
RTC.begin();
if (!RTC.isrunning())
{
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop()
{
DateTime now = RTC.now();
sensors.requestTemperatures();
numberOfDevices = sensors.getDeviceCount();
char* param;
if (param = ethernet.serviceRequest())
{
ethernet.print("<html><head><title>Rede de sensores de temperatura (DS18S20)</title></head><body>");
ethernet.print("<table border=\"1\" bordercolor=\"#CC66FF\" style=\"background-color:#00FFFF\" width=\"75%\" cellpadding=\"0\" cellspacing=\"0\">");
ethernet.print("<tr><td>ID</td><td>Localização</td><td>Temperatura</td><td>Alimentação</td><td>Data</td><td>Hora</td");
for (int(i)=0;i<numberOfDevices;i++)
{
sensors.getAddress(deviceAddress,i);
ethernet.print("</tr><tr><td>");
ethernet.print(i);
ethernet.print("</td><td>");
/* for (int(j)=0;j<8;j++)
{
ethernet.print(deviceAddress[j]);
}
*/
if (i==0)
{
ethernet.print("Quarto X");
}
ethernet.print("</td><td>");
float tempC = sensors.getTempC(deviceAddress);
ethernet.print(float(tempC));
ethernet.print("º C</td><td>");
if (sensors.isParasitePowerMode())
{
ethernet.print("Modo Parasitico</td><td>");
}
else ethernet.print("<td>5 V + GND</td><td>");
}
ethernet.print(now.year());
ethernet.print("/");
ethernet.print(now.month());
ethernet.print("/");
ethernet.print(now.day());
ethernet.print("</td><td>");
ethernet.print(now.hour());
ethernet.print(":");
ethernet.print(now.minute());
ethernet.print(":");
ethernet.print(now.second());
ethernet.print("</td></tr></table></body></html>");
ethernet.respond();
}
}