ESP8266 ไม่มีเว็บเพจ


9

ฉันสามารถส่งข้อมูลไปยัง ESP8266 โดยไม่ต้องสร้างเว็บเซิร์ฟเวอร์ได้หรือไม่

ฉันกำลังใช้พิน GPIO ของ ESP8266 ผ่านทางเว็บเซิร์ฟเวอร์ ตอนนี้ฉันต้องการสร้างแอพ Android สำหรับสิ่งนั้น ดังนั้นฉันต้องการส่งข้อมูลไปที่ 8266 โดยไม่ต้องสร้างเว็บเซิร์ฟเวอร์ - เป็นไปได้หรือไม่


เมื่อใช้แอพ Android คุณจะอยู่ในเครือข่ายเดียวกันหรือไม่
Rohan

คำตอบ:


8

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

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

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

เช่นแทนที่จะเชื่อมต่อลูกค้าและทำสิ่งที่ต้องการ

GET /index.html HTTP/1.1

มันอาจพูด

GET /gpio/15/value HTTP/1.1

ที่ที่ URL อ้างถึงไม่ใช่เอกสารเฉพาะ แต่เป็นข้อมูลบางส่วนในอุปกรณ์ที่คุณต้องการเข้าถึง คุณสามารถทำสิ่งที่คล้ายกันสำหรับPOST, PATCH, DELETEคำขอ ฯลฯ

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

GET /gpio/15/value HTTP/1.1

อาจทำให้เกิดการตอบสนองเช่น

{"gpio": 15, "direction": "in", "value": 0}

ในทำนองเดียวกันคุณสามารถสร้างจุดปลายทางที่ลูกค้าของคุณอาจตั้ง GPIO โดยพูด

POST /gpio/15 HTTP/1.1
{"direction": "out", "value": 1}

ในระดับหนึ่งจะมีคำถามเฉพาะเกี่ยวกับความหมายหรือการนำไปใช้งานหากโปรแกรมที่ตอบแบบสอบถามนั้นเป็น "เว็บเซิร์ฟเวอร์" - อาจเป็นเว็บเซิร์ฟเวอร์ที่ใช้งานตัวช่วยต่างๆเพื่อจัดการกับข้อมูลและ gpios (เท่าที่เซิร์ฟเวอร์แสดงหน้าเว็บแบบไดนามิก สร้างเนื้อหาบางส่วนจากการสืบค้นฐานข้อมูล) หรืออาจเป็นโปรแกรมเฉพาะที่เกี่ยวข้องกับข้อมูลและรู้วิธีพูดคุย HTTP

และแน่นอนว่าการใช้ HTTP เพื่อแลกเปลี่ยน JSON payloads เป็นเพียงหนึ่งในหลาย ๆ วิธีในการทำสิ่งต่าง ๆ - มันเพิ่งจะได้รับความนิยมในปัจจุบันซึ่งใช้แนวคิดเว็บเซิร์ฟเวอร์ที่เหมือนกันอีกครั้งและในระดับหนึ่งอาจอนุญาตให้ใช้เว็บเบราว์เซอร์ สำหรับการทดสอบ


นอกจากนี้ยังควรคำนึงว่าโครงการดังกล่าวมีแนวโน้มที่จะทำงานได้ดีที่สุดในพื้นที่เมื่อโทรศัพท์และ ESP8266 เป็นลูกค้าของเครือข่าย WiFi ในบ้านเดียวกัน หากโทรศัพท์ไม่ใช่ "ที่บ้าน" หรือเป็น แต่อยู่ในเครือข่ายมือถือเท่านั้นการอนุญาตให้โทรศัพท์ไปถึง ESP8266 อาจหมายถึงการอนุญาตคำขอภายนอกเข้าสู่เครือข่ายภายในบ้านสิ่งที่ควรหลีกเลี่ยง ในกรณีนี้มันค่อนข้างเป็นที่นิยมในการใช้โปรโตคอลที่ทั้งอุปกรณ์ ESP8266 และโทรศัพท์ติดต่อกับเซิร์ฟเวอร์รีเลย์ภายนอกซึ่งส่งข้อความระหว่างกัน MQTT เป็นตัวอย่างหนึ่งของรูปแบบที่มักใช้สำหรับระบบที่มีสถาปัตยกรรมแบบรีเลย์เซิร์ฟเวอร์


นอกจากนี้ผมอยากรู้เกี่ยวกับการใช้DELETEสำหรับพอร์ต ;-)
Arjan

1
ในระบบ linux หลายระบบคุณต้อง "ส่งออก" GPIO ก่อนจึงจะสามารถใช้กับอินเทอร์เฟซ / sys / class / gpio ฉันไม่ทราบว่าส่วนบนของหัวของฉันถ้าคุณสามารถ "ยกเลิกการส่งออก" หนึ่ง แต่แนวคิดที่สามารถจับคู่ลบ :-)
Chris Stratton

2

ใช่คุณสามารถเขียนเซิร์ฟเวอร์ TCP ที่กำหนดเองได้ หรือสำหรับน้ำหนักเบาใช้เซิร์ฟเวอร์ UDP

ไม่ว่าจะด้วยวิธีใดให้ไปกำหนดโปรโตคอลแอปพลิเคชันของคุณเองที่ด้านบนของ TCP / UDP และให้แอปพลิเคชันของคุณส่งมา และคุณประหยัดค่าใช้จ่ายของ HTTP (HTTP สามารถมีค่าใช้จ่ายประมาณ 1,000 ไบต์ต่อข้อความ!)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.