91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

智能家居之旅(7):HomeAssistant開發板的RGB顏色

AIoT行業洞察 ? 來源:AIoT行業洞察 ? 作者:AIoT行業洞察 ? 2024-07-03 16:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

hello,有誰還記得之前小美的視頻?當時做了一個RGB燈,并且說了 RGB的一些開發過程。所以說RGB實體很早之前就已經開發好了,只是一直沒有寫帖子介紹它的用法。今天就給大家介紹一下 RGB 彩燈怎么上HomeAssistant,然后控制Ai-M61開發板的 RGB 燈的顏色,感覺這個項目用來控制家里的燈條就挺不錯的。

wKgZomaFDkSAftXLABCGnGpLyrQ663.gif

彩燈實體創建

1.彩燈實體資源啟用

彩燈實體在 HomeAssistant 上描述為 Light,HomeAssistant-C 上默認也是不開啟的,所以需要在 homeAssistantDevConfig.h 當中把#define CONFIG_ENTITY_ENABLE_LIGHT的值置 1:

wKgaomaFDkSAf-z9AAAUWLY7XDU90.jpeg

2.Light 實體創建

彩燈(Light)實體的創建位置和其他實體一樣,就是在 MQTT 連接成功的事件里面,這里就不多說了,需要說明的是,彩燈實體會比其他實體多很多的控制主題,有開關、亮度、顏色等等。HomeAssistant-C 中,默認只給開關功能提供默認的主題,所以在創建實體的時候,除了 name、unique_id 參數之外,還需要給顏色控制燈主題賦值參數,例如:

static ha_lh_entity_t rgb_light = {

.name = "彩燈",

.unique_id = "light_rgb01",

.rgb.rgb_command_topic = "light_rgb01/set",

.rgb.rgb_state_topic = "light_rgb01/state",

};

homeAssistant_device_add_entity(CONFIG_HA_ENTITY_LIGHT, &rgb_light);

HA 設備顯示

wKgZomaFDkyAUegxAABen5rzpd472.jpeg

獲取 HomeAssistant 的控制指令

在 HomeAssistant-C 當中,暫時定義好了 Light 的三個控制事件:

HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH,//light 燈的開關事件

HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE,//light 燈的 RGB 顏色下發事件

HA_EVENT_MQTT_COMMAND_LIGHT_BRIGHTNESS,//light 燈的亮度數據下發事件

在這里只對

HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH 和 HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE 這兩個事件來控制 RGB,在 HomeAssistant 事件回調函數當中(這里的函數名為:ha_event_cb),添加以下內容:

case HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH:

break;

case HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE:

break;

wKgaomaFDkyAEZQiAACwjS6Vxkw84.jpeg

1.讀取 HA 的開關控制命令

HomeAssistant 平臺的下發開關控制之后,會觸發 HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH 事件,所以在

HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH 下,打印開關信息,實現有開關下發就輸出信息,然后返回當前開關狀態:

case HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH:

LOG_I("<<<<<<<<<< HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH %s", ha_dev->entity_light->command_light->light_state?"ON":"OFF");

homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_LIGHT, ha_dev->entity_light->command_light, ha_dev->entity_light->command_light->light_state);

break;

驗證結果

wKgZomaFDlKAGNhOAABREG_yJPw53.jpeg

2.讀取 HA 的顏色更新命令

同樣的,HomeAssistant 平臺設置顏色時,會觸發HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE事件,這時就需要在這個事件當中獲取顏色 RGB 的顏色值,在這個事件下添加以下內容,把顏色 R,G,B 的值打印出來并同步給 HA:

case HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE:

LOG_I("<<<<<<<<<< HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE,RGB=%d,%d,%d", ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

// device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_LIGHT, ha_dev->entity_light->command_light, ha_dev->entity_light->command_light->light_state);

break;

驗證結果

wKgaomaFDlKAKxVgAABmhotp-4E55.jpeg

控制 RGB

開發板上的 RGB 是直接由引腳控制,想要實現顏色調節的話,就需要開啟 PWM 控制,通過控制紅綠藍三基色來實現調色。先要把控制 RGB 的引腳啟動 PWM 功能,先看一下 Ai-M61 開發板 RGB 的接線情況:

顏色GPIOPWM 通道紅燈IO12PWM0綠燈IO14PWM2藍燈IO15PWM3

1.初始化 RGB 引腳

已經知道引腳配置之后,直接在主函數當中初始化 RGB 引腳,在初始化階段添加以下代碼

struct bflb_device_s* gpio;

gpio = bflb_device_get_by_name("gpio");

bflb_gpio_init(gpio, 12, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);

bflb_gpio_init(gpio, 14, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);

bflb_gpio_init(gpio, 15, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);

pwm = bflb_device_get_by_name("pwm_v2_0");

//100Hz

struct bflb_pwm_v2_config_s cfg = {

.clk_source = BFLB_SYSTEM_XCLK ,

.clk_div = 40,

.period = 1000,

};

bflb_pwm_v2_init(pwm, &cfg);

bflb_pwm_v2_channel_positive_start(pwm, PWM_CH0);

bflb_pwm_v2_channel_positive_start(pwm, PWM_CH2);

bflb_pwm_v2_channel_positive_start(pwm, PWM_CH3);

bflb_pwm_v2_start(pwm);

wKgZomaFDlSATHqyAADWSnqUmAg66.jpeg

2.調色函數

因為 R,G,B 的值最高只有 255,對應 PWM 占空比 100%,所以我們在調色的時候,就需要把目標顏色的 RGB 值計算出相對性的占空比,然后賦值給 PWM 占空比控制函數。因為我們使用的 PWM 的頻率是1KHz,所以我們在計算占空比的時候,需要 乘以 1000,因為我們就能達到下面這個函數:

void device_rgb_update_color(uint8_t red, uint8_t green, uint8_t blue)

{

uint16_t color_red_period = 1000*red/255;

uint16_t color_green_period = 1000*green/255;

uint16_t color_blue_period = 1000*blue/255;

bflb_pwm_v2_stop(pwm);

bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0, 0, color_red_period);

bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH2, 0, color_green_period);

bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH3, 0, color_blue_period);

bflb_pwm_v2_start(pwm);

}

使用這個函數的時候,只需要把 R,G,B 三個數值按順序賦值就行了。

3.RGB 的亮滅

有了調色的函數之后,滅掉所有燈,只需要把顏色值全部設置成 0,亮的時候,就把 R,G,B 重新賦值就行了:

//控制RGB

if (!ha_dev->entity_light->command_light->light_state) {

device_rgb_update_color(0, 0, 0);

}

else {

if (ha_dev->entity_light->command_light!=NULL)

device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

}

wKgaomaFDlSAcH-UAAB4hwFrkp059.jpeg

驗證結果

因為默認 PWM 為 0,所以燒錄之后,燈不會亮,需要設置一下顏色,燈才會亮。

wKgZomaFDlWAb7FoAAtKtvNdC_U288.gif

4.設置顏色

設置顏色就更簡單了,只需要把 R,G,B 值傳

給 device_rgb_update_color 函數就行。

case HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE:

LOG_I("<<<<<<<<<< HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE,RGB=%d,%d,%d", ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

// device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_LIGHT, ha_dev->entity_light->command_light, ha_dev->entity_light->command_light->light_state);

device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

break;

wKgZomaFDlWAR6joAABdXVFHqf023.jpeg

驗證結果

wKgaomaFDlaAESmvAA8ylTPpDHA361.gif

總結

本帖子的內容稍微有點跳了,這要求大家需要熟悉 HomeAssistant-C 庫RGB 實體還有一些功能需要完善,比如添加 RGB 設置的默認主題,后面再給大家介紹。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RGB
    RGB
    +關注

    關注

    4

    文章

    807

    瀏覽量

    59918
  • 智能家居
    +關注

    關注

    1934

    文章

    9803

    瀏覽量

    190507
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    樹莓派 Zero 2 W 是開啟智能家居生活的理想之選!

    想嘗試智能家居自動化,又不想花費太多?樹莓派Zero2W或許正是你開啟智能家居之旅所需的理想設備。小板子大潛力想打造一個智能家居?這想法超棒!一旦掌握了技巧,自動化控制燈光、插座、傳感
    的頭像 發表于 06-24 16:24 ?193次閱讀
    樹莓派 Zero 2 W 是開啟<b class='flag-5'>智能家居</b>生活的理想之選!

    Matter 智能家居的通用語言

    企業正在測試 134 種獨特的 Matter 產品。 在消費者對智能家居設備無縫互操作性需求的推動下,Matter的廣泛采用將吸引更多的開發者。
    發表于 05-19 15:35

    明遠智睿SSD2351開發板智能家居智能核心

    隨著科技的不斷發展,智能家居逐漸走進人們的生活,為人們帶來更加便捷、舒適、智能的生活體驗。明遠智睿的SSD2351開發板作為智能家居系統的智能
    發表于 05-07 18:59

    探秘明遠智睿SSD2351開發板在HMI領域的獨特魅力

    。 SSD2351開發板的四核1.4GHz處理器具備強大的圖形處理能力,能夠流暢地運行各種復雜的HMI界面。無論是絢麗的動畫效果,還是高清的圖像顯示,都能完美呈現。在工業控制、智能家居等領域的HMI應用中,用戶可以
    發表于 04-30 18:15

    智能家居Mesh組網方案:實現智能化生活的無縫連接NRF52832

    隨著科技的不斷進步,智能家居智能家電已經滲透到我們生活的方方面面。然而,由于產品種類的增多和商家的眾多,用戶在使用智能家居產品時往往會感到困惑和不便。在這樣的背景下,如何實現全屋各個單品之間的互通
    發表于 04-15 14:07

    明遠智睿 SSD2351 開發板:開啟創新開發之旅

    在當今數字化時代,嵌入式開發技術日新月異,各種開發板層出不窮。而明遠智睿的 SSD2351 開發板,憑借其獨特的優勢,成為了眾多開發者開啟創新開發
    的頭像 發表于 03-31 17:21 ?666次閱讀

    重大突破?這個系統,讓智能家居生態屏障土崩瓦解

    Zigbee、藍牙、WiFi、LAN。今天我要給大家帶來一份超有趣的教程,讓你用樹莓派、HomeAssistant、小米設備和HomeKit打造屬于自己的智能家居
    的頭像 發表于 03-29 09:43 ?625次閱讀
    重大突破?這個系統,讓<b class='flag-5'>智能家居</b>生態屏障土崩瓦解

    【貝啟科技BQ3568HM開源鴻蒙開發板深度試用報告】2 - 智能家居中控屏界面設計:打造便捷的家居控制體驗

    引言 上個帖子介紹了貝啟科技BQ3568HM開源鴻蒙開發板的簡單情況,今天進行正式的軟件開發。 在智能家居日益普及的今天,一個直觀、易用的中控屏界面對于用戶來說至關重要。今天,我將向大家介紹我所完成
    發表于 01-24 16:11

    瑞芯微開發板/主板Android配置APK默認開啟性能模式方法

    本文介紹瑞芯微開發板/主板Android配置APK默認開啟性能模式方法,開啟性能模式后,APK的CPU使用優先級會有所提高。觸覺智能RK3562開發板演示,搭載4核A53處理器,主頻高達2.0GHz;內置獨立1Tops算力NPU
    的頭像 發表于 01-17 15:32 ?679次閱讀
    瑞芯微<b class='flag-5'>開發板</b>/主板Android配置APK默認開啟性能模式方法

    用Ai-WB2開發板智能家居全彩LED小夜燈

    免費包郵開發板贈送!安信可藍牙5.2低功耗開發板免費申請啦_嗶哩嗶哩_bilibiliwww.bilibili.com/video/BV1UgSiY1EP9/?spm_id_from
    的頭像 發表于 11-13 14:03 ?923次閱讀
    用Ai-WB2<b class='flag-5'>開發板</b>做<b class='flag-5'>智能家居</b>全彩LED小夜燈

    智能家居之旅(15):HA傳感器采集主板低功耗設計的遭遇

    ):HomeAssistant-C傳感器實體使用方法 智能家居之旅7):HomeAssistant開發
    的頭像 發表于 09-05 10:27 ?731次閱讀
    <b class='flag-5'>智能家居</b><b class='flag-5'>之旅</b>(15):HA傳感器采集主板低功耗設計的遭遇

    嵌入式linux開發板芯片的工作原理

    嵌入式Linux開發板是一種基于Linux操作系統的嵌入式系統開發平臺,它廣泛應用于工業控制、智能家居、智能交通、醫療設備等領域。 嵌入式Linux
    的頭像 發表于 09-02 09:07 ?814次閱讀

    linux開發板與樹莓派的區別

    定義和用途 Linux開發板:Linux開發板是一種基于Linux操作系統的嵌入式開發板,通常用于工業自動化、物聯網、智能家居等領域。 樹莓派:樹莓派(Raspberry Pi)是一種
    的頭像 發表于 08-30 15:34 ?1958次閱讀

    機智云ESP8266開發板RGB彩燈控件

    隨著智能家居技術的迅猛發展,RGB彩燈控件正逐漸成為現代家庭不可或缺的一部分。在這一潮流中,機智云(Gizwits)的ESP8266開發板RGB彩燈控件以其先進的物聯網技術和多樣化的燈
    的頭像 發表于 08-09 08:10 ?799次閱讀
    機智云ESP8266<b class='flag-5'>開發板</b><b class='flag-5'>RGB</b>彩燈控件

    如何用一塊免費的PCB完成2元USB小夜燈控制器?

    使用HomeAssistant-C庫接入HomeAssistant 智能家居之旅(6):HomeAssistant-C傳感器實體使用方法
    的頭像 發表于 07-30 10:33 ?639次閱讀
    如何用一塊免費的PCB<b class='flag-5'>板</b>完成2元USB小夜燈控制器?
    主站蜘蛛池模板: 日本天天射 | 97人人做人人添人人爱 | 新版天堂资源中文8在线 | 日本免费人成黄页在线观看视频 | 老师解胸罩喂我吃奶 | 天堂资源地址在线 | 免费鲁丝片一级观看 | 成人爽爽激情在线观看 | 婷婷免费高清视频在线观看 | 国产精品亚洲玖玖玖在线靠爱 | 久久婷婷综合中文字幕 | 日本一区二区视频在线观看 | 国产精品一区电影 | 97九色 | 国产日韩精品一区二区三区 | 伊人久久综合成人亚洲 | 91精品国产91久久久久青草 | 免费高清在线视频色yeye | 91精品福利视频 | 8844aa在线毛片 | 夜夜想夜夜爽天天爱天天摸 | 成人黄色免费网站 | 69国产成人精品午夜福中文 | 九九九精品午夜在线观看 | 美女下面小内内的沟 | 国产色噜噜 | 天天狠狠弄夜夜狠狠躁·太爽了 | 天天草综合网 | xxx日本69| 高清一区二区三区视频 | 男人和女人做免费做爽爽视频 | 日韩一级片在线观看 | 国产无遮挡床戏视频免费 | 手机看片1024免费视频 | 在线视频 亚洲 | 狠狠色96视频 | 青草久 | 噜噜噜天天躁狠狠躁夜夜精品 | 午夜影院欧美 | 嫩草影院国产 | 亚洲欧美日韩综合一区 |