views.py 230 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205
  1. # -*- coding: utf-8 -*-
  2. import array
  3. from django.shortcuts import render
  4. from itertools import chain
  5. import requests
  6. from requests.auth import HTTPBasicAuth
  7. from django.core.exceptions import ObjectDoesNotExist
  8. from django.http import JsonResponse, HttpResponse
  9. from django.views.generic import ListView
  10. from django.core import serializers
  11. import datetime
  12. from PIL import Image
  13. import time
  14. import json
  15. from io import BytesIO
  16. from apps.AppInfoManage.models import MyUser, User_Log, Equip, SCDdata, SCDstatus, CBDdata, CBDstatus, YBQdata, YBQstatus, JKdata, BZYstatus, BZYdata, SCDstatus_all, CBDstatus_all,\
  17. QXZswitchstatus, QXZswitchdata, QXZAutoswitch, QXZstatus, QXZTimingswitch, JKphoto, QXZstatus_New, QXZdata_New, QXZ_Conf, QXZswitchstatus, QXZswitchdata, QXZTimingswitch,\
  18. QXZAutoswitch,QXZ_Default_Conf, QXZ_Base_Info, YBQphoto, Group, QXZ_Alarm, JKtoken, QXZ_Info_Record,CBDphoto,Equip_type, TCCBstatus, TCCBdata, TCCBphoto, RTUdata, RTUstatus, CBDupdate
  19. # 引用查询流量接口
  20. from apps.SimInfo.views import get_siminfo
  21. # 引用全局变量
  22. from django.conf import settings
  23. from django.views.decorators.csrf import csrf_exempt
  24. from apps.ReportManage.all_dict import api_code, qxz_dict
  25. import re
  26. import os
  27. import copy
  28. import xlwt
  29. from yfwlw_pro.settings import ip
  30. def equip_validation(uid,imei):
  31. # 接收参数
  32. equip_exist = Equip.objects.filter(equip_id=imei)
  33. if equip_exist.exists():
  34. equip_obj = Equip.objects.get(equip_id=imei)
  35. if equip_obj.equip_user.username == uid:
  36. print("验证成功")
  37. data = "0"
  38. return data
  39. else:
  40. print("------",equip_obj.equip_user.username)
  41. print("用户名错误")
  42. data = "1"
  43. return data
  44. else:
  45. print("设备不存在")
  46. data = "1"
  47. return data
  48. # 判别身份是否为管理员的方法:
  49. # 是管理员返回admin,否返回当前用户名
  50. def identity(request):
  51. # 读取当前用户:
  52. current_user = request.session.get('username')
  53. print("current_user:", current_user)
  54. # 管理员和普通用户
  55. current_user = MyUser.objects.get(username=current_user)
  56. if current_user.is_superuser == True:
  57. print("identity---:超级管理员")
  58. return "superuser"
  59. elif current_user.is_superuser != True and current_user.is_staff == True:
  60. print("identity---:管理员")
  61. return "staff"
  62. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  63. print("identity---:代理商")
  64. return "agency"
  65. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  66. print("identity---:普通用户")
  67. # 注意返回的为对象实例:
  68. return current_user
  69. class CJSONEncoder(json.JSONEncoder):
  70. def default(self, obj):
  71. if isinstance(obj, datetime.datetime):
  72. return obj.strftime('%Y-%m-%d %H:%M:%S')
  73. elif isinstance(obj,data):
  74. return obj.strftime('%Y-%m-%d')
  75. else:
  76. return json.JSONEncoder.default(self, obj)
  77. # 杀虫灯设备管理类视图:
  78. class SCDManage_View(ListView):
  79. def get(self, request):
  80. current_user = request.session.get('username')
  81. current_user = MyUser.objects.get(username=current_user)
  82. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  83. print("---用户")
  84. role = "user"
  85. nums = SCDstatus.objects.filter(
  86. equip_id__equip_user=current_user).count()
  87. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  88. print("---代理商")
  89. role = "user"
  90. nums = SCDstatus.objects.filter(
  91. equip_id__equip_agency=current_user.user_agency).count()
  92. else:
  93. role = "superuser"
  94. print("---管理员")
  95. nums = SCDstatus.objects.all().count()
  96. cbdgroup = Group.objects.get(name='杀虫灯用户')
  97. # obj = Group.models.get(b_name='xxx')
  98. user_list = MyUser.objects.filter(groups=cbdgroup)
  99. User_Log.objects.create(log_user=current_user,
  100. log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-杀虫灯')
  101. return render(request, 'equipmanage/equipmanage_scd.html', context={"nums": nums,"role": role, "user_list":user_list})
  102. def post(self, request):
  103. if request.is_ajax():
  104. print("ajax-post!")
  105. req = request.POST.get('req')
  106. print("req:", req)
  107. # 请求数据:
  108. if req == "reqdat":
  109. print("---请求数据的post!")
  110. page = int(request.POST.get('page'))
  111. print("page:", page)
  112. # 读取当前用户:
  113. current_user = request.session.get('username')
  114. print("current_user:", current_user)
  115. current_user = MyUser.objects.get(username=current_user)
  116. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username
  117. print("---不是管理员")
  118. sta1 = SCDstatus.objects.filter(equip_id__equip_user=current_user)[(
  119. 10*(page-1)):(page*10)]
  120. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  121. print("---代理商")
  122. sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)[(
  123. 10*(page-1)):(page*10)]
  124. else:
  125. print("---管理员")
  126. sta1 = SCDstatus.objects.all()[(10*(page-1)):(page*10)]
  127. sta2 = [{"scd_status": x.scd_status, "ds": x.ds, "upl_time": x.upl_time,
  128. "paramconf": x.paramconf, "serverconf": x.serverconf, "equip_name": x.equip_id.equip_name,
  129. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  130. data = json.dumps(sta2, cls=CJSONEncoder, indent=4)
  131. # print("data:",data)
  132. return HttpResponse(data)
  133. elif req == "filter":
  134. ename = request.POST.get('ename')
  135. print("ename:", ename)
  136. f_id = request.POST.get('f_id')
  137. print("f_id:", f_id)
  138. page = int(request.POST.get('page'))
  139. print("page:", page)
  140. uname = request.POST.get('uname')
  141. print("uname:", uname)
  142. # 读取当前用户:
  143. current_user = request.session.get('username')
  144. print("current_user:", current_user)
  145. current_user = MyUser.objects.get(username=current_user)
  146. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  147. print("---不是管理员")
  148. if ename == "" and f_id == "":
  149. sta1 = SCDstatus.objects.filter(
  150. equip_id__equip_user=current_user)
  151. elif ename == "" and f_id != "":
  152. sta1 = SCDstatus.objects.filter(
  153. equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  154. elif ename != "" and f_id == "":
  155. sta1 = SCDstatus.objects.filter(
  156. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename)
  157. elif ename != "" and f_id != "":
  158. sta1 = SCDstatus.objects.filter(
  159. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  160. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  161. print("---代理商")
  162. if ename == "" and f_id == "":
  163. sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  164. elif ename == "" and f_id != "":
  165. sta1 = SCDstatus.objects.filter(
  166. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  167. elif ename != "" and f_id == "":
  168. sta1 = SCDstatus.objects.filter(
  169. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename)
  170. elif ename != "" and f_id != "":
  171. sta1 = SCDstatus.objects.filter(
  172. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  173. else:
  174. print("---管理员")
  175. # if ename == "" and f_id == "":
  176. # sta1 = SCDstatus.objects.all()
  177. # elif ename == "" and f_id != "":
  178. # sta1 = SCDstatus.objects.filter(
  179. # equip_id__equip_id__contains=f_id)
  180. # elif ename != "" and f_id == "":
  181. # sta1 = SCDstatus.objects.filter(
  182. # equip_id__equip_name__contains=ename)
  183. # elif ename != "" and f_id != "":
  184. # sta1 = SCDstatus.objects.filter(
  185. # equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  186. # 000
  187. if ename == "" and f_id == '' and uname == '':
  188. sta1 = SCDstatus.objects.all()
  189. # 010
  190. elif ename == "" and f_id != '' and uname == '':
  191. sta1 = SCDstatus.objects.filter(
  192. equip_id__equip_id__contains=f_id)
  193. # 100
  194. elif ename != "" and f_id == '' and uname == '':
  195. sta1 = SCDstatus.objects.filter(
  196. equip_id__equip_name__contains=ename)
  197. # 110
  198. elif ename != "" and f_id != '' and uname == '':
  199. sta1 = SCDstatus.objects.filter(
  200. equip_id__equip_name__contains=ename)
  201. # 011
  202. elif ename == "" and f_id != '' and uname != '':
  203. if MyUser.objects.get(username=uname).is_agency == True:
  204. sta1 = SCDstatus.objects.filter(
  205. equip_id__equip_id__contains=f_id, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  206. else:
  207. sta1 = SCDstatus.objects.filter(
  208. equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname))
  209. # 101
  210. elif ename != "" and f_id == '' and uname != '':
  211. if MyUser.objects.get(username=uname).is_agency == True:
  212. sta1 = SCDstatus.objects.filter(
  213. equip_id__equip_name__contains=ename, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  214. else:
  215. sta1 = SCDstatus.objects.filter(
  216. equip_id__equip_name__contains=ename, equip_id__equip_user=MyUser.objects.get(username=uname))
  217. # 001
  218. elif ename == "" and f_id == '' and uname != '':
  219. if MyUser.objects.get(username=uname).is_agency == True:
  220. sta1 = SCDstatus.objects.filter(
  221. equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  222. else:
  223. sta1 = SCDstatus.objects.filter(
  224. equip_id__equip_user=MyUser.objects.get(username=uname))
  225. # 111
  226. elif ename != "" and f_id != '' and uname != '':
  227. if MyUser.objects.get(username=uname).is_agency == True:
  228. sta1 = SCDstatus.objects.filter(
  229. equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  230. else:
  231. sta1 = SCDstatus.objects.filter(
  232. equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname))
  233. dver = request.POST.get('dver')
  234. print("dver",dver)
  235. is_online = request.POST.get('is_online')
  236. print("is_online",is_online)
  237. # -----------------------------------------------------------------------------------------
  238. # 版本号筛选设备
  239. if dver != "" and is_online == "":
  240. sta3 = []
  241. for i in sta1:
  242. fir_v = eval(i.scd_status)["dver"].split(".")
  243. if fir_v[0] == dver:
  244. sta3.append({"scd_status": i.scd_status, "upl_time": i.upl_time,
  245. "paramconf": i.paramconf, "serverconf": i.serverconf,
  246. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  247. "is_online": i.is_online, "off_time": i.off_time})
  248. data = {"dat": sta3[(10*(page-1)):(page*10)],
  249. "nums": len(sta3)}
  250. print("-------------",len(sta3))
  251. data = json.dumps(data, cls=CJSONEncoder)
  252. # print("data:",data)
  253. return HttpResponse(data)
  254. # -----------------------------------------------------------------------------------------
  255. # 在线状态筛选设备
  256. elif is_online != "" and dver == "":
  257. sta4 = []
  258. for i in sta1:
  259. if is_online == i.is_online:
  260. sta4.append({"scd_status": i.scd_status, "upl_time": i.upl_time,
  261. "paramconf": i.paramconf, "serverconf": i.serverconf,
  262. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  263. "is_online": i.is_online, "off_time": i.off_time})
  264. data = {"dat": sta4[(10*(page-1)):(page*10)],
  265. "nums": len(sta4)}
  266. print("-------------",len(sta4))
  267. data = json.dumps(data, cls=CJSONEncoder)
  268. # print("data:",data)
  269. return HttpResponse(data)
  270. # -----------------------------------------------------------------------------------------
  271. # 版本号和在线状态同时筛选设备
  272. elif is_online != "" and dver != "":
  273. sta3 = []
  274. for i in sta1:
  275. fir_v = eval(i.scd_status)["dver"].split(".")
  276. if fir_v[0] == dver and i.is_online == is_online:
  277. sta3.append({"scd_status": i.scd_status, "upl_time": i.upl_time,
  278. "paramconf": i.paramconf, "serverconf": i.serverconf,
  279. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  280. "is_online": i.is_online, "off_time": i.off_time})
  281. data = {"dat": sta3[(10*(page-1)):(page*10)],
  282. "nums": len(sta3)}
  283. print("-------------",len(sta3))
  284. data = json.dumps(data, cls=CJSONEncoder)
  285. # print("data:",data)
  286. return HttpResponse(data)
  287. # -----------------------------------------------------------------------------------------
  288. sta2 = [{"scd_status": x.scd_status, "ds": x.ds, "upl_time": x.upl_time,
  289. "paramconf": x.paramconf, "serverconf": x.serverconf, "equip_name": x.equip_id.equip_name,
  290. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  291. data = {"dat": sta2[(10*(page-1)):(page*10)],
  292. "nums": sta1.count()}
  293. data = json.dumps(data, cls=CJSONEncoder)
  294. # print("data:",data)
  295. return HttpResponse(data)
  296. # 杀虫灯列表页导出
  297. class SCDManage_explore(ListView):
  298. def get(self,request):
  299. uname = request.GET.get('uname')
  300. dver = request.GET.get('dver')
  301. is_online = request.GET.get('is_online')
  302. # filename = request.GET.get('filename')
  303. if uname:
  304. sta1 = SCDstatus.objects.filter(equip_id__equip_user=MyUser.objects.get(username=uname))
  305. else:
  306. sta1 = SCDstatus.objects.all()
  307. # -----------------------------------------------------------------------------------------
  308. # 版本号筛选设备
  309. if dver == "" and is_online == "":
  310. sta3 = []
  311. for i in sta1:
  312. fir_v = eval(i.scd_status)["dver"]
  313. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  314. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i.equip_id_id).equip_add_time})
  315. # -----------------------------------------------------------------------------------------
  316. # 版本号筛选设备
  317. elif dver != "" and is_online == "":
  318. sta3 = []
  319. for i in sta1:
  320. fir_v = eval(i.scd_status)["dver"]
  321. if fir_v.split(".")[0] == dver:
  322. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  323. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time})
  324. # -----------------------------------------------------------------------------------------
  325. # 在线状态筛选设备
  326. elif is_online != "" and dver == "":
  327. sta3 = []
  328. for i in sta1:
  329. fir_v = eval(i.scd_status)["dver"]
  330. if is_online == i.is_online:
  331. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  332. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time})
  333. # -----------------------------------------------------------------------------------------
  334. # 版本号和在线状态同时筛选设备
  335. elif is_online != "" and dver != "":
  336. sta3 = []
  337. for i in sta1:
  338. fir_v = eval(i.scd_status)["dver"]
  339. if fir_v.split(".")[0] == dver and i.is_online == is_online:
  340. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  341. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time})
  342. # -----------------------------------------------------------------------------------------
  343. data1 = []
  344. for x in sta3:
  345. if x["lat"]:
  346. res = requests.post("http://api.map.baidu.com/geocoder?location=%s,%s&coord_type=gcj02&output=json"%(x["lat"],x["lng"]))
  347. try:
  348. print(eval(res.text))
  349. print((eval(res.text))["result"]["addressComponent"]["province"])
  350. # print((eval(res.text))["result"]["formatted_address"])
  351. except:
  352. continue
  353. location = (eval(res.text))["result"]["addressComponent"]["province"] + (eval(res.text))["result"]["addressComponent"]["city"] + (eval(res.text))["result"]["addressComponent"]["district"]
  354. data1.append({"equip_id":x["equip_id"],"fir_v":x["fir_v"],"location":location,"is_online":x["is_online"],"off_time":x["off_time"],"creat_time":x["creat_time"]})
  355. # print("=============>>",sta3)
  356. title = ["设备id","设备版本","设备位置","是否在线","离线时间","设备创建时间"]
  357. book = xlwt.Workbook() # 创建一个excel对象
  358. sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
  359. for i in range(len(title)): # 遍历列
  360. # sheet.write(0,i,title[i],style) # 将title数组中的字段写入到0行i列中
  361. sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
  362. # print(sta2)
  363. for xx in range(len(data1)): # 遍历列表
  364. if data1[xx]['is_online'] == "0":
  365. is_online = "离线"
  366. off_time = datetime.datetime.strftime(data1[xx]['off_time'],'%Y-%m-%d')
  367. else:
  368. is_online = "在线"
  369. off_time = ""
  370. creat_time = datetime.datetime.strftime(data1[xx]['creat_time'],'%Y-%m-%d')
  371. sheet.write(xx+1,0,data1[xx]['equip_id']) # 将equip_id写入到第x+1行,第0列中
  372. sheet.write(xx+1,1,data1[xx]['fir_v'])
  373. sheet.write(xx+1,2,data1[xx]['location'])
  374. sheet.write(xx+1,3,is_online)
  375. sheet.write(xx+1,4,off_time)
  376. sheet.write(xx+1,5,creat_time)
  377. sheet.col(0).width = 256 * 18
  378. sheet.col(1).width = 256 * 11
  379. sheet.col(2).width = 256 * 24
  380. sheet.col(3).width = 256 * 8
  381. sheet.col(4).width = 256 * 11
  382. sheet.col(5).width = 256 * 13
  383. # 写出到IO
  384. output = BytesIO()
  385. book.save(output)
  386. # 重新定位到开始
  387. output.seek(0)
  388. response = HttpResponse(content_type='application/vnd.ms-excel')
  389. response['Content-Disposition'] = 'attachment;filename=111.xls'
  390. response.write(output.getvalue())
  391. return response
  392. def post(self,request):
  393. pass
  394. # 杀虫灯历史状态
  395. class SCDStatus_all(ListView):
  396. def get(self, request):
  397. e_id = request.GET.get('id')
  398. nums = SCDstatus_all.objects.filter(equip_id=e_id).count()
  399. def post(self, request):
  400. e_id = request.POST.get('id')
  401. page = int(request.POST.get('page'))
  402. sta1 = SCDstatus_all.objects.filter(equip_id=e_id)
  403. sta2 = [{"scd_status": x.scd_status, "ds": x.ds, "upl_time": x.upl_time,
  404. "paramconf": x.paramconf, "serverconf": x.serverconf,
  405. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  406. data = {"dat": sta2[(10*(page-1)):(page*10)],
  407. "nums": sta1.count()}
  408. data = json.dumps(data, cls=CJSONEncoder)
  409. print("data:",data)
  410. return HttpResponse(data)
  411. # 杀虫灯mqtt通信接口:
  412. class SCD_Mqtt(ListView):
  413. def get(self, request):
  414. pass
  415. def post(self, request):
  416. sw = request.POST.get('sw')
  417. # # 批量更改定时时长:针对光控定时模式
  418. # if sw == "tt":
  419. # print("下发批量定时tt!!!")
  420. # topicid = request.POST.get('topicid')
  421. # hours = int(request.POST.get('hours'))
  422. # print(topicid)
  423. # id_list = json.loads(topicid)
  424. # for imei in id_list:
  425. # payload = {"cmd": "timer", "ext": {"tt": hours}}
  426. # print(type(imei))
  427. # topic = "/yfkj/scd/sub/"+imei #[1:-1]
  428. # cmd = {"topic": topic, "payload": json.dumps(
  429. # payload), 'qos': 1}
  430. # print(json.dumps(payload, indent=1))
  431. # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  432. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  433. # print("res.status_code:", type(res.status_code))
  434. # if res.status_code == 200:
  435. # data = "0"
  436. # return HttpResponse(data)
  437. # else:
  438. # data = "1"
  439. # return HttpResponse(data)
  440. if sw == "timer":
  441. print("下发批量定时timer!!!")
  442. topicid = request.POST.get('topicid')
  443. print(topicid)
  444. id_list = json.loads(topicid)
  445. ts = request.POST.get('ts')
  446. # print("----------------ts",ts)
  447. try:
  448. ds = int(request.POST.get('ds'))
  449. except Exception as e:
  450. print(e)
  451. ds = ""
  452. # ts = timeSwitch 0光控 1时控 startBar 开始时间 stopBar 结束时间
  453. if ts == "0": # 光控
  454. # for imei in id_list:
  455. # print("1321311",type(imei))
  456. # topic = "/yfkj/scd/sub/"+imei #[1:-1]
  457. # 先关闭时控
  458. # payload_1 = {"cmd": "timectr","ext": {"timctrl":0,"st":19,"et":1}}
  459. # cmd_1 = {"topic":topic, "payload":json.dumps(
  460. # payload_1), 'qos': 1}
  461. # res_1 = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  462. # data=json.dumps(cmd_1, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  463. # print("res.status_code:", type(res_1.status_code))
  464. hours = int(request.POST.get('hours'))
  465. payload = {"cmd":"timer", "ext":{"tt":hours}}
  466. # cmd = {"topic": topic, "payload": json.dumps(
  467. # payload), 'qos': 1}
  468. # print(json.dumps(payload, indent=1))
  469. # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  470. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  471. # print("res.status_code:", type(res.status_code))
  472. elif ts == "1": # 时控
  473. begin = int(request.POST.get('begin'))
  474. end = int(request.POST.get('end'))
  475. payload = {"cmd":"timectr","ext": {"timctrl":1,"st":begin,"et":end}}
  476. print("下发时控",payload)
  477. if ds != "": # 控制设备开关
  478. print("下发开关!!!")
  479. payload = {"cmd": "power", "ext": {"ds": ds}}
  480. for imei in id_list:
  481. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  482. cmd = {"topic": topic, "payload": json.dumps(
  483. payload), 'qos': 1}
  484. print(json.dumps(payload, indent=1))
  485. if ip == "172.16.220.3":
  486. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  487. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  488. else:
  489. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  490. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  491. print("res.status_code:", type(res.status_code))
  492. if res.status_code == 200:
  493. data = "0"
  494. return HttpResponse(data)
  495. else:
  496. data = "1"
  497. return HttpResponse(data)
  498. # elif sw == "ds":
  499. # print("下发开关!!!")
  500. # topicid = request.POST.get('topicid')
  501. # ds = int(request.POST.get('ds'))
  502. # print(topicid)
  503. # id_list = json.loads(topicid)
  504. # for imei in id_list:
  505. # payload = {"cmd": "power", "ext": {"ds": ds}}
  506. # print(imei)
  507. # topic = "/yfkj/scd/sub/"+imei
  508. # cmd = {"topic": topic, "payload": json.dumps(
  509. # payload), 'qos': 1}
  510. # print(json.dumps(payload, indent=1))
  511. # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  512. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  513. # print("res.status_code:", type(res.status_code))
  514. # if res.status_code == 200:
  515. # data = "0"
  516. # return HttpResponse(data)
  517. # else:
  518. # data = "1"
  519. # return HttpResponse(data)
  520. elif sw == "read":
  521. print("下发查询!!!")
  522. topicid = request.POST.get('topicid')
  523. kind = request.POST.get('kind')
  524. print(topicid)
  525. id_list = json.loads(topicid)
  526. for imei in id_list:
  527. print (">>>>>",imei)
  528. payload = {"cmd": "read", "ext": kind}
  529. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  530. cmd = {"topic": topic, "payload": json.dumps(
  531. payload), 'qos': 1}
  532. print(json.dumps(payload, indent=1))
  533. if ip == "172.16.220.3":
  534. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  535. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  536. else:
  537. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  538. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  539. print("res.status_code:", type(res.status_code))
  540. if res.status_code == 200:
  541. data = "0"
  542. return HttpResponse(data)
  543. else:
  544. data = "1"
  545. return HttpResponse(data)
  546. elif sw == "ctrl":
  547. print("下发升级或重启!!!")
  548. topicid = request.POST.get('topicid')
  549. kind = request.POST.get('kind')
  550. print(topicid)
  551. id_list = json.loads(topicid)
  552. for imei in id_list:
  553. payload = {"cmd": kind}
  554. print(type(imei))
  555. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  556. cmd = {"topic": topic, "payload": json.dumps(
  557. payload), 'qos': 1}
  558. print(json.dumps(payload, indent=1))
  559. if ip == "172.16.220.3":
  560. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  561. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  562. else:
  563. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  564. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  565. print("res.status_code:", type(res.status_code))
  566. if res.status_code == 200:
  567. data = "0"
  568. return HttpResponse(data)
  569. else:
  570. data = "1"
  571. return HttpResponse(data)
  572. elif sw == "clean":
  573. print("下发自清虫定时")
  574. topicid = request.POST.get('topicid')
  575. tim = int(request.POST.get('time'))
  576. print(topicid)
  577. # tim = 8
  578. id_list = json.loads(topicid)
  579. # imei = '862991419831505'
  580. for imei in id_list:
  581. equip_list = SCDstatus.objects.filter(equip_id_id=imei).values()
  582. for i in equip_list:
  583. etype = eval(i['scd_status'])['dver']
  584. if "ZQC" in etype:
  585. payload = {"cmd":"clear","ext":{"clt":tim}}
  586. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  587. cmd = {"topic": topic, "payload": json.dumps(
  588. payload), 'qos': 1}
  589. print(json.dumps(payload, indent=1))
  590. if ip == "172.16.220.3":
  591. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  592. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  593. else:
  594. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  595. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  596. print("res.status_code:", type(res.status_code))
  597. else:
  598. data = "2"
  599. return HttpResponse(data)
  600. if res.status_code == 200:
  601. data = "0"
  602. return HttpResponse(data)
  603. else:
  604. data = "1"
  605. return HttpResponse(data)
  606. elif sw == "datt":
  607. print("下发上传时间间隔")
  608. topicid = request.POST.get('topicid')
  609. dattim = int(request.POST.get('dattim'))
  610. print(topicid)
  611. # tim = 8
  612. id_list = json.loads(topicid)
  613. # imei = '862991419831505'
  614. for imei in id_list:
  615. payload = {"cmd":"dattim","ext":{"dattim":dattim}}
  616. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  617. cmd = {"topic": topic, "payload": json.dumps(
  618. payload), 'qos': 1}
  619. print(json.dumps(payload, indent=1))
  620. if ip == "172.16.220.3":
  621. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  622. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  623. else:
  624. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  625. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  626. # print("res.status_code:", type(res.status_code))
  627. if res.status_code == 200:
  628. data = "0"
  629. return HttpResponse(data)
  630. else:
  631. data = "1"
  632. return HttpResponse(data)
  633. elif sw == "test":
  634. print("下发杀虫灯测试")
  635. topicid = request.POST.get('topicid')
  636. print(topicid)
  637. # tim = 8
  638. id_list = json.loads(topicid)
  639. # imei = '862991419831505'
  640. for imei in id_list:
  641. payload = {"cmd":"test"}
  642. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  643. cmd = {"topic": topic, "payload": json.dumps(
  644. payload), 'qos': 1}
  645. print(json.dumps(payload, indent=1))
  646. if ip == "172.16.220.3":
  647. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  648. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  649. else:
  650. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  651. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  652. # print("res.status_code:", type(res.status_code))
  653. if res.status_code == 200:
  654. data = "0"
  655. return HttpResponse(data)
  656. else:
  657. data = "1"
  658. return HttpResponse(data)
  659. # 杀虫灯账号下全部控制
  660. class SCD_Mqtt_All(ListView):
  661. def get(self, request):
  662. pass
  663. def post(self, request):
  664. current_user = request.session.get('username')
  665. current_user = MyUser.objects.get(username=current_user)
  666. id_list = []
  667. scdlist = SCDstatus.objects.filter(equip_id__equip_user=current_user)
  668. for i in scdlist:
  669. id_list.append(i.equip_id_id)
  670. # print("------------->>",id_list)
  671. sw = request.POST.get('sw')
  672. if sw == "timer":
  673. print("下发批量定时timer!!!")
  674. # topicid = request.POST.get('topicid')
  675. # print(topicid)
  676. # id_list = json.loads(topicid)
  677. ts = request.POST.get('ts')
  678. # print("----------------ts",ts)
  679. try:
  680. ds = int(request.POST.get('ds'))
  681. except Exception as e:
  682. print(e)
  683. ds = ""
  684. if ts == "0": # 光控
  685. hours = int(request.POST.get('hours'))
  686. payload = {"cmd":"timer", "ext":{"tt":hours}}
  687. elif ts == "1": # 时控
  688. begin = int(request.POST.get('begin'))
  689. end = int(request.POST.get('end'))
  690. payload = {"cmd":"timectr","ext": {"timctrl":1,"st":begin,"et":end}}
  691. print("下发时控",payload)
  692. if ds != "": # 控制设备开关
  693. print("下发开关!!!")
  694. payload = {"cmd": "power", "ext": {"ds": ds}}
  695. for imei in id_list:
  696. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  697. cmd = {"topic": topic, "payload": json.dumps(
  698. payload), 'qos': 1}
  699. print(json.dumps(payload, indent=1))
  700. if ip == "172.16.220.3":
  701. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  702. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  703. else:
  704. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  705. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  706. print("res.status_code:", type(res.status_code))
  707. if res.status_code == 200:
  708. data = "0"
  709. return HttpResponse(data)
  710. else:
  711. data = "1"
  712. return HttpResponse(data)
  713. elif sw == "read":
  714. print("下发查询!!!")
  715. # topicid = request.POST.get('topicid')
  716. kind = request.POST.get('kind')
  717. # print(topicid)
  718. # id_list = json.loads(topicid)
  719. for imei in id_list:
  720. print (">>>>>",imei)
  721. payload = {"cmd": "read", "ext": kind}
  722. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  723. cmd = {"topic": topic, "payload": json.dumps(
  724. payload), 'qos': 1}
  725. print(json.dumps(payload, indent=1))
  726. if ip == "172.16.220.3":
  727. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  728. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  729. else:
  730. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  731. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  732. print("res.status_code:", type(res.status_code))
  733. if res.status_code == 200:
  734. data = "0"
  735. return HttpResponse(data)
  736. else:
  737. data = "1"
  738. return HttpResponse(data)
  739. elif sw == "ctrl":
  740. print("下发升级或重启!!!")
  741. # topicid = request.POST.get('topicid')
  742. kind = request.POST.get('kind')
  743. # print(topicid)
  744. # id_list = json.loads(topicid)
  745. for imei in id_list:
  746. payload = {"cmd": kind}
  747. print(type(imei))
  748. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  749. cmd = {"topic": topic, "payload": json.dumps(
  750. payload), 'qos': 1}
  751. print(json.dumps(payload, indent=1))
  752. if ip == "172.16.220.3":
  753. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  754. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  755. else:
  756. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  757. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  758. print("res.status_code:", type(res.status_code))
  759. if res.status_code == 200:
  760. data = "0"
  761. return HttpResponse(data)
  762. else:
  763. data = "1"
  764. return HttpResponse(data)
  765. elif sw == "clean":
  766. print("下发自清虫定时")
  767. # topicid = request.POST.get('topicid')
  768. tim = int(request.POST.get('time'))
  769. # print(topicid)
  770. # tim = 8
  771. # id_list = json.loads(topicid)
  772. # imei = '862991419831505'
  773. for imei in id_list:
  774. equip_list = SCDstatus.objects.filter(equip_id_id=imei).values()
  775. for i in equip_list:
  776. etype = eval(i['scd_status'])['dver']
  777. if "ZQC" in etype:
  778. payload = {"cmd":"clear","ext":{"clt":tim}}
  779. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  780. cmd = {"topic": topic, "payload": json.dumps(
  781. payload), 'qos': 1}
  782. print(json.dumps(payload, indent=1))
  783. if ip == "172.16.220.3":
  784. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  785. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  786. else:
  787. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  788. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  789. print("res.status_code:", type(res.status_code))
  790. else:
  791. data = "2"
  792. return HttpResponse(data)
  793. if res.status_code == 200:
  794. data = "0"
  795. return HttpResponse(data)
  796. else:
  797. data = "1"
  798. return HttpResponse(data)
  799. elif sw == "datt":
  800. print("下发上传时间间隔")
  801. # topicid = request.POST.get('topicid')
  802. dattim = int(request.POST.get('dattim'))
  803. # print(topicid)
  804. # tim = 8
  805. # id_list = json.loads(topicid)
  806. # imei = '862991419831505'
  807. for imei in id_list:
  808. payload = {"cmd":"dattim","ext":{"dattim":dattim}}
  809. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  810. cmd = {"topic": topic, "payload": json.dumps(
  811. payload), 'qos': 1}
  812. print(json.dumps(payload, indent=1))
  813. if ip == "172.16.220.3":
  814. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  815. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  816. else:
  817. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  818. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  819. # print("res.status_code:", type(res.status_code))
  820. if res.status_code == 200:
  821. data = "0"
  822. return HttpResponse(data)
  823. else:
  824. data = "1"
  825. return HttpResponse(data)
  826. elif sw == "test":
  827. print("下发杀虫灯测试")
  828. # topicid = request.POST.get('topicid')
  829. # print(topicid)
  830. # tim = 8
  831. # id_list = json.loads(topicid)
  832. # imei = '862991419831505'
  833. for imei in id_list:
  834. print(imei)
  835. payload = {"cmd":"test"}
  836. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  837. cmd = {"topic": topic, "payload": json.dumps(
  838. payload), 'qos': 1}
  839. print(json.dumps(payload, indent=1))
  840. if ip == "172.16.220.3":
  841. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  842. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  843. else:
  844. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  845. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  846. # print("res.status_code:", type(res.status_code))
  847. if res.status_code == 200:
  848. data = "0"
  849. return HttpResponse(data)
  850. else:
  851. data = "1"
  852. return HttpResponse(data)
  853. # 诱捕器设备管理类视图:
  854. class Sex_Trap_View(ListView):
  855. def get(self, request):
  856. return render(request, 'equipmanage/sex_trap.html', context={})
  857. def post(self, request):
  858. # 请求数据:
  859. print("---请求数据的post!")
  860. page = int(request.POST.get('page'))
  861. print("page:", page)
  862. ename = request.POST.get('ename')
  863. print("ename:", ename)
  864. f_id = request.POST.get('f_id')
  865. print("f_id:", f_id)
  866. # 读取当前用户:
  867. current_user = request.session.get('username')
  868. print("current_user:", current_user)
  869. current_user = MyUser.objects.get(username=current_user)
  870. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username
  871. print("---不是管理员")
  872. sta1 = YBQstatus.objects.filter(equip_id__equip_user=current_user)
  873. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  874. print("---代理商")
  875. sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  876. else:
  877. print("---管理员")
  878. sta1 = YBQstatus.objects.all()
  879. if f_id or ename:
  880. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  881. print("---不是管理员")
  882. # 000:
  883. if ename == "" and f_id == "":
  884. sta1 = YBQstatus.objects.filter(
  885. equip_id__equip_user=current_user)
  886. # 010:
  887. elif ename == "" and f_id != "":
  888. sta1 = YBQstatus.objects.filter(
  889. equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  890. # 100:
  891. elif ename != "" and f_id == "":
  892. sta1 = YBQstatus.objects.filter(
  893. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename)
  894. # 110:
  895. elif ename != "" and f_id != "":
  896. sta1 = YBQstatus.objects.filter(
  897. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  898. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  899. print("---代理商")
  900. # 000:
  901. if ename == "" and f_id == "":
  902. sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  903. # 010:
  904. elif ename == "" and f_id != "":
  905. sta1 = YBQstatus.objects.filter(
  906. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  907. # 100:
  908. elif ename != "" and f_id == "":
  909. sta1 = YBQstatus.objects.filter(
  910. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename)
  911. # 110:
  912. elif ename != "" and f_id != "":
  913. sta1 = YBQstatus.objects.filter(
  914. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  915. else:
  916. print("---管理员")
  917. # 000:
  918. if ename == "" and f_id == "":
  919. sta1 = YBQstatus.objects.all()
  920. # 010:
  921. elif ename == "" and f_id != "":
  922. sta1 = YBQstatus.objects.filter(
  923. equip_id__equip_id__contains=f_id)
  924. # 100:
  925. elif ename != "" and f_id == "":
  926. sta1 = YBQstatus.objects.filter(
  927. equip_id__equip_name__contains=ename)
  928. # 110:
  929. elif ename != "" and f_id != "":
  930. sta1 = YBQstatus.objects.filter(
  931. equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  932. is_online = request.POST.get('is_online')
  933. print("is_online",is_online)
  934. etype = request.POST.get('etype')
  935. print("etype",etype)
  936. # -----------------------------------------------------------------------------------------
  937. # 版本号筛选设备
  938. if etype != "" and is_online == "":
  939. sta3 = []
  940. for i in sta1:
  941. if i.sex_type == etype:
  942. sta3.append({"sex_trap": i.ybq_status, "upl_time": i.upl_time,"pest_name":i.pest_name,
  943. "equip_name": i.equip_id.equip_name,"is_online": i.is_online, "off_time": i.off_time})
  944. data = {"dat": sta3[(10*(page-1)):(page*10)],"nums": len(sta3)}
  945. print("-------------",len(sta3))
  946. data = json.dumps(data, cls=CJSONEncoder)
  947. # print("data:",data)
  948. return HttpResponse(data)
  949. # -----------------------------------------------------------------------------------------
  950. # 在线状态筛选设备
  951. elif is_online != "" and etype == "":
  952. sta4 = []
  953. for i in sta1:
  954. if is_online == i.is_online:
  955. sta4.append({"sex_trap": i.ybq_status, "upl_time": i.upl_time,"pest_name":i.pest_name,
  956. "equip_name": i.equip_id.equip_name,"is_online": i.is_online, "off_time": i.off_time})
  957. data = {"dat": sta4[(10*(page-1)):(page*10)],"nums": len(sta4)}
  958. print("-------------",len(sta4))
  959. data = json.dumps(data, cls=CJSONEncoder)
  960. # print("data:",data)
  961. return HttpResponse(data)
  962. # -----------------------------------------------------------------------------------------
  963. # 版本号和在线状态同时筛选设备
  964. elif is_online != "" and etype != "":
  965. sta3 = []
  966. for i in sta1:
  967. if i.sex_type == etype and i.is_online == is_online:
  968. sta3.append({"sex_trap": i.ybq_status, "upl_time": i.upl_time,"pest_name":i.pest_name,
  969. "equip_name": i.equip_id.equip_name,"is_online": i.is_online, "off_time": i.off_time})
  970. data = {"dat": sta3[(10*(page-1)):(page*10)],"nums": len(sta3)}
  971. print("-------------",len(sta3))
  972. data = json.dumps(data, cls=CJSONEncoder)
  973. # print("data:",data)
  974. return HttpResponse(data)
  975. # -----------------------------------------------------------------------------------------
  976. dat = [{"sex_trap": x.ybq_status, "upl_time": x.upl_time,"pest_name":x.pest_name,
  977. "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  978. data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]}
  979. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  980. # print("data:",data)
  981. return HttpResponse(data)
  982. # 诱捕器详情页面:
  983. class Sex_Trap_Detail(ListView):
  984. def get(self,request):
  985. e_id = request.GET.get("id")
  986. user_name = request.user.username
  987. print('user_name=', user_name)
  988. current_user = MyUser.objects.get(username=user_name)
  989. if current_user.is_superuser:
  990. role = "superuser"
  991. elif current_user.is_staff:
  992. role = "staff"
  993. elif current_user.is_agency:
  994. role = "agency"
  995. else:
  996. role = "user"
  997. ybqtype = eval(YBQstatus.objects.get(equip_id_id=e_id).ybq_status)['proj']
  998. if ybqtype == "SEX_TRAP_1":
  999. print("过滤")
  1000. return render(request, 'equipmanage/sex_trap_detail1.html', context={"role":role})
  1001. elif ybqtype == "SEX_TRAP_2":
  1002. print("过滤")
  1003. return render(request, 'equipmanage/sex_trap_detail2.html', context={"role":role})
  1004. def post(self,request):
  1005. e_id = request.POST.get("id")
  1006. sta1 = YBQstatus.objects.get(equip_id_id=e_id)
  1007. data = {"sex_trap": sta1.ybq_status, "upl_time": sta1.upl_time,
  1008. "equip_name": sta1.equip_id.equip_name,"is_online": sta1.is_online, "off_time": sta1.off_time}
  1009. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  1010. # print("data:",data)
  1011. return HttpResponse(data)
  1012. # 诱捕器mqtt通信接口:
  1013. # 一型
  1014. class YBQ_Mqtt_V1(ListView):
  1015. def get(self, request):
  1016. pass
  1017. def post(self, request):
  1018. ext = request.POST.get('ext')
  1019. imei = request.POST.get('e_id')
  1020. # 刷新
  1021. if ext == "data":
  1022. payload = {"cmd":"read","ext":"data"}
  1023. # 查询服务器配置
  1024. elif ext == "serverconf":
  1025. payload = {"cmd":"read","ext":"serverconf"}
  1026. # 设置上传时间间隔
  1027. elif ext == "data_tim":
  1028. dat_f = request.POST.get('dat_f')
  1029. payload = {"cmd":"set","ext":{"type":"data_tim","dat_f":int(dat_f)}}
  1030. # 清网
  1031. elif ext == "clearnet":
  1032. payload = {"cmd":"ctrl","ext":"clearnet"}
  1033. # 开启时控
  1034. elif ext == "work_tim1":
  1035. st = request.POST.get('st')
  1036. et = request.POST.get('et')
  1037. payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":1,"st":int(st),"et":int(et)}}
  1038. # 关闭时控
  1039. elif ext == "work_tim0":
  1040. payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":0,"st":20,"et":2}}
  1041. # 关闭
  1042. elif ext == "ds0":
  1043. payload = {"cmd":"ctrl","ext":{"type":"power","ds":0}}
  1044. # 开启
  1045. elif ext == "ds1":
  1046. payload = {"cmd":"ctrl","ext":{"type":"power","ds":1}}
  1047. # 重启
  1048. elif ext == "reboot":
  1049. payload = {"cmd":"reboot"}
  1050. # 升级
  1051. elif ext == "update":
  1052. payload = {"cmd":"update"}
  1053. topic = "yfkj/xycb/s2c/"+imei #[1:-1]
  1054. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1055. print(json.dumps(payload, indent=1))
  1056. if ip == "172.16.220.3":
  1057. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  1058. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1059. else:
  1060. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1061. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1062. # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1063. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1064. print("res.status_code:", type(res.status_code))
  1065. if res.status_code == 200:
  1066. data = "0"
  1067. return HttpResponse(data)
  1068. else:
  1069. data = "1"
  1070. return HttpResponse(data)
  1071. class YBQ_Mqtt(ListView):
  1072. def get(self, request):
  1073. pass
  1074. def post(self, request):
  1075. print("------->>",ip)
  1076. print("------->>",type(ip))
  1077. ext = request.POST.get('ext')
  1078. imei = request.POST.get('e_id')
  1079. # 刷新
  1080. if ext == "data":
  1081. payload = {"cmd":"read","ext":"data"}
  1082. # 查询mqtt网络配置
  1083. elif ext == "mqttconf":
  1084. payload = {"cmd":"read","ext":"mqttconf"}
  1085. # 拍照
  1086. elif ext == "takephoto":
  1087. payload = {"cmd":"ctrl","ext":{"takephoto":"1"}}
  1088. # 卷沾虫板:
  1089. elif ext == "turn":
  1090. payload = {"cmd":"ctrl","ext":{"turn":"1"}}
  1091. # 测试性诱剂
  1092. elif ext == "move":
  1093. payload = {"cmd":"ctrl","ext":{"move":"1"}}
  1094. # 下发12V重新上电:
  1095. elif ext == "repower":
  1096. payload = {"cmd":"repower"}
  1097. # 关闭:
  1098. elif ext == "ds0":
  1099. payload = {"cmd":"ctrl","ext":{"ds":"0"}}
  1100. # 开启:
  1101. elif ext == "ds1":
  1102. payload = {"cmd":"ctrl","ext":{"ds":"1"}}
  1103. # 重启
  1104. elif ext == "reboot":
  1105. payload = {"cmd":"reboot"}
  1106. # 升级
  1107. elif ext == "update":
  1108. payload = {"cmd":"update"}
  1109. # 下发设置循环工作模式-间隔时间:
  1110. elif ext == "photoset":
  1111. pic_t = request.POST.get('pic_t')
  1112. pic_f = request.POST.get('pic_f')
  1113. payload = {"cmd":"set","ext":{"type":"photo","pic_t":pic_t,"pic_f":pic_f}}
  1114. # 设置定时卷沾虫板:
  1115. elif ext == "turnset":
  1116. turn_t = request.POST.get('turn_t')
  1117. payload = {"cmd":"set","ext":{"type":"turn","turn_t":turn_t}}
  1118. topic = "yfkj/xycb/s2c/"+imei #[1:-1]
  1119. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1120. print(json.dumps(payload, indent=1))
  1121. if ip == "172.16.220.3":
  1122. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  1123. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1124. else:
  1125. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1126. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1127. # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1128. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1129. print("res.status_code:", type(res.status_code))
  1130. if res.status_code == 200:
  1131. data = "0"
  1132. return HttpResponse(data)
  1133. else:
  1134. data = "1"
  1135. return HttpResponse(data)
  1136. class YBQ_Mqtt_Detail(ListView):
  1137. def get(self, request):
  1138. pass
  1139. def post(self, request):
  1140. imei = request.POST.get('e_id')
  1141. sta1 = YBQstatus.objects.get(equip_id_id=imei).serverconf
  1142. return HttpResponse(sta1)
  1143. # 诱捕器历史数据
  1144. class YBQ_Data(ListView):
  1145. def get(self, request):
  1146. etype = request.GET.get("etype")
  1147. if etype == "SEX_TRAP_1":
  1148. print("过滤")
  1149. return render(request, 'equipmanage/sex_trap_data1.html', context={})
  1150. else:
  1151. print("过滤2")
  1152. return render(request, 'equipmanage/sex_trap_data2.html', context={})
  1153. def post(self, request):
  1154. e_id = request.POST.get("e_id")
  1155. sta1 = YBQdata.objects.filter(equip_id_id=e_id)
  1156. f_begin = request.POST.get('begin')
  1157. f_end = request.POST.get('end')
  1158. if f_begin:
  1159. begindate = re.findall(r"\d+\.?\d*", f_begin)
  1160. enddate = re.findall(r"\d+\.?\d*", f_end)
  1161. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1162. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1163. print("start_date:", start_date)
  1164. print("end_date:", end_date)
  1165. sta1 = YBQdata.objects.filter(equip_id_id=e_id, upl_time__range=(start_date, end_date))
  1166. nums = sta1.count()
  1167. dat = []
  1168. # 获得当前页:
  1169. page = int(request.POST.get('page'))
  1170. print("page:", page)
  1171. for i in sta1:
  1172. dat.append({"sex_trap": i.ybq_data, "upl_time": i.upl_time})
  1173. data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums}
  1174. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  1175. # print("data:",data)
  1176. return HttpResponse(data)
  1177. class YBQ_Pest_Set(ListView):
  1178. def get(self,request):
  1179. pass
  1180. def post(self,request):
  1181. e_id = request.POST.get("e_id")
  1182. pest = request.POST.get('pest')
  1183. sta1 = YBQstatus.objects.filter(equip_id_id=e_id).update(pest_name=pest)
  1184. return HttpResponse("0")
  1185. # 诱捕器照片
  1186. class YBQ_Photo(ListView):
  1187. def get(self, request):
  1188. return render(request, 'equipmanage/sex_trap_photo2.html', context={})
  1189. def post(self, request):
  1190. pass
  1191. # 诱捕器照片
  1192. class YBQ_Photo_List(ListView):
  1193. def get(self, request):
  1194. print("-----image list view!-----")
  1195. imei = request.GET.get('e_id')
  1196. print("imei:", imei)
  1197. user_name = request.user.username
  1198. print('user_name=', user_name)
  1199. current_user = MyUser.objects.get(username=user_name)
  1200. f_begin = request.GET.get('begin')
  1201. f_end = request.GET.get('end')
  1202. if current_user.is_superuser:
  1203. role = "superuser"
  1204. elif current_user.is_staff:
  1205. role = "staff"
  1206. elif current_user.is_agency:
  1207. role = "agency"
  1208. else:
  1209. role = "user"
  1210. # 获得当前页:
  1211. page = int(request.GET.get('page'))
  1212. print("page:", page)
  1213. # equip_name = Equip.objects.get(equip_id=imei).equip_name
  1214. # 当前用户:返回用户,前端判断是否显示删除图片按钮
  1215. img = YBQphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
  1216. # equip_name = Equip.objects.get(equip_id=imei).equip_name
  1217. nums = YBQphoto.objects.filter(equip_id=imei).count()
  1218. if f_begin:
  1219. begindate = re.findall(r"\d+\.?\d*", f_begin)
  1220. enddate = re.findall(r"\d+\.?\d*", f_end)
  1221. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1222. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1223. print("start_date:", start_date)
  1224. print("end_date:", end_date)
  1225. img = YBQphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date))
  1226. nums = img.count()
  1227. img = img[(8*(page-1)):(page*8)]
  1228. return render(request, 'equipmanage/sex_trap_photo_list2.html', context={"img": img,'nums':nums,'role':role})
  1229. def post(self, request):
  1230. pass
  1231. # 删除图片接口:
  1232. class Image_Delete(ListView):
  1233. def get(self, request):
  1234. pass
  1235. def post(self, request):
  1236. print("-----image delete!-----")
  1237. imei = request.POST.get('imei')
  1238. img_name = request.POST.get('addr')
  1239. img_list = request.POST.get('addrlist')
  1240. print("img_name:",img_name)
  1241. if img_list:
  1242. print("img_list:",type(eval(img_list)))
  1243. print("img_list:",eval(img_list))
  1244. for i in eval(img_list):
  1245. if os.path.exists(i) == True:
  1246. # 删除图片文件
  1247. os.remove(i)
  1248. # 删除数据库照片列表中,照片路径:
  1249. try:
  1250. CBDphoto.objects.filter(equip_id=imei, addr=i).delete()
  1251. print("-----image delete ok!-----")
  1252. except:
  1253. print("-----image delete failed!-----")
  1254. else:
  1255. # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
  1256. # 因此不管何时都删除数据库路径
  1257. try:
  1258. CBDphoto.objects.filter(equip_id=imei, addr=i).delete()
  1259. except Exception as e:
  1260. print("========>>",e)
  1261. print("-----image not exist!-----")
  1262. data = "0"
  1263. return HttpResponse(data)
  1264. if os.path.exists(img_name) == True:
  1265. # 删除图片文件
  1266. os.remove(img_name)
  1267. # 删除数据库照片列表中,照片路径:
  1268. try:
  1269. CBDphoto.objects.filter(equip_id=imei, addr=img_name).delete()
  1270. print("-----image delete ok!-----")
  1271. data = "1"
  1272. return HttpResponse(data)
  1273. except:
  1274. print("-----image delete failed!-----")
  1275. data = "0"
  1276. return HttpResponse(data)
  1277. else:
  1278. # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
  1279. # 因此不管何时都删除数据库路径
  1280. try:
  1281. CBDphoto.objects.filter(equip_id=imei, addr=img_name).delete()
  1282. except:
  1283. pass
  1284. print("-----image not exist!-----")
  1285. data = "0"
  1286. return HttpResponse(data)
  1287. # 诱捕器温湿度
  1288. class YBQ_At_Ah(ListView):
  1289. def get(self, request):
  1290. pass
  1291. def post(self, request):
  1292. f_tbegin = request.POST.get('begin')
  1293. f_tend = request.POST.get('end')
  1294. print("f_tbegin:", f_tbegin)
  1295. print("f_tend:", f_tend)
  1296. equip_id = request.POST.get('e_id')
  1297. print("equip_id:", equip_id)
  1298. # 获取当前日期:
  1299. now_time = datetime.datetime.now()
  1300. print("当前日期为:",now_time)
  1301. print("当前月为:",now_time.month)
  1302. sta1 = YBQdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values()
  1303. if f_tbegin:
  1304. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  1305. enddate = re.findall(r"\d+\.?\d*", f_tend)
  1306. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1307. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1308. print("start_date:", start_date)
  1309. print("end_date:", end_date)
  1310. sta1 = YBQdata.objects.filter(
  1311. equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
  1312. if YBQstatus.objects.get(equip_id_id=equip_id).sex_type == "2":
  1313. sta2 = [{"at": eval(x['ybq_data'])['at'],
  1314. "ah": eval(x['ybq_data'])['ah'],
  1315. "cpu_tmp": eval(x['ybq_data'])['cpu_tmp'],
  1316. "tim": x['upl_time']} for x in sta1]
  1317. elif YBQstatus.objects.get(equip_id_id=equip_id).sex_type == "1":
  1318. sta2 = [{"at": eval(x['ybq_data'])['at'],
  1319. "ah": eval(x['ybq_data'])['ah'],
  1320. "tim": x['upl_time']} for x in sta1]
  1321. data = json.dumps(sta2, cls=CJSONEncoder)
  1322. # print("data:", data)
  1323. return HttpResponse(data)
  1324. # 测报灯RTU设备管理类视图:
  1325. class RTU_View(ListView):
  1326. def get(self, request):
  1327. current_user = request.session.get('username')
  1328. current_user = MyUser.objects.get(username=current_user)
  1329. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1330. print("---用户")
  1331. role = "user"
  1332. nums = RTUstatus.objects.filter(
  1333. equip_id__equip_user=current_user).count()
  1334. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1335. print("---代理商")
  1336. role = "user"
  1337. nums = RTUstatus.objects.filter(
  1338. equip_id__equip_agency=current_user.user_agency).count()
  1339. else:
  1340. role = "superuser"
  1341. print("---管理员")
  1342. nums = RTUstatus.objects.all().count()
  1343. return render(request, 'equipmanage/rtu_status.html', context={"nums":nums,"role":role})
  1344. def post(self, request):
  1345. # 请求数据:
  1346. print("---请求数据的post!")
  1347. page = int(request.POST.get('page'))
  1348. print("page:", page)
  1349. ename = request.POST.get('ename')
  1350. print("ename:", ename)
  1351. f_id = request.POST.get('f_id')
  1352. print("f_id:", f_id)
  1353. # 读取当前用户:
  1354. current_user = request.session.get('username')
  1355. print("current_user:", current_user)
  1356. current_user = MyUser.objects.get(username=current_user)
  1357. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username
  1358. print("---不是管理员")
  1359. sta1 = RTUstatus.objects.filter(equip_id__equip_user=current_user)
  1360. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1361. print("---代理商")
  1362. sta1 = RTUstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1363. else:
  1364. print("---管理员")
  1365. sta1 = RTUstatus.objects.all()
  1366. if f_id or ename:
  1367. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1368. print("---不是管理员")
  1369. # 000:
  1370. if ename == "" and f_id == "":
  1371. sta1 = RTUstatus.objects.filter(
  1372. equip_id__equip_user=current_user)
  1373. # 010:
  1374. elif ename == "" and f_id != "":
  1375. sta1 = RTUstatus.objects.filter(
  1376. equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  1377. # 100:
  1378. elif ename != "" and f_id == "":
  1379. sta1 = RTUstatus.objects.filter(
  1380. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename)
  1381. # 110:
  1382. elif ename != "" and f_id != "":
  1383. sta1 = RTUstatus.objects.filter(
  1384. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  1385. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1386. print("---代理商")
  1387. # 000:
  1388. if ename == "" and f_id == "":
  1389. sta1 = RTUstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1390. # 010:
  1391. elif ename == "" and f_id != "":
  1392. sta1 = RTUstatus.objects.filter(
  1393. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  1394. # 100:
  1395. elif ename != "" and f_id == "":
  1396. sta1 = RTUstatus.objects.filter(
  1397. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename)
  1398. # 110:
  1399. elif ename != "" and f_id != "":
  1400. sta1 = RTUstatus.objects.filter(
  1401. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  1402. else:
  1403. print("---管理员")
  1404. # 000:
  1405. if ename == "" and f_id == "":
  1406. sta1 = RTUstatus.objects.all()
  1407. # 010:
  1408. elif ename == "" and f_id != "":
  1409. sta1 = RTUstatus.objects.filter(
  1410. equip_id__equip_id__contains=f_id)
  1411. # 100:
  1412. elif ename != "" and f_id == "":
  1413. sta1 = RTUstatus.objects.filter(
  1414. equip_id__equip_name__contains=ename)
  1415. # 110:
  1416. elif ename != "" and f_id != "":
  1417. sta1 = RTUstatus.objects.filter(
  1418. equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  1419. dat = [{"rtu_status": x.rtu_status, "upl_time": x.upl_time,
  1420. "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  1421. data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]}
  1422. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  1423. return HttpResponse(data)
  1424. # 测报灯RTU历史数据
  1425. class RTU_Data(ListView):
  1426. def get(self, request):
  1427. equip_id = request.GET.get('id')
  1428. print("请求数据,设备id:", equip_id)
  1429. # 数据总条数:
  1430. nums = RTUdata.objects.filter(equip_id=equip_id).count()
  1431. print("nums:", nums)
  1432. ename = Equip.objects.get(equip_id=equip_id).equip_name
  1433. if ename == "":
  1434. ename = "无"
  1435. return render(request, 'equipmanage/rtu_data.html', context={"equip_id": equip_id, "nums": nums,"ename":ename})
  1436. def post(self, request):
  1437. e_id = request.POST.get("id")
  1438. sta1 = RTUdata.objects.filter(equip_id_id=e_id)
  1439. f_begin = request.POST.get('begin')
  1440. f_end = request.POST.get('end')
  1441. if f_begin:
  1442. begindate = re.findall(r"\d+\.?\d*", f_begin)
  1443. enddate = re.findall(r"\d+\.?\d*", f_end)
  1444. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1445. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1446. print("start_date:", start_date)
  1447. print("end_date:", end_date)
  1448. sta1 = RTUdata.objects.filter(equip_id_id=e_id, upl_time__range=(start_date, end_date))
  1449. nums = sta1.count()
  1450. dat = []
  1451. # 获得当前页:
  1452. page = int(request.POST.get('page'))
  1453. print("page:", page)
  1454. for i in sta1:
  1455. dat.append({"rtu_data": i.rtu_data, "upl_time": i.upl_time})
  1456. data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums}
  1457. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  1458. # print("data:",data)
  1459. return HttpResponse(data)
  1460. # RTU详情折线图:
  1461. class RTU_Chart(ListView):
  1462. def get(self, request):
  1463. pass
  1464. def post(self, request):
  1465. f_tbegin = request.POST.get('begin')
  1466. f_tend = request.POST.get('end')
  1467. equip_id = request.POST.get('id')
  1468. if f_tbegin:
  1469. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  1470. enddate = re.findall(r"\d+\.?\d*", f_tend)
  1471. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1472. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1473. print("start_date:", start_date)
  1474. print("end_date:", end_date)
  1475. sta1 = RTUdata.objects.filter(
  1476. equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
  1477. sta2 = [{"csq": eval(x['rtu_data'])['csq'],
  1478. "cpu_tmp": eval(x['rtu_data'])['cpu_tmp'],
  1479. "tim": x['upl_time']} for x in sta1]
  1480. data = json.dumps(sta2, cls=CJSONEncoder)
  1481. return HttpResponse(data)
  1482. now_time = datetime.datetime.now()
  1483. sta1 = RTUdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values()
  1484. sta2 = [{"csq": eval(x['rtu_data'])['csq'],
  1485. "cpu_tmp": eval(x['rtu_data'])['cpu_tmp'],
  1486. "tim": x['upl_time']} for x in sta1]
  1487. data = json.dumps(sta2, cls=CJSONEncoder)
  1488. # print("data:", data)
  1489. return HttpResponse(data)
  1490. # RTU下发MQTT
  1491. class RTU_Mqtt(ListView):
  1492. def get(self, request):
  1493. pass
  1494. def post(self, request):
  1495. ext = request.POST.get('ext')
  1496. imei = request.POST.get('id')
  1497. # 刷新
  1498. if ext == "data":
  1499. payload = {"cmd":"read","ext":"data"}
  1500. # 重启
  1501. elif ext == "reboot":
  1502. payload = {"cmd":"reboot"}
  1503. # 升级
  1504. elif ext == "update":
  1505. payload = {"cmd":"update"}
  1506. # 拍照
  1507. elif ext == "takephoto":
  1508. payload = {"cmd":"ctrl","ext":{"takephoto":"1"}}
  1509. topic = "yfkj/cbd_rtu/s2c/"+imei #[1:-1]
  1510. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1511. print(json.dumps(payload, indent=1))
  1512. if ip == "172.16.220.3":
  1513. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  1514. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1515. else:
  1516. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1517. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1518. # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1519. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1520. print("res.status_code:", type(res.status_code))
  1521. if res.status_code == 200:
  1522. data = "0"
  1523. return HttpResponse(data)
  1524. else:
  1525. data = "1"
  1526. return HttpResponse(data)
  1527. # 糖醋测报设备管理类视图:
  1528. class Tccb_View(ListView):
  1529. def get(self, request):
  1530. return render(request, 'equipmanage/sugar_tccd.html', context={})
  1531. def post(self, request):
  1532. # 请求数据:
  1533. print("---请求数据的post!")
  1534. page = int(request.POST.get('page'))
  1535. print("page:", page)
  1536. ename = request.POST.get('ename')
  1537. print("ename:", ename)
  1538. f_id = request.POST.get('f_id')
  1539. print("f_id:", f_id)
  1540. # 读取当前用户:
  1541. current_user = request.session.get('username')
  1542. print("current_user:", current_user)
  1543. current_user = MyUser.objects.get(username=current_user)
  1544. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username
  1545. print("---不是管理员")
  1546. sta1 = TCCBstatus.objects.filter(equip_id__equip_user=current_user)
  1547. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1548. print("---代理商")
  1549. sta1 = TCCBstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1550. else:
  1551. print("---管理员")
  1552. sta1 = TCCBstatus.objects.all()
  1553. if f_id or ename:
  1554. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1555. print("---不是管理员")
  1556. # 000:
  1557. if ename == "" and f_id == "":
  1558. sta1 = TCCBstatus.objects.filter(
  1559. equip_id__equip_user=current_user)
  1560. # 010:
  1561. elif ename == "" and f_id != "":
  1562. sta1 = TCCBstatus.objects.filter(
  1563. equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  1564. # 100:
  1565. elif ename != "" and f_id == "":
  1566. sta1 = TCCBstatus.objects.filter(
  1567. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename)
  1568. # 110:
  1569. elif ename != "" and f_id != "":
  1570. sta1 = TCCBstatus.objects.filter(
  1571. equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  1572. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1573. print("---代理商")
  1574. # 000:
  1575. if ename == "" and f_id == "":
  1576. sta1 = TCCBstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1577. # 010:
  1578. elif ename == "" and f_id != "":
  1579. sta1 = TCCBstatus.objects.filter(
  1580. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  1581. # 100:
  1582. elif ename != "" and f_id == "":
  1583. sta1 = TCCBstatus.objects.filter(
  1584. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename)
  1585. # 110:
  1586. elif ename != "" and f_id != "":
  1587. sta1 = TCCBstatus.objects.filter(
  1588. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  1589. else:
  1590. print("---管理员")
  1591. # 000:
  1592. if ename == "" and f_id == "":
  1593. sta1 = TCCBstatus.objects.all()
  1594. # 010:
  1595. elif ename == "" and f_id != "":
  1596. sta1 = TCCBstatus.objects.filter(
  1597. equip_id__equip_id__contains=f_id)
  1598. # 100:
  1599. elif ename != "" and f_id == "":
  1600. sta1 = TCCBstatus.objects.filter(
  1601. equip_id__equip_name__contains=ename)
  1602. # 110:
  1603. elif ename != "" and f_id != "":
  1604. sta1 = TCCBstatus.objects.filter(
  1605. equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id)
  1606. dat = [{"tccb_status": x.tccb_status, "upl_time": x.upl_time,
  1607. "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  1608. data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]}
  1609. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  1610. return HttpResponse(data)
  1611. # 糖醋测报详情页面:
  1612. class Tccb_Detail(ListView):
  1613. def get(self,request):
  1614. e_id = request.GET.get("id")
  1615. user_name = request.user.username
  1616. print('user_name=', user_name)
  1617. current_user = MyUser.objects.get(username=user_name)
  1618. if current_user.is_superuser:
  1619. role = "superuser"
  1620. elif current_user.is_staff:
  1621. role = "staff"
  1622. elif current_user.is_agency:
  1623. role = "agency"
  1624. else:
  1625. role = "user"
  1626. return render(request, 'equipmanage/sugar_tccd_detail.html', context={"role":role})
  1627. def post(self,request):
  1628. e_id = request.POST.get("id")
  1629. sta1 = TCCBstatus.objects.get(equip_id_id=e_id)
  1630. data = {"status": sta1.tccb_status, "upl_time": sta1.upl_time, "paramconf": sta1.paramconf,
  1631. "equip_name": sta1.equip_id.equip_name,"is_online": sta1.is_online, "off_time": sta1.off_time}
  1632. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  1633. # print("data:",data)
  1634. return HttpResponse(data)
  1635. # 糖醋测报历史数据
  1636. class Tccb_Data(ListView):
  1637. def get(self, request):
  1638. equip_id = request.GET.get('id')
  1639. print("请求数据,设备id:", equip_id)
  1640. # 数据总条数:
  1641. nums = RTUdata.objects.filter(equip_id=equip_id).count()
  1642. print("nums:", nums)
  1643. ename = Equip.objects.get(equip_id=equip_id).equip_name
  1644. if ename == "":
  1645. ename = "无"
  1646. return render(request, 'equipmanage/sugar_tccd_data.html', context={"equip_id": equip_id, "nums": nums,"ename":ename})
  1647. def post(self, request):
  1648. e_id = request.POST.get("e_id")
  1649. sta1 = TCCBdata.objects.filter(equip_id_id=e_id)
  1650. f_begin = request.POST.get('begin')
  1651. f_end = request.POST.get('end')
  1652. if f_begin:
  1653. begindate = re.findall(r"\d+\.?\d*", f_begin)
  1654. enddate = re.findall(r"\d+\.?\d*", f_end)
  1655. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1656. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1657. print("start_date:", start_date)
  1658. print("end_date:", end_date)
  1659. sta1 = TCCBdata.objects.filter(equip_id_id=e_id, upl_time__range=(start_date, end_date))
  1660. nums = sta1.count()
  1661. dat = []
  1662. # 获得当前页:
  1663. page = int(request.POST.get('page'))
  1664. print("page:", page)
  1665. for i in sta1:
  1666. dat.append({"tccb_data": i.tccb_data, "upl_time": i.upl_time})
  1667. data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums}
  1668. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  1669. # print("data:",data)
  1670. return HttpResponse(data)
  1671. # 糖醋测报下发MQTT
  1672. class Tccb_Mqtt(ListView):
  1673. def get(self, request):
  1674. pass
  1675. def post(self, request):
  1676. ext = request.POST.get('ext')
  1677. imei = request.POST.get('e_id')
  1678. # 刷新
  1679. if ext == "status":
  1680. payload = {"cmd": "read", "ext": {"type": "status"}}
  1681. elif ext == "param":
  1682. payload = {"cmd": "read", "ext": {"type": "paramconf"}}
  1683. # 重启
  1684. elif ext == "reboot":
  1685. payload = {"cmd":"reboot"}
  1686. # 升级
  1687. elif ext == "update":
  1688. payload = {"cmd":"update"}
  1689. # 拍照
  1690. elif ext == "takephoto":
  1691. payload = {"cmd":"ctrl","ext":{"type": "takephoto"}}
  1692. # 下发设置
  1693. elif ext == "paramconf":
  1694. st = request.POST.get('st')
  1695. et = request.POST.get('et')
  1696. collt = request.POST.get('collt')
  1697. htim = request.POST.get('htim')
  1698. datt = request.POST.get('datt')
  1699. pump_sec = request.POST.get('pump_sec')
  1700. shake_sec = request.POST.get('shake_sec')
  1701. payload = {"cmd": "paramconf","ext": {"st": int(st),"et": int(et),"collt": int(collt),"htim": int(htim),"datt": int(datt),"pump_sec": int(pump_sec),"shake_sec": int(shake_sec),"boot": 0}}
  1702. # 禁用设备
  1703. elif ext == "boot":
  1704. payload = {"cmd": "paramconf","ext": {"st": 20,"et": 5,"collt": 10,"htim": 0,"datt": 20,"pump_sec": 20,"shake_sec": 20,"boot": 1}}
  1705. topic = "/yfkj/tccbd/sub/"+imei #[1:-1]
  1706. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1707. print(json.dumps(payload, indent=1))
  1708. if ip == "172.16.220.3":
  1709. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  1710. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1711. else:
  1712. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1713. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1714. # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  1715. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1716. print("res.status_code:", type(res.status_code))
  1717. if res.status_code == 200:
  1718. data = "0"
  1719. return HttpResponse(data)
  1720. else:
  1721. data = "1"
  1722. return HttpResponse(data)
  1723. # 糖醋测报详情折线图:
  1724. class TCCB_Chart(ListView):
  1725. def get(self, request):
  1726. pass
  1727. def post(self, request):
  1728. f_tbegin = request.POST.get('begin')
  1729. f_tend = request.POST.get('end')
  1730. equip_id = request.POST.get('e_id')
  1731. print("-------",equip_id)
  1732. if f_tbegin:
  1733. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  1734. enddate = re.findall(r"\d+\.?\d*", f_tend)
  1735. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1736. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1737. print("start_date:", start_date)
  1738. print("end_date:", end_date)
  1739. sta1 = TCCBdata.objects.filter(
  1740. equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
  1741. sta2 = [{"at": eval(x['tccb_data'])['at'],
  1742. "ah": eval(x['tccb_data'])['ah'],
  1743. "vbat": eval(x['tccb_data'])['vbat'],
  1744. "csq": eval(x['tccb_data'])['csq'],
  1745. "tim": x['upl_time']} for x in sta1]
  1746. data = json.dumps(sta2, cls=CJSONEncoder)
  1747. return HttpResponse(data)
  1748. now_time = datetime.datetime.now()
  1749. sta1 = TCCBdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values()
  1750. sta2 = [{"at": eval(x['tccb_data'])['at'],
  1751. "ah": eval(x['tccb_data'])['ah'],
  1752. "vbat": eval(x['tccb_data'])['vbat'],
  1753. "csq": eval(x['tccb_data'])['csq'],
  1754. "tim": x['upl_time']} for x in sta1]
  1755. data = json.dumps(sta2, cls=CJSONEncoder)
  1756. # print("data:", data)
  1757. return HttpResponse(data)
  1758. # 糖醋测报照片
  1759. class TCCB_Photo(ListView):
  1760. def get(self, request):
  1761. return render(request, 'equipmanage/sugar_tccd_photo.html', context={})
  1762. def post(self, request):
  1763. pass
  1764. # 糖醋测报照片
  1765. class TCCB_Photo_List(ListView):
  1766. def get(self, request):
  1767. print("-----image list view!-----")
  1768. imei = request.GET.get('id')
  1769. print("imei:", imei)
  1770. user_name = request.user.username
  1771. print('user_name=', user_name)
  1772. current_user = MyUser.objects.get(username=user_name)
  1773. f_begin = request.GET.get('begin')
  1774. f_end = request.GET.get('end')
  1775. if current_user.is_superuser:
  1776. role = "superuser"
  1777. elif current_user.is_staff:
  1778. role = "staff"
  1779. elif current_user.is_agency:
  1780. role = "agency"
  1781. else:
  1782. role = "user"
  1783. # 获得当前页:
  1784. page = int(request.GET.get('page'))
  1785. print("page:", page)
  1786. # equip_name = Equip.objects.get(equip_id=imei).equip_name
  1787. # 当前用户:返回用户,前端判断是否显示删除图片按钮
  1788. img = TCCBphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
  1789. # equip_name = Equip.objects.get(equip_id=imei).equip_name
  1790. nums = TCCBphoto.objects.filter(equip_id=imei).count()
  1791. if f_begin:
  1792. begindate = re.findall(r"\d+\.?\d*", f_begin)
  1793. enddate = re.findall(r"\d+\.?\d*", f_end)
  1794. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1795. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1796. print("start_date:", start_date)
  1797. print("end_date:", end_date)
  1798. img = TCCBphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date))
  1799. nums = img.count()
  1800. img = img[(8*(page-1)):(page*8)]
  1801. return render(request, 'equipmanage/sugar_tccd_photo_list.html', context={"img": img,'nums':nums,'role':role})
  1802. def post(self, request):
  1803. pass
  1804. # 删除糖醋测报图片
  1805. class TCCBImage_Del(ListView):
  1806. def get(self,request):
  1807. pass
  1808. def post(self,request):
  1809. print("-----image delete!-----")
  1810. imei = request.POST.get('imei')
  1811. img_name = request.POST.get('addr')
  1812. print("img_name:",img_name)
  1813. if os.path.exists(img_name) == True:
  1814. # 删除图片文件
  1815. os.remove(img_name)
  1816. # 删除数据库照片列表中,照片路径:
  1817. try:
  1818. TCCBphoto.objects.filter(equip_id=imei, addr=img_name).delete()
  1819. print("-----image delete ok!-----")
  1820. data = "1"
  1821. return HttpResponse(data)
  1822. except:
  1823. print("-----image delete failed!-----")
  1824. data = "0"
  1825. return HttpResponse(data)
  1826. else:
  1827. # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
  1828. # 因此不管何时都删除数据库路径
  1829. try:
  1830. TCCBphoto.objects.filter(equip_id=imei, addr=img_name).delete()
  1831. except:
  1832. pass
  1833. print("-----image not exist!-----")
  1834. data = "0"
  1835. return HttpResponse(data)
  1836. # import socket
  1837. # import uuid
  1838. class CBD_Dver(ListView):
  1839. def get(self,request):
  1840. pass
  1841. def post(self,request):
  1842. dver = request.POST.get('dver')
  1843. num = request.POST.get('num')
  1844. if dver:
  1845. CBDupdate.objects.filter(num=num).update(dver=dver)
  1846. return HttpResponse("0")
  1847. _list = CBDupdate.objects.all()
  1848. data = []
  1849. for i in _list:
  1850. data.append({"num":i.num,"dver":i.dver})
  1851. data = json.dumps(data)
  1852. return HttpResponse(data)
  1853. # 测报灯管理视图:
  1854. class CBDManage_View(ListView):
  1855. def get(self, request):
  1856. # x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
  1857. # if x_forwarded_for:
  1858. # ip = x_forwarded_for.split(',')[0]#所以这里是真实的ip
  1859. # print("------------real ip")
  1860. # else:
  1861. # ip = request.META.get('REMOTE_ADDR')#这里获得代理ip
  1862. # print("------------unreal ip")
  1863. # 获取主机名
  1864. # hostname = socket.gethostname()
  1865. # #获取IP
  1866. # ip = socket.gethostbyname(hostname)
  1867. # print("获取的IP为:",ip)
  1868. current_user = request.session.get('username')
  1869. current_user = MyUser.objects.get(username=current_user)
  1870. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1871. print("---用户")
  1872. role = "user"
  1873. nums = CBDstatus.objects.filter(
  1874. equip_id__equip_user=current_user).count()
  1875. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1876. print("---代理商")
  1877. role = "user"
  1878. nums = CBDstatus.objects.filter(
  1879. equip_id__equip_agency=current_user.user_agency).count()
  1880. else:
  1881. print("---管理员")
  1882. role = "superuser"
  1883. nums = CBDstatus.objects.all().count()
  1884. cbdgroup = Group.objects.get(name='测报灯用户')
  1885. # obj = Group.models.get(b_name='xxx')
  1886. user_list = MyUser.objects.filter(groups=cbdgroup)
  1887. # for i in user_list:
  1888. # print("--------->>",i.username)
  1889. User_Log.objects.create(log_user=current_user,
  1890. log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-测报灯')
  1891. return render(request, 'equipmanage/equipmanage_cbd.html', context={"nums": nums,"role": role,"user_list":user_list})
  1892. def post(self, request):
  1893. # if request.is_ajax():
  1894. # print("ajax-post!")
  1895. req = request.POST.get('req')
  1896. print("req:", req)
  1897. # 请求数据:
  1898. if req == "dat":
  1899. print("---请求数据的post!")
  1900. page = int(request.POST.get('page'))
  1901. print("page:", page)
  1902. current_user = request.session.get('username')
  1903. print("current_user:", current_user)
  1904. current_user = MyUser.objects.get(username=current_user)
  1905. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1906. print("---不是管理员")
  1907. # sta1 = CBDstatus.objects.filter(
  1908. # equip_id__equip_user=current_user, equip_id__equip_type=3)[(10*(page-1)):(page*10)] # .order_by("-equip_id__equip_add_time")
  1909. sta1 = CBDstatus.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)]
  1910. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1911. print("---代理商")
  1912. # sta1 = CBDstatus.objects.filter(
  1913. # equip_id__equip_agency=current_user.user_agency, equip_id__equip_type=3)[(10*(page-1)):(page*10)]
  1914. sta1 = CBDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
  1915. else:
  1916. print("---管理员")
  1917. # sta1 = CBDstatus.objects.filter(equip_id__equip_type=3)[(
  1918. # 10*(page-1)):(page*10)] # .order_by("-equip_id__equip_add_time")
  1919. sta1 = CBDstatus.objects.all()[(10*(page-1)):(page*10)]
  1920. sta2 = []
  1921. for x in sta1:
  1922. update = "1"
  1923. print("-------->>",x.equip_id)
  1924. dver = eval(x.cbd_status)['dver']
  1925. if dver.startswith("4") and dver.endswith("re"):
  1926. print("re",dver)
  1927. if dver != CBDupdate.objects.get(num="1").dver:
  1928. update = "0"
  1929. elif dver.startswith("4") and dver.endswith("ZP"):
  1930. print("ZP",dver)
  1931. if dver != CBDupdate.objects.get(num="2").dver:
  1932. update = "0"
  1933. elif dver.startswith("4") and dver.endswith("GK"):
  1934. print("GK",dver)
  1935. if dver != CBDupdate.objects.get(num="3").dver:
  1936. update = "0"
  1937. elif dver.startswith("5") and dver.endswith("HK") and "0" not in dver:
  1938. print("5-HK",dver)
  1939. dver = re.sub('\\(.*?\\)','',dver)
  1940. if dver != CBDupdate.objects.get(num="4").dver:
  1941. update = "0"
  1942. elif dver.startswith("5") and dver.endswith("ZP"):
  1943. print("5-ZP",dver)
  1944. dver = re.sub('\\(.*?\\)','',dver)
  1945. if dver != CBDupdate.objects.get(num="5").dver:
  1946. update = "0"
  1947. elif dver.startswith("5") and dver.endswith("HK") and "0" in dver:
  1948. print("5.0-HK",dver)
  1949. dver = re.sub('\\(.*?\\)','',dver)
  1950. if dver != CBDupdate.objects.get(num="6").dver:
  1951. update = "0"
  1952. sta2.append({"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype,
  1953. "paramconf": x.paramconf, "serverconf": x.serverconf,"update":update,
  1954. "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc,
  1955. "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid})
  1956. # sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype,
  1957. # "paramconf": x.paramconf, "serverconf": x.serverconf,
  1958. # "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc,
  1959. # "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid} for x in sta1]
  1960. data = json.dumps(sta2, cls=CJSONEncoder, indent=4)
  1961. # print("data:",data)
  1962. return HttpResponse(data)
  1963. elif req == "filter":
  1964. f_name = request.POST.get('ename')
  1965. print("f_name:", f_name)
  1966. f_id = request.POST.get('f_id')
  1967. print("f_id:", f_id)
  1968. page = int(request.POST.get('page'))
  1969. print("page:", page)
  1970. dver = request.POST.get('dver')
  1971. print("dver",dver)
  1972. is_online = request.POST.get('is_online')
  1973. print("is_online",is_online)
  1974. etype = request.POST.get('etype')
  1975. print("etype",etype)
  1976. uname = request.POST.get('uname')
  1977. print("uname",uname)
  1978. # 读取当前用户:
  1979. current_user = request.session.get('username')
  1980. print("current_user:", current_user)
  1981. current_user = MyUser.objects.get(username=current_user)
  1982. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1983. print("---不是管理员")
  1984. if f_name == "" and f_id == '':
  1985. sta1 = CBDstatus.objects.filter(
  1986. equip_id__equip_user=current_user)
  1987. elif f_name == "" and f_id != '':
  1988. sta1 = CBDstatus.objects.filter(
  1989. equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  1990. elif f_name != "" and f_id == '':
  1991. sta1 = CBDstatus.objects.filter(
  1992. equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name)
  1993. elif f_name != "" and f_id != '':
  1994. sta1 = CBDstatus.objects.filter(
  1995. equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  1996. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1997. print("---代理商")
  1998. if f_name == "" and f_id == '':
  1999. sta1 = CBDstatus.objects.filter(
  2000. equip_id__equip_agency=current_user.user_agency)
  2001. elif f_name == "" and f_id != '':
  2002. sta1 = CBDstatus.objects.filter(
  2003. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  2004. elif f_name != "" and f_id == '':
  2005. sta1 = CBDstatus.objects.filter(
  2006. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name)
  2007. elif f_name != "" and f_id != '':
  2008. sta1 = CBDstatus.objects.filter(
  2009. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  2010. else:
  2011. print("---管理员")
  2012. # if f_name == "" and f_id == '':
  2013. # sta1 = CBDstatus.objects.all()
  2014. # # 010
  2015. # elif f_name == "" and f_id != '':
  2016. # sta1 = CBDstatus.objects.filter(
  2017. # equip_id__equip_id__contains=f_id)
  2018. # # 100
  2019. # elif f_name != "" and f_id == '':
  2020. # sta1 = CBDstatus.objects.filter(
  2021. # equip_id__equip_name__contains=f_name)
  2022. # # 110
  2023. # elif f_name != "" and f_id != '':
  2024. # sta1 = CBDstatus.objects.filter(
  2025. # equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  2026. # 000
  2027. if f_name == "" and f_id == '' and uname == '':
  2028. sta1 = CBDstatus.objects.all()
  2029. # 010
  2030. elif f_name == "" and f_id != '' and uname == '':
  2031. sta1 = CBDstatus.objects.filter(
  2032. equip_id__equip_id__contains=f_id)
  2033. # 100
  2034. elif f_name != "" and f_id == '' and uname == '':
  2035. sta1 = CBDstatus.objects.filter(
  2036. equip_id__equip_name__contains=f_name)
  2037. # 110
  2038. elif f_name != "" and f_id != '' and uname == '':
  2039. sta1 = CBDstatus.objects.filter(
  2040. equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  2041. # 011
  2042. elif f_name == "" and f_id != '' and uname != '':
  2043. if MyUser.objects.get(username=uname).is_agency == True:
  2044. sta1 = CBDstatus.objects.filter(
  2045. equip_id__equip_id__contains=f_id, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  2046. else:
  2047. sta1 = CBDstatus.objects.filter(
  2048. equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname))
  2049. # 101
  2050. elif f_name != "" and f_id == '' and uname != '':
  2051. if MyUser.objects.get(username=uname).is_agency == True:
  2052. sta1 = CBDstatus.objects.filter(
  2053. equip_id__equip_name__contains=f_name, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  2054. else:
  2055. sta1 = CBDstatus.objects.filter(
  2056. equip_id__equip_name__contains=f_name, equip_id__equip_user=MyUser.objects.get(username=uname))
  2057. # 001
  2058. elif f_name == "" and f_id == '' and uname != '':
  2059. if MyUser.objects.get(username=uname).is_agency == True:
  2060. sta1 = CBDstatus.objects.filter(
  2061. equip_id__equip_name__contains=f_name, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  2062. else:
  2063. sta1 = CBDstatus.objects.filter(
  2064. equip_id__equip_name__contains=f_name, equip_id__equip_user=MyUser.objects.get(username=uname))
  2065. # 111
  2066. elif f_name != "" and f_id != '' and uname != '':
  2067. if MyUser.objects.get(username=uname).is_agency == True:
  2068. sta1 = CBDstatus.objects.filter(
  2069. equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id,equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency)
  2070. else:
  2071. sta1 = CBDstatus.objects.filter(
  2072. equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname))
  2073. # print("在线状态------------>",is_online)
  2074. # -----------------------------------------------------------------------------------------
  2075. # 设备类型筛选设备
  2076. if etype != "":
  2077. if etype == "全部" or etype == "" or etype == None:
  2078. pass
  2079. elif etype == "其他":
  2080. sta1 = sta1.filter(etype=None)
  2081. else:
  2082. sta1 = sta1.filter(etype=etype)
  2083. # -----------------------------------------------------------------------------------------
  2084. # 版本号筛选设备
  2085. if dver != "" and is_online == "":
  2086. sta3 = []
  2087. for i in sta1:
  2088. fir_v = eval(i.cbd_status)["dver"].split(".")
  2089. if fir_v[0] == dver:
  2090. sta3.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,"etype":i.etype,
  2091. "paramconf": i.paramconf, "serverconf": i.serverconf,
  2092. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  2093. "is_online": i.is_online, "off_time": i.off_time,"iccid":i.simid})
  2094. data = {"dat": sta3[(10*(page-1)):(page*10)],
  2095. "nums": len(sta3)}
  2096. print("-------------",len(sta3))
  2097. data = json.dumps(data, cls=CJSONEncoder)
  2098. # print("data:",data)
  2099. return HttpResponse(data)
  2100. # -----------------------------------------------------------------------------------------
  2101. # 在线状态筛选设备
  2102. elif is_online != "" and dver == "":
  2103. sta4 = []
  2104. for i in sta1:
  2105. if is_online == i.is_online:
  2106. sta4.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,"etype":i.etype,
  2107. "paramconf": i.paramconf, "serverconf": i.serverconf,
  2108. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  2109. "is_online": i.is_online, "off_time": i.off_time,"iccid":i.simid})
  2110. data = {"dat": sta4[(10*(page-1)):(page*10)],
  2111. "nums": len(sta4)}
  2112. print("-------------",len(sta4))
  2113. data = json.dumps(data, cls=CJSONEncoder)
  2114. # print("data:",data)
  2115. return HttpResponse(data)
  2116. # -----------------------------------------------------------------------------------------
  2117. # 版本号和在线状态同时筛选设备
  2118. elif is_online != "" and dver != "":
  2119. sta3 = []
  2120. for i in sta1:
  2121. fir_v = eval(i.cbd_status)["dver"].split(".")
  2122. if fir_v[0] == dver and i.is_online == is_online:
  2123. sta3.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,"etype":i.etype,
  2124. "paramconf": i.paramconf, "serverconf": i.serverconf,
  2125. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  2126. "is_online": i.is_online, "off_time": i.off_time,"iccid":i.simid})
  2127. data = {"dat": sta3[(10*(page-1)):(page*10)],
  2128. "nums": len(sta3)}
  2129. print("-------------",len(sta3))
  2130. data = json.dumps(data, cls=CJSONEncoder)
  2131. # print("data:",data)
  2132. return HttpResponse(data)
  2133. # -----------------------------------------------------------------------------------------
  2134. sta2 = []
  2135. for x in sta1:
  2136. update = "1"
  2137. dver = eval(x.cbd_status)['dver']
  2138. if dver.startswith("4") and dver.endswith("re"):
  2139. print("re",dver)
  2140. if dver != CBDupdate.objects.get(num="1").dver:
  2141. update = "0"
  2142. elif dver.startswith("4") and dver.endswith("ZP"):
  2143. print("ZP",dver)
  2144. if dver != CBDupdate.objects.get(num="2").dver:
  2145. update = "0"
  2146. elif dver.startswith("4") and dver.endswith("GK"):
  2147. print("GK",dver)
  2148. if dver != CBDupdate.objects.get(num="3").dver:
  2149. update = "0"
  2150. elif dver.startswith("5") and dver.endswith("HK") and "0" not in dver:
  2151. print("5-HK",dver)
  2152. if dver != CBDupdate.objects.get(num="4").dver:
  2153. update = "0"
  2154. elif dver.startswith("5") and dver.endswith("ZP"):
  2155. print("5-ZP",dver)
  2156. if dver != CBDupdate.objects.get(num="5").dver:
  2157. update = "0"
  2158. elif dver.startswith("5") and dver.endswith("HK") and "0" in dver:
  2159. print("5.0-HK",dver)
  2160. if dver != CBDupdate.objects.get(num="6").dver:
  2161. update = "0"
  2162. sta2.append({"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype,
  2163. "paramconf": x.paramconf, "serverconf": x.serverconf,"update":update,
  2164. "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc,
  2165. "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid})
  2166. # sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype,
  2167. # "paramconf": x.paramconf, "serverconf": x.serverconf,
  2168. # "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc,
  2169. # "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid} for x in sta1]
  2170. data = {"dat": sta2[(10*(page-1)):(page*10)],
  2171. "nums": sta1.count()}
  2172. data = json.dumps(data, cls=CJSONEncoder)
  2173. # print("data:",data)
  2174. return HttpResponse(data)
  2175. elif req == "paramconf":
  2176. equip_id = request.POST.get('id')
  2177. print("equip_id:", equip_id)
  2178. # 读取当前设备的参数配置信息:
  2179. sta1 = CBDstatus.objects.filter(equip_id=equip_id)
  2180. for x in sta1:
  2181. sta2 = {"paramconf": x.paramconf}
  2182. data = json.dumps(sta2, cls=CJSONEncoder)
  2183. print("配置信息的data:", data)
  2184. return HttpResponse(data)
  2185. elif req == "change":
  2186. equip_id = request.POST.get('id')
  2187. print("equip_id:", equip_id)
  2188. equip_desc = request.POST.get('desc')
  2189. equip_obj = Equip.objects.get(equip_id=equip_id)
  2190. try:
  2191. equip_obj.equip_desc = equip_desc
  2192. equip_obj.save()
  2193. data = "0"
  2194. except:
  2195. data = "1"
  2196. return HttpResponse(data)
  2197. # 测报灯列表页导出
  2198. class CBDManage_explore(ListView):
  2199. def get(self,request):
  2200. uname = request.GET.get('uname')
  2201. dver = request.GET.get('dver')
  2202. is_online = request.GET.get('is_online')
  2203. # filename = request.GET.get('filename')
  2204. print(dver)
  2205. print(is_online)
  2206. if uname:
  2207. sta1 = CBDstatus.objects.filter(equip_id__equip_user=MyUser.objects.get(username=uname))
  2208. else:
  2209. sta1 = CBDstatus.objects.all()
  2210. # -----------------------------------------------------------------------------------------
  2211. # 版本号筛选设备
  2212. if dver == "" and is_online == "":
  2213. sta3 = []
  2214. for i in sta1:
  2215. fir_v = eval(i.cbd_status)["dver"]
  2216. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  2217. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i.equip_id_id).equip_add_time})
  2218. # -----------------------------------------------------------------------------------------
  2219. # 版本号筛选设备
  2220. elif dver != "" and is_online == "":
  2221. sta3 = []
  2222. for i in sta1:
  2223. fir_v = eval(i.cbd_status)["dver"]
  2224. if fir_v.split(".")[0] == dver:
  2225. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  2226. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time})
  2227. # -----------------------------------------------------------------------------------------
  2228. # 在线状态筛选设备
  2229. elif is_online != "" and dver == "":
  2230. sta3 = []
  2231. for i in sta1:
  2232. fir_v = eval(i.cbd_status)["dver"]
  2233. if is_online == i.is_online:
  2234. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  2235. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time})
  2236. # -----------------------------------------------------------------------------------------
  2237. # 版本号和在线状态同时筛选设备
  2238. elif is_online != "" and dver != "":
  2239. sta3 = []
  2240. for i in sta1:
  2241. fir_v = eval(i.cbd_status)["dver"]
  2242. if fir_v.split(".")[0] == dver and i.is_online == is_online:
  2243. sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v,
  2244. "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time})
  2245. # -----------------------------------------------------------------------------------------
  2246. data1 = []
  2247. for x in sta3:
  2248. if x["lat"]:
  2249. res = requests.post("http://api.map.baidu.com/geocoder?location=%s,%s&coord_type=gcj02&output=json"%(x["lat"],x["lng"]))
  2250. try:
  2251. print(eval(res.text))
  2252. print((eval(res.text))["result"]["addressComponent"]["province"])
  2253. # print((eval(res.text))["result"]["formatted_address"])
  2254. except:
  2255. continue
  2256. location = (eval(res.text))["result"]["addressComponent"]["province"] + (eval(res.text))["result"]["addressComponent"]["city"] + (eval(res.text))["result"]["addressComponent"]["district"]
  2257. data1.append({"equip_id":x["equip_id"],"fir_v":x["fir_v"],"location":location,"is_online":x["is_online"],"off_time":x["off_time"],"creat_time":x["creat_time"]})
  2258. # print("=============>>",sta3)
  2259. title = ["设备id","设备版本","设备位置","是否在线","离线时间","设备创建时间"]
  2260. book = xlwt.Workbook() # 创建一个excel对象
  2261. sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
  2262. for i in range(len(title)): # 遍历列
  2263. # sheet.write(0,i,title[i],style) # 将title数组中的字段写入到0行i列中
  2264. sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
  2265. # print(sta2)
  2266. for xx in range(len(data1)): # 遍历列表
  2267. if data1[xx]['is_online'] == "0":
  2268. is_online = "离线"
  2269. off_time = datetime.datetime.strftime(data1[xx]['off_time'],'%Y-%m-%d')
  2270. else:
  2271. is_online = "在线"
  2272. off_time = ""
  2273. creat_time = datetime.datetime.strftime(data1[xx]['creat_time'],'%Y-%m-%d')
  2274. sheet.write(xx+1,0,data1[xx]['equip_id']) # 将equip_id写入到第x+1行,第0列中
  2275. sheet.write(xx+1,1,data1[xx]['fir_v'])
  2276. sheet.write(xx+1,2,data1[xx]['location'])
  2277. sheet.write(xx+1,3,is_online)
  2278. sheet.write(xx+1,4,off_time)
  2279. sheet.write(xx+1,5,creat_time)
  2280. sheet.col(0).width = 256 * 18
  2281. sheet.col(1).width = 256 * 11
  2282. sheet.col(2).width = 256 * 24
  2283. sheet.col(3).width = 256 * 8
  2284. sheet.col(4).width = 256 * 11
  2285. sheet.col(5).width = 256 * 13
  2286. # 写出到IO
  2287. output = BytesIO()
  2288. book.save(output)
  2289. # 重新定位到开始
  2290. output.seek(0)
  2291. response = HttpResponse(content_type='application/vnd.ms-excel')
  2292. response['Content-Disposition'] = 'attachment;filename=111.xls'
  2293. response.write(output.getvalue())
  2294. return response
  2295. def post(self,request):
  2296. pass
  2297. # 测报灯详情管理视图:
  2298. class CBDManage_detail_View(ListView):
  2299. def get(self, request):
  2300. equip_id = request.GET.get('id')
  2301. current_user = request.session.get('username')
  2302. # print("type :current_user",type(current_user))
  2303. current_user = MyUser.objects.get(username=current_user)
  2304. dver = request.GET.get("dver")
  2305. is_hk = eval(CBDstatus.objects.get(equip_id=equip_id).cbd_status)["dver"]
  2306. if "HK" in is_hk:
  2307. is_hk = True
  2308. else:
  2309. is_hk = False
  2310. print("是否为海康版本",is_hk)
  2311. iccid = CBDstatus.objects.get(equip_id=equip_id).simid
  2312. rtu_info = CBDstatus.objects.get(equip_id=equip_id).rtuinfo
  2313. User_Log.objects.create(log_user=current_user,
  2314. log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-测报灯详情')
  2315. return render(request, 'equipmanage/equipmanage_cbd_detail.html', context={"equip_id": equip_id, "dver": dver,
  2316. "iccid":iccid, "is_hk":is_hk,"rtu_info":rtu_info})
  2317. def post(self, request):
  2318. equip_id = request.POST.get('id')
  2319. print("请求数据的设备id:", equip_id)
  2320. # 最新状态:status
  2321. sta1 = CBDstatus.objects.filter(equip_id__equip_id=equip_id)
  2322. for x in sta1:
  2323. sta2 = {"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype,
  2324. "paramconf": x.paramconf, "serverconf": x.serverconf,
  2325. "equip_name": x.equip_id.equip_name,"old_eid":x.old_eid,
  2326. "is_online": x.is_online, "off_time": x.off_time,"rtu_info":x.rtuinfo}
  2327. # 最新数据:data
  2328. sta3 = CBDdata.objects.filter(equip_id__equip_id=equip_id).order_by('-upl_time')[:1]
  2329. for x in sta3:
  2330. sta4 = {"equip_name": x.equip_id.equip_name,
  2331. "cbd_data": x.cbd_data, "upl_time": x.upl_time}
  2332. data = []
  2333. data.append(sta2)
  2334. data.append(sta4)
  2335. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  2336. print("data:",data)
  2337. return HttpResponse(data)
  2338. # 测报灯修改imei
  2339. class CBD_Old_Imei(ListView):
  2340. def get(self, request):
  2341. pass
  2342. def post(self, request):
  2343. equip_id = request.POST.get('e_id')
  2344. old_eid = CBDstatus.objects.get(equip_id=equip_id).old_eid
  2345. data = {"old_eid":old_eid}
  2346. data = json.dumps(data)
  2347. return HttpResponse(data)
  2348. # 测报灯状态历史
  2349. class CBDStatus_all(ListView):
  2350. def get(self, request):
  2351. e_id = request.GET.get('id')
  2352. nums = CBDstatus_all.objects.filter(equip_id=e_id).count()
  2353. def post(self, request):
  2354. e_id = request.POST.get('id')
  2355. page = int(request.POST.get('page'))
  2356. sta1 = CBDstatus_all.objects.filter(equip_id=e_id)
  2357. sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,
  2358. "paramconf": x.paramconf, "serverconf": x.serverconf,
  2359. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  2360. data = {"dat": sta2[(10*(page-1)):(page*10)],
  2361. "nums": sta1.count()}
  2362. data = json.dumps(data, cls=CJSONEncoder)
  2363. # print("data:",data)
  2364. return HttpResponse(data)
  2365. # 测报灯信号强度变化
  2366. class CBD_csq(ListView):
  2367. def get(self, request):
  2368. pass
  2369. def post(self, request):
  2370. e_id = request.POST.get('id')
  2371. data = []
  2372. status_list = CBDstatus_all.objects.filter(equip_id=e_id)
  2373. for i in status_list:
  2374. status = eval(i.cbd_status)
  2375. print(status['csq'])
  2376. data.append({"upl_time":i.upl_time,"csq":status['csq']})
  2377. data = json.dumps(data, cls=CJSONEncoder)
  2378. return HttpResponse(data)
  2379. # 测报灯mqtt通信接口:
  2380. class CBD_Mqtt(ListView):
  2381. def get(self, request):
  2382. pass
  2383. def post(self, request):
  2384. print("mqtt-post!")
  2385. req = request.POST.get('req')
  2386. print("req:", req)
  2387. if req == "set":
  2388. equip_id = request.POST.get('id') # 设备id
  2389. ts = int(request.POST.get('timing')) # 定时模式
  2390. # imgUpNum = request.POST.get('imgUpNum')# 图片上传时间模式
  2391. # imgres = int(request.POST.get('imgHvga')) # 图片分辨率
  2392. tt = int(request.POST.get('timingLength')) # 定时时长
  2393. st = int(request.POST.get('begin')) # 开始时间
  2394. et = int(request.POST.get('end')) # 结束时间
  2395. collt = int(request.POST.get('dropTime')) # 落虫时间
  2396. htim = int(request.POST.get('calefactionTime')) # 加热时间
  2397. hst = int(request.POST.get('calefactionTemperature')) # 加热温度
  2398. tph = int(request.POST.get('highLimit')) # 加热仓温度上限
  2399. tpl = int(request.POST.get('lowLimit')) # 加热仓温度下限加热仓温度下限
  2400. datt = int(request.POST.get('dataUpTime')) # 数据上传时间间隔
  2401. shake_sec = request.POST.get('shake_sec') # 数据上传时间间隔
  2402. print("设备id:equip_id:", equip_id)
  2403. print("定时模式ts:", ts)
  2404. # print("imgUpNum:",imgUpNum)
  2405. # print("图片分辨率imgres:", imgres)
  2406. print("定时时长tt:", tt)
  2407. print("开始时间st:", st)
  2408. print("结束时间et:", et)
  2409. print("落虫时间collt:", collt)
  2410. print("加热时间htim:", htim)
  2411. print("加热温度hst:", hst)
  2412. print("加热仓温度上限tph:", tph)
  2413. print("加热仓温度下限tpl:", tpl)
  2414. print("数据上传时间间隔datt:", datt)
  2415. topic = "/yfkj/cbd/sub/"+equip_id # [1:-1]
  2416. print("topic:", topic)
  2417. print("--------->>",shake_sec)
  2418. if shake_sec != None:
  2419. payload = {"cmd": "paramconf",
  2420. "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt,"shake_sec":int(shake_sec),
  2421. "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}}
  2422. elif shake_sec == None:
  2423. payload = {"cmd": "paramconf",
  2424. "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt,
  2425. "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}}
  2426. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2427. print(json.dumps(payload, indent=1))
  2428. if ip == "172.16.220.3":
  2429. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2430. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2431. else:
  2432. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2433. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2434. print("res.status_code:", type(res.status_code))
  2435. if res.status_code == 200:
  2436. data = "0"
  2437. return HttpResponse(data)
  2438. else:
  2439. data = "1"
  2440. return HttpResponse(data)
  2441. elif req == "read":
  2442. print("下发查询!")
  2443. topicid = request.POST.get('topicid') # [1:-1]
  2444. # 读取参数:
  2445. kind = request.POST.get('kind')
  2446. payload = {"cmd": "read", "ext": {"type": kind}}
  2447. print(type(topicid))
  2448. topic = "/yfkj/cbd/sub/"+topicid
  2449. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2450. print(json.dumps(payload, indent=1))
  2451. if ip == "172.16.220.3":
  2452. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2453. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2454. else:
  2455. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2456. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2457. print("res.status_code:", type(res.status_code))
  2458. if res.status_code == 200:
  2459. data = "0"
  2460. return HttpResponse(data)
  2461. else:
  2462. data = "1"
  2463. return HttpResponse(data)
  2464. elif req == "ctrl":
  2465. print("下发控制!")
  2466. topicid = request.POST.get('topicid') # [1:-1]
  2467. topic = "/yfkj/cbd/sub/"+topicid
  2468. # 读取参数:
  2469. cmd = request.POST.get('cmd')
  2470. if cmd == "update" or cmd == "reboot":
  2471. payload = {"cmd":cmd}
  2472. elif cmd == "ctrl":
  2473. ctrl_type = request.POST.get('type')
  2474. if ctrl_type == "takephoto" or ctrl_type == "turn":
  2475. payload = {"cmd": cmd, "ext": {"type": ctrl_type}}
  2476. elif ctrl_type == "up" or ctrl_type == "down":
  2477. data = request.POST.get('data')
  2478. payload = {"cmd": cmd, "ext": {"type": ctrl_type,"data":data}}
  2479. elif cmd == "screen1":
  2480. payload = {"cmd":"switch","ext":{"boot":1}}
  2481. elif cmd == "screen0":
  2482. payload = {"cmd":"switch","ext":{"boot":0}}
  2483. elif cmd == "workmode":
  2484. work_type = request.POST.get('type')
  2485. if work_type == "0":
  2486. payload = {"cmd":"workmode","ext":{"asleep":1,"common":0,"power":0}}
  2487. elif work_type == "1":
  2488. payload = {"cmd":"workmode","ext":{"asleep":0,"common":1,"power":0}}
  2489. elif work_type == "2":
  2490. payload = {"cmd":"workmode","ext":{"asleep":0,"common":0,"power":1}}
  2491. elif cmd == "shake":
  2492. ws = request.POST.get('ws')
  2493. payload = {"cmd":"shake","ext":{"ws":int(ws)}}
  2494. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2495. print(json.dumps(payload, indent=1))
  2496. if ip == "172.16.220.3":
  2497. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2498. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2499. else:
  2500. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2501. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2502. print("res.status_code:", type(res.status_code))
  2503. if res.status_code == 200:
  2504. data = "0"
  2505. return HttpResponse(data)
  2506. else:
  2507. data = "1"
  2508. return HttpResponse(data)
  2509. elif req == "ip":
  2510. print("下发修改IP")
  2511. topicid = request.POST.get('topicid') # [1:-1]
  2512. topic = "/yfkj/cbd/sub/"+topicid
  2513. # 获取输入的要修改的IP地址
  2514. modifi_url = request.POST.get('url')
  2515. photo_url = request.POST.get('photo_url')
  2516. modifi_port = request.POST.get('port')
  2517. print("modifi_url:",modifi_url)
  2518. print("photo_url:",photo_url)
  2519. print("modifi_port:",modifi_port)
  2520. # 修改设备的IP
  2521. payload_1 = {"cmd":"serverconf",
  2522. "ext":{
  2523. "ip":modifi_url,
  2524. "port":modifi_port,
  2525. "sub":"/yfkj/cbd/sub/",
  2526. "pub":"/yfkj/cbd/pub/",
  2527. "lastwill":"/yfkj/cbd/offline/",
  2528. "uid":"",
  2529. "pwd":"",
  2530. "qos":0,
  2531. "keepalive":60
  2532. }
  2533. }
  2534. # 修改设备上传图片的IP
  2535. payload_2 = {"cmd":"hostconf",
  2536. "ext":{
  2537. "username":"",
  2538. "url":photo_url,
  2539. "password":"",
  2540. "length":0
  2541. }
  2542. }
  2543. cmd_1 = {"topic": topic, "payload": json.dumps(payload_1), 'qos': 1}
  2544. cmd_2 = {"topic": topic, "payload": json.dumps(payload_2), 'qos': 1}
  2545. if ip == "172.16.220.3":
  2546. res_1 = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2547. data=json.dumps(cmd_1, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2548. res_2 = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2549. data=json.dumps(cmd_2, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2550. else:
  2551. res_1 = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2552. data=json.dumps(cmd_1, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2553. res_2 = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2554. data=json.dumps(cmd_2, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2555. if res_1.status_code == 200 and res_2.status_code == 200:
  2556. print("修改成功")
  2557. data = "0"
  2558. return HttpResponse(data)
  2559. else:
  2560. print("修改失败")
  2561. data = "1"
  2562. return HttpResponse(data)
  2563. elif req == "setimei":
  2564. print("修改设备号!")
  2565. e_id = request.POST.get('e_id') # [1:-1]
  2566. # 读取参数:
  2567. newimei = request.POST.get('newimei')
  2568. payload = {"cmd":"setimei","ext":{"imei":newimei}}
  2569. topic = "/yfkj/cbd/sub/"+e_id
  2570. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2571. print(json.dumps(payload, indent=1))
  2572. if ip == "172.16.220.3":
  2573. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2574. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2575. else:
  2576. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2577. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2578. print("res.status_code:", type(res.status_code))
  2579. if res.status_code == 200:
  2580. data = "0"
  2581. return HttpResponse(data)
  2582. else:
  2583. data = "1"
  2584. return HttpResponse(data)
  2585. # 设备手动绑定sim卡
  2586. class Equip_Simiccid(ListView):
  2587. def get(self,request):
  2588. pass
  2589. def post(self,request):
  2590. e_id = request.POST.get("e_id")
  2591. iccid = request.POST.get("iccid")
  2592. equip_obj = Equip.objects.get(equip_id=e_id)
  2593. if equip_obj.equip_type_id == 3:
  2594. cbd_obj = CBDstatus.objects.get(equip_id=e_id)
  2595. cbd_obj.simid = iccid
  2596. cbd_obj.save()
  2597. elif equip_obj.equip_type_id == 7:
  2598. cbd_obj = BZYstatus.objects.get(equip_id=e_id)
  2599. cbd_obj.simid = iccid
  2600. cbd_obj.save()
  2601. return HttpResponse("0")
  2602. # 测报灯管理视图:
  2603. class CbdBatchOperate(ListView):
  2604. def get(self, request):
  2605. nums = CBDstatus.objects.all().count()
  2606. cbdgroup = Group.objects.get(name='测报灯用户')
  2607. user_list = MyUser.objects.filter(groups=cbdgroup)
  2608. # for i in user_list:
  2609. # print("--------->>",i.username)
  2610. return render(request, 'equipmanage/cbdBatchOperate.html', context={"nums": nums,"user_list":user_list})
  2611. # 测报灯批量操作
  2612. class CBD_Mqtt_All(ListView):
  2613. def get(self, request):
  2614. pass
  2615. def post(self, request):
  2616. print("mqtt-post!")
  2617. cmd = request.POST.get('cmd')
  2618. eidlist = request.POST.get('eidlist')
  2619. eidlist = json.loads(eidlist)
  2620. # print("设备列表",eval(eidlist))
  2621. if cmd == "read":
  2622. print("批量查询!")
  2623. for i in eidlist:
  2624. # 读取参数:
  2625. topic = "/yfkj/cbd/sub/"+ i
  2626. payload = {"cmd": "read", "ext": {"type": "status"}}
  2627. dat = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2628. print("-------------------->>",dat)
  2629. if ip == "172.16.220.3":
  2630. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2631. data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2632. else:
  2633. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2634. data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2635. print("res.status_code:", type(res.status_code))
  2636. if res.status_code == 200:
  2637. data = "0"
  2638. return HttpResponse(data)
  2639. else:
  2640. data = "1"
  2641. return HttpResponse(data)
  2642. elif cmd == "update":
  2643. print("批量升级!")
  2644. for i in eidlist:
  2645. # 读取参数:
  2646. topic = "/yfkj/cbd/sub/"+ i
  2647. payload = {"cmd":"update"}
  2648. dat = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2649. if ip == "172.16.220.3":
  2650. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2651. data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2652. else:
  2653. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2654. data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2655. print("res.status_code:", type(res.status_code))
  2656. if res.status_code == 200:
  2657. data = "0"
  2658. return HttpResponse(data)
  2659. else:
  2660. data = "1"
  2661. return HttpResponse(data)
  2662. elif cmd == "reboot":
  2663. print("批量重启!")
  2664. for i in eidlist:
  2665. # 读取参数:
  2666. topic = "/yfkj/cbd/sub/"+ i
  2667. payload = {"cmd":"reboot"}
  2668. dat = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2669. if ip == "172.16.220.3":
  2670. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2671. data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2672. else:
  2673. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2674. data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2675. print("res.status_code:", type(res.status_code))
  2676. if res.status_code == 200:
  2677. data = "0"
  2678. return HttpResponse(data)
  2679. else:
  2680. data = "1"
  2681. return HttpResponse(data)
  2682. # from socket_client import client
  2683. # 气象设备管理视图:
  2684. def equipmanage_qx(request):
  2685. # User_Log.objects.create(log_user=request.user.username,
  2686. # log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-气象设备')
  2687. # equip_id = request.POST.get('equip_id')
  2688. # print('equip_id:', equip_id)
  2689. # data = {'client_id': '1001', 'cmd': 'test', 'ds': 1}
  2690. # if equip_id == '1001':
  2691. # sendmsg = json.dumps(data)
  2692. # client.send(sendmsg.encode("utf-8"))
  2693. # client.close()
  2694. return render(request, 'equipmanage/equipmanage_qx.html', context={})
  2695. # 农药残留管理视图:
  2696. def equipmanage_nycl(request):
  2697. User_Log.objects.create(log_user=request.user.username,
  2698. log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-农药残留')
  2699. return render(request, 'equipmanage/equipmanage_nycl.html', context={})
  2700. # 远程升级:
  2701. from django.http.response import StreamingHttpResponse
  2702. class Update(ListView):
  2703. def get(self, request):
  2704. print("请求远程升级!")
  2705. imei = request.GET.get('imei')
  2706. print("imei:", imei)
  2707. version = request.GET.get('version')
  2708. print("version:", version)
  2709. device_key = request.GET.get('device_key')
  2710. print("device_key:", device_key)
  2711. firmware_name = request.GET.get('firmware_name')
  2712. print("firmware_name:", firmware_name)
  2713. # 转仓测报灯:
  2714. if "CBD_TURN" in firmware_name:
  2715. # bin_file = 'D:/update/cbd_bin/cbd_Air202_roll_update.bin'
  2716. bin_file = 'update/cbd_bin/cbd_turn.bin'
  2717. # 翻板测报灯:
  2718. elif "CBD_ROLLOVER_TASK" in firmware_name:
  2719. bin_file = 'update/cbd_bin/cbd_rollover.bin'
  2720. # 翻板 ykm-rtu测报灯:
  2721. elif "CBD_RTU" in firmware_name:
  2722. bin_file = 'update/cbd_bin/cbd_rtu.bin'
  2723. # 翻板 yf-rtu测报灯:
  2724. elif "ACCBD_YFRTU" in firmware_name:
  2725. bin_file = 'update/cbd_bin/cbd_yfrtu.bin'
  2726. # 翻板平移-垂直拍照测报灯:
  2727. elif "CBD_MV" in firmware_name:
  2728. bin_file = 'update/cbd_bin/cbd_mv.bin'
  2729. # 震动平铺 yf-rtu测报灯:
  2730. elif "DCCBD_YFRTU" in firmware_name:
  2731. bin_file = 'update/cbd_bin/dccbd_yfrtu.bin'
  2732. # 直流转盘物联网测报灯
  2733. elif "DCCBD_ZP" in firmware_name:
  2734. bin_file = 'update/cbd_bin/dccbd_zp.bin'
  2735. # 物联网杀虫灯v41:
  2736. elif "SCD_TASK" in firmware_name:
  2737. bin_file = 'update/scd_bin/scd_Air800_update.bin'
  2738. # 物联网杀虫灯v42:
  2739. elif "SCD_MODULE" in firmware_name:
  2740. bin_file = 'update/scd_bin/scd_module_update.bin'
  2741. # 杀虫灯2.0
  2742. elif "SCD_IOT" in firmware_name:
  2743. bin_file = 'update/scd_bin/scd_iot.bin'
  2744. # 自清虫杀虫灯
  2745. elif "SCD_MODULE_ZQC" in firmware_name:
  2746. bin_file = 'update/scd_bin/scd_module_zqc_update.bin'
  2747. # 直流物联网测报灯+海康摄像头:双限位
  2748. elif "DCCBD_HK" in firmware_name:
  2749. bin_file = 'update/cbd_bin/dccbd_hk.bin'
  2750. # 直流物联网测报灯+海康摄像头:推杆电机
  2751. elif "DCCBD-TG_HK" in firmware_name:
  2752. bin_file = 'update/cbd_bin/dccbd-tg_hk.bin'
  2753. # 依科曼测报灯二代RTU--配DC-CBD
  2754. elif "CBD_YKM_RTU" in firmware_name:
  2755. bin_file = 'update/cbd_bin/cbd_ykm_rtu.bin'
  2756. # 高空测报灯V1.0
  2757. elif "DC_CBD_GK" in firmware_name:
  2758. bin_file = 'update/cbd_bin/dc_cbd_gk.bin'
  2759. # 海康测报灯
  2760. elif "DC_CBD_HK" in firmware_name:
  2761. bin_file = 'update/cbd_bin/cbd_yf_hk.bin'
  2762. # 测报灯4.0
  2763. elif "DCCBD-2_HK" in firmware_name:
  2764. bin_file = 'update/cbd_bin/dccbd-2_hk.bin'
  2765. # 测报灯4.0转盘
  2766. elif "CBDV4-ZP" in firmware_name:
  2767. bin_file = 'update/cbd_bin/dccbdv4_zp.bin'
  2768. # 测报灯1.0高空无转盘
  2769. elif "DCCBD_GK" in firmware_name:
  2770. bin_file = 'update/cbd_bin/dccbd_gk.bin'
  2771. # 糖醋测报
  2772. elif "TC_CBD_HK" in firmware_name:
  2773. bin_file = 'update/cbd_bin/tc_cbd_hk.bin'
  2774. # 简易高空
  2775. elif "CBDV4-gk" in firmware_name:
  2776. bin_file = 'update/cbd_bin/cbd_gk_sapmle.bin'
  2777. # 海康4G测报灯
  2778. elif "CBD_STM32_HKV1" in firmware_name:
  2779. bin_file = 'update/cbd_bin/cbd_stm32_hk.rbl'
  2780. # ---------性诱设备--------------
  2781. elif "SEX_TRAP_1" in firmware_name:
  2782. bin_file = 'update/xy_1_bin/SEX_TRAP_1_Update.bin'
  2783. # ---------孢子仪--------------
  2784. # 孢子仪2.0
  2785. elif "BZY-V20" in firmware_name:
  2786. bin_file = 'update/bzy_bin/bzy-v20.bin'
  2787. elif "BZY-V21" in firmware_name:
  2788. bin_file = 'update/bzy_bin/bzy-v21.bin'
  2789. # ---------气象站--------------
  2790. elif "qxz_1.0.0" in firmware_name:
  2791. bin_file = 'update/qxz_bin/qxz.rbl'
  2792. # return HttpResponse("www.yfznscd.com/update/qxz_bin/qxz.rbl")
  2793. reponse = HttpResponse("www.yfznscd.com/update/qxz_bin/qxz.rbl", content_type='text/plain')
  2794. # reponse['content_Length'] = size
  2795. # reponse['Transfer-Encoding'] = 'chunked'
  2796. return reponse
  2797. # size = os.path.getsize(bin_file)
  2798. # print("size:", size)
  2799. # with open(bin_file, 'rb') as f:
  2800. # reponse = HttpResponse(
  2801. # f.read(), content_type='text/plain')
  2802. # reponse['content_Length'] = size
  2803. # # reponse['Transfer-Encoding'] = 'chunked'
  2804. # return reponse
  2805. size = os.path.getsize(bin_file)
  2806. print("size:", size)
  2807. with open(bin_file, 'rb') as f:
  2808. reponse = HttpResponse(
  2809. f.read(), content_type='application/octet-stream')
  2810. reponse['content_Length'] = size
  2811. return reponse
  2812. # 气象站设备管理类视图:
  2813. class QXZManage_View(ListView):
  2814. def get(self, request):
  2815. current_user = request.session.get('username')
  2816. current_user = MyUser.objects.get(username=current_user)
  2817. if current_user.is_superuser == True:
  2818. role = "superuser"
  2819. else:
  2820. role = "user"
  2821. return render(request, 'equipmanage/equipmanage_qxz.html', context={"role":role})
  2822. # 监控设备列表接口
  2823. class JK_Page(ListView):
  2824. def get(self,request):
  2825. current_user = request.user.username
  2826. print("current_user:", current_user)
  2827. current_user = MyUser.objects.get(username=current_user)
  2828. page = request.GET.get('page')
  2829. page = int(page)
  2830. f_id = request.GET.get('f_id')
  2831. print("f_id:", f_id)
  2832. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2833. # 用户
  2834. if f_id != "":
  2835. equip_list = JKdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  2836. else:
  2837. equip_list = JKdata.objects.filter(equip_id__equip_user=current_user)
  2838. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2839. # 代理商
  2840. if f_id != "":
  2841. equip_list = JKdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  2842. else:
  2843. equip_list = JKdata.objects.filter(equip_id__equip_agency=current_user.user_agency)
  2844. else:
  2845. # 管理员
  2846. if f_id != "":
  2847. equip_list = JKdata.objects.filter(equip_id__equip_id__contains=f_id)
  2848. else:
  2849. equip_list = JKdata.objects.all()
  2850. e_ids = []
  2851. # url = "https://open.ys7.com/api/lapp/device/list"
  2852. # live_data = {"accessToken":"at.a2b2puqk6ydg7ejkcuxokemw9dnixut5-23032uf0io-1almbb9-nfdzsfdnr"}
  2853. # live_res = requests.post(url,data=live_data)
  2854. # live_res = eval(live_res.text)
  2855. # print("live_res2:",live_res)
  2856. # _list = []
  2857. for x in equip_list:
  2858. # _list.append(x.equip_id)
  2859. # for i in live_res["data"]:
  2860. # if i["deviceSerial"] == x.equip_id:
  2861. n_d = {"equip_name":x.equip_id.equip_name, "equip_id":x.equip_id_id,"photo_num":JKphoto.objects.filter(equip_id=x.equip_id_id).count(),"status":x.is_online,
  2862. "jktype":x.jk_type}
  2863. e_ids.append(n_d)
  2864. # print("==================>>",_list)
  2865. nums = len(e_ids)
  2866. # print(nums)
  2867. ids = e_ids[(10*(page-1)):(page*10)]
  2868. data = {'ids': ids, 'nums': nums}
  2869. print(data)
  2870. data = json.dumps(data, cls=CJSONEncoder)
  2871. return HttpResponse(data)
  2872. def post(self,request):
  2873. pass
  2874. # 监控设备管理类视图1:
  2875. class JKManage_View1(ListView):
  2876. def get(self, request):
  2877. return render(request, 'equipmanage/equipmanage_ctrl_jk.html', context={})
  2878. # 监控设备管理类视图:
  2879. class JKManage_View(ListView):
  2880. def get(self, request):
  2881. return render(request, 'equipmanage/equipmanage_jk.html', context={})
  2882. # 硬盘录像机接口
  2883. class NVR_View(ListView):
  2884. def get(self, request):
  2885. return render(request, 'equipmanage/equipmanage_nvr.html', context={})
  2886. def post(self,request):
  2887. e_id = request.POST.get("e_id")
  2888. jk_token = JKdata.objects.get(equip_id=e_id).jk_token
  2889. data = {"jk_token":jk_token}
  2890. data = json.dumps(data)
  2891. return HttpResponse(data)
  2892. # 获取监控播放地址视图:
  2893. class JK_View(ListView):
  2894. def get(self, request):
  2895. imei = request.GET.get('imei')
  2896. x = JKdata.objects.get(equip_id_id=imei)
  2897. i = JKtoken.objects.get(account="ysy_haikang")
  2898. live_list = []
  2899. # 用token和设备id获取直播地址
  2900. live_url = 'https://open.ys7.com/api/lapp/live/address/get'
  2901. live_data = {"accessToken":i.token,
  2902. "source":"%s:1"%x.equip_id}
  2903. print("=================live_data:",live_data)
  2904. live_res = requests.post(live_url,data=live_data)
  2905. # print("-------------------------------:",type(live_res.text))
  2906. live_res = eval(live_res.text)
  2907. print("live_res:",live_res)
  2908. # 如果返回200 则返回直播地址
  2909. if live_res['code'] == "200":
  2910. print("token获取成功")
  2911. live_list.append(live_res)
  2912. # 如果返回其他 则调用获取token之后重新获取直播地址并返回
  2913. else:
  2914. print("token过期重新获取")
  2915. token_url = 'https://open.ys7.com/api/lapp/token/get'
  2916. token_data = {"appKey":"e8ec0d52b4b14628a3daf4b88cbcca2a",
  2917. "appSecret":"d4565abea1cd0b90b59917111dcb37bd"}
  2918. token_res = requests.post(token_url,data=token_data,timeout=3)
  2919. print("token_res1:",token_res.text)
  2920. token_res = eval(token_res.text)
  2921. if token_res["code"] == "200":
  2922. # JKdata.objects.all().update(jk_token=token_res["data"]["accessToken"],upl_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
  2923. i.jk_token = token_res["data"]["accessToken"]
  2924. i.upl_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  2925. i.save()
  2926. token = i.token
  2927. print("-----------------token保存成功")
  2928. live_url = 'https://open.ys7.com/api/lapp/live/address/get'
  2929. live_data = {"accessToken":i.token,
  2930. "source":"%s:1"%x.equip_id}
  2931. live_res = requests.post(live_url,data=live_data)
  2932. live_res = eval(live_res.text)
  2933. print("live_res2:",live_res)
  2934. live_list.append(live_res)
  2935. data = live_list
  2936. print("-----------============data:",data)
  2937. data = json.dumps(data, cls=CJSONEncoder)
  2938. return HttpResponse(data)
  2939. def post(self, request):
  2940. jk_id = request.POST.get('id')
  2941. # control = request.POST.get('control')
  2942. # takephoto = request.POST.get('takephoto')
  2943. ctrl = request.POST.get('ctrl')
  2944. imei = request.POST.get('imei')
  2945. accessToken = JKtoken.objects.get(account="ysy_haikang").token
  2946. print("accessToken:",accessToken)
  2947. if imei:
  2948. if Equip.objects.filter(equip_id=imei).exists():
  2949. return HttpResponse("0")
  2950. else:
  2951. # 得到设备类型实例:
  2952. equip_t = Equip_type.objects.get(type_id=6)
  2953. try:
  2954. e_id = Equip.objects.create(equip_id=imei, equip_type=equip_t)
  2955. print("<-----监控设备添加成功!----->")
  2956. return HttpResponse("1")
  2957. except:
  2958. print("<-----监控设备添加失败!----->")
  2959. if ctrl == "takephoto":
  2960. url = 'https://open.ys7.com/api/lapp/device/capture'
  2961. channelNo = '1'
  2962. # accessToken = 'at.bvf3fnx87pzvs674ao0g27mg2f2lmvy1-8he8ughpi6-0oqqehv-hcby1sqgx'
  2963. data = {'accessToken':accessToken, 'deviceSerial':jk_id, 'channelNo':channelNo}
  2964. res = requests.post(url,data=data)
  2965. # res = json.loads(res.text)
  2966. print("截图返回结果为:",json.loads(res.text))
  2967. return HttpResponse(res.text)
  2968. # pic_dir = "/home/web/yfwlw/jk_photo/" + jk_id + "/" + "takephoto.jpg"
  2969. # print("pic_dir:",pic_dir)
  2970. # if os.path.exists(pic_dir) == False:
  2971. # os.makedirs(pic_dir)
  2972. # img_src = res["data"]["picUrl"]
  2973. # response = requests.get(img_src)
  2974. # image = Image.open(BytesIO(response.content))
  2975. # print("pic_dir:",pic_dir)
  2976. # image.save(pic_dir)
  2977. # data = {"image_url":"jk_photo/"+ jk_id + "/" + "takephoto.jpg"}
  2978. # data = json.dumps(data, cls=CJSONEncoder)
  2979. # return HttpResponse(data)
  2980. # 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距
  2981. if ctrl == "move":
  2982. print("-------球机云台控制开始!")
  2983. dire = request.POST.get('movenum')
  2984. ctrl_url = 'https://open.ys7.com/api/lapp/device/ptz/start'
  2985. # accessToken = 'at.bvf3fnx87pzvs674ao0g27mg2f2lmvy1-8he8ughpi6-0oqqehv-hcby1sqgx'
  2986. channelNo = '1'
  2987. speed = '1'
  2988. data = {'accessToken':accessToken, 'deviceSerial':jk_id, 'channelNo':channelNo, 'speed':speed, 'direction':dire}
  2989. res1 = requests.post(ctrl_url,data=data)
  2990. elif ctrl == "stop":
  2991. print("-------球机云台控制结束!")
  2992. ctrl_url = 'https://open.ys7.com/api/lapp/device/ptz/stop'
  2993. # accessToken = 'at.bvf3fnx87pzvs674ao0g27mg2f2lmvy1-8he8ughpi6-0oqqehv-hcby1sqgx'
  2994. channelNo = '1'
  2995. data = {'accessToken':accessToken, 'deviceSerial':jk_id, 'channelNo':channelNo}
  2996. res2 = requests.post(ctrl_url,data=data)
  2997. # print('res1:',res1)
  2998. # print('-----------')
  2999. # print('res2:',res2)
  3000. # data = {'res1':res1, 'res2':res2}
  3001. # data = json.dumps(data, cls=CJSONEncoder)
  3002. return HttpResponse("1")
  3003. # 监控定时拍照图片
  3004. class Jk_Image(ListView):
  3005. def get(self,request):
  3006. imei = request.GET.get('imei')
  3007. return render(request, 'equipmanage/jk_image.html', context={"imei":imei})
  3008. def post(self,request):
  3009. imei = request.POST.get('imei')
  3010. page = int(request.POST.get("page"))
  3011. current_user = request.user.username
  3012. current_user = MyUser.objects.get(username=current_user)
  3013. nums = JKphoto.objects.filter(equip_id=imei).count()
  3014. jkphoto = JKphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
  3015. f_tbegin = request.POST.get('begin')
  3016. f_tend = request.POST.get('end')
  3017. # 查询时间段
  3018. if f_tbegin:
  3019. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  3020. enddate = re.findall(r"\d+\.?\d*", f_tend)
  3021. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  3022. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  3023. print("start_date:", start_date)
  3024. print("end_date:", end_date)
  3025. nums = JKphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date)).count()
  3026. jkphoto = JKphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date))[(8*(page-1)):(page*8)]
  3027. return render(request, 'equipmanage/jk_imageList.html', context={"jkphoto":jkphoto,"nums":nums,"current_user":current_user})
  3028. # 删除监控定时拍照图片
  3029. class JkImage_Del(ListView):
  3030. def get(self,request):
  3031. pass
  3032. def post(self,request):
  3033. print("-----image delete!-----")
  3034. imei = request.POST.get('imei')
  3035. img_name = request.POST.get('addr')
  3036. print("img_name:",img_name)
  3037. if os.path.exists(img_name) == True:
  3038. # 删除图片文件
  3039. os.remove(img_name)
  3040. # 删除数据库照片列表中,照片路径:
  3041. try:
  3042. JKphoto.objects.filter(equip_id=imei, addr=img_name).delete()
  3043. print("-----image delete ok!-----")
  3044. data = "1"
  3045. return HttpResponse(data)
  3046. except:
  3047. print("-----image delete failed!-----")
  3048. data = "0"
  3049. return HttpResponse(data)
  3050. else:
  3051. # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
  3052. # 因此不管何时都删除数据库路径
  3053. try:
  3054. JKphoto.objects.filter(equip_id=imei, addr=img_name).delete()
  3055. except:
  3056. pass
  3057. print("-----image not exist!-----")
  3058. data = "0"
  3059. return HttpResponse(data)
  3060. # 孢子仪设备管理类视图:
  3061. class BZYManage_View(ListView):
  3062. def get(self, request):
  3063. current_user = request.session.get('username')
  3064. current_user = MyUser.objects.get(username=current_user)
  3065. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  3066. print("---用户")
  3067. nums = BZYstatus.objects.filter(
  3068. equip_id__equip_user=current_user).count()
  3069. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  3070. print("---代理商")
  3071. nums = BZYstatus.objects.filter(
  3072. equip_id__equip_agency=current_user.user_agency).count()
  3073. else:
  3074. print("---管理员")
  3075. nums = BZYstatus.objects.all().count()
  3076. User_Log.objects.create(log_user=current_user,
  3077. log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-孢子仪')
  3078. return render(request, 'equipmanage/equipmanage_bzy.html', context={"nums": nums})
  3079. def post(self, request):
  3080. if request.is_ajax():
  3081. print("ajax-post!")
  3082. req = request.POST.get('req')
  3083. print("req:", req)
  3084. # 请求数据:
  3085. if req == "dat":
  3086. print("---请求数据的post!")
  3087. page = int(request.POST.get('page'))
  3088. print("page:", page)
  3089. current_user = request.session.get('username')
  3090. print("current_user:", current_user)
  3091. current_user = MyUser.objects.get(username=current_user)
  3092. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  3093. print("---不是管理员")
  3094. sta1 = BZYstatus.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)]
  3095. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  3096. print("---代理商")
  3097. sta1 = BZYstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
  3098. else:
  3099. print("---管理员")
  3100. sta1 = BZYstatus.objects.all()[(10*(page-1)):(page*10)]
  3101. # sta2 = [{"bzy_status": x.bzy_status, "upl_time": x.upl_time,
  3102. # "paramconf": x.paramconf, "serverconf": x.serverconf,
  3103. # "equip_name": x.equip_id.equip_name,
  3104. # "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  3105. sta2 = [{"bzy_status": x.bzy_status, "upl_time": x.upl_time, "is_online":x.is_online,
  3106. "equip_name": x.equip_id.equip_name, "off_time":x.off_time} for x in sta1]
  3107. data = json.dumps(sta2, cls=CJSONEncoder, indent=4)
  3108. # print("data:",data)
  3109. return HttpResponse(data)
  3110. elif req == "filter":
  3111. f_name = request.POST.get('ename')
  3112. print("f_name:", f_name)
  3113. f_id = request.POST.get('f_id')
  3114. print("f_id:", f_id)
  3115. page = int(request.POST.get('page'))
  3116. print("page:", page)
  3117. # 读取当前用户:
  3118. current_user = request.session.get('username')
  3119. print("current_user:", current_user)
  3120. current_user = MyUser.objects.get(username=current_user)
  3121. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  3122. print("---不是管理员")
  3123. if f_name == "" and f_id == '':
  3124. sta1 = BZYstatus.objects.filter(
  3125. equip_id__equip_user=current_user)
  3126. elif f_name == "" and f_id != '':
  3127. sta1 = BZYstatus.objects.filter(
  3128. equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  3129. elif f_name != "" and f_id == '':
  3130. sta1 = BZYstatus.objects.filter(
  3131. equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name)
  3132. elif f_name != "" and f_id != '':
  3133. sta1 = BZYstatus.objects.filter(
  3134. equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  3135. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  3136. print("---代理商")
  3137. if f_name == "" and f_id == '':
  3138. sta1 = BZYstatus.objects.filter(
  3139. equip_id__equip_agency=current_user.user_agency)
  3140. elif f_name == "" and f_id != '':
  3141. sta1 = BZYstatus.objects.filter(
  3142. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  3143. elif f_name != "" and f_id == '':
  3144. sta1 = BZYstatus.objects.filter(
  3145. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name)
  3146. elif f_name != "" and f_id != '':
  3147. sta1 = BZYstatus.objects.filter(
  3148. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  3149. else:
  3150. print("---管理员")
  3151. if f_name == "" and f_id == '':
  3152. sta1 = BZYstatus.objects.all()
  3153. elif f_name == "" and f_id != '':
  3154. sta1 = BZYstatus.objects.filter(
  3155. equip_id__equip_id__contains=f_id)
  3156. elif f_name != "" and f_id == '':
  3157. sta1 = BZYstatus.objects.filter(
  3158. equip_id__equip_name__contains=f_name)
  3159. elif f_name != "" and f_id != '':
  3160. sta1 = BZYstatus.objects.filter(
  3161. equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  3162. # sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,
  3163. # "paramconf": x.paramconf, "serverconf": x.serverconf,
  3164. # "equip_name": x.equip_id.equip_name,
  3165. # "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  3166. sta2 = [{"bzy_status": x.bzy_status, "upl_time": x.upl_time, "is_online": x.is_online,
  3167. "off_time": x.off_time, "equip_name": x.equip_id.equip_name} for x in sta1]
  3168. data = {"dat": sta2[(10*(page-1)):(page*10)],
  3169. "nums": sta1.count()}
  3170. data = json.dumps(data, cls=CJSONEncoder)
  3171. # print("data:",data)
  3172. return HttpResponse(data)
  3173. elif req == "netconf":
  3174. equip_id = request.POST.get('id')
  3175. print("equip_id:", equip_id)
  3176. # 读取当前设备的参数配置信息:
  3177. sta1 = BZYstatus.objects.filter(equip_id=equip_id)
  3178. for x in sta1:
  3179. sta2 = {"netconf": x.netconf}
  3180. data = json.dumps(sta2, cls=CJSONEncoder)
  3181. print("配置信息的data:", data)
  3182. return HttpResponse(data)
  3183. # 孢子仪设备管理详情类视图:
  3184. class BZYManage_detail_View(ListView):
  3185. def get(self, request):
  3186. equip_id = request.GET.get('id')
  3187. current_user = request.session.get('username')
  3188. # print("type :current_user",type(current_user))
  3189. current_user = MyUser.objects.get(username=current_user)
  3190. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  3191. print("---用户")
  3192. nums = BZYdata.objects.filter(
  3193. equip_id__equip_user=current_user).count()
  3194. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  3195. print("---代理商")
  3196. nums = BZYdata.objects.filter(
  3197. equip_id__equip_agency=current_user.user_agency).count()
  3198. else:
  3199. print("---管理员")
  3200. nums = BZYdata.objects.all().count()
  3201. iccid = BZYstatus.objects.get(equip_id=equip_id).simid
  3202. User_Log.objects.create(log_user=current_user,
  3203. log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-孢子仪详情')
  3204. return render(request, 'equipmanage/equipmanage_bzy_detail.html', context={"equip_id": equip_id, "iccid":iccid})
  3205. def post(self, request):
  3206. equip_id = request.POST.get('id')
  3207. print("请求数据的设备id:", equip_id)
  3208. # 最新数据: status
  3209. sta = BZYstatus.objects.filter(equip_id__equip_id=equip_id)
  3210. for x in sta:
  3211. new_sta = {"bzy_status": x.bzy_status, "upl_time": x.upl_time,
  3212. "equip_name": x.equip_id.equip_name,
  3213. "glass": x.glass, "liquid":x.liquid, "is_online": x.is_online,
  3214. "off_time": x.off_time}
  3215. data = json.dumps(new_sta, cls=CJSONEncoder, indent=4)
  3216. print("data:",data)
  3217. return HttpResponse(data)
  3218. # 孢子仪通信接口:
  3219. class BZY_Mqtt(ListView):
  3220. def get(self, request):
  3221. pass
  3222. def post(self, request):
  3223. print("mqtt-post!")
  3224. req = request.POST.get('req')
  3225. print("req:", req)
  3226. if req == "set":
  3227. equip_id = request.POST.get('id') # 设备id
  3228. # cold_sw = int(request.POST.get('cold')) # 制冷机开关
  3229. wind_sw = int(request.POST.get('wind')) # 风机开关
  3230. coll_time = request.POST.get('colltime') # 采集孢子时间段
  3231. drop_time = int(request.POST.get('drop')) # 采集孢子时间段
  3232. set_temp = int(request.POST.get('stemp')) # 保温仓设定温度
  3233. imgres = request.POST.get('imgres') # 图片分辨率
  3234. datt = int(request.POST.get('takt')) # 数据上传时间间隔
  3235. try:
  3236. cul_time = int(request.POST.get('culTime')) # 设置培养时间
  3237. except:
  3238. cul_time = 12
  3239. print("设备ID:", equip_id)
  3240. # print("制冷机开关:", cold_sw)
  3241. print("风机开关:", wind_sw)
  3242. print("采集孢子时间段:", coll_time)
  3243. # print("采集孢子时间段:", type(coll_time))
  3244. print("保温仓设定温度:", set_temp)
  3245. print("图片分辨率:", imgres)
  3246. print("培养时间:", cul_time)
  3247. print("上传时间间隔:",datt)
  3248. # coll_time = coll_time.replace("\"", "")
  3249. coll_time = eval(coll_time)
  3250. topic = "/yfkj/bzy/s2c/"+equip_id # [1:-1]
  3251. print("topic:", topic)
  3252. payload = {"cmd": "paramconf","ext": {"wind_sw": wind_sw,"coll_time": coll_time,"set_temp": set_temp,"imgres": imgres,"drop_time": drop_time,"datt": datt,"cul_time":cul_time}}
  3253. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  3254. print(json.dumps(payload, indent=1))
  3255. if ip == "172.16.220.3":
  3256. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3257. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3258. else:
  3259. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3260. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3261. print("res.status_code:", type(res.status_code))
  3262. if res.status_code == 200:
  3263. data = "0"
  3264. return HttpResponse(data)
  3265. else:
  3266. data = "1"
  3267. return HttpResponse(data)
  3268. elif req == "read":
  3269. print("下发查询!")
  3270. topicid = request.POST.get('topicid') # [1:-1]
  3271. # 读取参数:
  3272. print(type(topicid))
  3273. payload = {"cmd": "read","type": "status"}
  3274. topic = "/yfkj/bzy/s2c/"+topicid
  3275. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  3276. print(json.dumps(payload, indent=1))
  3277. if ip == "172.16.220.3":
  3278. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3279. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3280. else:
  3281. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3282. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3283. print("res.status_code:", type(res.status_code))
  3284. if res.status_code == 200:
  3285. data = "0"
  3286. return HttpResponse(data)
  3287. else:
  3288. data = "1"
  3289. return HttpResponse(data)
  3290. elif req == "ip":
  3291. print("下发修改IP")
  3292. topicid = request.POST.get('topicid') # [1:-1]
  3293. topic = "/yfkj/bzy/s2c/"+topicid
  3294. # 获取输入的要修改的IP地址
  3295. modifi_url = request.POST.get('url')
  3296. modifi_port = request.POST.get('port')
  3297. uid = request.POST.get('uid')
  3298. pwd = request.POST.get('pwd')
  3299. print("modifi_url:",modifi_url)
  3300. print("modifi_port:",modifi_port)
  3301. # 修改设备的IP
  3302. payload = {"cmd":"netset",
  3303. "mqtt":{
  3304. "ip": modifi_url,
  3305. "port":int(modifi_port),
  3306. "sub":"/yfkj/bzy/s2c/",
  3307. "pub":"/yfkj/bzy/c2s/",
  3308. "lastwill":"/yfkj/bzy/offline/",
  3309. "uid":uid,
  3310. "pwd":pwd,
  3311. "qos":0,
  3312. "keepalive":60
  3313. },
  3314. "ftp":{
  3315. "ip": "120.27.222.26",
  3316. "port":1883,
  3317. "uid":"",
  3318. "pwd":"",
  3319. }
  3320. }
  3321. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  3322. if ip == "172.16.220.3":
  3323. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3324. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3325. else:
  3326. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3327. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3328. if res.status_code == 200:
  3329. print("修改成功")
  3330. data = "0"
  3331. return HttpResponse(data)
  3332. else:
  3333. print("修改失败")
  3334. data = "1"
  3335. return HttpResponse(data)
  3336. elif req == "ctrl":
  3337. print("下发控制!")
  3338. topicid = request.POST.get('topicid') # [1:-1]
  3339. print("=========",topicid)
  3340. topic = "/yfkj/bzy/s2c/"+topicid
  3341. # 读取参数:
  3342. cmd = request.POST.get('cmd')
  3343. print("=============================",cmd)
  3344. if cmd == "update" or cmd == "reboot" or cmd == "poweroff" or cmd == "poweron" or cmd == "coldoff" or cmd == "coldon":
  3345. payload = {"cmd":cmd}
  3346. elif cmd == "ctrl":
  3347. ctrl_type = request.POST.get('type')
  3348. print("========================",ctrl_type)
  3349. if ctrl_type == "takephoto":
  3350. payload = {"cmd": cmd, "ext": {"type": ctrl_type}}
  3351. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  3352. print(json.dumps(payload, indent=1))
  3353. if ip == "172.16.220.3":
  3354. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3355. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3356. else:
  3357. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3358. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3359. print("res.status_code:", type(res.status_code))
  3360. if res.status_code == 200:
  3361. data = "0"
  3362. return HttpResponse(data)
  3363. else:
  3364. data = "1"
  3365. return HttpResponse(data)
  3366. # 此项修改载玻片和培养液更换时间,只存数据库 不做下发处理!!!
  3367. elif req == "glass":
  3368. equip_id = request.POST.get('id') # 设备id
  3369. # 获取载玻片更换时间
  3370. glass = request.POST.get('glass')
  3371. print("载玻片更换时间:", glass)
  3372. sta = BZYstatus.objects.get(equip_id__equip_id=equip_id)
  3373. if glass != "":
  3374. # temporary临时变量
  3375. temporary = sta.glass
  3376. # 判断载玻片更换时间
  3377. if temporary:
  3378. sta.glass = temporary + "#" + glass
  3379. else:
  3380. sta.glass = "#" + glass
  3381. # 只保存最近五次的更换时间
  3382. if len(sta.glass)>55:
  3383. sta.glass = sta.glass[11:]
  3384. sta.save()
  3385. print("载玻片更换时间保存成功")
  3386. data = "0"
  3387. return HttpResponse(data)
  3388. elif req == "liquid":
  3389. equip_id = request.POST.get('id') # 设备id
  3390. # 获取培养液更换时间
  3391. liquid = request.POST.get('liquid')
  3392. print("培养液更换时间:", liquid)
  3393. sta = BZYstatus.objects.get(equip_id__equip_id=equip_id)
  3394. if liquid != "":
  3395. # temporary临时变量
  3396. temporary_1 = sta.liquid
  3397. # 判断培养液更换时间
  3398. if temporary_1:
  3399. sta.liquid = temporary_1 + "#" + liquid
  3400. else:
  3401. sta.liquid = "#" + liquid
  3402. # 只保存最近五次的更换时间
  3403. if len(sta.liquid)>55:
  3404. sta.liquid = sta.liquid[11:]
  3405. sta.save()
  3406. print("培养液更换时间保存成功")
  3407. data = "0"
  3408. return HttpResponse(data)
  3409. # 查询sim卡信息
  3410. elif req == "sim":
  3411. iccid = request.POST.get('iccid')
  3412. resp = get_siminfo(iccid)
  3413. print("查询流量信息为:",resp)
  3414. return HttpResponse(resp)
  3415. # 测报灯设备开放API接口
  3416. class CBD_Mqtt_Set(ListView):
  3417. def get(self, request):
  3418. pass
  3419. def post(self, request):
  3420. print("mqtt-post-api!")
  3421. uid = request.POST.get('uid')
  3422. imei = request.POST.get('imei')
  3423. if equip_validation(uid,imei) == "0":
  3424. # 判断输入参数是否合法
  3425. try:
  3426. ts = int('1') # 锁定时控
  3427. imgres = int(request.POST.get('imgres')) # 图片分辨率
  3428. st = int(request.POST.get('st')) # 开始时间
  3429. et = int(request.POST.get('et')) # 结束时间
  3430. collt = int(request.POST.get('collt')) # 落虫时间
  3431. htim = int(request.POST.get('htim')) # 加热时间
  3432. hst = int(request.POST.get('hst')) # 加热温度
  3433. tph = int(request.POST.get('tph')) # 加热仓温度上限
  3434. tpl = int(request.POST.get('tpl')) # 加热仓温度下限加热仓温度下限
  3435. datt = int(request.POST.get('datt')) # 数据上传时间间隔
  3436. print("定时模式ts:", ts)
  3437. # print("imgUpNum:",imgUpNum)
  3438. print("图片分辨率imgres:", imgres)
  3439. print("开始时间st:", st)
  3440. print("结束时间et:", et)
  3441. print("落虫时间collt:", collt)
  3442. print("加热时间htim:", htim)
  3443. print("加热温度hst:", hst)
  3444. print("加热仓温度上限tph:", tph)
  3445. print("加热仓温度下限tpl:", tpl)
  3446. print("数据上传时间间隔datt:", datt)
  3447. # 参数范围判断
  3448. if imgres not in range(0,3) or st not in range(0,25) or et not in range(0,25) or collt not in range(5,21) or htim not in range(5,21) \
  3449. or hst not in range(75,126) or tph not in range(40,71) or tpl not in range(-5,11) or datt not in range(5,61):
  3450. data = api_code[3]
  3451. data = json.dumps(data)
  3452. print(data)
  3453. return HttpResponse(data)
  3454. except Exception as e:
  3455. print(e)
  3456. data = api_code[1]
  3457. data = json.dumps(data)
  3458. print(data)
  3459. return HttpResponse(data)
  3460. topic = "/yfkj/cbd/sub/"+imei # [1:-1]
  3461. print("topic:", topic)
  3462. payload = {"cmd": "paramconf",
  3463. "ext": {"ts": ts, "st": st, "et": et, "collt": collt,
  3464. "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": imgres}}
  3465. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  3466. print(json.dumps(payload, indent=1))
  3467. if ip == "172.16.220.3":
  3468. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3469. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3470. else:
  3471. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3472. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3473. print("res.status_code:", type(res.status_code))
  3474. print("res.status_code:", res.status_code)
  3475. if res.status_code == 200:
  3476. data = api_code[0]
  3477. data = json.dumps(data)
  3478. print(data)
  3479. return HttpResponse(data)
  3480. else:
  3481. data = api_code[4]
  3482. data = json.dumps(data)
  3483. print(data)
  3484. return HttpResponse(data)
  3485. else:
  3486. data = api_code[2]
  3487. data = json.dumps(data)
  3488. print(data)
  3489. return HttpResponse(data)
  3490. # 测报灯 数据/状态/参数 查询接口
  3491. class CBD_Mqtt_Read(ListView):
  3492. def get(self, request):
  3493. pass
  3494. def post(self, request):
  3495. print("下发查询!")
  3496. uid = request.POST.get('uid')
  3497. imei = request.POST.get('imei')
  3498. kind = request.POST.get('kind')
  3499. print("uid",uid)
  3500. print("imei",imei)
  3501. print("kind",kind)
  3502. if equip_validation(uid,imei) == "0":
  3503. print("验证成功")
  3504. # 读取参数:
  3505. if kind == "status" or kind == "data" or kind == "paramconf":
  3506. payload = {"cmd": "read", "ext": {"type": kind}}
  3507. print(type(imei))
  3508. topic = "/yfkj/cbd/sub/"+imei
  3509. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  3510. print(json.dumps(payload, indent=1))
  3511. if ip == "172.16.220.3":
  3512. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3513. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3514. else:
  3515. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3516. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3517. print("res.status_code:", type(res.status_code))
  3518. if res.status_code == 200:
  3519. data = api_code[0]
  3520. data = json.dumps(data)
  3521. print(data)
  3522. return HttpResponse(data)
  3523. else:
  3524. data = api_code[4]
  3525. data = json.dumps(data)
  3526. print(data)
  3527. return HttpResponse(data)
  3528. else:
  3529. data = api_code[1]
  3530. data = json.dumps(data)
  3531. print(data)
  3532. return HttpResponse(data)
  3533. else:
  3534. data = api_code[2]
  3535. data = json.dumps(data)
  3536. return HttpResponse(data)
  3537. # elif req == "ctrl":
  3538. # print("下发控制!")
  3539. # topicid = request.POST.get('topicid') # [1:-1]
  3540. # topic = "/yfkj/cbd/sub/"+topicid
  3541. # # 读取参数:
  3542. # cmd = request.POST.get('cmd')
  3543. # if cmd == "update" or cmd == "reboot":
  3544. # payload = {"cmd":cmd}
  3545. # elif cmd == "ctrl":
  3546. # ctrl_type = request.POST.get('type')
  3547. # if ctrl_type == "takephoto" or ctrl_type == "turn":
  3548. # payload = {"cmd": cmd, "ext": {"type": ctrl_type}}
  3549. # elif ctrl_type == "up" or ctrl_type == "down":
  3550. # data = request.POST.get('data')
  3551. # payload = {"cmd": cmd, "ext": {"type": ctrl_type,"data":data}}
  3552. # cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  3553. # print(json.dumps(payload, indent=1))
  3554. # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3555. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3556. # print("res.status_code:", type(res.status_code))
  3557. # if res.status_code == 200:
  3558. # data = "0"
  3559. # return HttpResponse(data)
  3560. # else:
  3561. # data = "1"
  3562. # return HttpResponse(data)
  3563. # ------------------------------------------------------------------------------
  3564. # 杀虫灯下发控制API:
  3565. class SCD_Mqtt_Set(ListView):
  3566. def get(self, request):
  3567. pass
  3568. def post(self, request):
  3569. uid = request.POST.get('uid')
  3570. imei = request.POST.get('imei')
  3571. # 用户验证
  3572. if equip_validation(uid,imei) == "0":
  3573. topic = "/yfkj/scd/sub/"+imei
  3574. try:
  3575. ts = int(request.POST.get('ts'))
  3576. except Exception as e:
  3577. print(e)
  3578. ts = ""
  3579. # ts = timeSwitch 0光控 1时控 startBar 开始时间 stopBar 结束时间
  3580. # print("=========>>",ts)
  3581. if ts == 0: # 光控
  3582. try:
  3583. hours = int(request.POST.get('hours'))
  3584. except:
  3585. data = api_code[1]
  3586. data = json.dumps(data)
  3587. print(data)
  3588. return HttpResponse(data)
  3589. if 0 <= hours < 24:
  3590. payload = {"cmd": "timer", "ext": {"tt": hours}}
  3591. cmd = {"topic": topic, "payload": json.dumps(
  3592. payload), 'qos': 1}
  3593. print(json.dumps(payload, indent=1))
  3594. if ip == "172.16.220.3":
  3595. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3596. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3597. else:
  3598. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3599. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3600. print("res.status_code:", type(res.status_code))
  3601. data = api_code[0]
  3602. data = json.dumps(data)
  3603. print(data)
  3604. return HttpResponse(data)
  3605. else:
  3606. # print("==========")
  3607. data = api_code[3]
  3608. data = json.dumps(data)
  3609. print(data)
  3610. return HttpResponse(data)
  3611. elif ts == 1: # 时控
  3612. try:
  3613. begin = int(request.POST.get('begin'))
  3614. end = int(request.POST.get('end'))
  3615. except:
  3616. data = api_code[1]
  3617. data = json.dumps(data)
  3618. return HttpResponse(data)
  3619. if 0 <= begin <= 24 and 0 <= end <= 24:
  3620. payload = {"cmd": "timeconf","ext": {"timeSwitch": ts,"startBar": begin,"stopBar": end}}
  3621. cmd = {"topic": topic, "payload": json.dumps(
  3622. payload), 'qos': 1}
  3623. print(json.dumps(payload, indent=1))
  3624. if ip == "172.16.220.3":
  3625. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3626. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3627. else:
  3628. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3629. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3630. if res.status_code == 200:
  3631. data = api_code[0]
  3632. data = json.dumps(data)
  3633. print(data)
  3634. return HttpResponse(data)
  3635. else:
  3636. data = api_code[4]
  3637. data = json.dumps(data)
  3638. print(data)
  3639. return HttpResponse(data)
  3640. else:
  3641. # print("==========")
  3642. data = api_code[3]
  3643. data = json.dumps(data)
  3644. return HttpResponse(data)
  3645. else:
  3646. # print("==========")
  3647. data = api_code[3]
  3648. data = json.dumps(data)
  3649. print(data)
  3650. return HttpResponse(data)
  3651. else:
  3652. data = api_code[2]
  3653. data = json.dumps(data)
  3654. return HttpResponse(data)
  3655. class SCD_Mqtt_Switch(ListView):
  3656. def get(self, request):
  3657. pass
  3658. def post(self, request):
  3659. uid = request.POST.get('uid')
  3660. imei = request.POST.get('imei')
  3661. # 用户验证
  3662. if equip_validation(uid,imei) == "0":
  3663. try:
  3664. ds = int(request.POST.get('ds'))
  3665. except Exception as e:
  3666. print(e)
  3667. data = api_code[1]
  3668. data = json.dumps(data)
  3669. return HttpResponse(data)
  3670. if ds == 0 or ds == 1: # 控制设备开关
  3671. print("下发开关!!!")
  3672. payload = {"cmd": "power", "ext": {"ds": ds}}
  3673. else:
  3674. data = api_code[3]
  3675. data = json.dumps(data)
  3676. print(data)
  3677. return HttpResponse(data)
  3678. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  3679. cmd = {"topic": topic, "payload": json.dumps(
  3680. payload), 'qos': 1}
  3681. print(json.dumps(payload, indent=1))
  3682. if ip == "172.16.220.3":
  3683. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3684. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3685. else:
  3686. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3687. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3688. print("res.status_code:", type(res.status_code))
  3689. print("res.status_code:", res.status_code)
  3690. if res.status_code == 200:
  3691. data = api_code[0]
  3692. data = json.dumps(data)
  3693. print(data)
  3694. return HttpResponse(data)
  3695. else:
  3696. data = api_code[4]
  3697. data = json.dumps(data)
  3698. print(data)
  3699. return HttpResponse(data)
  3700. else:
  3701. data = api_code[2]
  3702. data = json.dumps(data)
  3703. return HttpResponse(data)
  3704. class SCD_Mqtt_Read(ListView):
  3705. def get(self, request):
  3706. pass
  3707. def post(self, request):
  3708. uid = request.POST.get('uid')
  3709. imei = request.POST.get('imei')
  3710. # 用户验证
  3711. if equip_validation(uid,imei) == "0":
  3712. print("下发查询!!!")
  3713. kind = request.POST.get('kind')
  3714. if kind == "status" or kind == "data" or kind == "paramconf":
  3715. print (">>>>>",imei)
  3716. payload = {"cmd": "read", "ext": kind}
  3717. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  3718. cmd = {"topic": topic, "payload": json.dumps(
  3719. payload), 'qos': 1}
  3720. print(json.dumps(payload, indent=1))
  3721. if ip == "172.16.220.3":
  3722. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3723. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3724. else:
  3725. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3726. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3727. print("res.status_code:", type(res.status_code))
  3728. if res.status_code == 200:
  3729. data = {"code":"200","type":"success"}
  3730. data = json.dumps(data)
  3731. print(data)
  3732. return HttpResponse(data)
  3733. else:
  3734. data = {"code":"49999","type":"接口异常"}
  3735. data = json.dumps(data)
  3736. print(data)
  3737. return HttpResponse(data)
  3738. else:
  3739. data = {"code":"10001","type":"参数为空或格式不正确"}
  3740. data = json.dumps(data)
  3741. return HttpResponse(data)
  3742. else:
  3743. data = {"code":"10002","type":"用户名或设备号错误"}
  3744. data = json.dumps(data)
  3745. return HttpResponse(data)
  3746. # ------------------------------------------------------------------------------
  3747. # elif sw == "ctrl":
  3748. # print("下发升级或重启!!!")
  3749. # topicid = request.POST.get('topicid')
  3750. # kind = request.POST.get('kind')
  3751. # print(topicid)
  3752. # id_list = json.loads(topicid)
  3753. # for imei in id_list:
  3754. # payload = {"cmd": kind}
  3755. # print(type(imei))
  3756. # topic = "/yfkj/scd/sub/"+imei #[1:-1]
  3757. # cmd = {"topic": topic, "payload": json.dumps(
  3758. # payload), 'qos': 1}
  3759. # print(json.dumps(payload, indent=1))
  3760. # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3761. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3762. # print("res.status_code:", type(res.status_code))
  3763. # if res.status_code == 200:
  3764. # data = "0"
  3765. # return HttpResponse(data)
  3766. # else:
  3767. # data = "1"
  3768. # return HttpResponse(data)
  3769. # 气象站短信预警
  3770. class QXZ_Alarm_View(ListView):
  3771. def get(self,request):
  3772. pass
  3773. def post(self,request):
  3774. imei = request.POST.get('imei')
  3775. try:
  3776. alarm = QXZ_Alarm.objects.get(equip_id=imei).conf
  3777. except:
  3778. alarm = ""
  3779. x = QXZ_Conf.objects.get(equip_id=imei)
  3780. conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
  3781. "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
  3782. "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
  3783. "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
  3784. "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
  3785. "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
  3786. "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
  3787. data = {"alarm":alarm,"conf":conf}
  3788. data = json.dumps(data)
  3789. return HttpResponse(data)
  3790. # 气象站短信预警保存
  3791. class QXZ_Alarm_Recv(ListView):
  3792. def get(self,request):
  3793. pass
  3794. def post(self,request):
  3795. alarm = request.POST.get('alarm')
  3796. print(alarm)
  3797. print(eval(alarm)["equip_id"])
  3798. e_id = eval(alarm)["equip_id"]
  3799. tel = eval(alarm)["tel"]
  3800. equip_obj = Equip.objects.get(equip_id=e_id)
  3801. if QXZ_Alarm.objects.filter(equip_id=e_id).exists():
  3802. alarm_obj = QXZ_Alarm.objects.get(equip_id=equip_obj)
  3803. alarm_obj.conf = alarm
  3804. alarm_obj.tel = tel
  3805. alarm_obj.save()
  3806. print("修改成功")
  3807. else:
  3808. QXZ_Alarm.objects.create(equip_id=equip_obj,conf=alarm,tel=tel)
  3809. return HttpResponse("0")
  3810. # 气象站基础信息
  3811. class QXZ_Base_View(ListView):
  3812. def get(self,request):
  3813. pass
  3814. def post(self,request):
  3815. imei = request.POST.get('imei')
  3816. try:
  3817. base_obj = QXZ_Base_Info.objects.get(equip_id=imei)
  3818. data = {"volt":base_obj.volt,"rssi":base_obj.rssi,"iccid":base_obj.iccid,"lng":base_obj.lng,"lat":base_obj.lat,"dver":base_obj.dver}
  3819. except:
  3820. data = "null"
  3821. data = json.dumps(data)
  3822. return HttpResponse(data)
  3823. # 气象站开关名字
  3824. class QXZ_Switch_Name(ListView):
  3825. def get(self,request):
  3826. pass
  3827. def post(self,request):
  3828. imei = request.POST.get('imei')
  3829. way = request.POST.get('way')
  3830. sw_name = request.POST.get('sw_name')
  3831. try:
  3832. switch_obj = QXZswitchdata.objects.get(equip_id=imei)
  3833. except:
  3834. return HttpResponse("1")
  3835. sw_name_list = eval(switch_obj.qxz_switch_data)
  3836. # print(type(eval(sw_name_list)))
  3837. for i in sw_name_list:
  3838. if i["JK"] == int(way):
  3839. i["name"] = sw_name
  3840. print(sw_name_list)
  3841. try:
  3842. switch_obj.qxz_switch_data = sw_name_list
  3843. switch_obj.save()
  3844. except:
  3845. return HttpResponse("1")
  3846. data = "0"
  3847. return HttpResponse(data)
  3848. # 气象站通信接口
  3849. class QXZ_Mqtt(ListView):
  3850. def get(self,request):
  3851. pass
  3852. def post(self,request):
  3853. req = request.POST.get('req')
  3854. imei = request.POST.get('imei')
  3855. topic = "/yfkj/qxz/sub/"+imei
  3856. if req == "read":
  3857. payload = {"ext":{"type":"status"},"cmd":"read"}
  3858. elif req == "set":
  3859. way = int(request.POST.get('way'))
  3860. switch = int(request.POST.get('switch'))
  3861. payload = {"cmd":"control","ext":{"JK":way,"status":switch}}
  3862. elif req == "conf":
  3863. payload = {"ext":{"type":"jkStatus"},"cmd":"read"}
  3864. elif req == "ip":
  3865. url = request.POST.get('url')
  3866. port = request.POST.get('port')
  3867. payload= {"cmd":"ip","ext":{"ip":url,"port":port,"topic_p":"/yfkj/qxz/pub/","topic_s":"/yfkj/qxz/sub/"}}
  3868. elif req == "update":
  3869. payload = {"cmd":"update"}
  3870. print(payload)
  3871. cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0}
  3872. if ip == "172.16.220.3":
  3873. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3874. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3875. else:
  3876. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3877. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3878. print("res.status_code:", type(res.status_code))
  3879. if res.status_code == 200:
  3880. data = "0"
  3881. return HttpResponse(data)
  3882. else:
  3883. data = "1"
  3884. return HttpResponse(data)
  3885. # 气象站历史状态接口
  3886. class QXZ_Record_View(ListView):
  3887. def get(self,request):
  3888. pass
  3889. def post(self,request):
  3890. imei = request.POST.get('imei')
  3891. page = int(request.POST.get('page'))
  3892. recordlist = QXZ_Info_Record.objects.filter(equip_id_id=imei)
  3893. dat = []
  3894. for i in recordlist:
  3895. dat.append({"volt":i.volt,"rssi":i.rssi,"upl_time":i.upl_time})
  3896. nums = len(dat)
  3897. dat = dat[(10*(page-1)):(page*10)]
  3898. data = {"dat":dat,"nums":nums}
  3899. data = json.dumps(data, cls=CJSONEncoder)
  3900. return HttpResponse(data)
  3901. # 气象站历史状态全部接口
  3902. class QXZ_Record_All(ListView):
  3903. def get(self,request):
  3904. pass
  3905. def post(self,request):
  3906. imei = request.POST.get('imei')
  3907. recordlist = QXZ_Info_Record.objects.filter(equip_id_id=imei)[0:5000]
  3908. # if QXZ_Info_Record.objects.filter(equip_id_id=imei).exists():
  3909. # print("数据存在")
  3910. # one_month = datetime.timedelta(days=30)
  3911. # now_time = QXZ_Info_Record.objects.filter(equip_id_id=imei)[0].upl_time
  3912. # one_month_later = now_time - one_month
  3913. # recordlist = QXZ_Info_Record.objects.filter(equip_id_id=imei,upl_time__range=(one_month_later, now_time))
  3914. dat = []
  3915. # a = 0
  3916. for i in recordlist:
  3917. # a += 1
  3918. dat.append({"volt":i.volt,"rssi":i.rssi,"upl_time":i.upl_time})
  3919. # print(a)
  3920. data = json.dumps(dat, cls=CJSONEncoder)
  3921. return HttpResponse(data)
  3922. # 气象站通信接口
  3923. class QXZ_Delete(ListView):
  3924. def get(self,request):
  3925. pass
  3926. def post(self,request):
  3927. imei = request.POST.get('imei')
  3928. try:
  3929. Equip.objects.get(equip_id=imei).delete()
  3930. data = "0"
  3931. except:
  3932. data = "1"
  3933. return HttpResponse(data)
  3934. # 气象站阈值接口
  3935. class QXZ_Auto(ListView):
  3936. def get(self,request):
  3937. pass
  3938. def post(self,request):
  3939. imei = request.POST.get('imei')
  3940. try:
  3941. auto_list = QXZAutoswitch.objects.get(equip_id_id=imei)
  3942. qxz_list = QXZstatus.objects.get(equip_id_id=imei)
  3943. data = {"qxz_list":eval(qxz_list.qxz_status)['data'],"auto_list":auto_list.qxz_auto}
  3944. except:
  3945. data = {"qxz_list":[],"auto_list":[]}
  3946. data = json.dumps(data)
  3947. return HttpResponse(data)
  3948. # 气象站定时接口
  3949. class QXZ_Timing(ListView):
  3950. def get(self,request):
  3951. pass
  3952. def post(self,request):
  3953. imei = request.POST.get('imei')
  3954. try:
  3955. timing_list = QXZTimingswitch.objects.get(equip_id_id=imei)
  3956. qxz_list = QXZstatus.objects.get(equip_id_id=imei)
  3957. data = {"qxz_list":eval(qxz_list.qxz_status)['data'],"timing_list":timing_list.qxz_timing}
  3958. except:
  3959. data = {"qxz_list":[],"timing_list":[]}
  3960. data = json.dumps(data)
  3961. return HttpResponse(data)
  3962. # 气象站定时下发接口
  3963. class QXZ_Timing_Mqtt(ListView):
  3964. def get(self,request):
  3965. pass
  3966. def post(self,request):
  3967. imei = request.POST.get('equip_id')
  3968. starttime = request.POST.get('StartTime')
  3969. jk = request.POST.get('JK')
  3970. duration = request.POST.get('Duration')
  3971. try:
  3972. payload = { "cmd":"timing","ext":{"JK":int(jk),"StartTime":int(starttime),"Duration":int(duration)}}
  3973. except:
  3974. return HttpResponse("1")
  3975. topic = "/yfkj/qxz/sub/"+imei
  3976. cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0}
  3977. if ip == "172.16.220.3":
  3978. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  3979. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3980. else:
  3981. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  3982. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  3983. print("res.status_code:", type(res.status_code))
  3984. if res.status_code == 200:
  3985. data = "0"
  3986. return HttpResponse(data)
  3987. else:
  3988. data = "1"
  3989. return HttpResponse(data)
  3990. return HttpResponse("0")
  3991. # 气象站阈值设置接口
  3992. class QXZ_Value_Mqtt(ListView):
  3993. def get(self,request):
  3994. pass
  3995. def post(self,request):
  3996. req = request.POST.get('req')
  3997. jk = request.POST.get('JK')
  3998. ekey = request.POST.get('eKey')
  3999. upper = request.POST.get('upper')
  4000. lower = request.POST.get('lower')
  4001. method = request.POST.get('method')
  4002. imei = request.POST.get('equip_id')
  4003. topic = "/yfkj/qxz/sub/"+imei
  4004. try:
  4005. payload = {"cmd":"auto","ext":{"JK":int(jk),"eKey":int(ekey),"upper":int(upper),"lower":int(lower),"method":int(method)}}
  4006. except:
  4007. return HttpResponse("1")
  4008. cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0}
  4009. if ip == "172.16.220.3":
  4010. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  4011. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  4012. else:
  4013. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  4014. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  4015. print("res.status_code:", type(res.status_code))
  4016. if res.status_code == 200:
  4017. data = "0"
  4018. return HttpResponse(data)
  4019. else:
  4020. data = "1"
  4021. return HttpResponse(data)
  4022. return HttpResponse("0")
  4023. # 气象站LED点阵屏下发
  4024. class QXZ_Led(ListView):
  4025. def get(self,request):
  4026. pass
  4027. def post(self,request):
  4028. imei = request.POST.get('equip_id')
  4029. cont = request.POST.get('cont')
  4030. tim = request.POST.get('tim')
  4031. topic = "/yfkj/qxz/sub/"+imei
  4032. try:
  4033. payload = {"cmd": "dotled","ext": {"content":cont,"timeout":int(tim)}}
  4034. except:
  4035. return HttpResponse("1")
  4036. cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0}
  4037. if ip == "172.16.220.3":
  4038. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  4039. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  4040. else:
  4041. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  4042. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  4043. print("res.status_code:", type(res.status_code))
  4044. if res.status_code == 200:
  4045. base_obj = QXZ_Base_Info.objects.get(equip_id=imei)
  4046. base_obj.ledinfo = cont
  4047. base_obj.save()
  4048. data = "0"
  4049. return HttpResponse(data)
  4050. else:
  4051. data = "1"
  4052. return HttpResponse(data)
  4053. return HttpResponse("0")
  4054. # 气象站状态
  4055. class QXZ_Status(ListView):
  4056. def get(self,request):
  4057. pass
  4058. def post(self,request):
  4059. e_id = request.POST.get("e_id")
  4060. qxz_list = QXZstatus_New.objects.filter(equip_id=e_id)
  4061. conf_list = QXZ_Conf.objects.filter(equip_id=e_id)
  4062. data = []
  4063. try:
  4064. qxz_list = QXZstatus_New.objects.get(equip_id=e_id)
  4065. dat = {"e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
  4066. "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
  4067. "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
  4068. "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
  4069. "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
  4070. "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
  4071. "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30}
  4072. base = {"upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S'),
  4073. "qxz_picture": "%s"%(qxz_list.qxz_picture)}
  4074. except:
  4075. dat = {}
  4076. base = {}
  4077. try:
  4078. x = QXZ_Conf.objects.get(equip_id=e_id)
  4079. conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
  4080. "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
  4081. "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
  4082. "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
  4083. "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
  4084. "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
  4085. "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
  4086. except:
  4087. conf = {}
  4088. try:
  4089. switch_obj = QXZswitchstatus.objects.get(equip_id=e_id)
  4090. qxz_switch = switch_obj.qxz_switch
  4091. except:
  4092. qxz_switch = ""
  4093. try:
  4094. switch_name_obj = QXZswitchdata.objects.get(equip_id=e_id)
  4095. switch_name = switch_name_obj.qxz_switch_data
  4096. except:
  4097. switch_name = ""
  4098. try:
  4099. timing_list = QXZTimingswitch.objects.get(equip_id=e_id).qxz_timing
  4100. except:
  4101. timing_list = ""
  4102. try:
  4103. auto_list = QXZAutoswitch.objects.get(equip_id_id=e_id).qxz_auto
  4104. except:
  4105. auto_list = ""
  4106. try:
  4107. led = QXZ_Base_Info.objects.get(equip_id_id=e_id).led
  4108. except:
  4109. led = "0"
  4110. try:
  4111. ledinfo = QXZ_Base_Info.objects.get(equip_id_id=e_id).ledinfo
  4112. except:
  4113. ledinfo = ""
  4114. data = {'dat':dat,'conf':conf,'base':base, 'qxz_switch':qxz_switch, 'switch_name':switch_name, 'timing_list':timing_list, 'auto_list':auto_list,"led":led,"ledinfo":ledinfo}
  4115. data = json.dumps(data)
  4116. return HttpResponse(data)
  4117. # 气象站数据
  4118. class QXZ_Data(ListView):
  4119. def get(self,request):
  4120. pass
  4121. def post(self,request):
  4122. e_id = request.POST.get("e_id")
  4123. page = int(request.POST.get('page'))
  4124. qxz_list = QXZdata_New.objects.filter(equip_id=e_id)
  4125. data = []
  4126. for i in qxz_list:
  4127. data.append({"dat":{"e1":i.e1,"e2":i.e2,"e3":i.e3,"e4":i.e4,"e5":i.e5,
  4128. "e6":i.e6,"e7":i.e7,"e8":i.e8,"e9":i.e9,"e10":i.e10,
  4129. "e11":i.e11,"e12":i.e12,"e13":i.e13,"e14":i.e14,
  4130. "e15":i.e15,"e16":i.e16,"e17":i.e17,"e18":i.e18,
  4131. "e19":i.e19,"e20":i.e20,"e21":i.e21,"e22":i.e22,
  4132. "e23":i.e23,"e24":i.e24,"e25":i.e25,"e26":i.e26,
  4133. "e27":i.e27,"e28":i.e28,"e29":i.e29,"e30":i.e30},
  4134. "time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
  4135. try:
  4136. x = QXZ_Conf.objects.get(equip_id=e_id)
  4137. conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
  4138. "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
  4139. "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
  4140. "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
  4141. "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
  4142. "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
  4143. "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
  4144. except:
  4145. conf = {}
  4146. nums = qxz_list.count()
  4147. data = data[(10*(page-1)):(page*10)]
  4148. data1 = {"data":data,"nums":nums,"conf":conf}
  4149. data1 = json.dumps(data1)
  4150. return HttpResponse(data1)
  4151. # 气象站数据
  4152. class QXZ_Data_Chart(ListView):
  4153. def get(self,request):
  4154. pass
  4155. def post(self,request):
  4156. e_id = request.POST.get("e_id")
  4157. # page = int(request.POST.get('page'))
  4158. # qxz_list = QXZdata_New.objects.filter(equip_id=e_id)
  4159. data = []
  4160. f_tbegin = request.POST.get('begin')
  4161. f_tend = request.POST.get('end')
  4162. print("f_tbegin:", f_tbegin)
  4163. print("f_tend:", f_tend)
  4164. if f_tbegin:
  4165. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  4166. enddate = re.findall(r"\d+\.?\d*", f_tend)
  4167. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  4168. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  4169. print("start_date:", start_date)
  4170. print("end_date:", end_date)
  4171. qxz_list = QXZdata_New.objects.filter(
  4172. equip_id=e_id, upl_time__range=(start_date, end_date))
  4173. for i in qxz_list:
  4174. data.append({"dat":{"e1":i.e1,"e2":i.e2,"e3":i.e3,"e4":i.e4,"e5":i.e5,
  4175. "e6":i.e6,"e7":i.e7,"e8":i.e8,"e9":i.e9,"e10":i.e10,
  4176. "e11":i.e11,"e12":i.e12,"e13":i.e13,"e14":i.e14,
  4177. "e15":i.e15,"e16":i.e16,"e17":i.e17,"e18":i.e18,
  4178. "e19":i.e19,"e20":i.e20,"e21":i.e21,"e22":i.e22,
  4179. "e23":i.e23,"e24":i.e24,"e25":i.e25,"e26":i.e26,
  4180. "e27":i.e27,"e28":i.e28,"e29":i.e29,"e30":i.e30},
  4181. "time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
  4182. try:
  4183. x = QXZ_Conf.objects.get(equip_id=e_id)
  4184. conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
  4185. "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
  4186. "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
  4187. "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
  4188. "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
  4189. "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
  4190. "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
  4191. except:
  4192. conf = {}
  4193. data1 = {"data":data,"conf":conf}
  4194. data1 = json.dumps(data1)
  4195. return HttpResponse(data1)
  4196. # 获取当前日期:
  4197. now_time = datetime.datetime.now()
  4198. print("当前日期为:",now_time)
  4199. print("当前月为:",now_time.month)
  4200. qxz_list = QXZdata_New.objects.filter(equip_id=e_id, upl_time__month=now_time.month)
  4201. for i in qxz_list:
  4202. data.append({"dat":{"e1":i.e1,"e2":i.e2,"e3":i.e3,"e4":i.e4,"e5":i.e5,
  4203. "e6":i.e6,"e7":i.e7,"e8":i.e8,"e9":i.e9,"e10":i.e10,
  4204. "e11":i.e11,"e12":i.e12,"e13":i.e13,"e14":i.e14,
  4205. "e15":i.e15,"e16":i.e16,"e17":i.e17,"e18":i.e18,
  4206. "e19":i.e19,"e20":i.e20,"e21":i.e21,"e22":i.e22,
  4207. "e23":i.e23,"e24":i.e24,"e25":i.e25,"e26":i.e26,
  4208. "e27":i.e27,"e28":i.e28,"e29":i.e29,"e30":i.e30},
  4209. "time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
  4210. try:
  4211. x = QXZ_Conf.objects.get(equip_id=e_id)
  4212. conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
  4213. "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
  4214. "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
  4215. "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
  4216. "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
  4217. "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
  4218. "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
  4219. except:
  4220. conf = {}
  4221. # nums = qxz_list.count()
  4222. # data = data[(10*(page-1)):(page*10)]
  4223. data1 = {"data":data,"conf":conf}
  4224. data1 = json.dumps(data1)
  4225. return HttpResponse(data1)
  4226. # 气象站标题自定义
  4227. class QXZ_Title_Conf(ListView):
  4228. def get(self,request):
  4229. e_id = request.GET.get("e_id")
  4230. x = QXZ_Conf.objects.get(equip_id=e_id)
  4231. i = QXZ_Default_Conf.objects.get(equip_id=e_id)
  4232. conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
  4233. "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
  4234. "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
  4235. "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
  4236. "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
  4237. "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
  4238. "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
  4239. default = {"e1":i.e1,"e2":i.e2,"e3":i.e3,"e4":i.e4,"e5":i.e5,
  4240. "e6":i.e6,"e7":i.e7,"e8":i.e8,"e9":i.e9,"e10":i.e10,
  4241. "e11":i.e11,"e12":i.e12,"e13":i.e13,"e14":i.e14,
  4242. "e15":i.e15,"e16":i.e16,"e17":i.e17,"e18":i.e18,
  4243. "e19":i.e19,"e20":i.e20,"e21":i.e21,"e22":i.e22,
  4244. "e23":i.e23,"e24":i.e24,"e25":i.e25,"e26":i.e26,
  4245. "e27":i.e27,"e28":i.e28,"e29":i.e29,"e30":i.e30}
  4246. data = {"default":default,"conf":conf}
  4247. data = json.dumps(data)
  4248. return HttpResponse(data)
  4249. def post(self,request):
  4250. e_id = request.POST.get("e_id")
  4251. ekey = request.POST.get("ekey")
  4252. conf = request.POST.get("conf")
  4253. conf_obj = QXZ_Conf.objects.get(equip_id=e_id)
  4254. if ekey == "e1":
  4255. conf_obj.e1 = conf
  4256. conf_obj.save()
  4257. data = "0"
  4258. elif ekey == "e2":
  4259. conf_obj.e2 = conf
  4260. conf_obj.save()
  4261. data = "0"
  4262. elif ekey == "e3":
  4263. conf_obj.e3 = conf
  4264. conf_obj.save()
  4265. data = "0"
  4266. elif ekey == "e4":
  4267. conf_obj.e4 = conf
  4268. conf_obj.save()
  4269. data = "0"
  4270. elif ekey == "e5":
  4271. conf_obj.e5 = conf
  4272. conf_obj.save()
  4273. data = "0"
  4274. elif ekey == "e6":
  4275. conf_obj.e6 = conf
  4276. conf_obj.save()
  4277. data = "0"
  4278. elif ekey == "e7":
  4279. conf_obj.e7 = conf
  4280. conf_obj.save()
  4281. data = "0"
  4282. elif ekey == "e8":
  4283. conf_obj.e8 = conf
  4284. conf_obj.save()
  4285. data = "0"
  4286. elif ekey == "e9":
  4287. conf_obj.e9 = conf
  4288. conf_obj.save()
  4289. data = "0"
  4290. elif ekey == "e10":
  4291. conf_obj.e10 = conf
  4292. conf_obj.save()
  4293. data = "0"
  4294. elif ekey == "e11":
  4295. conf_obj.e11 = conf
  4296. conf_obj.save()
  4297. data = "0"
  4298. elif ekey == "e12":
  4299. conf_obj.e12 = conf
  4300. conf_obj.save()
  4301. data = "0"
  4302. elif ekey == "e13":
  4303. conf_obj.e13 = conf
  4304. conf_obj.save()
  4305. data = "0"
  4306. elif ekey == "e14":
  4307. conf_obj.e14 = conf
  4308. conf_obj.save()
  4309. data = "0"
  4310. elif ekey == "e15":
  4311. conf_obj.e15 = conf
  4312. conf_obj.save()
  4313. data = "0"
  4314. elif ekey == "e16":
  4315. conf_obj.e16 = conf
  4316. conf_obj.save()
  4317. data = "0"
  4318. elif ekey == "e17":
  4319. conf_obj.e17 = conf
  4320. conf_obj.save()
  4321. data = "0"
  4322. elif ekey == "e18":
  4323. conf_obj.e18 = conf
  4324. conf_obj.save()
  4325. data = "0"
  4326. elif ekey == "e19":
  4327. conf_obj.e19 = conf
  4328. conf_obj.save()
  4329. data = "0"
  4330. elif ekey == "e20":
  4331. conf_obj.e20 = conf
  4332. conf_obj.save()
  4333. data = "0"
  4334. elif ekey == "e21":
  4335. conf_obj.e21 = conf
  4336. conf_obj.save()
  4337. data = "0"
  4338. elif ekey == "e22":
  4339. conf_obj.e22 = conf
  4340. conf_obj.save()
  4341. data = "0"
  4342. elif ekey == "e23":
  4343. conf_obj.e23 = conf
  4344. conf_obj.save()
  4345. data = "0"
  4346. elif ekey == "e24":
  4347. conf_obj.e24 = conf
  4348. conf_obj.save()
  4349. data = "0"
  4350. elif ekey == "e25":
  4351. conf_obj.e25 = conf
  4352. conf_obj.save()
  4353. data = "0"
  4354. elif ekey == "e26":
  4355. conf_obj.e26 = conf
  4356. conf_obj.save()
  4357. data = "0"
  4358. elif ekey == "e27":
  4359. conf_obj.e27 = conf
  4360. conf_obj.save()
  4361. data = "0"
  4362. elif ekey == "e28":
  4363. conf_obj.e28 = conf
  4364. conf_obj.save()
  4365. data = "0"
  4366. elif ekey == "e29":
  4367. conf_obj.e29 = conf
  4368. conf_obj.save()
  4369. data = "0"
  4370. elif ekey == "e30":
  4371. conf_obj.e30 = conf
  4372. conf_obj.save()
  4373. data = "0"
  4374. else:
  4375. data = "1"
  4376. return HttpResponse(data)
  4377. # 气象站24H数据
  4378. class QXZ_Day_Data(ListView):
  4379. def get(self,request):
  4380. pass
  4381. def post(self,request):
  4382. qxz_dict_1 = copy.deepcopy(qxz_dict) # 如果不拷贝 后面折线图修改字典会导致字典内容变化 从而造成数据错误
  4383. start_date = datetime.datetime.now() - datetime.timedelta(days=2)
  4384. end_date = datetime.datetime.now()
  4385. print("start_date:", start_date)
  4386. print("end_date:", end_date)
  4387. e_id = request.POST.get('e_id')
  4388. # print("=================>>",e_id)
  4389. sta1 = QXZdata_New.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date)).values()
  4390. e1 = []
  4391. e1_time = []
  4392. e2 = []
  4393. e2_time = []
  4394. e3 = []
  4395. e3_time = []
  4396. e4 = []
  4397. e4_time = []
  4398. e5 = []
  4399. e5_time = []
  4400. e6 = []
  4401. e6_time = []
  4402. e7 = []
  4403. e7_time = []
  4404. e8 = []
  4405. e8_time = []
  4406. e9 = []
  4407. e9_time = []
  4408. e10 = []
  4409. e10_time = []
  4410. e11 = []
  4411. e11_time = []
  4412. e12 = []
  4413. e12_time = []
  4414. e13 = []
  4415. e13_time = []
  4416. e14 = []
  4417. e14_time = []
  4418. e15 = []
  4419. e15_time = []
  4420. e16 = []
  4421. e16_time = []
  4422. e17 = []
  4423. e17_time = []
  4424. e18 = []
  4425. e18_time = []
  4426. e19 = []
  4427. e19_time = []
  4428. e20 = []
  4429. e20_time = []
  4430. e21 = []
  4431. e21_time = []
  4432. e22 = []
  4433. e22_time = []
  4434. e23 = []
  4435. e23_time = []
  4436. e24 = []
  4437. e24_time = []
  4438. e25 = []
  4439. e25_time = []
  4440. e26 = []
  4441. e26_time = []
  4442. e27 = []
  4443. e27_time = []
  4444. e28 = []
  4445. e28_time = []
  4446. e29 = []
  4447. e29_time = []
  4448. e30 = []
  4449. e30_time = []
  4450. for i in sta1:
  4451. if i['e1'] != "":
  4452. e1.append(float(i['e1'].split('#')[0]))
  4453. e1_time.append(i['upl_time'])
  4454. if i['e2'] != "":
  4455. e2.append(float(i['e2'].split('#')[0]))
  4456. e2_time.append(i['upl_time'])
  4457. if i['e3'] != "":
  4458. e3.append(float(i['e3'].split('#')[0]))
  4459. e3_time.append(i['upl_time'])
  4460. if i['e4'] != "":
  4461. e4.append(float(i['e4'].split('#')[0]))
  4462. e4_time.append(i['upl_time'])
  4463. if i['e5'] != "":
  4464. e5.append(float(i['e5'].split('#')[0]))
  4465. e5_time.append(i['upl_time'])
  4466. if i['e6'] != "":
  4467. e6.append(float(i['e6'].split('#')[0]))
  4468. e6_time.append(i['upl_time'])
  4469. if i['e7'] != "":
  4470. e7.append(float(i['e7'].split('#')[0]))
  4471. e7_time.append(i['upl_time'])
  4472. if i['e8'] != "":
  4473. e8.append(float(i['e8'].split('#')[0]))
  4474. e8_time.append(i['upl_time'])
  4475. if i['e9'] != "":
  4476. e9.append(float(i['e9'].split('#')[0]))
  4477. e9_time.append(i['upl_time'])
  4478. if i['e10'] != "":
  4479. e10.append(float(i['e10'].split('#')[0]))
  4480. e10_time.append(i['upl_time'])
  4481. if i['e11'] != "":
  4482. e11.append(float(i['e11'].split('#')[0]))
  4483. e11_time.append(i['upl_time'])
  4484. if i['e12'] != "":
  4485. e12.append(float(i['e12'].split('#')[0]))
  4486. e12_time.append(i['upl_time'])
  4487. if i['e13'] != "":
  4488. e13.append(float(i['e13'].split('#')[0]))
  4489. e13_time.append(i['upl_time'])
  4490. if i['e14'] != "":
  4491. e14.append(float(i['e14'].split('#')[0]))
  4492. e14_time.append(i['upl_time'])
  4493. if i['e15'] != "":
  4494. e15.append(float(i['e15'].split('#')[0]))
  4495. e15_time.append(i['upl_time'])
  4496. if i['e16'] != "":
  4497. e16.append(float(i['e16'].split('#')[0]))
  4498. e16_time.append(i['upl_time'])
  4499. if i['e17'] != "":
  4500. e17.append(float(i['e17'].split('#')[0]))
  4501. e17_time.append(i['upl_time'])
  4502. if i['e18'] != "":
  4503. e18.append(float(i['e18'].split('#')[0]))
  4504. e18_time.append(i['upl_time'])
  4505. if i['e19'] != "":
  4506. e19.append(float(i['e19'].split('#')[0]))
  4507. e19_time.append(i['upl_time'])
  4508. if i['e20'] != "":
  4509. e20.append(float(i['e20'].split('#')[0]))
  4510. e20_time.append(i['upl_time'])
  4511. if i['e21'] != "":
  4512. e21.append(float(i['e21'].split('#')[0]))
  4513. e21_time.append(i['upl_time'])
  4514. if i['e22'] != "":
  4515. e22.append(float(i['e22'].split('#')[0]))
  4516. e22_time.append(i['upl_time'])
  4517. if i['e23'] != "":
  4518. e23.append(float(i['e23'].split('#')[0]))
  4519. e23_time.append(i['upl_time'])
  4520. if i['e24'] != "":
  4521. e24.append(float(i['e24'].split('#')[0]))
  4522. e24_time.append(i['upl_time'])
  4523. if i['e25'] != "":
  4524. e25.append(float(i['e25'].split('#')[0]))
  4525. e25_time.append(i['upl_time'])
  4526. if i['e26'] != "":
  4527. e26.append(float(i['e26'].split('#')[0]))
  4528. e26_time.append(i['upl_time'])
  4529. if i['e27'] != "":
  4530. e27.append(float(i['e27'].split('#')[0]))
  4531. e27_time.append(i['upl_time'])
  4532. if i['e28'] != "":
  4533. e28.append(float(i['e28'].split('#')[0]))
  4534. e28_time.append(i['upl_time'])
  4535. if i['e29'] != "":
  4536. e29.append(float(i['e29'].split('#')[0]))
  4537. e29_time.append(i['upl_time'])
  4538. if i['e30'] != "":
  4539. e30.append(float(i['e30'].split('#')[0]))
  4540. e30_time.append(i['upl_time'])
  4541. # print("---------->",sta1)
  4542. data = []
  4543. try:
  4544. if e1 != []:
  4545. data.append({"max":max(e1),"maxtime":e1_time[e1.index(max(e1))],"min":min(e1),"mintime":e1_time[e1.index(min(e1))],"enum":qxz_dict_1[i['e1'].split('#')[1]],"ekey":i['e1'].split('#')[2]})
  4546. if e2 != []:
  4547. data.append({"max":max(e2),"maxtime":e2_time[e2.index(max(e2))],"min":min(e2),"mintime":e2_time[e2.index(min(e2))],"enum":qxz_dict_1[i['e2'].split('#')[1]],"ekey":i['e2'].split('#')[2]})
  4548. if e3 != []:
  4549. data.append({"max":max(e3),"maxtime":e3_time[e3.index(max(e3))],"min":min(e3),"mintime":e3_time[e3.index(min(e3))],"enum":qxz_dict_1[i['e3'].split('#')[1]],"ekey":i['e3'].split('#')[2]})
  4550. if e4 != []:
  4551. data.append({"max":max(e4),"maxtime":e4_time[e4.index(max(e4))],"min":min(e4),"mintime":e4_time[e4.index(min(e4))],"enum":qxz_dict_1[i['e4'].split('#')[1]],"ekey":i['e4'].split('#')[2]})
  4552. if e5 != []:
  4553. data.append({"max":max(e5),"maxtime":e5_time[e5.index(max(e5))],"min":min(e5),"mintime":e5_time[e5.index(min(e5))],"enum":qxz_dict_1[i['e5'].split('#')[1]],"ekey":i['e5'].split('#')[2]})
  4554. if e6 != []:
  4555. data.append({"max":max(e6),"maxtime":e6_time[e6.index(max(e6))],"min":min(e6),"mintime":e6_time[e6.index(min(e6))],"enum":qxz_dict_1[i['e6'].split('#')[1]],"ekey":i['e6'].split('#')[2]})
  4556. if e7 != []:
  4557. data.append({"max":max(e7),"maxtime":e7_time[e7.index(max(e7))],"min":min(e7),"mintime":e7_time[e7.index(min(e7))],"enum":qxz_dict_1[i['e7'].split('#')[1]],"ekey":i['e7'].split('#')[2]})
  4558. if e8 != []:
  4559. data.append({"max":max(e8),"maxtime":e8_time[e8.index(max(e8))],"min":min(e8),"mintime":e8_time[e8.index(min(e8))],"enum":qxz_dict_1[i['e8'].split('#')[1]],"ekey":i['e8'].split('#')[2]})
  4560. if e9 != []:
  4561. data.append({"max":max(e9),"maxtime":e9_time[e9.index(max(e9))],"min":min(e9),"mintime":e9_time[e9.index(min(e9))],"enum":qxz_dict_1[i['e9'].split('#')[1]],"ekey":i['e9'].split('#')[2]})
  4562. if e10 != []:
  4563. data.append({"max":max(e10),"maxtime":e10_time[e10.index(max(e10))],"min":min(e10),"mintime":e10_time[e10.index(min(e10))],"enum":qxz_dict_1[i['e10'].split('#')[1]],"ekey":i['e10'].split('#')[2]})
  4564. if e11 != []:
  4565. data.append({"max":max(e11),"maxtime":e11_time[e11.index(max(e11))],"min":min(e11),"mintime":e11_time[e11.index(min(e11))],"enum":qxz_dict_1[i['e11'].split('#')[1]],"ekey":i['e11'].split('#')[2]})
  4566. if e12 != []:
  4567. data.append({"max":max(e12),"maxtime":e12_time[e12.index(max(e12))],"min":min(e12),"mintime":e12_time[e12.index(min(e12))],"enum":qxz_dict_1[i['e12'].split('#')[1]],"ekey":i['e12'].split('#')[2]})
  4568. if e13 != []:
  4569. data.append({"max":max(e13),"maxtime":e13_time[e13.index(max(e13))],"min":min(e13),"mintime":e13_time[e13.index(min(e13))],"enum":qxz_dict_1[i['e13'].split('#')[1]],"ekey":i['e13'].split('#')[2]})
  4570. if e14 != []:
  4571. data.append({"max":max(e14),"maxtime":e14_time[e14.index(max(e14))],"min":min(e14),"mintime":e14_time[e14.index(min(e14))],"enum":qxz_dict_1[i['e14'].split('#')[1]],"ekey":i['e14'].split('#')[2]})
  4572. if e15 != []:
  4573. data.append({"max":max(e15),"maxtime":e15_time[e15.index(max(e15))],"min":min(e15),"mintime":e15_time[e15.index(min(e15))],"enum":qxz_dict_1[i['e15'].split('#')[1]],"ekey":i['e15'].split('#')[2]})
  4574. if e16 != []:
  4575. data.append({"max":max(e16),"maxtime":e16_time[e16.index(max(e16))],"min":min(e16),"mintime":e16_time[e16.index(min(e16))],"enum":qxz_dict_1[i['e16'].split('#')[1]],"ekey":i['e16'].split('#')[2]})
  4576. if e17 != []:
  4577. data.append({"max":max(e17),"maxtime":e17_time[e17.index(max(e17))],"min":min(e17),"mintime":e17_time[e17.index(min(e17))],"enum":qxz_dict_1[i['e17'].split('#')[1]],"ekey":i['e17'].split('#')[2]})
  4578. if e18 != []:
  4579. data.append({"max":max(e18),"maxtime":e18_time[e18.index(max(e18))],"min":min(e18),"mintime":e18_time[e18.index(min(e18))],"enum":qxz_dict_1[i['e18'].split('#')[1]],"ekey":i['e18'].split('#')[2]})
  4580. if e19 != []:
  4581. data.append({"max":max(e19),"maxtime":e19_time[e19.index(max(e19))],"min":min(e19),"mintime":e19_time[e19.index(min(e19))],"enum":qxz_dict_1[i['e19'].split('#')[1]],"ekey":i['e19'].split('#')[2]})
  4582. if e20 != []:
  4583. data.append({"max":max(e20),"maxtime":e20_time[e20.index(max(e20))],"min":min(e20),"mintime":e20_time[e20.index(min(e20))],"enum":qxz_dict_1[i['e20'].split('#')[1]],"ekey":i['e20'].split('#')[2]})
  4584. if e21 != []:
  4585. data.append({"max":max(e21),"maxtime":e21_time[e21.index(max(e21))],"min":min(e21),"mintime":e21_time[e21.index(min(e21))],"enum":qxz_dict_1[i['e21'].split('#')[1]],"ekey":i['e21'].split('#')[2]})
  4586. if e22 != []:
  4587. data.append({"max":max(e22),"maxtime":e22_time[e22.index(max(e22))],"min":min(e22),"mintime":e22_time[e22.index(min(e22))],"enum":qxz_dict_1[i['e22'].split('#')[1]],"ekey":i['e22'].split('#')[2]})
  4588. if e23 != []:
  4589. data.append({"max":max(e23),"maxtime":e23_time[e23.index(max(e23))],"min":min(e23),"mintime":e23_time[e23.index(min(e23))],"enum":qxz_dict_1[i['e23'].split('#')[1]],"ekey":i['e23'].split('#')[2]})
  4590. if e24 != []:
  4591. data.append({"max":max(e24),"maxtime":e24_time[e24.index(max(e24))],"min":min(e24),"mintime":e24_time[e24.index(min(e24))],"enum":qxz_dict_1[i['e24'].split('#')[1]],"ekey":i['e24'].split('#')[2]})
  4592. if e25 != []:
  4593. data.append({"max":max(e25),"maxtime":e25_time[e25.index(max(e25))],"min":min(e25),"mintime":e25_time[e25.index(min(e25))],"enum":qxz_dict_1[i['e25'].split('#')[1]],"ekey":i['e25'].split('#')[2]})
  4594. if e26 != []:
  4595. data.append({"max":max(e26),"maxtime":e26_time[e26.index(max(e26))],"min":min(e26),"mintime":e26_time[e26.index(min(e26))],"enum":qxz_dict_1[i['e26'].split('#')[1]],"ekey":i['e26'].split('#')[2]})
  4596. if e27 != []:
  4597. data.append({"max":max(e27),"maxtime":e27_time[e27.index(max(e27))],"min":min(e27),"mintime":e27_time[e27.index(min(e27))],"enum":qxz_dict_1[i['e27'].split('#')[1]],"ekey":i['e27'].split('#')[2]})
  4598. if e28 != []:
  4599. data.append({"max":max(e28),"maxtime":e28_time[e28.index(max(e28))],"min":min(e28),"mintime":e28_time[e28.index(min(e28))],"enum":qxz_dict_1[i['e28'].split('#')[1]],"ekey":i['e28'].split('#')[2]})
  4600. if e29 != []:
  4601. data.append({"max":max(e29),"maxtime":e29_time[e29.index(max(e29))],"min":min(e29),"mintime":e29_time[e29.index(min(e29))],"enum":qxz_dict_1[i['e29'].split('#')[1]],"ekey":i['e29'].split('#')[2]})
  4602. if e30 != []:
  4603. data.append({"max":max(e30),"maxtime":e30_time[e30.index(max(e30))],"min":min(e30),"mintime":e30_time[e30.index(min(e30))],"enum":qxz_dict_1[i['e30'].split('#')[1]],"ekey":i['e30'].split('#')[2]})
  4604. except Exception as e:
  4605. print("报错信息为:",e)
  4606. x = QXZ_Conf.objects.get(equip_id=e_id)
  4607. conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
  4608. "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
  4609. "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
  4610. "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
  4611. "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
  4612. "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
  4613. "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
  4614. dat = {"data":data,"conf":conf}
  4615. # print(dat)
  4616. dat = json.dumps(dat,cls=CJSONEncoder)
  4617. return HttpResponse(dat)
  4618. #测报灯API开放接口
  4619. class CBD_Mqtt_Configure(ListView):
  4620. def post(self, request):
  4621. uid = request.POST.get('uid')
  4622. equip_id = request.POST.get('imei')
  4623. if equip_validation(uid,equip_id) == "0":
  4624. try:
  4625. # equip_id = request.POST.get('id') # 设备id
  4626. # imgUpNum = request.POST.get('imgUpNum')# 图片上传时间模式
  4627. imgres = int(request.POST.get('imgres')) # 图片分辨率
  4628. collt = int(request.POST.get('dropTime')) # 落虫时间
  4629. htim = int(request.POST.get('calefactionTime')) # 加热时间
  4630. hst = int(request.POST.get('calefactionTemperature')) # 加热温度
  4631. tph = int(request.POST.get('highLimit')) # 加热仓温度上限
  4632. tpl = int(request.POST.get('lowLimit')) # 加热仓温度下限加热仓温度下限
  4633. datt = int(request.POST.get('dataUpTime')) # 数据上传时间间隔
  4634. print("设备id:equip_id:", equip_id)
  4635. # print("imgUpNum:",imgUpNum)
  4636. print("图片分辨率imgres:", imgres)
  4637. print("落虫时间collt:", collt)
  4638. print("加热时间htim:", htim)
  4639. print("加热温度hst:", hst)
  4640. print("加热仓温度上限tph:", tph)
  4641. print("加热仓温度下限tpl:", tpl)
  4642. print("数据上传时间间隔datt:", datt)
  4643. # 参数范围判断
  4644. if imgres not in range(0,3) or collt not in range(5,21) or htim not in range(5,21) \
  4645. or hst not in range(75,126) or tph not in range(40,71) or tpl not in range(-5,11) or datt not in range(5,61):
  4646. data = api_code[3]
  4647. data = json.dumps(data)
  4648. print(data)
  4649. return HttpResponse(data)
  4650. topic = "/yfkj/cbd/sub/"+ equip_id # [1:-1]
  4651. print("topic:", topic)
  4652. ts = int(request.POST.get('ts')) # 定时模式
  4653. print("定时模式ts:", ts)
  4654. if ts == 0:
  4655. tt = int(request.POST.get('timingLength')) # 定时时长
  4656. print("定时时长tt:", tt)
  4657. if tt not in range(1,9):
  4658. data = api_code[3]
  4659. data = json.dumps(data)
  4660. print(data)
  4661. return HttpResponse(data)
  4662. payload = {"cmd": "paramconf",
  4663. "ext": {"ts": ts, "tt": tt, "collt": collt,"htim": htim, "hst": hst,
  4664. "tph": tph, "tpl": tpl, "datt": datt, "imgres": imgres}}
  4665. elif ts == 1:
  4666. st = int(request.POST.get('begin')) # 开始时间
  4667. et = int(request.POST.get('end')) # 结束时间
  4668. print("开始时间st:", st)
  4669. print("结束时间et:", et)
  4670. if st not in range(0,25) or et not in range(0,25):
  4671. data = api_code[3]
  4672. data = json.dumps(data)
  4673. print(data)
  4674. return HttpResponse(data)
  4675. payload = {"cmd": "paramconf",
  4676. "ext": {"ts": ts, "st": st, "et": et, "collt": collt,
  4677. "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": imgres}}
  4678. else:
  4679. data = api_code[1]
  4680. data = json.dumps(data)
  4681. print(data)
  4682. return HttpResponse(data)
  4683. except Exception as e:
  4684. print(e)
  4685. data = api_code[1]
  4686. data = json.dumps(data)
  4687. print(data)
  4688. return HttpResponse(data)
  4689. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  4690. print(json.dumps(payload, indent=1))
  4691. if ip == "172.16.220.3":
  4692. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  4693. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  4694. else:
  4695. res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  4696. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  4697. print("res.status_code:", type(res.status_code))
  4698. if res.status_code == 200:
  4699. data = api_code[0]
  4700. data = json.dumps(data)
  4701. print(data)
  4702. return HttpResponse(data)
  4703. else:
  4704. data = api_code[4]
  4705. data = json.dumps(data)
  4706. print(data)
  4707. return HttpResponse(data)
  4708. else:
  4709. data = api_code[2]
  4710. data = json.dumps(data)
  4711. print(data)
  4712. return HttpResponse(data)