Управление вентилями/нагревателями

This commit is contained in:
dimazhelovanov 2024-10-29 19:49:33 +04:00
parent 720cf4bd60
commit 091dcbd3a3
2 changed files with 49 additions and 1 deletions

View File

@ -0,0 +1,47 @@
from json import dumps
from json import dumps
class ManageController:
def __init__(self, producer, topic='commands'):
self.valve_state = "closed"
self.heater_state = "off"
self.producer = producer
self.topic = topic
def toggle_device(self, device, request_id, greenhouse_id):
if device == 'valve':
if self.valve_state == 'closed':
self.valve_state = 'open'
print("Valve opened")
else:
self.valve_state = 'closed'
print("Valve closed")
elif device == 'heater':
if self.heater_state == 'off':
self.heater_state = 'on'
print("Heater turned on")
else:
self.heater_state = 'off'
print("Heater turned off")
self.send_status(request_id, greenhouse_id)
def send_status(self, request_id, greenhouse_id):
status = {
'request_id': request_id,
'greenhouse_id': greenhouse_id,
'valve_state': self.valve_state,
'heater_state': self.heater_state
}
self.producer.send(self.topic, value=status)
print(f"Sent device status: {status}")

View File

@ -3,7 +3,8 @@ import kafka
import socket
from json import dumps, loads
import time
from ManageController import ManagerController
greenhouse_controller = GreenhouseController(producer)
consumer = KafkaConsumer(
'commands',
bootstrap_servers=['localhost:9092'],