#!/usr/bin/env /usr/bin/python3

"""
PingService.py
12.03.2023
"""

# PACKAGES
import logging
from ping3 import ping
from mylib2 import *

# KONSTANTEN

# KLASSEN UND FUNKTIONEN

# Einspeisung
class PingTest():

    def __init__(self, ip, name):
        self.ip = ip
        self.name = name
        self.online = False

    def test(self):
        if ping(self.ip) == False:
            self.online = False
            mail.send('OFFLINE: {}'.format(self.name), '{} OFFLINE, IP: {}'.format(self.name, self.ip))
        else:
            if not self.online:
                self.online = True
                mail.send('ONLINE: {}'.format(self.name), '{} ONLINE, IP: {}'.format(self.name, self.ip))
# PingTest

# <<< START ---------------------------------------------------------------
# logging
logger = startlogging('pvsv', logging.DEBUG)

# Initialisieren
# Datenbank
prz = prozess('PING', 600)
logger.info('===== START ===== pid:{}'.format(prz.pid))
mail = Mail('PingServer8 <pingserver8@muehmel-net.de>', 'PingServerLog8 <log.pvserver8@muehmel-net.de>')
mail.send('PingServer8: START', 'PingServer8: Prozess neu gestartet')

# Pings
#ping6 = PingTest('192.168.168.6', 'cloud6')
ping9 = PingTest('192.168.168.9', 'cloud9')
pingZ = PingTest('192.168.168.105', 'Zisterne')
pingB = PingTest('192.168.168.114', 'Bewegungsmelder')
pingE = PingTest('192.168.168.115', 'Einspeisung')
pingL = PingTest('192.168.168.116', 'Ladedose')
pingC = PingTest('192.168.168.117', 'Clouddose')

# Dauerschleife
while True:  # immer
    prz.start(False)
    # jeder Takt
    ping9.test()
    if not ping9.online:
        #ping6.test()
        pingZ.test()
        pingB.test()
        pingE.test()
        pingL.test()
        pingC.test()

    prz.sleep(300) # 5 Minuten
# while
# ENDE
