ผ่านการเขียนโปรแกรมเราทำให้เครื่องจักรเลียนแบบพฤติกรรมที่ซับซ้อนโดยทำตามลำดับคำสั่งง่ายๆ การใช้ภาษาโปรแกรมแบบข้อความเช่น Asambly, C, Python และ JavaScript เป็นวิธีหลักวิธีหนึ่ง นักออกแบบของภาษาโปรแกรมเหล่านี้ได้ใช้เวลาหลายชั่วโมงในการพยายามทำให้ประสบการณ์การเขียนโปรแกรมเป็นเรื่องง่ายที่สุดผ่านทางไวยากรณ์ที่แสดงออกโครงสร้างการเขียนโปรแกรมที่แข็งแกร่งและห่วงโซ่เครื่องมือที่มีประสิทธิภาพ อย่างไรก็ตามภาษาโปรแกรมทั้งหมดเหล่านี้มีคุณลักษณะร่วมกัน: ซอร์สโค้ดที่เป็นข้อความ
การเขียนโปรแกรมในข้อความทำงานได้และในกรณีส่วนใหญ่จะทำงานได้ดี อย่างไรก็ตามความสามารถในการแสดงโปรแกรมด้วยสายตามักเป็นที่ต้องการ ความสามารถในการออกแบบการไหลของข้อมูลผ่านส่วนประกอบต่างๆของระบบที่ใหญ่กว่ามักเป็นสิ่งที่จำเป็น นอกจากนี้เครื่องมือการเขียนโปรแกรมภาพยังเป็นสิ่งที่ไม่น่าให้อภัยสำหรับทุกคนที่ยังใหม่กับการเขียนโปรแกรมและพบว่ามันยากที่จะจัดการกับแนวคิดต่างๆเช่นตัวแปรตัวบ่งชี้สัญญาณขอบเขตและอื่น ๆ
Node-RED เป็นเครื่องมือเขียนโปรแกรมภาพ แสดงความสัมพันธ์และฟังก์ชันด้วยสายตาและอนุญาตให้ผู้ใช้ตั้งโปรแกรมได้โดยไม่ต้องพิมพ์ภาษา Node-RED เป็นโปรแกรมแก้ไขโฟลว์บนเบราว์เซอร์ที่คุณสามารถเพิ่มหรือลบโหนดและเชื่อมต่อกันเพื่อให้พวกมันสื่อสารกันได้
ใน Node-RED แต่ละโหนดเป็นหนึ่งในสองประเภทต่อไปนี้: ก โหนดฉีด หรือก โหนดฟังก์ชัน . โหนดการฉีดสร้างข้อความโดยไม่จำเป็นต้องป้อนข้อมูลและเปิดใช้งานข้อความไปยังโหนดถัดไปที่เชื่อมต่ออยู่ ในทางกลับกันโหนดฟังก์ชันมีอินพุตและทำงานกับมัน ด้วยโหนดเหล่านี้จำนวนมากให้เลือก Node-Red ทำให้การเชื่อมต่ออุปกรณ์ฮาร์ดแวร์ API และบริการออนไลน์ง่ายกว่าที่เคย
โหนด - แดงขึ้นอยู่กับ Node.js ในการติดตั้ง Node-Red คุณต้องมีทั้งสองอย่าง โหนด js ติดตั้งเป็น NPM ด้วย NPM การติดตั้ง Node-Red ทำได้ง่ายมาก: npm install -g node-red
ตัวแก้ไขโฟลว์ Node-Red เป็นแอปพลิเคชันบนเว็บเบราว์เซอร์ ในการใช้งานให้เรียกใช้ Node-Red:
npm install -g node-red
โปรแกรมแก้ไขโฟลว์ของ Node-RED เป็นแอปพลิเคชันบนเว็บเบราว์เซอร์ เพื่อให้สามารถใช้งานได้ให้เรียกใช้ Node-RED:
node-red
& hellip แล้วไปที่ http: // localhost: 1880
บทช่วยสอนการเขียนโปรแกรมระดับเริ่มต้นใดที่สมบูรณ์โดยไม่ต้องเรียนรู้วิธีการพูดว่า“ สวัสดีชาวโลก” เริ่มต้นด้วยการทดสอบว่า:
ลองมัน. คุณจะเห็นสิ่งนี้:
ด้วย Node-Red คุณจะไม่ จำกัด ตัวเองด้วยโหนดและฟังก์ชันที่เรียบง่าย เนื่องจาก Node-Red ถูกสร้างขึ้นบน Node.js ทุกอย่างจึงใช้พลังงานจากไฟล์ JavaScript . โหนดคือโมดูล Node.js สามารถพบได้ใน http://flows.nodered.org/ จากนั้นหากต้องการเพิ่มลงในแผงด้านซ้ายของคุณคุณสามารถ 'ติดตั้งด้วย NPM' ได้ ในความเป็นจริงคุณสามารถพัฒนาโฟลว์ของคุณเองและอัปโหลดไปยังที่เก็บโฟลว์ได้ แอปพลิเคชันสามารถซับซ้อนได้เท่าที่คุณต้องการเนื่องจากคุณสามารถเขียน JavaScript ในโหนดฟังก์ชันภายในโปรแกรมแก้ไขโค้ดที่ Node-Red จัดเตรียมไว้ให้
เนื่องจากแพลตฟอร์มใช้ Node.js จึงใช้ประโยชน์จากรูปแบบที่ขับเคลื่อนด้วยเหตุการณ์ที่ไม่ปิดกั้นเดียวกัน ดังนั้นแอปพลิเคชันที่สร้างขึ้นบน Node-Red จึงสามารถทำงานบนฮาร์ดแวร์ราคาประหยัดเช่น Raspberry Pi และในระบบคลาวด์ได้
เพื่อแสดงให้เห็นว่า Node-Red เข้ากับขอบเขตของ Internet of Things ได้อย่างไรเรากำลังจะสร้างแอปพลิเคชันเพื่อเปลี่ยนสีของหลอดไฟอัจฉริยะ ไม่ใช่ทุกคนที่สามารถมีระบบแสงสว่างอัจฉริยะแบบเดียวกันได้ แต่ไม่มีอะไรต้องกังวลเนื่องจากโมดูล Node-Red ที่เหมาะสมสามารถพบได้จากที่เก็บข้อมูลการไหลอย่างเป็นทางการ อย่างไรก็ตามเพื่อให้สิ่งต่างๆง่ายขึ้นเราไปหาสิ่งที่ฉลาดกว่า
ให้ฉันแนะนำคุณกับ Netbeast เป็นแพลตฟอร์มโอเพ่นซอร์สสำหรับการพัฒนาแอปพลิเคชันสำหรับแกดเจ็ตและอุปกรณ์ Internet of Things โดยไม่ต้องกังวลเกี่ยวกับรายละเอียดเช่นโปรโตคอลไร้สายความเข้ากันได้ของแบรนด์หรือต้องรู้วิธีจัดการกับแต่ละ API ที่มีอยู่ ช่วยให้เราสามารถใช้อุปกรณ์เสมือนจริงที่ทำหน้าที่เหมือนของจริง! ดังนั้นแม้ว่าคุณจะไม่มีหลอดไฟอัจฉริยะ แต่คุณก็มีหลอดไฟเสมือนจริง
เราสามารถติดตั้งแพ็คเกจ NPM ได้จาก Netbeast สำหรับ Node-Red ทั่วโลกเช่นนี้:
npm install -g node-red-contrib-netbeast
โหนด netbeast-red จะแสดงแผงควบคุม Netbeast ซึ่งจะแปล API ดั้งเดิมสำหรับอุปกรณ์อัจฉริยะทั้งหมดที่คุณมีที่บ้าน โชคดีที่มีให้เป็นโมดูลด้วย!
เริ่ม Netbeast:
npm install -g netbeast-cli netbeast start
สิ่งนี้จะทำให้พาเนลพร้อมใช้งานบนพอร์ต 8000 และ SSL บน 8443 จากนั้นเปิดเบราว์เซอร์ของคุณไปที่ http: // localhost: 8000 และไปที่ Explore เราสามารถค้นหาแอพพลิเคชั่นและปลั๊กอินมากมาย มองหาหลอดไฟอัจฉริยะของคุณ (Philips Hue, LIFX, Wemo) หรือถ้าคุณไม่มีให้ลองดาวน์โหลดปลั๊กอินหลอดไฟ ตรวจสอบว่าปลั๊กอินแดชบอร์ดของคุณมีหนึ่งในสิ่งเหล่านี้!
aws โซลูชั่นสถาปนิก - สอบร่วม
ป้ายสีเหลืองแสดงว่าปลั๊กอินกำลังทำงาน แต่ไม่พบอุปกรณ์ใด ๆ คลิกที่ปลั๊กอินหลอดไฟเพื่อสร้างหลอดไฟเสมือนจริง อุปกรณ์อื่นใดที่ค้นพบจะต้องปรากฏบนเครือข่าย
เมื่อทุกอย่างเรียบร้อยแล้วกลับไปทำงานกันเถอะ เราจะทำขั้นตอนง่ายๆ:
ตอนนี้เรากำลังจะส่งคำขอ HTTP ไปยังแผงควบคุม เมื่อใช้ Netbeast API JSON ที่มีค่าที่เราต้องการเปิดใช้งานในหลอดไฟของเราจะต้องถูกส่งผ่านโหนดการฉีด
กดปุ่มเพื่อฉีดสีและพลังงานลงในหลอดไฟอัจฉริยะทั้งหมดของคุณ!
แต่ละธีมแสดงถึงอุปกรณ์ประเภทต่างๆ ดังนั้นจึงมีธีมไม่เพียง แต่สำหรับแสงไฟเท่านั้น แต่ยังรวมถึงเพลงความร้อนและวิดีโอด้วย เช่นเดียวกับเซ็นเซอร์สำหรับความชื้นการปรากฏตัวอุณหภูมิและรายการต่อไป คุณสามารถค้นหารายการธีมและโครงสร้างที่แนะนำในเอกสารของคุณเพื่อแปลไปยังอุปกรณ์ทุกประเภท เอ็นจิ้น IO นี้เป็นมือใหม่ แต่ทรงพลัง โอเพ่นซอร์สที่ช่วยให้นักพัฒนาสามารถนำข้อมูลกลับมาใช้ใหม่เพื่อสร้างสถานการณ์ที่เชื่อมต่อกันอย่างแท้จริงจึงมีความชาญฉลาด
ต่อไปเราจะสร้างโฟลว์ที่สองโดยใช้ปลั๊กอินอื่นซึ่งเป็นตัวตรวจจับเสียงรอบข้างเพื่อใช้เป็นตัวเริ่มต้นในการเปลี่ยนสีของหลอดไฟเป็นสัญญาณไฟจราจร ในบทช่วยสอนนี้เราจะใช้เครื่องเสมือนดังนั้นไม่จำเป็นต้องซื้อฮาร์ดแวร์ใหม่ เริ่มต้นด้วยการคลิกปุ่ม 'เพิ่มเติม' ในตัวแก้ไข Node-Red
กลับไปที่ Panel http: // localhost: 8000 / explore to Explore section และมองหา Volume-Plugin นี่เป็นเว็บแอปพลิเคชันพื้นฐานที่ใช้ประโยชน์จาก getUserMedia()
ภายในเบราว์เซอร์เพื่อเก็บข้อมูลมัลติมีเดียจากแอปพลิเคชัน HTML ง่ายๆ ดังนั้นจึงอาจใช้ได้เฉพาะในเบราว์เซอร์สมัยใหม่เท่านั้น
คลิกเพื่อเปิดเช่นเดียวกับหลอดไฟเสมือนจริง มันขออนุญาตในการบันทึกจากไมโครโฟน จากนั้นจะส่งข้อความไปยังโบรกเกอร์ Netbeast MQTT ซึ่งจะแชร์กับแผงควบคุมทั้งหมดเพื่อให้เราสมัครสมาชิกได้ เพื่อให้บรรลุสิ่งนี้เราจะต้องลากและวางโหนดของ netbeast-trigger ในตัวแก้ไขโหนดสีแดง ต่อไปเราจะแทรกฟังก์ชันระหว่างทริกเกอร์และโหนด Netbeast เพื่อตัดสินใจว่าเมื่อใดที่มันสูงเกินไปและเมื่อมันไม่ นอกจากนี้เราควรใช้โหนดการดีบักเพื่อตรวจสอบว่าทุกอย่างเรียบร้อยหรือไม่ แผนผังจะมีลักษณะดังนี้:
ตอนนี้เรามาใส่โค้ดในโหนดฟังก์ชัน tooLoud ใช่ฉันรู้ว่าฉันสัญญาว่าคุณสามารถตั้งโปรแกรมได้โดยไม่ต้องเข้ารหัส แต่ฉันได้แสดงให้คุณเห็นแล้ว! และคุณสามารถลองรวมรายการต่างๆที่มีอยู่หรือโหนดรีจิสทรีอื่น ๆ เพื่อทำสิ่งต่อไปนี้ให้สำเร็จ
var volume = msg.payload.volume node.log(volume) if (volume <50) { return { topic: 'lights', payload: { power: 1, color: '#00CC00'}} } else if (volume < 75) { return { topic: 'lights', payload: { power: 1, color: '#CCCC00'}} } else { return { topic: 'lights', payload: { power: 1, color: '#FF0000'}} }
ข้อมูลโค้ดที่ค่อนข้างเรียบง่ายนี้กำลังส่งคืนส่วนข้อมูลหนึ่งในสามรายการสำหรับโหนดถัดไปด้วยรหัสสีเฉพาะขึ้นอยู่กับระดับเสียงที่รายงานโดยโหนดก่อนหน้า
ตอนนี้เราพร้อมที่จะดำเนินการต่อ! มากดปุ่ม Deploy อีกครั้งแล้วส่งเสียงออกมา มาดูกันว่าหลอดไฟเปลี่ยนจากสีหนึ่งไปเป็นสีอื่นได้อย่างไร!
เนื่องจากไมโครโฟนและเว็บเบราว์เซอร์ที่คุณใช้อาจแตกต่างกันอย่าลังเลที่จะปรับค่าฟังก์ชันและขีด จำกัด รวมถึงเล่นกับค่าสีเพื่อดูว่าหลอดไฟของคุณเปลี่ยนไปอย่างไร
หลอดไฟ CSS บริสุทธิ์นี้ได้รับแรงบันดาลใจจากหลอดไฟนี้ cssdeck .
อย่างที่คุณสังเกตเห็นว่าหลอดไฟเสมือนจริงด้านบนเป็นพื้นฐานมากดังนั้นคุณอาจต้องแก้ไข หรือดีกว่านั้นคุณสามารถสร้างตัวควบคุมบ้านอัจฉริยะของคุณเองได้ ดังนั้นเราจะเข้าสู่ขั้นตอนการสร้างปลั๊กอินเสมือนสำหรับ Netbeast ซึ่งจะช่วยให้คุณสร้างการควบคุมของคุณเองสำหรับอุปกรณ์อัจฉริยะ
ไฟล์ส่วนหัวใน c++
คุณสามารถใช้แพ็คเกจ netbeast-cli
เพื่อสร้างรหัสบางอย่างราวกับมีเวทมนตร์ โดยดำเนินการ netbeast create myplugin --plugin
เราจะมีโครงการพื้นฐานดังต่อไปนี้:
myplugin ├── README.md ├── index.js ├── package.json └── test.js
ตอนนี้เรามาเริ่มเลียนแบบหลอดไฟด้วยส่วนหน้า โดยปกติไดรเวอร์อุปกรณ์จะไม่มีดังนั้นคำสั่ง scaffold จะไม่มีโฟลเดอร์ สาธารณะ ยัง. มาสร้างไดเร็กทอรี public
ภายในโปรเจ็กต์และใส่ไฟล์ HTML, CSS และ JS ต่อไปนี้ไว้ที่นั่น
Netbeast Bulb Plugin beast ( 'lights' ). set ({ color : '' , power : '' })
RUN
section { float: left; padding: 20px 50px 20px 50px; } .bulb-light { border: 0; background: transparent; margin: 0 auto !important; padding: 0 !important; display: block; z-index: 1; } #bulb { opacity: 1; z-index: 3; display: block;} .bulb.top { border: 0; width: 300px; height: 300px; margin: 0 auto; padding: 0; border-radius: 999px; background: #E7E7E7; } .bulb.middle-1 { margin: -75px auto 0 auto; width: 190px; border-left: 35px solid transparent; border-right: 35px solid transparent; border-top: 55px solid #E7E7E7; } .bulb.middle-2 { margin: -22px auto 0 auto; width: 178px; border-left: 19px solid transparent; border-right: 19px solid transparent; border-top: 50px solid #E7E7E7; } .bulb.middle-3 { margin: -20px auto 0 auto; width: 182px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 30px solid #E7E7E7; } .bulb.bottom { width: 184px; height: 65px; margin: -8px auto 0 auto; padding: 0; border-radius: 0 0 999px 999px; background: #E7E7E7; } #base { position:relative; z-index: 2; } .screw { transform: rotate(-3deg); -ms-transform: rotate(-3deg); -webkit-transform: rotate(-3deg); padding: 0; } .screw-top { margin: -18px auto -4px auto; padding: 0; width: 132px; height: 0; border-left: 15px solid transparent; border-right: 15px solid transparent; border-top: 21px solid #D3D3D3; border-radius: 999px; } .screw.a { background: #DDD; width: 150px; height: 15px; border-radius: 999px; margin: -1px auto 0px; } .screw.b { background: #D9D9D9; width: 135px; height: 15px; margin: -1px auto 0px; } .screw.c { margin: -1px auto 0px; width: 78px; height: 0; border-left: 30px solid transparent; border-right: 30px solid transparent; border-top: 20px solid #DDD; border-radius: 8px; } .screw.d { margin: 0 auto; width: 15px; height: 0; border-left: 30px solid transparent; border-right: 30px solid transparent; border-top: 15px solid #444; } .on #light { -moz-opacity: 1; -khtml-opacity: 1; opacity: 1; } .bulb.top, .bulb.bottom { transition: all 0.5s ease-in-out; } .bulb.middle-1, .bulb.middle-2, .bulb.middle-3 { transition: all 0.5s ease-in-out; }
ด้วยไฟล์ HTML และ CSS เหล่านี้คุณจะสามารถเห็นรูปทรงหลอดไฟในเบราว์เซอร์ของคุณได้แล้ว เปิดไฟล์ HTML เพื่อดูสด! กำลังทำงานอยู่? ตกลงตอนนี้เรากำลังจะให้คุณฟังก์ชั่นบางอย่าง
ไฟล์นี้จะเลียนแบบลักษณะการทำงานของหลอดไฟด้วยการคลิกเพาเวอร์ง่ายๆ เมื่อคุณคลิกเพื่อปิดคุณจะตั้งค่าฟังก์ชันสองสามอย่างที่จะใช้ในภายหลังเพื่อเปลี่ยนสีผ่าน Netbeast
var color = document.getElementById('color') var power = document.getElementById('power') var bulb = document.getElementById('bulb') var button = document.getElementById('run-btn') var light = document.getElementById('light') button.onclick = function toggleBulbState () { changeBulbParams({ color: color.value, power: power.value }) } function setBulbParams (params) { if (params.power === 'off') { params = { color: 'E7E7E7' } } console.log('set params', params) var bulb_parts = ['.bulb.middle-1', '.bulb.middle-2', '.bulb.middle-3'] document.querySelector('.bulb.top').style.boxShadow = '0px 0px 98px #' + params.color document.querySelector('.bulb.top').style.backgroundColor = params.color document.querySelector('.bulb.bottom').style.backgroundColor = params.color bulb_parts.forEach(function (className) { document.querySelector(className).style.borderTopColor = params.color }) } function changeBulbParams (params) { console.log('change params', params) /* Overwrite html fields if necessary */ color.value = params.color || color.value power.value = params.power || power.value setBulbParams({color: color.value, power: power.value}) }
จากนั้นทุกอย่างจะเริ่มสมเหตุสมผล: ช่องและปุ่มวิ่งตอนนี้คุณสามารถเริ่มทดสอบสีต่างๆของหลอดไฟเสมือนใหม่ของคุณได้แล้ว! อย่างไรก็ตามเหตุผลที่เรามาที่นี่คือการสร้างอุปกรณ์อื่นในระบบนิเวศ Internet of Things ของเรา
ฟรอนต์เอนด์ JS ล่าสุดที่สร้างขึ้นโดยตัวเราเองจำลองการเชื่อมต่อไร้สายกับเซิร์ฟเวอร์เช่น WiFi หรือหลอดไฟบลูทู ธ ที่ใช้กับรีโมทคอนโทรลของคุณเช่นโทรศัพท์เซิร์ฟเวอร์หรือฮับ มันเป็นอินเทอร์เฟซที่โค้ดปลั๊กอินจะใช้ควบคุมมัน!
var socket = io.connect() socket.on('connect', function () { console.log('ws:// bulb is online') }) socket.on('disconnect', function () { console.log('ws:// connection with bulb lost') }) socket.on('set', function (params) { changeBulbParams(params) // uses functions from bulb.js! }) socket.on('get', function () { const params = { power: power.value, color: color.value } socket.emit('params', params) })
สุดท้ายนี้เราต้องรวมไลบรารี WebSocket ไว้ใน HTML เพื่อให้อินเทอร์เฟซพร้อมใช้งาน คุณสามารถคัดลอกซอร์สโค้ดจาก https://raw.githubusercontent.com/netbeast/bulb-plugin/master/public/socketio.js และวางลงในไฟล์ที่เรียกว่า socketio.js . จากเทอร์มินัลที่มี curl
หรือ wget
คุณสามารถทำได้ง่ายๆดังนี้:
curl https://raw.githubusercontent.com/netbeast/bulb-plugin/master/public/socketio.js > public/socketio.js
ตอนนี้เราจะมีโครงสร้างไฟล์ที่มีลักษณะดังนี้:
myplugin ├── README.md ├── index.js ├── package.json ├── public │ ├── bulb.css │ ├── bulb.js │ ├── hw-api.js │ ├── index.html │ └── socketio.js └── test.js
ตอนนี้เรากำลังจะเชื่อมต่อกับอุปกรณ์และลงทะเบียนกับเอ็นจิ้น Netbeast มันจะฟังเว็บซ็อกเก็ตเพื่อตรวจสอบว่ามีการติดตั้งหลอดไฟบนเครือข่ายหรือไม่จากนั้นมันจะทำ POST
ไปยัง dashboard API เพื่อให้ทรัพยากรใหม่พร้อมใช้งาน
ลองมาดูไฟล์ที่เราสร้างไว้ก่อนหน้านี้:
ไฟล์นี้มีการอ้างอิงและข้อมูลทั้งหมดที่จำเป็นในการเรียกใช้แอปพลิเคชันของคุณ Netbeast ใช้ package.json ตามปกติเช่นกันเพื่อดึงข้อมูลบางอย่างเช่นชื่อหรือประเภท สิ่งสำคัญคือต้องระบุว่าแพ็คเกจนี้เป็นปลั๊กอิน!
{ 'name': 'myplugin', 'version': '0.0.0', 'description': 'Netbeast plugin for... ', 'main': 'index.js', 'netbeast': { 'bootOnLoad': true, 'type': 'plugin' }, 'dependencies': { 'bluebird': '^3.3.5', 'body-parser': '^1.15.0', 'express': '^4.13.4', 'minimist': '^1.2.0', 'mocha': '^2.3.2', 'morgan': '^1.6.1', 'netbeast': '^1.0.6', 'socket.io': '^1.4.5', 'superagent': '^1.8.3' }, 'devDependencies': {}, 'scripts': { 'test': 'node test.js', 'start': 'node index.js' }, 'repository': { 'type': 'git', 'url': 'GITHUB_REPOSITORY' }, 'keywords': [ 'iot', 'netbeast', 'plugin' ], 'author': 'YOUR_EMAIL', 'license': 'GPL 3', 'bugs': { 'url': 'ISSUES_CHANNEL' }, 'homepage': 'HOMEPAGE' }
นี่คือรหัสที่นำมาจากแผงควบคุม Netbeast เพื่อเปิดปลั๊กอิน! จะต้องยอมรับพอร์ตผ่านอาร์กิวเมนต์บรรทัดคำสั่งเพื่อให้ทราบว่าจะรับคำขอเข้ามาที่ใด มันจะเปิดขึ้นเหมือนกับว่าเราพิมพ์ node myplugin.js --port
อย่าลืมคำนึงถึงไฟล์ hashbang ในตอนแรก! #!/usr/bin/env node
.
#!/usr/bin/env node var io = require('socket.io')() var express = require('express') var bodyParser = require('body-parser') var app = express() // Netbeast apps need to accept the port to be launched by parameters var argv = require('minimist')(process.argv.slice(2)) app.use(express.static('public')) // will serve our app in an HTTP server app.use(bodyParser.json()) // will parse JSON API calls app.use('/api', require('./plugin')(io)) var server = app.listen(argv.port || 31416, function () { console.log('Bulb plugin listening at http://%s:%s', server.address().address, server.address().port) }) // we need websockets to push updates to browser view io.listen(server)
อย่างที่คุณเห็นว่าเราไม่มีไฟล์ที่จะเริ่มต้นซึ่งเป็นไฟล์ที่ใช้ไดรเวอร์จริงๆ socket.io . Uncool!
var express = require('express') var netbeast = require('netbeast') var router = express.Router() var bulbParams // auxiliar variable, nasty way to transmit changes, but works module.exports = function (io) { io = io // Create resource that works on lights topic and listens on /api route netbeast('lights').create({ app: 'myplugin', hook: '/api' }) io.on('connection', function () { console.log('ws:// bulb has connected to plugin') }) io.on('disconnection', function () { console.log('ws:// bulb has disconnected from plugin') }) io.on('connect_failure', function (err) { console.trace(err) }) router.post('/', function (req, res) { io.emit('set', { power: req.body.power, color: req.body.color, }) res.status(200).json(req.body) }) router.get('/', function (req, res) { io.emit('get') var timerReference = setTimeout(function () { if (bulbParams) { res.json(bulbParams) } else { res.status(200).json({ error: 'No bulb available' }) } }, 3000) }) return router }
ตอนนี้เป็นเวลาทดสอบแอปพลิเคชัน คุณสามารถจัดแพคเกจทั้งหมดใน tar.gz
จากนั้นอัปโหลดแอปพลิเคชันไปยังแผงควบคุมของคุณในส่วนลากและวาง http: // localhost: 8000 / install
beast package # Compresses your app when ran in myplugin dir
โวล่า! ตอนนี้คุณสามารถไปที่ปลั๊กอินของคุณและทดสอบได้ ไปที่ส่วนเครือข่าย (http: // localhost: 8000 / devices) เพื่อดูวิธีการทำงานและเปลี่ยนสีจากที่นั่น
หากมีบางอย่างผิดพลาดหรือคุณคิดว่าคุณอาจลืมรายละเอียดให้ลองรันในเครื่องด้วยโหนด node index.js
และบางทีการดีบักจะง่ายกว่าในบันทึก netbeast start
หากคุณต้องการให้แอปพลิเคชันปรากฏในแผงควบคุมของส่วนสำรวจของ Netbeast คุณต้องสร้างที่เก็บบน GitHub ด้วยแอปพลิเคชันหรือปลั๊กอิน Netbeast ซึ่งรวมอยู่ในคำอธิบายและ README.md .
หากต้องการค้นหาแอปที่เราสร้างขึ้นให้ใช้ GitHub Search API เราเห็นผลลัพธ์เดียวกันกับที่ปรากฏเมื่อมีการร้องขอ GET ไปที่: https://api.github.com/search/repositories?q=netbeast+language:javascript
คุณจะรู้ว่าแอปพลิเคชันของคุณจะปรากฏขึ้นหากปรากฏขึ้น!
ทั้งสองโครงการเป็นโอเพ่นซอร์สและมีส่วนร่วมกับชุมชนจริงๆ หากคุณต้องการเริ่มสร้างโฟลว์หรือโหนดของคุณเองไปยัง Node-Red ให้ดูที่ไฟล์ เอกสารอย่างเป็นทางการ . ทำตามขั้นตอนที่ระบุไว้และคุณจะสามารถเผยแพร่โหนดหรือสตรีมของคุณเองได้ในเวลาไม่นาน
ในทางกลับกันหากคุณต้องการเข้าไปใน Netbeast คุณสามารถติดตามเอกสารประกอบได้เช่นกันหรือดูที่ที่เก็บพาเนล ด้วยการใช้ Netbeast API คุณไม่จำเป็นต้องมุ่งเน้นไปที่อุปกรณ์แบรนด์หรือเทคโนโลยีแต่ละอย่างดังนั้นลองดูสิ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ NetBeast.co และเข้าร่วม ช่องหย่อน เพื่อหารือเกี่ยวกับ Node-RED, IoT หรือ Node.js
หากคุณต้องการติดตั้งสิ่งนี้บน Raspberry Pi, Beagle Bone หรือเซิร์ฟเวอร์เก่าคุณจะทำให้การแฮ็ก Smart Hub เป็นเรื่องง่าย - ไม่ต้องใช้รหัส! มีตัวติดตั้งสำเร็จรูปสำหรับทั้งสองไซต์
แฮ็คแฮ็ค