Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <FirebaseArduino.h>
- #include <ESP8266HTTPClient.h>
- // Settings
- #define FINGERPRINT "7A 54 06 9B DC 7A 25 B3 86 8D 66 53 48 2C 0B 96 42 C7 B3 0A"
- #define FIREBASE_HOST "****"
- #define FIREBASE_AUTH "*****"
- #define WIFI_SSID "***"
- #define WIFI_PASSWORD "***"
- #define UID "***"
- #define URL "/users/KfNnT1xivpai8iCs1tAr6s2LIHD3/devices"
- const int relay = D0; // 16
- const int sensor = D7;
- int relayState = HIGH;
- void setup() {
- Serial.begin(9600);
- // relay settings
- pinMode(relay, OUTPUT); // set relay as output
- digitalWrite(relay, relayState); // set Relay OFF (It still confusing about High and low in nodeMcu :) )
- // button settings
- pinMode(sensor, INPUT);
- // connect to wifi.
- WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
- Serial.print("Connecting to wifi");
- while (WiFi.status() != WL_CONNECTED) {
- Serial.print(".");
- delay(500);
- }
- Serial.println();
- Serial.print("connected: ");
- Serial.println(WiFi.localIP());
- // Connect to the firebase server
- Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
- }
- int lastSensorState = LOW;
- bool lastServerState = false;
- void loop() {
- // listen sensor
- if (sensorStateIsChange()) {
- // sensor is change
- int currentSensorState = digitalRead(sensor);
- lastSensorState = currentSensorState;
- int state = currentSensorState ? LOW : HIGH;
- digitalWrite(relay, state); // state LOW is on , State HIGH is OFF.
- // now need sync state to server
- serverSetState(currentSensorState ? true : false);
- }
- // listen for server state
- if (serverStateIsChange()) {
- // server state is change
- bool currentServerState = serverStateIsChange();
- int sState = currentServerState ? LOW : HIGH;
- digitalWrite(relay, sState); // state LOW is on , State HIGH is OFF.
- }
- }
- bool sensorStateIsChange() {
- bool returnValue = false;
- int currentSensorState = digitalRead(sensor);
- if (lastSensorState != currentSensorState) {
- // now we see sensor State change.
- returnValue = true;
- }
- return returnValue;
- }
- bool serverGetState() {
- return Firebase.getBool(URL "/0/state");
- }
- void serverSetState(bool state) {
- Firebase.setBool(URL "/0/state", state);
- lastServerState = state;
- delay(200);
- }
- bool serverStateIsChange() {
- bool returnValue = false;
- bool currentServerState = serverGetState();
- if (currentServerState != lastServerState) {
- returnValue = true;
- }
- return returnValue;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement