Arduino Uno ESP8266-ESP01 e bot telegram problema con messaggio automatico ogni ora

Salve a tutti, ho appreso come collegare arduino e l'esp8266 per far si che comunicassero tra loro fin qua tutto bene, ora ho creato su telegram il bot ed inserito i vari settaggi sull'esp8266 inizialmente ho provato con i semplici On e off dei relè, e un comando temperatura per farmi inviare la lettura dell'sht21 e tutto gira liscio. Ora vorrei che Arduino UNO mi leggesse il valore dell'sht21 ogni ora e mi inviasse lui stesso il messaggio su telegram ad ogni 00 della nuova ora. Ma non sto capendo come farlo scrivere questo messaggio vi allego i codici.

Codice per Arduino Uno

#include <DS3231.h>
#include <DS3232RTC.h>
#include <SoftwareSerial.h>
#include <SHT21.h>
#include <Wire.h>
#include <RTClib.h>

SHT21 sht;

RTC_DS3231 rtc;
Time t;

SoftwareSerial mySerial(2,3);
String data;
char c;
const int relay = 13;

unsigned long t1, t2;

DateTime dateTime;
byte Hour;
byte lastHour = dateTime.hour();



float temp;   
float humidity; 
//float temp_limite = 30.0;





void setup() {
  
  Wire.begin();
  rtc.begin(); 
  Serial.begin(9600);
  mySerial.begin(9600);
  delay(5);
  
}

bool checkTime() {
  dateTime = rtc.now();
  Hour = dateTime.hour();
bool Esegui = false;
  if (Hour != lastHour) {
    Esegui = true;
    lastHour = Hour;
  }
  return Esegui;
}


void loop() {

  

/*  if (millis() - t1 >= 30000) {
    t1 = millis();
    printTime();
  }*/
      
  while(mySerial.available()>0){
    delay(5);
    c = mySerial.read();
    data += c;
  }
  
  if (data.length()>0) {
    Serial.println(data);
    if (data == "RELAY ON") {
      digitalWrite(relay, LOW);
      Serial.println("RELAY ON");
    } 
    else if (data == "RELAY OFF") {
      digitalWrite(relay, HIGH);
      Serial.println("RELAY OFF");
    } 
    else if (data == "Temperatura") {
  temp = sht.getTemperature();  
  humidity = sht.getHumidity();
     
      Serial.print("T:  ");
      mySerial.print("T:  ");
      Serial.print(temp);
      mySerial.print(temp);
      Serial.print("°C");
      mySerial.print("°C");
      Serial.print("\n");
      mySerial.print("\n");

      Serial.print("RH: ");
      mySerial.print("RH: ");
      Serial.print(humidity );
      mySerial.print(humidity);
      Serial.print("%");
      mySerial.print("%");
      Serial.print("\n");
      mySerial.print("\n");
    }        
   
 data = "";
  } 

  if (checkTime())
   {

      
      temp = sht.getTemperature(); 
      humidity = sht.getHumidity();
      
      Serial.print("Ciao ti aggiorno sulle condizioni della tua GrowBox:");
      mySerial.print("Ciao ti aggiorno sulle condizioni della tua GrowBox:");
      Serial.print("\n");
      mySerial.print("\n");
      Serial.print("Temperatura:");
      mySerial.print("Temperatura:");
      Serial.print(temp);
      mySerial.print(temp);
      Serial.print("°C");
      mySerial.print("°C");
      Serial.print("\n");
      mySerial.print("\n");

      Serial.print("Umidità:");
      mySerial.print("Umidità:");
      Serial.print(humidity );
      mySerial.print(humidity);
      Serial.print("%");
      mySerial.print("%");
      Serial.print("\n");
      mySerial.print("\n");
      
      
   }
   data = "";
}

char sTemp[9];
void printTime()
{
  DateTime now = rtc.now();
  sprintf(sTemp, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
  Serial.println(sTemp);
}

Codice Per ESP8266

#include "CTBot.h"
CTBot myBot;

String ssid = "Pirate_Wi_Fi";     
String pass = "xxxx"; 
String token = "xxxx";

String data;
char c;

void setup() {
	Serial.begin(9600);
  while (!Serial);
	Serial.println("Inizializzo il bot");

	myBot.wifiConnect(ssid, pass);

	myBot.setTelegramToken(token);

	
if (myBot.testConnection())
Serial.println("\ntestConnection OK");
else
Serial.println("\ntestConnection NOK");

}

void loop() {
	TBMessage msg;

	if (myBot.getNewMessage(msg)) {

		if (msg.text.equalsIgnoreCase("RELAY ON")) {              
			myBot.sendMessage(msg.sender.id, "RELAY ACCESO");  
			Serial.print("RELAY ON");
		}
		else if (msg.text.equalsIgnoreCase("RELAY OFF")) {        
			myBot.sendMessage(msg.sender.id, "RELAY SPENTO"); 
		  Serial.print("RELAY OFF");
		}
    else if (msg.text.equalsIgnoreCase("temperatura")) {
      myBot.sendMessage(msg.sender.id, "Leggo i dati...");
      delay(30);
      Serial.print("Temperatura");
    }
		else 
		{                                                    
			String reply;
			reply = (String)"Benvenuto " + msg.sender.username + (String)". Inserisci il comando: TEMPERATURA,RELAY ON,RELAY OFF ";
			myBot.sendMessage(msg.sender.id, reply);         
		}
	}

  while(Serial.available()>0){
    delay(10);
    c = Serial.read();
    data += c;
  }
  if (data.length()>0) {
    myBot.sendMessage(msg.sender.id, data);
    delay(10);
    data = "";
  }

	delay(500);

}

Spero mi possiate aiutare perche sto andando di matto.
Grazie in anticipo per le risposte.

Salve a tutti ho risolto volendo potete chiudere il post

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.