97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

做網(wǎng)站建設(shè)需要什么資質(zhì)什么直播可以做游戲視頻網(wǎng)站

鶴壁市浩天電氣有限公司 2026/01/24 12:14:04
做網(wǎng)站建設(shè)需要什么資質(zhì),什么直播可以做游戲視頻網(wǎng)站,織夢(mèng)資訊門戶網(wǎng)站模板,wordpress如何設(shè)置頁(yè)面布局最新案例動(dòng)態(tài)#xff0c;請(qǐng)查閱【案例共創(chuàng)】在開發(fā)者空間快速開發(fā)MQTT客戶端實(shí)現(xiàn)硬件仿真上云。小伙伴們快來領(lǐng)取華為開發(fā)者空間進(jìn)行實(shí)操吧#xff01; 本案例由開發(fā)者#xff1a;DS小龍哥提供 1 概述 1.1 背景介紹 隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展#xff0c;越來越多的設(shè)備…最新案例動(dòng)態(tài)請(qǐng)查閱【案例共創(chuàng)】在開發(fā)者空間快速開發(fā)MQTT客戶端實(shí)現(xiàn)硬件仿真上云。小伙伴們快來領(lǐng)取華為開發(fā)者空間進(jìn)行實(shí)操吧本案例由開發(fā)者DS小龍哥提供1 概述1.1 背景介紹隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展越來越多的設(shè)備和應(yīng)用依賴于實(shí)時(shí)數(shù)據(jù)交換和遠(yuǎn)程控制。在物聯(lián)網(wǎng)生態(tài)系統(tǒng)中設(shè)備與云平臺(tái)之間的通信是核心環(huán)節(jié)之一然而對(duì)于許多開發(fā)者來說進(jìn)行這種設(shè)備與云平臺(tái)之間的通信往往涉及到硬件的配置與調(diào)試這對(duì)于一些不熟悉硬件的開發(fā)者尤其是那些處于軟件開發(fā)領(lǐng)域的人員可能是一大挑戰(zhàn)。傳統(tǒng)的物聯(lián)網(wǎng)開發(fā)往往需要開發(fā)者擁有一定的硬件基礎(chǔ)或者至少具備與硬件設(shè)備進(jìn)行調(diào)試和交互的能力這使得一些開發(fā)者在沒有硬件設(shè)備的情況下難以快速上手和測(cè)試物聯(lián)網(wǎng)應(yīng)用開發(fā)者迫切需要一種能夠模擬硬件設(shè)備并與云平臺(tái)進(jìn)行交互的工具。本案例通過開發(fā)一款基于MQTT協(xié)議的客戶端調(diào)試助手旨在為開發(fā)者提供一個(gè)簡(jiǎn)單易用的工具模擬硬件設(shè)備與云平臺(tái)的通信交互。這款工具通過軟件模擬了物聯(lián)網(wǎng)設(shè)備的行為支持主題的訂閱與發(fā)布能夠與華為云物聯(lián)網(wǎng)平臺(tái)IoTDA進(jìn)行實(shí)時(shí)通信。對(duì)于不熟悉硬件的開發(fā)者或者暫時(shí)沒有硬件設(shè)備的開發(fā)者而言這款調(diào)試助手可以讓他們?cè)跊]有物理硬件的前提下體驗(yàn)完整的物聯(lián)網(wǎng)設(shè)備上云過程。開發(fā)者可以通過該工具快速了解設(shè)備如何連接云平臺(tái)如何進(jìn)行數(shù)據(jù)傳輸并學(xué)習(xí)MQTT協(xié)議的基本操作。1.2 適用對(duì)象企業(yè)個(gè)人開發(fā)者高校學(xué)生1.3 案例時(shí)間本案例總時(shí)長(zhǎng)預(yù)計(jì)60分鐘。1.4 案例流程說明登錄開發(fā)者空間配置開發(fā)環(huán)境編輯MQTT客戶端源碼CodeArts IDE運(yùn)行MQTT客戶端源碼文件MQTT客戶端實(shí)現(xiàn)與MQTT服務(wù)端通信實(shí)現(xiàn)連接MQTT服務(wù)器、發(fā)布和訂閱消息MQTT服務(wù)器與華為云IoTA通信像注冊(cè)的設(shè)備發(fā)布和訂閱消息。1.5 資源總覽本案例預(yù)計(jì)花費(fèi)總計(jì)0元。資源名稱規(guī)格單價(jià)元時(shí)長(zhǎng)分鐘云主機(jī)2 vCPUs | 4 GB Ubuntu 22.04 64bit Python工具集060華為云物聯(lián)網(wǎng)平臺(tái)IoTDA免費(fèi)單元0602 開發(fā)者空間開發(fā)環(huán)境準(zhǔn)備本案例中實(shí)現(xiàn)MQTT客戶端與云端注冊(cè)的設(shè)備進(jìn)行交互需要開通IoTA服務(wù)以及安裝開發(fā)客戶端所需依賴庫(kù)。2.1 配置云主機(jī)登錄開發(fā)者空間登錄后頁(yè)面如下點(diǎn)擊“配置云主機(jī)”在彈出的對(duì)話框中進(jìn)行云主機(jī)配置。按如規(guī)格下配置云主機(jī)云主機(jī)名稱默認(rèn)/自定義CPU架構(gòu)X86規(guī)格2 vCPUs 4 GB操作系統(tǒng)Ubuntu系統(tǒng)鏡像公共鏡像 Ubuntu 22.04 server 64bit (xfce4 desktop)工具Python工具集CodeArts IDE Python Git確認(rèn)以上配置無誤點(diǎn)擊“安裝”進(jìn)行云主機(jī)操作系統(tǒng)安裝。安裝完畢之后點(diǎn)擊“進(jìn)入桌面”。環(huán)境準(zhǔn)備中大約需要3-5分鐘請(qǐng)您耐心等待…進(jìn)入桌面后的默認(rèn)效果如下點(diǎn)擊左下角的“所有應(yīng)用程序”-“開發(fā)”-“CodeArts IDE for Python”打開IDE。CodeArts IDE for Python 啟動(dòng)后在彈框界面選擇“新建工程”。在新建工程頁(yè)面自定義輸入工程名稱點(diǎn)擊“創(chuàng)建”。在CodeArts IDE for Python 中在新建的工程文件目錄中選擇“venv/lib/python3.10/site-packages”路徑下的任一文件鼠標(biāo)右鍵后選擇“打開所在文件夾”。復(fù)制被打開的文件夾路徑。在CodeArts IDE for Python 中點(diǎn)擊下方的“終端”輸入以下命令后回車安裝paho-mqtt庫(kù)paho-mqtt是一個(gè)提供MQTT協(xié)議功能的Python庫(kù)通過這個(gè)庫(kù)開發(fā)者可以快速實(shí)現(xiàn)MQTT客戶端的功能包括連接到MQTT代理服務(wù)器、發(fā)布消息到主題、訂閱感興趣的主題以及接收并處理消息。pipinstallpaho-mqtt --target{package-path}其中{package-path}用上面復(fù)制的文件夾路徑替換。按上面的方式執(zhí)行以下命令安裝PyQt5庫(kù)PyQt5是基于paho-mqtt庫(kù)實(shí)現(xiàn)MQTT通信。pipinstallPyQt5 --target{package-path}其中{package-path}也用上面復(fù)制的文件夾路徑替換。到此云主機(jī)的開發(fā)環(huán)境已經(jīng)配置完成。2.2 開通IoTA服務(wù)登錄設(shè)備接入IoTA服務(wù)控制臺(tái)點(diǎn)擊“開通免費(fèi)單元”。實(shí)例配置保持默認(rèn)點(diǎn)擊“立即創(chuàng)建”按鈕。需要等待標(biāo)準(zhǔn)版實(shí)例創(chuàng)建完成。創(chuàng)建IoT設(shè)備2.3 創(chuàng)建產(chǎn)品實(shí)例創(chuàng)建完成之后點(diǎn)擊實(shí)例名稱進(jìn)入實(shí)例。點(diǎn)擊左側(cè)“產(chǎn)品”菜單欄點(diǎn)擊“創(chuàng)建產(chǎn)品”按鈕。在“創(chuàng)建產(chǎn)品”彈窗中自定義填寫產(chǎn)品名稱設(shè)備類型選擇“自定義類型”自定義填寫設(shè)備類型例dev點(diǎn)擊“確定”完成產(chǎn)品創(chuàng)建。在“創(chuàng)建產(chǎn)品成功”提示窗中點(diǎn)擊“查看詳情”。在產(chǎn)品詳情頁(yè)面點(diǎn)擊“自定義模型”在“添加服務(wù)”彈窗中填寫服務(wù)ID例stm32點(diǎn)擊“確定”。說明模型就是存放設(shè)備上傳到云平臺(tái)的數(shù)據(jù)你可以根據(jù)自己的產(chǎn)品進(jìn)行創(chuàng)建。在新增的服務(wù)中點(diǎn)擊“新增屬性”在“新增屬性”彈窗中填寫屬性名稱點(diǎn)擊“確定”。設(shè)備屬性?是指與物聯(lián)網(wǎng)設(shè)備相關(guān)的各種參數(shù)和設(shè)置這些屬性通常以鍵值對(duì)的形式存在用于描述設(shè)備的各種特征和行為。點(diǎn)擊左上角“”回到上一級(jí)頁(yè)面。2.4 添加設(shè)備產(chǎn)品是屬于上層的抽象模型接下來在產(chǎn)品模型下添加實(shí)際的設(shè)備。添加的設(shè)備最終需要與真實(shí)的設(shè)備關(guān)聯(lián)在一起完成數(shù)據(jù)交互。在左側(cè)菜單欄選擇“設(shè)備-所有設(shè)備”點(diǎn)擊“注冊(cè)設(shè)備”。在“單設(shè)備注冊(cè)”彈窗中選擇所屬資源空間所屬產(chǎn)品選擇步驟3.1中創(chuàng)建的產(chǎn)品自定義輸入設(shè)備標(biāo)識(shí)碼例dev1、設(shè)備名稱和秘鑰點(diǎn)擊“確定”。在“設(shè)備創(chuàng)建成功”提示窗中點(diǎn)擊“保存并關(guān)閉”??梢钥吹絼倓傋?cè)的設(shè)備處于“未激活”狀態(tài)待真實(shí)設(shè)備接入平臺(tái)才會(huì)變成“在線”狀態(tài)。2.5 生成MQTT三元組華為云提供了一個(gè)在線工具用來生成MQTT鑒權(quán)三元組。打開這個(gè)MQTT ClientId生成工具DeviceId填入剛剛注冊(cè)設(shè)備的設(shè)備IDDeviceSecret填入步驟3.2中注冊(cè)設(shè)備時(shí)設(shè)置的秘鑰點(diǎn)擊“Generate”就可以得到MQTT的登錄信息了。圖形化界面開發(fā)MQTT客戶端下面我們開發(fā)完成 MQTT 客戶端調(diào)試助手模擬真實(shí)設(shè)備接入IoTA平臺(tái)整體開發(fā)基于 paho-mqtt 庫(kù)來實(shí)現(xiàn)以下功能連接到 MQTT 服務(wù)器通過提供的 IP、端口、客戶端 ID、用戶名和密碼連接到 MQTT 服務(wù)器。訂閱主題從用戶輸入的訂閱主題中接收消息。發(fā)布消息發(fā)布主題消息到指定的發(fā)布主題。每個(gè)按鈕添加相應(yīng)的功能Connect、訂閱和發(fā)布 。在此基礎(chǔ)上日志框?qū)@示與 MQTT 連接和消息傳輸相關(guān)的調(diào)試信息。在云主機(jī)的CodeArts IDE for Python中點(diǎn)擊“文件”-“新建”-“文件”。點(diǎn)擊“文件”-“保存”。輸入文件名稱為“MQTT.py”點(diǎn)擊“保存”。在MQTT.py文件中輸入以下代碼復(fù)制文檔中python代碼時(shí)可能會(huì)導(dǎo)致格式錯(cuò)誤可以點(diǎn)擊下載獲取MQTT.py文件內(nèi)容用于實(shí)現(xiàn)MQTT客戶端importsysimportjsonimportpaho.mqtt.clientasmqtt# 導(dǎo)入 paho-mqtt 庫(kù)fromPyQt5.QtCoreimportQtfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QFormLayout,QLabel,QLineEdit,QSpinBox,QPushButton,QGridLayout,QGroupBox,QPlainTextEdit,QSpacerItem,QSizePolicy,QMenuBar,QStatusBarimporttimeclassMQTTClientDebugger(QMainWindow):def__init__(self):super().__init__()self.connectedFalseself.setWindowTitle(MQTT 客戶端調(diào)試助手)self.setGeometry(100,100,1019,772)# 設(shè)置窗口大小self.centralWidgetQWidget(self)self.setCentralWidget(self.centralWidget)self.clientNone# MQTT 客戶端實(shí)例# 主布局self.mainLayoutQVBoxLayout(self.centralWidget)# 連接設(shè)置布局self.connectionLayoutQHBoxLayout()self.host117.78.5.125self.clientIdself.usernameself.passWordself.formLayoutQFormLayout()self.hostLineEditQLineEdit()self.hostLineEdit.setText(self.host)# 默認(rèn)服務(wù)器IP地址 self.formLayout.addRow(QLabel(服務(wù)器域名或者IP地址:),self.hostLineEdit)# 端口號(hào)self.spinBoxPortQSpinBox()self.spinBoxPort.setMaximum(99999)self.spinBoxPort.setValue(1883)# 默認(rèn)端口號(hào)self.formLayout.addRow(QLabel(服務(wù)器端口:),self.spinBoxPort)self.clientIdLineEditQLineEdit()self.clientIdLineEdit.setText(self.clientId)#客戶端IDself.formLayout.addRow(QLabel(ClientId),self.clientIdLineEdit)self.usernameLineEditQLineEdit()self.usernameLineEdit.setText(self.username)# 設(shè)備用戶名self.formLayout.addRow(QLabel(Username),self.usernameLineEdit)self.passwordLineEditQLineEdit()self.passwordLineEdit.setText(self.passWord)# 默認(rèn)密碼self.formLayout.addRow(QLabel(Password),self.passwordLineEdit)self.connectionLayout.addLayout(self.formLayout)# 連接按鈕self.connectButtonQPushButton(Connect)self.connectButton.clicked.connect(self.connect_to_server)self.connectionLayout.addWidget(self.connectButton)self.mainLayout.addLayout(self.connectionLayout)# MQTT 主題和消息布局self.gridLayoutQGridLayout()self.gridLayout.addWidget(QLabel(訂閱主題:),0,0)self.subscribeTopicLineEditQLineEdit($oc/devices/self.username/sys/messages/down)self.gridLayout.addWidget(self.subscribeTopicLineEdit,0,1)self.gridLayout.addWidget(QPushButton(訂閱),0,2)self.gridLayout.addWidget(QLabel(發(fā)布主題:),1,0)self.publishTopicLineEditQLineEdit($oc/devices/self.username/sys/properties/report)self.gridLayout.addWidget(self.publishTopicLineEdit,1,1)self.gridLayout.addWidget(QLabel(主題消息:),2,0)self.messageLineEditQLineEdit({services: [{service_id: stm32,properties:{DHT11_T:18.1,DHT11_H:16.2,SOIL:12.4,BH1750:124.5,MOTOR_SW:1,SOIL_MAX:30,run_mode:1}}]})self.gridLayout.addWidget(self.messageLineEdit,2,1)self.publishButtonQPushButton(發(fā)布)self.publishButton.clicked.connect(self.publish_message)self.gridLayout.addWidget(self.publishButton,2,2)self.mainLayout.addLayout(self.gridLayout)# 日志區(qū)域self.logGroupBoxQGroupBox(日志消息:)self.logLayoutQHBoxLayout()self.logTextEditQPlainTextEdit()self.logTextEdit.setReadOnly(True)self.logLayout.addWidget(self.logTextEdit)self.logGroupBox.setLayout(self.logLayout)self.mainLayout.addWidget(self.logGroupBox)# 底部按鈕布局self.bottomLayoutQHBoxLayout()self.testButtonQPushButton(測(cè)試按鈕(一鍵填充MQTT信息))self.clearButtonQPushButton(一鍵清除MQTT信息)self.clearLogButtonQPushButton(清除日志消息)self.viewTutorialButtonQPushButton(【查看物聯(lián)網(wǎng)項(xiàng)目開發(fā)教程】)self.quitButtonQPushButton(退出軟件)self.testButton.clicked.connect(self.fillMQTTInfo)self.clearButton.clicked.connect(self.clearMQTTInfo)self.clearLogButton.clicked.connect(self.clear_logs)self.bottomLayout.addWidget(self.testButton)self.bottomLayout.addWidget(self.clearButton)self.bottomLayout.addWidget(self.clearLogButton)self.bottomLayout.addWidget(self.viewTutorialButton)self.bottomLayout.addWidget(self.quitButton)self.mainLayout.addLayout(self.bottomLayout)# 菜單欄self.menuBarself.menuBar()self.fileMenuself.menuBar.addMenu(File)quitActionself.fileMenu.addAction(Quit)quitAction.triggered.connect(self.close)# 狀態(tài)欄self.statusBarQStatusBar()self.setStatusBar(self.statusBar)# 連接到MQTT服務(wù)器defconnect_to_server(self):hostself.hostLineEdit.text()portself.spinBoxPort.value()client_idself.clientIdLineEdit.text()usernameself.usernameLineEdit.text()passwordself.passwordLineEdit.text()try:self.clientmqtt.Client(mqtt.CallbackAPIVersion.VERSION1,client_id)self.client.username_pw_set(username,password)# 設(shè)置用戶名和密碼# 設(shè)置連接成功、消息接收、連接丟失等回調(diào)函數(shù)self.client.on_connectself.on_connect self.client.on_messageself.on_message self.client.on_disconnectself.on_disconnect# 連接到服務(wù)器self.client.connect(host,port,60)# 啟動(dòng) MQTT 客戶端self.client.loop_start()whilenotself.connectedandnotself._stop_event.is_set():time.sleep(0.1)self.connectedTrueexceptExceptionase:returnf{e}defon_connect(self,client,userdata,flags,rc):當(dāng)連接到MQTT服務(wù)器時(shí)調(diào)用self.log(f連接成功返回碼{rc})# 連接成功后訂閱主題self.subscribeTopicLineEditQLineEdit($oc/devices/self.usernameLineEdit.text()/sys/messages/down)subscribe_topicself.subscribeTopicLineEdit.text()try:client.subscribe(subscribe_topic)exceptExceptionase:self.log(f訂閱失敗{e})defon_message(self,client,userdata,msg):當(dāng)接收到MQTT消息時(shí)調(diào)用self.log(f接收到消息{msg.topic}{msg.payload.decode()})defon_disconnect(self,client,userdata,rc):當(dāng)斷開連接時(shí)調(diào)用self.log(fMQTT服務(wù)器斷開連接返回碼{rc})# 發(fā)布消息defpublish_message(self):self.publishTopicLineEditQLineEdit($oc/devices/self.usernameLineEdit.text()/sys/properties/report)topicself.publishTopicLineEdit.text()messageself.messageLineEdit.text()ifself.client:self.client.publish(topic,message)self.log(f發(fā)布消息{topic}{message})# 發(fā)送心跳包defsend_heartbeat(self):ifself.client:self.client.ping()self.log(發(fā)送心跳包)# 日志輸出deflog(self,message):向日志框輸出信息self.logTextEdit.appendPlainText(message)# 填充MQTT信息deffillMQTTInfo(self):self.hostLineEdit.setText(self.host)self.spinBoxPort.setValue(1883)self.clientIdLineEdit.setText(self.clientId)self.usernameLineEdit.setText(self.username)self.passwordLineEdit.setText(self.passWord)self.subscribeTopicLineEdit.setText($oc/devices/self.username/sys/messages/down)self.publishTopicLineEdit.setText($oc/devices/self.username/sys/properties/report)self.messageLineEdit.setText({services: [{service_id: stm32,properties:{DHT11_T:18.1,DHT11_H:16.2,SOIL:12.4,BH1750:124.5,MOTOR_SW:1,SOIL_MAX:30,run_mode:1}}]})# 清除MQTT信息defclearMQTTInfo(self):self.hostLineEdit.clear()self.spinBoxPort.clear()self.clientIdLineEdit.clear()self.usernameLineEdit.clear()self.passwordLineEdit.clear()self.subscribeTopicLineEdit.clear()self.publishTopicLineEdit.clear()# 清除日志信息defclear_logs(self):self.logTextEdit.clear()if\__name_\___main__:appQApplication(sys.argv)mainWinMQTTClientDebugger()mainWin.show()sys.exit(app.exec_())將代碼27~29行的3個(gè)參數(shù)值填入步驟3.3中獲取的MQTT三元組的“ClientId”、“Username”、“Password”的值如下圖所示說明三元組數(shù)據(jù)會(huì)定時(shí)刷新為確保鏈接數(shù)據(jù)有效在填入?yún)?shù)值前請(qǐng)?jiān)俅吸c(diǎn)擊“Generate”刷新獲取最新數(shù)據(jù)后再填寫請(qǐng)參考步驟3.3。按上述步驟編寫好代碼后在CodeArts IDE for Python中MQTT.py文件頁(yè)面點(diǎn)擊右上角的綠色三角形按鈕運(yùn)行代碼。在MQTT客戶端調(diào)試助手窗口依次點(diǎn)擊“Connect”、“訂閱”、“發(fā)布”按鈕可在“日志消息”區(qū)域查看打印的日志。再次登錄設(shè)備接入IoTA服務(wù)控制臺(tái)點(diǎn)擊步驟2.2中開通的實(shí)例進(jìn)入實(shí)例點(diǎn)擊“設(shè)備-所有設(shè)備”可以看到在步驟3.2中添加的設(shè)備已處于“在線”狀態(tài)這說明我們開發(fā)的MQTT客戶端已成功與云端注冊(cè)的設(shè)備進(jìn)行通信。點(diǎn)擊設(shè)備的“詳情”點(diǎn)擊“消息跟蹤”可進(jìn)一步查看我們開發(fā)的MQTT客戶端發(fā)布過來的消息詳情。說明如果您的消息跟蹤還未開啟請(qǐng)點(diǎn)擊“啟動(dòng)消息跟蹤”在彈出的“消息跟蹤”彈窗中點(diǎn)擊“確定”即可查看MQTT客戶端發(fā)布過來的消息詳情。至此利用云主機(jī)快速開發(fā)MQTT客戶端實(shí)現(xiàn)硬件仿真上云全部完成。
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

看想看的做想做的電影網(wǎng)站好金華企業(yè)制作網(wǎng)站

看想看的做想做的電影網(wǎng)站好,金華企業(yè)制作網(wǎng)站,做網(wǎng)站文章要一篇一篇的寫嗎,寧波男科醫(yī)院哪家好嵌入式開發(fā)踩坑記技術(shù)文章大綱硬件相關(guān)踩坑點(diǎn)選型不當(dāng)導(dǎo)致性能不足或資源浪費(fèi) 原理圖設(shè)計(jì)錯(cuò)誤#xff08;如電源

2026/01/23 03:53:01

鹽山建網(wǎng)站百度手機(jī)導(dǎo)航官方新版

鹽山建網(wǎng)站,百度手機(jī)導(dǎo)航官方新版,做外貿(mào)學(xué)英語(yǔ)的網(wǎng)站,信邦建設(shè)工程有限公司網(wǎng)站想要獲取iOS應(yīng)用的安裝包文件卻無從下手#xff1f;無論是開發(fā)者需要分析應(yīng)用架構(gòu)#xff0c;還是普通用戶想要備份心愛的

2026/01/23 03:48:01

洛陽(yáng)市app網(wǎng)站開發(fā)公司電話外鏈價(jià)格

洛陽(yáng)市app網(wǎng)站開發(fā)公司電話,外鏈價(jià)格,好樂買網(wǎng)站推廣方式,wordpress打開錯(cuò)誤零售門店智能導(dǎo)購(gòu)#xff1a;Kotaemon實(shí)現(xiàn)促銷信息主動(dòng)推送 在一家連鎖超市的冷飲區(qū)#xff0c;一位顧客正

2026/01/21 20:03:01