Advertisement
tabvn

TouchSensor+Relay

Jul 9th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.49 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <FirebaseArduino.h>
  3. #include <ESP8266HTTPClient.h>
  4.  
  5.  
  6. // Settings
  7. #define FINGERPRINT "7A 54 06 9B DC 7A 25 B3 86 8D 66 53 48 2C 0B 96 42 C7 B3 0A"
  8. #define FIREBASE_HOST "****"
  9. #define FIREBASE_AUTH "*****"
  10. #define WIFI_SSID "***"
  11. #define WIFI_PASSWORD "***"
  12. #define UID "***"
  13. #define URL "/users/KfNnT1xivpai8iCs1tAr6s2LIHD3/devices"
  14.  
  15.  
  16. const int relay = D0; // 16
  17. const int sensor = D7;
  18. int relayState = HIGH;
  19. void setup() {
  20.  
  21.  
  22.   Serial.begin(9600);
  23.  
  24.   // relay settings
  25.   pinMode(relay, OUTPUT); // set relay as output
  26.   digitalWrite(relay, relayState); // set Relay OFF (It still confusing about High and low in nodeMcu :) )
  27.  
  28.   // button settings
  29.   pinMode(sensor, INPUT);
  30.  
  31.  
  32.   // connect to wifi.
  33.   WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  34.   Serial.print("Connecting to wifi");
  35.   while (WiFi.status() != WL_CONNECTED) {
  36.     Serial.print(".");
  37.     delay(500);
  38.   }
  39.   Serial.println();
  40.   Serial.print("connected: ");
  41.   Serial.println(WiFi.localIP());
  42.  
  43.   // Connect to the firebase server
  44.   Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  45.  
  46.  
  47. }
  48.  
  49. int lastSensorState = LOW;
  50. bool lastServerState = false;
  51.  
  52. void loop() {
  53.  
  54.   // listen sensor
  55.   if (sensorStateIsChange()) {
  56.     // sensor is change
  57.     int currentSensorState = digitalRead(sensor);
  58.     lastSensorState = currentSensorState;
  59.     int state = currentSensorState ? LOW : HIGH;
  60.     digitalWrite(relay, state); // state LOW is on , State HIGH is OFF.
  61.  
  62.     // now need sync state to server
  63.     serverSetState(currentSensorState ? true : false);
  64.   }
  65.  
  66.   // listen for server state
  67.   if (serverStateIsChange()) {
  68.     // server state is change
  69.     bool currentServerState = serverStateIsChange();
  70.     int sState = currentServerState ? LOW : HIGH;
  71.     digitalWrite(relay, sState); // state LOW is on , State HIGH is OFF.
  72.   }
  73.  
  74. }
  75.  
  76. bool sensorStateIsChange() {
  77.   bool returnValue = false;
  78.   int currentSensorState = digitalRead(sensor);
  79.   if (lastSensorState != currentSensorState) {
  80.     // now we see sensor State change.
  81.     returnValue = true;
  82.   }
  83.   return returnValue;
  84. }
  85.  
  86. bool serverGetState() {
  87.   return Firebase.getBool(URL "/0/state");
  88. }
  89.  
  90. void serverSetState(bool state) {
  91.   Firebase.setBool(URL "/0/state", state);
  92.   lastServerState = state;
  93.   delay(200);
  94. }
  95.  
  96. bool serverStateIsChange() {
  97.   bool returnValue = false;
  98.  
  99.   bool currentServerState = serverGetState();
  100.   if (currentServerState != lastServerState) {
  101.     returnValue = true;
  102.   }
  103.  
  104.   return returnValue;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement