Ordinateur.ino 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. #include "ESP12F.h"
  2. #include <WidgetRTC.h>
  3. /* **************************************************************
  4. Fonction Perso
  5. ***************************************************************/
  6. uint8_t uart_send(uint8_t *in, uint8_t nbTr, uint8_t *out) {
  7. int i;
  8. for (i = 0; i < nbTr; i++) {
  9. Serial.write(in[i]);
  10. }
  11. for (; i < SIZEMES; i++) {
  12. Serial.write(0xAA);
  13. }
  14. int time = 0;
  15. while (Serial.available() < SIZEMES) {
  16. delay(1);
  17. time++;
  18. if (time > 200) {
  19. return 1;
  20. }
  21. }
  22. Serial.readBytes(out, SIZEMES);
  23. if (out[0] & MASKMES != in[0] & MASKMES) {
  24. return 2;
  25. }
  26. return 0;
  27. }
  28. uint8_t transmition(uint8_t *in, uint8_t nbTr, uint8_t *out) {
  29. int nbTen = 0;
  30. uart_send(in, nbTr, out);
  31. /*while(uart_send(in, nbTr, out)!=0){
  32. delay(20);
  33. nbTen++;
  34. if(nbTen>3){
  35. return 1;
  36. }
  37. }*/
  38. return 0;
  39. }
  40. /*
  41. void SyncRTC() {
  42. uint8_t nbTr = 8;
  43. uint8_t in[nbTr];
  44. uint8_t out[SIZEMES];
  45. in[0] = SYNCRTC;
  46. in[1] = year() - 2000;
  47. in[2] = month();
  48. in[3] = day();
  49. uint8_t weekd = weekday() - 1;
  50. if (weekday() == 1) weekd = 0;
  51. in[4] = weekd;
  52. in[5] = hour();
  53. in[6] = minute();
  54. in[7] = second();
  55. if (transmition(in, nbTr, out)) {
  56. ;// todo TODO test si retour NOK
  57. }
  58. ;// todo return 0;
  59. }*/
  60. float convTemp(uint8_t ent) {
  61. return (((float)ent) / 10.0) + 10.0;
  62. }
  63. float convPH(uint8_t ent) {
  64. //TODO
  65. return 8.2;
  66. }
  67. int convSalinity(uint8_t ent) {
  68. //TODO
  69. return 1025;
  70. }
  71. void Status() {
  72. uint8_t nbTr = 1;
  73. uint8_t in[nbTr];
  74. uint8_t out[SIZEMES];
  75. in[0] = STATUS;
  76. transmition(in, nbTr, out);
  77. if (out[5] & 0x80 == 0x80)
  78. TechBas.on();
  79. else
  80. TechBas.off();
  81. if (out[5] & 0x40 == 0x40)
  82. TechHau.on();
  83. else
  84. TechHau.off();
  85. if (out[5] & 0x20 == 0x20)
  86. CuveHau.on();
  87. else
  88. CuveHau.off();
  89. if (out[5] & 0x10 == 0x10)
  90. Reserve.on();
  91. else
  92. Reserve.off();
  93. float air = convTemp(out[1]);
  94. float eau = convTemp(out[2]);
  95. Blynk.virtualWrite(V6, air);
  96. if (air <= 18.0)
  97. Blynk.notify("Temp air < 18°C");
  98. if (air >= 29.0)
  99. Blynk.notify("Temp air > 29°C");
  100. Blynk.virtualWrite(V7, eau);
  101. if (eau <= 24.0)
  102. Blynk.notify("Temp eau < 24°C");
  103. if (eau >= 27.0)
  104. Blynk.notify("Temp eau > 27°C");
  105. Blynk.virtualWrite(V8, convPH(out[3]));
  106. //TODO notif PH
  107. Blynk.virtualWrite(V9, convSalinity(out[4]));
  108. //TODO notif sel
  109. //TODO gestion erreur
  110. in[0] = READACTI;
  111. if (transmition(in, nbTr, out))
  112. ;
  113. // todo return 1; // TODO Erreur
  114. Blynk.virtualWrite(V20, (out[1] & ACTIREM) >> 0);
  115. Blynk.virtualWrite(V21, (out[1] & ACTIECU) >> 1);
  116. Blynk.virtualWrite(V22, (out[1] & ACTICHA) >> 2);
  117. Blynk.virtualWrite(V23, (out[1] & ACTIBGE) >> 3);
  118. Blynk.virtualWrite(V24, (out[1] & ACTIBR1) >> 4);
  119. Blynk.virtualWrite(V25, (out[1] & ACTIBR2) >> 5);
  120. Blynk.virtualWrite(V26, (out[1] & ACTIBR2) >> 6);
  121. Blynk.virtualWrite(V27, (out[1] & ACTINOU) >> 7);
  122. in[0] = READVENT;
  123. if (transmition(in, nbTr, out))
  124. ;
  125. //Serial.println("Erreur");// todo return 1; // TODO Erreur
  126. Blynk.virtualWrite(V40, (out[1] & 0xF0) >> 4);
  127. Blynk.virtualWrite(V41, (out[1] & 0x0F) >> 0);
  128. ;//TODO return 0;
  129. }
  130. /* **************************************************************
  131. Fonction Blynk
  132. ***************************************************************/
  133. BLYNK_WRITE(V20){
  134. uint8_t nbTr = 3;
  135. uint8_t in[nbTr];
  136. uint8_t out[SIZEMES];
  137. in[0]=0x20;
  138. in[1]=0x00 | (1 << DECALREME);
  139. in[2] = param.asInt();
  140. transmition(in,nbTr,out);
  141. }
  142. BLYNK_WRITE(V21){
  143. uint8_t nbTr = 3;
  144. uint8_t in[nbTr];
  145. uint8_t out[SIZEMES];
  146. in[0]=0x20;
  147. in[1]=0x00 | (1 << DECALECUM);
  148. in[2] = param.asInt();
  149. transmition(in,nbTr,out);
  150. }
  151. BLYNK_WRITE(V22){
  152. uint8_t nbTr = 3;
  153. uint8_t in[nbTr];
  154. uint8_t out[SIZEMES];
  155. in[0]=0x20;
  156. in[1]=0x00 | (1 << DECALCHAU);
  157. in[2] = param.asInt();
  158. transmition(in,nbTr,out);
  159. }
  160. BLYNK_WRITE(V23){
  161. uint8_t nbTr = 3;
  162. uint8_t in[nbTr];
  163. uint8_t out[SIZEMES];
  164. in[0]=0x20;
  165. in[1]=0x00 | (1 << DECALBRAG);
  166. in[2] = param.asInt();
  167. transmition(in,nbTr,out);
  168. }
  169. BLYNK_WRITE(V24){
  170. uint8_t nbTr = 3;
  171. uint8_t in[nbTr];
  172. uint8_t out[SIZEMES];
  173. in[0]=0x20;
  174. in[1]=0x00 | (1 << DECALBRA1);
  175. in[2] = param.asInt();
  176. transmition(in,nbTr,out);
  177. }
  178. BLYNK_WRITE(V25){
  179. uint8_t nbTr = 3;
  180. uint8_t in[nbTr];
  181. uint8_t out[SIZEMES];
  182. in[0]=0x20;
  183. in[1]=0x00 | (1 << DECALBRA2);
  184. in[2] = param.asInt();
  185. transmition(in,nbTr,out);
  186. }
  187. BLYNK_WRITE(V26){
  188. uint8_t nbTr = 3;
  189. uint8_t in[nbTr];
  190. uint8_t out[SIZEMES];
  191. in[0]=0x20;
  192. in[1]=0x00 | (1 << DECALOSMO);
  193. in[2] = param.asInt();
  194. transmition(in,nbTr,out);
  195. }
  196. BLYNK_WRITE(V27){
  197. uint8_t nbTr = 3;
  198. uint8_t in[nbTr];
  199. uint8_t out[SIZEMES];
  200. in[0]=0x20;
  201. in[1]=0x00 | (1 << DECALNOUR);
  202. in[2] = param.asInt();
  203. transmition(in,nbTr,out);
  204. }
  205. /* **************************************************************
  206. Fonction main
  207. ***************************************************************/
  208. uint8_t out[8];
  209. uint8_t in[8];
  210. void setup() {
  211. Serial.begin(38400);
  212. Blynk.begin(auth, ssid, pass, IPAddress(192, 168, 1, 18), 8081);
  213. //timerRTC.setInterval(1000L * 3600, SyncRTC); // une synchro de la RTC par heure
  214. timerStatus.setInterval(10000L, Status); // un Status toute les 2 secs
  215. }
  216. void loop() {
  217. Blynk.run();
  218. //timerRTC.run();
  219. timerStatus.run();
  220. }