تحذير : لا يحتوي هذا المستودع حاليًا على مشرف نشط. لهذا السبب ، فإن التنمية قديمة. فكر في استخدام شوكة نشطة ، مثل Lifx-Lan-Client.
تنفيذ Node.js لبروتوكول LIFX. تم تطويره للعمل مع إصدار الحد الأدنى للبرامج الثابتة من 2.0.
هذه المكتبة ليست ، بأي حال من الأحوال ، تابعة أو مرتبطة بـ LIFI Labs ، Inc .. استخدمها على مسؤوليتك الخاصة.
$ npm install node-lifx --saveيتم اختبار Node.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 | بين 2500 و 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 Pis يمثل لون الضوء ، يفضل قيم 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 Pis يمثل لون الضوء ، يفضل قيم HSBK المعطاة عبر طريقة color .
| خيار | يكتب | تقصير | وصف |
|---|---|---|---|
red | int | Amout من اللون الأحمر من 0 إلى 255 | |
green | int | Amout من اللون الأخضر من 0 إلى 255 | |
blue | int | Amout من اللون الأزرق من 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 of the State ومواصفات الضوء بالطرق التالية:
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)يطلب معلومات من وحدة التحكم الصغيرة للضوء (إشارة ، TX و RX). هذه الوظيفة غير متزامنة.
| خيار | يكتب | تقصير | وصف |
|---|---|---|---|
callback | وظيفة | function(error, data) {} |
النتيجة مثال:
null ,
{
signal : 0 ,
tx : 0 ,
rx : 0
} light.getWifiInfo(callback)يطلب معلومات wifi من الضوء (إشارة ، TX و RX). هذه الوظيفة غير متزامنة.
| خيار | يكتب | تقصير | وصف |
|---|---|---|---|
callback | وظيفة | function(error, data) {} |
النتيجة مثال:
null ,
{
signal : 0.000009999999747378752 ,
tx : 16584 ,
rx : 12580
} light.getWifiVersion(callback)يطلب إصدار البرنامج الثابت WiFi من الضوء (الإصدار الثانوي والرائد). هذه الوظيفة غير متزامنة.
| خيار | يكتب | تقصير | وصف |
|---|---|---|---|
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 مع chars غير 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 | خيط | تسمية الضوء (حساس الحالة) client.light('Kitchen') client.light('0123456789012') عميل عنوان IP client.light('192.168.2.102') |
إرجاع كائن الضوء الذي يمكن بعد ذلك استخدامه لاتصال طرقه. على سبيل المثال 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
} ) ;