คำเตือน : ที่เก็บนี้ในปัจจุบันไม่มีการดูแลรักษา ด้วยเหตุนี้การพัฒนาจึงค้าง พิจารณาใช้ส้อมที่ใช้งานอยู่เช่น LIFX-LAN-client
การใช้งาน Node.js ของโปรโตคอล LIFX พัฒนาขึ้นเพื่อทำงานกับรุ่นเฟิร์มแวร์ขั้นต่ำ 2.0
ห้องสมุดนี้ไม่ได้เป็นพันธมิตรหรือเกี่ยวข้องกับ Lifi Labs, Inc. ในทางใดทางหนึ่ง
$ npm install node-lifx --savenode.js 0.12+ และ io.js ได้รับการทดสอบและรองรับบน Mac, Linux และ Windows
ไฟล์ cli.js มีตัวอย่างการทำงาน
ไลบรารีใช้ไคลเอนต์สำหรับการสื่อสารเครือข่าย ไคลเอนต์นี้จัดการการสื่อสารกับไฟทั้งหมดในเครือข่าย
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . init ( ) ; วัตถุ Client เป็นเหตุการณ์ Eventemitter และ Emmits เมื่อใดก็ตามที่การเปลี่ยนแปลงใด ๆ เกิดขึ้น นี่อาจเป็นการค้นพบแสงใหม่แสงที่ส่งข้อความหรือที่คล้ายกัน ไคลเอนต์เริ่มค้นพบไฟทันทีหลังจากเริ่มต้นด้วยวิธี init หากพบแสงใหม่ไคลเอนต์จะเป็นเหตุการณ์ light-new เหตุการณ์นี้มีแสงเป็นวัตถุที่สามารถเรียกใช้วิธีการ:
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . on ( 'light-new' , function ( light ) {
// Change light state here
} ) ;
client . init ( ) ;สถานะของแสงสามารถเปลี่ยนแปลงได้ด้วยวิธีการที่แตกต่างกัน:
light.on([duration], [callback])สิ่งนี้เปิดไฟ
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
duration | int | 0 | การเปิดจะจางหายไปตลอดเวลา (เป็นมิลลิวินาที) |
callback | การทำงาน | โมฆะ | function(error) {} เรียกว่าหลังจากคำสั่งมาถึงแสงหรือหลัง client.resendMaxTimes ด้วย client.resendPacketDelay ในกรณีที่ไม่มี error เป็น null ในกรณีที่ประสบความสำเร็จและได้รับหากการส่งล้มเหลว |
| หมายเหตุ: การใช้การโหลดเครือข่ายทวีคูณสำหรับคำสั่งนี้สองครั้งขึ้นไป |
ตัวอย่างการใช้งาน:
light . on ( ) ; // Turns the light on instantly
light . on ( 2000 ) ; // Fading the light on over two seconds light.off([duration], [callback])สิ่งนี้จะปิดไฟ
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
duration | int | 0 | การปิดจะจางหายไปตลอดเวลา (เป็นมิลลิวินาที) |
callback | การทำงาน | โมฆะ | function(error) {} เรียกว่าหลังจากคำสั่งมาถึงแสงหรือหลัง client.resendMaxTimes ด้วย client.resendPacketDelay ในกรณีที่ไม่มี error เป็น null ในกรณีที่ประสบความสำเร็จและได้รับหากการส่งล้มเหลว |
| หมายเหตุ: การใช้การโหลดเครือข่ายทวีคูณสำหรับคำสั่งนี้สองครั้งขึ้นไป |
ตัวอย่างการใช้งาน:
light . off ( ) ; // Turns the light off instantly
light . off ( 2000 ) ; // Fading the light off over two seconds light.color(hue, saturation, brightness, [kelvin], [duration], [callback])เปลี่ยนสีของแสงเป็นค่าสี HSB นี่คือวิธีที่ต้องการในการเปลี่ยนสีของแสง
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
hue | int | ระหว่าง 0 ถึง 360 แสดงถึงสีสีในระดับที่เปลี่ยนสี | |
saturation | int | ระหว่าง 0 ถึง 100 แสดงถึงความเข้มของสีจาก 0% ถึง 100% | |
brightness | int | ระหว่าง 0 ถึง 100 แสดงถึงความสว่างของแสงจาก 0% ถึง 100% | |
kelvin | int | 3500 | ระหว่าง 2,500 ถึง 9000 แสดงถึงอุณหภูมิสี |
duration | int | 0 | จางหายไปเป็นค่าใหม่เมื่อเวลาผ่านไป (เป็นมิลลิวินาที) |
callback | การทำงาน | โมฆะ | function(error) {} เรียกว่าหลังจากคำสั่งมาถึงแสงหรือหลัง client.resendMaxTimes ด้วย client.resendPacketDelay ในกรณีที่ไม่มี error เป็น null ในกรณีที่ประสบความสำเร็จและได้รับหากการส่งล้มเหลว |
| หมายเหตุ: การใช้การโหลดเครือข่ายทวีคูณสำหรับคำสั่งนี้สองครั้งขึ้นไป |
ตัวอย่างการใช้งาน:
light . color ( 0 , 100 , 50 ) ; // Set to red at 50% brightness
light . color ( 50 , 50 , 80 , 3500 , 2000 ) ; // Set to a light green at 80% brightness over next two seconds light.colorRgbHex(hexString, [duration], [callback]) เปลี่ยนสีของแสงเป็นค่าสี RGB ที่กำหนดในรูปแบบ hex โปรดทราบว่า RGB ไม่ดีแสดงถึงสีของแสงชอบค่า HSBK ที่ได้รับผ่านวิธีการ color
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
hexString | สาย | สตริง hex rgb เริ่มต้นด้วย # | |
duration | int | 0 | จางหายไปเป็นค่าใหม่เมื่อเวลาผ่านไป (เป็นมิลลิวินาที) |
callback | การทำงาน | โมฆะ | function(error) {} เรียกว่าหลังจากคำสั่งมาถึงแสงหรือหลัง client.resendMaxTimes ด้วย client.resendPacketDelay ในกรณีที่ไม่มี error เป็น null ในกรณีที่ประสบความสำเร็จและได้รับหากการส่งล้มเหลว |
| หมายเหตุ: การใช้การโหลดเครือข่ายทวีคูณสำหรับคำสั่งนี้สองครั้งขึ้นไป |
ตัวอย่างการใช้งาน:
light . colorRgbHex ( '#F00' ) ; // Set to red
light . colorRgbHex ( '#FFFF00' ) ; // Set to yellow light.colorRgb(red, green, blue, [duration], [callback]) เปลี่ยนสีของแสงเป็นค่าสี RGB โปรดทราบว่า RGB ไม่ดีแสดงถึงสีของแสงชอบค่า HSBK ที่ได้รับผ่านวิธีการ color
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
red | int | Amout of Red มีสีตั้งแต่ 0 ถึง 255 | |
green | int | Amout of Green มีสีตั้งแต่ 0 ถึง 255 | |
blue | int | Amout of Blue มีสีตั้งแต่ 0 ถึง 255 | |
duration | int | 0 | จางหายไปเป็นค่าใหม่เมื่อเวลาผ่านไป (เป็นมิลลิวินาที) |
callback | การทำงาน | โมฆะ | function(error) {} เรียกว่าหลังจากคำสั่งมาถึงแสงหรือหลัง client.resendMaxTimes ด้วย client.resendPacketDelay ในกรณีที่ไม่มี error เป็น null ในกรณีที่ประสบความสำเร็จและได้รับหากการส่งล้มเหลว |
| หมายเหตุ: การใช้การโหลดเครือข่ายทวีคูณสำหรับคำสั่งนี้สองครั้งขึ้นไป |
ตัวอย่างการใช้งาน:
light . colorRgb ( 255 , 0 , 0 ) ; // Set to red
light . colorRgb ( 255 , 255 , 0 ) ; // Set to yellow light.maxIR(brightness, callback)ตั้งค่าความสว่างอินฟราเรดสูงสุดของแสง (เฉพาะไฟที่รองรับแสงอินฟราเรด)
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
brightness | int | ระหว่าง 0 ถึง 100 แสดงถึงความสว่างของแสงจาก 0% ถึง 100% | |
callback | การทำงาน | function(error, data) {} |
ตัวอย่างการใช้งาน:
light . maxIR ( 0 ) ; // Set's a maximum infrared brightness of 0
light . maxIR ( 25 ) ; // Set's a maximum infrared brightness of 25 light.getMaxIR(callback)ขอความสว่างอินฟราเรดสูงสุดของแสง (เฉพาะไฟที่รองรับแสงอินฟราเรด)
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
{
brightness : 25
}Infos ของรัฐและสเป็คของแสงสามารถขอได้ด้วยวิธีการต่อไปนี้:
light.getState(callback)ขอข้อมูลทั่วไปจากแสงซึ่งรวมถึงสีฉลากและสถานะพลังงาน ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
{
color : { hue : 120 , saturation : 0 , brightness : 100 , kelvin : 8994 } ,
power : 0 ,
label : 'Kitchen'
} light.getPower(callback)ขอสถานะพลังงานปัจจุบัน (เปิดหรือปิด) ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
0 // off light.getFirmwareVersion(callback)ขอเวอร์ชันเฟิร์มแวร์จากแสง (รุ่นรองและรุ่นใหญ่) ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getHardwareVersion(callback)ร้องขอเวอร์ชันฮาร์ดแวร์จากแสง (ผู้ขายผลิตภัณฑ์และเวอร์ชัน) ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
{
vendorId : 1 ,
vendorName : 'LIFX' ,
productId : 1 ,
productName : 'Original 1000' ,
version : 6 ,
productFeatures : {
color : true ,
infrared : false ,
multizone : false
}
} light.getFirmwareInfo(callback)ขอข้อมูลจากหน่วยคอนโทรลเลอร์ขนาดเล็กของแสง (Signal, TX และ RX) ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
{
signal : 0 ,
tx : 0 ,
rx : 0
} light.getWifiInfo(callback)ขอข้อมูล WiFi จากแสง (Signal, TX และ RX) ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
{
signal : 0.000009999999747378752 ,
tx : 16584 ,
rx : 12580
} light.getWifiVersion(callback)ร้องขอเวอร์ชันเฟิร์มแวร์ WiFi จาก Light (รุ่นรองและรุ่นใหญ่) ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getAmbientLight(callback)ขอค่าแสงโดยรอบในฟลักซ์จากแสง ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} |
ตัวอย่างผลลัพธ์:
null ,
10ฉลากไฟสามารถร้องขอและตั้งค่าโดยใช้วิธีการต่อไปนี้:
light.getLabel(callback, [cache])ขอฉลากของแสง ฟังก์ชั่นนี้เป็นแบบอะซิงโครนัส
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
callback | การทำงาน | function(error, data) {} | |
cache | บูลีน | เท็จ | ใช้ค่าสุดท้ายที่รู้จักสำหรับฉลากและไม่ขอจากแสงอีกครั้ง |
ตัวอย่างผลลัพธ์:
null ,
'Kitchen' light.setLabel(label, [callback])ตั้งค่าฉลากใหม่สำหรับแสง
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
label | สาย | ฉลากใหม่ที่มีขนาดสูงสุด 32 บิต (ซึ่งมีความยาว 32 กับตัวอักษรที่ไม่ใช่ Unicode) | |
callback | การทำงาน | โมฆะ | function(error) {} เรียกว่าหลังจากคำสั่งมาถึงแสงหรือหลัง client.resendMaxTimes ด้วย client.resendPacketDelay ในกรณีที่ไม่มี error เป็น null ในกรณีที่ประสบความสำเร็จและได้รับหากการส่งล้มเหลว |
| หมายเหตุ: การใช้การโหลดเครือข่ายทวีคูณสำหรับคำสั่งนี้สองครั้งขึ้นไป |
ตัวอย่างการใช้งาน:
light . setLabel ( 'Bedroom Light' ) ;
light . setLabel ( 'Kitchen Light 4' , function ( err ) {
if ( err ) { throw err ; }
console . log ( 'New light label has been set' ) ;
} ) ;client.light(identifier)ค้นหาแสงในรายการปิดไฟทั้งหมดด้วย IP, LABEL หรือ ID
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
identifier | สาย | Light Label (case sensitive) client.light('Kitchen') , ที่อยู่ IP client.light('192.168.2.102') หรือ Light ID client.light('0123456789012') |
ส่งคืนวัตถุแสงที่สามารถใช้ในการเรียกใช้วิธีการ ตัวอย่างเช่น client.light('192.168.2.102').on()
client.lights([filter])รับรายการไฟที่รู้จักทั้งหมด
| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
filter | สาย | โมฆะ | รายการตัวกรองของไฟเพื่อส่งคืนเฉพาะที่ใช้งาน ( null หรือ 'on' ), ไม่ใช้งาน ( 'off' ) หรือทั้งหมด ( '' ) |
เหตุการณ์ต่อไปนี้อาจถูกส่งโดยลูกค้า
light-new เหตุการณ์นี้จะถูกโยนลงเมื่อมีการค้นพบแสงใหม่ที่ไม่เคยเห็นมาก่อนรันไทม์มาก่อน เหตุการณ์นี้มาพร้อมกับวัตถุไฟใหม่ client.on('light-new', function(light) {});
light-offline เหตุการณ์นี้จะถูกโยนลงเมื่อแสงไม่ได้ถูกค้นพบในช่วงเวลาหนึ่ง แสงที่กำหนดไม่คาดว่าจะเข้าถึงได้อีกต่อไป client.on('light-offline', function(light) {});
light-online เหตุการณ์นี้จะถูกโยนเมื่อแสงถูกค้นพบอีกครั้งหลังจากถูกออฟไลน์ client.on('light-online', function(light) {});
การค้นพบสำหรับลูกค้าแต่ละรายสามารถเริ่มต้นและหยุดที่รันไทม์โดยใช้คำสั่งเหล่านี้:
client.startDiscovery()เริ่มกระบวนการค้นพบ
client.stopDiscovery()หยุดกระบวนการค้นพบ
สำหรับการเริ่มต้นของไคลเอนต์การตั้งค่าที่แตกต่างกันสามารถให้ได้ นี่คือตัวอย่างที่มีตัวเลือกเริ่มต้น:
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
// ...
client . init ( {
lightOfflineTolerance : 3 , // A light is offline if not seen for the given amount of discoveries
messageHandlerTimeout : 45000 , // in ms, if not answer in time an error is provided to get methods
startDiscovery : true , // start discovery after initialization
resendPacketDelay : 150 , // delay between packages if light did not receive a packet (for setting methods with callback)
resendMaxTimes : 3 , // resend packages x times if light did not receive a packet (for setting methods with callback)
debug : false , // logs all messages in console if turned on
address : '0.0.0.0' , // the IPv4 address to bind the udp connection to
broadcast : '255.255.255.255' , // set's the IPv4 broadcast address which is addressed to discover bulbs
lights : [ ] // Can be used provide a list of known light IPv4 ip addresses if broadcast packets in network are not allowed
// For example: ['192.168.0.112', '192.168.0.114'], this will then be addressed directly
} ) ;