IP12 = '192.168.0.100'
IP13 = '192.168.0.101'
RODOS12 = '192.168.1.100'
RODOS13 = '192.168.1.101'
def cameras_checker(self):
while True:
r_dict = {'Купол 12': IP12, 'Купол 13':IP13}
for key, val in r_dictitems():
cmd = f'ping {val} -n 1 -w 100
response = subprocesscall(cmd, stdout=subprocess.DEVNUL)
if not response:
print(f'Camera {key}- OK')
счетчик неудач 12 или 13 купола = 0 # При появлении пинга необходимо обнулить
else:
if key == 'Купол 12':
счетчик неудач 12 купола += 1 # Прибавляем 1 неудачную попытку к 12 куполу
print(f'Camera {key}- Died')
if счетчик неудач = 5:
self.cameras_reboot(RODOS12)
else:
счетчик неудач 13 купола += 1 # Прибавляем 1 неудачную попытку к 13 куполу
print(f'Camera {key}- Died')
if счетчик неудач = 5:
self.cameras_reboot(RODOS13)
sleep(5)
def cameras_reboot(self, ip)
счетчик перезагрузок 12 или 13 купола += 1 # Прибавляем 1 перезагрузкам 12 или 13 купола
...
функция перезагрузки реле
...
def info(self)
print(f'Перезагрузок купол 12 {счетчик перезагрузок 12}\nf'Перезагрузок купол 13 {счетчик перезагрузок 13}')
import subprocess
from time import sleep
class CameraMonitor:
def __init__(self):
self.IP12 = '192.168.0.100'
self.IP13 = '192.168.0.101'
self.RODOS12 = '192.168.1.100'
self.RODOS13 = '192.168.1.101'
self.fail_count = {'Купол 12': 0, 'Купол 13': 0}
self.reboot_count = {'Купол 12': 0, 'Купол 13': 0}
def ping_camera(self, ip):
cmd = f'ping {ip} -n 1 -w 100'
response = subprocess.call(cmd, stdout=subprocess.DEVNULL)
return response == 0
def cameras_checker(self):
r_dict = {'Купол 12': self.IP12, 'Купол 13': self.IP13}
while True:
for camera, ip in r_dict.items():
if self.ping_camera(ip):
print(f'Camera {camera} - OK')
self.fail_count[camera] = 0
else:
self.fail_count[camera] += 1
print(f'Camera {camera} - Died')
if self.fail_count[camera] >= 5:
self.cameras_reboot(camera)
sleep(5)
def cameras_reboot(self, camera):
if camera == 'Купол 12':
ip = self.RODOS12
else:
ip = self.RODOS13
self.reboot_count[camera] += 1
print(f'Rebooting {camera} at IP {ip}')
def info(self):
for camera, count in self.reboot_count.items():
print(f'Перезагрузок {camera}: {count}')
if __name__ == "__main__":
monitor = CameraMonitor()
monitor.cameras_checker()
def cameras_checker(self):
cameras = [
{'name': 'Купол 12', 'ip': IP12, 'rebootIp': RODOS12, 'fails': 0},
{'name': 'Купол 13', 'ip': IP13, 'rebootIp': RODOS13, 'fails': 0},
]
while True:
for camera in cameras:
cmd = f"ping {camera['ip']} -n 1 -w 100"
response = subprocesscall(cmd, stdout=subprocess.DEVNUL)
if not response:
print(f'Camera {camera['name']} ok')
camera['fails'] = 0
else:
camera['fails'] += 1
print(f"Camera {camera['name']} died")
if camera['fails'] = 5:
self.cameras_reboot(camera['rebootIp'])
sleep(5)