Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import read_ec as ec #Meine zwei Unterskripte werden als Module geladen.
import read_s0 as s0
from time import sleep
from threading import Lock
from threading import Thread
class Counter(object): #Hier wird ein Counter Objekt erstellt, um den Status des Zählers zu loggen, Erklärung später.
def __init__(self,value=0):
self.value = value
self.lock = Lock()
def set_on(self):
with self.lock:
self.value = 1
result = self.value
return result
def set_off(self):
with self.lock:
self.value = 0
result = self.value
return result
def get_status(self):
with self.lock:
result = self.value
return result
def read_config(): #liest meine Konfigurationsdatei, in der Serverdaten, Emaildaten, und die Stati der Zähler enthalten sind
config_content = []
with open("konfiguration.txt") as one_file:
for line in one_file:
config.append(line.rstrip())
return config_content
"""Die Start-Funktion der Zähler. Hier ändert sich nur der Tabellennname
und der letzte Wert der Konfigurationsdatei wird aus einer anderen Zeile gezogen.
"""
def start_s0(config_content, number):
intervall = 900
frequency = 100
digital_input = 0
led_output = 0
table_name = "S0_Zaehler_0" + number
s0.main(
intervall,
frequency,
table_name,
digital_input,
led_output,
config_content[0],
config_content[1],
config_content[2],
config_content[3],
config_content[4],
config_content[5],
config_content[6],
config_content[7],
config_content[8],
config_content[9]
)
"""Jetzt wird der Start-Prozess gefahren. Die config Datei wird gelesen und immer die für den
jeweiligen Zähler interessante Zeile wird überprüft, kann active oder inactive sein.
Ist sie active, wird der Zähler-Prozess gestartet. Ist sie inactive wird der nächste überprüft.
"""
def initiation_process(count):
config_content = read_config()
for x in range(8):
n = 10 + x
number = x + 1
status = count.get_status()
if status = 1:
break
elif config_content[n] = "active":
start_s0_thread(config_content, number)
count.set_on()
else:
continue
def start_s0_thread():
thread = Thread(target=start_s0, args=(config_content, number))
thread.setDaemon(True)
thread.start
def main():
count = Counter()
while True:
initiation_process(count)
sleep(300)
if __name__ == '__main__':
main()
Zum Nachvollziehen, hier noch die Konfigurationsdatei:
Code: Alles auswählen
db_host
db_user
db_password
db_database
em_host
em_fromaddr
em_toaddr
em_port
em_login
em_password
active
inactive
inactive
inactive
inactive
inactive
inactive
inactive