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 @@
import time
import random
from xmlrpc.client import Boolean
from MMQTT import MMQTT
......@@ -52,7 +51,7 @@ class PublishAction(Action):
class OnlineStatusAction:
def __init__(self, online: Boolean):
def __init__(self, online: bool):
self.online = online
def execute(self, dev: Device) -> None:
......@@ -84,7 +83,7 @@ class ListenerAction:
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
The predefined metrics are mandatory, but may be overwritten through **kwargs
......@@ -93,6 +92,7 @@ class MetricsAction:
self.nameSpace = nameSpace
self.metrics = {}
self.metrics['birth'] = birth
self.metrics['reset'] = reset
self.metrics['uptime'] = uptime
self.metrics['lifetime'] = lifetime
......@@ -108,7 +108,7 @@ class MetricsAction:
if v is None:
metrics[k] = random.randrange(1, 2**32)
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:
metrics[k] = v
......@@ -126,12 +126,23 @@ if __name__ == '__main__':
on = OnlineStatusAction(True)
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)
on.execute(dev)
pause.execute(dev)
off.execute(dev)
time.sleep(0.5)
while True:
on.execute(dev)
p1.execute(dev)
listener.execute(dev)
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 random
import paho.mqtt.client as mqtt
......@@ -50,7 +51,8 @@ class MMQTT:
elif issubclass(payloadType, (bool, int, float, complex)):
pl = str(payload).encode('utf-8')
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:
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