Show Posts
|
|
Pages: 1 ... 7 8 [9] 10
|
|
122
|
International / Français / Re: [Aide] serveur domotique : télé-info + 4 relais + T°C DS18B20
|
on: February 12, 2011, 02:19:39 pm
|
Je t'ai fait parvenir mon fichier serveur_web.h que j'ai transformé (essayé du moins) pour inclure une page web avec les 4 cases du switch. C'est là que la compilation me fait énormément d'erreur. Après, pris un par un les sketch ne posent aucun problème et leur utilisation est vraiment sympas. Si quelqu'un veut que je poste ce fichier pour trouver une autre idée. Pour l'instant, je suis perdu dans ce nouveau monde. Et ton idée de réunir les 2 .pde, cela donnerait quoi ? je n'arrive pas à comprendre le résultat final
|
|
|
|
|
123
|
International / Français / Re: [Aide] serveur domotique : télé-info + 4 relais + T°C DS18B20
|
on: February 11, 2011, 10:54:55 am
|
|
La solution de gromain59 pourrait être faisable mais pour les # pages ...
Comme tu as pu le voir il y a 4 pages "web" pour la téléinfo et je pensais en rajouter une 5ème pour les cases des contacts (on/off). Je veux bien rajouter mon test de rajout des contacts mais comme il y a tellement d'erreur je ne pense pas que cela soit utile. Si c'est possible de rajouter 2 (ou 3) pde, la gestion des pages web risque de poser problème ?
Comme chacun à sa fonction pour chaque page, je ne pense pas qu'il soit utiliser en multitache. De plus, le blocage vient pour l'instant de "l'écriture" du sketch et non de son utilisation.
|
|
|
|
|
128
|
Forum 2005-2010 (read only) / Français / Re: Projet domotique : teleinfo + 4 relais + T°C 1wire
|
on: January 17, 2011, 11:54:15 am
|
|
Je vais essayer de reprendre : mon post 5 et 6 (les deux premiers codes) correspondent au serveur_web.h le post 7 (qui suit) c'est le teleinfo.pde
***Là, c'est ce qui est existant et qui fonctionne super bien.
A cela, je désirerais rajouter une ou des sondes DS18B20 (en onewire) et si il reste de la place 4 relais simple on/off (sur la même page web ou sur une autre).
J'ai trouvé des exemples de codes que j'ai mis dans mes "reply #9, 10 et 11" et que j'ai essayé d'intégrer. Apres compilation, il m'a sorti les erreurs que j'ai décrit (reply#18).
J'utilise le enc28j60.
|
|
|
|
|
129
|
Forum 2005-2010 (read only) / Français / Re: Projet domotique : teleinfo + 4 relais + T°C 1wire
|
on: January 16, 2011, 05:38:05 pm
|
|
J'ai donc collé les lignes que j'avais marqué précédemment : - // get current temperature - // initialize DS18B20 datapin - getCurrentTemp - void onewirereset
A la compilation j'obtiens les erreurs : 1/ serveur_web.h : in fonction 'uint16_t print_webpage (uint8_t*)': 2/ serveur_web.h : 208 error 'temp_string' was not declared in this scope 3/ serveur_web.h : 214 error 'baseur1' was not declared in this scope 4/ serveur_web.h : 220 error 'i' was not declared in this scope
Il me faut rajouter quoi ou changer ?
PS : le code télé info fonctionne parfaitement - je cherche juste à rajouter si possible la T°C et relay.
|
|
|
|
|
130
|
Forum 2005-2010 (read only) / Français / Re: Projet domotique : teleinfo + 4 relais + T°C 1wire
|
on: January 16, 2011, 11:47:09 am
|
|
Ce n'est malheureusement pas le mien mais j'ai l'autorisation de l'auteur pour l'utiliser et le mettre ici. Je ne pouvais pas plus l'embêter pour m'aider car déjà son boulot est superbe.
D'après lui, le rajout n'est pas difficile mais je comprends pourquoi car son niveau est déjà important.
Je vais essayer de modifier tout seul et de mettre les résultats et les erreurs peut-être cela fera avancer.
|
|
|
|
|
132
|
Forum 2005-2010 (read only) / Français / Re: Projet domotique : teleinfo + 4 relais + T°C 1wire
|
on: January 15, 2011, 09:21:33 am
|
int8_t analyse_cmd(char *str) { int8_t r=-1; if (find_key_val(str,"cmd")){ if (*strbuf < 0x3a && *strbuf > 0x2f){ // is a ASCII number, return it r=(*strbuf-0x30); } } return r; }
Il y a ce code qui est diffèrent entre les deux (le mien et celui mis pour la T°C juste au dessus). Je pense qu'il risque d'y avoir conflit si je le rajoute ? ou si je le transforme ? Je me demande si ce n'est pas là mon problème pour joindre les deux :-/ Ou cela concerne juste l'appel de la page ?
|
|
|
|
|
133
|
Forum 2005-2010 (read only) / Français / Re: Projet domotique : teleinfo + 4 relais + T°C 1wire
|
on: January 15, 2011, 07:48:55 am
|
void OneWireReset(int Pin) // reset. Should improve to act as a presence pulse { digitalWrite(Pin, LOW); pinMode(Pin, OUTPUT); // bring low for 500 us delayMicroseconds(500); pinMode(Pin, INPUT); delayMicroseconds(500); }
void OneWireOutByte(int Pin, byte d) // output byte d (least sig bit first). { byte n;
for(n=8; n!=0; n--) { if ((d & 0x01) == 1) // test least sig bit { digitalWrite(Pin, LOW); pinMode(Pin, OUTPUT); delayMicroseconds(5); pinMode(Pin, INPUT); delayMicroseconds(60); } else { digitalWrite(Pin, LOW); pinMode(Pin, OUTPUT); delayMicroseconds(60); pinMode(Pin, INPUT); }
d=d>>1; // now the next bit is in the least sig bit position. } }
byte OneWireInByte(int Pin) // read byte, least sig byte first { byte d, n, b;
for (n=0; n<8; n++) { digitalWrite(Pin, LOW); pinMode(Pin, OUTPUT); delayMicroseconds(5); pinMode(Pin, INPUT); delayMicroseconds(5); b = digitalRead(Pin); delayMicroseconds(50); d = (d >> 1) | (b<<7); // shift d to right and insert b in most sig bit position } return(d); }
void getCurrentTemp(char *temp) { int HighByte, LowByte, TReading, Tc_100, sign, whole, fract;
OneWireReset(TEMP_PIN); OneWireOutByte(TEMP_PIN, 0xcc); OneWireOutByte(TEMP_PIN, 0x44); // perform temperature conversion, strong pullup for one sec
OneWireReset(TEMP_PIN); OneWireOutByte(TEMP_PIN, 0xcc); OneWireOutByte(TEMP_PIN, 0xbe);
LowByte = OneWireInByte(TEMP_PIN); HighByte = OneWireInByte(TEMP_PIN); TReading = (HighByte << 8) + LowByte; sign = TReading & 0x8000; // test most sig bit if (sign) // negative { TReading = (TReading ^ 0xffff) + 1; // 2's comp } Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
whole = Tc_100 / 100; // separate off the whole and fractional portions fract = Tc_100 % 100;
if(sign) temp[0]='-'; else temp[0]='+'; if(whole/100==0) temp[1] =' '; else temp[1]= whole/100+'0'; temp[2]= (whole-(whole/100)*100)/10 +'0' ; temp[3]= whole-(whole/10)*10 +'0'; temp[4]='.'; temp[5]=fract/10 +'0'; temp[6]=fract-(fract/10)*10 +'0'; temp[7] = '\0';
}
Celui là je pense le mettre tout à la fin. Voilà, vous en pensez quoi ? des erreurs ? PS : après, je verrai pour les relais ON/OFF simple.
|
|
|
|
|
134
|
Forum 2005-2010 (read only) / Français / Re: Projet domotique : teleinfo + 4 relais + T°C 1wire
|
on: January 15, 2011, 07:46:01 am
|
getCurrentTemp(temp_string); plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n")); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<center><p><h1>Welcome to Arduino Ethernet Shield V1.0 </h1></p> ")); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<hr><br><form METHOD=get action=\"")); plen=es.ES_fill_tcp_data(buf,plen,baseurl); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">")); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<h2> Current Temperature is </h2> ")); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<h1><font color=\"#00FF00\"> ")); while (temp_string[i]) { buf[TCP_CHECKSUM_L_P+3+plen]=temp_string[i++]; plen++; }
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR(" °C</font></h1><br> ") ); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=1>")); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Get Temperature\"></form>")); plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</center><hr> <p> V1.0 <a href=\"http://www.nuelectronics.com\">www.nuelectronics.com<a>"));
et ce code dans la pageweb 1 entre la ligne : sprintf (test, "%ld&chds=0,8000&chl=%ld'>" ,papp, papp) ; et celle qui suit plen=es_fill_tcp_data_p (buf, plen, test); Pour afficher en page 1 la T°C.
|
|
|
|
|
135
|
Forum 2005-2010 (read only) / Français / Re: Projet domotique : teleinfo + 4 relais + T°C 1wire
|
on: January 15, 2011, 07:39:09 am
|
// get current temperature #define TEMP_PIN 3 void getCurrentTemp( int *sign, int *whole, int *fract);
je pense le mettre en pageweb 1 (si cela fonctionne j'essaierai de le mettre en page 5 à créer). // initialize DS18B20 datapin digitalWrite(TEMP_PIN, LOW); pinMode(TEMP_PIN, INPUT); // sets the digital pin as input (logic 1) et celui là après //init the ethernet/ ip layer:
|
|
|
|
|