Blynk ตั้ง Timer ในโหมด auto แต่ขัดกับเงื่อนไขก่อนหน้า

flow-program

ตามแผนผังข้างต้น ต้องการจะให้โหมด Timer รันในทั้ง auto และ manual

  1. Timer 1 On Auto On Mode (open1)

  2. Timer 1 On Manual On Mode (open2)

  3. Timer 1 Off Auto Mode (close1)

  4. Timer 1 Off Manual Off Mode (close2)

ซึ่งในฟังชั่นที่ 4 ข้อ ข้อ 2 - 4 ทำงานได้ปกติแล้ว ติดตรงฟังชั่นที่ 1 คือ

มีเงื่อนไข (auto_on == true) ที่ซ้ำกันอยู่ ระบบ Timer เลยไม่ทำงาน

ภาพหน้าจอ (53)

ภาพหน้าจอ (51)

ภาพหน้าจอ (52)

มีวิธีแก้ไขยังไงบ้างครับ

  1. ต้องเปลี่ยนจาก && เป็น || รึป่าวนะ ผมยังไม่เข้าใจว่าอะไรต้องทำงานก่อนกัน
  2. ทำไม่ต้องเอา auto_on == true ไปดักก่อนเข้า autoMode ()

Timer จะเป็นโหมดย่อย ๆ ในแต่ละโหมด เมื่อเวลา Timer หมดลง ระบบจะกลับขึ้นไปสู่โหมดเดิม

ที่เป็นปัญหาอยู่ตอนนี้ คือ ช่องสีส้ม ที่ติดเงื่อนไขใน autoMode :

autoMode จะทำงานตามเงื่อนไข auto_on = true และค่าของเซ็นเซอร์ คือ

ถ้า <= ค่าที่ตั้งไว้ จะเป็น autoOnMode
ถ้า > ค่าที่ตั้งไว้ จะเป็น autoOffMode

ต้องเอาโค้ตมาดูกันครับ

กระทู้นี้เป็นไงบ้างครับอัพเดทกันหน่อย

image

สรุป เปลี่ยนเป็นแบบนี้แล้วครับ

state 0 = off mode

state 1 = auto mode

state 2 = manual mode

เอา Timer ไปไว้ใน state 0 ซึ่งคือ off mode

เหตุผลที่พยายามจะทำโหมด Timer ให้ทำงานแบบนี้

ก็เพื่อป้องกันไม่ให้ Timer รันในโหมดต่าง ๆ (Auto/Manual)

เพราะบางครั้ง อาจเผลอตั้งเวลา Timer ไว้ แล้วพอหมดเวลา มันจะไม่กลับเข้าไปในโหมดก่อนหน้า…

1 Likes

เยี่ยมครับ ถ้าได้ตามที่ต้องการก็โอเคเลย