Maritime Data Server เป็นเซิร์ฟเวอร์ข้อมูลกลาง (คลาวด์) สำหรับข้อมูลทางทะเล มันเก็บข้อมูลที่มาจาก ExpaPle MDC (MARITIME DATA COLLECTOR หรือ LORA-BOOTMONITOR หรืออุปกรณ์อื่น ๆ ) ลงในฐานข้อมูลและให้ GUI แก่ผู้ใช้เพื่อแสดงข้อมูลและกำหนดค่าบางอย่าง
แนวคิดเริ่มต้นคือการมีความเป็นไปได้ที่จะเห็นข้อมูลทางทะเลบางอย่าง (อุณหภูมิแรงดันไฟฟ้าของแบตเตอรี่สัญญาณเตือนท้องเรือ) ในขณะที่คุณไม่ได้อยู่บนเรือ
MDC เป็นบอร์ดขนาดเล็กที่มี ESP32 และเซ็นเซอร์ไม่กี่ตัวที่รวบรวมข้อมูลเซ็นเซอร์และถ่ายโอนข้อมูลเหล่านี้ไปยัง MDS คุณจะพบเอกสาร MDC ภายใต้ https://github.com/bytecrusher/maritimedatacollectorsmall
เซิร์ฟเวอร์ข้อมูลทางทะเล เป็นเว็บแอปพลิเคชันเพื่อจัดเก็บข้อมูลและแสดงข้อมูลสำหรับผู้ใช้ มัน requres ฐานข้อมูล MySQL สำหรับการจัดเก็บข้อมูลและเว็บเซิร์ฟเวอร์ด้วยการสนับสนุน PHP เพื่อแสดงข้อมูลด้วยข้อมูล MDS สามารถแสดงข้อมูลจากเซ็นเซอร์ในกราฟ/เกจหรือแผนภูมิ นอกจากนี้ยังเป็นไปได้ที่จะกำหนดค่าบอร์ดและเซ็นเซอร์ของคุณ
เซิร์ฟเวอร์ถูกจัดระเบียบในแบ็กเอนด์ (API สำหรับการรับข้อมูลจาก Collector และ TTN ส่งอีเมล) และส่วนหน้าสำหรับการแสดงข้อมูลในเบราว์เซอร์ผู้ใช้
แบ็กเอนด์เก็บข้อมูลลงในฐานข้อมูล นอกจากนี้ยังตรวจสอบว่าข้อมูลนั้นถูกต้องหรือไม่และบอร์ดและเซ็นเซอร์มีอยู่ใน DB มิฉะนั้นจะมีการสร้างบันทึก DB ใหม่
สำหรับส่วนหน้าผู้ใช้จำเป็นต้องเข้าสู่ระบบ ตอนนี้ผู้ใช้สามารถทำการกำหนดค่าหรือแสดงข้อมูลบางอย่าง
คัดลอกไฟล์ MDS ทั้งหมดจากโฟลเดอร์ "SRC" ลงใน HTDOCS DIR ของคุณ สร้างฐานข้อมูลใหม่ (พร้อม phpmyadmin) และสร้างผู้ใช้ใหม่ที่มีสิทธิ์เขียนลงในฐานข้อมูลนี้ เปิด http: //yourdomain/maritimedataserver/install/index.php ในเบราว์เซอร์ของคุณและก้าวผ่านขั้นตอนการติดตั้ง หลังจากการติดตั้งเสร็จสิ้นแล้วให้ลบ DIR ชื่อ "ติดตั้ง" (ด้วยเหตุผลด้านความปลอดภัย)
ตอนนี้ MDS มีอยู่ภายใต้ http: // yourdomain/maritimedataserver



สำหรับการเรียกใช้ MDS คุณต้องใช้เว็บเซิร์ฟเวอร์ (Apache) พร้อมการสนับสนุน PHP และ MySQL DB
หากคุณเรียกใช้ MDC นอกเครือข่ายท้องถิ่นของเรา MDS ของคุณจะต้องเป็นสาธารณะ (TTN ควรจะสามารถเข้าถึงเซิร์ฟเวอร์นี้ได้)
เพื่อการพัฒนาฉันใช้โซลูชั่นที่แตกต่างกัน ก่อนอื่นคือคอนเทนเนอร์ Docker ท้องถิ่นที่ทำงานบนคอมพิวเตอร์การเข้ารหัสของฉัน ประการที่สองฉันมีบนเว็บโฮสต์ของโดเมนย่อยซึ่งดึงสาขา "การพัฒนา" ของฉันจาก Guthub ที่นั่น
######## วิธีแรกของฉันคลื่นลูกแรก: ฉันตั้งค่า 4 คอนเทนเนอร์ (หนึ่งสำหรับแต่ละบริการ):
ฉันกำหนดค่า VSC ของฉันให้ทำงานโดยตรงในโฟลเดอร์ HTDOCS ถ้า Apache ดังนั้นจึงไม่จำเป็นต้องใช้ไฟล์ด้วยตนเอง
คลื่นลูกที่สอง: ในโดเมนย่อย webhosting ของฉันฉันตั้งค่าการตอบสนองของฉันดังนั้นฉันจึงสามารถเรียกใช้คำขอดึงจากแผง Plesk และมีสาขาการพัฒนาล่าสุดบนเว็บสเปซ
สำหรับการดีบัก PHP ฉันใช้ xdebug การกำหนดค่าใน MAMP ทำใน **/applications/xampp/xamppfiles/etc/php.ini และรูปลักษณ์:
[xdebug]
zend_extension = "/usr/local/cellar/php/8.1.1/pecl/20210902/xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = "9000"
ใน Firefox ฉันใช้ "XDEBUG HELPER" (รหัส IDE: VSCODE)
ใน Safari ฉันใช้ "xdebugtoggleextension 1.2"
สำหรับการดีบักคุณต้องไปที่ "Ausführen" - "Debugger Starte" และปุ่มเล่นสีเขียว (F5)
เนื่องจากเซ็นเซอร์ประเภทต่าง ๆ และพยายามลดปริมาณข้อมูลที่ถ่ายโอนผ่าน WiFi (และ LORA ในภายหลัง) เป็นความคิดที่ดีที่จะมีสคีมาสำหรับเซ็นเซอร์ในการถ่ายโอนข้อมูล นอกจากนี้ยังไม่จำเป็นต้องส่งชื่อของมูลค่า
หากค่าทั้งหมดส่งมอบตามลำดับที่ถูกต้องจะชัดเจนว่าค่าใด
สคีมา #: 1
ชื่อ: ds18b20
Deschription: Tempsensor
NR ของเซ็นเซอร์ (ที่เชื่อมต่อ): 1
จำนวนค่า: 1
ชื่อของค่า: #1 อุณหภูมิ
ประเภทของค่า: #1 uint8 (?)
สคีมา #: 2
ชื่อ: DS2438
Deschription: Batteriemonitor
NR ของเซ็นเซอร์ (ที่เชื่อมต่อ): 1
จำนวนค่า: 4
ชื่อของค่า: #1 CH1 แรงดันไฟฟ้า, 2 #CH1 ปัจจุบัน, #3 CH2 แรงดันไฟฟ้า, #4 CH2 ปัจจุบัน
ประเภทของค่า: #1 uint8 (?), #2 uint8 (?), #3 uint8 (?), #4 uint8 (?)
สคีมา #: 3
ชื่อ: DHT11
Deschription: Tempsensor & ความชื้น
NR ของเซ็นเซอร์ (ที่เชื่อมต่อ): 1
จำนวนค่า: 2
ชื่อของค่า: #1 อุณหภูมิ #2 ความชื้น
ประเภทของค่า: #1 uint8 (?), #2 uint8 (?)
สคีมา #: 4
ชื่อ: อินพุตดิจิตอล
Deschription: อินพุตดิจิตอล
NR ของเซ็นเซอร์ (ที่เชื่อมต่อ): 1
จำนวนค่า: 1
ชื่อของค่า: #1 อินพุตดิจิตอล
ประเภทของค่า: #1 bool (?)
สคีมา #: 5
ชื่อ: GPS
Deschription: ข้อมูลจากตัวรับสัญญาณ GPS
NR ของเซ็นเซอร์ (ที่เชื่อมต่อ): 1
จำนวนค่า: 4
ชื่อของค่า: #1 ละติจูด #2 ลองจิจูด #3 หลักสูตร #4 ความเร็ว
ประเภทของค่า: #1 uint8 (?), #2 uint8 (?), #3 uint8 (?), #4 uint8 (?)