aboutsummaryrefslogtreecommitdiffstats
path: root/mikrotik.py
diff options
context:
space:
mode:
Diffstat (limited to 'mikrotik.py')
-rw-r--r--mikrotik.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/mikrotik.py b/mikrotik.py
new file mode 100644
index 0000000..90dc438
--- /dev/null
+++ b/mikrotik.py
@@ -0,0 +1,58 @@
+from dataclasses import dataclass, field
+import serial
+import devices
+import time
+import os
+import re
+
+@dataclass
+class MikroTikSerialDevice:
+ device: str = os.environ["MIKROTIK_DEVICE"]
+ user: str = os.environ["MIKROTIK_USER"]
+ passwd: str = os.environ["MIKROTIK_PASS"]
+
+ def __post_init__(self):
+ self.interfaces = {}
+ for i in os.environ["MIKROTIK_INTERFACES"].split(","):
+ self.interfaces.__setitem__(*i.split(":"))
+
+ def _get_poe_info(self, port):
+ self.ser = serial.Serial(self.device, 115200, timeout=0.25)
+
+ self._push_serial("")
+ self._push_serial(self.user)
+ self._push_serial(self.passwd)
+ self._push_serial("/interface/ethernet/poe/monitor %s" % port)
+ time.sleep(0.05)
+ self.ser.write(bytes("q", 'ISO-8859-1'))
+ out = self._read()
+ self.ser.close()
+
+ return self._post_out(out)
+
+ def _push_serial(self, text):
+ time.sleep(0.05)
+ self.ser.write(bytes(text + "\r\n", 'ISO-8859-1'))
+ time.sleep(0.05)
+
+ def _read(self):
+ return self.ser.readlines()
+
+ def _post_out(self, out):
+ d = {}
+ for line in out:
+ line = line.decode().strip()
+ if line.startswith("poe"):
+ d.__setitem__(*line.split(": "))
+
+ return d
+
+ def get_poes(self):
+
+ print(self.interfaces)
+
+
+if __name__ == "__main__":
+ mikrotik = MikroTikSerialDevice()
+ print(mikrotik.get_poes())
+