国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

開箱+性能測試+通過MCP服務實現自動化控制家電

AIoT行業洞察 ? 來源:AIoT行業洞察 ? 作者:AIoT行業洞察 ? 2025-08-06 14:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

小伙伴們,小安派AI語音開發板上線一段時間了,安信可社區“瘋狂發板”模式后,不少伙伴已經拿到開發板了,來看看大家的實際體驗如何~

以下作品由安信可社區用戶

zzbinfo制作

開箱

wKgZPGiS8MaAX97aAACvgARv-OM834.jpg

整個開發板組件裝在防靜電袋子中,很簡潔。

wKgZO2iS8MaAP2AEAACnK4jGrho003.jpg

打開防靜電袋子,還有一個塑料袋子,袋子里面是個硬殼的盒子,開發組件就在盒子里面,防止運輸過程中壓壞開發板。

wKgZPGiS8MeACXLkAACK5fDgTes490.jpgwKgZO2iS8MiAW9JOAADz2hQTxmo004.jpg

pcb前后都墊有減震棉,包裝確實很用心。我們來仔細看看開發板。

開發板pcb尺寸

wKgZPGiS8MmAVdp6AADwu9kRyT4252.jpg

wKgZO2iS8MmAUSSCAAB392jQzMY065.jpg

開發板35mm*30mm,尺寸小巧緊湊。很容易放置進合適的外殼中,對于我們業余DIY、開發測試非常友好。

主要芯片、模塊

wKgZPGiS8MqAEM-rAAB0Ad1TuHk920.jpg

主控模組就是安信可的Ai-WB2-12F WiFi模塊,該模組搭載BL602芯片作為核心處理器,支持Wi-Fi 802.11b/g/n協議和BLE 5.0協議。

BL602芯片內置低功耗的32位RISC CPU,276KB RAM和豐富的外圍接口,包括SDIOSPIUARTI2CIR remotePWMADCDACPIR 和 GPIO等。每個外接端子都有絲端子采用的是SH1.25。

wKgZO2iS8MqASk1WAACnd5266HE444.jpg

背面絲印LTH7的是pw4054,單節鋰電充電芯片,支持3.7V鋰電池的充電,輸入電壓4.5-6.5V,充電電流由旁邊的電阻控制,支持10mA-500mA。板載的電阻是5k,換成2k,可以支持到500mA。板子上沒有放電控制電路,所以外接的鋰電池要帶充放電控制板。

離線語音識別采用的是上海華振電子的語音大腦VB6824芯片方案。

內核采用高性能 32 位 RISC 內核,主頻 240MHz,支持硬件浮點運算,內置 1MB SPI FLASH。

該方案支持AI語音識別,采用最新的神經網絡(TDNN)算法,具有識別精準,誤判率低等優勢,5米遠場可靠識別。支持語音降噪,可以有效過濾掉穩態噪聲、對動態噪聲也有很好的抑制作用,噪音下也可準確識別。支持 MP3,WAV,WMA,APE,FLAC,AAC,MP4,M4A,AIF,AIFC音頻解碼。藍牙支持 SBC,AAC 音頻解碼音頻,支持 mSBC 語音編解碼器。符合藍牙 V5.1+BR+EDR+ BLE 規范,提供+6dbm 發射功率。

上電

wKgZO2iS8MuAAiRAAABlecOxCHc551.jpg

接上type-c線后打開開關,隨著紅燈閃爍,語音提示清晰宏亮,根據語音提示和快速上手指南進行配網后就可以愉快地玩耍了。

小安AiPi-PalChatV1性能測試

配網測試

https://www.bilibili.com/video/BV16gTVzBEDr/?spm_id_from=888.80997.embed_other.whitelist&t=60.737005&bvid=BV16gTVzBEDr&vd_source=54c5db21948db2378659b7e8e42bafbf

從輸入密碼點擊確定開始,到提示配網成功大概耗時8秒到10秒,這個跟網絡環境也有很大關系。網絡不好,會造成對話反應變慢,聲音輸出打嗝等現象。具體可以看一下測試視頻。

wKgZPGiS8MyAEkupAABC1NrXCQA193.jpg

打斷測試

https://www.bilibili.com/video/BV1ruTVzuEUm/?spm_id_from=888.80997.embed_other.whitelist&t=70.125983&bvid=BV1ruTVzuEUm&vd_source=54c5db21948db2378659b7e8e42bafbf

由于采用的是VB6824語音識別方案,實現的對話中打斷,效果還是不錯的??赡苁沁漕^和輸出喇叭比較近的緣故,偶爾也會出現打斷不了的情況,不過總體使用感覺還是很流暢。打斷、識別的效果也和咪頭有比較大的關系,我測試了兩種手上有的咪頭,效果相差很大。

wKgZPGiS7w-AFxv2AAOSkwvpk7Q715.png

識別距離測試

https://www.bilibili.com/video/BV1eWTVzfEYn/?spm_id_from=333.788.player.player_end_recommend_autoplay&bvid=BV1ruTVzuEUm&vd_source=54c5db21948db2378659b7e8e42bafbf

再次提醒,識別距離和環境有很大關系,筆者測試的房間外面是狹長的走廊,在走廊里面有比較大的回音,經過芯片的消回音處理,識別的效果就大打折扣了,實際測試時也確實在房間內有很好的識別效果,走廊里面就完全識別不到語音了。

wKgZO2iS8MyAYuAaAABS7XClvAU063.jpg

AiPi-PalChatV1語音開發板通過MCP服務實現自動化控制家電

實現途徑

有了AiPi-PalChatv1開發板和小智人工智能后臺的加持,不實現點實用功能難免浪費,首先肯定是自動化控制家里的電器,通過查閱資料,有多種途徑:

1、可以直接對開發板編程,定制自己的固件。

2、可以通過home assistant mcp server,這個需要有home assistant ,并且還要滿足一定的要求。

3、自己寫MCP server,小智后臺提供了MCP接口和示例。

筆者采用第三種方式,把之前廚房的甲烷傳感器,衛生間的熱水器,空調,燈等能接入的全部實現了自動控制,效果非常驚喜。

硬件優化

wKgZO2iS8M2ABNmsAABvogf62l0054.jpg

從之前的測試和最近一段時間的摸索,發現語音識別依賴于采集的聲音的質量,筆者把開發板上的兩個開關電源芯片禁用了(也可以直接拆掉)。

通過外接的LDO實現的5V和3.3V的供電,實際使用效果良好,同樣的咪頭,喚醒距離增加一倍,對話流暢。(如下視頻)

https://www.bilibili.com/video/BV1sxNoz8EKy/?spm_id_from=888.80997.embed_other.whitelist&t=13.901191&bvid=BV1sxNoz8EKy&vd_source=54c5db21948db2378659b7e8e42bafbf

wKgZO2iS8M2AACs8AAAw8J3-61U024.jpg

MCP服務器代碼

# -*- coding: utf-8 -*-
# 以下代碼在2025年6月18日 python3.11環境下運行通過
import sys
sys.path.append('/usr/local/lib/python3.7/dist-packages')
import paho.mqtt.client as mqtt
#
import sys
sys.path.append('/usr/lib/python3/dist-packages')
import requests
import json
from mcp.server.fastmcp import FastMCP
import logging
import socket
import threading
import time
def connTCP(topic:str,msg:str):
global tcp_client_socket
# 創建socket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# IP 和端口
server_ip = 'bemfa.com'
server_port = 8344
uid = 'UUID'
try:
# 連接服務器
tcp_client_socket.connect((server_ip, server_port))
#發送訂閱指令
substr = 'cmd=2&uid=' + uid + '&topic=' + topic + '&msg=' + msg + 'rn'
tcp_client_socket.send(substr.encode("utf-8"))
time.sleep(2)
tcp_client_socket.shutdown(2)
tcp_client_socket.close()
except:
time.sleep(2)
tcp_client_socket.shutdown(2)
tcp_client_socket.close()
#connTCP()
#Kitchen_temperature = ""
#Kitchen_CH4 = ""
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("****") # 訂閱消息
#消息接收
def on_message(client, userdata, msg):
global Ktemperature
global KCH4
#print("主題:"+msg.topic+" 消息:"+str(msg.payload.decode('utf-8')))
if msg.topic == topicA: #判斷topic是否是topicA
#print(" topicA msg")
msgstr = str(msg.payload.decode('utf-8'))
Ktemperature = msgstr.split("#")[-2]
KCH4 = msgstr.split("#")[-1]
#print(Kitchen_temperature)
#print(" topicA msg")
#print(Kitchen_CH4)
#if str(msg.payload.decode('utf-8')) == "ON": #如果接收字符on,亮燈
# connTCP('topic','ON') #開燈函數
#if str(msg.payload.decode('utf-8')) == "OFF": #如果接收字亮燈
# connTCP('topic','OFF') #關燈函數
#訂閱成功
def on_subscribe(client, userdata, mid, granted_qos):
print("On Subscribed: qos = %d" % granted_qos)
# 失去連接
def on_disconnect(client, userdata, rc):
if rc != 0:
print("Unexpected disconnection %s" % rc)
logger = logging.getLogger('WHcontrol')
# Create an MCP server
mcp = FastMCP("WHcontrol")
# Add an addition tool
@mcp.tool()
def get_kitchen_temperature() -> dict:
"""用于查詢廚房溫度,返回溫度值,單位攝氏度。"""
global Ktemperature
if float(Ktemperature) > 45:
Ktemperature = f'{float(Ktemperature)-18:.1f}' #修正溫度值,由于電子溫度計裝的高,不修正,人工智能容易報警
result = Ktemperature
#print(result)
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def get_kitchen_CH4() -> dict:
"""用于查詢廚房天然氣或是甲烷含量,返回天然氣或是甲烷PPM值。"""
global KCH4
if int(KCH4) > 440:
KCH4 = f'{int(KCH4)-440}'
result = KCH4
# print(result)
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def get_wh_timer_switch() -> dict:
"""用于查詢熱水器定時器開關的狀態,on是打開,off是關閉。"""
headers={ "content-type": "application/x-www-form-urlencoded"}
urlmsg = f'https://apis.bemfa.com/va/getmsg?uid=UUID&topic=reshuiqi&type=3&num=1'
response = requests.get(url=urlmsg,headers=headers,timeout=5)
if response.status_code != 200:
raise ConnectionError(f'{url} status code is {response.status_code}.')
response = json.loads(response.content)
if 'data' not in response.keys():
raise ValueError(f'{url} miss key msg.')
response = json.dumps(response['data'][0])
response = json.loads(response)
if 'msg' not in response.keys():
raise ValueError(f'{url} miss key msg.')
result = response['msg'].split("#")[-1]
print(result)
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def set_wh_timer_switch(sw:str) -> dict:
"""設置熱水器定時加熱開關狀態,on是打開,off是關閉。打開后在每天晚上20點自動開始加熱,一個小時后關閉加熱開關。"""
if sw == "on":
connTCP("topic","G2on")
if sw == "off":
connTCP("topic","G2off")
result = sw
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def get_wh_switch() -> dict:
"""用于查詢熱水器加熱開關的狀態,on是打開,off是關閉。"""
headers={ "content-type": "application/x-www-form-urlencoded"}
urlmsg = f'https://apis.bemfa.com/va/getmsg?uid=UUID&topic=reshuiqi&type=3&num=1'
response = requests.get(url=urlmsg,headers=headers,timeout=5)
if response.status_code != 200:
raise ConnectionError(f'{url} status code is {response.status_code}.')
response = json.loads(response.content)
if 'data' not in response.keys():
raise ValueError(f'{url} miss key msg.')
response = json.dumps(response['data'][0])
response = json.loads(response)
if 'msg' not in response.keys():
raise ValueError(f'{url} miss key msg.')
result = response['msg'].split("#")[-2]
print(result)
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def set_wh_switch(sw:str) -> dict:
"""設置熱水器加熱開關狀態,on是打開熱水器加熱開關,off是關閉熱水器加熱開關。"""
if sw == "on":
connTCP("topic","G1on")
if sw == "off":
connTCP("topic","G1off")
result = sw
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def set_light_switch(sw:str) -> dict:
"""設置客廳照明燈的開關狀態,on是打開照明燈,off是關閉照明燈。"""
if sw == "on":
connTCP("topic","A857A4AC6C") #我是通過433網關來發的控制指令,這個是我的燈的指令,修改成你們自己的
if sw == "off":
connTCP("topic","A857A4AC69")
result = sw
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def set_light_brightness(sw:str) -> dict:
"""設置客廳照明燈的亮度,add是增加亮度,fall是減小亮度。"""
if sw == "fall":
connTCP("topic","A857A4AC64")
if sw == "add":
connTCP("topic","A857A4AC68")
result = sw
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
@mcp.tool()
def set_air_switch(sw:str) -> dict:
"""設置臥室空調的開關狀態,on是打開空調,off是關閉空調。"""
if sw == "on":
connTCP("topic","H823CB2602002403053D000000007F") #我是通過紅外網關來發的控制指令,這個是我的空調的指令,修改成你們自己的
if sw == "off":
connTCP("topic","H823CB26020020030F3A0000000082")
result = sw
http://logger.info(f"result: {result}")
return {"success": True, "result": result}
# Start the server
if __name__ == "__main__":
MQTTHOST = "http://bemfa.com"
MQTTPORT = 9501
client_id = "UUID"
topicA = "tipoc"
client = mqtt.Client(client_id)
client.username_pw_set("userName", "passwd")
client.on_connect = on_connect
client.on_message = on_message
client.on_subscribe = on_subscribe
client.on_disconnect = on_disconnect
client.connect(MQTTHOST, MQTTPORT, 60)
client.loop_start()
time.sleep(3)
mcp.run(transport="stdio")

筆者的設備都是通過bemfa云控制的,具體接入文檔可以參照巴法云的說明。

MCP server運行在一個樹莓派上,先按照小智MCP示例安裝運行環境,然后直接把小智MCP接入點的字符串寫到mcp_pipe.py文件中,省的設置環境變量。通過命令啟動MCP server :python mcp_pipe.py switch-py.py。

在小智后臺 --》配置角色 最下面的MCP接入點中就應該能看到已經接入的MCP服務了。

wKgZPGiS8M6AYmPkAAB1MkDuEbI700.jpg

最后代碼

里面的一些變量需要自己修改,代碼寫的比較亂,大家湊合看。

附件:mcp代碼.rar?bbs.aithinker.com/forum.php?mod=attachment&aid=34182

審核編輯 黃宇

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

    關注

    91

    文章

    39793

    瀏覽量

    301453
  • 開發板
    +關注

    關注

    26

    文章

    6291

    瀏覽量

    118145
  • MCP
    MCP
    +關注

    關注

    0

    文章

    289

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    新西蘭服務器運維必備:自動化監控與故障預警實踐

    在現代互聯網運維中,服務器的穩定運行至關重要。新西蘭的服務器運維同樣不例外,高效的監控和預警系統能夠顯著提高運維效率,降低服務中斷的風險。本文將探討如何通過
    的頭像 發表于 02-26 14:26 ?162次閱讀

    日本小松集團選擇Qt Group,實現工程機械GUI自動化測試

    ?(Nasdaq Helsinki: QTCOM) 1月14日宣布,全球工程機械與礦山機械設備制造商小松集團已采用Qt Group的Squish平臺,實現設備顯示屏的GUI自動化測試。通過
    的頭像 發表于 01-15 12:20 ?149次閱讀
    日本小松集團選擇Qt Group,<b class='flag-5'>實現</b>工程機械GUI<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>

    自動化測試的「千里眼」:當RTSM遠程控制遇上自動化測試效率直接拉滿!

    自動化痛點】自動化測試的“黑箱困境”:你真的敢說“完全放心”? 凌晨2點,測試工程師小李盯著電腦屏幕上的自動化腳本進度條——第17步卡住了
    的頭像 發表于 12-11 11:26 ?396次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的「千里眼」:當RTSM遠程<b class='flag-5'>控制</b>遇上<b class='flag-5'>自動化</b>,<b class='flag-5'>測試</b>效率直接拉滿!

    是德示波器自動化測試SCPI命令控制指南

    是德示波器通過標準命令接口SCPI(Standard Commands for Programmable Instruments)實現自動化控制,為
    的頭像 發表于 09-23 17:54 ?1754次閱讀
    是德示波器<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>SCPI命令<b class='flag-5'>控制</b>指南

    測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案

    還在為不懂代碼、搭建測試方案耗時久而發愁?ATECLOUD 零代碼自動化測試平臺,專為自動化測試量身打造,小白3 分鐘就能輕松上手,15 分
    的頭像 發表于 09-22 17:52 ?855次閱讀
    <b class='flag-5'>測試</b>小白3分鐘上手,零代碼<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺,15分鐘搭建<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>方案

    同惠LCR測試儀如何實現高效批量自動化測量

    在電子元器件生產與品質檢測中,同惠LCR測試儀憑借高精度與穩定性備受青睞。為提升批量測試效率,降低人力成本,通過軟硬件協同優化可實現高效自動化
    的頭像 發表于 09-17 16:26 ?545次閱讀
    同惠LCR<b class='flag-5'>測試</b>儀如何<b class='flag-5'>實現</b>高效批量<b class='flag-5'>自動化</b>測量

    電源模塊的短路保護如何通過自動化測試軟件完成測試

    在當今電力電子領域,電源模塊的可靠性至關重要,短路保護作為其關鍵特性,需通過精確的自動化測試軟件進行驗證。本文將整理如何借助自動化測試軟件A
    的頭像 發表于 09-03 19:10 ?845次閱讀
    電源模塊的短路保護如何<b class='flag-5'>通過</b><b class='flag-5'>自動化</b><b class='flag-5'>測試</b>軟件完成<b class='flag-5'>測試</b>

    自動化測試平臺ATECLOUD推出AI算法功能

    作為納米軟件自主研發的自動化測試平臺,ATECLOUD 始終致力于為用戶提供高效優質的測試解決方案。面對5G、AI等前沿技術的迭代發展,平臺深度融合新技術持續升級測試能力,最新推出的A
    的頭像 發表于 07-22 16:10 ?814次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺ATECLOUD推出AI算法功能

    多摩川編碼器:助力自動化控制系統實現更精準的運動控制

    在當今高度自動化的工業生產和先進科技領域,精準的運動控制是眾多設備和系統穩定、高效運行的關鍵。多摩川編碼器作為一種關鍵的測量和反饋裝置,正憑借其卓越的性能,在自動化
    的頭像 發表于 07-21 16:54 ?614次閱讀

    UTP系統通過SPI協議對數字溫度傳感器的自動化測試介紹

    、4G/5G)、顯示識別(設備屏幕、按鈕、LED等)、設備操控、軟件功能等各方面進行自動化測試,能夠進行各種復雜時序的自動化測試。 接下來,我將通過
    的頭像 發表于 07-13 16:27 ?1071次閱讀
    UTP系統<b class='flag-5'>通過</b>SPI協議對數字溫度傳感器的<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>介紹

    車機交互測試自動化實現路徑與案例分析

    測試設備是車機交互測試自動化實現的核心支撐,通過合理選型、部署和應用北京沃華慧通測控技術有限公司汽車測試
    的頭像 發表于 07-10 09:24 ?1395次閱讀
    車機交互<b class='flag-5'>測試</b><b class='flag-5'>自動化</b><b class='flag-5'>實現</b>路徑與案例分析

    是德示波器MSOX3054T遠程控制自動化測試

    在現代電子測試領域,自動化測試技術已成為提升效率、降低人力成本的關鍵。是德示波器MSOX3054T作為一款高性能儀器,其遠程控制
    的頭像 發表于 07-08 17:09 ?647次閱讀
    是德示波器MSOX3054T遠程<b class='flag-5'>控制</b><b class='flag-5'>自動化</b><b class='flag-5'>測試</b>

    安信可AI語音開發板AiPi-PalChatV1 + MCP通過HomeAssistant自動化控制設備

    目 Ai-M61+VC02語音控制HA設備?bbs.ai-thinker.com/forum.php?mod=viewthreadtid=45059 這兩個項目都是基于HA的自動化來完成的。 參考: [智能家居
    的頭像 發表于 06-25 14:04 ?968次閱讀
    安信可AI語音開發板AiPi-PalChatV1 + <b class='flag-5'>MCP</b>,<b class='flag-5'>通過</b>HomeAssistant<b class='flag-5'>自動化</b><b class='flag-5'>控制</b>設備

    UTP系統通過ModBus協議對溫度傳感器的自動化測試介紹

    、4G/5G)、顯示識別(設備屏幕、按鈕、LED等)、設備操控、軟件功能等各方面進行自動化測試,能夠進行各種復雜時序的自動化測試。 接下來,我將通過
    的頭像 發表于 06-07 15:12 ?813次閱讀
    UTP系統<b class='flag-5'>通過</b>ModBus協議對溫度傳感器的<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>介紹

    APP自動化測試框架

    APP自動化測試框架是一套結合工具鏈、設計模式和技術規范的集成解決方案。以下是基于主流技術實踐的核心要點總結: 一、核心模塊構成 環境管理? 支持物理機/虛擬機/容器部署,集成ADB、Appium
    的頭像 發表于 05-07 07:35 ?674次閱讀
    APP<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>框架