#include "detaBaseArduinoESP32.h"
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
#define LED 2
#define LED1 4
#define botao 13

char* apiKey = "b0eoyx13_Dgz6QtkNvHAUbcKu2BH2gNro8xbszang ";
char* detaID = "b0eoyx13";
char* detaBaseName = "BASE_TESTE";
const char * ssid = "Wokwi-GUEST"; //MENO WiFi SIETE
bool canal = 0;
bool statusAnt = 0;
bool statusAtual = 0;
bool tempo_envio;
unsigned long agora;
unsigned long ultimo_envio;
unsigned long frequencia = 10000;
WiFiClientSecure cliente;
DetaBaseObject detaObj(cliente, detaID, detaBaseName, apiKey, false);
StaticJsonDocument<200> doc;

void setup() {
  Serial.begin(115200);
  Serial.println("Inicializando...");
  pinMode(LED, OUTPUT);
  pinMode(LED1, OUTPUT);
  pinMode(botao, INPUT_PULLUP);
  digitalWrite(LED, LOW);
  digitalWrite(LED1, LOW);
  WiFi.begin(ssid); //pripoj sa na wifi siet s heslom
  Serial.println("Aguardando se conectar ao Wi-Fi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("conectado!!");
  digitalWrite(LED, HIGH);

}

void loop() {
  statusAtual = digitalRead(botao);
  if (statusAtual != statusAnt && statusAtual == 0) {
    canal = !canal;
    Serial.print("botão pressionado, ");
    if(canal){
      detaObj.putObject("{\"items\":[{\"key\":\"MOD_01\",\"DADOS\":1}]}");
      Serial.println("dados enviado = 1");
    }else{
      detaObj.putObject("{\"items\":[{\"key\":\"MOD_01\",\"DADOS\":0}]}");
      Serial.println("dados enviado = 0");
    }
  }
  statusAnt = statusAtual;
 

  agora = millis();
  tempo_envio = agora - ultimo_envio > frequencia;
  if (tempo_envio) {
    Serial.print("recebendo dados, ");
    result myResult = detaObj.getObject("MOD_02");
    DeserializationError error = deserializeJson(doc, myResult.reply);
    String dados = doc["DADOS"];
    if (dados == "1") {
      digitalWrite(LED1, HIGH);
    } else {
      digitalWrite(LED1, LOW);
    }
    Serial.print("dados recebido = ");
    Serial.print(dados);
    Serial.print(" fim da consulta \n");
    ultimo_envio = millis();
  }

}