import datetime
|
import os
|
import pika
|
|
class DeviceManager:
|
def __init__(self, host, user, password):
|
self.host = host
|
self.user = user
|
self.password = password
|
self._devices = {}
|
|
def _create_controll_channel(self, device_id: str):
|
credentials = pika.PlainCredentials(self.user, self.password)
|
parameters = pika.ConnectionParameters(
|
credentials=credentials, host=self.host)
|
# 连接队列服务器
|
connection = pika.BlockingConnection(parameters)
|
channel = connection.channel()
|
channel.queue_declare(queue=device_id + "_callback")
|
return channel
|
|
def get_device(self, device_id: str, save_folder: str):
|
device = self._devices.get(device_id, None)
|
if device is None:
|
start = datetime.datetime.now()
|
if not os.path.exists(save_folder):
|
os.mkdir(save_folder)
|
path = os,path.join(save_folder,f"{device_id}-{start.strftime('%Y-%m-%d-%H-%M-%S')}")
|
if not os.path.exists(path):
|
os.mkdir(path)
|
device = dict(
|
power_on=True,
|
srart=start,
|
path=path,
|
images=0,
|
micro_wave=0,
|
controll_channel=self._create_controll_channel(device_id)
|
)
|
self._devices[device_id] = device
|
return device
|