diff --git a/Alerts.html b/Alerts.html new file mode 100644 index 0000000..2971cab --- /dev/null +++ b/Alerts.html @@ -0,0 +1 @@ +Alerts diff --git a/NodeDetailHeader.html b/NodeDetailHeader.html new file mode 100644 index 0000000..28262a3 --- /dev/null +++ b/NodeDetailHeader.html @@ -0,0 +1,6 @@ +
+
+
+
+

<%= node.vanityname %>

+
diff --git a/Nodelist.html b/Nodelist.html new file mode 100644 index 0000000..17a3f3b --- /dev/null +++ b/Nodelist.html @@ -0,0 +1,35 @@ + + +
+
+
+
+ +
+ +
+ +
+

<%= node.vanityname %>

+
+
+

Pond Level

+

<%= Math.round(channels["pondlevel.pond_level"].value * 100) / 100 %> ft.

+
+
diff --git a/Overview.html b/Overview.html new file mode 100644 index 0000000..599975e --- /dev/null +++ b/Overview.html @@ -0,0 +1,173 @@ + + +
+ +
+

Pond Level

+
+
+
+
+ + + +
+ + <%= channels["pondlevel.pond_level"].timestamp %> + +
+
+ +
+
+
+
+

Configuration

+
+
+ +
+ +
+ +
+
+ + + + + diff --git a/Sidebar.html b/Sidebar.html new file mode 100644 index 0000000..5b6951a --- /dev/null +++ b/Sidebar.html @@ -0,0 +1,15 @@ +" + class="data-table btn-block btn btn-theme animated" + title="Device Log"> Device Log + +" + data-techname="<%=channels["pondlevel.sync"].techName %>" + data-name="<%= channels["pondlevel.sync"].name%>" + data-nodechannelcurrentId="<%= channels["pondlevel.sync"].nodechannelcurrentId %>" + id="<%= channels["pondlevel.sync"].channelId %>" + class="btn btn-large btn-block btn-theme animated setstatic mqtt"> + Sync All Data diff --git a/Trends.html b/Trends.html new file mode 100644 index 0000000..f046914 --- /dev/null +++ b/Trends.html @@ -0,0 +1,27 @@ +
+
+ + to + + + Run + +
+
+
+
+ diff --git a/config.txt b/config.txt new file mode 100644 index 0000000..88aa0a6 --- /dev/null +++ b/config.txt @@ -0,0 +1,10 @@ +{ + +"driverFileName":"pondlevel.py", +"deviceName":"pondlevel", +"driverId":"0130", +"releaseVersion":"1", +"files": { + "file1":"pondlevel.py"} + +} diff --git a/pondlevel.py b/pondlevel.py new file mode 100644 index 0000000..9653c63 --- /dev/null +++ b/pondlevel.py @@ -0,0 +1,88 @@ +"""Driver for connecting Pond Level to Meshify.""" + +import threading +from device_base import deviceBase +import time +import random + +_ = None + +pond_level = { + 'value': 15.0, + 'timestamp': 0 +} +send_delta = 0.5 +send_time = 300 + +temp_pl = pond_level['value'] + + +class start(threading.Thread, deviceBase): + """Start class required by Meshify.""" + + def __init__(self, name=None, number=None, mac=None, Q=None, mcu=None, companyId=None, offset=None, mqtt=None, Nodes=None): + """Initialize the driver.""" + threading.Thread.__init__(self) + deviceBase.__init__(self, name=name, number=number, mac=mac, Q=Q, mcu=mcu, companyId=companyId, offset=offset, mqtt=mqtt, Nodes=Nodes) + + self.daemon = True + self.version = "1" + self.finished = threading.Event() + self.forceSend = False + threading.Thread.start(self) + + # this is a required function for all drivers, its goal is to upload some piece of data + # about your device so it can be seen on the web + def register(self): + """Register the driver.""" + self.sendtodb("log", "BOOM! Booted.", 0) + + def run(self): + """Actually run the driver.""" + global pond_level, temp_pl, send_delta, send_time + + wait_sec = 10 + for i in range(0, wait_sec): + print("pondlevel driver will start in {} seconds".format(wait_sec - i)) + time.sleep(1) + print("BOOM! Starting pondlevel driver...") + send_loops = 0 + while True: + send_now = False + if self.forceSend: + print "FORCE SEND: TRUE" + send_now = True + + up_down = 1 + if bool(random.getrandbits(1)): + up_down = -1 + + temp_pl = pond_level['value'] + up_down * random.random() + + if abs(temp_pl - pond_level['value']) > send_delta: + print("Sending {} due to value change".format(temp_pl)) + send_now = True + elif (time.time() - pond_level['timestamp']) > send_time: + print("Sending {} due to time limit".format(temp_pl)) + send_now = True + + if send_now: + self.sendtodb('pond_level', temp_pl, 0) + pond_level['value'] = temp_pl + pond_level['timestamp'] = time.time() + + print("pondlevel driver still alive...") + if self.forceSend: + if send_loops > 2: + print("Turning off forceSend") + self.forceSend = False + send_loops = 0 + else: + send_loops += 1 + time.sleep(10) + + def pondlevel_sync(self, name, value): + """Sync all data from the driver.""" + self.forceSend = True + self.sendtodb("log", "synced", 0) + return True diff --git a/test.html b/test.html new file mode 100644 index 0000000..ac0558e --- /dev/null +++ b/test.html @@ -0,0 +1,32 @@ +
+