โปรเจ็กต์นี้มีทั้งฝั่งเซิร์ฟเวอร์และเว็บแอปพลิเคชันที่ออกแบบมาเพื่อสื่อสารกับอุปกรณ์สมาร์ทวอทช์สำหรับเด็กที่ติดตั้ง GPS tracker รุ่นต่างๆ และเป็นที่รู้จักภายใต้แบรนด์ต่างๆ ตัวอย่างเช่นสามารถทำงานร่วมกับ Q50, Q60, Q80, Q90, Q100, Q360, Q523, Q730, Q750, Q8, GW100, GW100S, GW200, GW200S, GW300, GW300S, GW400S, GW400X, GW500S, GW600S, GW700, GW800, GW900, GW900S, GW1000, GW1000S, EW100, EW100S, EW200, K911, W8, W9, W10, Y3, G36 ผู้รักษาประตูที่ปลอดภัย, DS18, T58, T100, I8, G10, G100, D99, D100, D100S และอื่นๆ อีกมากมาย พูดโดยคร่าวๆ ก็คือ มันเหมือนกับแอปพลิเคชั่นอย่าง SeTracker, FindMyKids และอื่นๆ ข้อแตกต่างที่สำคัญคือข้อมูลส่วนบุคคลทั้งหมด เช่น ผู้ติดต่อ ตำแหน่ง ประวัติการสื่อสาร และอื่นๆ จะกลายเป็นข้อมูลส่วนตัวอย่างแท้จริง เนื่องจากถูกจัดเก็บไว้ในฮาร์ดแวร์ที่ควบคุมโดยผู้ใช้
ปัญหาอีกประการหนึ่งที่ได้รับการแก้ไขคือโมเดลความปลอดภัยของแอปพลิเคชันการสื่อสารและการติดตามสมาร์ทวอทช์สำหรับเด็ก ตามค่าเริ่มต้น บุคคลใดๆ จะสามารถควบคุมอุปกรณ์ได้หากทราบตัวระบุอุปกรณ์ โดยไม่ต้องยืนยันการเป็นเจ้าของอุปกรณ์อีกต่อไป ในทางกลับกันสามารถรับตัวระบุได้อย่างง่ายดายโดยการส่งข้อความไปยังอุปกรณ์หากทราบหมายเลขโทรศัพท์มือถือของอุปกรณ์ แน่นอนว่ามีรหัสผ่าน แต่อุปกรณ์ทั้งหมดมีรหัสผ่านจากโรงงานเหมือนกัน และไม่มีการแจ้งเตือนที่น่ารำคาญให้เปลี่ยน ดังนั้นจึงไม่มีใครทำเช่นนั้น
ในแอปพลิเคชันนี้ มีการนำสถานการณ์ความปลอดภัยต่อไปนี้ไปใช้:
และสุดท้ายแต่ไม่ท้ายสุด ไม่มีค่าใช้จ่ายและมีโฆษณา :)
การสร้างโครงการนั้นง่ายพอ ๆ กัน
docker compose -f docker-builder.yml run --rm builder
ขณะสร้าง ใบรับรอง SSL ที่จำเป็นสำหรับการเชื่อมต่อ https
จะถูกสร้างขึ้น สามารถระบุโดเมนและ/หรือที่อยู่ IP ได้โดยใช้ตัวแปรสภาพแวดล้อม DOMAIN
และ IP
docker compose -f docker-builder.yml run --rm -e DOMAIN=example.com -e IP=123.45.67.89 builder
แอปพลิเคชันสามารถสำรองข้อมูลด้วยฐานข้อมูลที่แตกต่างกันได้ตามที่คุณต้องการ สถานการณ์ที่เบาที่สุดคือการใช้ฐานข้อมูล H2 แบบฝัง ในกรณีนี้สามารถเริ่มแอปพลิเคชันได้ด้วยคำสั่ง
docker compose --profile h2 up -d
นอกจากนี้ยังสามารถใช้ PostreSQL ได้ทั้งแบบคอนเทนเนอร์หรือแบบสแตนด์อโลน ในกรณีแรก คุณสามารถเริ่มแอปพลิเคชันด้วยคำสั่งได้
docker compose --profile pg up -d
ในกรณีหลัง คุณต้องกรอกไฟล์ db.env
ด้วย URL ฐานข้อมูลและข้อมูลประจำตัว จากนั้นรันคำสั่ง
docker compose --profile pg_ext up -d
หากเวอร์ชันการเขียนของคุณไม่รองรับโปรไฟล์ คุณสามารถใช้ไฟล์การเขียนเฉพาะสำหรับแต่ละสถานการณ์ได้
docker compose -f h2.yml up -d
docker compose -f pg.yml up -d
docker compose -f pg_ext.yml up -d
ในกรณีสุดท้าย คุณยังคงต้องกรอกไฟล์ db.env
ด้วย URL ฐานข้อมูลและข้อมูลรับรอง
นอกจากนี้ยังเป็นไปได้ที่จะข้ามขั้นตอนการสร้างที่น่าเบื่อและรันไบนารีที่แนบมาเพื่อรีลีส (ควรติดตั้ง java 8 หรือสูงกว่า)
java -jar kidtracker.jar
ไบนารีได้รับการกำหนดค่าให้ใช้ฐานข้อมูล H2 แบบฝัง โฟลเดอร์สามโฟลเดอร์จะถูกสร้างขึ้นเมื่อเริ่มต้นระบบครั้งแรกในไดเร็กทอรีการทำงาน:
data
ประกอบด้วยบันทึกฐานข้อมูลสำหรับตำแหน่งอุปกรณ์ หมายเลขโทรศัพท์ ฯลฯ วันที่นี้เป็นความลับ ดังนั้นโปรดเก็บไว้อย่างปลอดภัย!logs
อธิบายตัวเองได้เพียงพอ มีบันทึกทั้งสำหรับแอปพลิเคชันเองและสำหรับอุปกรณ์เมื่อการดีบักอุปกรณ์ทำงานอยู่media
โฟลเดอร์นี้ใช้เพื่อแปลงเสียงขาเข้าในรูปแบบ amr เป็น MP3 UI ของเว็บมีอยู่ใน https://<hostname>:8003
หากต้องการเข้าสู่ระบบ ให้ใช้ข้อมูลรับรองเริ่มต้น admin
/ password
หากต้องการกำหนดอุปกรณ์ให้กับผู้ใช้ที่ลงทะเบียนกับแอปพลิเคชัน แอปพลิเคชันควรพร้อมใช้งานจากเครือข่ายสาธารณะ นั่นคือ ควรมีที่อยู่ IP สาธารณะ และอาจเป็นชื่อโดเมนที่เกี่ยวข้อง ตามค่าเริ่มต้น แอปพลิเคชันจะรับฟังอุปกรณ์บนพอร์ต 8001
สมมติว่าพอร์ตเดียวกันนั้นถูกแมปกับเครือข่ายสาธารณะ จากนั้นข้อความต่อไปนี้ที่ส่งไปยังอุปกรณ์ทำให้อุปกรณ์เริ่มเชื่อมต่อกับแอปพลิเคชัน:
pw,123456,ip,<public IP address or domain>,8001#
ที่นี่ 123456
คือรหัสผ่านเริ่มต้น ซึ่งส่วนใหญ่น่าจะตั้งไว้ในอุปกรณ์ รหัสผ่านเริ่มต้นอื่นๆ ที่รู้จักคือ 523681
, 54321
และ 654321
อย่างไรก็ตาม หากรหัสผ่านถูกเปลี่ยน ควรใช้รหัสผ่านใหม่แทนรหัสผ่านเริ่มต้น
ขอแนะนำอย่างยิ่งให้เปลี่ยนรหัสผ่านเริ่มต้น!
จากนั้นคลิกปุ่มทางด้านขวาของแถบนำทาง จากนั้นคลิกปุ่มที่ส่วนท้าย จำเป็นต้องมีตัวระบุอุปกรณ์จึงจะกำหนดอุปกรณ์ได้ เมื่ออุปกรณ์เชื่อมต่อกับแอปพลิเคชันแล้ว โทเค็นการยืนยันสี่หลักจะถูกส่งไปยังอุปกรณ์ เพื่อยืนยันว่าผู้ใช้เป็นเจ้าของอุปกรณ์ ควรป้อนโทเค็นนี้ลงในแบบฟอร์มป๊อปอัปในช่วง 5 นาทีถัดไป หลังจากที่โทเค็นเวลานั้นหมดอายุ
ผู้ใช้ที่ลงทะเบียนกับแอปพลิเคชันอาจเป็นผู้ใช้ทั่วไปหรือผู้ดูแลระบบก็ได้ ผู้ดูแลระบบสามารถลงทะเบียนผู้ใช้รายอื่นได้ ในขณะที่ผู้ใช้ทั่วไปไม่สามารถทำได้ นี่เป็นข้อแตกต่างเพียงอย่างเดียว ผู้ดูแลระบบสามารถสร้างทั้งผู้ใช้ทั่วไปและผู้ดูแลระบบรายอื่น สำหรับผู้ใช้ที่มีอยู่ สิทธิ์ของผู้ดูแลระบบไม่สามารถให้หรือเพิกถอนได้ วิธีเดียวที่จะแก้ไขได้คือการลบบัญชีผู้ใช้ออก และสร้างใหม่อีกครั้ง
ด้วยเหตุผลด้านความปลอดภัย หมายเลขโทรศัพท์มือถือของผู้ใช้จึงไม่สามารถแก้ไขได้เช่นกัน อีกครั้ง หากต้องการเปลี่ยนบัญชีผู้ใช้จะต้องถูกลบและสร้างใหม่ หากต้องการลบบัญชีผู้ใช้ อุปกรณ์ทั้งหมดจะต้องถูกยกเลิกการกำหนดจากบัญชีนั้น
เมื่อเรียกใช้เป็นครั้งแรก จะมีบัญชีผู้ใช้เริ่มต้นที่มีสิทธิ์ผู้ดูแลระบบพร้อมล็อกอิน admin
ระบบและ password
ผ่าน รหัสผ่าน ขอแนะนำให้ลบบัญชีนี้ออกเมื่อมีการสร้างบัญชีผู้ใช้อื่น หรือเปลี่ยนรหัสผ่านเริ่มต้น หากมีบัญชีเดียวที่มีสิทธิ์ของผู้ดูแลระบบ จะไม่สามารถลบออกได้ บัญชีผู้ดูแลระบบเริ่มต้นไม่มีหมายเลขโทรศัพท์มือถือที่ถูกต้อง และไม่มีอุปกรณ์ใดสามารถกำหนดได้
อุปกรณ์สื่อสารกับแอปพลิเคชันผ่านข้อความ มีข้อความหลายประเภท บางประเภทสามารถให้ข้อมูลเกี่ยวกับตำแหน่งของอุปกรณ์และการเตือน บางประเภทประกอบด้วยการชาร์จแบตเตอรี่จริงและค่ามาตรวัดจำนวนก้าว
แอปพลิเคชันยังสามารถส่งข้อความบางข้อความไปยังอุปกรณ์เพื่อให้ดำเนินการหลายอย่างหรือแก้ไขการตั้งค่าได้ เพื่อให้แน่ใจว่าอุปกรณ์ได้รับข้อความ อุปกรณ์จะส่งข้อความยืนยันกลับไปยังแอปพลิเคชัน ในขณะที่รอข้อความยืนยัน UI ยังคงถูกบล็อก หากไม่ได้รับการยืนยันภายใน 10 วินาที (สามารถกำหนดค่าได้) ข้อความเริ่มต้นจะถือว่าไม่ได้รับการยืนยัน
เครื่องหมายระบุตำแหน่งของอุปกรณ์ที่กำหนดทั้งหมดพร้อมกับเครื่องหมายระบุตำแหน่งของผู้ใช้จะแชร์แผนที่เดียวกัน เครื่องหมายอุปกรณ์ประกอบด้วยข้อมูลเกี่ยวกับเวลาของตำแหน่งที่ทราบล่าสุด การชาร์จแบตเตอรี่ ค่าเครื่องนับก้าว และในที่สุดการแจ้งเตือนการปิดอุปกรณ์ การแจ้งเตือนแบตเตอรี่เหลือน้อย การแจ้งเตือนการเชื่อมต่อขาดหาย และการแจ้งเตือนตำแหน่งที่ล้าสมัย อุปกรณ์จะถือว่าสูญหายหากได้รับข้อความล่าสุดจากอุปกรณ์เกิน 15 นาทีที่แล้ว
อุปกรณ์สามารถระบุตำแหน่งจริงได้ โดยอิงตามข้อมูล GPS โดยตรง เมื่อพร้อมใช้งาน เช่นเดียวกับตำแหน่งที่ตรวจพบล่าสุด เมื่อไม่สามารถสังเกต GPS โดยตรงได้ ส่วนใหญ่ภายในอาคารหรือในที่ที่มีสัญญาณรบกวนแม่เหล็กไฟฟ้า ในกรณีเช่นนี้ ข้อมูล GPS
ถือว่าล้าสมัย เมื่อข้อมูลตำแหน่งที่ได้รับล้าสมัย ระบบจะแสดงการแจ้งเตือนข้อมูลที่ล้าสมัย
โปรดสังเกตว่าการแจ้งเตือนแบตเตอรี่เหลือน้อย และค่าการชาร์จจริงจะมีข้อความประเภทต่างๆ กัน ข้อความที่คิดค่าบริการตามจริงจะมาบ่อยกว่าข้อความที่มีตำแหน่งและการเตือนซึ่งไม่สามารถส่งได้หลายชั่วโมง ดังนั้นจึงไม่ใช่เรื่องแปลกที่เครื่องหมายจะแสดงประจุแบตเตอรี่ 100% พร้อมการแจ้งเตือนแบตเตอรี่เหลือน้อย ในกรณีนี้ ลำดับความสำคัญคือค่าตัวเลขของการชาร์จแบตเตอรี่ และการแจ้งเตือนแบตเตอรี่ต่ำสามารถละเว้นได้
อุปกรณ์ส่งข้อความแจ้งเตือนเมื่อกดปุ่ม SOS ในกรณีนี้ เครื่องหมายอุปกรณ์จะกลายเป็นสีแดง และเสียงไซเรนจะเล่นจนกว่าจะคลิกเครื่องหมาย เครื่องหมายคลิกผลลัพธ์โดยย้ายไปด้านบนและสลับการเลือกเด็ก เมื่อสลับการเลือกเด็ก เครื่องหมายอุปกรณ์ที่เลือกจะอยู่ด้านบน
อุปกรณ์สามารถส่งข้อความเสียงและสแนปชอต (หากติดตั้งกล้อง) ไปยังแอปพลิเคชัน เมื่อมีข้อความใหม่ประเภทนี้มาถึง เครื่องหมายอุปกรณ์จะกลายเป็นสีน้ำเงิน และเสียงกริ่งโทรศัพท์แบบโบราณจะเล่นจนกว่าจะคลิกเครื่องหมาย เช่นเดียวกับในกรณีของสัญญาณเตือน การคลิกเครื่องหมายผลลัพธ์จะย้ายไปด้านบนและสลับการเลือกเด็ก
สามารถคลิกได้ทุกที่ในการประทับเวลา UI และด้วยการคลิกเพียงครั้งเดียวก็สามารถสลับไปมาระหว่างค่าวันที่และเวลาที่แน่นอนและช่วงเวลานับจากนี้
มีสองไอคอนซึ่งมีสองสถานะคือเติมและต่อสาย อันแรกจะถูกเติมเมื่อมุมมองแผนที่ตามเครื่องหมายอุปกรณ์ที่เลือก สถานะสามารถสลับได้โดยคลิกที่มัน อีกอันหนึ่งจะเต็มเมื่อมุมมองแผนที่ตามเครื่องหมายตำแหน่งของผู้ใช้ สถานะสามารถสลับได้โดยคลิกที่มัน เมื่อไอคอนหนึ่งเต็ม ไอคอนอื่นจะกลายเป็นแบบมีสายและในทางกลับกัน ไอคอนทั้งสองจะเชื่อมต่อกันเมื่อลากแผนที่
โดยคลิกคำสั่งเพื่อปลุก GPS และระบุตำแหน่งปัจจุบันที่จะถูกส่งไปยังอุปกรณ์ มุมมองแผนที่เริ่มต้นตามเครื่องหมายอุปกรณ์ ไอคอนอุปกรณ์ติดตามจะเต็ม
การแชทกับอุปกรณ์ไม่สมมาตร ข้อความแชทสามารถส่งข้อความไปยังอุปกรณ์ด้วยปุ่ม ในขณะที่อุปกรณ์สามารถส่งข้อความเสียงสั้นๆ ได้ และหากอุปกรณ์มีกล้อง ก็จะสามารถถ่ายภาพสแนปช็อตได้ อุปกรณ์ยังสามารถบังคับให้ถ่ายภาพด้วยปุ่มหรือบันทึกเสียง 15 วินาทีด้วยปุ่มได้
กล่องโต้ตอบประวัติช่วยให้สามารถเลือกช่วงเวลาได้ในสองโหมด ได้แก่ วันที่ตั้งแต่เที่ยงคืนหนึ่งไปยังอีกโหมดหนึ่ง และโหมดทั่วไปซึ่งผู้ใช้สามารถเลือกทั้งจุดเริ่มต้นและจุดสิ้นสุดของช่วงเวลาได้ หากต้องการสลับระหว่างโหมดต่างๆ ให้คลิกที่ป้ายกำกับตัวเลือกวันที่และเวลา
เมื่อเลือกช่วงเวลา จะสามารถแสดงประวัติการแชท หรือกราฟจำนวนก้าวและประจุแบตเตอรี่ได้ แทร็กอุปกรณ์สำหรับช่วงเวลาที่เลือกสามารถวางบนแผนที่ได้เช่นกัน แถบเลื่อนจะปรากฏที่มุมบนขวา ใช้เพื่อเลื่อนเครื่องหมายอุปกรณ์ไปตามแทร็ก เมื่อตรวจสอบแทร็กประวัติ ไอคอนกล่องโต้ตอบประวัติจะเปลี่ยนเป็น หากต้องการลบแทร็กและกลับสู่ตำแหน่งเครื่องหมายออนไลน์ ให้คลิกที่แทร็กนั้น
กล่องโต้ตอบรายชื่อช่วยให้แก้ไขผู้ดูแลระบบอุปกรณ์หลักและรอง หมายเลข SOS รายชื่อติดต่อในอุปกรณ์ หมายเลขที่อนุญาตให้โทรไปยังอุปกรณ์ และหมายเลขโทรด่วนที่กำหนดให้กับปุ่มอุปกรณ์ สำหรับหมวดหมู่การติดต่อทั้งหมด มีจำนวนช่องที่แน่นอนที่สามารถกรอกได้ ตามค่าเริ่มต้น ช่องที่ว่างจะถูกซ่อนไว้ แต่สามารถแสดงได้โดยการคลิกที่ปุ่มที่ส่วนท้ายของกล่องโต้ตอบ
กล่องโต้ตอบสำหรับเด็กอนุญาตให้ผู้ใช้กำหนดและยกเลิกการมอบหมายอุปกรณ์สำหรับเด็ก เปลี่ยนนิ้วหัวแม่มือ และรับข้อมูลทั่วไปเกี่ยวกับอุปกรณ์และสถานะที่แท้จริงของอุปกรณ์ ในคอลัมน์ด้านซ้ายมือ จะมีการวางนิ้วหัวแม่มือที่คลิกได้ การคลิกจะส่งผลให้กล่องโต้ตอบแก้ไขเด็ก ในคอลัมน์กลางจะมีตัวระบุอุปกรณ์ หากอุปกรณ์ออนไลน์อยู่ ตัวระบุจะเป็นสีเขียว มิฉะนั้นจะเป็นสีแดง ด้านล่างตัวระบุอุปกรณ์เป็นเวลาที่ได้รับข้อความล่าสุดจากอุปกรณ์ ผู้ใช้ทุกคนที่สามารถเข้าถึงอุปกรณ์ได้จะแสดงรายการอยู่ที่คอลัมน์ขวาสุดพร้อมกับโทรศัพท์มือถือของตน