Bläddra i källkod

上傳檔案到 ''

miacheng913 3 år sedan
förälder
incheckning
d7beade646
2 ändrade filer med 104 tillägg och 22 borttagningar
  1. 57 21
      main.py
  2. 47 1
      models.py

+ 57 - 21
main.py

@@ -12,6 +12,7 @@ from typing import List, Optional
 import json
 # path
 import sys
+from pydantic.errors import ArbitraryTypeError
 
 from sqlalchemy.sql.elements import False_  
 # time
@@ -143,44 +144,79 @@ async def register(request: Request, form_data: OAuth2PasswordRequestForm = Depe
     # 跳轉頁面至登入
     return templates.TemplateResponse(name='login.html', context={'request': request})
 
-@app.get('/tower_add_data', response_class=HTMLResponse)
-async def login(request: Request):
-    return templates.TemplateResponse(name='tower_post.html', context={'request': request})
 
-@app.post('/tower_addData')
-async def register(request: Request,data : models.tower_data,key:str):
+@app.post('/record_tower/{tower_id}')
+async def record_tower(request: Request,tower_id:str,data : models.record_tower_data,key:str):
     #data = models.tower_data(**await request.form())
     if key!="21232f297a57a5a743894a0e4a801fc3":
         return {'msg':'no access'}
+    loc_dt = datetime.today() 
+    loc_dt_format = loc_dt.strftime("%Y-%m-%d %H:%M:%S")
     db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/Water_tower?charset=utf8mb4')
     cmd ="SELECT * FROM device"
     cmd2={}
-    check = 0
+    check = False
     for row in db.query(cmd):
-        if row['id']== data.device:
-            check = 1 
+        if row['id']== tower_id:
+            check = True 
     if check :
-        for row in ['hotTemp','waterFlow','coldTemp','fanMotorCur','fanMotorSpeedFreq']:
-            cmd = "cmd2['cmd'] = \"UPDATE `record_dcs` SET `value` = \"+str(data.DCS_{})  +\" WHERE `device_id` = '\"+data.device+\"' AND `key` = '{}'\"".format(row,row)
+        record_tower_dict =  data.__dict__
+        keys = []
+        for key in record_tower_dict.keys():
+            keys.append(key)
+        for row in keys:
+            cmd = "cmd2['cmd'] = \"UPDATE `record_tower` SET `value` = \"+str(data.{})  +\",`time_stamp` =  '\"+loc_dt_format  +\"' WHERE `device_id` = '\"+tower_id+\"' AND `key` = '{}'\"".format(row,row)
             exec(cmd)
-            print(cmd2['cmd'])
-            db.query(cmd2['cmd'])
-        for row in ['reducer','waterFlow','wetTemp','coldTempData1','coldTempData2','staticPressure']:
-            exec("cmd2['cmd'] = \"UPDATE `record_tower` SET `value` = \"+str(data.{})  +\" WHERE `device_id` = '\"+data.device+\"' AND `key` = '{}'\"".format(row,row))
-            print(cmd2)
+            print(cmd)
             db.query(cmd2['cmd'])
-        for row in ['ch01','ch02','ch03','ch04']:
-            exec("cmd2['cmd'] = \"UPDATE `vibration` SET `DataValue` = \"+str(data.DataValue_{})+\",`CVIndex` = \"+str(data.CVIndex_{})  +\" WHERE `device_id` = '\"+data.device+\"' AND `channelName` = '{}'\"".format(row,row,row))
-            print(cmd2)
-            db.query(cmd2['cmd'])
-            #exec("db['vibration'].update(dict(channelName={},device_id=data.device,DataValue=data.DataValue_{},CVIndex=data.CVIndex_{}),['channelName'],['device_id'])".format(row,row))
+        result={'msg':"success"}
+    else:
+        result = {'msg':"no device"}
+    return json.dumps(result,ensure_ascii=False)
 
+@app.post('/record_dcs/{tower_id}')
+async def record_dcs(request: Request,tower_id:str,data : models.record_dcs_data,key:str):
+    #data = models.tower_data(**await request.form())
+    if key!="21232f297a57a5a743894a0e4a801fc3":
+        return {'msg':'no access'}
+    loc_dt = datetime.today() 
+    loc_dt_format = loc_dt.strftime("%Y-%m-%d %H:%M:%S")
+    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/Water_tower?charset=utf8mb4')
+    cmd ="SELECT * FROM device"
+    cmd2={}
+    check = False
+    for row in db.query(cmd):
+        if row['id']== tower_id:
+            check = True 
+    if check :
+        record_tower_dict =  data.__dict__
+        keys = []
+        for key in record_tower_dict.keys():
+            keys.append(key)
+        for row in keys:
+            cmd = "cmd2['cmd'] = \"UPDATE `record_dcs` SET `value` = \"+str(data.{})  +\",`time_stamp` =  '\"+loc_dt_format  +\"' WHERE `device_id` = '\"+tower_id+\"' AND `key` = '{}'\"".format(row,row)
+            exec(cmd)
+            print(cmd)
+            db.query(cmd2['cmd'])
         result={'msg':"success"}
     else:
         result = {'msg':"no device"}
+    return json.dumps(result,ensure_ascii=False)
 
+@app.post('/record_diagnosis')
+async def record_dcs(request: Request,data : models.record_diagnosis_data,key:str):
+    #data = models.tower_data(**await request.form())
+    if key!="21232f297a57a5a743894a0e4a801fc3":
+        return {'msg':'no access'}
+    loc_dt = datetime.today() 
+    loc_dt_format = loc_dt.strftime("%Y-%m-%d %H:%M:%S")
+    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/Water_tower?charset=utf8mb4')
+    dict_tmp =  data.__dict__
+    dict_tmp['createTime']=loc_dt_format
+    db['record_diagnosis'].update(dict(dict_tmp),['vibration_id'])
+    result={'msg':'success insert'}
     return json.dumps(result,ensure_ascii=False)
-            
+
 @app.get('/add_tower')
 async def home(request: Request, Authorize: AuthJWT = Depends()):
     return templates.TemplateResponse(name='add_tower.html', context={'request': request})

+ 47 - 1
models.py

@@ -98,4 +98,50 @@ class Settings(BaseModel):
     authjwt_secret_key: str = SECRET_KEY
     authjwt_token_location: set = {"cookies"}
     authjwt_cookie_secure: bool = False
-    authjwt_cookie_csrf_protect: bool = True
+    authjwt_cookie_csrf_protect: bool = True
+
+class record_tower_data(BaseModel):
+    hotTemp: float
+    coldTempData1:float
+    coldTempData2:float
+    reducer:float
+    total:float
+    towernum:float
+    fannum:float
+    flowchange:float
+    savewater:float
+    fanchange:float
+    saveelec:float
+    count:float
+    wetTemp:float
+    count1:float
+    staticPressure:float
+    waterFlow:float
+
+
+class record_dcs_data(BaseModel):
+    hotTemp: float
+    coldTemp:float
+    fanMotorCur:float
+    fanMotorSpeedFreq:float
+    waterFlow:float
+
+class record_diagnosis_data(BaseModel):
+    DW_Unbalance: float
+    DW_Bending:float
+    DW_Misalignment:float
+    DW_Loose:float
+    DW_Whirl:float
+    DW_Whip:float
+    DW_InnerDamage:float
+    DW_OuterDamage:float
+    DW_BallDamage:float
+    DW_AirGap:float
+    DW_BrokenBars:float
+    DW_PhaseProblem:float
+    DW_GMisalignment:float
+    DW_GBrokenTeeth:float
+    DW_Gwear:float
+    DW_GBending:float
+    DW_GEccentricity:float
+    vibration_id:float