CIAO A TUTTI,
da un paio di settimane mi sto concentrando su un progetto che riguarda un cronotermostato comandato su google calendar.
Il mio intoppo adesso è come fare a mettere in codice il seguente:
google start : 2013 -01-31 from 15.00 untill 17.00.
io vado a leggere la data e l'ora con il processo time.
Ma non riesco a capire come faccio a tirare fuori un bool de sto dentro questo tempo.
Qualcuno sa come fare?
qui il mio codice completo:
#include <leOS2.h>
leOS2 myOS;
#include <dht.h>
// temp to SQL
#include <Bridge.h>
#include <HttpClient.h>
#include <Process.h>
Process date;
dht DHT;
#define DHT22_PIN 5
double gettemperature;
double getumidita ;
String settemp;
String setumid;
String setpoint;
bool togglereed = false;
bool togglesend = false;
bool togglecancella = false;
bool togglecontrollo = false;
bool togglesensore = false;
// inizializzo le variabli per il crìontrollo del riscaldamneto
String now;
String data;
String setdata;
int ora;
int minuti;
// setpoint
int setstartora;
int setstartmin;
int setendora;
int setendmin;
int settemperatura;
bool accensione;
HttpClient client;
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Bridge.begin();
digitalWrite(13, HIGH);
if (!date.running()) {
date.begin("date");
date.addParameter("+%T");
date.run();
}
Serial.begin(9600);
delay (1000);
// inizializzo i timer******************************************
myOS.begin();
myOS.addTask(timersensor, myOS.convertMs(1000),SCHEDULED_IMMEDIATESTART);
myOS.addTask(timereed, myOS.convertMs(80000),SCHEDULED_IMMEDIATESTART); // +- 10 min
myOS.addTask(timersend, myOS.convertMs(56000)); // 1 min
myOS.addTask(timercancella, myOS.convertMs(128000)); // +- 20 min
myOS.addTask(timercontrollo, myOS.convertMs(1000));
//******************************************************************
digitalWrite(13, LOW);
}
void loop() {
controllo();
cancella();
getrss();
send_temperatura();
sensor();
}
// timer ************************************************************************************************************************************
void timereed() {
togglereed = true;
}
void timersend() {
togglesend = true;
}
void timercancella() {
togglecancella = true;
}
void timercontrollo() {
togglecontrollo = true;
}
void timersensor() {
togglesensore = true;
}
//********************************************************************************************************************************************
// DATA E ORA SICURAMENTE DA RISCRIVEDE
//*********************************************************************************************************************************************
// data corrente
String getora() {
Process date;
date.begin("date");
date.addParameter("+%T");
date.run();
if (date.available()) {
String timeString = date.readString();
return timeString;
}
date.close();
}
// **********************************************************************************************************
// ora corrente
String getdata()
{
Process date;
date.begin("date");
date.addParameter("+%D");
date.run();
if (date.available()) {
String timeString = date.readString();
return timeString;
}
date.close();
}
String data_ora() {
//************************************************************************************************************
// metto a posto la data e l'ora per il DB
String ora = getora(); //ora
String dummy = getdata();
String anno = dummy.substring(6, 8); // anno
String data = dummy.substring(0, 5); // data
anno = "20" + anno + "-"; // metto a posto l'anno
data.replace("/", "-");
data = anno + data;
data += "%20" + ora;
data.trim();
//***********************
return data;
}
//**********************************************************************************************************************************************
// temperatura al DB ***************************************************************************************************************************
void send_temperatura() {
if (togglesend == true && get_status() == true) {
togglesend = false;
// sensor();
client.get("http://www.ilchetto.it/inserisci.php?tempo=" + data_ora() + "&temperatura=" + settemp + "&umidita=" + setumid);
String risp;
while (client.available()) {
char c = client.read();
risp += c;
}
risp.trim();
if (risp == "dati inseriti") {
digitalWrite(13, HIGH);
delay (200);
digitalWrite(13, LOW);
}
risp = "";
}
}
//***************************************************************************************************************************************************
// Sensori ******************************************************************************************************************************************
void sensor()
{
if (togglesensore == true){
int chk = DHT.read22(DHT22_PIN);
settemp = String (DHT.temperature, DEC);
setumid = String (DHT.humidity, DEC);
togglesensore = false;
}
}
//*****************************************************************************************************************************************************
// Stato rete *****************************************************************************************************************************************
bool get_status()
{
Process wifiCheck; // initialize a new process
wifiCheck.runShellCommand("/usr/bin/pretty-wifi-info.lua | grep Signal"); // command you want to run
String risp;
while (wifiCheck.available() > 0) {
char c = wifiCheck.read();
risp += c;
}
risp = risp.substring(7, 10);
risp.trim();
int con = risp.toInt();
bool Status;
if (con > 0)
{
Status = true;
}
else
{
Status = false;
}
return Status;
}
//*******************************************************************************************************************************************************
void cancella() {
if (togglecancella == true && get_status() == true) {
togglecancella = false;
client.get ("http://www.ilchetto.it/cancella.php");
}
}
// Google calendar FEED RSS ************************************************************************************************************************
void getrss()
{
if (togglereed == true && get_status() == true) {
togglereed = false;
setpoint = "";
digitalWrite(13, HIGH) ;
client.get ("http://www.ilchetto.it/calendar.php");
while (client.available()) {
char c = client.read();
setpoint += c;
}
setpoint.trim();
// Serial.println(setpoint);
digitalWrite(13, LOW);
}
}
//********************************************************************************************************************************************************
void controllo()
{
if ( togglecontrollo == true) {
togglecontrollo = false;
if (setpoint == "spegni" || setpoint == "") {
Serial.println("Spento");
accensione = false;
}
else {
now = data_ora();
ora = now.substring(13, 15).toInt();
minuti = now.substring(16, 18).toInt();
data = now.substring(0, 10);
// setpoint
setdata = setpoint.substring(0, 10);
setdata.trim();
settemperatura = setpoint.substring(43, 46).toInt();
// inizializzo a intero le ore e i minuti del setpoint
setstartora = setpoint.substring(17, 19).toInt();
setstartmin = setpoint.substring(20, 23).toInt();
setendora = setpoint.substring(30, 32).toInt();
setendmin = setpoint.substring(33, 35).toInt();
accendi();
}
}
}
void accendi(){
// sensor();
if ((data == setdata)&& (((ora >= setstartora)&& (minuti >= setstartmin))||(( ora <= setendora ) && (minuti <= setendmin)))){
Serial.println ("ciao");
}
}