Skip to content
This repository was archived by the owner on Jul 3, 2025. It is now read-only.

SyAzile/MQTT-Wokwi-Simulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MQTT-Wokwi-Simulation

Simulating Message Queuing Telemetry Transport (MQTT) Protocol using Wokwi Simulator and Mosquitto Broker.

📦 Setup Environment
  • Download and Install Mosquitto Broker for Windows.

  • Add Mosquitto to PATH. Default Installation Directory for Mosquitto is:

    C:\Program Files\mosquitto
    
  • Now, Open Notepad as Administrator and Save the following in the above directory by the name mosquitto.conf file.

    listener 1883 0.0.0.0
    protocol MQTT
    allow_anonymous true
    log_type all
    log_dest file C:\Program Files\mosquitto\mosquitto.log
    
  • Verify Installation with mosquitto -v.

  • Check for Mosquitto Subscriber and Publisher with mosquitto_sub --version or mosquitto_pub --version.

  • Stop Mosquitto Broker service in Services.msc, if you get an error and re-check mosquitto -v.

  • Test Basic Connection:

    mosquitto_sub -h test.mosquitto.org -t test/connect
    mosquitto_pub -h test.mosquitto.org -t test/connect -m "Hello MQTT!"
    
🤖 Circuit Layout and Topics
  • For complete circuit diagrams and pin connections, refer to CONNECTIONS.md.

Base Topic: home/

graph TD
    A[home/] --> B[home/control]
    A --> C[home/summary]
    A --> D[home/rooms/]
    A --> E[home/control/response/]
    
    D --> F[home/rooms/room1]
    D --> G[home/rooms/kitchen]
    D --> H[home/rooms/gate]
    
    E --> I[home/control/response/client_id]
Loading

Control Commands

Command Action Required Fields Description Response Topic Example JSON
Subscribe subscribe client_id, rooms Subscribe client to specific rooms home/control/response/{client_id} {"action": "subscribe", "client_id": "C-01", "rooms": ["room1", "kitchen"]}
Unsubscribe unsubscribe client_id, rooms Unsubscribe client from specific rooms home/control/response/{client_id} {"action": "unsubscribe", "client_id": "C-01", "rooms": ["room1"]}
Disconnect disconnect client_id Disconnect client from all rooms home/control/response/{client_id} {"action": "disconnect", "client_id": "C-01"}
Status status client_id Get client subscription status home/control/response/{client_id} {"action": "status", "client_id": "C-01"}
🤔 How to Run?
  • First, Go to Wokwi and Open Basic ESP32 Project.

  • Create New File named main.py.

  • From the repository, use the diagram.json and main.py.

  • Run the code in Wokwi.

  • Meanwhile, open Command Prompt and Subscribe to Topics to view messages.

Commands to Test Simulation

  1. Monitor all Topics.

    mosquitto_sub -h test.mosquitto.org -t "home/#" -v
  2. Monitor Specific Topics.

  • Monitor Control Messages

    mosquitto_sub -h test.mosquitto.org -t "home/control/#" -v
  • Monitor Room Readings

    mosquitto_sub -h test.mosquitto.org -t "home/rooms/#" -v
  • Monitor System Summary

    mosquitto_sub -h test.mosquitto.org -t "home/summary" -v
  1. Subscribe Client to Rooms
  • Subscribe C-01 to gate only

    mosquitto_pub -h test.mosquitto.org -t "home/control" -m "{\"action\": \"subscribe\", \"client_id\": \"C-01\", \"rooms\": [\"gate\"]}"
  • Subscribe C-02 to all rooms

    mosquitto_pub -h test.mosquitto.org -t "home/control" -m "{\"action\": \"subscribe\", \"client_id\": \"client3\", \"rooms\": [\"room1\", \"kitchen\", \"gate\"]}"
  1. Monitor Client Status

    mosquitto_pub -h test.mosquitto.org -t "home/control" -m "{\"action\": \"status\", \"client_id\": \"C-01\"}"
  2. Unsubscribe Client from Rooms

  • Remove client2 from multiple rooms
    mosquitto_pub -h test.mosquitto.org -t "home/control" -m "{\"action\": \"unsubscribe\", \"client_id\": \"C-02\", \"rooms\": [\"kitchen\", \"gate\"]}"
  1. Disconnect Client

    mosquitto_pub -h test.mosquitto.org -t "home/control" -m "{\"action\": \"disconnect\", \"client_id\": \"C-01\"}"
  2. Monitor Specific Room Data

  • Monitor room1 readings

    mosquitto_sub -h test.mosquitto.org -t "home/rooms/room1" -v
  • Monitor kitchen readings

    mosquitto_sub -h test.mosquitto.org -t "home/rooms/kitchen" -v
  • Monitor gate readings

    mosquitto_sub -h test.mosquitto.org -t "home/rooms/gate" -v

About

Simulating MQTT Protocol using Wokwi and Mosquitto Broker.

Topics

Resources

License

Stars

Watchers

Forks

Languages