4
0
Fork 0
mirror of https://github.com/zzzzDev4/IAS-Better-Tea.git synced 2025-04-21 07:31:20 +02:00

sync working

This commit is contained in:
zzzz 2024-05-14 19:25:06 +02:00
parent bb936e60e4
commit fed38c1486
3 changed files with 35 additions and 14 deletions

View file

@ -83,9 +83,11 @@ JSONVar TeaNetworking::httpsGETRequest(String serverName)
return JSON.parse(payload);
}
void TeaNetworking::httpsPOSTRequest(String serverName, String data)
JSONVar TeaNetworking::httpsPOSTRequest(String serverName, String data)
{
WiFiClientSecure client;
String payload = "{}";
// wait for WiFi connection
if ((WiFi.status() == WL_CONNECTED))
{
@ -105,6 +107,8 @@ void TeaNetworking::httpsPOSTRequest(String serverName, String data)
{
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTPS] POST... code: %d\n", httpCode);
payload = http.getString();
Serial.println(payload);
}
else
{
@ -117,6 +121,7 @@ void TeaNetworking::httpsPOSTRequest(String serverName, String data)
Serial.printf("[HTTPS] Unable to connect\n");
}
}
return JSON.parse(payload);
}
String TeaNetworking::createTeaData(
@ -131,4 +136,14 @@ String TeaNetworking::createTeaData(
teaData["watertemp"] = waterTemp;
teaData["steepingseconds"] = steepingSeconds;
return JSONVar::stringify(teaData);
}
String TeaNetworking::createTeaData(TeaData tea)
{
JSONVar teaData;
teaData["teaname"] = tea.m_teaName;
teaData["rfidcode"] = tea.m_rfidCode;
teaData["watertemp"] = tea.m_waterTemp;
teaData["steepingseconds"] = tea.m_steepingSeconds;
return JSONVar::stringify(teaData);
}

View file

@ -4,17 +4,19 @@
#include <ESP8266HTTPClient.h>
#include <Arduino_JSON.h>
#include "rootCertificate.hpp"
#include "TeaData.hpp"
class TeaNetworking
{
public:
void init(const char *ssid, const char *password);
JSONVar httpsGETRequest(String serverName);
void httpsPOSTRequest(String serverName, String data);
JSONVar httpsPOSTRequest(String serverName, String data);
bool wifiConnected() { return WiFi.status() == WL_CONNECTED; }
String createTeaData(
String teaname,
String rfidcode,
int watertemp,
int steepingseconds);
String createTeaData(TeaData tea);
};

View file

@ -44,7 +44,6 @@ SmartButton buttonRight(TACTILE_BTN_RIGHT);
String shuttleServer = "https://ias-tea-axum.shuttleapp.rs";
TeaData currentTea("Teafault", "c0derfid", -1, 30);
String currentUid;
enum State
{
@ -134,7 +133,7 @@ void loop()
String uid = smartRFID.readTag(5000);
if (uid != "no_tag_detected")
{
currentUid = uid;
currentTea.m_rfidCode = uid;
state = PROCESS_RFID_SCAN;
}
break;
@ -142,7 +141,7 @@ void loop()
case PROCESS_RFID_SCAN:
{
display.println(currentUid);
display.println(currentTea.m_rfidCode);
display.display();
delay(500);
@ -150,16 +149,15 @@ void loop()
display.display();
delay(250);
JSONVar result = teaNet.httpsGETRequest(shuttleServer + "/teabyrfid/" + currentUid);
JSONVar result = teaNet.httpsGETRequest(shuttleServer + "/teabyrfid/" + currentTea.m_rfidCode);
Serial.print("Result:");
Serial.println(result);
if (JSONVar::stringify(result) == "null")
{
Serial.print("TEA DOES NOT EXIST YET!");
String payload = teaNet.createTeaData("Unnamed Tea", currentUid, 90, 180);
teaNet.httpsPOSTRequest(shuttleServer + "/addtea", payload);
result = teaNet.httpsGETRequest(shuttleServer + "/teabyrfid/" + currentUid);
String payload = teaNet.createTeaData("Unnamed Tea", currentTea.m_rfidCode, 90, 180);
result = teaNet.httpsPOSTRequest(shuttleServer + "/addtea", payload);
state = State::DISPLAY_ADD_NEW_TEA_CONFIG;
}
else
@ -167,7 +165,7 @@ void loop()
state = State::DISPLAY_SCANNED_TEA_CONFIG;
}
currentTea = TeaData(result["teaname"], result["rfidcode"], result["watertemp"], result["steepingseconds"]);
currentTea = TeaData(result["teaname"], currentTea.m_rfidCode, result["watertemp"], result["steepingseconds"]);
break;
}
case DISPLAY_SCANNED_TEA_CONFIG:
@ -176,7 +174,7 @@ void loop()
String uid = smartRFID.readTag(50); // just enough time to detect tag
if (uid != "no_tag_detected")
{
currentUid = uid;
currentTea.m_rfidCode = uid;
smartDisplay.resetDisplay();
state = PROCESS_RFID_SCAN;
break;
@ -203,6 +201,10 @@ void loop()
// change state if start pressed
if (isBtnPressed())
{
String payload = teaNet.createTeaData(currentTea);
Serial.println(payload);
smartDisplay.printMsg("sync...");
teaNet.httpsPOSTRequest(shuttleServer + "/updatetea", payload);
teaTimer.beginSteeping(5000);
state = State::STEEPING_IN_PROGRESS;
}
@ -234,7 +236,7 @@ void loop()
String uid = smartRFID.readTag(50); // just enough time to detect tag
if (uid != "no_tag_detected")
{
currentUid = uid;
currentTea.m_rfidCode = uid;
smartDisplay.resetDisplay();
state = PROCESS_RFID_SCAN;
break;
@ -263,7 +265,7 @@ void loop()
String uid = smartRFID.readTag(50); // just enough time to detect tag
if (uid != "no_tag_detected")
{
currentUid = uid;
currentTea.m_rfidCode = uid;
smartDisplay.resetDisplay();
state = PROCESS_RFID_SCAN;
break;
@ -281,7 +283,9 @@ void loop()
if (isBtnPressed())
{
smartDisplay.printMsg("Accepted");
delay(1000);
delay(500);
smartDisplay.printMsg("sync...");
teaNet.httpsPOSTRequest(shuttleServer + "/updatetea", teaNet.createTeaData(currentTea));
state = State::DISPLAY_SCANNED_TEA_CONFIG;
}