I hope i am at the right spot over here,
I am having trouble getting this code to work it needs to post sensor info from PIR sensors to MQTT
tho 1 sensor works (sensor1)
but the other 2 wont ... they do nothing
I hope you guys can help , thanks in advance.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "#######";
const char* password = "#######";
const char* mqttServer = "######";
const int mqttPort = 1883;
const char* mqttUser = "########";
const char* mqttPassword = "#######";
String alarmstate = "disarmed";
//Pin Numbers...
int sensor1 = 15;
char* sensor1state = "OFF";
char* sensor1laststate = "OFF";
int sensor2 = 13;
char* sensor2state = "OFF";
char* sensor2laststate = "OFF";
int sensor3 = 12;
char* sensor3state = "OFF";
char* sensor3laststate = "OFF";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
Serial.println("Connecting to MQTT...");
if (client.connect("AlarmSYS", mqttUser, mqttPassword )) {
Serial.println("connected");
} else {
Serial.print("failed with state ");
Serial.print(client.state());
delay(2000);
}
}
Serial.print("Publishing available...");
client.publish("HAlarm/available", "online");
Serial.print("Subscribing to HAlarm/command");
client.subscribe("HAlarm/command");
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived in topic: ");
Serial.println(topic);
Serial.print("Message:");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
if (!strncmp((char *)payload, "disarmed", length)){
Serial.println("Received disarmed signal... disarming...");
client.publish("HAlarm/internal/state", "disarmed");
alarmstate = "disarmed";
}
else if (!strncmp((char *)payload, "pending", length)){
Serial.println("Received pending signal... pending...");
client.publish("HAlarm/internal/state", "pending");
alarmstate = "pending";
}
else if (!strncmp((char *)payload, "armed_away", length)){
Serial.println("Received armed_away signal... ARMING...");
client.publish("HAlarm/internal/state", "armed_away");
alarmstate = "armed_away";
}
else if (!strncmp((char *)payload, "triggered", length)){
Serial.println("Received triggered signal... triggering...");
client.publish("HAlarm/internal/state", "triggered");
alarmstate = "triggered";
}
}
void loop() {
client.loop();
//Do alarm stuff here...
sensor1func();
sensor2func();
sensor3func();
}
void sensor1func(){
sensor1laststate = sensor1state;
if (digitalRead(sensor1)==HIGH){
sensor1state = "ON";
}
else if (digitalRead(sensor1)==LOW){
sensor1state = "OFF";
}
if (sensor1laststate != sensor1state) {
client.publish("HAlarm/sensor/1", sensor1state);
}
}
void sensor2func(){
sensor2laststate = sensor2state;
if (digitalRead(sensor2)==HIGH){
sensor2state = "ON";
}
else if (digitalRead(sensor2)==LOW){
sensor2state = "OFF";
}
if (sensor2laststate != sensor2state) {
client.publish("HAlarm/sensor/2", sensor2state);
}
}
void sensor3func(){
sensor3laststate = sensor3state;
if (digitalRead(sensor3)==HIGH){
sensor3state = "ON";
}
else if (digitalRead(sensor3)==LOW){
sensor3state = "OFF";
}
if (sensor3laststate != sensor3state) {
client.publish("HAlarm/sensor/3", sensor2state);
}
}