【ollama本地部署,与嵌入式设备进行通信教程】
教程提供了详细的配置步骤说明。通过这套方案,用户可以在没有公网IP和云服务器的情况下,实现本地AI模型的部署和嵌入式设备通信功能。
ollama语言模型AI本地部署,与嵌入式设备进行通信教程
序
搭建采用的方式为免费版:(没钱买公网IP,没钱买云服务器)
- VMware (产品:VMware® Workstation 17 Pro 版本17.6.4 build-24832109)
- Windows服务器(镜像文件:cn_windows_server_2016_updated_feb_2018_x64_dvd_11636703.iso)
- EMQX服务器(Windows版本:emqx-5.3.0-windows-amd64.zip)
- ollama(本地版本:qwen2.5:1.5b)
- pip(python-3.12.9-amd64.exe)
- MQTTx(测试用)
安装VMware
直接安装就行,注意内存分配和网络连接模式,我采用的是校园网,桥接模式连不上网,就用了NAT模式
相关配置

注意
== 网络适配器:选择 NAT → 可以让局域网设备访问 ,我用的校园网,桥接模式连不上网,无法通过校园网认证==
安装Windows服务器
步骤
- 打开 VMware Workstation Player
- 点击 Create a New Virtual Machine / 创建新虚拟机
- 选择 Installer disc image file (ISO) → 浏览到你的 ISO
文件:cn_windows_server_2016_updated_feb_2018_x64_dvd_11636703.iso - 点击 Next
- 选择 Microsoft Windows → 版本选择 Windows Server 2016 → Next
- 输入虚拟机名称
- 设置虚拟机存储位置(默认即可) → Next
- 设置磁盘容量(推荐 60GB 或更大)
- 选择 Store virtual disk as a single file → Next
- 点击 Customize Hardware
- 内存:至少 8GB(如果电脑够大,可 16GB)
- CPU:至少 4 核
- 网络适配器:选择 NAT → 可以让局域网设备访问(校园网需要选择NAT)
- 确认其他设置 → Close
- 点击 Finish / 完成
- 选中你的虚拟机 → 点击 Play virtual machine / 开始
- 选择语言和时间 → 点击 Next
- 点击 Install Now
- 选择版本(Windows Server 2016 Standard 或 Datacenter,带 GUI 版本)
- 勾选 “Desktop Experience”(带图形界面,便于操作)
- 点击 Next → Accept license → Next
- 选择 Custom: Install Windows only
- 选择虚拟磁盘 → Next → 系统开始安装
相关配置
第 1 步:配置初步网络设置:
配置网络(NAT 模式下的静态 IP 设置)
NAT 模式下,你的虚拟机 通过 VMware 的虚拟网卡(VMnet8)共享主机的网络。
校园网环境下,NAT 是最稳定、最方便的方式。
确保服务器有:
- 固定 IP(但要设置在 NAT 网段内)
- 可正常上网
- 不会与主机或其他设备冲突
第 2 步:查看 NAT 网络的网段,在 Windows 主机上查看
打开 VMware Workstation
左上角:编辑(Edit)
点击:虚拟网络编辑器 (Virtual Network Editor)
找到:VMnet8(这是 NAT 网络)
记下以下信息:
VMnet8 的子网 IP(Subnet IP) → 如:192.168.238.0
子网掩码(Subnet Mask) → 一般是 255.255.255.0
网关(Gateway IP) → 一般是 .2 → 如:192.168.238.2
第 3 步:给服务器配置静态 IP(在服务器内)
进入 Windows Server 2016 →右下角网络图标 → 打开网络和共享中心 →更改适配器设置 →
右键你的网卡(通常叫 Ethernet)→ 属性 →
双击 Internet 协议版本 4 (TCP/IPv4)
| 项目 | 填写示例 |
|---|---|
| IP 地址 | 192.168..(自己定,只要不冲突) |
| 子网掩码 | 255.255.255.0 |
| 默认网关 | 192.168..(必须与 VMnet8 网关一致) |
| 首选 DNS | 8.8.8.8 |
| 备用 DNS | 114.114.114.114 |
注意
网络适配器的选择和密钥的填写
❗ 不能随便设置成校园网 IP
因为 NAT 不是桥接,虚拟机不能直接接入校园网真实网络,只能在 VMware 的虚拟 NAT 网段内使用。
❗ IP 不能与主机冲突
只要不要用 .1、.2、.254 等常用保留 IP 就没问题。
例如使用 .100 .120 都行。
❗ DNS 必须填公网 DNS
否则你会出现 “能 ping 通 IP 但无法上网”。
验证
设置好后,在 Windows Server 2016 的命令提示符输入:ping 192.168.**.**ping 通 VMware 网关ping 8.8.8.8 能 ping 通(网络正常)ping www.baidu.com若能通 → DNS 正常,网络 OK。
在服务器安装EMQX服务器
步骤
第 1 步:解压 EMQX 包
第 2 步: 启动 EMQX
进入 EMQX 的 bin 目录:C:\EMQX\emqx\bin
CMD运行cd C:\EMQXServe\emqx-5.3.0-windows-amd64\bin
启动 EMQX.\emqx start
查看 EMQX 状态.\emqx status
创建管理员账号.\emqx admins add myadmin mypassword
第 3 步:查看 EMQX 是否正在运行
CMD运行
输入:emqx ctl status
正常输出类似:Node 'emqx@127.0.0.1' is started emqx 5.3.0 is running
第 4 步:测试端口是否开启
在 cmd 输入:netstat -ano | findstr 1883
看到 TCP 1883 已经监听:TCP 0.0.0.0:1883 LISTENING xxxx
这是 MQTT 端口。
测试 Dashboard(管理界面)端口:netstat -ano | findstr 18083
应该看到:TCP 0.0.0.0:18083 LISTENING
第 5 步:打开 EMQX Dashboard(管理界面)
浏览器输入:http://127.0.0.1:18083
默认账号密码:
用户:admin
密码:public
第 6 步:允许局域网访问 EMQX
默认配置 EMQX 只能本机访问,局域网访问需要确保:
Windows 防火墙允许端口 1883 & 18083
打开防火墙 → “高级设置” → “入站规则” → 新建规则:
类型:端口
TCP
端口:1883, 18083
动作:允许
名称:EMQX
第 7 步: NAT 模式下实现局域网访问(端口转发)
保持 NAT 模式才能上网,可以通过 VMware NAT 端口转发 来让局域网设备访问 EMQX:
打开 VMware NAT 配置
在宿主机(你的物理电脑)打开 VMware → 编辑 → 虚拟网络编辑器
选择 VMnet8 (NAT) → 点击 NAT 设置 → 端口转发
添加端口转发规则
假设:
虚拟机 EMQX IP:192.168.*.**
MQTT 端口:1883
Dashboard 端口:18083
添加规则
| 名称 | 协议 | 宿主机端口 | 虚拟机 IP | 虚拟机端口 |
|---|---|---|---|---|
| MQTT | TCP | 1883 | 192.168.*.** | 1883 |
| Dashboard | TCP | 18083 | 192.168.*.** | 18083 |
第 8 步:Windows 防火墙放行端口
在虚拟机和宿主机都需要放行端口(TCP 1883 & 18083):
- 打开防火墙高级设置
登录虚拟机 Windows Server 2016
点击 开始菜单 → 控制面板 → 系统和安全 → Windows 防火墙
点击左侧 高级设置 → 打开 Windows 防火墙高级安全 窗口 - 创建新的入站规则
在左侧栏选择 入站规则(Inbound Rules)
在右侧点击 新建规则(New Rule) - 选择规则类型
规则类型选择 端口(Port) → 点击 下一步
选择 TCP
在 特定本地端口(Specific local ports) 输入:
1883,18083
1883 → MQTT
18083 → Dashboard
点击 下一步 - 设置操作
选择 允许连接(Allow the connection)
点击 下一步 - 应用规则到配置文件
勾选所有配置文件:
域(Domain)
专用(Private)
公用(Public)
点击 下一步 - 命名
在名称栏输入:EMQX
在描述栏写上:允许 EMQX MQTT 和 Dashboard 端口
点击 完成(Finish)
第 9 步: 测试端口监听(测试防火墙规则是否生效)
在虚拟机 CMD 执行:netstat -ano | findstr 1883netstat -ano | findstr 18083
输出 LISTENING → EMQX 正常
第 10 步:测试宿主机访问
获取宿主机局域网 IP,例如 192.168.1.50
浏览器访问 Dashboard:http://192.168.1.50:18083
MQTT 客户端连接:Host: 192.168.1.50Port: 1883
用户名/密码:EMQX 创建的账号
端口转发生效后,局域网内其他设备也能访问这个宿主机 IP。
验证
第 1 步: 测试 MQTT 端口 1883 netstat -ano | findstr 1883
出现类似内容表示 EMQX 正常监听:TCP 0.0.0.0:1883 LISTENING XXXX
第 2 步: 测试 Dashboard 端口 18083netstat -ano | findstr 18083
正常输出类似:TCP 0.0.0.0:18083 LISTENING XXXX
服务器部署ollama
| 资源 | 最低需求 | 虚拟机 |
|---|---|---|
| RAM | ≥ 4GB | 8G |
| CPU | 任意 x86 (无 GPU 也能跑) | 2 |
| 硬盘空间 | 约 1.8GB~2GB | 60G |
ollama各版本大小
| 模型 | 大小 | 能力 | 适合 |
|---|---|---|---|
| tinydolphin | ~25 MB | 最轻模型,回答简单问题 | 极低配置 |
| qwen2.5:0.5b | ~300 MB | 中文好,简单问答 | 推荐 |
| qwen2.5:1.5b | ~1.1 GB | 更强一些 | 低配也能跑 |
| llama3.2:1b | ~1 GB | 英文好、性能高 | 低配可运行 |
相关配置
在虚拟机 Windows Server 安装 Ollama
第 1 步:下载 Windows 版 Ollama
下载后运行安装程序(.exe)。
安装完成后,打开 PowerShell(管理员) 输入:ollama --version
如果出现版本号(例如 0.1.x),说明安装成功。
第 2 步: Ollama 安装 Qwen2.5-1.5B 指令
到虚拟机里运行:ollama pull qwen2.5:1.5b
启动测试:ollama run qwen2.5:1.5b
出现模型回复说明 Ollama 部署成功。
第 3 步: 确认 Ollama API 是否正常运行
使用 HTTP 测试工具
你虚拟机里应当有浏览器,直接访问:http://127.0.0.1:11434/api/tags
出现:
[{"name":"qwen2.5:1.5b","model":"qwen2.5:1.5b","modified_at":"**********","details":{"parent_model":"","format":"gguf","family":"qwen2","families":["qwen2"],"parameter_size":"1.5B","quantization_level":"Q4_K_M"}}]}
即成功
ollama与嵌入式设备通信
注意
让ollama和EMQX通信需要配置EMQX的webhook规则,但是该版本的 WebHook 插件 UI 里 没有“Body Template(请求体模板)”输入框。EMQX 5.x 里的 WebHook 配置结构已经简化,只能做最基本的事件回调,不支持直接自定义 JSON Body。
桥接器
使用的 EMQX 5.3 免费版 / 社区版,确实 规则动作里没有“HTTP WebHook”选项。
规则引擎无法直接发 HTTP 请求给 Ollama
不能通过 EMQX 内置 WebHook 实现 “MQTT → Ollama API → MQTT”
必须换做 “外部桥接程序(Python 脚本)订阅 MQTT → 调用 Ollama → 发布 MQTT” 的方式
安装pip
第 1 步:下载 Python
下载 Windows x64 可执行安装程序(例如 Python 3.12.x 最新版本)
保存到虚拟机本地
第 2 步:安装 Python
双击安装程序运行
勾选 “Add Python 3.x to PATH”(非常重要,否则 PowerShell 找不到 pip)
选择 “Customize installation” → 下一步
勾选 “pip”(默认会勾选)
点击 Install
安装完成后,点击 “Disable path length limit”(推荐)
完成安装
第 3 步:验证 Python 和 pip 是否可用
打开 PowerShell 输入:python --versionpip --version
如果输出类似:Python 3.12.0pip 23.2.1
说明安装成功。
第 4 步:安装依赖库
在 PowerShell 输入:pip install paho-mqtt requests
等待安装完成,会显示:Successfully installed paho-mqtt requests
第 5 步:测试 Python 能否调用 MQTT
在 PowerShell 输入: import paho.mqtt.client as mqttimport requestsprint("库导入成功")
如果输出:库导入成功
说明 Python + pip + 依赖环境都准备好了。
创建桥接器 Python 脚本
在虚拟机创建文件夹,例如:C:\EMQXBridge\
新建文件:C:\EMQXBridge\mqtt_ollama_bridge.py
桥接程序
将下面完整代码复制进去mqtt_ollama_bridge.py: 包含三个关键字段的Jason格式
import paho.mqtt.client as mqtt
import requests
import json
# ========== 配置 ==========
MQTT_BROKER = "192.168.###.###" # 你自己的虚拟机 EMQX IP
MQTT_PORT = 1883
TOPIC_REQUEST = "ai/request"
TOPIC_RESPONSE = "ai/response"
OLLAMA_URL = "http://127.0.0.1:11434/api/generate" # 你自己的回环地址,或者使用IP地址也行
MODEL_NAME = "qwen2.5:1.5b"
# ==========================
# MQTT 消息回调
def on_message(client, userdata, msg):
payload_str = msg.payload.decode()
print(f"[MQTT] 收到消息: {payload_str}")
# 尝试解析 JSON
try:
data_json = json.loads(payload_str)
prompt = data_json.get("msg", payload_str)
except:
prompt = payload_str
# 调用 Ollama API
request_data = {
"model": MODEL_NAME,
"prompt": prompt,
"stream": False
}
try:
resp = requests.post(OLLAMA_URL, json=request_data)
resp_json = resp.json()
# 只保留需要的字段
filtered_json = {
"model": resp_json.get("model", MODEL_NAME),
"created_at": resp_json.get("created_at", ""),
"response": resp_json.get("response", "")
}
print(f"[Ollama] 过滤后的 JSON: {json.dumps(filtered_json, ensure_ascii=False)}")
# 发布回 MQTT
client.publish(TOPIC_RESPONSE, json.dumps(filtered_json, ensure_ascii=False))
except Exception as e:
print(f"[Error] 调用 Ollama 出错: {e}")
# 初始化 MQTT 客户端
client = mqtt.Client()
client.on_message = on_message
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.subscribe(TOPIC_REQUEST)
print("桥接程序已启动,等待 MQTT 消息…")
client.loop_forever()
第 6 步:运行桥接器
在 PowerShell 中执行:python C:\EMQXBridge\mqtt_ollama_bridge.py
你会看到:桥接程序已启动,等待 MQTT 消息…
说明桥接器已正常运行。
第 7 步:物理机 MQTTx 测试
连接 EMQX:
地址:192.168.*.**
端口:1883
订阅主题:ai/response
发布主题:ai/request
输入框输入:
{
"msg": "你叫什么名字?"
}
在 MQTTx 中看到 Ollama 回复:
{
"model": "qwen2.5:1.5b",
"created_at": "*********",
"response": "我是阿里云研发的超大规模语言模型,我叫通义千问。如果您有任何问题或需要帮助,请随时告诉我,我会尽力提供支持和解答。"
}
MQTTx端
虚拟服务器ollama端
EMQX端

完成
附
在进行通信时,需要登录EMQX服务器
同时,将桥接器运行 python C:\EMQXBridge\mqtt_ollama_bridge.py
打开ollamaollama run qwen2.5:1.5b
配置好MQTTx
嵌入式进行MQTT通信应该都会,不写了,累了
有的ip可能没消掉,如果有大佬的话别搞我啊,我还没玩好,谢谢大佬
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)