import socket, threading
import pymysql
import time

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('192.168.51.102', 1))
s.listen(5)
c, a = s.accept()
print('server start at: %s:%s' % a)
print('wait for connection...')

def update_Ferment_Input_status(f,r):
    con = pymysql.connect(host='60.250.156.230', user='user', password='Gold@53743001', db='CoffeeManage',
                          charset='utf8')
    datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    insert = con.cursor()
    insert_status = "INSERT INTO `ferment_container_status`(`Ferment_Input_1`,`Ferment_Input_2`," \
                   "`Ferment_Tank_1`,`Ferment_Tank_2`, `Ferment_Tank_3`, `Ferment_Tank_4`, `Ferment_Tank_5`," \
                   "`Ferment_Tank_6`, `Ferment_Tank_7`,`Ferment_Tank_8`, `Ferment_Tank_9`, `Ferment_Tank_10`," \
                   "`Ferment_Tank_11`, `Ferment_Tank_12`, `Ferment_Output_1`,`Ferment_Output_2`)" \
                   "SELECT `Ferment_Input_1`, `Ferment_Input_2`," \
                   "`Ferment_Tank_1`,`Ferment_Tank_2`, `Ferment_Tank_3`, `Ferment_Tank_4`, `Ferment_Tank_5`," \
                   "`Ferment_Tank_6`, `Ferment_Tank_7`,`Ferment_Tank_8`, `Ferment_Tank_9`, `Ferment_Tank_10`," \
                  "`Ferment_Tank_11`, `Ferment_Tank_12`, `Ferment_Output_1`,`Ferment_Output_2`" \
                   "FROM ferment_container_status ORDER BY `datetime` DESC LIMIT 1"
    insert.execute(insert_status)
    con.commit()
    time.sleep(1)
    update_status = con.cursor()
    Ferment_name = 'Ferment_Tank_'
    re = "UPDATE `ferment_container_status` SET " + Ferment_name + str(f) + "='"+r+"' ORDER BY `datetime` DESC LIMIT 1 "
    update_status.execute(re)
    con.commit()


class A(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        while True:
            b = c.recv(1024)
            msg = b.decode(encoding='utf8')
            print('send: ' + msg)
            m = b.decode(encoding='utf8').split('\n')
            for j in range(0, (len(b.decode().split('\n')) - 1)):
                if m[j].split('= ')[0] == "M1_SonicESMUS07":
                    con = pymysql.connect(host='60.250.156.230', user='user', password='Gold@53743001',
                                          db='CoffeeManage',
                                          charset='utf8')
                    datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                    insert = con.cursor()
                    insert_status = "INSERT INTO `ferment_tank_UltraSonic`(`datetime`,`tank_num`,`UltraSonic`) VALUES ('%s', '%s', '%s')" % (
                        datetime, 'F1', m[j].split('= ')[1])
                    insert.execute(insert_status)
                    con.commit()
                if m[j].split('= ')[0] == "M4_PH":
                    con = pymysql.connect(host='60.250.156.230', user='user', password='Gold@53743001',
                                          db='CoffeeManage',
                                          charset='utf8')
                    datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                    insert = con.cursor()
                    insert_status = "INSERT INTO `ferment_tank_PH`(`datetime`,`tank_num`,`PH`) VALUES ('%s', '%s', '%s')" % (
                        datetime, 'F1', m[j].split('= ')[1])
                    insert.execute(insert_status)
                    con.commit()
                if m[j].split('= ')[0] == "M17_SHT11":
                    con = pymysql.connect(host='60.250.156.230', user='user', password='Gold@53743001',
                                          db='CoffeeManage',
                                          charset='utf8')
                    datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                    insert = con.cursor()
                    insert_status = "INSERT INTO `ferment_tank_SHT11`(`datetime`,`tank_num`,`SHT11_Temp`,`SHT11_Humidity`) VALUES ('%s', '%s', '%s', '%s')" % (
                        datetime, 'F1', m[j].split('= ')[1], 60)
                    insert.execute(insert_status)
                    con.commit()
                if m[j].split('= ')[0] == "M19_WATERLEVEL":
                    con = pymysql.connect(host='60.250.156.230', user='user', password='Gold@53743001',
                                          db='CoffeeManage',
                                          charset='utf8')
                    datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                    insert = con.cursor()
                    insert_status = "INSERT INTO `ferment_tank_WaterLevel`(`datetime`,`tank_num`,`WaterLevel`) VALUES ('%s', '%s', '%s')" % (
                        datetime, 'F1', m[j].split('= ')[1])
                    insert.execute(insert_status)
                    con.commit()
                if b.decode().split('\n')[j] == "F_InputtingBean":
                    update_Ferment_Input_status(1, 'F_InputtingBean')
                if b.decode().split('\n')[j] == "F_Fermenting":
                    update_Ferment_Input_status(1, 'F_Fermenting')
                if b.decode().split('\n')[j] == "F_OutputtingBean":
                    update_Ferment_Input_status(1, 'F_OutputtingBean')
                if b.decode().split('\n')[j] == "F_InputtingBean_Finish":
                    update_Ferment_Input_status(1, 'F_InputtingBean_Finish')
                if b.decode().split('\n')[j] == "F_Fermenting_Finish":
                    update_Ferment_Input_status(1, 'F_Fermenting_Finish')
                if b.decode().split('\n')[j] == "F_Waiting":
                    update_Ferment_Input_status(1, 'F_Waiting')


e = A()
e.start()

while True:
    d = input('STATUS::')
    c.send(d.encode(encoding='utf8'))