#include "MQTTServer.h"
void setup(void) {
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(Buzzer, OUTPUT);
pinMode(Button, INPUT);
initLCD();
initMPU();
connectWifi();
ThingSpeak.begin(client);
//Serial.println(getLocation());
Serial.println(getLocation());
get_latlon();
wifiConnect();
mqttClient.setServer(mqttServer, port);
mqttClient.setCallback(callback);
mqttClient.setKeepAlive( 90 );
set_status();
}
void loop() {
if (!mqttClient.connected()) {
mqttConnect();
}
mqttClient.loop();
read_MPU();
if (tab_msg == "Data") {
data();
}
if (tab_msg = "Locate") {
location();
}
if (digitalRead(Button) == HIGH || status_msg == "normal") {
Serial.println("Button pressed");
fall = false;
trigger_count = 0;
writeToCloud = false;
status_msg = "NULL";
char buffer[10] = "normal";
mqttClient.publish("IoT_Current_Alert_Status", buffer);
mqttToNodeRed = false;
delay(1000);
}
//Check condition that detect falling
if (raw_accelerate >= trigger_acc && raw_angular_accelerate >= trigger_ang_acc) {
trigger_count++;
}
if (5 <= trigger_count) {
fall = true;
}
if (fall == true) {
fall_alert();
if (writeToCloud == false) {
writeToThingSpeak();
Serial.println("Writed to Thing Speak");
writeToCloud = true;
}
if (mqttToNodeRed == false) {
char buffer[10] = "fall";
mqttClient.publish("IoT_Current_Alert_Status", buffer);
mqttToNodeRed = true;
}
}
}