mirror of
https://github.com/daniviga/django-ram.git
synced 2025-08-04 13:17:50 +02:00
Switch driver from MQTT to socket to get synchronous feedback
This commit is contained in:
@@ -1,22 +1,27 @@
|
|||||||
import paho.mqtt.client as mqtt
|
import socket
|
||||||
|
|
||||||
|
from driver.models import DriverConfiguration
|
||||||
|
|
||||||
|
|
||||||
class Connector:
|
class Connector:
|
||||||
MQTT_HOST = "127.0.0.1"
|
|
||||||
MQTT_PORT = 1883
|
|
||||||
|
|
||||||
@classmethod
|
def __init__(self):
|
||||||
def __mqtt_pub(self, message):
|
config = DriverConfiguration.get_solo()
|
||||||
|
self.remote_host = config.remote_host
|
||||||
|
self.remote_port = config.remote_port
|
||||||
|
|
||||||
|
def __send_data(self, message):
|
||||||
# to be encoded
|
# to be encoded
|
||||||
client = mqtt.Client()
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
|
||||||
client.connect(self.MQTT_HOST, self.MQTT_PORT)
|
sock.connect((self.remote_host, self.remote_port))
|
||||||
client.publish("dcc/commands", payload=message)
|
sock.sendall(message)
|
||||||
client.disconnect()
|
resp = sock.recv(1024)
|
||||||
print(message)
|
|
||||||
|
print(resp)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def passthrough(self, data):
|
def passthrough(self, data):
|
||||||
self.__mqtt_pub(data)
|
self.__send_data(data)
|
||||||
|
|
||||||
def ops(self, address, data, function=False):
|
def ops(self, address, data, function=False):
|
||||||
if function:
|
if function:
|
||||||
@@ -25,7 +30,7 @@ class Connector:
|
|||||||
else:
|
else:
|
||||||
message = "<t 1 {0} {1} {2}>".format(address, data['speed'],
|
message = "<t 1 {0} {1} {2}>".format(address, data['speed'],
|
||||||
data['direction'])
|
data['direction'])
|
||||||
self.__mqtt_pub(message)
|
self.__send_data(message)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def infra(self, data):
|
def infra(self, data):
|
||||||
@@ -36,9 +41,9 @@ class Connector:
|
|||||||
track = ""
|
track = ""
|
||||||
|
|
||||||
if power:
|
if power:
|
||||||
self.__mqtt_pub('<1{}>'.format(track))
|
self.__send_data('<1{}>'.format(track))
|
||||||
else:
|
else:
|
||||||
self.__mqtt_pub('<0{}>'.format(track))
|
self.__send_data('<0{}>'.format(track))
|
||||||
|
|
||||||
def emergency(self):
|
def emergency(self):
|
||||||
self.__mqtt_pub('<!>')
|
self.__send_data('<!>')
|
||||||
|
Reference in New Issue
Block a user