日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

lightblue使用教程_使用LightBlue Bean和IFTTT自动化LIFX灯

發(fā)布時(shí)間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lightblue使用教程_使用LightBlue Bean和IFTTT自动化LIFX灯 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

lightblue使用教程

LightBlue Bean是一款小型低功耗藍(lán)牙Arduino微控制器,具有內(nèi)置3軸加速度計(jì)和溫度傳感器。 通過(guò)藍(lán)牙連接而不是Wi-Fi向?qū)ο筇砑舆B接是非常有趣的方法。 它具有像典型的Arduino一樣的數(shù)字和模擬引腳,因此您可以通過(guò)在設(shè)置中添加新元素來(lái)擴(kuò)展其功能。

為了添加新元素,需要一點(diǎn)焊接。 對(duì)于本文,我想要一個(gè)無(wú)焊點(diǎn)的演示,任何擁有LightBlue Bean的人都可以遵循,因此我們將專(zhuān)注于內(nèi)置加速度計(jì)。 幾個(gè)月前,我在SitePoint上整理了一個(gè)IFTTT演示, 當(dāng)我將Jawbone UP24設(shè)置為睡眠模式時(shí) ,該演示會(huì)自動(dòng)關(guān)閉LIFX燈 。 這是一個(gè)不錯(cuò)的選擇,但我仍然需要每天晚上拿出我的智能手機(jī)來(lái)打開(kāi)燈。 我更喜歡自動(dòng)的東西,因此決定嘗試一些技術(shù)實(shí)驗(yàn),以方便的方式打開(kāi)燈。 在本文中,我將介紹我的第一個(gè)原型-我將使用LightBlue Bean檢測(cè)我的門(mén)的移動(dòng)并根據(jù)我的門(mén)是打開(kāi)還是關(guān)閉來(lái)打開(kāi)或關(guān)閉燈。

對(duì)于那些喜歡LightBlue Bean的人來(lái)說(shuō),在Kickstarter上有一個(gè)更新版本的LightBlue Bean,現(xiàn)在叫做LightBlue Bean + ,看起來(lái)很漂亮! 它具有可充電電池,無(wú)焊連接器和許多其他有用的功能。 僅剩幾天時(shí)間可以保證您的承諾!

這將如何工作

我們的演示將像這樣工作:

  • 將LightBlue Bean粘貼在我們要跟蹤的門(mén)上。
  • 上傳一個(gè)Arduino草圖,監(jiān)視加速度計(jì)的變化(門(mén)向另一側(cè)擺動(dòng)),并通過(guò)Bean Loader虛擬串口發(fā)送消息。
  • 設(shè)置節(jié)點(diǎn)服務(wù)器,以監(jiān)視通過(guò)的串行消息。
  • 在節(jié)點(diǎn)服務(wù)器中設(shè)置對(duì)那些消息的響應(yīng),以將HTTP請(qǐng)求發(fā)送到IFTTT的Maker通道,以告訴它打開(kāi)燈。
  • 將LightBlue Bean設(shè)置為虛擬串行模式。
  • 運(yùn)行節(jié)點(diǎn)服務(wù)器,然后關(guān)上門(mén),看看您的燈是否亮起!
  • 稍后可以在我們的節(jié)點(diǎn)服務(wù)器中包含其他規(guī)則,以確保代碼也僅在一天的特定時(shí)間運(yùn)行(以避免在真正不需要的時(shí)候亮燈)。 甚至更好–附加一個(gè)光電電阻器以自動(dòng)檢測(cè)是否需要照明!

    設(shè)置您的LightBlue Bean

    如果您不熟悉LightBlue Bean,則需要在Windows 8.1或Mac計(jì)算機(jī)上同時(shí)安裝最新的Arduino軟件和Bean Loader軟件(顯然,Bean Loader軟件在較舊的Windows PC上不起作用)。 在LightBlue Bean網(wǎng)站上,將LightBlue Bean連接到Mac或PC的指南非常詳盡:

    • Mac OSX入門(mén)
    • Windows 8.1入門(mén)

    該演示已經(jīng)在Mac OSX上進(jìn)行了設(shè)置,但理論上也應(yīng)該在Windows上也可以運(yùn)行。

    本文中的步驟將假定您熟悉將草圖放到LightBlue Bean上的基礎(chǔ)知識(shí),如果沒(méi)有,請(qǐng)首先通過(guò)上面操作系統(tǒng)的“入門(mén)”鏈接運(yùn)行。

    我們的Arduino素描代碼

    GitHub上提供了所有代碼,供您使用和適應(yīng)您選擇的任何目的!

    我們的Arduino草圖包含門(mén)后注視的大部分大腦,看起來(lái)像這樣:

    int minXVal = 0; int maxXVal = 0; int minYVal = 0; int maxYVal = 0; int minZVal = 0; int maxZVal = 0; int movement = 15; bool ready = false;void setup() {Serial.begin(); }void loop() {AccelerationReading acceleration = Bean.getAcceleration();if (!ready) {for (int i = 0; i maxXVal) {maxXVal = acceleration.xAxis;} else if (acceleration.xAxis maxYVal) {maxYVal = acceleration.yAxis;} else if (acceleration.yAxis maxZVal) {maxZVal = acceleration.zAxis;} else if (acceleration.zAxis maxZVal + movement) {String stringToPrint = "OPEN";Serial.println(stringToPrint);}}Bean.sleep(1000); }

    我們的草圖代碼說(shuō)明

    首先,您將看到一系列名為minXVal , maxXVal , minYVal , maxYVal , minZVal和maxZVal 。 這些跟蹤我們的LightBlue Bean的初始加速度計(jì)讀數(shù)。 在我的演示代碼中,我們僅真正使用z值,但是我將其他值留在了這里,因?yàn)槟赡苄枰褂盟鼈兊闹颠M(jìn)行自己的實(shí)現(xiàn)(例如,如果將Bean放在門(mén)上的其他方向,或者另一扇門(mén),例如推拉門(mén))。 加速度計(jì)跟蹤Bean兩側(cè)的重力。 我們只想知道這些力的變化,因此我們需要知道當(dāng)Bean固定在我們敞開(kāi)的門(mén)上時(shí),最初作用在Bean上的力的范圍。 這是我們存儲(chǔ)這些值的地方:

    int minXVal = 0; int maxXVal = 0; int minYVal = 0; int maxYVal = 0; int minZVal = 0; int maxZVal = 0;

    接下來(lái),我們?cè)O(shè)置一個(gè)稱為movement的變量,該變量是觸發(fā)動(dòng)作之前我們將接受的移動(dòng)級(jí)別。 您需要根據(jù)自己的情況進(jìn)行調(diào)整(您的門(mén)在打開(kāi)時(shí)可能比我的門(mén)移動(dòng)得更細(xì)微)。 在示例代碼中,我們?cè)试S在觸發(fā)任何操作之前將最小值和最大值從-15移到+15。

    int movement = 15;

    我們將需要時(shí)間來(lái)運(yùn)行最小和最大值的初始測(cè)試,因此我們使用ready變量告訴循環(huán)是否準(zhǔn)備好開(kāi)始觀察最小和最大范圍內(nèi)的門(mén)移動(dòng):

    bool ready = false;

    在我們的setup() Arduino函數(shù)中,我們將串行連接設(shè)置為在Arduino準(zhǔn)備就緒時(shí)開(kāi)始運(yùn)行:

    void setup() {Serial.begin(); }

    在我們的循環(huán)中,我們對(duì)Bean中的加速度計(jì)值進(jìn)行了所有觀察。 所有這些都可以通過(guò)在loop()函數(shù)開(kāi)始時(shí)設(shè)置的acceleration變量來(lái)讀取:

    void loop() {AccelerationReading acceleration = Bean.getAcceleration();// Our accelerometer tests }

    我們的第一個(gè)加速度計(jì)讀數(shù)將是實(shí)現(xiàn)最小值和最大值的讀數(shù)。 當(dāng)ready最初為false時(shí),將運(yùn)行這些命令。 讀取初始讀數(shù)100次,每10毫秒一次,應(yīng)該準(zhǔn)備好最小值和最大值,大約一秒鐘。 一旦通過(guò)此循環(huán),我們將ready設(shè)置為true,以便可以進(jìn)入下一階段。 但是,我們?cè)谀抢镱I(lǐng)先一步,首先我們將介紹本循環(huán)中的內(nèi)容。

    if (!ready) {for (int i = 0; i Within each 10 millisecond reading, we read in each axis' accelerometer value viaacceleration.xAxis , acceleration.yAxis and acceleration.zAxis . We compare each to the current max and min values we have stored for each axis and if it is greater than or less than the respective value, we update it to the new minimum or maximum:[code language="c"] if (acceleration.xAxis > maxXVal) {maxXVal = acceleration.xAxis; } else if (acceleration.xAxis The next phase is the one in which we watch for movement that occurs outside of the min/max values that is greater than our movement variable.

    For the door movement, I only needed to test the z values as that was the axis which changed most when my door swung open and closed. If they were less than the minimum resting value, then my door was being closed and if they were greater than the maximum resting value, the door was being opened. This may be different for your if your LightBlue Bean is placed differently on your door. Experiment and see what works for you!

    For each, we send either "OPEN" or "CLOSED" over the software serial port via Serial.println(stringToPrint) .[code language="c"] else {if (acceleration.zAxis maxZVal + movement) {String stringToPrint = "OPEN";Serial.println(stringToPrint);} }

    裝豆

    在將該代碼粘貼到Bean之前,請(qǐng)以您喜歡的方式將LightBlue Bean粘貼到您的門(mén)上。 我將Blu Tack用作臨時(shí)工具,但Bean看起來(lái)足夠輕,可以完美地粘在它上面。 對(duì)于我的示例代碼,我像這樣附加了LightBlue Bean:

    免費(fèi)學(xué)習(xí)PHP!

    全面介紹PHP和MySQL,從而實(shí)現(xiàn)服務(wù)器端編程的飛躍。

    原價(jià)$ 11.95 您的完全免費(fèi)

    設(shè)置LIFX和IFTTT

    為了能夠告訴我們的LIFX燈泡打開(kāi)和關(guān)閉,我們將設(shè)置一個(gè)IFTTT規(guī)則來(lái)執(zhí)行此操作。 我設(shè)置了一些食譜,可以在門(mén)關(guān)上時(shí)打開(kāi)燈,如果我再次打開(kāi)門(mén)離開(kāi)房間,則可以關(guān)閉燈。

    我假設(shè)讀者了解本文的IFTTT基礎(chǔ)知識(shí)。 如果沒(méi)有,請(qǐng)快速閱讀我以前的文章“ 使用IFTTT將LIFX燈泡連接到IoT” 。

    我們創(chuàng)建的兩個(gè)配方將使用Maker通道作為觸發(fā)通道,并使用事件名稱“ bean_door_closed”(打開(kāi)燈)和“ bean_door_opened”(關(guān)閉燈)。 動(dòng)作通道為L(zhǎng)IFX,動(dòng)作為“打開(kāi)燈”或“關(guān)閉燈”。 完成后,它們應(yīng)如下所示:

    我們的節(jié)點(diǎn)服務(wù)器代碼說(shuō)明

    節(jié)點(diǎn)服務(wù)器的代碼如下所示:

    var port = process.env.PORT || 5000,SerialPort = require("serialport").SerialPort,serialPort = new SerialPort("/dev/cu.LightBlue-Bean", {baudrate: 57600}),request = require('request');serialPort.on("open", function () {console.log("Connected to LightBlue Bean serial port");serialPort.on("data", function(data) {console.log("Data: " + data);data = data + "";if (data == "CLOSED") {request.post({url: "http://maker.ifttt.com/trigger/bean_door_closed/with/key/YOURKEYHERE"}, function(error, response, body) {console.log(body);if (error) console.log("Error was ", error);});} else if (data == "OPEN") {request.post({url: "http://maker.ifttt.com/trigger/bean_door_open/with/key/YOURKEYHERE"}, function(error, response, body) {console.log(body);if (error) console.log("Error was ", error);});}}); });

    服務(wù)器的啟動(dòng)通過(guò)node-serialport模塊設(shè)置了我們的串行端口功能,將其設(shè)置為以57600波特觀看。 我們還定義了我們的請(qǐng)求模塊,該模塊將對(duì)IFTTT進(jìn)行HTTP調(diào)用。

    var SerialPort = require("serialport").SerialPort,serialPort = new SerialPort("/dev/cu.LightBlue-Bean", {baudrate: 57600}),request = require('request');

    然后,我們打開(kāi)與串行端口的連接,并開(kāi)始查看串行端口中是否有任何消息。 它注銷(xiāo)接收到的所有消息(當(dāng)門(mén)打開(kāi)和關(guān)閉時(shí),我們應(yīng)該看到“數(shù)據(jù):打開(kāi)”和“數(shù)據(jù):關(guān)閉”日志的列表)。

    serialPort.on("open", function () {console.log("Connected to LightBlue Bean serial port");serialPort.on("data", function(data) {console.log("Data: " + data);data = data + "";// Responding to "OPEN" and "CLOSED"} }

    如果我們收到的數(shù)據(jù)是字符串"CLOSED" ,我們向http://maker.ifttt.com/trigger/bean_door_closed/with/key/YOURKEYHERE發(fā)出HTTP請(qǐng)求(用密鑰IFTTT替換YOURKEYHERE會(huì)在Maker頻道上為您提供頁(yè) )。 成功完成后,我們將記錄來(lái)自IFTTT的響應(yīng),該響應(yīng)應(yīng)類(lèi)似于"Congratulations! You've fired the bean_door_closed event" 。

    我們只對(duì)URL中的操作從bean_door_closed到bean_door_open進(jìn)行"OPEN"操作。

    if (data == "CLOSED") {request.post({url: "http://maker.ifttt.com/trigger/bean_door_closed/with/key/YOURKEYHERE"}, function(error, response, body) {console.log(body);if (error) console.log("Error was ", error);}); } else if (data == "OPEN") {// Same pattern! }

    運(yùn)行一切

    如果尚未安裝,請(qǐng)按照前面所述將Bean粘貼到門(mén)上,然后使用草圖對(duì)LightBlue Bean進(jìn)行編程。

    然后,右鍵單擊Bean Loader中的Bean,然后選擇“用于虛擬串行”。 這將為從LightBlue Bean傳輸來(lái)的所有消息設(shè)置虛擬串行端口。

    通過(guò)運(yùn)行以下命令為節(jié)點(diǎn)服務(wù)器安裝所有依賴項(xiàng):

    npm install

    然后運(yùn)行服務(wù)器:

    node index.js

    (如果以上任何一個(gè)命令對(duì)您來(lái)說(shuō)看起來(lái)都是胡言亂語(yǔ),我建議您先嘗試一下Node上的內(nèi)容,然后再嘗試!)

    打開(kāi)和關(guān)閉那扇門(mén)! 您應(yīng)該看到日志顯示了根據(jù)門(mén)的擺動(dòng)對(duì)您的IFTTT服務(wù)器的呼叫。 我發(fā)現(xiàn)需要對(duì)movement靈敏度進(jìn)行一些調(diào)整才能使其正常工作,因此您可能需要對(duì)其進(jìn)行一些調(diào)整。

    如果您將LightBlue Bean放在門(mén)的另一側(cè),我認(rèn)為您可能需要在Arduino草圖中切換“ CLOSED”和“ OPEN”的輸出,因?yàn)锽ean朝向相反的方向。

    結(jié)論

    這就是如何使用LightBlue Bean,IFTTT,LIFX和Node神奇地關(guān)閉和打開(kāi)燈,具體取決于門(mén)是打開(kāi)還是關(guān)閉! 您可以修改此代碼以代替檢測(cè)是否拾起或移動(dòng)了一個(gè)對(duì)象(想象一下,有人試圖打開(kāi)盒子或抽屜時(shí),向您的帳戶發(fā)送一條推文)。 LightBlue Bean足夠小,以至于不會(huì)礙事并且很容易附著在東西上!

    如果您確實(shí)使用此代碼創(chuàng)建了一個(gè)天才的安全系統(tǒng),以保護(hù)您的愛(ài)糖同事免于食用您的甜食(或與筆記本電腦同樣重要的東西!),或其他我沒(méi)想到的有趣用途–請(qǐng)不要使用請(qǐng)?jiān)谠u(píng)論中注明或在Twitter( @thatpatrickguy )上與我聯(lián)系,我很想聽(tīng)聽(tīng)您的建造!

    我還在我的新隨附網(wǎng)站DevDiner.com上整理了一組與LightBlue Bean開(kāi)發(fā)相關(guān)的精選鏈接 。 因此,如果您確實(shí)在網(wǎng)上找到了有關(guān)此主題的鏈接,并且覺(jué)得非常有用,請(qǐng)與我聯(lián)系,以便將其添加到指南中!

    翻譯自: https://www.sitepoint.com/automating-lifx-lights-with-the-lightblue-bean-and-ifttt/

    lightblue使用教程

    總結(jié)

    以上是生活随笔為你收集整理的lightblue使用教程_使用LightBlue Bean和IFTTT自动化LIFX灯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。