在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>快速便宜的HomeKit RGB控制器制作

快速便宜的HomeKit RGB控制器制作

2023-02-07 | zip | 2.24 MB | 次下載 | 免費

資料介紹

描述

Arduino 懷舊之情

我十一歲的時候開始玩 Arduino,我的第一個項目在這里發布(它現在突然消失了嗎?)是在我十三歲的時候——但現在我十八歲了。時間過去了,但幾天前我決定重新打開“Arduino 盒子”,在燒焦的組件和死昆蟲之間,我拿起了我的 Arduino UNO 和一個在 Aliexpress 上購買的 Ethernet Shield 仿制品。我不得不說,這是一個“懷舊項目”,我決定不為這個項目買任何東西,只使用那個盒子里的東西——而且,以太網電纜是免費的,因為我在學校偷了它。

我決定做一個 HomeKit 相關的項目,主要有兩個原因:

  • 我最近買了一個帶 HomeKit 兼容控制器LED 燈條,它以一種奇怪的方式讓我感到驚訝,我不想解釋
  • 因為我所有的數字設備(電腦手機、手表)都是蘋果制造的,它們都有 HomeKit 原生支持

開始之前:安裝 HomeBridge

由于 Ethernet Shield 不是連接家庭自動化配件的最可能方式(在大多數情況下首選 Wi-Fi),因此沒有一種“官方且經過測試”的方式可以直接連接到 HomeKit 而無需中間設置。相反,對于 ESP 系列,有一個庫可以讓 HomeKit 直接訪問開發板,當然配置和設置起來相當復雜。

在這個項目中,Arduino 開發板和 HomeKit 之間的通信由 HomeBridge 管理。HomeBridge 是一個服務器,可以托管在 LAN 上的計算機上,并充當本地網絡設備和互聯網之間的“橋梁”(顧名思義)。這可能是一個缺點,因為需要一臺托管服務器的計算機,但它對于像我們將要制作的簡單編碼設備來說更實用。

就我而言,這不是我實際會使用的設備,它更像是一個演示。所以我在我的 iMac 上托管了 HomeBridge。在本教程中,我不會向您展示如何安裝它,而是為您提供一個有用的鏈接,向您展示正確的安裝方法,請查看此鏈接以在 macOS 上安裝 HomeBridge

在那之后,你可能會看到類似這樣的東西

將 HomeBridge 添加到您的家庭應用

安裝 HomeBridge 后,您必須將所謂的“HomeBridge Hub”添加到 iPhone 上的家庭應用程序。為此,請按照下列步驟操作:

  • 打開家庭應用
  • 單擊屏幕右上角的“+”圖標,然后單擊“添加附件”
  • 掃描 HomeBridge 儀表板上顯示的二維碼
  • 點擊“添加到主頁”
  • 該應用程序會說該橋未經過認證,無論如何都要添加它
  • 選擇橋梁在您家中的位置
  • 為橋選擇一個名字

完成后,橋將添加到您的 Home 應用程序中

安裝 HomeBridge 插件

整個項目依賴于兩個插件,homebridge-http-rgb-pushhomebridge-http-notification-server 對我們來說幸運的是,按照以下步驟安裝這些插件非常容易:

  • 轉到 HomeBridge 的“插件”部分
  • 在搜索欄中輸入兩個庫的名稱
  • 通過單擊“安裝”按鈕安裝庫

通常這個過程很快,應該不會出錯,如果你運氣好,我們就可以進行下一步了。

HomeBridge 配置文件

HomeBridge 配置和定制的核心是一個 JSON 文件。HomeBridge 通過將其加載到瀏覽器內的編輯器中,可以輕松訪問和修改它,該編輯器可以在“配置”面板中輕松訪問。

在這里,您必須做出第一個重要決定,即要為 Arduino 設置的 IP 地址。如果需要,您以后可以隨時更改它。您最有可能希望用于該附件的配置如下。

將其粘貼到“附件”括號內

{
     "accessory": "HttpPushRgb",
     "name": "Arduino RGB",
     "service": "Light",
     "timeout": 3000,
     "switch": {
         "notificationID": "47110815",
         "status": "http://192.168.1.177/statuspower",
         "powerOn": "http://192.168.1.177/on",
         "powerOff": "http://192.168.1.177/off"
      },
     "brightness": {
         "status": "http://192.168.1.177/statusbrightness",
         "url": "http://192.168.1.177/brightness/%s"
     },
     "color": {
         "status": "http://192.168.1.177/statuscolor",
         "url": "http://192.168.1.177/set/%s"
     }
 }

要設置附件名稱,請編輯“名稱”字段。如果你想保留我使用的 IP 地址,那沒問題。最后,您應該會看到這樣的屏幕。

要應用這些更改,您必須通過單擊橙色保存按鈕來保存文件,然后通過單擊右上角的關閉圖標重新啟動 HomeBridge(保存文件后它將開始閃爍)

通過打開 Home 應用程序,您現在應該會看到自動添加的配件。

阿杜諾,終于

是的,我們終于回來了。同樣對于 LED 設置,我使用了我已經擁有的,這就是我使用的:

  • 便宜且通用的 12V LED 燈條
  • 一個 12V 電源適配器(以前用于為損壞的路由器供電

如果你愿意,你可以附加一個簡單的按鈕并將其用作“手動開關”,這也會通過向服務器發送通知來更改 HomeKit 上的狀態。附加一個按鈕不應該那么難,但是有一個關于如何做的很好的教程:)

說到代碼,它并沒有那么復雜。如果您迫不及待地想對此進行測試,則可以直接將其上傳到您的板上,而無需花時間觀看它。但是停下!首先,您應該檢查為 RGB 通道和按鈕定義的引腳分配,然后設置正確的 HomeBridge 服務器 IP 地址和為您的電路板選擇的地址。

// connections of the three LED outputs and the button input
#define outRed 3
#define outGreen 5
#define outBlue 6
#define switchButton 7
// network properties
char homebridgeServer[] = "xxx.xxx.xxx.xxx"; // your HomeBridge server IP address
int homebridgePort = 8581;
IPAddress ip(192, 168, 1, 177); // IP address of Arduino (must be equal to the one set on homebridge!)

您要重點更改的主要地址是 HomeBridge 服務器地址,如果您托管 HomeBridge 的機器具有靜態 IP 地址(例如 Pi),則可以立即設置。就我而言,我的電腦在局域網內沒有靜態 IP 地址,我不想只為這個項目設置靜態地址。如果你的情況和我一樣,你可以使用大多數路由器提供給每個主機的.local mDNS地址(在我的例子中,我設置的地址是“myMacExample.local”,你的路由器的mDNS服務器將自動解析此地址并提示請求到正確的 IP 地址)。

您始終可以在 HomeBridge 儀表板中查看您的 HomeBridge 服務器地址,就在二維碼圖像下方。如果你打算每天使用 HomeBridge,我真的建議你為托管它的機器分配一個靜態 IP 地址。

最后但同樣重要的是,檢查草圖中設置的 Arduino 的 IP 地址是否等于 HomeBridge 配置文件中設置的 IP 地址。

完成所有這些后,您現在可以將以太網擴展板粘貼到 Arduino 上,插入以太網電纜并加載草圖。

解釋代碼

為了確保正確處理以太網設置,我從官方 WebServer 和 WebClient 示例開始構建我的草圖。使用 Arduino 以太網庫發出請求很粗糙,但很容易。

這是在 Home 應用程序中進行更改時系統執行的流程:

  • HomeKit 向 HomeBridge 服務器發送一個事件
  • HomeBridge 服務器然后將其發送到 Arduino
  • Arduino 讓這一切成為現實
  • 為了確認請求已得到滿足,需要一個確認響應,因此 Arduino 在執行操作后向 HomeBridge 發送確認
  • 然后 HomeBridge 確認該操作發生在 HomeKit 上
  • 最后 HomeKit 在 Home 應用程序上顯示更改

處理動作的 GET/SET 的代碼如下。本例為“on”動作的接收-執行-確認流程。

if (firstLine.indexOf("on") != -1) { // action is received
           Serial.println("Turning ON");
           // action is executed
           powerStatus = 1;
           analogWrite(outRed, colorR);
           analogWrite(outGreen, colorG);
           analogWrite(outBlue, colorB);
           // action in confirmed back to the server
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           client.println("Connection: close");
           client.println();
           client.println(powerStatus);
} 

為了通知服務器狀態的變化,例如通過改變開關狀態的按鈕,實現了以下流程

  • Arduino 向 HomeBridge 發送 POST 請求
  • HomeBridge 驗證設備的狀態,驗證是否與 Arduino 發送的相匹配
  • HomeBridge 通知 HomeKit 狀態改變
  • HomeKit 在 Home 應用程序上顯示更改

這是 Arduino 構建和發送的通知請求,其余由 HomeBridge 完成

   Serial.println("==========");
   Serial.println("Button changed the state, sending a notification to HomeBridge");
   if (notificationClient.connect(homebridgeServer, homebridgePort)) {
     if (powerStatus == 0) {
       powerStatus = 1;
     } else {
       powerStatus = 0;
     }
     Serial.print("Successfully connected to: ");
     Serial.println(notificationClient.remoteIP());
     notificationClient.println("POST /47110815 HTTP/1.1");
     notificationClient.print("Host: ");
     notificationClient.print(homebridgeServer);
     notificationClient.print(":");
     notificationClient.println(homebridgePort);
     notificationClient.println("User-Agent: Arduino/1.0");
     if (powerStatus == 0) {
       notificationClient.println("Content-Length: 41");
     } else {
       notificationClient.println("Content-Length: 40");
     }
     notificationClient.println("Content-Type: application/json");
     notificationClient.println();
     if (powerStatus == 0) {
       notificationClient.println("{"characteristic": "On","value": "false"}");
     } else {
       notificationClient.println("{"characteristic": "On","value": "true"}");
     }
     delay(1);
     notificationClient.stop();
     Serial.println("Notification sent");
     Serial.println("==========");
   } else {
     Serial.println("Connection failed");
     Serial.println("==========");
   }

理解了這些流程概念后,代碼就很容易理解了。它由基本的 HTTP 請求組成,如果你問我,它不是那么安全,但 HomeBridge 將確保互聯網連接的安全性。

……有效果嗎?

我真的希望如此!為了確保這一點,請始終注意串行監視器,因為那里會記錄非常有用的調試信息

schermata_2022-08-03_alle_23_18_19_LULEmiPdmy.png?auto=compress%2Cformat&w=740&h=555&fit=max
Arduino 收到一個請求
?

在串行監視器上,您將看到收到的每個請求、完成的請求操作和處理的信息。您還將看到,當按鈕被觸發時,通知請求被發送到服務器

schermata_2022-08-04_alle_01_29_30_neGV5Bekpg.png?auto=compress%2Cformat&w=740&h=555&fit=max
發送到服務器的通知
?

此外,始終檢查 HomeBridge 上的日志,顯示服務器發送或接收的每個請求

schermata_2022-08-04_alle_02_09_46_VhKSwuUBXS.png?auto=compress%2Cformat&w=740&h=555&fit=max
HomeBridge 日志面板
?

嘿 Siri,就這樣(幾乎)

是的,僅此而已。我希望這對你來說很容易設置,因為我很難讓它工作。我遇到了一些問題,例如家庭應用程序上的附件“丟失”,可能是由于 HomeBridge 對 Arduino 的非連續輪詢造成的。要重新獲得對配件的控制,只需在 Home 應用程序上點擊它,這將喚醒 HomeBridge 并將配件重新連接到網絡。

我已經很長時間沒有測試過這個項目了,因此我不建議依賴這種設置作為 DIY 家庭自動化的永久解決方案,肯定有更好的。但是,嘿,這是一個學習的機會,無論是對我還是(我希望?。δ銇碚f,了解這個復雜的東西 - 如 HomeKit - 是如何工作的。

對于任何問題,請不要猶豫寫評論。在這里,我將在 Apple 生態系統內的 Home 應用程序中留下一些最終外觀的屏幕截圖。

?
?
?
img_4296_XlH7hfJxC9.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
?
1 / 4 ?要求 Siri 打開燈
?

?

schermata_2022-08-03_alle_23_50_19_rmYRRTsFS7.png?auto=compress%2Cformat&w=740&h=555&fit=max
macOS 上的“家庭”應用
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 久久综合九色综合欧洲色| 狠狠色丁香久久婷婷| 亚洲欧美日韩在线观看你懂的 | 久久网综合| 狠狠色成色综合网| 国产成人三级| 亚洲午夜免费| 久久国产乱子伦精品免费一| 丁香综合网| 特黄特色大片免费播放路01| 在线播放一区二区精品产| 五月天丁香婷婷网| 欧美一级色视频| 国产三级在线观看| 午夜精品在线| 国产福利午夜| 乌克兰一级毛片| 亚洲人成人| 你懂的 在线观看| 国产亚洲视频在线| 五月天欧美| 中国同志chinese小彬tv| 亚洲免费不卡| 五月天在线播放| 久久国产乱子伦精品免费强| 77788色淫免费网站视频| 久在操| 757福利影院合集3000| 一级毛片一片毛| 欧美三级第一页| h视频欧美| 国产综合视频在线| 免费视频18| 日韩一级片在线观看| 国产aaaaaa| 国产免费资源| 调教双性学霸美人| 欧美伦理影院| 午夜视频福利在线观看| 人人澡人人搞| 婷婷色网站|