Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions my vms/vms/client/simulator/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM python:alpine3.19
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]
45 changes: 45 additions & 0 deletions my vms/vms/client/simulator/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
version: "3"

services:
temp_sensor:
image: lenaporfireva/data-simulator
environment:
- SIM_HOST=192.168.0.101
- SIM_NAME=TEMP1
- SIM_PERIOD=2
- SIM_TYPE=temperature
pressure_sensor:
image: lenaporfireva/data-simulator
environment:
- SIM_HOST=192.168.0.101
- SIM_NAME=PRESS1
- SIM_PERIOD=2
- SIM_TYPE=pressure
current_sensor:
image: lenaporfireva/data-simulator
environment:
- SIM_HOST=192.168.0.101
- SIM_NAME=CURRENT1
- SIM_PERIOD=2
- SIM_TYPE=current
co_sensor:
image: lenaporfireva/data-simulator
environment:
- SIM_HOST=192.168.0.101
- SIM_NAME=CO1
- SIM_PERIOD=2
- SIM_TYPE=carbon_oxid
temp_sensor_2:
image: lenaporfireva/data-simulator
environment:
- SIM_HOST=192.168.0.101
- SIM_NAME=TEMP2
- SIM_PERIOD=4
- SIM_TYPE=temperature
co_sensor_2:
image: lenaporfireva/data-simulator
environment:
- SIM_HOST=192.168.0.101
- SIM_NAME=CO2
- SIM_PERIOD=6
- SIM_TYPE=carbon_oxid
10 changes: 10 additions & 0 deletions my vms/vms/client/simulator/entity/sensor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class CO(Sensor):
step = 0

def __init__(self,name):
super().__init__(name)
self.type = "carbon oxid"

def generate_new_value(self):
self.value = self.step * 1e6
self.step = self.step + 0.001
28 changes: 28 additions & 0 deletions my vms/vms/client/simulator/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import paho.mqtt.client as paho
from os import environ
import time

from entity.sensor import *

broker = "localhost" if "SIM_HOST" not in environ.keys() else environ["SIM_HOST"]
port = 1883 if "SIM_PORT" not in environ.keys() else environ["SIM_PORT"]
name = "sensor" if "SIM_NAME" not in environ.keys() else environ["SIM_NAME"]
period = 1 if "SIM_PERIOD" not in environ.keys() else int(environ["SIM_PERIOD"])
type_sim = "temperature" if "SIM_TYPE" not in environ.keys() else environ["SIM_TYPE"]

sensors = {"temperature": Temperature, "pressure": Pressure, "current": Current, "carbon_oxid": CO}


def on_publish(client, userdata, result): # create function for callback
print(f"data published {userdata}")
pass


sensor = sensors[type_sim](name=name)
client1 = paho.Client(sensor.name) # create client object
client1.on_publish = on_publish # assign function to callback
client1.connect(broker, port) # establish connection
while True:
sensor.generate_new_value()
ret = client1.publish("sensors/" + sensor.type + "/" + sensor.name, sensor.get_data()) # publish
time.sleep(period)
1 change: 1 addition & 0 deletions my vms/vms/client/simulator/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
paho_mqtt==1.6.1
9 changes: 9 additions & 0 deletions my vms/vms/gateway/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: "3"
services:
broker:
image: eclipse-mosquitto
container_name: broker
volumes:
- ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf
ports:
- "1883:1883"
2 changes: 2 additions & 0 deletions my vms/vms/gateway/mosquitto/mosquitto.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
listener 1883
allow_anonymous true
41 changes: 41 additions & 0 deletions my vms/vms/server/infra/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
version: "3"
services:
influxdb:
image: influxdb:1.8
container_name: influxdb
volumes:
- ./influxdb/scripts:/docker-entrypoint-initdb.d
- influx_data:/var/lib/influxdb
networks:
- server-net
telegraf:
image: telegraf
container_name: telegraf
volumes:
- ./telegraf:/etc/telegraf:ro
restart: unless-stopped
networks:
- server-net
grafana:
image: grafana/grafana
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/:/etc/grafana/

environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
restart: unless-stopped
ports:
- 3000:3000
networks:
- server-net

volumes:
influx_data: {}
grafana_data: {}

networks:
server-net: {}
Loading