?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | IFTTT를 이용한 후면승객알림서비스

페이지 정보

작성자 김기홍 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일18-11-20 00:35 조회209회 댓글2건

본문

후면승객알림서비스를 만들고있는데 몇일동안 고민해봐도 쉽게 풀리지가 않아 질문을 드려봅니다.
운전자가 멀어지면서 와이파이가 끊기면 센서가 동작해 핸드폰으로 문자를 보내게 하려고합니다.
현재 완성한 부분은 와이파이연결시 iffft를 이용한 핸드폰으로 문자보내기,센서작동은 끝마친 상황입니다.
문제는 이 두 소스를 합치는것과 와이파이가끊기면 메시지를 보낼수없는데 어떻게 보내야 하는가입니다.
소스부분은  루프부분에서 client오류가 나는데 고쳐지지가 않습니다.
와이파이는 포트포워딩을 이용하면 할 수 있을것 같은데 어떻게 생각하시나요
소스 첨부해보겠습니다.
int sensor = D6;        // 적외선장애물 감지센서 핀번호 선언

int piezo = D5;          // 피에조 부저 톤 조절을 위해 9번 핀 사용

int val;

 

void setup()

{

  // 적외선센서의 핀을 INPUT모드로 선언

    pinMode(sensor,INPUT);

  // 9번피에조 핀을 OUTPUT모드로 선언

    pinMode(piezo,OUTPUT);

}

 

void loop()

{

int val=digitalRead(sensor); // 센서값 입력을 받는다

if (val == HIGH) //물체가 접근하면

{

    digitalWrite(piezo, LOW); //피에조 동작

    delay(500);

}

else // 그렇지 않으면

{

  digitalWrite(piezo, HIGH); // 동작하지 않는다

}

}

이것과

 

#include <ESP8266WiFi.h>

#include <WiFiClientSecure.h>

 

const char* ssid = "";

const char* password = "";

 

const char* host = "maker.ifttt.com";

const int httpsPort = 443;

 

 

 

void setup() {

  Serial.begin(9600);

  Serial.println();

  Serial.print("connecting to ");

  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("WiFi connected");

  Serial.println("IP address: ");

  Serial.println(WiFi.localIP());

 

  WiFiClientSecure client;

  Serial.print("connecting to ");

  Serial.println(host);

  if (!client.connect(host, httpsPort)) {

    Serial.println("connection failed");

    return;

  }

 

 

 

  String url = "/trigger/ESP/with/key";

  Serial.print("requesting URL: ");

  Serial.println(url);

 

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +

              "Host: " + host + "\r\n" +

              "User-Agent: BuildFailureDetectorESP8266\r\n" +

              "Connection: close\r\n\r\n");

 

  Serial.println("request sent");

  while (client.connected()) {

    String line = client.readStringUntil('\n');

    if (line == "\r") {

      Serial.println("headers received");

      break;

    }

  }

  String line = client.readStringUntil('\n');

 

  Serial.println("reply was:");

  Serial.println("==========");

  Serial.println(line);

  Serial.println("==========");

  Serial.println("closing connection");

}

 

void loop() {

}

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

WiFi 연결이 끊겼을 때 callback 이 호출되도록 설정되어야 하는데 그 부분이 안보이네요. WiFi 연결 상태를 감지하는 코드가 loop() 안에서 돌고, WiFi 연결이 끊기면 특정 작업을 하고, 다시 연결되도록 재시도하는 루틴이 들어가야 할 것 같습니다.

김기홍님의 댓글

김기홍 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

센서1번이 동작하면 센서가 작동, 센서가 작동하면 피에조 부저가 울리게하려는데
센서를 거치는 과정 없이 센서1번 동작후 피에조 부저가 바로울립니다.
제대로 한것같은데 뭐가 틀린건지 알고싶습니다.
void loop()
{
int s2_val = 0;
int s1_val = digitalRead(sensor1);

if (s1_val == HIGH)
{
s2_val = digitalRead(sensor);

if(s2_val == HIGH)
{
digitalWrite(piezo, LOW);

delay(500);
}
else
{
digitalWrite(piezo, HIGH);
}
}
}