· 2 years ago · Mar 23, 2023, 02:50 PM
1#include <ESP8266WiFi.h>
2
3int BELL_PIN = 4;
4String API_KEY = "<firebase API key>";
5String DATA_KEY = "<firebase DATA key>";
6boolean ring = false;
7WiFiClient client;
8
9void setup() {
10
11 WiFi.begin("...", "...");
12 while (WiFi.status() != WL_CONNECTED) {
13 delay(500);
14 }
15 Serial.begin(115200);
16 Serial.println("Serial start...");
17}
18
19void loop() {
20 pinMode(BELL_PIN, INPUT);
21 if (digitalRead(BELL_PIN) == 1) ring = true;
22 ring = true;
23 if (ring)
24 {
25 Serial.println("Ringing...");
26 sendDataToFirebase("Ring sensor changed");
27 ring = false;
28 pinMode(BELL_PIN, OUTPUT);
29 digitalWrite(BELL_PIN, 0);
30 }
31 delay(1000);
32}
33
34void sendDataToFirebase(String alarm)
35{
36 String data = "{" ;
37 data = data + "\"to\": \"+ DATA_KEY + "\"," ;
38 data = data + "\"notification\": {" ;
39 data = data + "\"body\": \"Ringing door bell...\"," ;
40 data = data + "\"title\" : \"Alarm\" " ;
41 data = data + "} }" ;
42 Serial.println("Send data...");
43 int status = client.connect("fcm.googleapis.com",80);
44 delay(1000);
45 if (client.connected()) {
46 Serial.println("Connected to the server..");
47 client.println("POST /fcm/send HTTP/1.1");
48 client.println("Authorization: key=" + API_KEY);
49 client.println("Content-Type: application/json");
50 client.println("Host: fcm.googleapis.com");
51 client.print("Content-Length: ");
52 client.println(data.length());
53 client.print("\n");
54 client.print(data);
55 Serial.println("Data sent...");
56 } else
57 Serial.println("Connection failed: " + String(status));
58 Serial.println("Reading response..");
59 delay(10000);
60 while (client.available()) {
61 char c = client.read();
62 Serial.print(c);
63 }
64 Serial.println("Finished!");
65 client.flush();
66 client.stop();
67}