This repoistory will allow you to spin up differnt MQTT simulators producing fake IoT data for differnt scenerios.
Each generator will write to its own MQTT topic the following values:
- Load
- Voltage
- Fuel Level
- Temperature
The payload will look like this:
{"generatorID": "generator1", "lat": 40.68066, "lon": -73.47429, "temperature": 186, "power": 186, "load": 2, "fuel": 277}
Each vehicle will write to its own MQTT topic and subtopics the following values:
- Speed
- Temperature
- Vibration
The payload will look like this:
RoadRoller/Temperature 24.1
RoadRoller/Speed 12
RoadRoller/Vibration 1.00394
To run this construction site example make sure to uncomment the correct sections of the MQTT Input plugin in the the telegraf.conf and docker-compose.yml. Also make sure to replace the commands below with the right pathways, i.e:
docker build -t construction-site:latest ./construction_site
There are two ways to setup this Sim: Docker + Locally
- Clone this repo to your system
git clone https://github.com/Jayclifford345/mqtt-emergency-generator.git
- Build the simulator docker image:
docker build emergency_generator/. -t emergency-generator:latest
- Deploy the docker-compose file:
docker-compose up -d
- Install the Mosquitto MQTT Broker onto your device:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudp apt-get install mosquitto
- Start the Mosquitto broker:
sudo systemctl enable Mosquitto
sudo systemctl start Mosquitto
- Clone this repo to your local system:
git clone https://github.com/Jayclifford345/mqtt-emergency-generator.git
- Naviage to this folder
cd mqtt-emergency-generator/tree/master/generator_simulator
- Install the pip requirements
RUN python3 -m pip install --no-cache-dir -r requirements.txt
- Setup your enviroment variables
export GENERATORS=3
export BROKER=localhost
- Run the the simulator
python3 src/emergency_generator.py
This section will teach you how to configure InfluxDB OSS to send data to InfluxDB Cloud.
To use this option, first uncomment the InfluxDB Output section of telegraf.conf and uncomment out the current InfluxDB Output section which is configured to write directly to InfluxDB Cloud.
- Create a remote connection
influx remote create --name cloud --remote-url https://us-east-1-1.aws.cloud2.influxdata.com --remote-org-id <ORG_ID> --remote-api-token <CLOUD_TOKEN>
- Create a replication between a local bucket and a cloud bucket
influx replication create --local-bucket-id 1f158076adc417f5 --remote-bucket-id 621a1bf27327b2fc --remote-id 0947082f21c3e000 --name edge_to_cloud
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.