Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计异常

mqtt-iotMQTT 物联网

Agent Skill

mqtt-iot 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

509

周安装

21

GitHub Stars

1

下载量

166
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:mqtt-iot(MQTT 物联网)
来源仓库:https://github.com/housegarofalo/claude-code-base
仓库路径:skills/mqtt-iot
安装命令:
npx skills add https://github.com/housegarofalo/claude-code-base --skill mqtt-iot
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/housegarofalo/claude-code-base --skill mqtt-iot

简介

mqtt-iot 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中快速定位候选结果。

  • 适用于需要根据关键词或任务场景进行信息检索的研究与数据整理场景。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装并使用。
  • 建议确认权限范围、维护状态,以及是否会触发联网或文件读写操作。
  • 可结合来源仓库 README 进一步核验具体用法和功能边界。

SKILL.md

MQTT IoT Messaging

Expert guidance for MQTT message broker configuration and IoT communication.

When to Use This Skill

  • Setting up MQTT brokers (Mosquitto, EMQX)
  • Designing topic hierarchies
  • Configuring authentication and ACLs
  • Integrating with Home Assistant
  • Building IoT device communication
  • Bridging MQTT brokers

Mosquitto Installation

# docker-compose.yml
version: '3.8'
services:
  mosquitto:
    image: eclipse-mosquitto:2
    ports:
      - "1883:1883"   # MQTT
      - "8883:8883"   # MQTT/TLS
      - "9001:9001"   # WebSocket
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    restart: unless-stopped

Mosquitto Configuration

# mosquitto.conf
listener 1883
protocol mqtt

# WebSocket listener
listener 9001
protocol websockets

# TLS listener
listener 8883
protocol mqtt
cafile /mosquitto/config/certs/ca.crt
certfile /mosquitto/config/certs/server.crt
keyfile /mosquitto/config/certs/server.key
require_certificate false

# Authentication
allow_anonymous false
password_file /mosquitto/config/passwd

# ACL
acl_file /mosquitto/config/acl

# Persistence
persistence true
persistence_location /mosquitto/data/

# Logging
log_dest file /mosquitto/log/mosquitto.log
log_type all

# Connection settings
max_connections -1
max_keepalive 65535

# Message settings
message_size_limit 0
max_inflight_messages 20
max_queued_messages 1000

Password File

# Create password file
mosquitto_passwd -c /mosquitto/config/passwd user1
mosquitto_passwd /mosquitto/config/passwd user2

# Or create with specific password
mosquitto_passwd -b /mosquitto/config/passwd user1 password123

ACL File

# /mosquitto/config/acl

# Admin has full access
user admin
topic readwrite #

# User can publish to their own topics
user device1
topic readwrite devices/device1/#
topic read devices/broadcast/#

# Read-only user
user readonly
topic read #

# Pattern-based ACL
pattern readwrite devices/%u/#
pattern read $SYS/#

# Anonymous access (if allow_anonymous true)
topic read public/#

MQTT Topics

Topic Design Best Practices

# Hierarchical structure
home/
  livingroom/
    temperature
    humidity
    motion
    light/
      brightness
      state
  bedroom/
    temperature
    light/
      brightness
      state

# Device-centric
devices/
  sensor-001/
    status
    temperature
    battery
  switch-001/
    state
    command

# Command/State pattern
devices/<device_id>/state      # Device publishes state
devices/<device_id>/command    # Subscribe for commands
devices/<device_id>/config     # Configuration updates
devices/<device_id>/attributes # Device attributes

# Home Assistant compatible
homeassistant/
  sensor/
    <device_id>/
      config       # Auto-discovery
      state        # State updates
  switch/
    <device_id>/
      config
      state
      set          # Commands

Wildcards

# Single-level wildcard (+)
home/+/temperature     # Matches home/livingroom/temperature, home/bedroom/temperature

# Multi-level wildcard (#)
home/#                 # Matches all under home/
devices/sensor-001/#   # All topics for sensor-001

# System topics
$SYS/#                 # Broker statistics
$SYS/broker/clients/connected
$SYS/broker/messages/received

CLI Commands

# Subscribe
mosquitto_sub -h localhost -t "home/#" -v
mosquitto_sub -h localhost -t "devices/+/state" -u user -P password

# Publish
mosquitto_pub -h localhost -t "devices/light/command" -m "ON"
mosquitto_pub -h localhost -t "home/temperature" -m '{"value": 23.5}' -r

# With QoS
mosquitto_sub -h localhost -t "important/#" -q 2
mosquitto_pub -h localhost -t "important/data" -m "data" -q 1

# Retained messages
mosquitto_pub -h localhost -t "config/settings" -m '{"interval": 60}' -r

# Clear retained message
mosquitto_pub -h localhost -t "config/settings" -n -r

# TLS connection
mosquitto_sub -h localhost -p 8883 \
  --cafile ca.crt \
  --cert client.crt \
  --key client.key \
  -t "#"

# WebSocket
mosquitto_sub -h localhost -p 9001 --ws -t "#"

QoS Levels

QoS 0 - At most once (fire and forget)
  - No acknowledgment
  - Messages may be lost
  - Use for: Telemetry where occasional loss is acceptable

QoS 1 - At least once
  - Message acknowledged
  - Messages may be duplicated
  - Use for: Most IoT applications

QoS 2 - Exactly once
  - Four-part handshake
  - Guaranteed delivery without duplicates
  - Use for: Critical operations, billing, commands

Home Assistant MQTT Integration

# configuration.yaml
mqtt:
  broker: 192.168.1.100
  port: 1883
  username: homeassistant
  password: !secret mqtt_password
  discovery: true
  discovery_prefix: homeassistant

# Manual sensor
mqtt:
  sensor:
    - name: "Living Room Temperature"
      state_topic: "home/livingroom/temperature"
      unit_of_measurement: "°C"
      value_template: "{{ value_json.value }}"
      device_class: temperature

  binary_sensor:
    - name: "Front Door"
      state_topic: "home/entrance/door"
      payload_on: "OPEN"
      payload_off: "CLOSED"
      device_class: door

  switch:
    - name: "Garden Light"
      state_topic: "devices/garden-light/state"
      command_topic: "devices/garden-light/command"
      payload_on: "ON"
      payload_off: "OFF"
      state_on: "ON"
      state_off: "OFF"

  light:
    - name: "Living Room Light"
      schema: json
      state_topic: "home/livingroom/light/state"
      command_topic: "home/livingroom/light/set"
      brightness: true
      color_mode: true
      supported_color_modes: ["brightness"]

MQTT Discovery

// Publish to homeassistant/sensor/temp-001/config
{
  "name": "Temperature Sensor",
  "unique_id": "temp-001",
  "state_topic": "devices/temp-001/state",
  "unit_of_measurement": "°C",
  "device_class": "temperature",
  "value_template": "{{ value_json.temperature }}",
  "device": {
    "identifiers": ["temp-001"],
    "name": "Temperature Sensor",
    "model": "DHT22",
    "manufacturer": "Generic"
  }
}

Bridge Configuration

# Bridge to cloud broker
connection cloud-bridge
address cloud.example.com:8883
bridge_cafile /mosquitto/config/certs/cloud-ca.crt
bridge_certfile /mosquitto/config/certs/client.crt
bridge_keyfile /mosquitto/config/certs/client.key
remote_username bridge-user
remote_password bridge-password

# Topic mapping
topic devices/# out 1
topic commands/# in 1

# Prefix local topics when sending to remote
topic "" out 1 local/ remote/

# Bridge settings
start_type automatic
cleansession false
notifications true
notification_topic $SYS/broker/bridge/status
try_private true

EMQX Configuration

# docker-compose.yml for EMQX
services:
  emqx:
    image: emqx/emqx:5
    ports:
      - "1883:1883"
      - "8083:8083"   # WebSocket
      - "8084:8084"   # WebSocket/TLS
      - "8883:8883"   # MQTT/TLS
      - "18083:18083" # Dashboard
    environment:
      - EMQX_NAME=emqx
      - EMQX_HOST=node1.emqx.io
      - EMQX_DASHBOARD__DEFAULT_PASSWORD=admin123
    volumes:
      - emqx-data:/opt/emqx/data
      - emqx-log:/opt/emqx/log

Python Client Example

import paho.mqtt.client as mqtt
import json

def on_connect(client, userdata, flags, rc):
    print(f"Connected with result code {rc}")
    client.subscribe("devices/#")

def on_message(client, userdata, msg):
    print(f"{msg.topic}: {msg.payload.decode()}")

client = mqtt.Client()
client.username_pw_set("user", "password")
client.on_connect = on_connect
client.on_message = on_message

# TLS
client.tls_set(ca_certs="ca.crt")

client.connect("localhost", 8883, 60)

# Publish
client.publish("devices/sensor/temperature",
               json.dumps({"value": 23.5}),
               qos=1, retain=True)

client.loop_forever()

Best Practices

  1. Design topic hierarchy carefully before deployment
  2. Use QoS 1 for most IoT applications
  3. Implement authentication (never allow anonymous in production)
  4. Use TLS for encrypted communication
  5. Use retained messages for current state
  6. Keep payloads small for efficiency
  7. Use JSON for structured data
  8. Implement Last Will and Testament for device status
  9. Monitor broker metrics ($SYS topics)
  10. Plan for scalability with clustering/bridging

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.68%
按下载量换算61

Claude

29.48%
按下载量换算49

Cursor

18.83%
按下载量换算31

Gemini CLI

10.44%
按下载量换算17

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

未通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills