#include byte mac[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x25 }; byte ip[] = { 192, 168, 1, 25 }; EthernetServer server(80); #include SoftwareSerial cptSerial(2, 3); #define startFrame 0x02 #define endFrame 0x03 #define startLine 0x0A #define endLine 0x0D void setup() { cptSerial.begin(1200); Ethernet.begin(mac, ip); server.begin(); } String GetTeleInfo() { String TeleInfo = ""; char charIn = 0; while (charIn != startLine) { charIn = cptSerial.read() & 0x7F; } while (charIn != endLine) { if (cptSerial.available() > 0) { charIn = cptSerial.read() & 0x7F; TeleInfo += charIn; } } return TeleInfo; } String ShowTeleInfo(String keyword, String unit, int length) { int essai = 0; // Nombre d'étiquettes maximum, cf documentation ERDF int max_essais = 33; String data = ""; String msg = ""; while(data.substring(0,keyword.length()) != keyword && essai != max_essais) { data = GetTeleInfo(); essai++; } msg = "\t<"; msg += keyword; msg += " unit=\""; msg += unit; msg += "\">"; if (essai != max_essais) { msg += data.substring((keyword.length() + 1),(length + (keyword.length() + 1))); } else { msg += "NA"; } msg += ""; return msg; } void loop() { EthernetClient client = server.available(); if (client) { boolean current_line_is_blank = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (c == '\n' && current_line_is_blank) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/xml"); client.println(); client.println(""); client.println(""); client.println(ShowTeleInfo("ADCO","",12)); client.println(ShowTeleInfo("OPTARIF","",4)); client.println(ShowTeleInfo("ISOUSC","A",2)); client.println(ShowTeleInfo("BASE","Wh",9)); client.println(ShowTeleInfo("HCHC","Wh",9)); client.println(ShowTeleInfo("HCHP","Wh",9)); client.println(ShowTeleInfo("EJPHN","Wh",9)); client.println(ShowTeleInfo("EJPHPM","Wh",9)); client.println(ShowTeleInfo("BBRHCJB","Wh",9)); client.println(ShowTeleInfo("BBRHPJB","Wh",9)); client.println(ShowTeleInfo("BBRHCJW","Wh",9)); client.println(ShowTeleInfo("BBRHPJW","Wh",9)); client.println(ShowTeleInfo("BBRHCJR","Wh",9)); client.println(ShowTeleInfo("BBRHPJR","Wh",9)); client.println(ShowTeleInfo("PEJP","min",2)); client.println(ShowTeleInfo("PTEC","",4)); client.println(ShowTeleInfo("DEMAIN","",4)); client.println(ShowTeleInfo("IINST","A",3)); client.println(ShowTeleInfo("IINST1","A",3)); client.println(ShowTeleInfo("IINST2","A",3)); client.println(ShowTeleInfo("IINST3","A",3)); client.println(ShowTeleInfo("IMAX","A",3)); client.println(ShowTeleInfo("IMAX1","A",3)); client.println(ShowTeleInfo("IMAX2","A",3)); client.println(ShowTeleInfo("IMAX3","A",3)); client.println(ShowTeleInfo("PMAX","W",5)); client.println(ShowTeleInfo("PAPP","VA",5)); client.println(ShowTeleInfo("HHPHC","",1)); client.println(ShowTeleInfo("MOTDETAT","",6)); client.println(ShowTeleInfo("PPOT","",2)); // On ne retiens pas ADIR(1,2,3) ou ADPS (peuvent être calculés) client.println(""); break; } if (c == '\n') { current_line_is_blank = true; } else if (c != '\r') { current_line_is_blank = false; } } } delay(200); client.stop(); } }