#import "@preview/fletcher:0.5.8" as fletcher: diagram, edge, node #import fletcher.shapes: circle, diamond, pill #diagram( node-stroke: 1pt, spacing: 2em, node([เริ่มต้น], shape: pill), edge("-|>"), node((1, 0), [ตั้งค่า LittleFS]), edge("-|>"), node((1, 2), [มี Wi-Fi บันทึก\ ไว้อยู่หรือไม่], shape: diamond), edge("l", "-|>", [ไม่มี]), edge((1, 2), (1, 3), "-|>", [มี]), node((0, 2), [รอรับรายละเอียดเครือข่าย\ (ESP-Touch)]), edge("d,r", "-|>"), node((1, 3), [เชื่อมต่อเครือข่าย]), edge("-|>"), node((0, 3.5), [ตั้งค่าเซิร์ฟเวอร์ HTTPS]), edge("-|>"), node((0, 5), [มีอุปกรณ์ควบคุม\ หลักแล้วหรือไม่], shape: diamond), edge("-|>", [ไม่มี]), edge("d", "-|>", [มี]), node((1, 4), [สร้างโทเค็นสำหรับการยืนยัน\ อุปกรณ์ควบคุมหลัก]), edge("-|>"), node((1, 5), [รออุปกรณ์ควบคุมหลัก\ ติดต่อกับอุปกรณ์]), edge("-|>"), node((0, 6), shape: circle, radius: 1em), edge("-|>"), node((0, 7), [มีการแตะเซนเซอร์\ NFC ขาเข้าหรือไม่], shape: diamond), edge("-|>", [ไม่มี]), node((0, 9), [มีคนผ่านเซนเซอร์ PIR\ โดยไม่ได้รับอนุญาตหรือไม่], shape: diamond), edge((0, 9), (0, 10), [ไม่มี]), edge((0, 7), (1, 6), "-|>", [มี]), node((1, 6), [อยู่ในโหมดลงทะเบียน\ หรือไม่], shape: diamond), edge("-|>", [ใช่]), edge((1, 6), (2, 7), [ไม่]), node((1, 7), [นำ ID อุปกรณ์เข้า\ สู่รายการทะเบียน]), edge((1, 7), (0.6, 7), (0, 9), "-|>"), node((2, 7), [ID ของอุปกรณ์อยู่\ ในทะเบียนหรือไม่], shape: diamond), edge("-|>", [อยู่]), edge((2, 7), (1, 8), "-|>", [ไม่อยู่], label-sep: -5pt), node((2, 8), [ส่งเสียงคอนเฟิร์ม]), edge((2, 8), (2, 8.5), (0.4, 8.5), (0, 9), "-|>"), node((1, 8), [ส่งเสียงแสดงความผิดพลาด]), edge((1, 8), (0.5, 8), (0, 9), "-|>"), node((1, 9), [แจ้งเตือนทางเสียง\ และแอปพลิเคชัน]), edge((1, 9), (0, 10), "-|>"), edge((0, 10), (1, 10), "-|>", [มี]), node((0, 10), [มีคำขอ HTTPS\ ใหม่หรือไม่], shape: diamond), edge((0, 10), (-2, 10), "-|>", [ไม่มี], label-pos: 10%), edge((0, 9), (1, 9), "-|>", [มี], label-anchor: "center", label-sep: -8pt), node((1, 10), [ประมวลผลคำขอ HTTPS]), edge((1, 10), (1, 11), (-2, 11), (-2, 10), "-|>"), node((-2, 10), shape: circle, radius: 1em), edge((-2, 10), (-2, 6), (0, 6), "-|>"), )