Line notify node MCU เตือนผู้บุกรุก

ผมเขียนโค้ดแจ้งเตือนการบุกรุก ส่ง Line notify ตามรูป พอป้อนอินพุท เตือนเข้าไลน์ยาวตลอดต้องแก้อย่างไรครับ

#include <TridentTD_LineNotify.h>
#define sensor1 D1  
#define sensor2 D2
#define sensor3 D3  
#define sensor4 D4
#define sensor5 D5  
#define sensor6 D6
#define sensor7 D7  
#define sensor8 D8
#define SSID        "xxxx-maintenance"
#define PASSWORD    "6xxxxxxxxx8163"
#define LINE_TOKEN  "F29yqWzvo8Mfvvrha"

int i;
void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println(LINE.getVersion());
  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while(WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(400); }
  Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());
  pinMode(sensor1,INPUT_PULLUP);  
  pinMode(sensor2,INPUT_PULLUP); 
  pinMode(sensor3,INPUT_PULLUP);  
  pinMode(sensor4,INPUT_PULLUP);
  pinMode(sensor5,INPUT_PULLUP);  
  pinMode(sensor6,INPUT_PULLUP); 
  pinMode(sensor7,INPUT_PULLUP);  
  pinMode(sensor8,INPUT_PULLUP);  
  LINE.setToken(LINE_TOKEN);  
  LINE.notify("System Start Ready");  
}
void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(sensor1)==LOW){
    LINE.notify("พบการบุกรุกจุดที่ 1");
    Serial.println("พบการบุกรุกจุดที่ 1");
    
        delay(5);
      
    }
     if(digitalRead(sensor2)==LOW){
    LINE.notify("พบการบุกรุกจุดที่ 2");  
    Serial.println("พบการบุกรุกจุดที่ 2"); 
    
      delay(5);
      
  }
     }

lock มันด้วย bool ครับให้มันวิ่งผ่าน เงื่อนไขนี้แค่ครั้งเดียว จนกว่าจะ เป็น high เพื่อเคลียร์ค่า รอกลับมาทำใหม่อีกครั้งเมื่อ เป็น low

#include <TridentTD_LineNotify.h>
#define sensor1 D1  
#define sensor2 D2
#define sensor3 D3  
#define sensor4 D4
#define sensor5 D5  
#define sensor6 D6
#define sensor7 D7  
#define sensor8 D8
#define SSID        "xxxx-maintenance"
#define PASSWORD    "6xxxxxxxxx8163"
#define LINE_TOKEN  "F29yqWzvo8Mfvvrha"

int i;
bool lock1 = false;
bool lock2 = false;
void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println(LINE.getVersion());
  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while(WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(400); }
  Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());
  pinMode(sensor1,INPUT_PULLUP);  
  pinMode(sensor2,INPUT_PULLUP); 
  pinMode(sensor3,INPUT_PULLUP);  
  pinMode(sensor4,INPUT_PULLUP);
  pinMode(sensor5,INPUT_PULLUP);  
  pinMode(sensor6,INPUT_PULLUP); 
  pinMode(sensor7,INPUT_PULLUP);  
  pinMode(sensor8,INPUT_PULLUP);  
  LINE.setToken(LINE_TOKEN);  
  LINE.notify("System Start Ready");  
}
void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(sensor1)==LOW){
    if(lock1 == false){
    LINE.notify("พบการบุกรุกจุดที่ 1");
    Serial.println("พบการบุกรุกจุดที่ 1");
    lock1 = true;
    }
        delay(5);
      
    }
    else
    {
      lock1 = false;
    }
    
     if(digitalRead(sensor2)==LOW){
       if(lock2 == false){
    LINE.notify("พบการบุกรุกจุดที่ 2");  
    Serial.println("พบการบุกรุกจุดที่ 2"); 
    lock2 = true;
       }
      delay(5);
      
  }else{
    lock2 = false;
  }
     }

1 Likes

อยากให้ต่ออินพุทส่งไลน์ 1ครั้ง ถึงจะต่อไว้ตลอด และเวลาปลดอินพุท ให้ส่ง ไม่ผู้บุกรุกแล้ว ขอคำแนะนำด้วยครับ

ลองดูที่แนะนำไปครับ

ขอบคุณครับ :heart_eyes: ลองแล้วได้ผลสำเร็จครับ กดไลค์ให้ตรงไหนครับ

image

เลือกเป็นคำตอบที่ถูกให้ด้วยนะครับ

image

1 Likes

ผมทำเพิ่มเป็น 8 อินพุทแล้วแต่ใช้งานได้แค่ 7 D8 ไม่ทำงานครับ MCU เสียไหมครับแบบนี้

#include <TridentTD_LineNotify.h>
#define sensor1 D1  
#define sensor2 D2
#define sensor3 D3  
#define sensor4 D4
#define sensor5 D5  
#define sensor6 D6
#define sensor7 D7  
#define sensor8 D8
#define SSID        "xxxxxx-maintenance"
#define PASSWORD    "62668163"
#define LINE_TOKEN  "F29yqWC9FZ6fvvrha"

int i;
bool lock1 = false;
bool lock2 = false;
bool lock3 = false;
bool lock4 = false;
bool lock5 = false;
bool lock6 = false;
bool lock7 = false;
bool lock8 = false;
void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println(LINE.getVersion());
  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while(WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(400); }
  Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());
  pinMode(sensor1,INPUT_PULLUP);  
  pinMode(sensor2,INPUT_PULLUP); 
  pinMode(sensor3,INPUT_PULLUP);  
  pinMode(sensor4,INPUT_PULLUP);
  pinMode(sensor5,INPUT_PULLUP);  
  pinMode(sensor6,INPUT_PULLUP); 
  pinMode(sensor7,INPUT_PULLUP);  
  pinMode(sensor8,INPUT_PULLUP);  
  LINE.setToken(LINE_TOKEN);  
  LINE.notify("System Start Ready");  
}
void loop() {
  
  if(digitalRead(sensor1)==LOW){
    if(lock1 == false){
    LINE.notify("พบการบุกรุกจุดที่ 1");
    Serial.println("พบการบุกรุกจุดที่ 1");
    lock1 = true;
    }
        delay(5);
      
    }
    else
    {
      lock1 = false;
    }
    
     if(digitalRead(sensor2)==LOW){
       if(lock2 == false){
    LINE.notify("พบการบุกรุกจุดที่ 2");  
    Serial.println("พบการบุกรุกจุดที่ 2"); 
    lock2 = true;
       }
      delay(5);
      
  }else{
    lock2 = false;
  }
  if(digitalRead(sensor3)==LOW){
    if(lock3 == false){
    LINE.notify("พบการบุกรุกจุดที่ 3");
    Serial.println("พบการบุกรุกจุดที่ 3");
    lock3 = true;
    }
        delay(5);
      
    }
    else
    {
      lock3 = false;
    }
    
     if(digitalRead(sensor4)==LOW){
       if(lock4 == false){
    LINE.notify("พบการบุกรุกจุดที่ 4");  
    Serial.println("พบการบุกรุกจุดที่ 4"); 
    lock4 = true;
       }
      delay(5);
      
  }else{
    lock4 = false;
  }
  if(digitalRead(sensor5)==LOW){
    if(lock5 == false){
    LINE.notify("พบการบุกรุกจุดที่ 5");
    Serial.println("พบการบุกรุกจุดที่ 5");
    lock5 = true;
    }
        delay(5);
      
    }
    else
    {
      lock5 = false;
    }
    
     if(digitalRead(sensor6)==LOW){
       if(lock6 == false){
    LINE.notify("พบการบุกรุกจุดที่ 6");  
    Serial.println("พบการบุกรุกจุดที่ 6"); 
    lock6 = true;
       }
      delay(5);
      
  }else{
    lock6 = false;
  }
  if(digitalRead(sensor7)==LOW){
    if(lock7 == false){
    LINE.notify("พบการบุกรุกจุดที่ 7");
    Serial.println("พบการบุกรุกจุดที่ 7");
    lock7 = true;
    }
        delay(5);
      
    }
    else
    {
      lock7 = false;
    }
    
     if(digitalRead(sensor8)==LOW){
       if(lock8 == false){
    LINE.notify("พบการบุกรุกจุดที่ 8");  
    Serial.println("พบการบุกรุกจุดที่ 8"); 
    lock8 = true;
       }
      delay(5);
      
  }else{
    lock8 = false;
  }
     }

ดูจาก gpio แล้วมันควรจะรับ input ได้ ทุก pin นะครับ ลองสั่ง มันเป็น output ดูว่ามันตอบสนองแบบ on off ไหมเพื่อเช็คว่ามันเสียรึป่าว

1 Likes

ลองย้ายโปรแกรม D8 ไปรับ จาก D9,D10 ใช้งานได้ครับ แต่ D8 ไม่ได้ครับ

ลองบอร์ดอื่นได้ไหม

ไม่ได้ครับทั้ง node mcu v2. v3

สั่ง D8 on off ได้ปกติป่ะครับ

สั่งไฟกระพริบ D8 ได้ปกติครับ

1 Likes

แสดงว่า d8 ไม่สามารถใช้เป็น input ได้ อาจเว้นไว้สำหรับ input ภายในก็เป็นได้ครับ

ตัวบอร์ดไม่ได้เสียอะไร

1 Likes

ต้องการใช้ input ถึง 8 ch เบยหรอครับ

ตามจริงจะเอาไปดูสถานะเครื่องจักครับ ต่อจากขุดความคุม คอนแทครีเลย์ ว่าเครื่องเดิน ก็ส่งข่อความ ว่าเครื่องเดิน แต่พอเครื่องหยุด คอนแทรคจาก ก็ให้ส่งข้อความว่าเครื่องหยุด ครับ ใช้ในขาอินพุทเดียวได้แต้เขียนโค้ดตรงนี้ไม่เป็นครับ มอเตอร์ ห้าตัวก็ใช้แค่ ห้าขาครับ

อ่อ จัดไปครับ สงสัยหรือติดตรงไหนก็ตั้งกระทู้ถามได้เลย ครับ