| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442 |
- #include "ESP12F.h"
- #include <WidgetRTC.h>
- /* **************************************************************
- Fonction Perso
- ***************************************************************/
- void delay_perso(uint32_t i) {
- unsigned long timeout = millis() + i;
- while (millis() < timeout)
- i++;
- }
- uint8_t uart_send(uint8_t *in, uint8_t nbTr, uint8_t *out) {
- int i;
- for (i = 0; i < nbTr; i++)
- Serial.write(in[i]);
- for (i = 0; i < SIZEMES - nbTr; i++)
- Serial.write(0x41);
- int time = 0;
- while (Serial.available() < SIZEMES) {
- delay(2);
- time++;
- if (time > 1000) {
- return 1;
- }
- }
-
- Serial.readBytes(out, SIZEMES);
-
- Serial.println(out[0]);
- if (out[1]&MASKMES != in[1] & MASKMES) {
- return 2;
- }
- return 0;
- }
- uint8_t transmit(uint8_t *in, uint8_t nbTr, uint8_t *out) {
- int i = 0;
- int res;
- while (res=uart_send(in,nbTr,out)){
- if(i>3){
- break;
- }
- delay(500);
- i++;
- }
- Serial.println(res);
- return res;
- }
- void SyncRTC() {
- uint8_t nbTr = 8;
- uint8_t in[nbTr];
- uint8_t out[SIZEMES];
- in[0] = SYNCRTC;
- in[1] = year() - 2000;
- in[2] = month();
- in[3] = day();
- uint8_t weekd = weekday() - 1;
- if (weekday() == 1) weekd = 0;
- in[4] = weekd;
- in[5] = hour();
- in[6] = minute();
- in[7] = second();
- if (transmit(in, nbTr, out)) {
- ;// todo TODO test si retour NOK
- }
- ;// todo return 0;
- }
- float convTemp(uint8_t ent) {
- //Serial.print("ent : ");
- //Serial.println(ent);
- return (((float)ent) / 10.0) + 10.0;
- }
- float convPH(uint8_t ent) {
- //TODO
- return 8.2;
- }
- int convSalinity(uint8_t ent) {
- //TODO
- return 1025;
- }
- void Status() {
- uint8_t nbTr = 1;
- uint8_t in[nbTr];
- uint8_t out[SIZEMES];
- in[0] = STATUS;
- if (transmit(in, nbTr, out)) {
- exit;
- }
- if (out[5] & 0x80 == 0x80)
- TechBas.on();
- else
- TechBas.off();
- if (out[5] & 0x40 == 0x40)
- TechHau.on();
- else
- TechHau.off();
- if (out[5] & 0x20 == 0x20)
- CuveHau.on();
- else
- CuveHau.off();
- if (out[5] & 0x10 == 0x10)
- Reserve.on();
- else
- Reserve.off();
- float air = convTemp(out[1]);
- float eau = convTemp(out[2]);
- /*
- Blynk.virtualWrite(V6, air);
- if (air <= 18.0)
- Blynk.notify("Temp air < 18°C");
- if (air >= 29.0)
- Blynk.notify("Temp air > 29°C");
- Blynk.virtualWrite(V7, eau);
- if (eau <= 24.0)
- Blynk.notify("Temp eau < 24°C");
- if (eau >= 27.0)
- Blynk.notify("Temp eau > 27°C");
- Blynk.virtualWrite(V8, convPH(out[3]));
- //TODO notif PH
- Blynk.virtualWrite(V9, convSalinity(out[4]));
- //TODO notif sel
- //TODO gestion erreur
- in[0] = READACTI;
- if (transmit(in, nbTr, out))
- //Serial.println("Erreur");// todo return 1; // TODO Erreur
- Blynk.virtualWrite(V20, (out[1] & ACTIREM) >> 0);
- Blynk.virtualWrite(V21, (out[1] & ACTIECU) >> 1);
- Blynk.virtualWrite(V22, (out[1] & ACTICHA) >> 2);
- Blynk.virtualWrite(V23, (out[1] & ACTIBGE) >> 3);
- Blynk.virtualWrite(V24, (out[1] & ACTIBR1) >> 4);
- Blynk.virtualWrite(V25, (out[1] & ACTIBR2) >> 5);
- Blynk.virtualWrite(V26, (out[1] & ACTIBR2) >> 6);
- Blynk.virtualWrite(V27, (out[1] & ACTINOU) >> 7);
- in[0] = READVENT;
- if (transmit(in, nbTr, out))
- //Serial.println("Erreur");// todo return 1; // TODO Erreur
- Blynk.virtualWrite(V40, (out[1] & 0xF0) >> 4);
- Blynk.virtualWrite(V41, (out[1] & 0x0F) >> 0);
- ;// todo return 0;*/
- }
- /* **************************************************************
- Fonction Blynk
- ***************************************************************/
- BLYNK_CONNECTED() {
- rtc.begin();
- }
- BLYNK_WRITE(V20) {
- //Remonter
- int val = param.asInt() << 0;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTIREM | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V21) {
- //Ecumeur
- int val = param.asInt() << 1;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTIECU | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V22) {
- //Chauffage
- int val = param.asInt() << 2;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTICHA | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V23) {
- //Brassage Général
- int val = param.asInt() << 3;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTIBGE | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V24) {
- //Brassage1
- int val = param.asInt() << 4;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTIBR1 | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V25) {
- //Brassage2
- int val = param.asInt() << 5;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTIBR2 | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V26) {
- int val = param.asInt() << 6;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTIOSM | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V27) {
- //Nourrisage
- int val = param.asInt() << 7;
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READACTI;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITACTI;
- in[1] = out[1] & (!ACTINOU | val);
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V40) {
- int val = param.asInt();
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READVENT;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITVENT;
- in[1] = out[1] & (!0xF0 | val << 4); // todo a modif
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V41) {
- int val = param.asInt();
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- //lecture ancien param
- in[0] = READVENT;
- if (transmit(in, 1, out)) {
- ;// todo return 1;
- }
- //envoie nouveau parametre
- in[0] = WRITVENT;
- in[1] = out[1] & (!0x0F | val);// todo a modif
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- BLYNK_WRITE(V50) {
- int val = param.asInt();
- uint8_t in[2];
- uint8_t nbTr = 2;
- uint8_t out[8];
- in[0] = WRITVENT;
- in[1] = val;
- if (transmit(in, nbTr, out)) {
- ;// todo return 1;
- }
- }
- /* **************************************************************
- Fonction Arduino
- ***************************************************************/
- uint8_t out[8];
- uint8_t in[8];
- void setup() {
- //Blynk.begin(auth, ssid, pass, IPAddress(192, 168, 1, 18), 8081);
- //timerRTC.setInterval(1000L * 3600, SyncRTC); // une synchro de la RTC par heure
- //timerStatus.setInterval(2000L, Status); // un Status toute les 2 secs
- //timerSend.setInterval(500L,Send);
- Serial.begin(115200);
- pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
- digitalWrite(LED_BUILTIN, HIGH);
- }
- void loop() {
- //Blynk.run();
- //timerRTC.run();
- //timerSend.run();
- Status();
- delay(2000);
- }
|