Alter Code (100% Prozessorlast)
/usr/local/bin/emob/impsim:
#!/usr/bin/env python import subprocess import smtplib import socket from email.mime.text import MIMEText import time import MySQLdb as mdb import sys import RPi.GPIO as GPIO, time, os from sys import stdout from datetime import datetime GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) gread = 0 hcount = 0 load = 0 lch = 0 imp = 0 lcheck = 0 now = datetime.now() last = now lastlast = last delta = now - last pstart = 1 def RCtime (RCpin): reading = 0 GPIO.setup(RCpin, GPIO.OUT) GPIO.output(RCpin, GPIO.LOW) GPIO.setup(RCpin, GPIO.IN) while (GPIO.input(RCpin) == GPIO.LOW): reading = 1 time.sleep(0.1) return reading def setload (): con = None try: con = mdb.connect('localhost', 'db_user', 'db_pass', 'emob'); cur = con.cursor() cur.execute("UPDATE emob.settings SET loading='1'") con.commit() except mdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) finally: if con: con.close() def unsetload (): con = None try: con = mdb.connect('localhost', 'db_user', 'db_pass', 'emob'); cur = con.cursor() cur.execute("UPDATE emob.settings SET loading='0'") con.commit() except mdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) finally: if con: con.close() def writedb (akw,fcount): loading = 0 con = None try: con = mdb.connect('localhost', 'db_user', 'db_pass', 'emob'); cur = con.cursor() cur.execute("SELECT loading FROM emob.settings") ldata = cur.fetchone() loading = ldata[0] if loading == 1: cur.execute("SELECT total FROM emob.countings") data = cur.fetchone() tkw = data[0] if fcount == 100: tkw += 1 sql = "UPDATE emob.countings SET actual=%s, total=%s" cur.execute(sql, (akw,tkw)) con.commit() except mdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) finally: if con: con.close() return loading def writerem (rload): con = None try: con = mdb.connect('remote_host', 'db_user', 'db_pass', 'ips'); cur = con.cursor() sql = "UPDATE ips.station SET loading=%s" cur.execute(sql, (rload)) con.commit() except mdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) finally: if con: con.close() def postit(pload, pkw): Empfaenger = 'your@mail.here' Absender = 'your@mail.here' Passwort = 'password' smtpserver = smtplib.SMTP_SSL('mailserver_hostname',465) smtpserver.ehlo() # In Account einloggen smtpserver.login(Absender, Passwort) # Text if pload == 1: Wert = 'Ladevrogang gestartet' if pload == 0: Wert = 'Ladevorgang beendet: %s kW' % pkw msg = MIMEText(Wert) # Betreff msg['Subject'] = 'Nachricht von der Ladestation' # Absender msg['From'] = 'ladestation' #Empfaenger msg['To'] = Empfaenger # E-Mail abschicken smtpserver.sendmail(Absender, [Empfaenger], msg.as_string()) smtpserver.quit() unsetload() writedb(0,0) while True: imp = RCtime(2) now = datetime.now() delta = now - last if imp == 1: pstart = 0 lastlast = last last = now delta = last - lastlast if delta.seconds < 30 and pstart != 1: if lcheck == 1 and imp == 1: hcount += 1 if hcount > 100: hcount = 1 gread += 0.00125 writedb(gread,hcount) if lcheck == 0 and imp == 1: setload() lcheck = 1 writedb(gread,hcount) writerem(1) postit(1, 0) else: if lcheck == 1: unsetload() lcheck = 0 writerem(0) postit(0, gread) hcount = 0 gread = 0