Skip to content
Snippets Groups Projects
Commit ee4dcff2 authored by fxk8y's avatar fxk8y :spider:
Browse files

Using JSON instead of YAML as the ESPs only do JSON serialization atm

parent 53e6fc37
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
import time import time
import random import random
from xmlrpc.client import Boolean
from MMQTT import MMQTT from MMQTT import MMQTT
...@@ -52,7 +51,7 @@ class PublishAction(Action): ...@@ -52,7 +51,7 @@ class PublishAction(Action):
class OnlineStatusAction: class OnlineStatusAction:
def __init__(self, online: Boolean): def __init__(self, online: bool):
self.online = online self.online = online
def execute(self, dev: Device) -> None: def execute(self, dev: Device) -> None:
...@@ -84,7 +83,7 @@ class ListenerAction: ...@@ -84,7 +83,7 @@ class ListenerAction:
class MetricsAction: class MetricsAction:
def __init__(self, nameSpace: str = 'CyanLight', reset: int = None, uptime: int = None, lifetime: int = None, **metrics): def __init__(self, nameSpace: str = 'CyanLight', reset: int = (1, 1337), uptime: int = (1, 1e6), lifetime: int = None, birth: int = (1e9, time.time()), **metrics):
'''Setting a metric to None means it gets randomized every action '''Setting a metric to None means it gets randomized every action
The predefined metrics are mandatory, but may be overwritten through **kwargs The predefined metrics are mandatory, but may be overwritten through **kwargs
...@@ -93,6 +92,7 @@ class MetricsAction: ...@@ -93,6 +92,7 @@ class MetricsAction:
self.nameSpace = nameSpace self.nameSpace = nameSpace
self.metrics = {} self.metrics = {}
self.metrics['birth'] = birth
self.metrics['reset'] = reset self.metrics['reset'] = reset
self.metrics['uptime'] = uptime self.metrics['uptime'] = uptime
self.metrics['lifetime'] = lifetime self.metrics['lifetime'] = lifetime
...@@ -108,7 +108,7 @@ class MetricsAction: ...@@ -108,7 +108,7 @@ class MetricsAction:
if v is None: if v is None:
metrics[k] = random.randrange(1, 2**32) metrics[k] = random.randrange(1, 2**32)
elif issubclass(type(v), tuple) and len(v) >= 2 and v[0] < v[1]: elif issubclass(type(v), tuple) and len(v) >= 2 and v[0] < v[1]:
metrics[k] = random.randrange(v[0], v[1]) metrics[k] = random.randrange(int(v[0]), int(v[1]))
else: else:
metrics[k] = v metrics[k] = v
...@@ -126,12 +126,23 @@ if __name__ == '__main__': ...@@ -126,12 +126,23 @@ if __name__ == '__main__':
on = OnlineStatusAction(True) on = OnlineStatusAction(True)
off = OnlineStatusAction(False) off = OnlineStatusAction(False)
pause = SleepAction() p1 = SleepAction(1)
p3 = SleepAction(3)
p5 = SleepAction(5)
# p10 = SleepAction(10)
listener = ListenerAction()
metrics = MetricsAction()
dev = Device('ringclock', mqtt) dev = Device('ringclock', mqtt)
on.execute(dev) while True:
pause.execute(dev) on.execute(dev)
off.execute(dev) p1.execute(dev)
listener.execute(dev)
time.sleep(0.5) p1.execute(dev)
for _ in range(10):
metrics.execute(dev)
p3.execute(dev)
p3.execute(dev)
off.execute(dev)
p5.execute(dev)
import yaml # import yaml
import json
import time import time
import random import random
import paho.mqtt.client as mqtt import paho.mqtt.client as mqtt
...@@ -50,7 +51,8 @@ class MMQTT: ...@@ -50,7 +51,8 @@ class MMQTT:
elif issubclass(payloadType, (bool, int, float, complex)): elif issubclass(payloadType, (bool, int, float, complex)):
pl = str(payload).encode('utf-8') pl = str(payload).encode('utf-8')
elif issubclass(payloadType, (list, set, dict)): elif issubclass(payloadType, (list, set, dict)):
pl = yaml.dump(payload, default_flow_style=not prettyPrintYAML).encode('utf-8') pl = json.dumps(payload).encode('utf-8')
# pl = yaml.dump(payload, default_flow_style=not prettyPrintYAML).encode('utf-8')
else: else:
pl = payload pl = payload
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment