蜂鸣报警器

蜂鸣报警器的详细介绍

创作者:贝壳物联 | 更新日期:2022-08-26 | 在线时长:5天
接收异地设备发送来的信号,进行蜂鸣报警。

一、功能

接收异地设备发送来的信号,进行蜂鸣报警。

二、所需硬件

三、接线

蜂鸣器正极接阵脚3

四、代码

#include <SPI.h>
#include <Ethernet.h>
#include <aJSON.h>
//=============  此处必须修改============
String  APIKEY="9cfe676a9"; // 此处替换为你自己的API KEY
String DEVICEID="4"; // 此处替换为你的设备编号
//=======================================
const int LED = 3;//
byte mac[] = {0x00, 0x1D, 0x72, 0x82, 0x35, 0x9D};
EthernetClient client ;
IPAddress ip(192, 168, 0, 177);//local IP
//IPAddress server(121,42,180,30);
char server[] = "www.bigiot.net";  
int port= 8181 ;
aJsonStream serial_stream(&client);
unsigned long lastCheckInTime = 0; 
const unsigned long postingInterval = 40000; // delay between 2 datapoints, 30s
void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {// start the Ethernet connection with DHCP:
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);   
  }
  else {
    Serial.println("Ethernet configuration OK");
  } 
  delay(10000);
  Serial.println("connecting...");
  if(client.connect(server, port)){
    Serial.println("connected");
  }else{
    Serial.println("connection failed");
  }
}
void loop() {
  if(millis() - lastCheckInTime > postingInterval) {
    Serial.println("checking in"); 
    checkIn();
  } 
  if (serial_stream.available()) {
    /* First, skip any accidental whitespace like newlines. */
    serial_stream.skip();
  }
  if (serial_stream.available()) {
    /* Something real on input, let's take a look. */
    aJsonObject *msg = aJson.parse(&serial_stream);
    processMessage(msg);
    aJson.deleteItem(msg);
  }
}
void checkIn() {
  if (!client.connected()) {
    Serial.println("connection fiald");   
    client.stop();
    client.connect(server, port);
    Serial.println("connecting..."); 
    delay(10000);
  }
  else{
    Serial.println("connection success"); 
    client.print("{\"M\":\"checkin\",\"ID\":\"");
    client.print(DEVICEID);
    client.print("\",\"K\":\"");
    client.print(APIKEY);
    client.println("\"}");
    lastCheckInTime = millis();
    Serial.println("check in OK!");    
  }
}
void processMessage(aJsonObject *msg){
  aJsonObject* method = aJson.getObjectItem(msg, "M");
  aJsonObject* content = aJson.getObjectItem(msg, "C");     
  aJsonObject* client_id = aJson.getObjectItem(msg, "ID");  
  char* st = aJson.print(msg);        
  if (st != NULL) {
    Serial.println(st); 
    free(st);
    String M=method->valuestring;
    String C=content->valuestring;
    String F_C_ID=client_id->valuestring;
    if(M=="say" ){
      if(C=="play"){
        digitalWrite(LED, HIGH);
        sayToClient(F_C_ID,"Buzzing!");    
      }else if(C=="stop"){
        digitalWrite(LED, LOW);
        sayToClient(F_C_ID,"Stop Buzzing!");    
      }else{
        sayToClient(F_C_ID,"unknown command!"); 
      }
    }
  } 
  else {
    Serial.println( "wrong");
  }
}
void sayToClient(String client_id, String content){
  client.print("{\"M\":\"say\",\"ID\":\"");
  client.print(client_id);
  client.print("\",\"C\":\"");
  client.print(content);
  client.println("\"}");
  lastCheckInTime = millis();
  Serial.print("say to ");    
  Serial.print(client_id);    
  Serial.print(":");  
  Serial.println(content);    
}