สารบัญ:

เครื่องชงกาแฟที่เปิดใช้งาน IoT: 9 ขั้นตอน (พร้อมรูปภาพ)
เครื่องชงกาแฟที่เปิดใช้งาน IoT: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องชงกาแฟที่เปิดใช้งาน IoT: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องชงกาแฟที่เปิดใช้งาน IoT: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: เครื่องชงกาแฟอัตโนมัติจากเมล็ดกาแฟสด แบบมีตู้เย็นนมสด NESCAFÉ® FTS 2024, กรกฎาคม
Anonim
Image
Image
อุปกรณ์ที่จำเป็น
อุปกรณ์ที่จำเป็น

คำแนะนำนี้เข้าร่วมการแข่งขัน IoT - หากคุณชอบโปรดลงคะแนนให้

อัปเดต: รองรับการสื่อสาร 2 ทางและการอัปเดต OTA แล้ว

ฉันมีเครื่องชงกาแฟ Jura มาระยะหนึ่งแล้วและฉันต้องการทำให้เป็นอัตโนมัติเสมอมา

ฉันใช้ระบบโฮมออโตเมชั่นขั้นพื้นฐานมาหลายปีแล้ว แต่เครื่องชงกาแฟไม่ใช่สิ่งที่ง่ายต่อการดัดแปลง (หรืออย่างที่ฉันคิด) เครื่องชงกาแฟ Jura โดยทั่วไปมี 'พอร์ตการวินิจฉัย' และ/หรือพอร์ตที่ใช้สำหรับเพิ่มระบบการชำระเงินลงในเครื่อง แต่ฉันไม่พบข้อมูลใดๆ เกี่ยวกับวิธีการใช้งาน อีกไม่นาน โปรโตคอลนี้ได้รับการออกแบบย้อนกลับโดยบุคคลบางคนและเผยแพร่สู่สาธารณะ ปัญหาคือ การอ้างอิงถึงฟังก์ชันส่วนใหญ่ที่ใช้ได้สำหรับเครื่องจักรที่มีขนาดใหญ่กว่าของฉันมาก (Ena 7)

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

ฉันยังต้องการให้แน่ใจว่าเครื่องยังคงทำงาน 100% โดยไม่ขึ้นกับกลไกการควบคุมใดๆ นั่นคือเครื่องยังคงทำงานตามปกติราวกับว่าไม่ได้เปิดใช้งาน IoT

ในการทำให้เครื่องเป็นอัตโนมัตินั้นจำเป็นต้องมีสองสิ่ง:1) เพื่อให้สามารถควบคุมพลังงานให้กับเครื่องได้ 2) เพื่อให้สามารถสื่อสารกับเครื่องเพื่อเปิดใช้งานฟังก์ชันสำหรับการทำกาแฟ การล้าง ฯลฯ

ขั้นตอนที่ 1: เราจะทำอย่างไร

เราจะใช้โมดูล ESP8266 'ESP-01' เพื่อเชื่อมต่อกับ wifi ที่บ้านและสมัครรับคำสั่งเซิร์ฟเวอร์/หัวข้อ MQTT 'ส่วนหน้า' ที่ฉันใช้คือ OpenHAB2 แต่ไม่มีเหตุผลที่คุณไม่สามารถเพิ่มเว็บอินเตอร์เฟสบนอุปกรณ์และควบคุมได้โดยตรงหากคุณต้องการหรือผ่านคำสั่ง HTTP Get

ESP8266 จะควบคุมรีเลย์ 2 ตัวที่เกี่ยวข้องกับปุ่มเปิดปิดและประมวลผลคำสั่งซีเรียลไปยัง/จากเครื่องชงกาแฟ

คำเตือน - คำแนะนำนี้สรุปขั้นตอนที่ฉันใช้ในการปรับเปลี่ยนเครื่องชงกาแฟ Jura Ena7 ของฉันให้ควบคุมผ่านระบบอัตโนมัติภายในบ้าน เกี่ยวข้องกับการปรับเปลี่ยนอุปกรณ์ไฟฟ้าหลักซึ่งอาจเป็นอันตรายได้หากดำเนินการไม่ถูกต้อง ข้อมูลในที่นี้อาจไม่สมบูรณ์ ไม่ถูกต้อง และไม่ปลอดภัย ดำเนินการด้วยความระมัดระวัง ไม่รับผิดรับผิด.

ขั้นตอนที่ 2: อุปกรณ์ที่จำเป็น

อุปกรณ์ที่จำเป็น
อุปกรณ์ที่จำเป็น
อุปกรณ์ที่จำเป็น
อุปกรณ์ที่จำเป็น
อุปกรณ์ที่จำเป็น
อุปกรณ์ที่จำเป็น

อะไหล่

  • โมดูล ESP-01 และวิธีการตั้งโปรแกรม (Arduino IDE และฟิสิคัลอะแดปเตอร์สำหรับการเขียนโปรแกรม)
  • โมดูลรีเลย์ 2 ทาง EBAY
  • 5v -> 3.3v ตัวควบคุม EBAY
  • ที่ชาร์จโทรศัพท์แบบใช้ไฟหลัก 5v ขนาดเล็ก
  • ตัวแปลงระดับลอจิก* Freetronics
  • สายเบ็ดเตล็ด หัวเข็ม ตัวหดความร้อน ฯลฯ สำหรับเชื่อมต่อทั้งหมด

เครื่องมือ

  • หัวแร้งหัวแร้ง
  • ประสาน
  • เครื่องปอกสายไฟมีประโยชน์
  • ไดรเวอร์ Torx T15
  • เครื่องมือรักษาความปลอดภัยวงรี (หรือสร้างอย่างใดอย่างหนึ่ง ใช้เวลาเพียงไม่กี่นาที)

* ตอนแรกฉันใช้ Arduino UNO ในการทดสอบคำสั่งซีเรียลทั้งหมดกับเครื่องและทำงานได้อย่างไร้ที่ติ แต่โมดูล ESP ปฏิเสธที่จะทำงาน ฉันตรวจสอบรหัสสามครั้งและฉันแน่ใจว่าคำสั่งที่ออกจากโมดูล ESP นั้นเหมือนกับ Arduino แต่ก็ไม่ไป ฉันใส่สิ่งนี้ลงในโมดูล ESP ที่ทำงานบนลอจิก 3.3v เท่านั้นไม่ใช่ 5V เมื่อฉันใส่ตัวแปลงลอจิก มันก็ทำงานได้ดี สิ่งนี้อาจจำเป็นหรือไม่จำเป็นในเครื่องอื่น

ตามหลักการแล้ว คุณจะมีระบบโฮมออโตเมชั่นที่รองรับโปรโตคอล MQTT (เช่น openhab) เนื่องจากเป็นเป้าหมายของโครงการ หากคุณต้องการควบคุมผ่านปุ่มบนหน้าเว็บโดยไม่มีระบบสนับสนุน คุณจะต้องทำการเปลี่ยนแปลงบางอย่างกับโค้ดของหน้าเว็บที่ฝังไว้ มันไม่ซับซ้อนเกินไปที่จะบรรลุ (อาจจะ rev2..)

ขั้นตอนที่ 3: Jura Protocol

พิธีสารจูรา
พิธีสารจูรา

ข้อมูลไปยัง/จากเครื่องเป็นเพียงซีเรียลที่ 9600 แต่ Jura ก็มีเคล็ดลับบางอย่างเช่นกัน โปรโตคอลจะใช้สิ่งนี้สำหรับ ECC เพิ่มเติมและ/หรือเพื่อทำให้การสื่อสารสับสน พูดง่ายๆ ก็คือ แต่ละไบต์ของข้อมูล (อักขระ) จะถูกแบ่งออกเป็นบิต 2 และ 5 ของไบต์อนุกรมมาตรฐาน 4 ไบต์ต่อท้ายด้วยการหยุดชั่วคราว 8 มิลลิวินาที หากคุณสนใจที่จะเรียนรู้วิธีการทำงาน มีข้อมูลมากมายในลิงก์ที่นี่

ข้อมูลโปรโตคอลที่ดึงมาจาก:

รหัส Arduino ช่วยลดความยุ่งยากนี้ ช่วยให้คุณสามารถส่งคำสั่งมาตรฐานที่มนุษย์สามารถอ่านได้ ซึ่งจะแปลงเป็นโปรโตคอล Jura

รหัสของฉันเป็นรหัสผสมจาก:https://github.com/oliverk71/Coffeemaker-Payment-…

คำสั่งที่อ้างถึงในไซต์ด้านบนนั้นไม่ถูกต้องสำหรับเครื่องของฉัน แต่ด้วยวิธีการลองผิดลองถูก ฉันสามารถคิดสิ่งต่อไปนี้ได้:

FA:01 - ปิด (แต่ดูเหมือนจะไม่ล้าง แม้ว่าจำเป็น) FA:02 - ตอบว่า 'โอเค' แต่ไม่แน่ใจว่าจะทำอย่างไร FA:03 - Rinse Message (บังคับให้ข้อความ 'ล้าง' บนหน้าจอ กดเครื่องล้างแบบหมุน) FA:04 - ล้างข้อมูล - ล้างเมื่อข้อความ 'กดปุ่มโรตารี่' ปรากฏขึ้น มิฉะนั้น จะไม่ทำอะไรเลย FA:05 - แสดงผลบนหน้าจอแรง (น่าจะรวมสิ่งนี้กับการทำกาแฟให้เข้มข้น) FA:06 - เข้มข้นบนหน้าจอ (น่าจะรวมสิ่งนี้เข้ากับการทำกาแฟให้เข้มข้น) FA:07 - 'พิเศษ' บนหน้าจอแต่ไม่ได้ทำอะไรเลย ไม่แน่ใจว่านี่สำหรับFA:08 - Steam FA:09 - Small Coffee FA:0A - กาแฟขนาดใหญ่

มีคำสั่งอื่น ๆ แต่นี่ก็เพียงพอแล้วสำหรับฉัน …

ใช้ความระมัดระวังเมื่อออกคำสั่งที่ไม่รู้จัก เช่น เห็นได้ชัดว่า AN:0A จะล้าง EEPROM ของเครื่อง…

ขั้นตอนที่ 4: การถอดประกอบ

การเปิดเครื่องเองนั้นไม่ง่ายเกินไป เนื่องจากคุณต้องการเครื่องมือพิเศษเล็กน้อย แต่ผู้ที่มีความกระตือรือร้นจะหาวิธี - คุณต้องใช้ดอกสว่าน T15 Torx และ 'กุญแจรูปวงรี' สำหรับสกรู 2 ตัว Torx ที่ฉันมีอยู่แล้ว เครื่องมือวงรีที่ฉันทำมาจากโบลต์หัวซ็อกเก็ต 4 มม. เจาะออกมาแล้วใช้ค้อนทุบให้แบนเล็กน้อย

คำแนะนำที่นี่มีการนำเสนอค่อนข้างดี -

ขั้นตอนที่ 5: การยกเลิกการรับประกัน

ถือเป็นโมฆะการรับประกัน
ถือเป็นโมฆะการรับประกัน
ถือเป็นโมฆะการรับประกัน
ถือเป็นโมฆะการรับประกัน
ถือเป็นโมฆะการรับประกัน
ถือเป็นโมฆะการรับประกัน
ถือเป็นโมฆะการรับประกัน
ถือเป็นโมฆะการรับประกัน

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

ฉันเพิ่มสายไฟ (จัดอันดับหลัก) เข้ากับแผงขั้วต่อที่ทางเข้าของเครื่องและบัดกรี/หดด้วยความร้อนไปยังหมุดหลักของที่ชาร์จ 5v รุ่นเฉพาะของฉันไม่ใช่ประเภทพอร์ต USB แต่เป็นรุ่นที่มีสายต่อติดอยู่อย่างถาวร คุณอาจไม่มีที่ว่างเพียงพอสำหรับพอร์ต usb ชนิดหนึ่งที่จะสามารถใช้สาย USB จริงได้ แต่ถ้าคุณเปิดที่ชาร์จ คุณสามารถถอดพอร์ต USB ออกและแทนที่ด้วยสายมาตรฐานไปยังจุด 5v และ Gnd

คุณสามารถเปลี่ยนแหล่งจ่ายไฟหลักอื่นที่ได้รับการจัดอันดับ 5v ได้หากต้องการ 500ma น่าจะเพียงพอ

มีพื้นที่เพียงพอสำหรับโมดูลรีเลย์ใกล้กับเครื่องบด เราต้องต่อรีเลย์สองตัวเพื่อให้ทำงานควบคู่ไปกับสวิตช์ไฟหลัก ฉันแค่ตัดสายไฟที่มีอยู่ ปอกออก ชุบกระป๋อง เพิ่มลวดพิเศษเข้าไปแล้วบัดกรีกลับเข้าด้วยกัน (อย่าลืมฮีทซิงค์) มีสายหย่อนพอที่จะทำเช่นนี้

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

ฉันยัง backprobed พอร์ตการวินิจฉัยบนเครื่องของฉันเพื่อระบุตำแหน่งของการเชื่อมต่อภายใน ดังนั้นฉันจึงสามารถบรรลุการผนวกรวมที่ซ่อนอยู่อย่างสมบูรณ์ ใช้เฉพาะสาย tx, rx และ Gnd

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

เครื่องของฉันใช้ขั้วต่อ 7 พิน จากซ้ายไปขวาคือ:

NC Tx G Rx NC 5v NC

หมุดที่สอดคล้องกันบนเมนบอร์ด: สีแดง = Gnd สีส้ม = Rx สีดำ = Tx

ข้อมูลเพิ่มเติมสามารถพบได้ใน pinouts ที่นี่:

ขั้นตอนที่ 6: การเดินสายไฟด้านลอจิก

การเดินสายไฟด้านลอจิก
การเดินสายไฟด้านลอจิก
การเดินสายไฟด้านลอจิก
การเดินสายไฟด้านลอจิก
การเดินสายไฟด้านลอจิก
การเดินสายไฟด้านลอจิก

ตรวจสอบไดอะแกรม - ดูเหมือนซับซ้อนเกินไป แต่จริงๆ แล้วไม่เป็นเช่นนั้น

ฉันติดตั้งตัวแปลงระดับที่ด้านหลังของตัวควบคุมแรงดันไฟฟ้า (ที่ติดอยู่) ด้วยเทปสองด้าน จากนั้นฉันก็ใช้ขาส่วนประกอบบางส่วนเพื่อประสานพลังงานและหมุดกราวด์ที่ด้านใดด้านหนึ่งของตัวแปลงระดับไปยังหมุดโมดูลพลังงานที่เกี่ยวข้อง โมดูลทั้งหมดนี้ทำงานเหมือน 'ส่งผ่าน' สำหรับตรรกะและแหล่งจ่ายไฟทั้งหมดสำหรับ ESP-01

ฉันใช้ตัวแปลงกลางสองตัวสำหรับข้อมูลอนุกรมและตัวนอกสองตัวสำหรับสัญญาณการขับรีเลย์ แต่ไม่ว่าคุณจะใช้อันไหน

ไม่จำเป็นจริง ๆ กับโมดูลรีเลย์เหล่านี้เพื่อเรียกใช้ลอจิก 5v เนื่องจากพวกมันทำงานต่ำ แต่มันทำงานได้ดีดังนั้นฉันจึงทำมันต่อไป

ฉันใช้ส่วนหัว 4x2 ตัวเมียเพื่อเชื่อมต่อกับโมดูล ESP ซึ่งช่วยให้อัปโหลดโค้ดหรือเปลี่ยนโมดูลได้ง่าย

ไม่มีภาพในแผนภาพคืออินพุต 5V - ฉันต่อสายของฉันโดยตรงกับโมดูลรีเลย์ (ดูภาพที่สอง) เส้นสีดำที่ด้านล่างซ้ายของรูปภาพคือข้อมูลอนุกรมที่ปิดไปยังเมนบอร์ด ฉันใช้ส่วนหนึ่งของสายต่อหูฟังขนาด 3.5 มม. ที่มีฉนวนหุ้มเพียงเพื่อช่วยลดโอกาสที่สัญญาณรบกวนในสายข้อมูล

รหัส 12f ใช้ SoftwareSerial แทนฮาร์ดแวร์ซีเรียล - ซึ่งช่วยให้โมดูลสามารถรายงานสถานะการดีบักกลับผ่านซีเรียลปกติ การเชื่อมต่อจะใช้พิน 4 และ 5 แทน ฉันปรับส่วนหัวเดียวกันเพื่อให้ ESP12F เป็นปลั๊กสำหรับสลับกับ ESP-01 เพียงแค่สลับพินอนุกรมเหล่านั้น

ขั้นตอนที่ 7: การเขียนโปรแกรมโมดูล

การเขียนโปรแกรมโมดูล
การเขียนโปรแกรมโมดูล

รหัสถูกคอมไพล์กับ Arduino 1.8.1 พร้อมบอร์ดเสริม ESP8266 และ PubSubClient 2.6.0 (ซึ่งเป็นไลบรารี MQTT)

แก้ไขรหัสตามความต้องการของคุณและอัปโหลดรหัสไปยังโมดูล ESP-01 และเชื่อมต่อกับเครื่อง ระวังการวางแนวของหมุด!

การกำหนดค่า

ตัวเลือกที่ 1)

เฉพาะรหัสฐานใน zip เมื่อโมดูล ESP บู๊ตครั้งแรก โมดูลจะเข้าสู่โหมด AP และตั้งค่า IP เป็น 192.168.4.1 จากนั้นคุณสามารถเชื่อมต่อกับโมดูลและเปลี่ยน IP และเชื่อมต่อกับจุดเข้าใช้งานของคุณเอง คุณจะต้องตั้งค่า IP สำหรับเครื่องของคุณในช่วงนั้น เนื่องจากไม่มี DHCP ในโมดูล

AP SSID เริ่มต้นคือ 'ESPSwitch' และรหัสผ่านคือ '12345678'

โดยจะอยู่ในโหมด AP เป็นเวลา 2 นาทีโดยค่าเริ่มต้น คุณสามารถเปลี่ยนการตั้งค่านี้ได้ใน 'global.h' - เรียกว่า 'adminTimeout' และมีหน่วยเป็นมิลลิวินาที ฉันแนะนำให้เปลี่ยนสิ่งนี้เป็นค่าต่ำเมื่อคุณมีการกำหนดค่าที่ถูกต้องใน EEPROM เพราะจะทำให้เกิดการล่าช้าโดยไม่จำเป็นในการบู๊ตอุปกรณ์ไม่เช่นนั้น

ตัวเลือก 2)

นี่คือโหมดเริ่มต้นสำหรับโค้ดที่ใหม่กว่าที่รองรับการสื่อสารแบบ 2 ทาง ตัวเลือกที่ 1 ไม่พร้อมใช้งาน คุณยังสามารถเปลี่ยนการตั้งค่า SSID/รหัสผ่านเริ่มต้นในไฟล์ ino หลัก (มองหา '// การกำหนดค่าเริ่มต้น') เพื่อให้โหลด การตั้งค่าเหล่านั้นใน EEPROM ในการบู๊ตครั้งแรกและเปลี่ยนการหน่วงเวลาโหมดผู้ดูแลระบบเป็นระดับต่ำใน 'global.h' เพื่อหลีกเลี่ยงไม่ให้ต้องวุ่นวายกับการเชื่อมต่อกับ AP ชั่วคราว

อุปกรณ์จะตั้งค่า MQTT id (และเส้นทางการสมัครสมาชิก) ให้เป็นตัวเลข 4 หลักสุดท้ายของหมายเลขซีเรียลของโมดูลโดยอัตโนมัติ เส้นทางโดยค่าเริ่มต้นคือ ha/mod//# เปลี่ยนตามที่เห็นสมควร แต่อ่านความคิดเห็นในโค้ดเพื่อให้แน่ใจว่าอาร์เรย์ที่เหมาะสมมีความยาวที่ถูกต้อง

ฉันทำเช่นนี้เพราะมันหมายความว่าฉันไม่ต้องสร้าง ID ที่ไม่ซ้ำกันสำหรับทุกโมดูลในเครือข่ายของฉัน

ID อุปกรณ์สามารถมองเห็นได้และสามารถตั้งค่าเซิร์ฟเวอร์ MQTT ผ่านหน้าเซิร์ฟเวอร์ MQTT บนเว็บเซิร์ฟเวอร์ภายใน

ขั้นตอนที่ 8: ทำให้มันทำสิ่งที่…

คำสั่ง MQTT คือ

ha/mod/xxxx/ 0 หรือ 1 = สลับพลังงาน

สตริงอื่นๆ จะถือเป็นคำสั่งและส่งผ่านพอร์ตอนุกรม มีการรายงานสถานะไปที่ /ha/coffee ใน HEX

ด้วย OpenHAB

coffeemachine.items

Number Coffee_Machine_Power "กำลัง" { mqtt=">[control:ha/mod/8002/:command:*:default]" }String Coffee_Machine_Status { mqtt="<[control:ha/coffee:state:default]" }

แผนผังเว็บไซต์

Group item="Coffee Machine" { Switch item=Coffee_Machine_Power label="Power" mappings=[1="Toggle"] Switch item=Coffee_Machine_Cmd mappings=["FA:09"="Small"] Switch item= Coffee_Machine_Cmd mappings=["FA:0A"="Large"] Switch item=Coffee_Machine_Cmd mappings=["FA:04"="Rinse"] รายการข้อความ=Coffee_Status label="สถานะ [%s]" }

voicecontrol.rules

นำเข้า org.openhab.model.script.actions.*import org.openhab.core.library.types.* นำเข้า java.util.*

กฎ "กฎคำสั่งเสียง"

เมื่อรายการ VoiceCommand ได้รับคำสั่งแล้ว var String command = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand ได้รับ "+command)

if (command.contains("เปิดเครื่องชงกาแฟ") || command.contains("ปิดเครื่องชงกาแฟ")) {

sendCommand(Coffee_Machine_Power, 1) } if (command.contains("ทำกาแฟให้ฉันหน่อย")) { sendCommand(Coffee_Machine_Cmd, "FA:09") } if (command.contains ("ทำให้ฉันเป็นกาแฟขนาดใหญ่")) { sendCommand(Coffee_Machine_Cmd, "FA:0A") } if (command.contains("ล้างเครื่องชงกาแฟ")) { sendCommand(Coffee_Machine_Cmd, "FA:04") } } สิ้นสุด

กฎ (สำหรับการตีความการตอบสนอง HEX เป็นค่า 'ของจริง'):

กฎ "สถานะเครื่องชงกาแฟ" เมื่อรายการ Coffee_Machine_Status ได้รับการอัปเดตแล้ว var String response = Coffee_Machine_Status.state.toString() if (response.indexOf("ic:") > -1) { var String hexString = response.substring (3, 5)

var int num = (Integer.parseInt(hexString, 16));

var String binaryString = String.format("%8s", Integer.toBinaryString(num)).replace(' ', '0')

var int trayBit = binaryString.substring(0, 1)

var int tankBit = binaryString.substring (2, 3) var int heatBit = binaryString.substring (7, 8) var int flushBit = binaryString.substring (6, 7)

ถ้า (trayBit == "0") {

postUpdate(Coffee_Status, "Tray Missing") } if (tankBit == "1") { postUpdate(Coffee_Status, "Fill Tank") } if (rinseBit == "1") { postUpdate(Coffee_Status, "Press Rotary") } if (trayBit == "1" && tankBit == "0" && flushBit == "0") { postUpdate(Coffee_Status, "Ready") }

}

if (response == "Off"){ postUpdate(Coffee_Status, "Off") } สิ้นสุด

ขั้นตอนที่ 9: การปรับแต่ง/สิ่งที่ต้องทำ

ลดความซับซ้อนของการตั้งค่าเริ่มต้นในการเชื่อมต่อกับ wifi - เสร็จสิ้น ละทิ้งความคิดของ 'โหมดผู้ดูแลระบบ' เพราะมันน่ารำคาญ ตอนนี้เพียงป้อน SSID และรหัสผ่านในรหัส บันทึกลงใน EEPROM หากคุณอัปเดต/เปลี่ยนแปลงผ่านเว็บอินเทอร์เฟซ

รหัสที่ใหม่กว่ายังรองรับการอัปเดต OTA แต่คุณจะต้องอัปเกรด EEPROM บนโมดูล ESP-01 เพื่อให้ทำงานหรือแสดงความคิดเห็นในรายการ OTA ที่เกี่ยวข้อง

เพิ่มรหัสสำหรับการประมวลผลการตอบสนองจากเครื่องและสถานะการอ่าน เช่น ไม่มีถาด พื้นที่ว่างเปล่า และถังเติม - เสร็จสิ้น ฉันได้เพิ่มรหัสเพื่ออ่านสถานะย้อนหลังและเผยแพร่ไปยัง ha/coffee นี่เป็นเพียงการตอบสนองดิบและฉันยังคงทำงานเพื่อตีความมัน แต่จนถึงตอนนี้ฉันยังไม่มีถาดและถังทำงานว่างเปล่า มันสำรวจเครื่องทุก 9 วินาทีเมื่อเปิดและเผยแพร่การตอบสนองต่อ MQTT

การตอบสนองอยู่ใน HEX แต่แต่ละบิตระบุถึงเซ็นเซอร์

เพิ่มรหัสไปยังหน้าเว็บสำหรับการควบคุมโดยตรงผ่านคำสั่ง HTTP GET

Internet of Things Contest 2017
Internet of Things Contest 2017
Internet of Things Contest 2017
Internet of Things Contest 2017

รางวัลที่หนึ่งในการประกวด Internet of Things 2017

แนะนำ: