#include <WiFi.h>
#include <HTTPClient.h>
#include "plc.h"
#include "verbraucher.h"
#define LED 40
#define Button 46
#define Switch 33
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 3600
#define UTC_OFFSET_DST 3600
bool offlineMode = false;
void printLocalTime() {
struct timeval tv;
if (gettimeofday(&tv, NULL)!= 0) {
Serial.println("Failed to obtain time");
return;
}
Serial.print("TimeVal-sec = ");
Serial.print(tv.tv_sec);
Serial.print(" ");
Serial.print("TimeVal-usec = ");
Serial.print(tv.tv_usec);
Serial.println();
}
void testUrl() {
Serial.println("debug 1");
Serial.println(WiFi.status());
if (WiFi.status() == WL_CONNECTED) {
Serial.println("debug 2");
HTTPClient http;
String serverPath = "https://fehren-media.de/";
// Your Domain name with URL path or IP address with path
//http.begin(serverPath);
http.begin(serverPath.c_str());
Serial.println("debug 3");
//http.setTimeout(1000);
// If you need Node-RED/server authentication, insert user and password below
//http.setAuthorization("REPLACE_WITH_SERVER_USERNAME", "REPLACE_WITH_SERVER_PASSWORD");
// Send HTTP GET request
int httpResponseCode = http.GET();
Serial.println("debug 4");
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
}
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
pinMode(Button, INPUT);
pinMode(Switch, INPUT);
digitalWrite(LED, HIGH);
offlineMode = digitalRead(Switch);
if (!offlineMode) {
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
digitalWrite(LED, !digitalRead(LED));
Serial.print(".");
}
digitalWrite(LED, LOW);
Serial.println(" Connected!");
configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
}
}
Ton tonButton;
P_flag pfButton;
P_flag pfTon;
void loop() {
verbraucher_run();
tonButton.run(
digitalRead(Button),
500);
pfButton.run(digitalRead(Button));
pfTon.run(tonButton.get_q());
digitalWrite(LED, tonButton.get_q());
if (!offlineMode) {
if (pfButton.get_q()) {
Serial.println(millis());
printLocalTime();
Serial.println(millis());
}
if (pfTon.get_q()) {
Serial.println(millis());
printLocalTime();
Serial.println(millis());
}
}
delay(10);
}