json_handle.c 277 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501
  1. #include "json_handle.h"
  2. #include "sqlite_handle.h"
  3. #include "elog.h"
  4. #include <string.h>
  5. #include <time.h>
  6. #include "common.h"
  7. #include "list.h"
  8. #include "file.h"
  9. #include "sys.h"
  10. #include "lock.h"
  11. #include "cascade.h"
  12. #include "netswitch.h"
  13. #define TOTAL_COUNT 60 //计数长度
  14. static const uint8_t base64_enc_map[64] =
  15. {
  16. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
  17. 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
  18. 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
  19. 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
  20. 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
  21. 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
  22. '8', '9', '+', '/'
  23. };
  24. static int base64_len(int n)
  25. {
  26. return ((n / 3) + (n % 3 ? 1 : 0)) * 4 + 1;
  27. }
  28. static int base64_encode(uint8_t *src, size_t slen, uint8_t *dst, size_t dlen)
  29. {
  30. size_t i, n;
  31. int C1, C2, C3;
  32. uint8_t *p;
  33. if( slen == 0 ){
  34. return -1;
  35. }
  36. n = (slen / 3 + ( slen % 3 != 0 )) * 4;
  37. if( ( dlen < n + 1 ) || ( NULL == dst ) ) {
  38. return -1;
  39. }
  40. n = ( slen / 3 ) * 3;
  41. for( i = 0, p = dst; i < n; i += 3 ) {
  42. C1 = *src++;
  43. C2 = *src++;
  44. C3 = *src++;
  45. *p++ = base64_enc_map[(C1 >> 2) & 0x3F];
  46. *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F];
  47. *p++ = base64_enc_map[(((C2 & 15) << 2) + (C3 >> 6)) & 0x3F];
  48. *p++ = base64_enc_map[C3 & 0x3F];
  49. }
  50. if( i < slen ) {
  51. C1 = *src++;
  52. C2 = ( ( i + 1 ) < slen ) ? *src++ : 0;
  53. *p++ = base64_enc_map[(C1 >> 2) & 0x3F];
  54. *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F];
  55. if( ( i + 1 ) < slen )
  56. *p++ = base64_enc_map[((C2 & 15) << 2) & 0x3F];
  57. else *p++ = '=';
  58. *p++ = '=';
  59. }
  60. *p = 0;
  61. return (p - dst);
  62. }
  63. static int image_to_base64(char *path, buf_t *buf)
  64. {
  65. int r=0,blen;
  66. buf_t fbuf;
  67. r = file_load(path, &fbuf);
  68. if(r) {
  69. return -1;
  70. }
  71. blen = base64_len(fbuf.dlen)+100;
  72. buf->buf = malloc(blen);
  73. if(buf->buf) {
  74. buf->blen = blen;
  75. buf->dlen = 0;
  76. strcpy(buf->buf, "data:image/png;base64,");
  77. int slen = strlen(buf->buf);
  78. buf->dlen = base64_encode((uint8_t*)fbuf.buf, fbuf.blen, (uint8_t*)buf->buf+slen, buf->blen)+slen;
  79. }
  80. else {
  81. r = -1;
  82. }
  83. free(fbuf.buf);
  84. return r;
  85. }
  86. static int get_base64(buf_t *logo, buf_t *qrcode)
  87. {
  88. char path[200],temp[200];
  89. sys_get_path(path, IMAGE_FOLDER);
  90. if(logo) {
  91. sprintf(temp, "%s/%s", path, LOGO_FILE);
  92. image_to_base64(temp, logo);
  93. }
  94. if (qrcode) {
  95. sprintf(temp, "%s/%s", path, QRCODE_FILE);
  96. image_to_base64(temp, qrcode);
  97. }
  98. return 0;
  99. }
  100. //如果是在一个程序的循环中不断调用这个函数,那么是没有效果的
  101. //虽然也是使用的系统的时间函数来初始化随机数发生器,但程序的
  102. //执行速度太快了,可能执行1000次循环返回的秒数都是一样的
  103. //time返回时间戳
  104. void get_rand_str(char* s,int num)
  105. {
  106. //定义随机生成字符串表
  107. char *str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,./;\"'<>?";
  108. int i,lstr;
  109. char ss[2] = {0};
  110. lstr = strlen(str);//计算字符串长度
  111. srand((unsigned int)time((time_t *)NULL));//使用系统时间来初始化随机数发生器
  112. for(i = 1; i <= num; i++)
  113. {//按指定大小返回相应的字符串
  114. sprintf(ss,"%c",str[(rand()%lstr)]);//rand()%lstr 可随机返回0-71之间的整数, str[0-71]可随机得到其中的字符
  115. strcat(s,ss);//将随机生成的字符串连接到指定数组后面
  116. }
  117. }
  118. /// @brief 返回登录信息
  119. /// @param token
  120. /// @return
  121. char* log_info_to_json(const char* token)
  122. {
  123. char* str = NULL;
  124. // 创建 JSON 对象
  125. cJSON* root = cJSON_CreateObject();
  126. // 添加基本键值对
  127. cJSON_AddNumberToObject(root, "code", 200);
  128. //添加结果
  129. cJSON_AddStringToObject(root, "token", token);
  130. //添加结果
  131. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  132. //转换
  133. str = cJSON_Print(root);
  134. //释放资源
  135. cJSON_Delete(root);
  136. return str;
  137. }
  138. /// @brief 返回登录信息
  139. /// @param token
  140. /// @return
  141. char* log_LoginFailedinfo_to_json()
  142. {
  143. char* str = NULL;
  144. // 创建 JSON 对象
  145. cJSON* root = cJSON_CreateObject();
  146. // 添加基本键值对
  147. cJSON_AddNumberToObject(root, "code", 201);
  148. //添加结果
  149. cJSON_AddStringToObject(root, "msg", language_login_wrong_param[__globalDeviceManage._globalDevInfo.product.language]);
  150. //转换
  151. str = cJSON_Print(root);
  152. //释放资源
  153. cJSON_Delete(root);
  154. return str;
  155. }
  156. /// @brief 返回授权错误信息
  157. /// @param token
  158. /// @return
  159. char* log_AthFailedinfo_to_json()
  160. {
  161. char* str = NULL;
  162. // 创建 JSON 对象
  163. cJSON* root = cJSON_CreateObject();
  164. // 添加基本键值对
  165. cJSON_AddNumberToObject(root, "code", 401);
  166. //添加结果
  167. cJSON_AddStringToObject(root, "msg", language_login_query_failed[__globalDeviceManage._globalDevInfo.product.language]);
  168. //转换
  169. str = cJSON_Print(root);
  170. //释放资源
  171. cJSON_Delete(root);
  172. return str;
  173. }
  174. /// @brief 返回用户信息
  175. /// @return
  176. char* user_info_to_json(void)
  177. {
  178. char* str = NULL;
  179. // 创建 JSON 对象
  180. cJSON* root = cJSON_CreateObject();
  181. //添加结果
  182. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  183. // 添加基本键值对
  184. cJSON_AddNumberToObject(root, "code", 200);
  185. //添加permissions 数组
  186. cJSON* data_permissions_array = cJSON_CreateArray();
  187. cJSON_AddStringToObject(data_permissions_array,"*:*","*:*");
  188. cJSON_AddItemToObject(root, "permissions", data_permissions_array);
  189. //添加roles 数组
  190. cJSON* data_roles_array = cJSON_CreateArray();
  191. cJSON_AddStringToObject(data_roles_array,"admin","admin");
  192. cJSON_AddItemToObject(root, "roles", data_roles_array);
  193. //添加user信息 子对象
  194. cJSON* user_data_filed = cJSON_CreateObject();
  195. cJSON_AddStringToObject(user_data_filed,"createBy","admin");
  196. cJSON_AddStringToObject(user_data_filed,"createTime","2024-01-23 22:15:10");
  197. cJSON_AddStringToObject(user_data_filed,"updateBy","");
  198. cJSON_AddStringToObject(user_data_filed,"updateTime","");
  199. cJSON_AddStringToObject(user_data_filed,"remark",language_root_name[__globalDeviceManage._globalDevInfo.product.language]);
  200. //添加参数信息
  201. cJSON* param_data_filed = cJSON_CreateObject();
  202. cJSON_AddStringToObject(param_data_filed,"@type","java.util.HashMap");
  203. cJSON_AddItemToObject(user_data_filed, "params", param_data_filed);
  204. //添加信息
  205. cJSON_AddNumberToObject(user_data_filed,"userId",_GlobalUserInfoNew.userID);
  206. cJSON_AddStringToObject(user_data_filed,"userName",_GlobalUserInfoNew.userName);
  207. cJSON_AddStringToObject(user_data_filed,"nickName",_GlobalUserInfoNew.nickName);
  208. cJSON_AddStringToObject(user_data_filed,"email","ry@163.com");
  209. cJSON_AddStringToObject(user_data_filed,"phonenumber","15888888888");
  210. cJSON_AddStringToObject(user_data_filed,"avatar","");
  211. cJSON_AddStringToObject(user_data_filed,"password",_GlobalUserInfoNew.userPW);
  212. cJSON_AddStringToObject(user_data_filed,"status","0");
  213. cJSON_AddStringToObject(user_data_filed,"delFlag","0");
  214. cJSON_AddStringToObject(user_data_filed,"loginIp","127.0.0.1");
  215. cJSON_AddStringToObject(user_data_filed,"loginDate","2024-02-19T22:31:48.000+08:00");
  216. //添加角色信息 数组
  217. cJSON* user_role_array = cJSON_CreateArray();
  218. cJSON* role_data_filed = cJSON_CreateObject();
  219. cJSON_AddStringToObject(role_data_filed,"createBy","");
  220. cJSON_AddStringToObject(role_data_filed,"createTime","");
  221. cJSON_AddStringToObject(role_data_filed,"updateBy","");
  222. cJSON_AddStringToObject(role_data_filed,"updateTime","");
  223. cJSON_AddStringToObject(role_data_filed,"remark","");
  224. //添加参数信息
  225. cJSON* role_param_data_filed = cJSON_CreateObject();
  226. cJSON_AddStringToObject(role_param_data_filed,"@type","java.util.HashMap");
  227. cJSON_AddItemToObject(role_data_filed, "params", role_param_data_filed);
  228. //添加信息
  229. cJSON_AddNumberToObject(role_data_filed,"roleId",_GlobalUserInfoNew.roleID);
  230. cJSON_AddStringToObject(role_data_filed,"roleName",language_root_name[__globalDeviceManage._globalDevInfo.product.language]);
  231. cJSON_AddStringToObject(role_data_filed,"roleKey","admin");
  232. cJSON_AddNumberToObject(role_data_filed,"roleSort",1);
  233. cJSON_AddStringToObject(role_data_filed,"dataScope","1");
  234. cJSON_AddBoolToObject(role_data_filed,"menuCheckStrictly",false);
  235. cJSON_AddBoolToObject(role_data_filed,"deptCheckStrictly",false);
  236. cJSON_AddStringToObject(role_data_filed,"status","0");
  237. cJSON_AddStringToObject(role_data_filed,"delFlag","");
  238. cJSON_AddBoolToObject(role_data_filed,"flag",false);
  239. cJSON_AddStringToObject(role_data_filed,"menuIds","");
  240. cJSON_AddStringToObject(role_data_filed,"deptIds","");
  241. cJSON_AddStringToObject(role_data_filed,"permissions","");
  242. cJSON_AddBoolToObject(role_data_filed,"admin",true);
  243. cJSON_AddItemToObject(user_role_array, "roles", role_data_filed);
  244. cJSON_AddItemToObject(user_data_filed, "roles", user_role_array);
  245. //添加信息
  246. //数组外添加信息
  247. cJSON_AddStringToObject(user_data_filed,"roleIds","");
  248. cJSON_AddStringToObject(user_data_filed,"postIds","");
  249. cJSON_AddStringToObject(user_data_filed,"roleId","");
  250. cJSON_AddStringToObject(user_data_filed,"token",_GlobalUserToken);
  251. cJSON_AddBoolToObject(user_data_filed,"admin",true);
  252. cJSON_AddItemToObject(root, "user", user_data_filed);
  253. //转换
  254. str = cJSON_Print(root);
  255. cJSON_Delete(root);
  256. return str;
  257. }
  258. //获取菜单信息
  259. char* user_routers_info_to_json(void)
  260. {
  261. char *str=NULL;
  262. cJSON *tmp,*tmp1,*tmp2,*tmp3;
  263. GlobalDeviceManager *dm=&__globalDeviceManage;
  264. // 创建 JSON 对象
  265. cJSON* root = cJSON_CreateObject();
  266. //添加结果
  267. cJSON_AddStringToObject(root, "msg", language_Operation_Success[dm->_globalDevInfo.product.language]);
  268. // 添加基本键值对
  269. cJSON_AddNumberToObject(root, "code", 200);
  270. //data区
  271. cJSON* data_array = cJSON_CreateArray();
  272. //第一块 电源监控
  273. cJSON* data1_filed = cJSON_CreateObject();
  274. cJSON_AddStringToObject(data1_filed,"name","Power");
  275. cJSON_AddStringToObject(data1_filed,"path","/power");
  276. cJSON_AddBoolToObject(data1_filed,"hidden",false);
  277. cJSON_AddStringToObject(data1_filed,"redirect","noRedirect");
  278. cJSON_AddStringToObject(data1_filed,"component","Layout");
  279. cJSON_AddBoolToObject(data1_filed,"alwaysShow",true);
  280. //meta
  281. cJSON* meta_data1_filed = cJSON_CreateObject();
  282. cJSON_AddStringToObject(meta_data1_filed,"title",language_power_monitor[dm->_globalDevInfo.product.language]);
  283. cJSON_AddStringToObject(meta_data1_filed,"icon","monitor");
  284. cJSON_AddBoolToObject(meta_data1_filed,"noCache",false);
  285. cJSON_AddStringToObject(meta_data1_filed,"link","");
  286. cJSON_AddItemToObject(data1_filed, "meta", meta_data1_filed);
  287. //children
  288. cJSON* children1_data_array = cJSON_CreateArray();
  289. cJSON* children1_data1_filed = cJSON_CreateObject();
  290. cJSON_AddStringToObject(children1_data1_filed,"name","Monitorall");
  291. cJSON_AddStringToObject(children1_data1_filed,"path","monitorall");
  292. cJSON_AddBoolToObject(children1_data1_filed,"hidden",false);
  293. cJSON_AddStringToObject(children1_data1_filed,"component","power/monitorall/index");
  294. cJSON* children1_meta1_data1_filed = cJSON_CreateObject();
  295. cJSON_AddStringToObject(children1_meta1_data1_filed,"title",language_power_sts_monitor[dm->_globalDevInfo.product.language]);
  296. cJSON_AddStringToObject(children1_meta1_data1_filed,"icon","monitor");
  297. cJSON_AddBoolToObject(children1_meta1_data1_filed,"noCache",false);
  298. cJSON_AddStringToObject(children1_meta1_data1_filed,"link","");
  299. cJSON_AddItemToObject(children1_data1_filed, "meta", children1_meta1_data1_filed);
  300. if( _GlobalMenuAuthority.MonitorallEnabled)cJSON_AddItemToObject(children1_data_array, "children", children1_data1_filed);
  301. cJSON* children1_data2_filed = cJSON_CreateObject();
  302. cJSON_AddStringToObject(children1_data2_filed,"name","Channelstatus");
  303. cJSON_AddStringToObject(children1_data2_filed,"path","channelstatus");
  304. cJSON_AddBoolToObject(children1_data2_filed,"hidden",false);
  305. cJSON_AddStringToObject(children1_data2_filed,"component","power/channelstatus/index");
  306. cJSON* children1_meta1_data2_filed = cJSON_CreateObject();
  307. cJSON_AddStringToObject(children1_meta1_data2_filed,"title",language_power_channel_sts_monitor[dm->_globalDevInfo.product.language]);
  308. cJSON_AddStringToObject(children1_meta1_data2_filed,"icon","server");
  309. cJSON_AddBoolToObject(children1_meta1_data2_filed,"noCache",false);
  310. cJSON_AddStringToObject(children1_meta1_data2_filed,"link","");
  311. cJSON_AddItemToObject(children1_data2_filed, "meta", children1_meta1_data2_filed);
  312. if(_GlobalMenuAuthority.ChannelstatusEnabled ) cJSON_AddItemToObject(children1_data_array, "children", children1_data2_filed);
  313. cJSON* children1_data2_1_filed = cJSON_CreateObject();
  314. cJSON_AddStringToObject(children1_data2_1_filed,"name","Switchtatus");
  315. cJSON_AddStringToObject(children1_data2_1_filed,"path","switchtatus");
  316. cJSON_AddBoolToObject(children1_data2_1_filed,"hidden",false);
  317. cJSON_AddStringToObject(children1_data2_1_filed,"component","power/switchtatus/index");
  318. cJSON* children1_meta1_data2_1_filed = cJSON_CreateObject();
  319. cJSON_AddStringToObject(children1_meta1_data2_1_filed,"title",language_power_switch_sts_monitor[dm->_globalDevInfo.product.language]);
  320. cJSON_AddStringToObject(children1_meta1_data2_1_filed,"icon","switch");
  321. cJSON_AddBoolToObject(children1_meta1_data2_1_filed,"noCache",false);
  322. cJSON_AddStringToObject(children1_meta1_data2_1_filed,"link","");
  323. cJSON_AddItemToObject(children1_data2_1_filed, "meta", children1_meta1_data2_1_filed);
  324. if( _GlobalMenuAuthority.SwitchtatusEnabled)cJSON_AddItemToObject(children1_data_array, "children", children1_data2_1_filed);
  325. cJSON* children1_data3_filed = cJSON_CreateObject();
  326. cJSON_AddStringToObject(children1_data3_filed,"name","Monitorhistory");
  327. cJSON_AddStringToObject(children1_data3_filed,"path","monitorhistory");
  328. cJSON_AddBoolToObject(children1_data3_filed,"hidden",false);
  329. cJSON_AddStringToObject(children1_data3_filed,"component","power/monitorhistory/index");
  330. cJSON* children1_meta1_data3_filed = cJSON_CreateObject();
  331. cJSON_AddStringToObject(children1_meta1_data3_filed,"title",language_power_history_search[dm->_globalDevInfo.product.language]);
  332. cJSON_AddStringToObject(children1_meta1_data3_filed,"icon","chart");
  333. cJSON_AddBoolToObject(children1_meta1_data3_filed,"noCache",false);
  334. cJSON_AddStringToObject(children1_meta1_data3_filed,"link","");
  335. cJSON_AddItemToObject(children1_data3_filed, "meta", children1_meta1_data3_filed);
  336. if(_GlobalMenuAuthority.MonitorhistoryEnabled)cJSON_AddItemToObject(children1_data_array, "children", children1_data3_filed);
  337. cJSON_AddItemToObject(data1_filed, "children", children1_data_array);
  338. if ( _GlobalMenuAuthority.PowerEnabled) cJSON_AddItemToObject(data_array, "data", data1_filed);
  339. //第二块 传感器监控
  340. cJSON* data2_filed = cJSON_CreateObject();
  341. cJSON_AddStringToObject(data2_filed,"name","Sensor");
  342. cJSON_AddStringToObject(data2_filed,"path","/sensor");
  343. cJSON_AddBoolToObject(data2_filed,"hidden",false);
  344. cJSON_AddStringToObject(data2_filed,"redirect","noRedirect");
  345. cJSON_AddStringToObject(data2_filed,"component","Layout");
  346. cJSON_AddBoolToObject(data2_filed,"alwaysShow",true);
  347. cJSON* meta_data2_filed = cJSON_CreateObject();
  348. cJSON_AddStringToObject(meta_data2_filed,"title",language_sensor_monitoring[dm->_globalDevInfo.product.language]);
  349. cJSON_AddStringToObject(meta_data2_filed,"icon","slider");
  350. cJSON_AddBoolToObject(meta_data2_filed,"noCache",false);
  351. cJSON_AddStringToObject(meta_data2_filed,"link","");
  352. cJSON_AddItemToObject(data2_filed, "meta", meta_data2_filed);
  353. //children
  354. cJSON* children2_data_array = cJSON_CreateArray();
  355. cJSON* children2_data1_filed = cJSON_CreateObject();
  356. cJSON_AddStringToObject(children2_data1_filed,"name","SensorStatus");
  357. cJSON_AddStringToObject(children2_data1_filed,"path","sensorStatus");
  358. cJSON_AddBoolToObject(children2_data1_filed,"hidden",false);
  359. cJSON_AddStringToObject(children2_data1_filed,"component","sensor/sensorStatus/index");
  360. cJSON* children2_meta1_data1_filed = cJSON_CreateObject();
  361. cJSON_AddStringToObject(children2_meta1_data1_filed,"title",language_sensor_status_monitoring[dm->_globalDevInfo.product.language]);
  362. cJSON_AddStringToObject(children2_meta1_data1_filed,"icon","monitor");
  363. cJSON_AddBoolToObject(children2_meta1_data1_filed,"noCache",false);
  364. cJSON_AddStringToObject(children2_meta1_data1_filed,"link","");
  365. cJSON_AddItemToObject(children2_data1_filed, "meta", children2_meta1_data1_filed);
  366. if(_GlobalMenuAuthority.SensorStatusEnabled)cJSON_AddItemToObject(children2_data_array, "children", children2_data1_filed);
  367. cJSON* children2_data2_filed = cJSON_CreateObject();
  368. cJSON_AddStringToObject(children2_data2_filed,"name","SensorHistory");
  369. cJSON_AddStringToObject(children2_data2_filed,"path","sensorHistory");
  370. cJSON_AddBoolToObject(children2_data2_filed,"hidden",false);
  371. cJSON_AddStringToObject(children2_data2_filed,"component","sensor/sensorHistory/index");
  372. cJSON* children2_meta2_data2_filed = cJSON_CreateObject();
  373. cJSON_AddStringToObject(children2_meta2_data2_filed,"title",language_sensor_history_search[dm->_globalDevInfo.product.language]);
  374. cJSON_AddStringToObject(children2_meta2_data2_filed,"icon","chart");
  375. cJSON_AddBoolToObject(children2_meta2_data2_filed,"noCache",false);
  376. cJSON_AddStringToObject(children2_meta2_data2_filed,"link","");
  377. cJSON_AddItemToObject(children2_data2_filed, "meta", children2_meta2_data2_filed);
  378. if(_GlobalMenuAuthority.SensorHistorylEnabled)cJSON_AddItemToObject(children2_data_array, "children", children2_data2_filed);
  379. cJSON_AddItemToObject(data2_filed, "children", children2_data_array);
  380. if(_GlobalMenuAuthority.SensorEnabled)cJSON_AddItemToObject(data_array, "data", data2_filed);
  381. //第三块 告警保护
  382. cJSON* data3_filed = cJSON_CreateObject();
  383. cJSON_AddStringToObject(data3_filed,"name","Jgbh");
  384. cJSON_AddStringToObject(data3_filed,"path","/jgbh");
  385. cJSON_AddBoolToObject(data3_filed,"hidden",false);
  386. cJSON_AddStringToObject(data3_filed,"redirect","noRedirect");
  387. cJSON_AddStringToObject(data3_filed,"component","Layout");
  388. cJSON_AddBoolToObject(data3_filed,"alwaysShow",true);
  389. cJSON* meta_data3_filed = cJSON_CreateObject();
  390. cJSON_AddStringToObject(meta_data3_filed,"title",language_Alarm_protection[dm->_globalDevInfo.product.language]);
  391. cJSON_AddStringToObject(meta_data3_filed,"icon","bug");
  392. cJSON_AddBoolToObject(meta_data3_filed,"noCache",false);
  393. cJSON_AddStringToObject(meta_data3_filed,"link","");
  394. cJSON_AddItemToObject(data3_filed, "meta", meta_data3_filed);
  395. //children
  396. cJSON* children3_data_array = cJSON_CreateArray();
  397. cJSON* children3_data1_filed = cJSON_CreateObject();
  398. cJSON_AddStringToObject(children3_data1_filed,"name","Xtjg");
  399. cJSON_AddStringToObject(children3_data1_filed,"path","xtjg");
  400. cJSON_AddBoolToObject(children3_data1_filed,"hidden",false);
  401. cJSON_AddStringToObject(children3_data1_filed,"component","jgbh/xtjg/index");
  402. cJSON* children3_meta1_data1_filed = cJSON_CreateObject();
  403. cJSON_AddStringToObject(children3_meta1_data1_filed,"title",language_Alarm_System[dm->_globalDevInfo.product.language]);
  404. cJSON_AddStringToObject(children3_meta1_data1_filed,"icon","list");
  405. cJSON_AddBoolToObject(children3_meta1_data1_filed,"noCache",false);
  406. cJSON_AddStringToObject(children3_meta1_data1_filed,"link","");
  407. cJSON_AddItemToObject(children3_data1_filed, "meta", children3_meta1_data1_filed);
  408. if(_GlobalMenuAuthority.XtjgEnabled)cJSON_AddItemToObject(children3_data_array, "children", children3_data1_filed);
  409. cJSON* children3_data2_filed = cJSON_CreateObject();
  410. cJSON_AddStringToObject(children3_data2_filed,"name","Fzsz");
  411. cJSON_AddStringToObject(children3_data2_filed,"path","fzsz");
  412. cJSON_AddBoolToObject(children3_data2_filed,"hidden",false);
  413. cJSON_AddStringToObject(children3_data2_filed,"component","jgbh/fzsz/index");
  414. cJSON* children3_meta2_data1_filed = cJSON_CreateObject();
  415. cJSON_AddStringToObject(children3_meta2_data1_filed,"title",language_Alarm_Threshold_rule[dm->_globalDevInfo.product.language]);
  416. cJSON_AddStringToObject(children3_meta2_data1_filed,"icon","build");
  417. cJSON_AddBoolToObject(children3_meta2_data1_filed,"noCache",false);
  418. cJSON_AddStringToObject(children3_meta2_data1_filed,"link","");
  419. cJSON_AddItemToObject(children3_data2_filed, "meta", children3_meta2_data1_filed);
  420. if(_GlobalMenuAuthority.YzszEnabled)cJSON_AddItemToObject(children3_data_array, "children", children3_data2_filed);
  421. cJSON_AddItemToObject(data3_filed, "children", children3_data_array);
  422. if(_GlobalMenuAuthority.AlarmEnabled)cJSON_AddItemToObject(data_array, "data", data3_filed);
  423. //第四块 日志信息
  424. cJSON* data4_filed = cJSON_CreateObject();
  425. cJSON_AddStringToObject(data4_filed,"name","Rzxx");
  426. cJSON_AddStringToObject(data4_filed,"path","/rzxx");
  427. cJSON_AddBoolToObject(data4_filed,"hidden",false);
  428. cJSON_AddStringToObject(data4_filed,"redirect","noRedirect");
  429. cJSON_AddStringToObject(data4_filed,"component","Layout");
  430. cJSON_AddBoolToObject(data4_filed,"alwaysShow",true);
  431. cJSON* meta_data4_filed = cJSON_CreateObject();
  432. cJSON_AddStringToObject(meta_data4_filed,"title",language_log_information[dm->_globalDevInfo.product.language]);
  433. cJSON_AddStringToObject(meta_data4_filed,"icon","log");
  434. cJSON_AddBoolToObject(meta_data4_filed,"noCache",false);
  435. cJSON_AddStringToObject(meta_data4_filed,"link","");
  436. cJSON_AddItemToObject(data4_filed, "meta", meta_data4_filed);
  437. //children
  438. cJSON* children4_data_array = cJSON_CreateArray();
  439. //cJSON* children4_data1_filed = cJSON_CreateObject();
  440. // cJSON_AddStringToObject(children4_data1_filed,"name","Gjrz");
  441. // cJSON_AddStringToObject(children4_data1_filed,"path","gjrz");
  442. // cJSON_AddBoolToObject(children4_data1_filed,"hidden",false);
  443. // cJSON_AddStringToObject(children4_data1_filed,"component","rzxx/gjrz/index");
  444. // cJSON* children4_meta1_data1_filed = cJSON_CreateObject();
  445. // cJSON_AddStringToObject(children4_meta1_data1_filed,"title",language_log_Alarm[dm->_globalDevInfo.product.language]);
  446. // cJSON_AddStringToObject(children4_meta1_data1_filed,"icon","#");
  447. // cJSON_AddBoolToObject(children4_meta1_data1_filed,"noCache",false);
  448. // cJSON_AddStringToObject(children4_meta1_data1_filed,"link","");
  449. // cJSON_AddItemToObject(children4_data1_filed, "meta", children4_meta1_data1_filed);
  450. // cJSON_AddItemToObject(children4_data_array, "children", children4_data1_filed);
  451. cJSON* children4_data2_filed = cJSON_CreateObject();
  452. cJSON_AddStringToObject(children4_data2_filed,"name","Czrz");
  453. cJSON_AddStringToObject(children4_data2_filed,"path","czrz");
  454. cJSON_AddBoolToObject(children4_data2_filed,"hidden",false);
  455. cJSON_AddStringToObject(children4_data2_filed,"component","rzxx/czrz/index");
  456. cJSON* children4_meta2_data1_filed = cJSON_CreateObject();
  457. cJSON_AddStringToObject(children4_meta2_data1_filed,"title",language_log_operation[dm->_globalDevInfo.product.language]);
  458. cJSON_AddStringToObject(children4_meta2_data1_filed,"icon","chart");
  459. cJSON_AddBoolToObject(children4_meta2_data1_filed,"noCache",false);
  460. cJSON_AddStringToObject(children4_meta2_data1_filed,"link","");
  461. cJSON_AddItemToObject(children4_data2_filed, "meta", children4_meta2_data1_filed);
  462. if( _GlobalMenuAuthority.CzrzEnabled) cJSON_AddItemToObject(children4_data_array, "children", children4_data2_filed);
  463. cJSON* children4_data3_filed = cJSON_CreateObject();
  464. cJSON_AddStringToObject(children4_data3_filed,"name","Yxrz");
  465. cJSON_AddStringToObject(children4_data3_filed,"path","yxrz");
  466. cJSON_AddBoolToObject(children4_data3_filed,"hidden",false);
  467. cJSON_AddStringToObject(children4_data3_filed,"component","rzxx/yxrz/index");
  468. cJSON* children4_meta3_data1_filed = cJSON_CreateObject();
  469. cJSON_AddStringToObject(children4_meta3_data1_filed,"title",language_log_running[dm->_globalDevInfo.product.language]);
  470. cJSON_AddStringToObject(children4_meta3_data1_filed,"icon","documentation");
  471. cJSON_AddBoolToObject(children4_meta3_data1_filed,"noCache",false);
  472. cJSON_AddStringToObject(children4_meta3_data1_filed,"link","");
  473. cJSON_AddItemToObject(children4_data3_filed, "meta", children4_meta3_data1_filed);
  474. if(_GlobalMenuAuthority.YxrzEnabled)cJSON_AddItemToObject(children4_data_array, "children", children4_data3_filed);
  475. cJSON_AddItemToObject(data4_filed, "children", children4_data_array);
  476. if(_GlobalMenuAuthority.LogEnabled)cJSON_AddItemToObject(data_array, "data", data4_filed);
  477. //第五块 用户管理
  478. cJSON* data_filed = cJSON_CreateObject();
  479. cJSON_AddStringToObject(data_filed,"name","System");
  480. cJSON_AddStringToObject(data_filed,"path","/system");
  481. cJSON_AddBoolToObject(data_filed,"hidden",false);
  482. cJSON_AddStringToObject(data_filed,"redirect","noRedirect");
  483. cJSON_AddStringToObject(data_filed,"component","Layout");
  484. cJSON_AddBoolToObject(data_filed,"alwaysShow",true);
  485. //meta
  486. cJSON* meta_data_filed = cJSON_CreateObject();
  487. cJSON_AddStringToObject(meta_data_filed,"title",language_user_manage[dm->_globalDevInfo.product.language]);
  488. cJSON_AddStringToObject(meta_data_filed,"icon","system");
  489. cJSON_AddBoolToObject(meta_data_filed,"noCache",false);
  490. cJSON_AddStringToObject(meta_data_filed,"link","");
  491. cJSON_AddItemToObject(data_filed, "meta", meta_data_filed);
  492. //children
  493. cJSON* children_data_array = cJSON_CreateArray();
  494. cJSON* children_data_filed = cJSON_CreateObject();
  495. cJSON_AddStringToObject(children_data_filed,"name","User");
  496. cJSON_AddStringToObject(children_data_filed,"path","user");
  497. cJSON_AddBoolToObject(children_data_filed,"hidden",false);
  498. cJSON_AddStringToObject(children_data_filed,"component","system/user/index");
  499. cJSON* children_meta_data_filed = cJSON_CreateObject();
  500. cJSON_AddStringToObject(children_meta_data_filed,"title",language_user_manage[dm->_globalDevInfo.product.language]);
  501. cJSON_AddStringToObject(children_meta_data_filed,"icon","user");
  502. cJSON_AddBoolToObject(children_meta_data_filed,"noCache",false);
  503. cJSON_AddStringToObject(children_meta_data_filed,"link","");
  504. cJSON_AddItemToObject(children_data_filed, "meta", children_meta_data_filed);
  505. if(_GlobalMenuAuthority.UserEnabled)cJSON_AddItemToObject(children_data_array, "meta", children_data_filed);
  506. cJSON* children1_data_filed = cJSON_CreateObject();
  507. cJSON_AddStringToObject(children1_data_filed,"name","Role");
  508. cJSON_AddStringToObject(children1_data_filed,"path","role");
  509. cJSON_AddBoolToObject(children1_data_filed,"hidden",false);
  510. cJSON_AddStringToObject(children1_data_filed,"component","system/role/index");
  511. cJSON* children_meta1_data_filed = cJSON_CreateObject();
  512. cJSON_AddStringToObject(children_meta1_data_filed,"title",language_role_manage[dm->_globalDevInfo.product.language]);
  513. cJSON_AddStringToObject(children_meta1_data_filed,"icon","peoples");
  514. cJSON_AddBoolToObject(children_meta1_data_filed,"noCache",false);
  515. cJSON_AddStringToObject(children_meta1_data_filed,"link","");
  516. cJSON_AddItemToObject(children1_data_filed, "meta", children_meta1_data_filed);
  517. if(_GlobalMenuAuthority.RoleEnabled)cJSON_AddItemToObject(children_data_array, "meta", children1_data_filed);
  518. cJSON* children2_data_filed = cJSON_CreateObject();
  519. cJSON_AddStringToObject(children2_data_filed,"name","Menu");
  520. cJSON_AddStringToObject(children2_data_filed,"path","menu");
  521. cJSON_AddBoolToObject(children2_data_filed,"hidden",false);
  522. cJSON_AddStringToObject(children2_data_filed,"component","system/menu/index");
  523. cJSON* children_meta2_data_filed = cJSON_CreateObject();
  524. cJSON_AddStringToObject(children_meta2_data_filed,"title",language_menu_manage[dm->_globalDevInfo.product.language]);
  525. cJSON_AddStringToObject(children_meta2_data_filed,"icon","tree-table");
  526. cJSON_AddBoolToObject(children_meta2_data_filed,"noCache",false);
  527. cJSON_AddStringToObject(children_meta2_data_filed,"link","");
  528. cJSON_AddItemToObject(children2_data_filed, "meta", children_meta2_data_filed);
  529. if(_GlobalMenuAuthority.MenuEnabled)cJSON_AddItemToObject(children_data_array, "meta", children2_data_filed);
  530. cJSON_AddItemToObject(data_filed, "children", children_data_array);
  531. if(_GlobalMenuAuthority.UserInfoEnabled)cJSON_AddItemToObject(data_array, "data", data_filed);
  532. //第六块 通信管理
  533. cJSON* data5_filed = cJSON_CreateObject();
  534. cJSON_AddStringToObject(data5_filed,"name","Txgl");
  535. cJSON_AddStringToObject(data5_filed,"path","/txgl");
  536. cJSON_AddBoolToObject(data5_filed,"hidden",false);
  537. cJSON_AddStringToObject(data5_filed,"redirect","noRedirect");
  538. cJSON_AddStringToObject(data5_filed,"component","Layout");
  539. cJSON_AddBoolToObject(data5_filed,"alwaysShow",true);
  540. cJSON* meta_data5_filed = cJSON_CreateObject();
  541. cJSON_AddStringToObject(meta_data5_filed,"title",language_communication_management[dm->_globalDevInfo.product.language]);
  542. cJSON_AddStringToObject(meta_data5_filed,"icon","message");
  543. cJSON_AddBoolToObject(meta_data5_filed,"noCache",false);
  544. cJSON_AddStringToObject(meta_data5_filed,"link","");
  545. cJSON_AddItemToObject(data5_filed, "meta", meta_data5_filed);
  546. //children
  547. cJSON* children5_data_array = cJSON_CreateArray();
  548. cJSON* children5_data1_filed = cJSON_CreateObject();
  549. cJSON_AddStringToObject(children5_data1_filed,"name","Wksz");
  550. cJSON_AddStringToObject(children5_data1_filed,"path","wksz");
  551. cJSON_AddBoolToObject(children5_data1_filed,"hidden",false);
  552. cJSON_AddStringToObject(children5_data1_filed,"component","txgl/wksz/index");
  553. cJSON* children5_meta1_data1_filed = cJSON_CreateObject();
  554. cJSON_AddStringToObject(children5_meta1_data1_filed,"title",language_net_install[dm->_globalDevInfo.product.language]);
  555. cJSON_AddStringToObject(children5_meta1_data1_filed,"icon","input");
  556. cJSON_AddBoolToObject(children5_meta1_data1_filed,"noCache",false);
  557. cJSON_AddStringToObject(children5_meta1_data1_filed,"link","");
  558. cJSON_AddItemToObject(children5_data1_filed, "meta", children5_meta1_data1_filed);
  559. if( _GlobalMenuAuthority.WkszEnabled) cJSON_AddItemToObject(children5_data_array, "children", children5_data1_filed);
  560. cJSON* children5_data2_filed = cJSON_CreateObject();
  561. cJSON_AddStringToObject(children5_data2_filed,"name","Rssz");
  562. cJSON_AddStringToObject(children5_data2_filed,"path","rssz");
  563. cJSON_AddBoolToObject(children5_data2_filed,"hidden",false);
  564. cJSON_AddStringToObject(children5_data2_filed,"component","txgl/rssz/index");
  565. cJSON* children5_meta2_data1_filed = cJSON_CreateObject();
  566. cJSON_AddStringToObject(children5_meta2_data1_filed,"title",language_RS485_install[dm->_globalDevInfo.product.language]);
  567. cJSON_AddStringToObject(children5_meta2_data1_filed,"icon","build");
  568. cJSON_AddBoolToObject(children5_meta2_data1_filed,"noCache",false);
  569. cJSON_AddStringToObject(children5_meta2_data1_filed,"link","");
  570. cJSON_AddItemToObject(children5_data2_filed, "meta", children5_meta2_data1_filed);
  571. if(_GlobalMenuAuthority.RsszEnabled)cJSON_AddItemToObject(children5_data_array, "children", children5_data2_filed);
  572. cJSON* children5_data3_filed = cJSON_CreateObject();
  573. cJSON_AddStringToObject(children5_data3_filed,"name","Fourgsz");
  574. cJSON_AddStringToObject(children5_data3_filed,"path","fourgsz");
  575. cJSON_AddBoolToObject(children5_data3_filed,"hidden",false);
  576. cJSON_AddStringToObject(children5_data3_filed,"component","txgl/fourgsz/index");
  577. cJSON* children5_meta3_data1_filed = cJSON_CreateObject();
  578. cJSON_AddStringToObject(children5_meta3_data1_filed,"title",language_4G_install[dm->_globalDevInfo.product.language]);
  579. cJSON_AddStringToObject(children5_meta3_data1_filed,"icon","international");
  580. cJSON_AddBoolToObject(children5_meta3_data1_filed,"noCache",false);
  581. cJSON_AddStringToObject(children5_meta3_data1_filed,"link","");
  582. cJSON_AddItemToObject(children5_data3_filed, "meta", children5_meta3_data1_filed);
  583. if(_GlobalMenuAuthority.CellularEnabled)cJSON_AddItemToObject(children5_data_array, "children", children5_data3_filed);
  584. cJSON* children5_data4_filed = cJSON_CreateObject();
  585. cJSON_AddStringToObject(children5_data4_filed,"name","Wifisz");
  586. cJSON_AddStringToObject(children5_data4_filed,"path","wifisz");
  587. cJSON_AddBoolToObject(children5_data4_filed,"hidden",false);
  588. cJSON_AddStringToObject(children5_data4_filed,"component","txgl/wifisz/index");
  589. cJSON* children5_meta4_data1_filed = cJSON_CreateObject();
  590. cJSON_AddStringToObject(children5_meta4_data1_filed,"title",language_WIFI_install[dm->_globalDevInfo.product.language]);
  591. cJSON_AddStringToObject(children5_meta4_data1_filed,"icon","size");
  592. cJSON_AddBoolToObject(children5_meta4_data1_filed,"noCache",false);
  593. cJSON_AddStringToObject(children5_meta4_data1_filed,"link","");
  594. cJSON_AddItemToObject(children5_data4_filed, "meta", children5_meta4_data1_filed);
  595. if(_GlobalMenuAuthority.WifiEnabled)cJSON_AddItemToObject(children5_data_array, "children", children5_data4_filed);
  596. cJSON_AddItemToObject(data5_filed, "children", children5_data_array);
  597. if(_GlobalMenuAuthority.CommEnabled)cJSON_AddItemToObject(data_array, "data", data5_filed);
  598. //第七块 服务管理
  599. cJSON* data6_filed = cJSON_CreateObject();
  600. cJSON_AddStringToObject(data6_filed,"name","Fwgl");
  601. cJSON_AddStringToObject(data6_filed,"path","/fwgl");
  602. cJSON_AddBoolToObject(data6_filed,"hidden",false);
  603. cJSON_AddStringToObject(data6_filed,"redirect","noRedirect");
  604. cJSON_AddStringToObject(data6_filed,"component","Layout");
  605. cJSON_AddBoolToObject(data6_filed,"alwaysShow",true);
  606. cJSON* meta_data6_filed = cJSON_CreateObject();
  607. cJSON_AddStringToObject(meta_data6_filed,"title",language_serve_manage[dm->_globalDevInfo.product.language]);
  608. cJSON_AddStringToObject(meta_data6_filed,"icon","server");
  609. cJSON_AddBoolToObject(meta_data6_filed,"noCache",false);
  610. cJSON_AddStringToObject(meta_data6_filed,"link","");
  611. cJSON_AddItemToObject(data6_filed, "meta", meta_data6_filed);
  612. //children
  613. cJSON* children6_data_array = cJSON_CreateArray();
  614. cJSON* children6_data1_filed = cJSON_CreateObject();
  615. cJSON_AddStringToObject(children6_data1_filed,"name","Smtpsz");
  616. cJSON_AddStringToObject(children6_data1_filed,"path","smtpsz");
  617. cJSON_AddBoolToObject(children6_data1_filed,"hidden",false);
  618. cJSON_AddStringToObject(children6_data1_filed,"component","fwgl/smtpsz/index");
  619. cJSON* children6_meta1_data1_filed = cJSON_CreateObject();
  620. cJSON_AddStringToObject(children6_meta1_data1_filed,"title",language_SMTP_install[dm->_globalDevInfo.product.language]);
  621. cJSON_AddStringToObject(children6_meta1_data1_filed,"icon","edit");
  622. cJSON_AddBoolToObject(children6_meta1_data1_filed,"noCache",false);
  623. cJSON_AddStringToObject(children6_meta1_data1_filed,"link","");
  624. cJSON_AddItemToObject(children6_data1_filed, "meta", children6_meta1_data1_filed);
  625. if(_GlobalMenuAuthority.SmtpszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data1_filed);
  626. cJSON* children6_data2_filed = cJSON_CreateObject();
  627. cJSON_AddStringToObject(children6_data2_filed,"name","Snmpsz");
  628. cJSON_AddStringToObject(children6_data2_filed,"path","snmpsz");
  629. cJSON_AddBoolToObject(children6_data2_filed,"hidden",false);
  630. cJSON_AddStringToObject(children6_data2_filed,"component","fwgl/snmpsz/index");
  631. cJSON* children6_meta2_data1_filed = cJSON_CreateObject();
  632. cJSON_AddStringToObject(children6_meta2_data1_filed,"title",language_SNMP_install[dm->_globalDevInfo.product.language]);
  633. cJSON_AddStringToObject(children6_meta2_data1_filed,"icon","date-range");
  634. cJSON_AddBoolToObject(children6_meta2_data1_filed,"noCache",false);
  635. cJSON_AddStringToObject(children6_meta2_data1_filed,"link","");
  636. cJSON_AddItemToObject(children6_data2_filed, "meta", children6_meta2_data1_filed);
  637. if( _GlobalMenuAuthority.SnmpszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data2_filed);
  638. //cJSON* children6_data3_filed = cJSON_CreateObject();
  639. // cJSON_AddStringToObject(children6_data3_filed,"name","Stsz");
  640. // cJSON_AddStringToObject(children6_data3_filed,"path","stsz");
  641. // cJSON_AddBoolToObject(children6_data3_filed,"hidden",false);
  642. // cJSON_AddStringToObject(children6_data3_filed,"component","fwgl/stsz/index");
  643. // cJSON* children6_meta3_data1_filed = cJSON_CreateObject();
  644. // cJSON_AddStringToObject(children6_meta3_data1_filed,"title",language_SNMP_TRAP_install[dm->_globalDevInfo.product.language]);
  645. // cJSON_AddStringToObject(children6_meta3_data1_filed,"icon","#");
  646. // cJSON_AddBoolToObject(children6_meta3_data1_filed,"noCache",false);
  647. // cJSON_AddStringToObject(children6_meta3_data1_filed,"link","");
  648. // cJSON_AddItemToObject(children6_data3_filed, "meta", children6_meta3_data1_filed);
  649. // cJSON_AddItemToObject(children6_data_array, "children", children6_data3_filed);
  650. cJSON* children6_data4_filed = cJSON_CreateObject();
  651. cJSON_AddStringToObject(children6_data4_filed,"name","Mqsz");
  652. cJSON_AddStringToObject(children6_data4_filed,"path","mqsz");
  653. cJSON_AddBoolToObject(children6_data4_filed,"hidden",false);
  654. cJSON_AddStringToObject(children6_data4_filed,"component","fwgl/mqsz/index");
  655. cJSON* children6_meta4_data1_filed = cJSON_CreateObject();
  656. cJSON_AddStringToObject(children6_meta4_data1_filed,"title",language_MQTT_iot_install[dm->_globalDevInfo.product.language]);
  657. cJSON_AddStringToObject(children6_meta4_data1_filed,"icon","dashboard");
  658. cJSON_AddBoolToObject(children6_meta4_data1_filed,"noCache",false);
  659. cJSON_AddStringToObject(children6_meta4_data1_filed,"link","");
  660. cJSON_AddItemToObject(children6_data4_filed, "meta", children6_meta4_data1_filed);
  661. if(_GlobalMenuAuthority.MqszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data4_filed);
  662. cJSON* children6_data5_filed = cJSON_CreateObject();
  663. cJSON_AddStringToObject(children6_data5_filed,"name","Ntpsz");
  664. cJSON_AddStringToObject(children6_data5_filed,"path","ntpsz");
  665. cJSON_AddBoolToObject(children6_data5_filed,"hidden",false);
  666. cJSON_AddStringToObject(children6_data5_filed,"component","fwgl/ntpsz/index");
  667. cJSON* children6_meta5_data1_filed = cJSON_CreateObject();
  668. cJSON_AddStringToObject(children6_meta5_data1_filed,"title",language_NTP_install[dm->_globalDevInfo.product.language]);
  669. cJSON_AddStringToObject(children6_meta5_data1_filed,"icon","date-range");
  670. cJSON_AddBoolToObject(children6_meta5_data1_filed,"noCache",false);
  671. cJSON_AddStringToObject(children6_meta5_data1_filed,"link","");
  672. cJSON_AddItemToObject(children6_data5_filed, "meta", children6_meta5_data1_filed);
  673. if(_GlobalMenuAuthority.NtpszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data5_filed);
  674. cJSON* children6_data6_filed = cJSON_CreateObject();
  675. cJSON_AddStringToObject(children6_data6_filed,"name","Dssz");
  676. cJSON_AddStringToObject(children6_data6_filed,"path","dssz");
  677. cJSON_AddBoolToObject(children6_data6_filed,"hidden",false);
  678. cJSON_AddStringToObject(children6_data6_filed,"component","fwgl/dssz/index");
  679. cJSON* children6_meta6_data1_filed = cJSON_CreateObject();
  680. cJSON_AddStringToObject(children6_meta6_data1_filed,"title",language_Timing_install[dm->_globalDevInfo.product.language]);
  681. cJSON_AddStringToObject(children6_meta6_data1_filed,"icon","date");
  682. cJSON_AddBoolToObject(children6_meta6_data1_filed,"noCache",false);
  683. cJSON_AddStringToObject(children6_meta6_data1_filed,"link","");
  684. cJSON_AddItemToObject(children6_data6_filed, "meta", children6_meta6_data1_filed);
  685. if(_GlobalMenuAuthority.DsszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data6_filed);
  686. cJSON* children6_data7_filed = cJSON_CreateObject();
  687. cJSON_AddStringToObject(children6_data7_filed,"name","Sxsz");
  688. cJSON_AddStringToObject(children6_data7_filed,"path","sxsz");
  689. cJSON_AddBoolToObject(children6_data7_filed,"hidden",false);
  690. cJSON_AddStringToObject(children6_data7_filed,"component","fwgl/sxsz/index");
  691. cJSON* children6_meta7_data1_filed = cJSON_CreateObject();
  692. cJSON_AddStringToObject(children6_meta7_data1_filed,"title",language_Sequential_setting[dm->_globalDevInfo.product.language]);
  693. cJSON_AddStringToObject(children6_meta7_data1_filed,"icon","drag");
  694. cJSON_AddBoolToObject(children6_meta7_data1_filed,"noCache",false);
  695. cJSON_AddStringToObject(children6_meta7_data1_filed,"link","");
  696. cJSON_AddItemToObject(children6_data7_filed, "meta", children6_meta7_data1_filed);
  697. if(_GlobalMenuAuthority.SxszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data7_filed);
  698. cJSON* children6_data8_filed = cJSON_CreateObject();
  699. cJSON_AddStringToObject(children6_data8_filed,"name","Fzsz");
  700. cJSON_AddStringToObject(children6_data8_filed,"path","fzsz");
  701. cJSON_AddBoolToObject(children6_data8_filed,"hidden",false);
  702. cJSON_AddStringToObject(children6_data8_filed,"component","fwgl/fzsz/index");
  703. cJSON* children6_meta8_data1_filed = cJSON_CreateObject();
  704. cJSON_AddStringToObject(children6_meta8_data1_filed,"title",language_Group_setting[dm->_globalDevInfo.product.language]);
  705. cJSON_AddStringToObject(children6_meta8_data1_filed,"icon","education");
  706. cJSON_AddBoolToObject(children6_meta8_data1_filed,"noCache",false);
  707. cJSON_AddStringToObject(children6_meta8_data1_filed,"link","");
  708. cJSON_AddItemToObject(children6_data8_filed, "meta", children6_meta8_data1_filed);
  709. if(_GlobalMenuAuthority.FzszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data8_filed);
  710. cJSON_AddItemToObject(data6_filed, "children", children6_data_array);
  711. if(_GlobalMenuAuthority.ServiceEnabled)cJSON_AddItemToObject(data_array, "data", data6_filed);
  712. //第八块 设备维护
  713. cJSON* data7_filed = cJSON_CreateObject();
  714. cJSON_AddStringToObject(data7_filed,"name","Sbwh");
  715. cJSON_AddStringToObject(data7_filed,"path","/sbwh");
  716. cJSON_AddBoolToObject(data7_filed,"hidden",false);
  717. cJSON_AddStringToObject(data7_filed,"redirect","noRedirect");
  718. cJSON_AddStringToObject(data7_filed,"component","Layout");
  719. cJSON_AddBoolToObject(data7_filed,"alwaysShow",true);
  720. cJSON* meta_data7_filed = cJSON_CreateObject();
  721. cJSON_AddStringToObject(meta_data7_filed,"title",language_maintenance_equipment[dm->_globalDevInfo.product.language]);
  722. cJSON_AddStringToObject(meta_data7_filed,"icon","upload");
  723. cJSON_AddBoolToObject(meta_data7_filed,"noCache",false);
  724. cJSON_AddStringToObject(meta_data7_filed,"link","");
  725. cJSON_AddItemToObject(data7_filed, "meta", meta_data7_filed);
  726. //children
  727. cJSON* children7_data_array = cJSON_CreateArray();
  728. cJSON* children7_data1_filed = cJSON_CreateObject();
  729. cJSON_AddStringToObject(children7_data1_filed,"name","Sbcq");
  730. cJSON_AddStringToObject(children7_data1_filed,"path","sbcq");
  731. cJSON_AddBoolToObject(children7_data1_filed,"hidden",false);
  732. cJSON_AddStringToObject(children7_data1_filed,"component","sbwh/sbcq/index");
  733. cJSON* children7_meta1_data1_filed = cJSON_CreateObject();
  734. cJSON_AddStringToObject(children7_meta1_data1_filed,"title",language_Device_restart[dm->_globalDevInfo.product.language]);
  735. cJSON_AddStringToObject(children7_meta1_data1_filed,"icon","button");
  736. cJSON_AddBoolToObject(children7_meta1_data1_filed,"noCache",false);
  737. cJSON_AddStringToObject(children7_meta1_data1_filed,"link","");
  738. cJSON_AddItemToObject(children7_data1_filed, "meta", children7_meta1_data1_filed);
  739. if(_GlobalMenuAuthority.SbcqEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data1_filed);
  740. #if (CHIP_TYPE != CHIP_T113s)
  741. cJSON* children7_data2_filed = cJSON_CreateObject();
  742. cJSON_AddStringToObject(children7_data2_filed,"name","Gjsj");
  743. cJSON_AddStringToObject(children7_data2_filed,"path","gjsj");
  744. cJSON_AddBoolToObject(children7_data2_filed,"hidden",false);
  745. cJSON_AddStringToObject(children7_data2_filed,"component","sbwh/gjsj/index");
  746. cJSON* children7_meta2_data1_filed = cJSON_CreateObject();
  747. cJSON_AddStringToObject(children7_meta2_data1_filed,"title",language_firmware_upgrade[dm->_globalDevInfo.product.language]);
  748. cJSON_AddStringToObject(children7_meta2_data1_filed,"icon","redis-list");
  749. cJSON_AddBoolToObject(children7_meta2_data1_filed,"noCache",false);
  750. cJSON_AddStringToObject(children7_meta2_data1_filed,"link","");
  751. cJSON_AddItemToObject(children7_data2_filed, "meta", children7_meta2_data1_filed);
  752. if(_GlobalMenuAuthority.GjsjEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data2_filed);
  753. #endif
  754. if(dm->_globalDevInfo.webcfg.brdupg) {
  755. tmp = cJSON_CreateObject();
  756. cJSON_AddStringToObject(tmp,"name","Kzbsj");
  757. cJSON_AddStringToObject(tmp,"path","kzbsj");
  758. cJSON_AddBoolToObject(tmp,"hidden",false);
  759. cJSON_AddStringToObject(tmp,"component","sbwh/kzbsj/index");
  760. tmp1 = cJSON_CreateObject();
  761. cJSON_AddStringToObject(tmp1,"title",language_ctrlboard_upgrade[dm->_globalDevInfo.product.language]);
  762. cJSON_AddStringToObject(tmp1,"icon","redis-list");
  763. cJSON_AddBoolToObject(tmp1,"noCache",false);
  764. cJSON_AddStringToObject(tmp1,"link","");
  765. cJSON_AddItemToObject(tmp, "meta", tmp1);
  766. if(_GlobalMenuAuthority.KzbsjEnabled)cJSON_AddItemToObject(children7_data_array, "children", tmp);
  767. }
  768. cJSON* children7_data3_filed = cJSON_CreateObject();
  769. cJSON_AddStringToObject(children7_data3_filed,"name","Hhccsz");
  770. cJSON_AddStringToObject(children7_data3_filed,"path","hhccsz");
  771. cJSON_AddBoolToObject(children7_data3_filed,"hidden",false);
  772. cJSON_AddStringToObject(children7_data3_filed,"component","sbwh/hhccsz/index");
  773. cJSON* children7_meta3_data1_filed = cJSON_CreateObject();
  774. cJSON_AddStringToObject(children7_meta3_data1_filed,"title",language_back_factor_upgrade[dm->_globalDevInfo.product.language]);
  775. cJSON_AddStringToObject(children7_meta3_data1_filed,"icon","server");
  776. cJSON_AddBoolToObject(children7_meta3_data1_filed,"noCache",false);
  777. cJSON_AddStringToObject(children7_meta3_data1_filed,"link","");
  778. cJSON_AddItemToObject(children7_data3_filed, "meta", children7_meta3_data1_filed);
  779. if(_GlobalMenuAuthority.HhccszEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data3_filed);
  780. cJSON* children7_data4_filed = cJSON_CreateObject();
  781. cJSON_AddStringToObject(children7_data4_filed,"name","Pzdrdc");
  782. cJSON_AddStringToObject(children7_data4_filed,"path","pzdrdc");
  783. cJSON_AddBoolToObject(children7_data4_filed,"hidden",false);
  784. cJSON_AddStringToObject(children7_data4_filed,"component","sbwh/pzdrdc/index");
  785. cJSON* children7_meta4_data1_filed = cJSON_CreateObject();
  786. cJSON_AddStringToObject(children7_meta4_data1_filed,"title",language_Configure_inport_export[dm->_globalDevInfo.product.language]);
  787. cJSON_AddStringToObject(children7_meta4_data1_filed,"icon","upload");
  788. cJSON_AddBoolToObject(children7_meta4_data1_filed,"noCache",false);
  789. cJSON_AddStringToObject(children7_meta4_data1_filed,"link","");
  790. cJSON_AddItemToObject(children7_data4_filed, "meta", children7_meta4_data1_filed);
  791. if(_GlobalMenuAuthority.PzdrdcEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data4_filed);
  792. cJSON* children7_data5_filed = cJSON_CreateObject();
  793. cJSON_AddStringToObject(children7_data5_filed,"name","Shfw");
  794. cJSON_AddStringToObject(children7_data5_filed,"path","shfw");
  795. cJSON_AddBoolToObject(children7_data5_filed,"hidden",false);
  796. cJSON_AddStringToObject(children7_data5_filed,"component","sbwh/shfw/index");
  797. cJSON* children7_meta5_data1_filed = cJSON_CreateObject();
  798. cJSON_AddStringToObject(children7_meta5_data1_filed,"title",language_after_sales_service[dm->_globalDevInfo.product.language]);
  799. cJSON_AddStringToObject(children7_meta5_data1_filed,"icon","peoples");
  800. cJSON_AddBoolToObject(children7_meta5_data1_filed,"noCache",false);
  801. cJSON_AddStringToObject(children7_meta5_data1_filed,"link","");
  802. cJSON_AddItemToObject(children7_data5_filed, "meta", children7_meta5_data1_filed);
  803. if(_GlobalMenuAuthority.ShfwEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data5_filed);
  804. cJSON* children7_data6_filed = cJSON_CreateObject();
  805. cJSON_AddStringToObject(children7_data6_filed,"name","Gysb");
  806. cJSON_AddStringToObject(children7_data6_filed,"path","gysb");
  807. cJSON_AddBoolToObject(children7_data6_filed,"hidden",false);
  808. cJSON_AddStringToObject(children7_data6_filed,"component","sbwh/gysb/index");
  809. cJSON* children7_meta6_data1_filed = cJSON_CreateObject();
  810. cJSON_AddStringToObject(children7_meta6_data1_filed,"title",language_about_Equipment[dm->_globalDevInfo.product.language]);
  811. cJSON_AddStringToObject(children7_meta6_data1_filed,"icon","table");
  812. cJSON_AddBoolToObject(children7_meta6_data1_filed,"noCache",false);
  813. cJSON_AddStringToObject(children7_meta6_data1_filed,"link","");
  814. cJSON_AddItemToObject(children7_data6_filed, "meta", children7_meta6_data1_filed);
  815. if(_GlobalMenuAuthority.GysbEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data6_filed);
  816. cJSON_AddItemToObject(data7_filed, "children", children7_data_array);
  817. if(_GlobalMenuAuthority.MaintenanceEnabled)cJSON_AddItemToObject(data_array, "data", data7_filed);
  818. //主
  819. cJSON_AddItemToObject(root, "data", data_array);
  820. //转换
  821. str = cJSON_Print(root);
  822. cJSON_Delete(root);
  823. return str;
  824. }
  825. /// @brief 获取请求的token信息
  826. /// @param str
  827. /// @param
  828. /// @param
  829. /// @return
  830. char* json_to_Token_info(const char* strHead)
  831. {
  832. if (strHead==NULL)
  833. {
  834. return NULL;
  835. }
  836. const char *Token_start = strstr(strHead, "Authorization:");
  837. if (Token_start == NULL)
  838. {
  839. // 如果没有找到Authorization头部,则返回NULL
  840. return NULL;
  841. }
  842. // 跳过"Authorization:"和可能存在的空格
  843. Token_start += 14; // 14是"Authorization:"的长度
  844. while (*Token_start == ' ' || *Token_start == '\t')
  845. {
  846. Token_start++;
  847. }
  848. const char *auth_start = strstr(Token_start, "Bearer");
  849. if (auth_start == NULL)
  850. {
  851. // 如果没有找到Bearer头部,则返回NULL
  852. return NULL;
  853. }
  854. // 跳过"Bearer"和可能存在的空格
  855. auth_start += 6; //6是"Bearer"的长度
  856. while (*auth_start == ' ' || *auth_start == '\t')
  857. {
  858. auth_start++;
  859. }
  860. // 找到头部的结束位置(即下一个"\r\n")
  861. const char *auth_end = strstr(auth_start, "\r\n");
  862. if (auth_end == NULL)
  863. {
  864. // 如果没有找到头部结束,则可能是格式不正确的HTTP请求
  865. // 这里简单返回NULL,但实际应用中可能需要更复杂的错误处理
  866. return NULL;
  867. }
  868. // 计算需要复制的字节数(不包括"\r\n")
  869. size_t auth_len = auth_end - auth_start;
  870. if (auth_len>=64 || auth_len<0 )
  871. {
  872. // 长度超过64字节,则认为格式不正确,返回NULL
  873. return NULL;
  874. }
  875. // 分配内存并复制Authorization头部的值
  876. char* auth_value = (char*)malloc(auth_len + 1); // 加1是为了'\0'
  877. if (auth_value != NULL) {
  878. memcpy(auth_value, auth_start, auth_len);
  879. auth_value[auth_len] = '\0'; // 添加字符串结束符
  880. }
  881. return auth_value;
  882. }
  883. /// @brief 获取登录用户信息
  884. /// @param str
  885. /// @param _over_all_sts_
  886. /// @param
  887. /// @return
  888. int json_to_User_login_info(const char* str,_User_Log* _newUserLogin)
  889. {
  890. cJSON* cjson = NULL;
  891. cjson = cJSON_Parse(str);
  892. if(cjson==NULL)
  893. {
  894. log_e("Invalid JSON!");
  895. return -1;
  896. }
  897. cJSON *cjson_username = cJSON_GetObjectItem(cjson, "username");
  898. if (cjson_username != NULL)
  899. strcpy(_newUserLogin->user_name,cjson_username->valuestring);
  900. cJSON *cjson_password = cJSON_GetObjectItem(cjson, "password");
  901. if (cjson_password != NULL)
  902. strcpy(_newUserLogin->user_password,cjson_password->valuestring);
  903. cJSON *cjson_uuid = cJSON_GetObjectItem(cjson, "uuid");
  904. if (cjson_uuid != NULL)
  905. strcpy(_newUserLogin->user_uuid,cjson_uuid->valuestring);
  906. cJSON_Delete(cjson);
  907. return 0 ;
  908. }
  909. /// @brief 获取注销用户信息
  910. /// @param str
  911. /// @param _over_all_sts_
  912. /// @param
  913. /// @return
  914. int json_to_User_loginOut_info(const char* str,char** _UserLoginOutToken)
  915. {
  916. cJSON* cjson = NULL;
  917. cjson = cJSON_Parse(str);
  918. if(cjson==NULL)
  919. {
  920. log_e("Invalid JSON!");
  921. return -1;
  922. }
  923. cJSON *cjson_token= cJSON_GetObjectItem(cjson, "token");
  924. if (cjson_token != NULL && _UserLoginOutToken!=NULL) {
  925. int len=strlen(cjson_token->valuestring);
  926. char *p = (char*)malloc(len+2);
  927. if(p) {
  928. strcpy(p, cjson_token->valuestring);
  929. }
  930. *_UserLoginOutToken = p;
  931. }
  932. cJSON_Delete(cjson);
  933. return 0 ;
  934. }
  935. /// @brief 获取设备总体信息
  936. /// @param str
  937. /// @param _over_all_sts_
  938. /// @param
  939. /// @return
  940. cJSON* json_to_overall_status_monitor(const char* str,_Over_All_Sts_Monitor* _over_all_sts_monitor)
  941. {
  942. cJSON* cjson = NULL;
  943. cjson = cJSON_Parse(str);
  944. if(cjson==NULL)
  945. {
  946. log_e("Invalid JSON!");
  947. return NULL;
  948. }
  949. cJSON *cjson_token = cJSON_GetObjectItem(cjson, "token");
  950. if (cjson_token != NULL)
  951. _over_all_sts_monitor->user_token = cjson_token->valuestring;
  952. cJSON *cjson_type = cJSON_GetObjectItem(cjson, "type");
  953. if (cjson_type != NULL)
  954. _over_all_sts_monitor->type = cjson_type->valuestring;
  955. cJSON *cjson_ltype = cJSON_GetObjectItem(cjson, "lType");
  956. cJSON *cjson_productPhOrder = cJSON_GetObjectItem(cjson, "productPhOrder");
  957. if (cjson_ltype != NULL)
  958. _over_all_sts_monitor->lType = cjson_ltype->valuestring;
  959. else if (cjson_productPhOrder!=NULL)
  960. {
  961. _over_all_sts_monitor->lType = cjson_productPhOrder->valuestring;
  962. }
  963. cJSON *cjson_productName = cJSON_GetObjectItem(cjson, "productName");
  964. if (cjson_productName != NULL)
  965. _over_all_sts_monitor->product_name = cjson_productName->valuestring;
  966. cJSON *cjson_product_id = cJSON_GetObjectItem(cjson, "productId");
  967. if (cjson_product_id != NULL)
  968. _over_all_sts_monitor->product_id = atoi(cjson_product_id->valuestring);
  969. cJSON *cjson_productNumber = cJSON_GetObjectItem(cjson, "productNumber");
  970. if (cjson_productNumber != NULL)
  971. _over_all_sts_monitor->product_number = cjson_productNumber->valuestring;
  972. cJSON *cjson_start_time = cJSON_GetObjectItem(cjson, "startTime");
  973. if (cjson_start_time != NULL)
  974. _over_all_sts_monitor->start_time = cjson_start_time->valuestring;
  975. cJSON *cjson_end_time = cJSON_GetObjectItem(cjson, "endTime");
  976. if (cjson_end_time != NULL)
  977. _over_all_sts_monitor->end_time = cjson_end_time->valuestring;
  978. cJSON *cjson_page_num = cJSON_GetObjectItem(cjson, "pageNum");
  979. if (cjson_page_num != NULL)
  980. _over_all_sts_monitor->page_num = cjson_page_num->valuestring;
  981. cJSON *cjson_page_size = cJSON_GetObjectItem(cjson, "pageSize");
  982. if (cjson_page_size != NULL)
  983. _over_all_sts_monitor->page_size = cjson_page_size->valuestring;
  984. cJSON *cjson_product_type = cJSON_GetObjectItem(cjson, "productType");
  985. if (cjson_product_type != NULL)
  986. _over_all_sts_monitor->product_pwr_type = atoi(cjson_product_type->valuestring);
  987. else _over_all_sts_monitor->product_pwr_type = -1;
  988. cJSON *cjson_PhOrder = cJSON_GetObjectItem(cjson, "productPhOrder");
  989. if (cjson_PhOrder != NULL)
  990. _over_all_sts_monitor->product_phOrder = cjson_PhOrder->valuestring;
  991. return cjson ;
  992. }
  993. /// @brief 获取设备维护信息
  994. /// @param str
  995. /// @param _over_equipment_mintenance
  996. /// @return
  997. cJSON* json_to_over_equipment_mintenance(const char* str,_Equipment_Mintenance* _over_equipment_mintenance)
  998. {
  999. cJSON* cjson = NULL;
  1000. cjson = cJSON_Parse(str);
  1001. if(cjson==NULL)
  1002. {
  1003. log_e("Invalid JSON!");
  1004. return NULL;
  1005. }
  1006. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  1007. if(cjson_token!=NULL)
  1008. _over_equipment_mintenance->user_token = cjson_token->valuestring;
  1009. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  1010. if(cjson_type!=NULL)
  1011. _over_equipment_mintenance->type = cjson_type->valuestring;
  1012. if(strcmp(_over_equipment_mintenance->type,"switchSave") == 0)
  1013. {
  1014. cJSON* cjson_cjfs = cJSON_GetObjectItem(cjson,"cjfs");
  1015. if(cjson_cjfs!=NULL)
  1016. _over_equipment_mintenance->cjfs = cjson_cjfs->valuestring;
  1017. cJSON* cjson_comkh = cJSON_GetObjectItem(cjson,"comkh");
  1018. if(cjson_comkh!=NULL)
  1019. _over_equipment_mintenance->comkh = cjson_comkh->valuestring;
  1020. cJSON* cjson_cjdz = cJSON_GetObjectItem(cjson,"cjdz");
  1021. if(cjson_cjdz!=NULL)
  1022. _over_equipment_mintenance->cjdz = cjson_cjdz->valuestring;
  1023. cJSON* cjson_jdh = cJSON_GetObjectItem(cjson,"jdh");
  1024. if(cjson_jdh!=NULL)
  1025. _over_equipment_mintenance->jdh = cjson_jdh->valuestring;
  1026. cJSON* cjson_productChIds = cJSON_GetObjectItem(cjson,"productChIds");
  1027. if(cjson_productChIds!=NULL)
  1028. _over_equipment_mintenance->productChids = cjson_productChIds->valuestring;
  1029. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1030. if(cjson_productId!=NULL)
  1031. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1032. // cJSON* cjson_jdh = cJSON_GetObjectItem(cjson,"jdh");
  1033. // if(cjson_jdh!=NULL)
  1034. // _over_equipment_mintenance->jdh = cjson_jdh->valuestring;
  1035. } else if(strcmp(_over_equipment_mintenance->type,"switchUpdate") == 0){
  1036. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1037. if(cjson_productId!=NULL)
  1038. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1039. cJSON* cjson_productChIds = cJSON_GetObjectItem(cjson,"productChIds");
  1040. if(cjson_productChIds!=NULL)
  1041. _over_equipment_mintenance->productChids = cjson_productChIds->valuestring;
  1042. cJSON* cjson_switchId = cJSON_GetObjectItem(cjson,"switchId");
  1043. if(cjson_switchId!=NULL)
  1044. _over_equipment_mintenance->switchId = cjson_switchId->valueint;
  1045. cJSON* cjson_switchName = cJSON_GetObjectItem(cjson,"switchName");
  1046. if(cjson_switchName != NULL)
  1047. _over_equipment_mintenance->switchName = cjson_switchName->valuestring;
  1048. }else if (strcmp(_over_equipment_mintenance->type,"switchDelete") == 0){
  1049. cJSON* cjson_switchId = cJSON_GetObjectItem(cjson,"switchId");
  1050. if(cjson_switchId!=NULL)
  1051. _over_equipment_mintenance->switchId = cjson_switchId->valueint;
  1052. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1053. if(cjson_productId!=NULL)
  1054. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1055. }else if(strcmp(_over_equipment_mintenance->type,"listSwitchtatusQuery") == 0)
  1056. {
  1057. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1058. if(cjson_productId!=NULL)
  1059. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1060. }else if (strcmp(_over_equipment_mintenance->type,"cleanUp") == 0)
  1061. {
  1062. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1063. if(cjson_productId!=NULL)
  1064. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1065. cJSON* cjson_cleanSelect = cJSON_GetObjectItem(cjson,"cleanSelect");
  1066. if(cjson_cleanSelect!=NULL)
  1067. _over_equipment_mintenance->cleanSelectItem = cjson_cleanSelect->valuestring;
  1068. }
  1069. else
  1070. {
  1071. cJSON* cjson_productName = cJSON_GetObjectItem(cjson,"productName");
  1072. if(cjson_productName!=NULL)
  1073. _over_equipment_mintenance->product_name = cjson_productName->valuestring;
  1074. cJSON* cjson_productNumber = cJSON_GetObjectItem(cjson,"productNumber");
  1075. if(cjson_productNumber!=NULL)
  1076. _over_equipment_mintenance->product_number = cjson_productNumber->valuestring;
  1077. }
  1078. return cjson;
  1079. }
  1080. /// @brief 返回系统信息
  1081. /// @return
  1082. char* json_to_system_config_info(int tls)
  1083. {
  1084. char* str = NULL;
  1085. buf_t logo={NULL,0,0};
  1086. char tmp[100];
  1087. // 创建 JSON 对象
  1088. cJSON* root = cJSON_CreateObject();
  1089. // 添加基本键值对
  1090. cJSON_AddNumberToObject(root, "code", 200);
  1091. cJSON* data_field = cJSON_CreateObject();
  1092. // 添加基本键值对
  1093. int nLanguageID=__globalDeviceManage._globalDevInfo.product.language+1;
  1094. cJSON_AddNumberToObject(data_field, "systemLanguage", nLanguageID);
  1095. get_curtime_str(tmp, sizeof(tmp));
  1096. cJSON_AddStringToObject(data_field, "systemTime", tmp);
  1097. //返回websockt
  1098. char strIPInfo[64] = "ws://192.168.1.132:6785/websocket/";
  1099. if(tls) {
  1100. sprintf(strIPInfo,"wss://%s:6786/websocket/", getLocalIpAddress("eth0"));
  1101. }
  1102. else {
  1103. sprintf(strIPInfo,"ws://%s:6785/websocket/", getLocalIpAddress("eth0"));
  1104. }
  1105. cJSON_AddStringToObject(data_field,"webSocket",strIPInfo);
  1106. get_base64(&logo, NULL);
  1107. cJSON_AddStringToObject(data_field,"logo",logo.buf?logo.buf:"");
  1108. if(logo.buf) free(logo.buf);
  1109. cJSON_AddItemToObject(root,"data",data_field);
  1110. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1111. str = cJSON_Print(root);
  1112. cJSON_Delete(root);
  1113. return str;
  1114. }
  1115. /// @brief 多语言切换
  1116. /// @param str
  1117. /// @return
  1118. static int get_lang_id(char *lang_str)
  1119. {
  1120. int i;
  1121. char *LANG_STR[LANG_ID_MAX]={"zh-CN","en-US","ru-RU","es","pt","de","fr","it","ja"};
  1122. if(!lang_str) {
  1123. return -1;
  1124. }
  1125. for(i=0; i<LANG_ID_MAX; i++) {
  1126. if(strcmp(lang_str, LANG_STR[i])==0) {
  1127. return i;
  1128. }
  1129. }
  1130. return -1;
  1131. }
  1132. int json_to_switch_language(const char* str)
  1133. {
  1134. int lang_id;
  1135. cJSON* cjson = NULL;
  1136. cjson = cJSON_Parse(str);
  1137. if(cjson==NULL)
  1138. {
  1139. log_e("Invalid JSON!");
  1140. return -1;
  1141. }
  1142. cJSON* cjson_language = cJSON_GetObjectItem(cjson,"lang");
  1143. if(cjson_language!=NULL)
  1144. {
  1145. lang_id = get_lang_id(cjson_language->valuestring);
  1146. if(lang_id>=0) {
  1147. __globalDeviceManage._globalDevInfo.product.language = lang_id;
  1148. }
  1149. }
  1150. cJSON_Delete(cjson);
  1151. return 0;
  1152. }
  1153. /// @brief 返回监控总信息
  1154. /// @param _over_back_sts_info
  1155. /// @return
  1156. char* over_all_monitor_to_json(_OverBackStsInfo* _over_back_sts_info)
  1157. {
  1158. char* str = NULL;
  1159. // 创建 JSON 对象
  1160. cJSON* root = cJSON_CreateObject();
  1161. // 添加基本键值对
  1162. cJSON_AddNumberToObject(root, "code", 200);
  1163. //创建数据
  1164. cJSON* data_root_array = cJSON_CreateArray();
  1165. //添加第一条记录
  1166. cJSON* data_filed = cJSON_CreateObject();
  1167. cJSON_AddStringToObject(data_filed,"productName",_over_back_sts_info->product_name);
  1168. cJSON_AddStringToObject(data_filed,"productNumber",_over_back_sts_info->product_number);
  1169. cJSON_AddNumberToObject(data_filed,"productId",_over_back_sts_info->product_id);
  1170. char temp[32] = {0};
  1171. sprintf(temp,"%d",_over_back_sts_info->product_type_id);
  1172. cJSON_AddStringToObject(data_filed,"productType",temp);
  1173. //cJSON_AddNumberToObject(data_filed,"productType",_over_back_sts_info->product_type_id);
  1174. cJSON_AddStringToObject(data_filed,"productPwrType",_over_back_sts_info->productPwrType);
  1175. cJSON_AddStringToObject(data_filed,"productVersion",_over_back_sts_info->productVersion);
  1176. // cJSON_AddStringToObject(data_filed,"productConsumption",_over_back_sts_info->productConsumption);
  1177. cJSON_AddNumberToObject(data_filed,"productMemory",_over_back_sts_info->productMemory);
  1178. cJSON_AddStringToObject(data_filed,"occupancyRate",_over_back_sts_info->occupancyRate);
  1179. cJSON_AddStringToObject(data_filed,"productAddr",_over_back_sts_info->productAddr);
  1180. cJSON_AddNumberToObject(data_filed,"productCount",_over_back_sts_info->productCount);
  1181. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1182. //第二条记录
  1183. cJSON_AddItemToObject(root, "data", data_root_array);
  1184. //添加结果
  1185. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1186. //转换
  1187. str = cJSON_Print(root);
  1188. //释放资源
  1189. cJSON_Delete(root);
  1190. return str;
  1191. }
  1192. /// @brief return breaker device list information
  1193. /// @param _over_back_sts_info
  1194. /// @return
  1195. char* over_breaker_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackBreakerInfo* _over_back_sts_info,bool curFlag)
  1196. {
  1197. int i,r;
  1198. char* str = NULL;
  1199. dev_list_t dl;
  1200. char temp[100] = {0};
  1201. // 创建 JSON 对象
  1202. cJSON* root = cJSON_CreateObject();
  1203. if(root) {
  1204. cJSON_AddNumberToObject(root, "code", 200);
  1205. cJSON* root_array = cJSON_CreateArray();
  1206. if(root_array) {
  1207. r = cascade_get_dlist(&dl);
  1208. if(r==0) {
  1209. for(i=0; i<dl.cnt; i++) {
  1210. cJSON* data_filed = cJSON_CreateObject();
  1211. if(data_filed) {
  1212. if(dl.slave[i].addr==0) {
  1213. sprintf(temp, "%s", _over_back_sts_info->product_name);
  1214. }
  1215. else{
  1216. sprintf(temp, "%s %d", _over_back_sts_info->product_name, dl.slave[i].addr);
  1217. }
  1218. cJSON_AddStringToObject(data_filed, "productName", temp);
  1219. sprintf(temp, "%d", dl.slave[i].addr);
  1220. cJSON_AddStringToObject(data_filed, "productId", temp);
  1221. //cJSON_AddNumberToObject(data_filed, "productId", dl.slave[i].addr);
  1222. cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
  1223. cJSON_AddNumberToObject(data_filed, "productType", _over_back_sts_info->product_type);
  1224. cJSON_AddItemToArray(root_array, data_filed);
  1225. }
  1226. //如果是listSbWhQuery请求,只推送当前PDU信息
  1227. if (curFlag)
  1228. {
  1229. break;
  1230. }
  1231. }
  1232. cascade_free_dlist(&dl);
  1233. }
  1234. cJSON_AddItemToObject(root, "data", root_array);
  1235. }
  1236. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1237. str = cJSON_Print(root);
  1238. cJSON_Delete(root);
  1239. }
  1240. return str;
  1241. }
  1242. /// @brief 返回设备列表
  1243. /// @param _over_back_sts_info
  1244. /// @return
  1245. char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo* _over_back_sts_info,bool curFlag)
  1246. {
  1247. int i,r;
  1248. char* str = NULL;
  1249. dev_list_t dl;
  1250. char temp[100] = {0};
  1251. // 创建 JSON 对象
  1252. cJSON* root = cJSON_CreateObject();
  1253. if(root) {
  1254. cJSON_AddNumberToObject(root, "code", 200);
  1255. cJSON* root_array = cJSON_CreateArray();
  1256. if(root_array) {
  1257. r = cascade_get_dlist(&dl);
  1258. if(r==0) {
  1259. for(i=0; i<dl.cnt; i++) {
  1260. cJSON* data_filed = cJSON_CreateObject();
  1261. if(data_filed) {
  1262. if(dl.slave[i].addr==0) {
  1263. sprintf(temp, "%s", _over_back_sts_info->product_name);
  1264. }
  1265. else{
  1266. sprintf(temp, "%s %d", _over_back_sts_info->product_name, dl.slave[i].addr);
  1267. }
  1268. cJSON_AddStringToObject(data_filed, "productName", temp);
  1269. sprintf(temp, "%d", dl.slave[i].addr);
  1270. cJSON_AddStringToObject(data_filed, "productId", temp);
  1271. //cJSON_AddNumberToObject(data_filed, "productId", dl.slave[i].addr);
  1272. cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
  1273. cJSON_AddStringToObject(data_filed, "productCode", _over_back_sts_info->product_Code);
  1274. cJSON_AddStringToObject(data_filed, "productModel", _over_back_sts_info->product_type);
  1275. if(dl.slave[i].addr==0) {
  1276. cJSON_AddStringToObject(data_filed, "productVersion", VERSION);
  1277. cJSON_AddStringToObject(data_filed, "productTypeName", _over_back_sts_info->product_type);
  1278. cJSON_AddStringToObject(data_filed, "systemTime", _over_back_sts_info->product_sysTime);
  1279. get_bldtime(temp, sizeof(temp));
  1280. cJSON_AddStringToObject(data_filed, "firmwareDate", temp);
  1281. cJSON_AddStringToObject(data_filed, "runTime", _over_back_sts_info->product_runTime);
  1282. cJSON_AddStringToObject(data_filed, "IPadress", _over_back_sts_info->productAddr);
  1283. cJSON_AddStringToObject(data_filed, "MACadress", _over_back_sts_info->product_mac);
  1284. sprintf(temp, "%d", _over_back_sts_info->product_RS485Addr);
  1285. cJSON_AddStringToObject(data_filed, "RSadress", temp);
  1286. }
  1287. else {
  1288. cJSON_AddStringToObject(data_filed, "productVersion", "");
  1289. cJSON_AddStringToObject(data_filed, "firmwareDate", "");
  1290. cJSON_AddStringToObject(data_filed, "runTime", "");
  1291. cJSON_AddStringToObject(data_filed, "IPadress", "");
  1292. cJSON_AddStringToObject(data_filed, "MACadress", "");
  1293. sprintf(temp, "%d", dl.slave[i].addr);
  1294. cJSON_AddStringToObject(data_filed, "RSadress", temp);
  1295. }
  1296. if(_over_back_sts_info->product_type_id==SmartPDU_Tree_AC_One_B||_over_back_sts_info->product_type_id==SmartPDU_Tree_AC_One)
  1297. {
  1298. sprintf(temp, "%d", 4);
  1299. }else{
  1300. sprintf(temp, "%d", _over_back_sts_info->product_type_id);
  1301. }
  1302. cJSON_AddStringToObject(data_filed, "productType", temp);
  1303. if(dl.slave[i].addr==0 && curFlag==0) {
  1304. WebcfgInfo_t *wc=&dm->_globalDevInfo.webcfg;
  1305. sprintf(temp, "%d", wc->monway);
  1306. cJSON_AddStringToObject(data_filed, "jkfs", temp); //监控方式 (1,2,3)
  1307. sprintf(temp, "%d", wc->netsw);
  1308. cJSON_AddStringToObject(data_filed, "dwkjk", temp); //电网口监测 (0,1)
  1309. sprintf(temp, "%d", wc->nwire);
  1310. cJSON_AddStringToObject(data_filed, "lxkz", temp); //零线控制 (0,1)
  1311. sprintf(temp, "%d", wc->ipv4);
  1312. cJSON_AddStringToObject(data_filed, "ip4sz", temp); //ipv4设置 (0,1)
  1313. sprintf(temp, "%d", wc->ipv6);
  1314. cJSON_AddStringToObject(data_filed, "ip6sz", temp); //ipv6设置 (0,1)
  1315. }
  1316. cJSON_AddStringToObject(data_filed, "productStatus", "online");
  1317. cJSON_AddItemToArray(root_array, data_filed);
  1318. }
  1319. //如果是listSbWhQuery请求,只推送当前PDU信息
  1320. if (curFlag)
  1321. {
  1322. break;
  1323. }
  1324. }
  1325. cascade_free_dlist(&dl);
  1326. }
  1327. cJSON_AddItemToObject(root, "data", root_array);
  1328. }
  1329. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1330. str = cJSON_Print(root);
  1331. cJSON_Delete(root);
  1332. }
  1333. return str;
  1334. }
  1335. static int get_cnt(char *buf, char c)
  1336. {
  1337. int cnt=0;
  1338. while(*buf) {
  1339. if((*buf)==c) {
  1340. cnt++;
  1341. }
  1342. buf++;
  1343. }
  1344. return cnt;
  1345. }
  1346. static char* get_changes(char *path)
  1347. {
  1348. char tok='\n';
  1349. char *p=NULL,*src,*dst;
  1350. char *fbuf=file_load2(path, 1);
  1351. #define BR_REPLACE
  1352. if(fbuf) {
  1353. #ifdef BR_REPLACE
  1354. int len=strlen(fbuf);
  1355. int cnt=get_cnt(fbuf, tok);
  1356. p = malloc(len+cnt*5);
  1357. if(p) {
  1358. dst = p;
  1359. src = fbuf;
  1360. while(*src) {
  1361. if((*src)==tok) {
  1362. memcpy(dst, "<br>", 4);
  1363. dst += 4;
  1364. }
  1365. else {
  1366. *dst = *src;
  1367. dst++;
  1368. }
  1369. src++;
  1370. }
  1371. *dst = 0;
  1372. }
  1373. free(fbuf);
  1374. #else
  1375. p = fbuf;
  1376. #endif
  1377. }
  1378. return p;
  1379. }
  1380. char* upgrade_to_json(void)
  1381. {
  1382. char* str = NULL;
  1383. char *p,temp[200];
  1384. GlobalDeviceManager *dm=&__globalDeviceManage;
  1385. // 创建 JSON 对象
  1386. cJSON* root = cJSON_CreateObject();
  1387. // 添加基本键值对
  1388. cJSON_AddNumberToObject(root, "code", 200);
  1389. cJSON* array = cJSON_CreateArray();
  1390. cJSON* data_field = cJSON_CreateObject();
  1391. sprintf(temp,"%d",dm->_globalDevInfo.product.id);
  1392. cJSON_AddStringToObject(data_field,"productId",temp);
  1393. cJSON_AddStringToObject(data_field,"productVersion",VERSION);
  1394. get_bldtime(temp, sizeof(temp));
  1395. cJSON_AddStringToObject(data_field,"versionDate",temp);
  1396. sys_get_path(temp, CHANGES_NAME);
  1397. p = file_load2(temp, 1);
  1398. if(p) {
  1399. cJSON_AddStringToObject(data_field,"updateContent", p);
  1400. free(p);
  1401. }
  1402. cJSON_AddItemToArray(array, data_field);
  1403. cJSON_AddItemToObject(root, "data", array);
  1404. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1405. //转换
  1406. str = cJSON_Print(root);
  1407. //释放资源
  1408. cJSON_Delete(root);
  1409. return str;
  1410. }
  1411. static int add_item(handle_t l, node_t *node, node_t *xd, void *arg, int *act)
  1412. {
  1413. char temp[100];
  1414. cJSON* tmp,*array=(cJSON*)arg;
  1415. board_info_t *info=(board_info_t*)xd->buf;
  1416. tmp = cJSON_CreateObject();
  1417. cJSON_AddStringToObject(tmp,"productName", info->name);
  1418. sprintf(temp, "%d", info->addr);
  1419. cJSON_AddStringToObject(tmp,"productId", temp);
  1420. sprintf(temp, "%08x",info->brd_id);
  1421. cJSON_AddStringToObject(tmp,"productNumber",temp);
  1422. sprintf(temp, "%d", info->channels);
  1423. cJSON_AddStringToObject(tmp,"productChNumber", temp);
  1424. cJSON_AddStringToObject(tmp,"productVersion", info->ver);
  1425. cJSON_AddStringToObject(tmp,"upgradeDate", info->date);
  1426. sprintf(temp, "%d", info->status);
  1427. cJSON_AddStringToObject(tmp,"status",temp);
  1428. cJSON_AddItemToArray(array, tmp);
  1429. return 0;
  1430. }
  1431. char* board_to_json(handle_t l, int is_ws)
  1432. {
  1433. int i;
  1434. cJSON* tmp;
  1435. char* str=NULL;
  1436. char *p,temp[100];
  1437. cJSON* root = cJSON_CreateObject();
  1438. cJSON_AddNumberToObject(root, "code", 200);
  1439. cJSON* array = cJSON_CreateArray();
  1440. xlist_iterator(l, NULL, add_item, array);
  1441. if(is_ws) {
  1442. cJSON* data = cJSON_CreateObject();
  1443. cJSON_AddItemToObject(data, "data", array);
  1444. cJSON_AddItemToObject(root, "data", data);
  1445. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  1446. cJSON_AddStringToObject(root, "type", "controlBoardUpgrade");
  1447. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1448. cJSON_AddBoolToObject(root, "success",true);
  1449. }
  1450. else {
  1451. cJSON_AddItemToObject(root, "data", array);
  1452. }
  1453. str = cJSON_Print(root);
  1454. cJSON_Delete(root);
  1455. return str;
  1456. }
  1457. #include "upg.h"
  1458. char *upg_chk_to_json(int r)
  1459. {
  1460. char* str = NULL;
  1461. int code=200;
  1462. cJSON* root = cJSON_CreateObject();
  1463. int lang_id=__globalDeviceManage._globalDevInfo.product.language;
  1464. if(r==UPG_OK) {
  1465. return NULL;
  1466. }
  1467. if(r>UPG_OK) {
  1468. if(r==UPG_BUSYING) {
  1469. cJSON_AddStringToObject(root, "msg", language_upgrade_busying[lang_id]);
  1470. }
  1471. else if(r==UPG_HDR_FAIL || r==UPG_MD5_FAIL) {
  1472. cJSON_AddStringToObject(root, "msg", language_upgrade_invalid[lang_id]);
  1473. }
  1474. }
  1475. else {
  1476. cJSON_AddStringToObject(root, "msg", language_upgrade_error[lang_id]);
  1477. }
  1478. cJSON_AddNumberToObject(root, "code", 500);
  1479. str = cJSON_Print(root);
  1480. cJSON_Delete(root);
  1481. return str;
  1482. }
  1483. char* vendor_info_to_json(GlobalDeviceInfo *dev)
  1484. {
  1485. char* str = NULL;
  1486. char temp[100];
  1487. buf_t logo={NULL,0,0},qrcode={NULL,0,0};
  1488. char *ptmp=NULL;
  1489. //prod_info_t info={0};
  1490. cJSON* root = cJSON_CreateObject();
  1491. cJSON_AddNumberToObject(root, "code", 200);
  1492. cJSON* root_array = cJSON_CreateArray();
  1493. if(root_array) {
  1494. cJSON* data_field = cJSON_CreateObject();
  1495. if(data_field && dev) {
  1496. cJSON_AddStringToObject(data_field, "productName", dev->product.name);
  1497. sprintf(temp, "%d", dev->product.id);
  1498. cJSON_AddStringToObject(data_field,"productId", temp);
  1499. cJSON_AddStringToObject(data_field,"productNumber", dev->product.number);
  1500. cJSON_AddStringToObject(data_field,"productVersion", dev->product.version);
  1501. get_base64(&logo, &qrcode);
  1502. cJSON_AddStringToObject(data_field,"logo", logo.buf?logo.buf:""); //base64
  1503. cJSON_AddStringToObject(data_field,"sensorAddr", dev->service.addr);
  1504. cJSON_AddStringToObject(data_field,"website", dev->service.site);
  1505. cJSON_AddStringToObject(data_field,"serviceTel", dev->service.tele);
  1506. cJSON_AddStringToObject(data_field,"mailbox", dev->service.mail);
  1507. cJSON_AddStringToObject(data_field,"qrCode",qrcode.buf?qrcode.buf:""); //base64
  1508. cJSON_AddItemToArray(root_array, data_field);
  1509. if(logo.buf) free(logo.buf);
  1510. if(qrcode.buf) free(qrcode.buf);
  1511. }
  1512. cJSON_AddItemToObject(root,"data",root_array);
  1513. }
  1514. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1515. str = cJSON_Print(root);
  1516. cJSON_Delete(root);
  1517. return str;
  1518. }
  1519. /// @brief 获取设备电源总体请求信息
  1520. /// @param str
  1521. /// @param _over_all_sts_
  1522. /// @param
  1523. /// @return
  1524. cJSON* json_to_overall_pwr_status_monitor(const char* str,_OverAllPwrRequest* _over_all_pwr_request)
  1525. {
  1526. cJSON* cjson = NULL;
  1527. cjson = cJSON_Parse(str);
  1528. if(cjson==NULL)
  1529. {
  1530. log_e("Invalid JSON!");
  1531. return NULL;
  1532. }
  1533. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  1534. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  1535. cJSON* cjson_name = cJSON_GetObjectItem(cjson,"productName");
  1536. cJSON* cjson_number = cJSON_GetObjectItem(cjson,"productNumber");
  1537. _over_all_pwr_request->user_token = cjson_token->valuestring;
  1538. _over_all_pwr_request->type = cjson_type->valuestring;
  1539. _over_all_pwr_request->product_name = cjson_name->valuestring;
  1540. _over_all_pwr_request->product_number = cjson_number->valuestring;
  1541. return cjson;
  1542. }
  1543. /// @brief 获取设备通道电源总体请求信息
  1544. /// @param str
  1545. /// @param _over_all_sts_
  1546. /// @param
  1547. /// @return
  1548. cJSON* json_to_chn_pwr_status_monitor(const char* str,_OverChnPwrRequest* _over_chn_pwr_request)
  1549. {
  1550. int temp = 0 ;
  1551. cJSON* cjson = NULL;
  1552. cjson = cJSON_Parse(str);
  1553. if(cjson==NULL)
  1554. {
  1555. log_e("Invalid JSON!");
  1556. return NULL;
  1557. }
  1558. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  1559. if(cjson_token!=NULL)
  1560. _over_chn_pwr_request->user_token = cjson_token->valuestring;
  1561. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  1562. if(cjson_type!=NULL)
  1563. _over_chn_pwr_request->type = cjson_type->valuestring;
  1564. cJSON* cjson_Zerotype = cJSON_GetObjectItem(cjson,"Zerotype");
  1565. if(cjson_Zerotype!=NULL)
  1566. _over_chn_pwr_request->Zerotype = cjson_Zerotype->valuestring;
  1567. cJSON* cjson_product_id = cJSON_GetObjectItem(cjson,"productId");
  1568. if(cjson_product_id!=NULL) //通道
  1569. {
  1570. if (cjson_product_id->valuestring)
  1571. {
  1572. _over_chn_pwr_request->product_id = atoi(cjson_product_id->valuestring);
  1573. }
  1574. else _over_chn_pwr_request->product_id = cjson_product_id->valueint;
  1575. }
  1576. cJSON* cjson_chn_id = cJSON_GetObjectItem(cjson,"productChId");
  1577. if(cjson_chn_id!=NULL) //通道
  1578. {
  1579. _over_chn_pwr_request->productChId = atoi(cjson_chn_id->valuestring);
  1580. }
  1581. cJSON* cjson_lType = cJSON_GetObjectItem(cjson,"lType");
  1582. if(cjson_lType!=NULL) //通道
  1583. {
  1584. _over_chn_pwr_request->lType = cjson_lType->valuestring;
  1585. }
  1586. cJSON* cjson_product_name = cJSON_GetObjectItem(cjson,"productName");
  1587. if(cjson_product_name!=NULL) //通道
  1588. _over_chn_pwr_request->product_name = cjson_product_name->valuestring ;
  1589. cJSON* cjson_productChName = cJSON_GetObjectItem(cjson,"productChName");
  1590. if(cjson_productChName!=NULL) //通道
  1591. _over_chn_pwr_request->productChName = cjson_productChName->valuestring ;
  1592. cJSON* cjson_start_time = cJSON_GetObjectItem(cjson,"startTime");
  1593. if(cjson_start_time!=NULL) //通道
  1594. _over_chn_pwr_request->start_time = cjson_start_time->valuestring ;
  1595. cJSON* cjson_end_time = cJSON_GetObjectItem(cjson,"endTime");
  1596. if(cjson_end_time!=NULL) //通道
  1597. _over_chn_pwr_request->end_time = cjson_end_time->valuestring ;
  1598. cJSON* cjson_pageNum = cJSON_GetObjectItem(cjson,"pageNum");
  1599. if(cjson_pageNum!=NULL) //通道
  1600. _over_chn_pwr_request->pageNum = cjson_pageNum->valuestring ;
  1601. cJSON* cjson_pageSize = cJSON_GetObjectItem(cjson,"pageSize");
  1602. if(cjson_pageSize!=NULL) //通道
  1603. _over_chn_pwr_request->pageSize = cjson_pageSize->valuestring ;
  1604. cJSON* cjson_ChannelLoadType= cJSON_GetObjectItem(cjson,"ChannelLoadType");
  1605. if(cjson_ChannelLoadType!=NULL) //通道
  1606. _over_chn_pwr_request->ChannelLoadType = cjson_ChannelLoadType->valuestring ;
  1607. cJSON* cjson_productPhOrder= cJSON_GetObjectItem(cjson,"productPhOrder");
  1608. if (cjson_productPhOrder)
  1609. {
  1610. _over_chn_pwr_request->productPhOrder = cjson_productPhOrder->valuestring;
  1611. }
  1612. cJSON* cjson_outputType= cJSON_GetObjectItem(cjson,"outputType");
  1613. if (cjson_outputType)
  1614. {
  1615. _over_chn_pwr_request->outputType = atoi(cjson_outputType->valuestring);
  1616. }
  1617. cJSON* cjson_ProductChIds= cJSON_GetObjectItem(cjson,"productChIds");
  1618. if (cjson_ProductChIds)
  1619. {
  1620. _over_chn_pwr_request->strProductChIds = cjson_ProductChIds->valuestring;
  1621. }
  1622. return cjson;
  1623. }
  1624. /// @brief 返回基于控制的应答
  1625. /// @param
  1626. /// @return
  1627. char* ctrl_sts_ack_to_json(void)
  1628. {
  1629. char* str = NULL;
  1630. // 创建 JSON 对象
  1631. cJSON* root = cJSON_CreateObject();
  1632. // 添加基本键值对
  1633. cJSON_AddNumberToObject(root, "code", 200);
  1634. //添加结果
  1635. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1636. //转换
  1637. str = cJSON_Print(root);
  1638. //释放资源
  1639. cJSON_Delete(root);
  1640. return str;
  1641. }
  1642. char* ctrl_breaker_err_ack_to_json(char *string)
  1643. {
  1644. char* str = NULL;
  1645. // 创建 JSON 对象
  1646. cJSON* root = cJSON_CreateObject();
  1647. // 添加基本键值对
  1648. cJSON_AddNumberToObject(root, "code", 201);
  1649. //添加结果
  1650. cJSON_AddStringToObject(root, "msg", string);
  1651. //转换
  1652. str = cJSON_Print(root);
  1653. //释放资源
  1654. cJSON_Delete(root);
  1655. return str;
  1656. }
  1657. /// @brief 返回历史信息
  1658. /// @param _globalPowerInfo
  1659. /// @param _globalDeviceInfo
  1660. /// @return
  1661. char* overall_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,GlobalDeviceInfo* _globalDeviceInfo)
  1662. {
  1663. GlobalPowerInfo* __globalPowerInfoTemp;
  1664. char* str = NULL;
  1665. char temp[32] = {0};
  1666. cJSON* root = cJSON_CreateObject();
  1667. // 添加基本键值对
  1668. cJSON_AddNumberToObject(root, "code", 200);
  1669. //创建数据
  1670. cJSON* data_root_array = cJSON_CreateArray();
  1671. list_for_each_entry(__globalPowerInfoTemp, &_globalPowerInfo->list, list)
  1672. {
  1673. //添加第一条记录
  1674. cJSON* data_filed = cJSON_CreateObject();
  1675. cJSON_AddStringToObject(data_filed,"productName",_globalDeviceInfo->product.name);
  1676. cJSON_AddStringToObject(data_filed,"productNumber",_globalDeviceInfo->product.number);
  1677. cJSON_AddNumberToObject(data_filed,"productId",_globalDeviceInfo->product.id);
  1678. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.voltage);
  1679. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1680. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.current);
  1681. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1682. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.power);
  1683. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1684. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.freq);
  1685. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1686. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.consumption);
  1687. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1688. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.factor);
  1689. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1690. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1691. }
  1692. //添加汇总
  1693. cJSON_AddItemToObject(root, "data", data_root_array);
  1694. //添加结果
  1695. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1696. //转换
  1697. str = cJSON_Print(root);
  1698. //释放资源
  1699. cJSON_Delete(root);
  1700. return str;
  1701. }
  1702. /// @brief 返回通道历史信息
  1703. /// @param _globalPowerInfo
  1704. /// @param _globalDeviceInfo
  1705. /// @return
  1706. char* over_channel_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,GlobalDeviceInfo* _globalDeviceInfo,char* chn_name,char chn)
  1707. {
  1708. GlobalPowerInfo* __globalPowerInfoTemp;
  1709. char* str = NULL;
  1710. char temp[32] = {0};
  1711. GlobalPowerManger *iterator = NULL;
  1712. cJSON* root = cJSON_CreateObject();
  1713. // 添加基本键值对
  1714. cJSON_AddNumberToObject(root, "code", 200);
  1715. //创建数据
  1716. cJSON* data_root_array = cJSON_CreateArray();
  1717. list_for_each_entry(__globalPowerInfoTemp, &_globalPowerInfo->list, list)
  1718. {
  1719. //添加第一条记录
  1720. cJSON* data_filed = cJSON_CreateObject();
  1721. cJSON_AddStringToObject(data_filed,"productName",_globalDeviceInfo->product.name);
  1722. cJSON_AddStringToObject(data_filed,"productNumber",_globalDeviceInfo->product.number);
  1723. cJSON_AddNumberToObject(data_filed,"productId",_globalDeviceInfo->product.id);
  1724. cJSON_AddStringToObject(data_filed,"productChName",chn_name);
  1725. sprintf(temp,"%d",__globalPowerInfoTemp->product_ch_id);
  1726. cJSON_AddStringToObject(data_filed,"productChId",temp);
  1727. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.voltage);
  1728. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1729. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.current);
  1730. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1731. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.power);
  1732. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1733. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.freq);
  1734. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1735. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.consumption);
  1736. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1737. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.factor);
  1738. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1739. cJSON_AddNumberToObject(data_filed,"productChStatus",_globalDeviceInfo->product.id);
  1740. list_for_each_entry(iterator, &__globalDeviceManage._globalPowerManger.list, list)
  1741. {
  1742. if (iterator->product_id == __globalPowerInfoTemp->product_id && iterator->product_ch_id == __globalPowerInfoTemp->product_ch_id)
  1743. {
  1744. cJSON_AddNumberToObject(data_filed,"firingInterval", iterator->product_ch_start_delay / 1000);
  1745. cJSON_AddNumberToObject(data_filed,"closeInterval", iterator->product_ch_stop_delay / 1000);
  1746. break;
  1747. }
  1748. }
  1749. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1750. }
  1751. //添加汇总
  1752. cJSON_AddItemToObject(root, "data", data_root_array);
  1753. //添加结果
  1754. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1755. //转换
  1756. str = cJSON_Print(root);
  1757. //释放资源
  1758. cJSON_Delete(root);
  1759. return str;
  1760. }
  1761. /// @brief 返回监控总信息
  1762. /// @param _over_back_sts_info
  1763. /// @return
  1764. char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3)
  1765. {
  1766. char* str = NULL;
  1767. char temp[64] = {0};
  1768. GlobalDeviceManager *dm=&__globalDeviceManage;
  1769. // 创建 JSON 对象
  1770. cJSON* root = cJSON_CreateObject();
  1771. cJSON* sdata_filed = cJSON_CreateObject();
  1772. // 添加基本键值对
  1773. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  1774. //创建数据
  1775. cJSON* data_root_array = cJSON_CreateArray();
  1776. //添加第一条记录
  1777. cJSON* data_filed = cJSON_CreateObject();
  1778. if (_over_all_pwr_back_info_L1->product_id == 0) {
  1779. sprintf(temp, "%s", _over_all_pwr_back_info_L1->product_name);
  1780. }
  1781. else {
  1782. sprintf(temp, "%s %d", _over_all_pwr_back_info_L1->product_name, _over_all_pwr_back_info_L1->product_id);
  1783. }
  1784. cJSON_AddStringToObject(data_filed,"productName",temp);
  1785. //cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info_L1->product_number);
  1786. cJSON_AddStringToObject(data_filed,"productNumber","Smart PDU");
  1787. sprintf(temp,"%d",_over_all_pwr_back_info_L1->product_id);
  1788. cJSON_AddStringToObject(data_filed,"productId",temp);
  1789. cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
  1790. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->voltage);
  1791. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1792. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1793. cJSON_AddStringToObject(data_filed,"productVoltageMaximum",temp);
  1794. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->current);
  1795. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1796. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1797. cJSON_AddStringToObject(data_filed,"productCurrentMaximum",temp);
  1798. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->power/1000);
  1799. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1800. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1801. cJSON_AddStringToObject(data_filed,"productPowerMaximum",temp);
  1802. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->freq);
  1803. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1804. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->consumption);
  1805. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1806. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->factor);
  1807. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1808. sprintf(temp,"%0.3f",1.0);
  1809. cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
  1810. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1811. //第二条记录
  1812. cJSON* data_filed1= cJSON_CreateObject();
  1813. if (_over_all_pwr_back_info_L1->product_id == 0) {
  1814. sprintf(temp, "%s", _over_all_pwr_back_info_L2->product_name);
  1815. }
  1816. else {
  1817. sprintf(temp, "%s %d", _over_all_pwr_back_info_L2->product_name, _over_all_pwr_back_info_L2->product_id);
  1818. }
  1819. cJSON_AddStringToObject(data_filed1,"productName",temp);
  1820. // cJSON_AddStringToObject(data_filed1,"productNumber",_over_all_pwr_back_info_L2->product_number);
  1821. cJSON_AddStringToObject(data_filed1,"productNumber","Smart PDU");
  1822. sprintf(temp,"%d",_over_all_pwr_back_info_L2->product_id);
  1823. cJSON_AddStringToObject(data_filed1,"productId",temp);
  1824. cJSON_AddStringToObject(data_filed1,"productPhOrder","L2");
  1825. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->voltage);
  1826. cJSON_AddStringToObject(data_filed1,"productVoltage",temp);
  1827. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1828. cJSON_AddStringToObject(data_filed1,"productVoltageMaximum",temp);
  1829. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->current);
  1830. cJSON_AddStringToObject(data_filed1,"productCurrent",temp);
  1831. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1832. cJSON_AddStringToObject(data_filed1,"productCurrentMaximum",temp);
  1833. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->power/1000);
  1834. cJSON_AddStringToObject(data_filed1,"productPower",temp);
  1835. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1836. cJSON_AddStringToObject(data_filed1,"productPowerMaximum",temp);
  1837. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->freq);
  1838. cJSON_AddStringToObject(data_filed1,"productPowerFreq",temp);
  1839. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->consumption);
  1840. cJSON_AddStringToObject(data_filed1,"productConsumption",temp);
  1841. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->factor);
  1842. cJSON_AddStringToObject(data_filed1,"productPowerFactor",temp);
  1843. sprintf(temp,"%0.3f",1.0);
  1844. cJSON_AddStringToObject(data_filed1,"productPowerFactorMaximum",temp);
  1845. cJSON_AddItemToObject(data_root_array, "data", data_filed1);
  1846. //第三条记录
  1847. cJSON* data_filed2= cJSON_CreateObject();
  1848. if (_over_all_pwr_back_info_L1->product_id == 0) {
  1849. sprintf(temp, "%s", _over_all_pwr_back_info_L2->product_name);
  1850. }
  1851. else {
  1852. sprintf(temp, "%s %d", _over_all_pwr_back_info_L2->product_name, _over_all_pwr_back_info_L2->product_id);
  1853. }
  1854. cJSON_AddStringToObject(data_filed2,"productName",temp);
  1855. //cJSON_AddStringToObject(data_filed2,"productNumber",_over_all_pwr_back_info_L3->product_number);
  1856. cJSON_AddStringToObject(data_filed2,"productNumber","Smart PDU");
  1857. sprintf(temp,"%d",_over_all_pwr_back_info_L3->product_id);
  1858. cJSON_AddStringToObject(data_filed2,"productId",temp);
  1859. cJSON_AddStringToObject(data_filed2,"productPhOrder","L3");
  1860. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->voltage);
  1861. cJSON_AddStringToObject(data_filed2,"productVoltage",temp);
  1862. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1863. cJSON_AddStringToObject(data_filed2,"productVoltageMaximum",temp);
  1864. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->current);
  1865. cJSON_AddStringToObject(data_filed2,"productCurrent",temp);
  1866. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1867. cJSON_AddStringToObject(data_filed2,"productCurrentMaximum",temp);
  1868. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->power/1000);
  1869. cJSON_AddStringToObject(data_filed2,"productPower",temp);
  1870. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1871. cJSON_AddStringToObject(data_filed2,"productPowerMaximum",temp);
  1872. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->freq);
  1873. cJSON_AddStringToObject(data_filed2,"productPowerFreq",temp);
  1874. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->consumption);
  1875. cJSON_AddStringToObject(data_filed2,"productConsumption",temp);
  1876. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->factor);
  1877. cJSON_AddStringToObject(data_filed2,"productPowerFactor",temp);
  1878. sprintf(temp,"%0.3f",1.0);
  1879. cJSON_AddStringToObject(data_filed2,"productPowerFactorMaximum",temp);
  1880. cJSON_AddItemToObject(data_root_array, "data", data_filed2);
  1881. //添加汇总
  1882. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  1883. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1884. //添加汇总
  1885. cJSON_AddItemToObject(root, "data", sdata_filed);
  1886. //添加结果
  1887. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1888. //添加内容
  1889. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  1890. cJSON_AddBoolToObject(root, "success",true);
  1891. cJSON_AddStringToObject(root, "type", "overallStatusMonitoring");
  1892. //转换
  1893. str = cJSON_Print(root);
  1894. //释放资源
  1895. cJSON_Delete(root);
  1896. return str;
  1897. }
  1898. /// @brief 返回监控总信息
  1899. /// @param _over_back_sts_info
  1900. /// @return
  1901. char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_pwr_back_info)
  1902. {
  1903. char* str = NULL;
  1904. char temp[32] = {0};
  1905. GlobalDeviceManager *dm=&__globalDeviceManage;
  1906. // 创建 JSON 对象
  1907. cJSON* root = cJSON_CreateObject();
  1908. // 添加基本键值对
  1909. cJSON_AddNumberToObject(root, "code", 200);
  1910. //创建数据
  1911. cJSON* data_root_array = cJSON_CreateArray();
  1912. //添加第一条记录
  1913. cJSON* data_filed = cJSON_CreateObject();
  1914. // log_i(_over_all_pwr_back_info->product_name);
  1915. // log_i(_over_all_pwr_back_info->product_number);
  1916. cJSON_AddStringToObject(data_filed,"productName",_over_all_pwr_back_info->product_name);
  1917. //cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info->product_number);
  1918. cJSON_AddStringToObject(data_filed,"productNumber","Smart PDU");
  1919. sprintf(temp,"%d",_over_all_pwr_back_info->product_id);
  1920. cJSON_AddStringToObject(data_filed,"productId",temp);
  1921. if (phaseType==0)
  1922. {
  1923. cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
  1924. }
  1925. else if (phaseType==1)
  1926. {
  1927. cJSON_AddStringToObject(data_filed,"productPhOrder","L2");
  1928. }
  1929. else if (phaseType==2)
  1930. {
  1931. cJSON_AddStringToObject(data_filed,"productPhOrder","L3");
  1932. }
  1933. else
  1934. {
  1935. cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
  1936. }
  1937. sprintf(temp,"%0.3f",_over_all_pwr_back_info->voltage);
  1938. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1939. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1940. cJSON_AddStringToObject(data_filed,"productVoltageMaximum",temp);
  1941. sprintf(temp,"%0.3f",_over_all_pwr_back_info->current);
  1942. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1943. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1944. cJSON_AddStringToObject(data_filed,"productCurrentMaximum",temp);
  1945. sprintf(temp,"%0.3f",_over_all_pwr_back_info->power/1000.0);
  1946. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1947. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1948. cJSON_AddStringToObject(data_filed,"productPowerMaximum",temp);
  1949. sprintf(temp,"%0.3f",_over_all_pwr_back_info->freq);
  1950. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1951. sprintf(temp,"%0.3f",_over_all_pwr_back_info->consumption);
  1952. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1953. sprintf(temp,"%0.3f",_over_all_pwr_back_info->factor);
  1954. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1955. sprintf(temp,"%0.3f",1.0);
  1956. cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
  1957. // cJSON_AddNumberToObject(data_filed,"productVoltage",_over_all_pwr_back_info->voltage);
  1958. // cJSON_AddNumberToObject(data_filed,"productCurrent",_over_all_pwr_back_info->current);
  1959. // cJSON_AddNumberToObject(data_filed,"productPower",_over_all_pwr_back_info->power);
  1960. // cJSON_AddNumberToObject(data_filed,"productPowerFreq",_over_all_pwr_back_info->freq);
  1961. // cJSON_AddNumberToObject(data_filed,"productConsumption",_over_all_pwr_back_info->consumption);
  1962. // cJSON_AddNumberToObject(data_filed,"productPowerFactor",_over_all_pwr_back_info->factor);
  1963. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1964. //第二条记录
  1965. //添加汇总
  1966. cJSON_AddItemToObject(root, "data", data_root_array);
  1967. //添加结果
  1968. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1969. //转换
  1970. str = cJSON_Print(root);
  1971. //释放资源
  1972. cJSON_Delete(root);
  1973. return str;
  1974. }
  1975. /// @brief 返回总体统计信息
  1976. /// @param _over_back_sts_info
  1977. /// @return
  1978. char* over_all_total_info_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info, int total_type)
  1979. {
  1980. char* str = NULL;
  1981. char temp[32] = {0};
  1982. char buffer[2500] = {0};
  1983. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  1984. // 创建 JSON 对象
  1985. cJSON* date_total_info = cJSON_CreateObject();
  1986. // 添加基本键值对
  1987. cJSON_AddNumberToObject(date_total_info, "code", 200);
  1988. //添加一个嵌套的Json data表
  1989. cJSON* cjson_data = cJSON_CreateObject();
  1990. //创建数据表
  1991. cJSON* date_total_xAxis_array = cJSON_CreateArray();
  1992. cJSON* date_total_ydata_array = NULL ;
  1993. //添加电压统计信息
  1994. if(total_type == TOTAL_VOLTAGE_TYPE)
  1995. {
  1996. for(int i=0;i< TOTAL_COUNT;i++)
  1997. {
  1998. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_voltage.xAxis[i]);
  1999. //log_d("%s",_over_all_pwr_back_info->_total_voltage.xAxis[i]);
  2000. }
  2001. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_voltage.ydata,TOTAL_COUNT);
  2002. }
  2003. //添加电流统计信息
  2004. else if(total_type == TOTAL_CURRENT_TYPE)
  2005. {
  2006. for(int i=0;i< TOTAL_COUNT;i++)
  2007. {
  2008. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_current.xAxis[i]);
  2009. }
  2010. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_current.ydata,TOTAL_COUNT);
  2011. }
  2012. //添加功率统计信息
  2013. else if(total_type == TOTAL_POWER_TYPE)
  2014. {
  2015. for(int i=0;i< TOTAL_COUNT;i++)
  2016. {
  2017. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_power.xAxis[i]);
  2018. }
  2019. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_power.ydata,TOTAL_COUNT);
  2020. }
  2021. //添加耗电量统计信息
  2022. else if(total_type == TOTAL_POWER_CONS_TYPE)
  2023. {
  2024. for(int i=0;i< TOTAL_COUNT;i++)
  2025. {
  2026. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_consumption.xAxis[i]);
  2027. }
  2028. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_consumption.ydata,TOTAL_COUNT);
  2029. }
  2030. //添加表数据
  2031. cJSON_AddItemToObject(cjson_data,"xAxis",date_total_xAxis_array);
  2032. cJSON_AddItemToObject(cjson_data,"ydata",date_total_ydata_array);
  2033. //添加汇总
  2034. cJSON_AddItemToObject(date_total_info, "data", cjson_data);
  2035. //添加结果
  2036. cJSON_AddStringToObject(date_total_info, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2037. //转换
  2038. str = cJSON_Print(date_total_info);
  2039. //log_d(str);
  2040. //释放资源
  2041. cJSON_Delete(date_total_info);
  2042. return str;
  2043. }
  2044. /// @brief 返回总体统计信息(三相)
  2045. /// @param _over_back_sts_info
  2046. /// @return
  2047. void over_all_total_info_t_ac_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info,cJSON* dataJson,cJSON* AxisJson, int total_type)
  2048. {
  2049. char* str = NULL;
  2050. char temp[32] = {0};
  2051. char buffer[2500] = {0};
  2052. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2053. //添加一个嵌套的Json data表
  2054. cJSON* cjson_data = dataJson;
  2055. //创建数据表
  2056. cJSON* date_total_xAxis_array = AxisJson;
  2057. //date_total_xAxis_array = cJSON_CreateArray();
  2058. cJSON* date_total_ydata_array = NULL;
  2059. //添加电压统计信息
  2060. if(total_type == TOTAL_VOLTAGE_TYPE)
  2061. {
  2062. if (date_total_xAxis_array)
  2063. {
  2064. for (int i = 0; i < TOTAL_COUNT; i++)
  2065. {
  2066. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2067. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_voltage.xAxis[i]);
  2068. // log_d("%s",_over_all_pwr_back_info->_total_voltage.xAxis[i]);
  2069. }
  2070. }
  2071. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_voltage.ydata,TOTAL_COUNT);
  2072. }
  2073. //添加电流统计信息
  2074. else if(total_type == TOTAL_CURRENT_TYPE)
  2075. {
  2076. if (date_total_xAxis_array)
  2077. {
  2078. for (int i = 0; i < TOTAL_COUNT; i++)
  2079. {
  2080. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2081. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_current.xAxis[i]);
  2082. }
  2083. }
  2084. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_current.ydata,TOTAL_COUNT);
  2085. }
  2086. // 添加功率统计信息
  2087. else if (total_type == TOTAL_POWER_TYPE)
  2088. {
  2089. if (date_total_xAxis_array)
  2090. {
  2091. for (int i = 0; i < TOTAL_COUNT; i++)
  2092. {
  2093. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2094. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_power.xAxis[i]);
  2095. }
  2096. }
  2097. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_power.ydata, TOTAL_COUNT);
  2098. }
  2099. // 添加耗电量统计信息
  2100. else if (total_type == TOTAL_POWER_CONS_TYPE)
  2101. {
  2102. if (date_total_xAxis_array)
  2103. {
  2104. for (int i = 0; i < TOTAL_COUNT; i++)
  2105. {
  2106. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2107. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_consumption.xAxis[i]);
  2108. }
  2109. }
  2110. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_consumption.ydata, TOTAL_COUNT);
  2111. }
  2112. cJSON_AddItemToObject(cjson_data,"ydata",date_total_ydata_array);
  2113. //添加表数据
  2114. //if (date_total_xAxis_array)
  2115. //{
  2116. // cJSON_AddItemToObject(cjson_data, "xAxis", date_total_xAxis_array);
  2117. //}
  2118. }
  2119. /// @brief 初始化总体统计信息(三相)
  2120. /// @cJSON* pAllJson 总json
  2121. /// @cJSON* dataJson 三相数据json
  2122. /// @return
  2123. int over_init_data_t_ac_to_json(cJSON* pAllJson,cJSON* dataJson[],cJSON* AxisJson, int total_type)
  2124. {
  2125. char* str = NULL;
  2126. char temp[32] = {0};
  2127. char buffer[2500] = {0};
  2128. //cJSON *yAxisData;
  2129. //_OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2130. // 创建 JSON 对象
  2131. cJSON* date_total_info = pAllJson;
  2132. // 添加基本键值对
  2133. cJSON_AddNumberToObject(date_total_info, "code", 200);
  2134. //添加一个嵌套的Json data表
  2135. cJSON* cjson_data = cJSON_CreateObject();
  2136. //创建数据表
  2137. //cJSON* date_total_xAxis_array = AxisJson;
  2138. cJSON* date_total_ydata_array = cJSON_CreateArray();
  2139. //三相
  2140. for (size_t i = 0; i < 3; i++)
  2141. {
  2142. char charAddr[]="L1";
  2143. charAddr[1]='1'+i;
  2144. cJSON_AddStringToObject(dataJson[i], "id", charAddr);
  2145. //插入json数组
  2146. cJSON_AddItemToArray(date_total_ydata_array, dataJson[i]);
  2147. }
  2148. cJSON_AddItemToObject(cjson_data,"typeData",date_total_ydata_array);
  2149. //添加表数据
  2150. cJSON_AddItemToObject(cjson_data,"xAxis",AxisJson);
  2151. //添加汇总
  2152. cJSON_AddItemToObject(date_total_info, "data", cjson_data);
  2153. //添加结果
  2154. cJSON_AddStringToObject(date_total_info, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2155. //释放资源
  2156. //cJSON_Delete(date_total_info);
  2157. return 0;
  2158. }
  2159. /// @brief 总体统计信息(三相)
  2160. /// @cJSON* pAllJson 总json
  2161. /// @cJSON* dataJson 三相数据json
  2162. /// @return json字符串
  2163. char *over_all_data_t_ac_to_json(_OverAllPwrAckInfo *_over_all_pwr_back_info,_Over_All_Sts_Monitor* _over_all_sts_monitor, int total_type)
  2164. {
  2165. // 申请电压统计信息参数
  2166. GlobalPowerInfo __globalPowerInfo;
  2167. // 清0
  2168. memset(&__globalPowerInfo, 0, sizeof(GlobalPowerInfo));
  2169. // 创建 JSON 对象
  2170. cJSON *date_total_info = cJSON_CreateObject();
  2171. cJSON *date_Data_info[3];
  2172. cJSON *date_Axis = cJSON_CreateArray();
  2173. for (size_t i = 0; i < 3; i++)
  2174. {
  2175. date_Data_info[i] = cJSON_CreateObject();
  2176. // 查询数据库总电源信息 传给所申请的参数结构体
  2177. if (dev_search_time_t_ac_power_info(__globalDeviceManage.db, __globalDeviceManage._globalDevInfo.product.id, 0,i,total_type, &__globalPowerInfo,_over_all_sts_monitor->start_time,_over_all_sts_monitor->end_time) != 0)
  2178. {
  2179. log_e("serach total voltage err.");
  2180. continue;
  2181. }
  2182. switch (total_type)
  2183. {
  2184. case TOTAL_VOLTAGE_TYPE:
  2185. for (int i = 0; i < TOTAL_COUNT; i++)
  2186. {
  2187. strcpy(_over_all_pwr_back_info->_total_voltage.xAxis[i], __globalPowerInfo._total_voltage.xAxis[i]);
  2188. _over_all_pwr_back_info->_total_voltage.ydata[i] = __globalPowerInfo._total_voltage.ydata[i];
  2189. }
  2190. break;
  2191. case TOTAL_CURRENT_TYPE:
  2192. for (int i = 0; i < TOTAL_COUNT; i++)
  2193. {
  2194. strcpy(_over_all_pwr_back_info->_total_current.xAxis[i], __globalPowerInfo._total_current.xAxis[i]);
  2195. _over_all_pwr_back_info->_total_current.ydata[i] = __globalPowerInfo._total_current.ydata[i];
  2196. }
  2197. break;
  2198. case TOTAL_POWER_TYPE:
  2199. for (int i = 0; i < TOTAL_COUNT; i++)
  2200. {
  2201. strcpy(_over_all_pwr_back_info->_total_power.xAxis[i], __globalPowerInfo._total_power.xAxis[i]);
  2202. _over_all_pwr_back_info->_total_power.ydata[i] = __globalPowerInfo._total_power.ydata[i];
  2203. }
  2204. break;
  2205. case TOTAL_POWER_CONS_TYPE:
  2206. for (int i = 0; i < TOTAL_COUNT; i++)
  2207. {
  2208. strcpy(_over_all_pwr_back_info->_total_consumption.xAxis[i], __globalPowerInfo._total_consumption.xAxis[i]);
  2209. _over_all_pwr_back_info->_total_consumption.ydata[i] = __globalPowerInfo._total_consumption.ydata[i];
  2210. }
  2211. break;
  2212. default:
  2213. break;
  2214. }
  2215. // 返回电压统计
  2216. if (i == 0)
  2217. {
  2218. over_all_total_info_t_ac_to_json(_over_all_pwr_back_info, date_Data_info[i], date_Axis, total_type);
  2219. }
  2220. else
  2221. {
  2222. over_all_total_info_t_ac_to_json(_over_all_pwr_back_info, date_Data_info[i], NULL, total_type);
  2223. }
  2224. }
  2225. over_init_data_t_ac_to_json(date_total_info, date_Data_info, date_Axis, total_type);
  2226. // 转换
  2227. char *ack_str = cJSON_Print(date_total_info);
  2228. cJSON_Delete(date_total_info);
  2229. return ack_str;
  2230. }
  2231. /// @brief 返回系统总数
  2232. /// @param _over_back_sts_info
  2233. /// @return
  2234. char* over_system_total_monitor_to_json(_OverBackStsInfo* _over_back_system_info)
  2235. {
  2236. char* str = NULL;
  2237. char temp[32] = {0};
  2238. // 创建 JSON 对象
  2239. cJSON* root = cJSON_CreateObject();
  2240. // 添加基本键值对
  2241. cJSON_AddNumberToObject(root, "code", 200);
  2242. cJSON* data_field = cJSON_CreateObject();
  2243. sprintf(temp,"%d",_over_back_system_info->system_total.channel_total);
  2244. cJSON_AddStringToObject(data_field,"channelTotal",temp);
  2245. sprintf(temp,"%d",_over_back_system_info->system_total.warn_total);
  2246. cJSON_AddStringToObject(data_field,"gjztTotal",temp);
  2247. sprintf(temp,"%d",_over_back_system_info->system_total.sensor_total);
  2248. cJSON_AddStringToObject(data_field,"sensorTotal",temp);
  2249. sprintf(temp,"%d",_over_back_system_info->system_total.log_total);
  2250. cJSON_AddStringToObject(data_field,"yxrzTotal",temp);
  2251. //添加汇总
  2252. cJSON_AddItemToObject(root, "data", data_field);
  2253. //添加结果
  2254. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2255. //转换
  2256. str = cJSON_Print(root);
  2257. //释放资源
  2258. cJSON_Delete(root);
  2259. return str;
  2260. }
  2261. /// @brief 返回功率趋势统计统计信息
  2262. /// @param _over_back_sts_info
  2263. /// @return
  2264. char* over_power_trend_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info)
  2265. {
  2266. char* str = NULL;
  2267. char temp[32] = {0};
  2268. char buffer[2500] = {0};
  2269. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2270. // 创建 JSON 对象
  2271. cJSON* date_trend_info = cJSON_CreateObject();
  2272. // 添加基本键值对
  2273. cJSON_AddNumberToObject(date_trend_info, "code", 200);
  2274. //添加一个嵌套的Json data表
  2275. cJSON* cjson_data = cJSON_CreateObject();
  2276. //创建数据表
  2277. cJSON* cjson_typedata = cJSON_CreateArray();
  2278. cJSON* cjson_data_1 = cJSON_CreateObject();
  2279. cJSON* cjson_data_2 = cJSON_CreateObject();
  2280. cJSON* cjson_data_3 = cJSON_CreateObject();
  2281. cJSON* date_time_xAxis_array = cJSON_CreateArray();
  2282. cJSON* date_meritorious_ydata_array = NULL ;
  2283. cJSON* date_reactive_ydata_array = NULL ;
  2284. cJSON* date_apparent_ydata_array = NULL ;
  2285. cJSON_AddStringToObject(cjson_data_1, "id", "1");
  2286. cJSON_AddStringToObject(cjson_data_2, "id", "2");
  2287. cJSON_AddStringToObject(cjson_data_3, "id", "3");
  2288. //添加有功、无功以及视在功率统计信息
  2289. date_meritorious_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_Power_Trend_Info.ydata[POWER_MERITORIOUS_TYPE],TOTAL_COUNT);
  2290. cJSON_AddItemToObject(cjson_data_1,"ydata",date_meritorious_ydata_array);
  2291. cJSON_AddItemToArray(cjson_typedata,cjson_data_1);
  2292. date_reactive_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_Power_Trend_Info.ydata[POWER_REACTIVE_TYPE],TOTAL_COUNT);
  2293. cJSON_AddItemToObject(cjson_data_2,"ydata",date_reactive_ydata_array);
  2294. cJSON_AddItemToArray(cjson_typedata,cjson_data_2);
  2295. date_apparent_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_Power_Trend_Info.ydata[POWER_APPARENT_TYPE],TOTAL_COUNT);
  2296. cJSON_AddItemToObject(cjson_data_3,"ydata",date_apparent_ydata_array);
  2297. cJSON_AddItemToArray(cjson_typedata,cjson_data_3);
  2298. for(int i=0;i< TOTAL_COUNT;i++)
  2299. {
  2300. cJSON_AddStringToObject(date_time_xAxis_array,"",_over_all_pwr_back_info->_Power_Trend_Info.xAxis[i]);
  2301. }
  2302. //添加表数据
  2303. cJSON_AddItemToObject(cjson_typedata,"xAxis",date_time_xAxis_array);
  2304. cJSON_AddItemToObject(cjson_data,"typeData",cjson_typedata);
  2305. //添加汇总
  2306. cJSON_AddItemToObject(date_trend_info, "data", cjson_data);
  2307. //添加结果
  2308. cJSON_AddStringToObject(date_trend_info, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2309. //转换
  2310. str = cJSON_Print(date_trend_info);
  2311. //log_d(str);
  2312. //释放资源
  2313. cJSON_Delete(date_trend_info);
  2314. return str;
  2315. }
  2316. /// @brief 返回监控总信息
  2317. /// @param _over_back_sts_info
  2318. /// @return
  2319. char* over_chn_pwr_monitor_to_json(_OverChnPwrAckInfo* _over_chn_pwr_back_info)
  2320. {
  2321. char* str = NULL;
  2322. char temp[32] = {0};
  2323. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2324. // 创建 JSON 对象
  2325. cJSON* root = cJSON_CreateObject();
  2326. // 添加基本键值对
  2327. cJSON_AddNumberToObject(root, "code", 200);
  2328. //创建数据
  2329. cJSON* data_root_array = cJSON_CreateArray();
  2330. //添加记录
  2331. list_for_each_entry(_chnPwrTemp, &_over_chn_pwr_back_info->list, list)
  2332. {
  2333. //添加第一条记录
  2334. cJSON* data_filed = cJSON_CreateObject();
  2335. cJSON_AddStringToObject(data_filed,"productName",_chnPwrTemp->product_name);
  2336. cJSON_AddStringToObject(data_filed,"productNumber",_chnPwrTemp->product_number);
  2337. sprintf(temp,"%d",_chnPwrTemp->product_id);
  2338. cJSON_AddStringToObject(data_filed,"productId",temp);
  2339. cJSON_AddStringToObject(data_filed,"productChName",_chnPwrTemp->productChName);
  2340. sprintf(temp,"%d",_chnPwrTemp->productChId);
  2341. cJSON_AddStringToObject(data_filed,"productChId",temp);
  2342. sprintf(temp,"%0.3f",_chnPwrTemp->voltage);
  2343. cJSON_AddStringToObject(data_filed,"productChVoltage",temp);
  2344. sprintf(temp,"%0.3f",_chnPwrTemp->current);
  2345. cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
  2346. sprintf(temp,"%0.3f",_chnPwrTemp->power);
  2347. cJSON_AddStringToObject(data_filed,"productChPower",temp);
  2348. sprintf(temp,"%0.3f",_chnPwrTemp->freq);
  2349. cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
  2350. sprintf(temp,"%0.3f",_chnPwrTemp->consumption);
  2351. cJSON_AddStringToObject(data_filed,"productChConsumption",temp);
  2352. sprintf(temp,"%0.3f",_chnPwrTemp->factor);
  2353. cJSON_AddStringToObject(data_filed,"productChPowerFactor",temp);
  2354. sprintf(temp,"%d",_chnPwrTemp->product_ch_start_delay/1000);
  2355. cJSON_AddStringToObject(data_filed,"firingInterval",temp);
  2356. sprintf(temp,"%d",_chnPwrTemp->product_ch_stop_delay/1000);
  2357. cJSON_AddStringToObject(data_filed,"closeInterval",temp);
  2358. if (_chnPwrTemp->product_type==TREE_AC_TYPE||_chnPwrTemp->product_type==DOUBLE_AC_TYPE||__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B)
  2359. {
  2360. if (_chnPwrTemp->product_phType>=0&&_chnPwrTemp->product_phType<3)
  2361. {
  2362. cJSON_AddStringToObject(data_filed, "productPhOrder", g_product_t_ac_type_str[_chnPwrTemp->product_phType]);
  2363. sprintf(temp, "%0.3f", _chnPwrTemp->ph_voltage);
  2364. cJSON_AddStringToObject(data_filed, "productPhOrderDy", temp);
  2365. sprintf(temp, "%0.3f", _chnPwrTemp->ph_current);
  2366. cJSON_AddStringToObject(data_filed, "productPhOrderDl", temp);
  2367. sprintf(temp, "%0.3f", _chnPwrTemp->ph_power);
  2368. cJSON_AddStringToObject(data_filed, "productPhOrderGl", temp);
  2369. sprintf(temp, "%0.3f", _chnPwrTemp->ph_consumption);
  2370. cJSON_AddStringToObject(data_filed, "productPhOrderHdl", temp);
  2371. sprintf(temp, "%d", _chnPwrTemp->ph_outputType);
  2372. cJSON_AddStringToObject(data_filed, "outputType", temp);
  2373. sprintf(temp, "%d", _chnPwrTemp->ph_outputStatus);
  2374. cJSON_AddStringToObject(data_filed, "outputStatus", temp);
  2375. }
  2376. }
  2377. //
  2378. // cJSON_AddNumberToObject(data_filed,"productChVoltage",_over_chn_pwr_back_info->voltage);
  2379. // cJSON_AddNumberToObject(data_filed,"productChCurrent",_over_chn_pwr_back_info->current);
  2380. // cJSON_AddNumberToObject(data_filed,"productChPower",_over_chn_pwr_back_info->power);
  2381. // cJSON_AddNumberToObject(data_filed,"productChPowerFreq",_over_chn_pwr_back_info->freq);
  2382. // cJSON_AddNumberToObject(data_filed,"productChConsumption",_over_chn_pwr_back_info->consumption);
  2383. // cJSON_AddNumberToObject(data_filed,"productChPowerFactor",_over_chn_pwr_back_info->factor);
  2384. sprintf(temp, "%d", _chnPwrTemp->status);
  2385. cJSON_AddStringToObject(data_filed, "productChStatus", temp);
  2386. sprintf(temp, "%d", _chnPwrTemp->NF_status);
  2387. cJSON_AddStringToObject(data_filed, "productChZeroStatus", temp);
  2388. sprintf(temp, "%d", _chnPwrTemp->OperAllowFlag);
  2389. cJSON_AddStringToObject(data_filed,"sfyxcz",temp);
  2390. #ifdef USE_NETSWITCH
  2391. cJSON_AddStringToObject(data_filed, "MACadress",_chnPwrTemp->mac_addr);
  2392. cJSON_AddStringToObject(data_filed, "IPadress", _chnPwrTemp->ip_addr);
  2393. #endif
  2394. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2395. }
  2396. //添加汇总
  2397. cJSON_AddItemToObject(root, "data", data_root_array);
  2398. //添加结果
  2399. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2400. //转换
  2401. str = cJSON_Print(root);
  2402. //释放资源
  2403. cJSON_Delete(root);
  2404. return str;
  2405. }
  2406. /// @brief 传感器总体信息请求
  2407. /// @param str
  2408. /// @param _over_all_sensor_request
  2409. /// @return
  2410. cJSON* json_to_sensor_manage(const char* str,_OverSensorRequest* _overSensorRequest)
  2411. {
  2412. cJSON* cjson = NULL;
  2413. cjson = cJSON_Parse(str);
  2414. if(cjson==NULL)
  2415. {
  2416. //log_e("Invalid JSON!");
  2417. return NULL;
  2418. }
  2419. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  2420. if(cjson_token!=NULL)
  2421. _overSensorRequest->user_token = cjson_token->valuestring;
  2422. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  2423. if(cjson_type!=NULL)
  2424. _overSensorRequest->type = cjson_type->valuestring;
  2425. cJSON* cjson_productName = cJSON_GetObjectItem(cjson,"productName");
  2426. if(cjson_productName!=NULL)
  2427. _overSensorRequest->productName = cjson_productName->valuestring;
  2428. cJSON* cjson_productChName = cJSON_GetObjectItem(cjson,"productChName");
  2429. if(cjson_productChName!=NULL)
  2430. _overSensorRequest->productChName = cjson_productChName->valuestring;
  2431. cJSON* cjson_productChId = cJSON_GetObjectItem(cjson,"productChId");
  2432. if(cjson_productChId!=NULL)
  2433. _overSensorRequest->productChId = cjson_productChId->valuestring;
  2434. cJSON* cjson_startTime = cJSON_GetObjectItem(cjson,"startTime");
  2435. if(cjson_startTime!=NULL)
  2436. _overSensorRequest->startTime = cjson_startTime->valuestring;
  2437. cJSON* cjson_endTime = cJSON_GetObjectItem(cjson,"endTime");
  2438. if(cjson_endTime!=NULL)
  2439. _overSensorRequest->endTime = cjson_endTime->valuestring;
  2440. cJSON* cjson_sensorId = cJSON_GetObjectItem(cjson,"sensorId");
  2441. if(cjson_sensorId!=NULL)
  2442. _overSensorRequest->sensorId =atoi(cjson_sensorId->valuestring);
  2443. cJSON* cjson_sensorType = cJSON_GetObjectItem(cjson,"sensorType");
  2444. if(cjson_sensorType!=NULL)
  2445. _overSensorRequest->sensorType = cjson_sensorType->valuestring;
  2446. cJSON* cjson_sensorName = cJSON_GetObjectItem(cjson,"sensorName");
  2447. if(cjson_sensorName!=NULL)
  2448. _overSensorRequest->sensorName = cjson_sensorName->valuestring;
  2449. cJSON* cjson_comSlogan = cJSON_GetObjectItem(cjson,"comSlogan");
  2450. if(cjson_comSlogan!=NULL)
  2451. _overSensorRequest->comSlogan = cjson_comSlogan->valuestring;
  2452. cJSON* cjson_cgqtd = cJSON_GetObjectItem(cjson,"cgqtd");
  2453. if(cjson_cgqtd!=NULL)
  2454. _overSensorRequest->cgqtd = cjson_cgqtd->valuestring;
  2455. cJSON* cjson_sensorAddr = cJSON_GetObjectItem(cjson,"sensorAddr");
  2456. if(cjson_sensorAddr!=NULL)
  2457. _overSensorRequest->sensorAddr = cjson_sensorAddr->valuestring;
  2458. cJSON* cjson_sensorBaud = cJSON_GetObjectItem(cjson,"sensorBaud");
  2459. if(cjson_sensorBaud!=NULL)
  2460. _overSensorRequest->sensorBaud = cjson_sensorBaud->valuestring;
  2461. cJSON* cjson_connectionStatus = cJSON_GetObjectItem(cjson,"connectionStatus");
  2462. if(cjson_connectionStatus!=NULL)
  2463. _overSensorRequest->connectionStatus = cjson_connectionStatus->valuestring;
  2464. return cjson;
  2465. }
  2466. /// @brief return breaker chn information
  2467. /// @param _over_all_pwr_back_info
  2468. /// @return
  2469. char* over_all_breaker_chn_info_to_json(_OverBreakerChnInfo* _over_all_breaker_back_info,int nWSType)
  2470. {
  2471. char* str = NULL;
  2472. struct list_head *pos;
  2473. _OverBreakerChnInfo* _temp = NULL;
  2474. char temp_buf[16] = {0};
  2475. // 创建 JSON 对象
  2476. cJSON* root = cJSON_CreateObject();
  2477. // 添加基本键值对
  2478. // 添加基本键值对
  2479. cJSON* sdata_filed = cJSON_CreateObject();
  2480. // 创建数据
  2481. cJSON *data_root_array = cJSON_CreateArray();
  2482. if (nWSType)
  2483. {
  2484. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  2485. }
  2486. else
  2487. {
  2488. cJSON_AddNumberToObject(root, "code", 200);
  2489. }
  2490. list_for_each_entry(_temp, &_over_all_breaker_back_info->list, list)
  2491. {
  2492. char temp[32] = {0};
  2493. cJSON* data_filed = cJSON_CreateObject();
  2494. cJSON_AddStringToObject(data_filed, "productName",_temp->product_name);
  2495. cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
  2496. cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_name);
  2497. cJSON_AddStringToObject(data_filed, "productChName",_temp->product_ch_name);
  2498. sprintf(temp,"%d",_temp->product_ch_id);
  2499. cJSON_AddStringToObject(data_filed,"productChId",temp);
  2500. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2501. }
  2502. if (nWSType)
  2503. {
  2504. // 添加汇总
  2505. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  2506. // 添加结果
  2507. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2508. cJSON_AddItemToObject(root, "data", sdata_filed);
  2509. // 添加内容
  2510. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2511. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  2512. cJSON_AddBoolToObject(root, "success", true);
  2513. cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
  2514. }else
  2515. {
  2516. cJSON_AddItemToObject(root, "data", data_root_array);
  2517. // 添加内容
  2518. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2519. }
  2520. //转换
  2521. str = cJSON_Print(root);
  2522. //释放资源
  2523. cJSON_Delete(root);
  2524. return str;
  2525. }
  2526. /// @brief return breaker switch information
  2527. /// @param _over_all_pwr_back_info
  2528. /// @return
  2529. char* over_all_breaker_switch_info_to_json(_OverBreakerSwitchInfo* _over_all_breaker_switch_info,int nWSType)
  2530. {
  2531. char* str = NULL;
  2532. struct list_head *pos;
  2533. _OverBreakerSwitchInfo* _temp = NULL;
  2534. char temp_buf[16] = {0};
  2535. // 创建 JSON 对象
  2536. cJSON* root = cJSON_CreateObject();
  2537. // 添加基本键值对
  2538. // 添加基本键值对
  2539. cJSON* sdata_filed = cJSON_CreateObject();
  2540. // 创建数据
  2541. cJSON *data_root_array = cJSON_CreateArray();
  2542. if (nWSType)
  2543. {
  2544. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  2545. }
  2546. else
  2547. {
  2548. cJSON_AddNumberToObject(root, "code", 200);
  2549. }
  2550. list_for_each_entry(_temp, &_over_all_breaker_switch_info->list, list)
  2551. {
  2552. char temp[32] = {0};
  2553. cJSON* data_filed = cJSON_CreateObject();
  2554. cJSON_AddStringToObject(data_filed, "productName",_temp->productName);
  2555. cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
  2556. cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_number);
  2557. cJSON_AddStringToObject(data_filed, "productChNames",_temp->product_ch_name);
  2558. cJSON_AddStringToObject(data_filed,"productChIds",_temp->productChids);
  2559. cJSON_AddNumberToObject(data_filed,"switchId",_temp->switch_id);
  2560. cJSON_AddNumberToObject(data_filed, "switchStatus",_temp->status);
  2561. cJSON_AddStringToObject(data_filed, "switchName",_temp->switch_name);
  2562. cJSON_AddStringToObject(data_filed,"cjfs",_temp->cjfs);
  2563. cJSON_AddStringToObject(data_filed,"comkh",_temp->comkh);
  2564. cJSON_AddStringToObject(data_filed,"cjdz",_temp->cjdz);
  2565. cJSON_AddStringToObject(data_filed,"jdh",_temp->jdh);
  2566. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2567. }
  2568. if(list_empty(&_over_all_breaker_switch_info->list))
  2569. {
  2570. cJSON* data_filed = cJSON_CreateObject();
  2571. // cJSON_AddStringToObject(data_filed, "productName",_temp->productName);
  2572. // cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
  2573. // cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_number);
  2574. // cJSON_AddStringToObject(data_filed, "productChNames",_temp->product_ch_name);
  2575. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2576. }
  2577. if (nWSType)
  2578. {
  2579. // 添加汇总
  2580. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  2581. // 添加结果
  2582. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2583. cJSON_AddItemToObject(root, "data", sdata_filed);
  2584. // 添加内容
  2585. cJSON_AddStringToObject(root, "message", "提示信息");
  2586. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  2587. cJSON_AddBoolToObject(root, "success", true);
  2588. cJSON_AddStringToObject(root, "type", "switchEquipmentMintenance");
  2589. }else
  2590. {
  2591. cJSON_AddItemToObject(root, "data", data_root_array);
  2592. // 添加内容
  2593. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2594. }
  2595. //转换
  2596. str = cJSON_Print(root);
  2597. //释放资源
  2598. cJSON_Delete(root);
  2599. return str;
  2600. }
  2601. /// @brief 返回传感器信息
  2602. /// @param _over_all_pwr_back_info
  2603. /// @return
  2604. char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_info,int nWSType)
  2605. {
  2606. char* str = NULL;
  2607. struct list_head *pos;
  2608. _OverSensorBackInfo* _temp;
  2609. char temp_buf[16] = {0};
  2610. // 创建 JSON 对象
  2611. cJSON* root = cJSON_CreateObject();
  2612. // 添加基本键值对
  2613. // 添加基本键值对
  2614. cJSON* sdata_filed = cJSON_CreateObject();
  2615. // 创建数据
  2616. cJSON *data_root_array = cJSON_CreateArray();
  2617. if (nWSType)
  2618. {
  2619. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  2620. }
  2621. else
  2622. {
  2623. cJSON_AddNumberToObject(root, "code", 200);
  2624. }
  2625. //循环添加数据
  2626. list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
  2627. {
  2628. //log_d("sensor_name:%s", _temp->sensorName);
  2629. char temp[32] = {0};
  2630. cJSON* data_filed = cJSON_CreateObject();
  2631. sprintf(temp,"%d",_temp->accessControlStatus);
  2632. cJSON_AddStringToObject(data_filed, "accessControlStatus",temp);
  2633. cJSON_AddNumberToObject(data_filed,"sensorAddr",_temp->sensorAddr);
  2634. cJSON_AddStringToObject(data_filed,"cgqtd",_temp->sensorvaluech);
  2635. cJSON_AddNumberToObject(data_filed,"airPressureValue",_temp->airPressureValue);
  2636. cJSON_AddStringToObject(data_filed,"productName",__globalDeviceManage._globalDevInfo.product.name);
  2637. cJSON_AddNumberToObject(data_filed,"productId",__globalDeviceManage._globalDevInfo.product.id);
  2638. sprintf(temp,"%0.2f",_temp->airflowValue);
  2639. cJSON_AddStringToObject(data_filed,"airflowValue",temp);
  2640. cJSON_AddNumberToObject(data_filed,"alarmStatus",_temp->alarmStatus);
  2641. cJSON_AddNumberToObject(data_filed,"sensorBaud",_temp->sensorBaud);
  2642. cJSON_AddStringToObject(data_filed,"comSlogan",_temp->comSlogan);
  2643. if (_temp->connectionStatus >= 0)
  2644. {
  2645. sprintf(temp, "%d", _temp->connectionStatus);
  2646. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  2647. }
  2648. else
  2649. {
  2650. cJSON_AddStringToObject(data_filed, "connectionStatus", "");
  2651. }
  2652. sprintf(temp,"%0.2f",_temp->gasConcentration);
  2653. cJSON_AddStringToObject(data_filed,"gasConcentration",temp);
  2654. sprintf(temp,"%0.2f",_temp->humidityValue);
  2655. cJSON_AddStringToObject(data_filed,"humidityValue",temp);
  2656. cJSON_AddStringToObject(data_filed,"sensorName",_temp->sensorName);
  2657. sprintf(temp, "%d", _temp->sensorId);
  2658. cJSON_AddStringToObject(data_filed,"sensorId",temp);
  2659. sprintf(temp_buf,"%d",_temp->sensorType);
  2660. cJSON_AddStringToObject(data_filed,"sensorType",temp_buf);
  2661. //cJSON_AddNumberToObject(data_filed,"sensorType",_temp->sensorType);
  2662. cJSON_AddNumberToObject(data_filed,"jdh",_temp->nodeNumber);
  2663. sprintf(temp,"%0.2f",_temp->temperatureValue);
  2664. cJSON_AddStringToObject(data_filed,"temperatureValue",temp);
  2665. sprintf(temp,"%0.2f",_temp->temperatureValue2);
  2666. cJSON_AddStringToObject(data_filed,"temperatureValue2",temp);
  2667. //add leak sensor
  2668. sprintf(temp,"%d",!_temp->leakStatus);
  2669. cJSON_AddStringToObject(data_filed,"leakageStatus",temp);
  2670. cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
  2671. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2672. }
  2673. if (nWSType)
  2674. {
  2675. // 添加汇总
  2676. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  2677. // 添加结果
  2678. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2679. cJSON_AddItemToObject(root, "data", sdata_filed);
  2680. // 添加内容
  2681. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2682. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  2683. cJSON_AddBoolToObject(root, "success", true);
  2684. cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
  2685. }else
  2686. {
  2687. cJSON_AddItemToObject(root, "data", data_root_array);
  2688. // 添加内容
  2689. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2690. }
  2691. //转换
  2692. str = cJSON_Print(root);
  2693. //释放资源
  2694. cJSON_Delete(root);
  2695. return str;
  2696. }
  2697. char *breaker_status_ack_to_json(GlobalDeviceManager *gm,int slave)
  2698. {
  2699. char *strRet = NULL;
  2700. GlobalBreakerManager *_globalbreakerManger = &gm->g_new_global_breaker;
  2701. GlobalBreakerManager* temp = NULL;
  2702. _OverBreakerSwitchInfo _over_breaker_switch_info;
  2703. INIT_LIST_HEAD(&_over_breaker_switch_info.list);
  2704. lock_s_hold(LOCK_ID_BREAKER);
  2705. list_for_each_entry(temp, &_globalbreakerManger->list, list)
  2706. {
  2707. char buff[120] = {0};
  2708. // printf("get listSwitchtatusQuery infomation!!!\n");
  2709. _OverBreakerSwitchInfo *info = (_OverBreakerSwitchInfo *)
  2710. malloc(sizeof(_OverBreakerSwitchInfo));
  2711. memset(info,0,sizeof(_OverBreakerSwitchInfo));
  2712. info->product_id = temp->product_id;
  2713. sprintf(buff,"Breaker_%d",temp->breaker_id);
  2714. strcpy(info->product_ch_name,buff);
  2715. if(slave)
  2716. {
  2717. sprintf(buff,"%s %d",__globalDeviceManage._globalDevInfo.product.name, slave);
  2718. strcpy(info->productName,buff);
  2719. }else
  2720. strcpy(info->productName,__globalDeviceManage._globalDevInfo.product.name);
  2721. strcpy(info->product_number,__globalDeviceManage._globalDevInfo.product.number);
  2722. strcpy(info->productChids,temp->breaker_chns_name);
  2723. info->switch_id = temp->breaker_id;
  2724. info->status = temp->breaker_status;
  2725. strcpy(info->cjfs,temp->breaker_gather_type);
  2726. strcpy(info->switch_name,temp->breaker_switch_name);
  2727. strcpy(info->comkh,temp->breaker_com);
  2728. sprintf(buff,"%d",temp->breaker_gather_addr);
  2729. strcpy(info->cjdz,buff);
  2730. sprintf(buff,"%d",temp->breaker_chn);
  2731. strcpy(info->jdh,buff);
  2732. //printf("push %s %d %d %s %s %s %s\n",info->productChids,info->switch_id,info->status,info->cjfs,info->comkh,info->cjdz,info->jdh);
  2733. list_add_tail(&info->list,&_over_breaker_switch_info.list);
  2734. }
  2735. lock_s_release(LOCK_ID_BREAKER);
  2736. strRet = over_all_breaker_switch_info_to_json(&_over_breaker_switch_info,1);
  2737. //释放资源
  2738. _OverBreakerSwitchInfo* node;
  2739. _OverBreakerSwitchInfo* next;
  2740. list_for_each_entry_safe(node, next, &_over_breaker_switch_info.list, list)
  2741. {
  2742. list_del(&node->list);
  2743. free(node);
  2744. }
  2745. return strRet;
  2746. }
  2747. char *threshold_status_ack_to_json(GlobalDeviceManager *dm)
  2748. {
  2749. char* str = NULL;
  2750. char temp[32] = {0};
  2751. char Closetemp[32] = {0};
  2752. char Alarmtemp[32] = {0};
  2753. GlobalPowerManger *tmp = NULL;
  2754. cJSON* root = cJSON_CreateObject();
  2755. cJSON_AddNumberToObject(root, "code", 200);
  2756. cJSON* data_root_array = cJSON_CreateArray();
  2757. sprintf(Closetemp, "%d", ALARM_CTRL_CLOSE_CH);
  2758. sprintf(Alarmtemp, "%d", ALARM_CTRL_ALARM_ONLY);
  2759. // language_alarm_ctrl_Alarm[__globalDeviceManage._globalDevInfo.product.language]
  2760. // language_alarm_ctrl_CloseCH[__globalDeviceManage._globalDevInfo.product.language]
  2761. list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
  2762. {
  2763. cJSON* data_filed = cJSON_CreateObject();
  2764. cJSON_AddStringToObject(data_filed,"productChName",tmp->product_ch_name);
  2765. sprintf(temp,"%d",tmp->product_ch_id);
  2766. cJSON_AddStringToObject(data_filed,"productChId",temp);
  2767. //cJSON_AddNumberToObject(data_filed,"dyType",tmp->product_ch_id);
  2768. cJSON_AddNumberToObject(data_filed,"dyType",1);
  2769. sprintf(temp, "%d", tmp->_PowerInfo.status);
  2770. cJSON_AddStringToObject(data_filed,"productChStatus",temp);
  2771. sprintf(temp,"%0.2f",tmp->global_over_manager.product_cur_upper_threshold);
  2772. cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
  2773. sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_upper_threshold);
  2774. cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
  2775. sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_lower_threshold);
  2776. cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
  2777. sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwr_upper_threshold);
  2778. cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
  2779. sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwrcon_upper_threshold);
  2780. cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
  2781. if (tmp->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2782. {
  2783. cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
  2784. }
  2785. else
  2786. cJSON_AddStringToObject(data_filed, "currentUpperAction", Alarmtemp);
  2787. if (tmp->global_over_manager.product_vol_over_upper_threshold_ctrl ==ALARM_CTRL_CLOSE_CH)
  2788. {
  2789. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
  2790. }
  2791. else
  2792. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
  2793. if (tmp->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2794. {
  2795. cJSON_AddStringToObject(data_filed, "voltageDownAction",Closetemp );
  2796. }
  2797. else
  2798. cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
  2799. if (tmp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2800. {
  2801. cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
  2802. }
  2803. else
  2804. cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
  2805. if (tmp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2806. {
  2807. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Closetemp);
  2808. }
  2809. else
  2810. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
  2811. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2812. }
  2813. cJSON* data_filed = cJSON_CreateObject();
  2814. cJSON_AddStringToObject(data_filed,"productChName",tmp->product_ch_name);
  2815. sprintf(temp,"%d",tmp->product_ch_id);
  2816. cJSON_AddStringToObject(data_filed,"productChId",temp);
  2817. cJSON_AddNumberToObject(data_filed,"dyType",tmp->product_ch_id);
  2818. //sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
  2819. cJSON_AddStringToObject(data_filed,"productChStatus","-1");//总通道状态不显示
  2820. sprintf(temp,"%0.2f",tmp->global_over_manager.product_cur_upper_threshold);
  2821. cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
  2822. sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_upper_threshold);
  2823. cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
  2824. sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_lower_threshold);
  2825. cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
  2826. sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwr_upper_threshold);
  2827. cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
  2828. sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwrcon_upper_threshold);
  2829. cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
  2830. if (tmp->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2831. {
  2832. cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
  2833. }
  2834. else
  2835. cJSON_AddStringToObject(data_filed, "currentUpperAction",Alarmtemp);
  2836. if (tmp->global_over_manager.product_vol_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2837. {
  2838. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
  2839. }
  2840. else
  2841. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
  2842. if (tmp->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2843. {
  2844. cJSON_AddStringToObject(data_filed, "voltageDownAction", Closetemp);
  2845. }
  2846. else
  2847. cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
  2848. if (tmp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2849. {
  2850. cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
  2851. }
  2852. else
  2853. cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
  2854. if (tmp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  2855. {
  2856. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction",Closetemp);
  2857. }
  2858. else
  2859. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
  2860. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2861. cJSON_AddItemToObject(root, "data", data_root_array);
  2862. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  2863. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  2864. cJSON_AddBoolToObject(root, "success",true);
  2865. cJSON_AddStringToObject(root, "type", "powerChannelStatusMonitoring");
  2866. str = cJSON_Print(root);
  2867. cJSON_Delete(root);
  2868. return str;
  2869. }
  2870. /**
  2871. * @brief 将传感器状态应答转换为 JSON 字符串
  2872. *
  2873. * 将给定的传感器状态应答结构体转换为 JSON 格式的字符串。
  2874. *
  2875. * @param _over_all_sensor_back_info 传感器状态应答结构体指针
  2876. *
  2877. * @return 转换后的 JSON 字符串,若转换失败则返回 nullptr
  2878. */
  2879. char *ws_sensor_status_ack_to_json(GlobalSensorManger *_globalSensorManger)
  2880. {
  2881. char *strRet = NULL;
  2882. _OverSensorBackInfo _over_all_sensor_back_info;
  2883. INIT_LIST_HEAD(&_over_all_sensor_back_info.list);
  2884. // 获取传感器当前的最新值
  2885. GlobalSensorInfo _globalSensorInfo;
  2886. GlobalSensorManger *_globalSensorManagerTemp = NULL;
  2887. if(!list_empty(&_globalSensorManger->list)) {
  2888. list_for_each_entry(_globalSensorManagerTemp, &_globalSensorManger->list, list)
  2889. {
  2890. _OverSensorBackInfo *_overSensorBackInfoTemp = (_OverSensorBackInfo *)malloc(sizeof(_OverSensorBackInfo));
  2891. if (_overSensorBackInfoTemp == NULL)
  2892. log_e("_OverSensorBackInfo malloc error.");
  2893. memset(_overSensorBackInfoTemp, 0, sizeof(_OverSensorBackInfo));
  2894. // 基本信息
  2895. _overSensorBackInfoTemp->sensorId = _globalSensorManagerTemp->sensor_id;
  2896. strcpy(_overSensorBackInfoTemp->sensorName,_globalSensorManagerTemp->sensor_name);
  2897. _overSensorBackInfoTemp->sensorType = _globalSensorManagerTemp->sensor_type;
  2898. memcpy(&_overSensorBackInfoTemp->comSlogan, &_globalSensorManagerTemp->sensor_port_name, sizeof(_overSensorBackInfoTemp->comSlogan));
  2899. // strcpy(_overSensorBackInfoTemp->comSlogan,_globalSensorManagerTemp->sensor_port_name);
  2900. // 485独有
  2901. _overSensorBackInfoTemp->connectionStatus = _globalSensorManagerTemp->sensor_status;
  2902. _overSensorBackInfoTemp->nodeNumber = __globalDeviceManage._globalSensorManger.sensor_node_number;
  2903. if (_globalSensorManagerTemp->sensor_interface_type == 1)
  2904. {
  2905. _overSensorBackInfoTemp->sensorAddr = _globalSensorManagerTemp->sensor_addr;
  2906. _overSensorBackInfoTemp->sensorBaud = _globalSensorManagerTemp->sensor_baud;
  2907. strcpy(_overSensorBackInfoTemp->sensorvaluech, "RS485");
  2908. }
  2909. else
  2910. {
  2911. //_overSensorBackInfoTemp->connectionStatus = -1;
  2912. strcpy(_overSensorBackInfoTemp->sensorvaluech, _overSensorBackInfoTemp->comSlogan);
  2913. _overSensorBackInfoTemp->nodeNumber = _globalSensorManagerTemp->sensor_addr;
  2914. }
  2915. // 拿数据
  2916. memset(&_globalSensorInfo, 0, sizeof(_globalSensorInfo));
  2917. switch (_globalSensorManagerTemp->sensor_type)
  2918. {
  2919. case SENSOR_TYPE_TEMP_HUMI: // 温湿度传感器 2个值
  2920. {
  2921. _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2922. _overSensorBackInfoTemp->humidityValue = _globalSensorManagerTemp->Cur_sensor_info.val2;
  2923. }
  2924. break;
  2925. case SENSOR_TYPE_SMOKE: // 烟雾传感器 1个值
  2926. {
  2927. _overSensorBackInfoTemp->alarmStatus = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
  2928. }
  2929. break;
  2930. case SENSOR_TYPE_WATER: // 水浸传感器 1个值 c
  2931. {
  2932. _overSensorBackInfoTemp->waterImmersionState = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
  2933. }
  2934. break;
  2935. case SENSOR_TYPE_ACCESS: // 门禁传感器
  2936. {
  2937. _overSensorBackInfoTemp->accessControlStatus = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
  2938. }
  2939. break;
  2940. case SENSOR_TYPE_GAS: // 气体传感器 1个值
  2941. {
  2942. _overSensorBackInfoTemp->gasConcentration = _globalSensorManagerTemp->Cur_sensor_info.val1; // 气体浓度
  2943. }
  2944. break;
  2945. case SENSOR_TYPE_AIR_PRESS: // 气压气流传感器 2个值
  2946. {
  2947. _overSensorBackInfoTemp->airPressureValue = _globalSensorManagerTemp->Cur_sensor_info.val1; // 气压
  2948. _overSensorBackInfoTemp->airflowValue = _globalSensorManagerTemp->Cur_sensor_info.val2; // 气流
  2949. };
  2950. break;
  2951. case SENSOR_TYPE_AIR_COND: // 空调遥控器 没有值
  2952. {
  2953. }
  2954. break;
  2955. case SENSOR_TYPE_TEMP_DOUBLE:
  2956. {
  2957. _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2958. _overSensorBackInfoTemp->temperatureValue2 = _globalSensorManagerTemp->Cur_sensor_info.val2;
  2959. }
  2960. case SENSOR_TYPE_TEMP:
  2961. {
  2962. _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2963. }
  2964. break;
  2965. case SENSOR_TYPE_LEAK:
  2966. {
  2967. _overSensorBackInfoTemp->leakStatus = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2968. }
  2969. break;
  2970. }
  2971. // 入队
  2972. list_add_tail(&_overSensorBackInfoTemp->list, &_over_all_sensor_back_info.list);
  2973. }
  2974. // 转换
  2975. strRet = over_all_sensor_info_to_json(&_over_all_sensor_back_info, 1);
  2976. // 释放资源
  2977. _OverSensorBackInfo *node;
  2978. _OverSensorBackInfo *next;
  2979. list_for_each_entry_safe(node, next, &_over_all_sensor_back_info.list, list)
  2980. {
  2981. list_del(&node->list);
  2982. free(node);
  2983. }
  2984. }
  2985. return strRet;
  2986. }
  2987. /// @brief 返回传感器历史信息
  2988. /// @param _over_all_pwr_back_info
  2989. /// @return
  2990. char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_info, int sensor_type)
  2991. {
  2992. char* str = NULL;
  2993. struct list_head *pos;
  2994. _OverSensorBackInfo* _temp;
  2995. char temp[32] = {0};
  2996. // 创建 JSON 对象
  2997. cJSON* root = cJSON_CreateObject();
  2998. if(sensor_type == SENSOR_TYPE_VALUE)
  2999. {
  3000. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3001. cJSON_AddNumberToObject(root, "code", 200);
  3002. cJSON* data_root_array = cJSON_CreateArray();
  3003. list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
  3004. {
  3005. cJSON* data = cJSON_CreateObject();
  3006. cJSON* date_time_xAxis_array = cJSON_CreateArray();
  3007. if(_temp->sensorType == SENSOR_TYPE_TEMP_HUMI||
  3008. _temp->sensorType == SENSOR_TYPE_TEMP_DOUBLE)
  3009. {
  3010. for(int i=0;i< TOTAL_COUNT;i++)
  3011. {
  3012. cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->temp_humi_sensor.xAxis[i]);
  3013. }
  3014. cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
  3015. cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
  3016. cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
  3017. cJSON* type_data_array = cJSON_CreateArray();
  3018. cJSON* type_data_temp = cJSON_CreateObject();
  3019. cJSON_AddStringToObject(type_data_temp,"typeName",language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  3020. cJSON* ydate_temp_array = cJSON_CreateFloatArray(_temp->temp_humi_sensor.ydata[0],TOTAL_COUNT);
  3021. cJSON_AddItemToObject(type_data_temp,"ydata",ydate_temp_array);
  3022. cJSON_AddStringToObject(type_data_temp,"type","0");
  3023. cJSON_AddItemToArray(type_data_array,type_data_temp);
  3024. cJSON* type_data_humi = cJSON_CreateObject();
  3025. if (_temp->sensorType == SENSOR_TYPE_TEMP_DOUBLE)
  3026. {
  3027. cJSON_AddStringToObject(type_data_humi, "typeName", language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  3028. }
  3029. else
  3030. {
  3031. cJSON_AddStringToObject(type_data_humi, "typeName", language_humidity[__globalDeviceManage._globalDevInfo.product.language]);
  3032. }
  3033. cJSON* ydate_humi_array = cJSON_CreateFloatArray(_temp->temp_humi_sensor.ydata[1],TOTAL_COUNT);
  3034. cJSON_AddItemToObject(type_data_humi,"ydata",ydate_humi_array);
  3035. cJSON_AddStringToObject(type_data_humi,"type","1");
  3036. cJSON_AddItemToArray(type_data_array,type_data_humi);
  3037. //cJSON_AddArrayToObject(data,type_data_array);
  3038. cJSON_AddItemToObject(data,"typeData",type_data_array);
  3039. }
  3040. else if(_temp->sensorType == SENSOR_TYPE_GAS)
  3041. {
  3042. for(int i=0;i< TOTAL_COUNT;i++)
  3043. {
  3044. cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->gas_sensor.xAxis[i]);
  3045. }
  3046. cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
  3047. cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
  3048. cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
  3049. cJSON* type_data_array = cJSON_CreateArray();
  3050. cJSON* type_data_gas = cJSON_CreateObject();
  3051. cJSON_AddStringToObject(type_data_gas,"typeName",language_atmosphere_gas[__globalDeviceManage._globalDevInfo.product.language]);
  3052. cJSON* ydate_gas_array = cJSON_CreateFloatArray(_temp->gas_sensor.ydata,TOTAL_COUNT);
  3053. cJSON_AddItemToObject(type_data_gas,"ydata",ydate_gas_array);
  3054. cJSON_AddStringToObject(type_data_gas,"type","0");
  3055. cJSON_AddItemToArray(type_data_array,type_data_gas);
  3056. //cJSON_AddArrayToObject(data,type_data_array);
  3057. cJSON_AddItemToObject(data,"typeData",type_data_array);
  3058. }
  3059. else if(_temp->sensorType == SENSOR_TYPE_TEMP)
  3060. {
  3061. for(int i=0;i< TOTAL_COUNT;i++)
  3062. {
  3063. cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->temp_sensor.xAxis[i]);
  3064. }
  3065. cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
  3066. cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
  3067. cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
  3068. cJSON* type_data_array = cJSON_CreateArray();
  3069. cJSON* type_data = cJSON_CreateObject();
  3070. cJSON_AddStringToObject(type_data,"typeName",language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  3071. cJSON* ydate_array = cJSON_CreateFloatArray(_temp->temp_sensor.ydata,TOTAL_COUNT);
  3072. cJSON_AddItemToObject(type_data,"ydata",ydate_array);
  3073. cJSON_AddStringToObject(type_data,"type","0");
  3074. cJSON_AddItemToArray(type_data_array,type_data);
  3075. //cJSON_AddArrayToObject(data,type_data_array);
  3076. cJSON_AddItemToObject(data,"typeData",type_data_array);
  3077. }
  3078. else if(_temp->sensorType == SENSOR_TYPE_AIR_PRESS)
  3079. {
  3080. for(int i=0;i< TOTAL_COUNT;i++)
  3081. {
  3082. cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->air_press_sensor.xAxis[i]);
  3083. }
  3084. cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
  3085. cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
  3086. cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
  3087. cJSON* type_data_array = cJSON_CreateArray();
  3088. cJSON* type_data_air = cJSON_CreateObject();
  3089. cJSON_AddStringToObject(type_data_air,"typeName",language_atmosphere_airflow[__globalDeviceManage._globalDevInfo.product.language]);
  3090. cJSON* ydate_air_array = cJSON_CreateFloatArray(_temp->air_press_sensor.ydata[0],TOTAL_COUNT);
  3091. cJSON_AddItemToObject(type_data_air,"ydata",ydate_air_array);
  3092. cJSON_AddStringToObject(type_data_air,"type","0");
  3093. cJSON_AddItemToArray(type_data_array,type_data_air);
  3094. cJSON* type_data_press = cJSON_CreateObject();
  3095. cJSON_AddStringToObject(type_data_press,"typeName",language_atmosphere_pressure[__globalDeviceManage._globalDevInfo.product.language]);
  3096. cJSON* ydate_press_array = cJSON_CreateFloatArray(_temp->air_press_sensor.ydata[1],TOTAL_COUNT);
  3097. cJSON_AddItemToObject(type_data_press,"ydata",ydate_press_array);
  3098. cJSON_AddStringToObject(type_data_press,"type","1");
  3099. cJSON_AddItemToArray(type_data_array,type_data_press);
  3100. //cJSON_AddArrayToObject(data,type_data_array);
  3101. cJSON_AddItemToObject(data,"typeData",type_data_array);
  3102. }
  3103. sprintf(temp, "%d", _temp->sensorId);
  3104. cJSON_AddStringToObject(data,"sensorId",(const char*)temp);
  3105. //cJSON_AddArrayToObject(data_root_array,data);
  3106. cJSON_AddItemToArray(data_root_array,data);
  3107. }
  3108. //添加汇总
  3109. cJSON_AddItemToObject(root, "data", data_root_array);
  3110. }
  3111. else if(sensor_type == SENSOR_TYPE_LIST)
  3112. {
  3113. // 添加基本键值对
  3114. cJSON_AddNumberToObject(root, "code", 200);
  3115. cJSON_AddNumberToObject(root, "total", 3);
  3116. //创建数据
  3117. cJSON* data_root_array = cJSON_CreateArray();
  3118. //循环添加数据
  3119. list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
  3120. {
  3121. log_d("sensor_name:%s", _temp->sensorName);
  3122. cJSON* data_filed = cJSON_CreateObject();
  3123. cJSON_AddNumberToObject(data_filed, "accessControlStatus",_temp->accessControlStatus);
  3124. cJSON_AddNumberToObject(data_filed,"sensorAddr",_temp->sensorAddr);
  3125. cJSON_AddStringToObject(data_filed,"productName",__globalDeviceManage._globalDevInfo.product.name);
  3126. cJSON_AddStringToObject(data_filed,"productNumber",__globalDeviceManage._globalDevInfo.product.number);
  3127. cJSON_AddNumberToObject(data_filed, "alarmStatus",_temp->alarmStatus);
  3128. cJSON_AddNumberToObject(data_filed,"sensorBaud",_temp->sensorBaud);
  3129. cJSON_AddStringToObject(data_filed,"comSlogan",_temp->comSlogan);
  3130. cJSON_AddNumberToObject(data_filed, "connectionStatus",_temp->connectionStatus);
  3131. cJSON_AddStringToObject(data_filed,"sensorName",_temp->sensorName);
  3132. sprintf(temp, "%d", _temp->sensorId);
  3133. cJSON_AddStringToObject(data_filed,"sensorId",temp);
  3134. cJSON_AddNumberToObject(data_filed,"sensorType",_temp->sensorType);
  3135. cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
  3136. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3137. }
  3138. //添加汇总
  3139. cJSON_AddItemToObject(root, "data", data_root_array);
  3140. //添加结果
  3141. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3142. }
  3143. //转换
  3144. str = cJSON_Print(root);
  3145. //释放资源
  3146. cJSON_Delete(root);
  3147. return str;
  3148. }
  3149. /// @brief 返回告警日志
  3150. /// @param _alarm_ack_info
  3151. /// @return
  3152. char* alarm_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAllNumber)
  3153. {
  3154. char* str = NULL;
  3155. char temp[8] = {0};
  3156. struct list_head *pos;
  3157. _AlarmAckInfo* _temp;
  3158. // 创建 JSON 对象
  3159. cJSON* root = cJSON_CreateObject();
  3160. // 添加基本键值对
  3161. cJSON_AddNumberToObject(root, "code", 200);
  3162. //创建数据
  3163. cJSON* data_root_array = cJSON_CreateArray();
  3164. //循环添加数据
  3165. list_for_each_entry(_temp, &_alarm_ack_info->list, list)
  3166. {
  3167. cJSON* data_filed = cJSON_CreateObject();
  3168. cJSON_AddStringToObject(data_filed,"alarmNumber",_temp->alarmNumber);
  3169. cJSON_AddStringToObject(data_filed,"alarmDate",_temp->alarmDate);
  3170. if (_temp->alarmType==0)
  3171. {
  3172. cJSON_AddStringToObject(data_filed,"alarmType",language_alarm_Type_Power[__globalDeviceManage._globalDevInfo.product.language]);
  3173. }
  3174. else if (_temp->alarmType==1)
  3175. {
  3176. cJSON_AddStringToObject(data_filed,"alarmType",language_alarm_Type_Sensor[__globalDeviceManage._globalDevInfo.product.language]);
  3177. }
  3178. else if (_temp->alarmType==2)
  3179. {
  3180. cJSON_AddStringToObject(data_filed,"alarmType",language_alarm_Type_Network[__globalDeviceManage._globalDevInfo.product.language]);
  3181. }
  3182. else cJSON_AddStringToObject(data_filed,"alarmType","Unknown");
  3183. cJSON_AddStringToObject(data_filed,"deviceNumber",_temp->deviceNumber);
  3184. cJSON_AddStringToObject(data_filed,"deviceName",_temp->deviceName);
  3185. replace_sequences(_temp->alarmContent, __globalDeviceManage.alarmTab);
  3186. cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);
  3187. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3188. }
  3189. //数据总数
  3190. cJSON_AddNumberToObject(root, "total", nAllNumber);
  3191. //添加汇总
  3192. cJSON_AddItemToObject(root, "data", data_root_array);
  3193. //添加结果
  3194. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3195. //转换
  3196. str = cJSON_Print(root);
  3197. //释放资源
  3198. cJSON_Delete(root);
  3199. return str;
  3200. }
  3201. /// @brief 返回告警日志
  3202. /// @param _alarm_ack_info
  3203. /// @return
  3204. char* alarm_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum)
  3205. {
  3206. char* str = NULL;
  3207. char temp[8] = {0};
  3208. struct list_head *pos;
  3209. _AlarmAckInfo* _temp;
  3210. // 创建 JSON 对象
  3211. cJSON* root = cJSON_CreateObject();
  3212. // 添加基本键值对
  3213. cJSON_AddNumberToObject(root, "code", 200);
  3214. //创建数据
  3215. cJSON* data_root_array = cJSON_CreateArray();
  3216. //循环添加数据
  3217. list_for_each_entry(_temp, &_alarm_ack_info->list, list)
  3218. {
  3219. cJSON* data_filed = cJSON_CreateObject();
  3220. cJSON_AddStringToObject(data_filed,"alarmNumber",_temp->alarmNumber);
  3221. cJSON_AddStringToObject(data_filed,"alarmDate",_temp->alarmDate);
  3222. // sprintf(temp,"%d",_temp->alarmType);
  3223. // cJSON_AddStringToObject(data_filed,"alarmType",temp);
  3224. switch (_temp->alarmType)
  3225. {
  3226. case 0:cJSON_AddStringToObject(data_filed,"alarmType",language_log_Power[__globalDeviceManage._globalDevInfo.product.language]);break;
  3227. case 3:cJSON_AddStringToObject(data_filed,"alarmType",language_opera_log_operation[__globalDeviceManage._globalDevInfo.product.language]);break;
  3228. case 4:cJSON_AddStringToObject(data_filed,"type",language_run_log_running[__globalDeviceManage._globalDevInfo.product.language]);break;
  3229. }
  3230. cJSON_AddStringToObject(data_filed,"deviceNumber",_temp->deviceNumber);
  3231. cJSON_AddStringToObject(data_filed,"deviceName",_temp->deviceName);
  3232. replace_sequences(_temp->alarmContent,__globalDeviceManage.alarmTab);
  3233. switch (_temp->alarmType)
  3234. {
  3235. case 0:cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);break;
  3236. case 3:cJSON_AddStringToObject(data_filed,"operLocation",_temp->alarmContent);break;
  3237. case 4:cJSON_AddStringToObject(data_filed,"content",_temp->alarmContent);break;
  3238. }
  3239. //cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);
  3240. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3241. //total_number++;
  3242. }
  3243. //数据总数
  3244. cJSON_AddNumberToObject(root, "total", nAlarmNum);
  3245. //添加汇总
  3246. cJSON_AddItemToObject(root, "data", data_root_array);
  3247. //添加结果
  3248. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3249. //转换
  3250. str = cJSON_Print(root);
  3251. //释放资源
  3252. cJSON_Delete(root);
  3253. return str;
  3254. }
  3255. /// @brief 返回操作日志
  3256. /// @param _alarm_ack_info
  3257. /// @return
  3258. char* alarm_ctrl_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum)
  3259. {
  3260. char* str = NULL;
  3261. char temp[8] = {0};
  3262. struct list_head *pos;
  3263. _AlarmAckInfo* _temp;
  3264. // 创建 JSON 对象
  3265. cJSON* root = cJSON_CreateObject();
  3266. // 添加基本键值对
  3267. cJSON_AddNumberToObject(root, "code", 200);
  3268. //创建数据
  3269. cJSON* data_root_array = cJSON_CreateArray();
  3270. //循环添加数据
  3271. list_for_each_entry(_temp, &_alarm_ack_info->list, list)
  3272. {
  3273. cJSON* data_filed = cJSON_CreateObject();
  3274. cJSON_AddStringToObject(data_filed,"title",_temp->alarmNumber);
  3275. cJSON_AddStringToObject(data_filed,"operName","");
  3276. replace_sequences(_temp->alarmContent,__globalDeviceManage.alarmTab);
  3277. cJSON_AddStringToObject(data_filed,"operLocation",_temp->alarmContent);
  3278. cJSON_AddStringToObject(data_filed,"operTime",_temp->alarmDate);
  3279. // sprintf(temp,"%d",_temp->alarmType);
  3280. // cJSON_AddStringToObject(data_filed,"alarmType",temp);
  3281. //switch (_temp->alarmType)
  3282. //{
  3283. // case 0:cJSON_AddStringToObject(data_filed,"alarmType",language_log_Power[__globalDeviceManage._globalDevInfo.product.language]);break;
  3284. // case 3:cJSON_AddStringToObject(data_filed,"alarmType",language_opera_log_operation[__globalDeviceManage._globalDevInfo.product.language]);break;
  3285. // case 4:cJSON_AddStringToObject(data_filed,"alarmType",language_run_log_running[__globalDeviceManage._globalDevInfo.product.language]);break;
  3286. //}
  3287. //cJSON_AddStringToObject(data_filed,"deviceNumber",_temp->deviceNumber);
  3288. //cJSON_AddStringToObject(data_filed,"deviceName",_temp->deviceName);
  3289. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3290. }
  3291. //数据总数
  3292. cJSON_AddNumberToObject(root, "total", nAlarmNum);
  3293. //添加汇总
  3294. cJSON_AddItemToObject(root, "data", data_root_array);
  3295. //添加结果
  3296. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3297. //转换
  3298. str = cJSON_Print(root);
  3299. //释放资源
  3300. cJSON_Delete(root);
  3301. return str;
  3302. }
  3303. /// @brief 返回阈值
  3304. /// @param _globalPowerManger
  3305. /// @return
  3306. char* alarm_power_threshold_to_json(GlobalPowerManger* _globalPowerManger)
  3307. {
  3308. char* str = NULL;
  3309. GlobalPowerManger* _globalPowerMangerTemp = NULL ;
  3310. // 创建 JSON 对象
  3311. cJSON* root = cJSON_CreateObject();
  3312. // 添加基本键值对
  3313. cJSON_AddNumberToObject(root, "code", 200);
  3314. //创建数据
  3315. cJSON* data_root_array = cJSON_CreateArray();
  3316. char temp[32] = {0};
  3317. char Closetemp[32] = {0};
  3318. char Alarmtemp[32] = {0};
  3319. sprintf(Closetemp, "%d", ALARM_CTRL_CLOSE_CH);
  3320. sprintf(Alarmtemp, "%d", ALARM_CTRL_ALARM_ONLY);
  3321. // language_alarm_ctrl_Alarm[__globalDeviceManage._globalDevInfo.product.language]
  3322. // language_alarm_ctrl_CloseCH[__globalDeviceManage._globalDevInfo.product.language]
  3323. list_for_each_entry(_globalPowerMangerTemp, &_globalPowerManger->list, list)
  3324. {
  3325. cJSON* data_filed = cJSON_CreateObject();
  3326. cJSON_AddStringToObject(data_filed,"productChName",_globalPowerMangerTemp->product_ch_name);
  3327. sprintf(temp,"%d",_globalPowerMangerTemp->product_ch_id);
  3328. cJSON_AddStringToObject(data_filed,"productChId",temp);
  3329. //cJSON_AddNumberToObject(data_filed,"dyType",_globalPowerMangerTemp->product_ch_id);
  3330. cJSON_AddNumberToObject(data_filed,"dyType",1);
  3331. sprintf(temp, "%d", _globalPowerMangerTemp->_PowerInfo.status);
  3332. cJSON_AddStringToObject(data_filed,"productChStatus",temp);
  3333. sprintf(temp, "%d", _globalPowerMangerTemp->_PowerInfo.OperAllowFlag);
  3334. cJSON_AddStringToObject(data_filed,"sfyxcz",temp);
  3335. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_cur_upper_threshold);
  3336. cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
  3337. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_vol_upper_threshold);
  3338. cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
  3339. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_vol_lower_threshold);
  3340. cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
  3341. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_pwr_upper_threshold);
  3342. cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
  3343. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_pwrcon_upper_threshold);
  3344. cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
  3345. if (_globalPowerMangerTemp->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3346. {
  3347. cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
  3348. }
  3349. else
  3350. cJSON_AddStringToObject(data_filed, "currentUpperAction", Alarmtemp);
  3351. if (_globalPowerMangerTemp->global_over_manager.product_vol_over_upper_threshold_ctrl ==ALARM_CTRL_CLOSE_CH)
  3352. {
  3353. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
  3354. }
  3355. else
  3356. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
  3357. if (_globalPowerMangerTemp->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3358. {
  3359. cJSON_AddStringToObject(data_filed, "voltageDownAction",Closetemp );
  3360. }
  3361. else
  3362. cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
  3363. if (_globalPowerMangerTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3364. {
  3365. cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
  3366. }
  3367. else
  3368. cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
  3369. if (_globalPowerMangerTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3370. {
  3371. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Closetemp);
  3372. }
  3373. else
  3374. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
  3375. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3376. }
  3377. cJSON* data_filed = cJSON_CreateObject();
  3378. cJSON_AddStringToObject(data_filed,"productChName",_globalPowerManger->product_ch_name);
  3379. sprintf(temp,"%d",_globalPowerMangerTemp->product_ch_id);
  3380. cJSON_AddStringToObject(data_filed,"productChId",temp);
  3381. cJSON_AddNumberToObject(data_filed,"dyType",_globalPowerManger->product_ch_id);
  3382. //sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
  3383. cJSON_AddStringToObject(data_filed,"productChStatus","-1");//总通道状态不显示
  3384. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_cur_upper_threshold);
  3385. cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
  3386. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_vol_upper_threshold);
  3387. cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
  3388. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_vol_lower_threshold);
  3389. cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
  3390. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_pwr_upper_threshold);
  3391. cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
  3392. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_pwrcon_upper_threshold);
  3393. cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
  3394. if (_globalPowerManger->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3395. {
  3396. cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
  3397. }
  3398. else
  3399. cJSON_AddStringToObject(data_filed, "currentUpperAction",Alarmtemp);
  3400. if (_globalPowerManger->global_over_manager.product_vol_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3401. {
  3402. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
  3403. }
  3404. else
  3405. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
  3406. if (_globalPowerManger->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3407. {
  3408. cJSON_AddStringToObject(data_filed, "voltageDownAction", Closetemp);
  3409. }
  3410. else
  3411. cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
  3412. if (_globalPowerManger->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3413. {
  3414. cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
  3415. }
  3416. else
  3417. cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
  3418. if (_globalPowerManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3419. {
  3420. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction",Closetemp);
  3421. }
  3422. else
  3423. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
  3424. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3425. //添加汇总
  3426. cJSON_AddItemToObject(root, "data", data_root_array);
  3427. //添加结果
  3428. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3429. //转换
  3430. str = cJSON_Print(root);
  3431. //释放资源
  3432. cJSON_Delete(root);
  3433. return str;
  3434. }
  3435. /// @brief 传感器阈值查询
  3436. /// @param _globalSensorManger
  3437. /// @return
  3438. char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
  3439. {
  3440. char* str = NULL;
  3441. GlobalSensorManger* _globalSensorMangerTemp = NULL ;
  3442. char temp[64] = {0};
  3443. char subTemp[1024] = {0};
  3444. // 创建 JSON 对象
  3445. cJSON* root = cJSON_CreateObject();
  3446. cJSON *data_filed = NULL;
  3447. // 添加基本键值对
  3448. cJSON_AddNumberToObject(root, "code", 200);
  3449. //创建数据
  3450. cJSON* data_root_array = cJSON_CreateArray();
  3451. char Closetemp[32] = {0};
  3452. char Alarmtemp[32] = {0};
  3453. sprintf(Closetemp, "%d", ALARM_CTRL_CLOSE_CH);
  3454. sprintf(Alarmtemp, "%d", ALARM_CTRL_ALARM_ONLY);
  3455. // language_alarm_ctrl_Alarm[__globalDeviceManage._globalDevInfo.product.language]
  3456. // language_alarm_ctrl_CloseCH[__globalDeviceManage._globalDevInfo.product.language]
  3457. int langID=__globalDeviceManage._globalDevInfo.product.language;
  3458. list_for_each_entry(_globalSensorMangerTemp, &_globalSensorManger->list, list)
  3459. {
  3460. switch (_globalSensorMangerTemp->sensor_type)
  3461. {
  3462. case SENSOR_TYPE_TEMP:
  3463. {
  3464. data_filed = cJSON_CreateObject();
  3465. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
  3466. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  3467. cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
  3468. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3469. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3470. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3471. if (SENSOR_TYPE_TEMP_DOUBLE == _globalSensorMangerTemp->sensor_type)
  3472. {
  3473. sprintf(temp, "%s%d", language_temperature[__globalDeviceManage._globalDevInfo.product.language], 1);
  3474. cJSON_AddStringToObject(data_filed, "thresholdType", temp);
  3475. }
  3476. else
  3477. {
  3478. cJSON_AddStringToObject(data_filed, "thresholdType", language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  3479. }
  3480. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
  3481. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3482. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
  3483. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3484. if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3485. {
  3486. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3487. }
  3488. else
  3489. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3490. if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3491. {
  3492. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3493. }
  3494. else
  3495. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3496. char *pCHlist;
  3497. char *pCHListSave;
  3498. char sensor_para[512];
  3499. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para) > 0)
  3500. {
  3501. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3502. cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3503. memset(subTemp, 0, sizeof(subTemp));
  3504. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3505. // 其他版本功能
  3506. while (pCHlist != NULL)
  3507. {
  3508. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3509. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3510. {
  3511. if (_globalPowerMangerTemp == NULL)
  3512. break;
  3513. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3514. {
  3515. if (strlen(subTemp) <= 0)
  3516. {
  3517. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3518. }
  3519. else
  3520. {
  3521. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3522. }
  3523. strcat(subTemp, temp);
  3524. break;
  3525. }
  3526. }
  3527. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3528. }
  3529. cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
  3530. }
  3531. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para) > 0)
  3532. {
  3533. cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3534. memset(subTemp, 0, sizeof(subTemp));
  3535. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3536. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3537. // 其他版本功能
  3538. while (pCHlist != NULL)
  3539. {
  3540. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3541. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3542. {
  3543. if (_globalPowerMangerTemp == NULL)
  3544. break;
  3545. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3546. {
  3547. if (strlen(subTemp) <= 0)
  3548. {
  3549. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3550. }
  3551. else
  3552. {
  3553. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3554. }
  3555. strcat(subTemp, temp);
  3556. break;
  3557. }
  3558. }
  3559. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3560. }
  3561. cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
  3562. }
  3563. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3564. }
  3565. break;
  3566. case SENSOR_TYPE_TEMP_HUMI:
  3567. case SENSOR_TYPE_TEMP_DOUBLE:
  3568. {
  3569. data_filed = cJSON_CreateObject();
  3570. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
  3571. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  3572. cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
  3573. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3574. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3575. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3576. if (SENSOR_TYPE_TEMP_DOUBLE == _globalSensorMangerTemp->sensor_type)
  3577. {
  3578. sprintf(temp, "%s%d", language_temperature[__globalDeviceManage._globalDevInfo.product.language], 1);
  3579. cJSON_AddStringToObject(data_filed, "thresholdType", temp);
  3580. }
  3581. else
  3582. {
  3583. cJSON_AddStringToObject(data_filed, "thresholdType", language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  3584. }
  3585. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
  3586. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3587. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
  3588. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3589. if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3590. {
  3591. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3592. }
  3593. else
  3594. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3595. if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3596. {
  3597. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3598. }
  3599. else
  3600. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3601. char *pCHlist;
  3602. char *pCHListSave;
  3603. char sensor_para[512];
  3604. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para) > 0)
  3605. {
  3606. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3607. cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3608. memset(subTemp, 0, sizeof(subTemp));
  3609. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3610. // 其他版本功能
  3611. while (pCHlist != NULL)
  3612. {
  3613. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3614. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3615. {
  3616. if (_globalPowerMangerTemp == NULL)
  3617. break;
  3618. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3619. {
  3620. if (strlen(subTemp) <= 0)
  3621. {
  3622. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3623. }
  3624. else
  3625. {
  3626. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3627. }
  3628. strcat(subTemp, temp);
  3629. break;
  3630. }
  3631. }
  3632. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3633. }
  3634. cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
  3635. }
  3636. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para) > 0)
  3637. {
  3638. cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3639. memset(subTemp, 0, sizeof(subTemp));
  3640. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3641. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3642. // 其他版本功能
  3643. while (pCHlist != NULL)
  3644. {
  3645. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3646. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3647. {
  3648. if (_globalPowerMangerTemp == NULL)
  3649. break;
  3650. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3651. {
  3652. if (strlen(subTemp) <= 0)
  3653. {
  3654. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3655. }
  3656. else
  3657. {
  3658. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3659. }
  3660. strcat(subTemp, temp);
  3661. break;
  3662. }
  3663. }
  3664. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3665. }
  3666. cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
  3667. }
  3668. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3669. data_filed = cJSON_CreateObject();
  3670. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
  3671. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  3672. cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
  3673. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3674. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3675. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3676. if (SENSOR_TYPE_TEMP_DOUBLE == _globalSensorMangerTemp->sensor_type)
  3677. {
  3678. sprintf(temp, "%s%d", language_temperature[__globalDeviceManage._globalDevInfo.product.language], 2);
  3679. cJSON_AddStringToObject(data_filed, "thresholdType", temp);
  3680. }
  3681. else
  3682. {
  3683. cJSON_AddStringToObject(data_filed, "thresholdType", language_humidity[__globalDeviceManage._globalDevInfo.product.language]);
  3684. }
  3685. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold);
  3686. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3687. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold);
  3688. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3689. if (_globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3690. {
  3691. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3692. }
  3693. else
  3694. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3695. if (_globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3696. {
  3697. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3698. }
  3699. else
  3700. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3701. char *pCHlist1;
  3702. char *pCHListSave1;
  3703. char sensor_para1[512];
  3704. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl_para) > 0)
  3705. {
  3706. strcpy(sensor_para1, _globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl_para);
  3707. cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl_para);
  3708. memset(subTemp, 0, sizeof(subTemp));
  3709. pCHlist1 = strtok_r(sensor_para1, ",", &pCHListSave1);
  3710. // 其他版本功能
  3711. while (pCHlist1 != NULL)
  3712. {
  3713. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3714. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3715. {
  3716. if (_globalPowerMangerTemp == NULL)
  3717. break;
  3718. if (atoi(pCHlist1) == _globalPowerMangerTemp->product_ch_id)
  3719. {
  3720. if (strlen(subTemp) <= 0)
  3721. {
  3722. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3723. }
  3724. else
  3725. {
  3726. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3727. }
  3728. strcat(subTemp, temp);
  3729. break;
  3730. }
  3731. }
  3732. pCHlist1 = strtok_r(NULL, ",", &pCHListSave1);
  3733. }
  3734. cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
  3735. }
  3736. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl_para) > 0)
  3737. {
  3738. cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl_para);
  3739. memset(subTemp, 0, sizeof(subTemp));
  3740. strcpy(sensor_para1, _globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl_para);
  3741. pCHlist1 = strtok_r(sensor_para1, ",", &pCHListSave1);
  3742. // 其他版本功能
  3743. while (pCHlist1 != NULL)
  3744. {
  3745. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3746. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3747. {
  3748. if (_globalPowerMangerTemp == NULL)
  3749. break;
  3750. if (atoi(pCHlist1) == _globalPowerMangerTemp->product_ch_id)
  3751. {
  3752. if (strlen(subTemp) <= 0)
  3753. {
  3754. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3755. }
  3756. else
  3757. {
  3758. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3759. }
  3760. strcat(subTemp, temp);
  3761. break;
  3762. }
  3763. }
  3764. pCHlist1 = strtok_r(NULL, ",", &pCHListSave1);
  3765. }
  3766. cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
  3767. }
  3768. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3769. }
  3770. break;
  3771. case SENSOR_TYPE_SMOKE:
  3772. case SENSOR_TYPE_WATER:
  3773. case SENSOR_TYPE_ACCESS:
  3774. case SENSOR_TYPE_LEAK:
  3775. data_filed = cJSON_CreateObject();
  3776. cJSON_AddStringToObject(data_filed, "connectionStatus", "");
  3777. cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
  3778. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3779. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3780. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3781. cJSON_AddStringToObject(data_filed, "thresholdType", "");
  3782. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", "");
  3783. cJSON_AddStringToObject(data_filed, "thresholdDownValue", "");
  3784. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3785. break;
  3786. case SENSOR_TYPE_GAS:
  3787. {
  3788. data_filed = cJSON_CreateObject();
  3789. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
  3790. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  3791. cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
  3792. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3793. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3794. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3795. cJSON_AddStringToObject(data_filed, "thresholdType", language_atmosphere_gas[__globalDeviceManage._globalDevInfo.product.language]);
  3796. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
  3797. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3798. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
  3799. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3800. if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3801. {
  3802. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3803. }
  3804. else
  3805. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3806. if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3807. {
  3808. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3809. }
  3810. else
  3811. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3812. char *pCHlist;
  3813. char *pCHListSave;
  3814. char sensor_para[512];
  3815. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para) > 0)
  3816. {
  3817. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3818. cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3819. memset(subTemp, 0, sizeof(subTemp));
  3820. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3821. // 其他版本功能
  3822. while (pCHlist != NULL)
  3823. {
  3824. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3825. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3826. {
  3827. if (_globalPowerMangerTemp == NULL)
  3828. break;
  3829. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3830. {
  3831. if (strlen(subTemp) <= 0)
  3832. {
  3833. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3834. }
  3835. else
  3836. {
  3837. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3838. }
  3839. strcat(subTemp, temp);
  3840. break;
  3841. }
  3842. }
  3843. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3844. }
  3845. cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
  3846. }
  3847. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para) > 0)
  3848. {
  3849. cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3850. memset(subTemp, 0, sizeof(subTemp));
  3851. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3852. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3853. // 其他版本功能
  3854. while (pCHlist != NULL)
  3855. {
  3856. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3857. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3858. {
  3859. if (_globalPowerMangerTemp == NULL)
  3860. break;
  3861. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3862. {
  3863. if (strlen(subTemp) <= 0)
  3864. {
  3865. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3866. }
  3867. else
  3868. {
  3869. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3870. }
  3871. strcat(subTemp, temp);
  3872. break;
  3873. }
  3874. }
  3875. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3876. }
  3877. cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
  3878. }
  3879. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3880. }
  3881. break;
  3882. case SENSOR_TYPE_AIR_PRESS:
  3883. default:
  3884. data_filed = cJSON_CreateObject();
  3885. cJSON_AddNumberToObject(data_filed, "connectionStatus", _globalSensorMangerTemp->sensor_status);
  3886. // cJSON_AddNumberToObject(data_filed,"connectionStatus",_globalSensorMangerTemp->sensor_status);
  3887. cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
  3888. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3889. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3890. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3891. cJSON_AddStringToObject(data_filed, "thresholdType", "");
  3892. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
  3893. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3894. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
  3895. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3896. if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3897. {
  3898. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3899. }
  3900. else
  3901. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3902. if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3903. {
  3904. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3905. }
  3906. else
  3907. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3908. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3909. break;
  3910. }
  3911. }
  3912. //添加汇总
  3913. cJSON_AddItemToObject(root, "data", data_root_array);
  3914. //添加结果
  3915. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3916. //转换
  3917. str = cJSON_Print(root);
  3918. //释放资源
  3919. cJSON_Delete(root);
  3920. return str;
  3921. }
  3922. /// @brief 返回ws请求
  3923. /// @param type
  3924. /// @return
  3925. char* ws_over_status_ack_to_json(int type,_OverAllPwrAckInfo* _over_all_pwr_back_info)
  3926. {
  3927. char* str = NULL;
  3928. char temp[32] = {0};
  3929. GlobalDeviceManager *dm=&__globalDeviceManage;
  3930. // 创建 JSON 对象
  3931. cJSON* root = cJSON_CreateObject();
  3932. // 添加基本键值对
  3933. cJSON* sdata_filed = cJSON_CreateObject();
  3934. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  3935. cJSON* sub_data_root_array = cJSON_CreateArray();
  3936. cJSON* data_filed = cJSON_CreateObject();
  3937. if (_over_all_pwr_back_info->product_id == 0)
  3938. {
  3939. sprintf(temp, "%s", _over_all_pwr_back_info->product_name);
  3940. }
  3941. else
  3942. {
  3943. sprintf(temp, "%s %d", _over_all_pwr_back_info->product_name, _over_all_pwr_back_info->product_id);
  3944. }
  3945. cJSON_AddStringToObject(data_filed,"productName",temp);
  3946. // cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info->product_number);
  3947. cJSON_AddStringToObject(data_filed,"productNumber","Smart PDU");
  3948. sprintf(temp,"%d",_over_all_pwr_back_info->product_id);
  3949. cJSON_AddStringToObject(data_filed,"productId",temp);
  3950. sprintf(temp,"%0.3f",_over_all_pwr_back_info->voltage);
  3951. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  3952. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  3953. cJSON_AddStringToObject(data_filed,"productVoltageMaximum",temp);
  3954. sprintf(temp,"%0.3f",_over_all_pwr_back_info->current);
  3955. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  3956. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  3957. cJSON_AddStringToObject(data_filed,"productCurrentMaximum",temp);
  3958. sprintf(temp,"%0.3f",_over_all_pwr_back_info->power/1000);
  3959. cJSON_AddStringToObject(data_filed,"productPower",temp);
  3960. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  3961. cJSON_AddStringToObject(data_filed,"productPowerMaximum",temp);
  3962. sprintf(temp,"%0.3f",_over_all_pwr_back_info->freq);
  3963. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  3964. sprintf(temp,"%0.3f",_over_all_pwr_back_info->consumption);
  3965. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  3966. sprintf(temp,"%0.3f",_over_all_pwr_back_info->factor);
  3967. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  3968. sprintf(temp,"%0.3f",1.0);
  3969. cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
  3970. cJSON_AddItemToObject(sub_data_root_array, "data", data_filed);
  3971. //添加汇总
  3972. cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
  3973. //添加结果
  3974. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3975. //添加汇总
  3976. cJSON_AddItemToObject(root, "data", sdata_filed);
  3977. //添加内容
  3978. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  3979. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  3980. cJSON_AddBoolToObject(root, "success",true);
  3981. switch (type)
  3982. {
  3983. case 0:cJSON_AddStringToObject(root, "type", "overallStatusMonitoring");break;
  3984. case 1:cJSON_AddStringToObject(root, "type", "channelStatusMonitoring");break;
  3985. case 2:cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");break;
  3986. }
  3987. //转换
  3988. str = cJSON_Print(root);
  3989. //释放资源
  3990. cJSON_Delete(root);
  3991. return str;
  3992. }
  3993. /// @brief 返回通道电压信息
  3994. /// @param type
  3995. /// @param _over_chn_pwr_back_info
  3996. /// @return
  3997. char* ws_chn_status_ack_to_json(int type,_OverChnPwrAckInfo* _over_chn_pwr_back_info, GlobalDeviceManager *gdm)
  3998. {
  3999. char* str = NULL;
  4000. char temp[32] = {0};
  4001. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  4002. // 创建 JSON 对象
  4003. cJSON* root = cJSON_CreateObject();
  4004. // 添加基本键值对
  4005. cJSON* sdata_filed = cJSON_CreateObject();
  4006. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  4007. cJSON* sub_data_root_array = cJSON_CreateArray();
  4008. //添加记录
  4009. list_for_each_entry(_chnPwrTemp, &_over_chn_pwr_back_info->list, list)
  4010. {
  4011. //添加第一条记录
  4012. cJSON* data_filed = cJSON_CreateObject();
  4013. if(_chnPwrTemp->product_id==0) {
  4014. sprintf(temp,"%s",_chnPwrTemp->product_name);
  4015. }
  4016. else {
  4017. sprintf(temp,"%s %d",_chnPwrTemp->product_name, _chnPwrTemp->product_id);
  4018. }
  4019. cJSON_AddStringToObject(data_filed,"productName",temp);
  4020. cJSON_AddStringToObject(data_filed,"productNumber",_chnPwrTemp->product_number);
  4021. sprintf(temp,"%d",_chnPwrTemp->product_id);
  4022. cJSON_AddStringToObject(data_filed,"productId",temp);
  4023. cJSON_AddStringToObject(data_filed,"productChName",_chnPwrTemp->productChName);
  4024. sprintf(temp, "%d", _chnPwrTemp->productChId);
  4025. cJSON_AddStringToObject(data_filed, "productChId", temp);
  4026. sprintf(temp,"%0.3f",_chnPwrTemp->voltage);
  4027. cJSON_AddStringToObject(data_filed,"productChVoltage",temp);
  4028. sprintf(temp,"%0.3f",_chnPwrTemp->current);
  4029. cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
  4030. sprintf(temp,"%0.3f",_chnPwrTemp->power);
  4031. cJSON_AddStringToObject(data_filed,"productChPower",temp);
  4032. sprintf(temp,"%0.3f",_chnPwrTemp->freq);
  4033. cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
  4034. sprintf(temp,"%0.3f",_chnPwrTemp->consumption);
  4035. cJSON_AddStringToObject(data_filed,"productChConsumption",temp);
  4036. sprintf(temp,"%0.3f",_chnPwrTemp->factor);
  4037. cJSON_AddStringToObject(data_filed,"productChPowerFactor",temp);
  4038. sprintf(temp,"%d",_chnPwrTemp->product_ch_start_delay/1000);
  4039. cJSON_AddStringToObject(data_filed,"firingInterval",temp);
  4040. sprintf(temp,"%d",_chnPwrTemp->product_ch_stop_delay/1000);
  4041. cJSON_AddStringToObject(data_filed,"closeInterval",temp);
  4042. sprintf(temp, "%d", _chnPwrTemp->status);
  4043. cJSON_AddStringToObject(data_filed,"productChStatus",temp);
  4044. sprintf(temp, "%d", _chnPwrTemp->NF_status);
  4045. cJSON_AddStringToObject(data_filed,"productChZeroStatus",temp);
  4046. sprintf(temp, "%d", _chnPwrTemp->OperAllowFlag);
  4047. cJSON_AddStringToObject(data_filed,"sfyxcz",temp);
  4048. #ifdef USE_NETSWITCH
  4049. cJSON_AddStringToObject(data_filed, "MACadress",_chnPwrTemp->mac_addr);
  4050. cJSON_AddStringToObject(data_filed, "IPadress",_chnPwrTemp->ip_addr);
  4051. #endif
  4052. if (_chnPwrTemp->product_type == TREE_AC_TYPE||_chnPwrTemp->product_type == DOUBLE_AC_TYPE||gdm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B)
  4053. {
  4054. if (_chnPwrTemp->product_phType >= 0 && _chnPwrTemp->product_phType < 3)
  4055. {
  4056. cJSON_AddStringToObject(data_filed, "productPhOrder", g_product_t_ac_type_str[_chnPwrTemp->product_phType]);
  4057. sprintf(temp, "%0.3f", _chnPwrTemp->ph_voltage);
  4058. cJSON_AddStringToObject(data_filed, "productPhOrderDy", temp);
  4059. sprintf(temp, "%0.3f", _chnPwrTemp->ph_current);
  4060. cJSON_AddStringToObject(data_filed, "productPhOrderDl", temp);
  4061. sprintf(temp, "%0.3f", _chnPwrTemp->ph_power);
  4062. cJSON_AddStringToObject(data_filed, "productPhOrderGl", temp);
  4063. sprintf(temp, "%0.3f", _chnPwrTemp->ph_consumption);
  4064. cJSON_AddStringToObject(data_filed, "productPhOrderHdl", temp);
  4065. sprintf(temp, "%d", _chnPwrTemp->ph_outputType);
  4066. cJSON_AddStringToObject(data_filed, "outputType", temp);
  4067. sprintf(temp, "%d", _chnPwrTemp->ph_outputStatus);
  4068. cJSON_AddStringToObject(data_filed, "outputStatus", temp);
  4069. }
  4070. }
  4071. cJSON_AddItemToObject(sub_data_root_array, "data", data_filed);
  4072. }
  4073. //添加汇总
  4074. cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
  4075. //添加结果
  4076. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4077. //添加汇总
  4078. cJSON_AddItemToObject(root, "data", sdata_filed);
  4079. //添加内容
  4080. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4081. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  4082. cJSON_AddBoolToObject(root, "success",true);
  4083. switch (type)
  4084. {
  4085. case 0:cJSON_AddStringToObject(root, "type", "overallStatusMonitoring");break;
  4086. case 1:cJSON_AddStringToObject(root, "type", "channelStatusMonitoring");break;
  4087. case 2:cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");break;
  4088. }
  4089. //转换
  4090. str = cJSON_Print(root);
  4091. //释放资源
  4092. cJSON_Delete(root);
  4093. return str;
  4094. }
  4095. /// @brief 返回网络信息
  4096. /// @param _networkInfo_t
  4097. /// @return
  4098. char* communication_net_ack_to_json(NetworkInfo_t* _networkInfo_t)
  4099. {
  4100. char* str = NULL;
  4101. char tmp[10];
  4102. // 创建 JSON 对象
  4103. cJSON* root = cJSON_CreateObject();
  4104. // 添加基本键值对
  4105. cJSON_AddNumberToObject(root, "code", 200);
  4106. //创建数据
  4107. cJSON* data_root_array = cJSON_CreateObject();
  4108. sprintf(tmp, "%d", _networkInfo_t->mode);
  4109. cJSON_AddStringToObject(data_root_array, "mode", tmp);
  4110. cJSON_AddStringToObject(data_root_array, "ipaddress", _networkInfo_t->ip_address);
  4111. cJSON_AddStringToObject(data_root_array, "mask", _networkInfo_t->mask);
  4112. cJSON_AddStringToObject(data_root_array, "gateway", _networkInfo_t->gateway);
  4113. cJSON_AddStringToObject(data_root_array, "dns1", _networkInfo_t->dns1);
  4114. cJSON_AddStringToObject(data_root_array, "dns2", _networkInfo_t->dns2);
  4115. //添加汇总
  4116. cJSON_AddItemToObject(root, "data", data_root_array);
  4117. //添加结果
  4118. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4119. //转换
  4120. str = cJSON_Print(root);
  4121. //释放资源
  4122. cJSON_Delete(root);
  4123. return str;
  4124. }
  4125. /// @brief 返回RS485信息
  4126. /// @param _networkInfo_t
  4127. /// @return
  4128. char* communication_rs_ack_to_json(ModbusInfo_t* _modbusInfo_t)
  4129. {
  4130. char temp[32] = {0};
  4131. char* str = NULL;
  4132. // 创建 JSON 对象
  4133. cJSON* root = cJSON_CreateObject();
  4134. // 添加基本键值对
  4135. cJSON_AddNumberToObject(root, "code", 200);
  4136. //创建数据
  4137. memset(temp, 0, sizeof(temp));
  4138. cJSON* data_root_array = cJSON_CreateObject();
  4139. if ( !_modbusInfo_t->mode)
  4140. {
  4141. sprintf(temp,language_alarm_RS485_master[__globalDeviceManage._globalDevInfo.product.language]);
  4142. }
  4143. else
  4144. {
  4145. sprintf(temp,language_alarm_RS485_slave[__globalDeviceManage._globalDevInfo.product.language]);
  4146. }
  4147. cJSON_AddStringToObject(data_root_array, "mode", temp);
  4148. memset(temp, 0, sizeof(temp));
  4149. sprintf(temp,"%d",_modbusInfo_t->addr);
  4150. cJSON_AddStringToObject(data_root_array, "ipaddress", temp);
  4151. memset(temp, 0, sizeof(temp));
  4152. sprintf(temp,"%d",_modbusInfo_t->baudrate);
  4153. cJSON_AddStringToObject(data_root_array, "sensorBaud", temp);
  4154. //添加汇总
  4155. cJSON_AddItemToObject(root, "data", data_root_array);
  4156. //添加结果
  4157. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4158. //转换
  4159. str = cJSON_Print(root);
  4160. //释放资源
  4161. cJSON_Delete(root);
  4162. return str;
  4163. }
  4164. /// @brief 返回RS485信息
  4165. /// @param _networkInfo_t
  4166. /// @return
  4167. char* communication_4G_ack_to_json(CellInfo_t* _CellularManagerTemp,int nWSType)
  4168. {
  4169. char temp[32] = {0};
  4170. char* str = NULL;
  4171. // 创建 JSON 对象
  4172. cJSON* root = cJSON_CreateObject();
  4173. //创建数据
  4174. memset(temp, 0, sizeof(temp));
  4175. cJSON* sdata_filed = NULL;
  4176. // 创建数据
  4177. cJSON *data_root_array = cJSON_CreateObject();
  4178. if (nWSType)
  4179. {
  4180. sdata_filed = cJSON_CreateObject();
  4181. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  4182. }
  4183. else
  4184. {
  4185. cJSON_AddNumberToObject(root, "code", 200);
  4186. }
  4187. if ( !_CellularManagerTemp->mode)
  4188. {
  4189. sprintf(temp,"0");
  4190. }
  4191. else
  4192. {
  4193. sprintf(temp,"1");
  4194. }
  4195. cJSON_AddStringToObject(data_root_array, "czmode", temp);
  4196. cJSON_AddStringToObject(data_root_array, "yys", _CellularManagerTemp->Cellular_name);
  4197. cJSON_AddStringToObject(data_root_array, "tel", _CellularManagerTemp->Cellular_Num);
  4198. cJSON_AddStringToObject(data_root_array, "ipFourAddress", _CellularManagerTemp->ipv4);
  4199. cJSON_AddStringToObject(data_root_array, "ipSixAddress", _CellularManagerTemp->ipv6);
  4200. memset(temp, 0, sizeof(temp));
  4201. if (!_CellularManagerTemp->Link_status)
  4202. {
  4203. sprintf(temp, "未连接");
  4204. }
  4205. else
  4206. sprintf(temp, "已连接");
  4207. cJSON_AddStringToObject(data_root_array, "ljzt", temp);
  4208. memset(temp, 0, sizeof(temp));
  4209. sprintf(temp, "%d dBm", _CellularManagerTemp->Signal_strength);
  4210. cJSON_AddStringToObject(data_root_array, "xhqd", temp);
  4211. int idx = 0;
  4212. cJSON *array = NULL;
  4213. for (int i = 0; i < MAIL_RECV_MAX; i++)
  4214. {
  4215. if (strlen(_CellularManagerTemp->sms_recv[i].account) > 0)
  4216. {
  4217. cJSON *tmp = cJSON_CreateObject();
  4218. cJSON_AddStringToObject(tmp, "receiveAccount", _CellularManagerTemp->sms_recv[i].account);
  4219. cJSON_AddNumberToObject(tmp, "idx", idx++);
  4220. if (array == NULL)
  4221. {
  4222. array = cJSON_CreateArray();
  4223. }
  4224. if (array)
  4225. {
  4226. cJSON_AddItemToArray(array, tmp);
  4227. }
  4228. }
  4229. }
  4230. if (array)
  4231. {
  4232. cJSON_AddItemToObject(data_root_array, "receiveAccountList", array);
  4233. }
  4234. if (nWSType)
  4235. {
  4236. // 添加汇总
  4237. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  4238. // 添加结果
  4239. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4240. cJSON_AddItemToObject(root, "data", sdata_filed);
  4241. // 添加内容
  4242. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4243. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  4244. cJSON_AddBoolToObject(root, "success", true);
  4245. cJSON_AddStringToObject(root, "type", "fourgStatus");
  4246. }else
  4247. {
  4248. cJSON_AddItemToObject(root, "data", data_root_array);
  4249. // 添加内容
  4250. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4251. }
  4252. //转换
  4253. str = cJSON_Print(root);
  4254. //释放资源
  4255. cJSON_Delete(root);
  4256. return str;
  4257. }
  4258. /// @brief 返回RS485信息
  4259. /// @param _networkInfo_t
  4260. /// @return
  4261. char* communication_WIFI_ack_to_json(WIFIInfo_t* _WIFIManagertemp,int nWSType)
  4262. {
  4263. char temp[32] = {0};
  4264. char* str = NULL;
  4265. // 创建 JSON 对象
  4266. cJSON* root = cJSON_CreateObject();
  4267. //创建数据
  4268. memset(temp, 0, sizeof(temp));
  4269. cJSON *sdata_filed = NULL;
  4270. // 创建数据
  4271. cJSON *data_root_array = cJSON_CreateObject();
  4272. if (nWSType)
  4273. {
  4274. sdata_filed = cJSON_CreateObject();
  4275. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  4276. }
  4277. else
  4278. {
  4279. cJSON_AddNumberToObject(root, "code", 200);
  4280. }
  4281. if ( !_WIFIManagertemp->mode)
  4282. {
  4283. sprintf(temp,"0");
  4284. }
  4285. else
  4286. {
  4287. sprintf(temp,"1");
  4288. }
  4289. cJSON_AddStringToObject(data_root_array, "czmode", temp);
  4290. cJSON_AddStringToObject(data_root_array, "password", _WIFIManagertemp->WIFI_code);
  4291. cJSON_AddStringToObject(data_root_array, "IPadress", _WIFIManagertemp->WIFI_ip);
  4292. memset(temp, 0, sizeof(temp));
  4293. if (!_WIFIManagertemp->Link_status)
  4294. {
  4295. sprintf(temp, "未连接");
  4296. }
  4297. else
  4298. sprintf(temp, "已连接");
  4299. cJSON_AddStringToObject(data_root_array, "ljzt", temp);
  4300. cJSON_AddStringToObject(data_root_array, "ssid", _WIFIManagertemp->WIFI_name);
  4301. if (nWSType)
  4302. {
  4303. // 添加汇总
  4304. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  4305. // 添加结果
  4306. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4307. cJSON_AddItemToObject(root, "data", sdata_filed);
  4308. // 添加内容
  4309. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4310. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  4311. cJSON_AddBoolToObject(root, "success", true);
  4312. cJSON_AddStringToObject(root, "type", "wifiStatus");
  4313. }else
  4314. {
  4315. cJSON_AddItemToObject(root, "data", data_root_array);
  4316. // 添加内容
  4317. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4318. }
  4319. //转换
  4320. str = cJSON_Print(root);
  4321. //释放资源
  4322. cJSON_Delete(root);
  4323. return str;
  4324. }
  4325. /// @brief 返回定时设置
  4326. /// @param chn_name
  4327. /// @param chn_id
  4328. /// @param __powerDSManage_t
  4329. /// @return
  4330. char* service_ds_ack_to_json(char* chn_name,char* chn_id,_PowerDSManage_t* __powerDSManage_t)
  4331. {
  4332. if (!__powerDSManage_t)
  4333. {
  4334. return NULL;
  4335. }
  4336. char* str = NULL;
  4337. char datetemp[32]={0};
  4338. _PowerDSManage_t* _powerDsManageTemp = NULL ;
  4339. // 创建 JSON 对象
  4340. cJSON* root = cJSON_CreateObject();
  4341. // 添加基本键值对
  4342. cJSON_AddNumberToObject(root, "code", 200);
  4343. //创建数据
  4344. cJSON* data_root_array = cJSON_CreateArray();
  4345. //循环添加数据
  4346. list_for_each_entry(_powerDsManageTemp, &__powerDSManage_t->list, list)
  4347. {
  4348. cJSON* data_filed = cJSON_CreateObject();
  4349. cJSON_AddStringToObject(data_filed,"productChName",chn_name);
  4350. cJSON_AddStringToObject(data_filed,"productChId",chn_id);
  4351. cJSON_AddStringToObject(data_filed,"setDate", _powerDsManageTemp->set_date);
  4352. strcpy(datetemp,_powerDsManageTemp->ds_date);
  4353. strcat(datetemp,_powerDsManageTemp->ds_time);
  4354. cJSON_AddStringToObject(data_filed,"setTime",datetemp);
  4355. cJSON_AddNumberToObject(data_filed,"setStatus",_powerDsManageTemp->set_stats);
  4356. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  4357. }
  4358. //添加汇总
  4359. cJSON_AddItemToObject(root, "data", data_root_array);
  4360. //添加结果
  4361. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4362. //转换
  4363. str = cJSON_Print(root);
  4364. //释放资源
  4365. cJSON_Delete(root);
  4366. return str;
  4367. }
  4368. /// @brief 返回所有定时设置
  4369. /// @param chn_name
  4370. /// @param chn_id
  4371. /// @param __powerDSManage_t
  4372. /// @return
  4373. char* service_ds_all_ack_to_json(char* pDate,char* strName,char* strchID,GlobalPowerManger* _powerAll,int nWSType)
  4374. {
  4375. if (!_powerAll)
  4376. {
  4377. return NULL;
  4378. }
  4379. char* str = NULL;
  4380. int nchID=0;
  4381. char datetemp[32]={0};
  4382. char temp[64]={0};
  4383. _PowerDSManage_t* _powerDsManageTemp = NULL ;
  4384. // 创建 JSON 对象
  4385. cJSON* root = cJSON_CreateObject();
  4386. cJSON* sdata_filed = cJSON_CreateObject();
  4387. if (nWSType)
  4388. {
  4389. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  4390. }
  4391. else
  4392. {
  4393. cJSON_AddNumberToObject(root, "code", 200);
  4394. }
  4395. // 创建数据
  4396. cJSON *data_root_array = cJSON_CreateArray();
  4397. GlobalPowerManger* _globalPowerMangerTemp=NULL;
  4398. list_for_each_entry(_globalPowerMangerTemp, &_powerAll->list, list)
  4399. {
  4400. if (!(strchID == NULL || *strchID == '\0'))//ID号
  4401. {
  4402. nchID=atoi(strchID);
  4403. if (nchID>0)
  4404. {
  4405. if (nchID != _globalPowerMangerTemp->product_ch_id)
  4406. {
  4407. continue;
  4408. }
  4409. }
  4410. }
  4411. if (!(strName == NULL || *strName == '\0'))//名称
  4412. {
  4413. if (strcmp(_globalPowerMangerTemp->product_ch_name, strName) != 0)
  4414. {
  4415. continue;
  4416. }
  4417. }
  4418. // 循环添加数据s
  4419. _powerDsManageTemp=NULL;
  4420. list_for_each_entry(_powerDsManageTemp, &_globalPowerMangerTemp->list_DS,list)
  4421. {
  4422. if (!(pDate == NULL || *pDate == '\0'))
  4423. {
  4424. if (strcmp(_powerDsManageTemp->ds_date, pDate) != 0)
  4425. {
  4426. continue;
  4427. }
  4428. }
  4429. cJSON *data_filed = cJSON_CreateObject();
  4430. sprintf(temp,"%d %s %s",_globalPowerMangerTemp->product_ch_id,_powerDsManageTemp->ds_date,_powerDsManageTemp->ds_time);
  4431. cJSON_AddStringToObject(data_filed, "idx", temp);
  4432. cJSON_AddStringToObject(data_filed, "productChName", _globalPowerMangerTemp->product_ch_name);
  4433. sprintf(temp,"%d",_globalPowerMangerTemp->product_ch_id);
  4434. cJSON_AddStringToObject(data_filed, "productChId", temp);
  4435. cJSON_AddStringToObject(data_filed, "setDate", _powerDsManageTemp->ds_date);
  4436. cJSON_AddStringToObject(data_filed, "setTime", _powerDsManageTemp->ds_time);
  4437. cJSON_AddNumberToObject(data_filed, "setStatus", _powerDsManageTemp->set_stats);
  4438. cJSON_AddNumberToObject(data_filed, "triggerStatus", _powerDsManageTemp->ds_is_triggered);
  4439. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  4440. }
  4441. }
  4442. if (nWSType)
  4443. {
  4444. // 添加汇总
  4445. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  4446. // 添加结果
  4447. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4448. cJSON_AddItemToObject(root, "data", sdata_filed);
  4449. // 添加内容
  4450. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4451. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  4452. cJSON_AddBoolToObject(root, "success", true);
  4453. cJSON_AddStringToObject(root, "type", "dsStatus");
  4454. }else
  4455. {
  4456. cJSON_AddItemToObject(root, "data", data_root_array);
  4457. // 添加内容
  4458. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  4459. }
  4460. //转换
  4461. str = cJSON_Print(root);
  4462. //释放资源
  4463. cJSON_Delete(root);
  4464. return str;
  4465. }
  4466. /// @brief 告警信息请求
  4467. /// @param str
  4468. /// @param _over_all_sensor_request
  4469. /// @return
  4470. cJSON* json_to_alarm_manage(const char* str,_AlarmRequestInfo* _alarm_request_info)
  4471. {
  4472. cJSON* cjson = NULL;
  4473. cjson = cJSON_Parse(str);
  4474. if(cjson==NULL)
  4475. {
  4476. //log_e("Invalid JSON!");
  4477. return NULL;
  4478. }
  4479. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4480. if(cjson_token!=NULL)
  4481. _alarm_request_info->user_token = cjson_token->valuestring;
  4482. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4483. if(cjson_type!=NULL)
  4484. _alarm_request_info->type = cjson_type->valuestring ;
  4485. cJSON* cjson_pagenum = cJSON_GetObjectItem(cjson,"pageNum");
  4486. if(cjson_pagenum!=NULL)
  4487. _alarm_request_info->pagenum = cjson_pagenum->valueint ;
  4488. cJSON* cjson_pagesize = cJSON_GetObjectItem(cjson,"pageSize");
  4489. if(cjson_pagesize!=NULL)
  4490. _alarm_request_info->pagesize = cjson_pagesize->valueint ;
  4491. cJSON* cjson_start_time = cJSON_GetObjectItem(cjson,"startTime");
  4492. if(cjson_start_time!=NULL)
  4493. _alarm_request_info->startTime = cjson_start_time->valuestring ;
  4494. cJSON* cjson_end_time = cJSON_GetObjectItem(cjson,"endTime");
  4495. if(cjson_end_time!=NULL)
  4496. _alarm_request_info->endTime = cjson_end_time->valuestring ;
  4497. _alarm_request_info->_pwr_info.bUpdatealarmContentUpperValue = false;
  4498. cJSON* cjson_alarmContentUpperValue = cJSON_GetObjectItem(cjson,"alarmContentUpperValue");
  4499. if(cjson_alarmContentUpperValue!=NULL)
  4500. {
  4501. if (cjson_alarmContentUpperValue->valuestring)
  4502. {
  4503. _alarm_request_info->_pwr_info.alarmContentUpperValue = cjson_alarmContentUpperValue->valuestring;
  4504. _alarm_request_info->_pwr_info.bUpdatealarmContentUpperValue = true;
  4505. }
  4506. else _alarm_request_info->_pwr_info.bUpdatealarmContentUpperValue = false;
  4507. }
  4508. _alarm_request_info->_pwr_info.bUpdatecurrentUpperValue = false;
  4509. cJSON* cjson_currentUpperValue = cJSON_GetObjectItem(cjson,"currentUpperValue");
  4510. if(cjson_currentUpperValue!=NULL)
  4511. {
  4512. if (cjson_currentUpperValue->valuestring)
  4513. {
  4514. _alarm_request_info->_pwr_info.currentUpperValue = cjson_currentUpperValue->valuestring ;
  4515. _alarm_request_info->_pwr_info.bUpdatecurrentUpperValue = true;
  4516. }
  4517. else _alarm_request_info->_pwr_info.bUpdatecurrentUpperValue = false;
  4518. }
  4519. _alarm_request_info->_pwr_info.bUpdatepowerUpperValue = false;
  4520. cJSON* cjson_powerUpperValue = cJSON_GetObjectItem(cjson,"powerUpperValue");
  4521. if(cjson_powerUpperValue!=NULL)
  4522. {
  4523. if (cjson_powerUpperValue->valuestring)
  4524. {
  4525. _alarm_request_info->_pwr_info.powerUpperValue = cjson_powerUpperValue->valuestring;
  4526. _alarm_request_info->_pwr_info.bUpdatepowerUpperValue = true;
  4527. }
  4528. else _alarm_request_info->_pwr_info.bUpdatepowerUpperValue = false;
  4529. }
  4530. cJSON* cjson_productChId = cJSON_GetObjectItem(cjson,"productChId");
  4531. if(cjson_productChId!=NULL)
  4532. _alarm_request_info->_pwr_info.productChId = atoi(cjson_productChId->valuestring) ;
  4533. cJSON* cjson_productChName = cJSON_GetObjectItem(cjson,"productChName");
  4534. if(cjson_productChName!=NULL)
  4535. _alarm_request_info->_pwr_info.productChName = cjson_productChName->valuestring ;
  4536. _alarm_request_info->_pwr_info.bUpdatevoltageDownValue = false;
  4537. cJSON* cjson_voltageDownValue = cJSON_GetObjectItem(cjson,"voltageDownValue");
  4538. if(cjson_voltageDownValue!=NULL)
  4539. {
  4540. if (cjson_voltageDownValue->valuestring)
  4541. {
  4542. _alarm_request_info->_pwr_info.voltageDownValue = cjson_voltageDownValue->valuestring;
  4543. _alarm_request_info->_pwr_info.bUpdatevoltageDownValue = true;
  4544. }
  4545. else _alarm_request_info->_pwr_info.bUpdatevoltageDownValue = false;
  4546. }
  4547. _alarm_request_info->_pwr_info.bUpdatevoltageUpperValue = false;
  4548. cJSON* cjson_voltageUpperValue = cJSON_GetObjectItem(cjson,"voltageUpperValue");
  4549. if(cjson_voltageUpperValue!=NULL)
  4550. {
  4551. if (cjson_voltageUpperValue->valuestring)
  4552. {
  4553. _alarm_request_info->_pwr_info.voltageUpperValue = cjson_voltageUpperValue->valuestring ;
  4554. _alarm_request_info->_pwr_info.bUpdatevoltageUpperValue = true;
  4555. }
  4556. else _alarm_request_info->_pwr_info.bUpdatevoltageUpperValue = false;
  4557. }
  4558. cJSON* cjson_connectionStatus = cJSON_GetObjectItem(cjson,"connectionStatus");
  4559. if(cjson_connectionStatus!=NULL)
  4560. _alarm_request_info->_sensor_info.connectionStatus = cjson_connectionStatus->valuestring ;
  4561. cJSON* cjson_sensorId = cJSON_GetObjectItem(cjson,"sensorId");
  4562. if(cjson_sensorId!=NULL)
  4563. {
  4564. if (cjson_sensorId->valuestring)
  4565. {
  4566. _alarm_request_info->_sensor_info.sensorId = atoi(cjson_sensorId->valuestring);
  4567. }else{
  4568. _alarm_request_info->_sensor_info.sensorId = cjson_sensorId->valueint ;
  4569. }
  4570. }
  4571. cJSON* cjson_sensorName = cJSON_GetObjectItem(cjson,"sensorName");
  4572. if(cjson_sensorName!=NULL)
  4573. _alarm_request_info->_sensor_info.sensorName = cjson_sensorName->valuestring ;
  4574. cJSON* cjson_sensorType = cJSON_GetObjectItem(cjson,"sensorType");
  4575. if(cjson_sensorType!=NULL)
  4576. _alarm_request_info->_sensor_info.sensorType = cjson_sensorType->valuestring ;
  4577. cJSON* cjson_thresholdType = cJSON_GetObjectItem(cjson,"thresholdType");
  4578. if(cjson_thresholdType!=NULL)
  4579. _alarm_request_info->_sensor_info.thresholdType = cjson_thresholdType->valuestring ;
  4580. cJSON* cjson_thresholdDownValue = cJSON_GetObjectItem(cjson,"thresholdDownValue");
  4581. if(cjson_thresholdDownValue!=NULL)
  4582. _alarm_request_info->_sensor_info.thresholdDownValue = cjson_thresholdDownValue->valuestring ;
  4583. cJSON* cjson_thresholdUpperValue = cJSON_GetObjectItem(cjson,"thresholdUpperValue");
  4584. if(cjson_thresholdUpperValue!=NULL)
  4585. _alarm_request_info->_sensor_info.thresholdUpperValue = cjson_thresholdUpperValue->valuestring ;
  4586. cJSON* cjson_currentUpperAction = cJSON_GetObjectItem(cjson,"currentUpperAction");
  4587. if(cjson_currentUpperAction!=NULL)
  4588. _alarm_request_info->_pwr_info.currentUpperAction = cjson_currentUpperAction->valuestring ;
  4589. cJSON* cjson_voltageUpperAction = cJSON_GetObjectItem(cjson,"voltageUpperAction");
  4590. if(cjson_voltageUpperAction!=NULL)
  4591. _alarm_request_info->_pwr_info.voltageUpperAction = cjson_voltageUpperAction->valuestring ;
  4592. cJSON* cjson_voltageDownAction = cJSON_GetObjectItem(cjson,"voltageDownAction");
  4593. if(cjson_voltageDownAction!=NULL)
  4594. _alarm_request_info->_pwr_info.voltageDownAction = cjson_voltageDownAction->valuestring ;
  4595. cJSON* cjson_powerUpperAction = cJSON_GetObjectItem(cjson,"powerUpperAction");
  4596. if(cjson_powerUpperAction!=NULL)
  4597. _alarm_request_info->_pwr_info.powerUpperAction = cjson_powerUpperAction->valuestring ;
  4598. cJSON* cjson_alarmContentUpperAction = cJSON_GetObjectItem(cjson,"alarmContentUpperAction");
  4599. if(cjson_alarmContentUpperAction!=NULL)
  4600. _alarm_request_info->_pwr_info.alarmContentUpperAction = cjson_alarmContentUpperAction->valuestring ;
  4601. cJSON* cjson_thresholdDownAction = cJSON_GetObjectItem(cjson,"thresholdDownAction");
  4602. if(cjson_thresholdDownAction!=NULL)
  4603. _alarm_request_info->_sensor_info.thresholdDownAction = cjson_thresholdDownAction->valuestring ;
  4604. cJSON* cjson_thresholdUpperAction= cJSON_GetObjectItem(cjson,"thresholdUpperAction");
  4605. if(cjson_thresholdUpperAction!=NULL)
  4606. _alarm_request_info->_sensor_info.thresholdUpperAction = cjson_thresholdUpperAction->valuestring ;
  4607. cJSON *cjson_thresholdDownChanel = cJSON_GetObjectItem(cjson, "thresholdDownChanel");
  4608. if (cjson_thresholdDownChanel != NULL)
  4609. _alarm_request_info->_sensor_info.thresholdDownChanel = cjson_thresholdDownChanel->valuestring;
  4610. cJSON *cjson_thresholdUpperChanel = cJSON_GetObjectItem(cjson, "thresholdUpperChanel");
  4611. if (cjson_thresholdUpperChanel != NULL)
  4612. _alarm_request_info->_sensor_info.thresholdUpperChanel = cjson_thresholdUpperChanel->valuestring;
  4613. cJSON *cjson_productChIds = cJSON_GetObjectItem(cjson, "productChIds");
  4614. if (cjson_productChIds != NULL)
  4615. _alarm_request_info->strProductChIds = cjson_productChIds->valuestring;
  4616. return cjson;
  4617. }
  4618. /// @brief 日志信息查询
  4619. /// @param str
  4620. /// @param _logInformationRequestInfo
  4621. /// @return
  4622. cJSON* json_to_loginformation_manage(const char* str,_LogInformationRequestInfo* _logInformationRequestInfo)
  4623. {
  4624. cJSON* cjson = NULL;
  4625. cjson = cJSON_Parse(str);
  4626. if(cjson==NULL)
  4627. {
  4628. //log_e("Invalid JSON!");
  4629. return NULL;
  4630. }
  4631. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4632. if(cjson_token!=NULL)
  4633. _logInformationRequestInfo->user_token = cjson_token->valuestring;
  4634. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4635. if(cjson_type!=NULL)
  4636. _logInformationRequestInfo->type = cjson_type->valuestring ;
  4637. cJSON* cjson_alarm_type = cJSON_GetObjectItem(cjson,"alarmType");
  4638. if(cjson_alarm_type!=NULL)
  4639. _logInformationRequestInfo->alarmType = cjson_alarm_type->valuestring ;
  4640. cJSON *cjson_begin_time = cJSON_GetObjectItem(cjson, "startTime");
  4641. if (cjson_begin_time != NULL)
  4642. _logInformationRequestInfo->startTime = cjson_begin_time->valuestring;
  4643. cJSON *cjson_end_time = cJSON_GetObjectItem(cjson, "endTime");
  4644. if (cjson_end_time != NULL)
  4645. _logInformationRequestInfo->endtime = cjson_end_time->valuestring;
  4646. cJSON* cjson_pagenum = cJSON_GetObjectItem(cjson,"pageNum");
  4647. if(cjson_pagenum!=NULL)
  4648. _logInformationRequestInfo->pagenum = cjson_pagenum->valueint ;
  4649. cJSON* cjson_pagesize = cJSON_GetObjectItem(cjson,"pageSize");
  4650. if(cjson_pagesize!=NULL)
  4651. _logInformationRequestInfo->pagesize = cjson_pagesize->valueint ;
  4652. cJSON* cjson_openName = cJSON_GetObjectItem(cjson,"operName");
  4653. if(cjson_openName!=NULL)
  4654. _logInformationRequestInfo->openName = cjson_openName->valuestring ;
  4655. return cjson;
  4656. }
  4657. /// @brief 通信管理
  4658. /// @param str
  4659. /// @param _communicationRequestInfo
  4660. /// @return
  4661. cJSON* json_to_communication_manage(const char* str,_CommunicationManageRequestInfo* _communicationRequestInfo)
  4662. {
  4663. cJSON* cjson = NULL;
  4664. cjson = cJSON_Parse(str);
  4665. if(cjson==NULL)
  4666. {
  4667. //log_e("Invalid JSON!");
  4668. return NULL;
  4669. }
  4670. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4671. if(cjson_token!=NULL)
  4672. _communicationRequestInfo->user_token = cjson_token->valuestring;
  4673. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4674. if(cjson_type!=NULL)
  4675. _communicationRequestInfo->type = cjson_type->valuestring ;
  4676. //网络配置上传参数
  4677. if(strcmp(_communicationRequestInfo->type,"WkIPV4Save")==0 ||
  4678. strcmp(_communicationRequestInfo->type,"WkIPV6Save")==0)
  4679. {
  4680. cJSON* cjson_net_mode = cJSON_GetObjectItem(cjson,"mode");
  4681. cJSON* cjson_net_ipaddr = cJSON_GetObjectItem(cjson,"ipaddress");
  4682. cJSON* cjson_net_mask = cJSON_GetObjectItem(cjson,"mask");
  4683. cJSON* cjson_net_gateway = cJSON_GetObjectItem(cjson,"gateway");
  4684. cJSON* cjson_net_dns1 = cJSON_GetObjectItem(cjson,"dns1");
  4685. cJSON* cjson_net_dns2 = cJSON_GetObjectItem(cjson,"dns2");
  4686. cJSON* cjson_net_mac = cJSON_GetObjectItem(cjson,"mac");
  4687. if(cjson_net_mode!=NULL)
  4688. _communicationRequestInfo->_net_info.mode = cjson_net_mode->valuestring ;
  4689. if(cjson_net_ipaddr!=NULL)
  4690. _communicationRequestInfo->_net_info.ipaddr = cjson_net_ipaddr->valuestring ;
  4691. if(cjson_net_mask!=NULL)
  4692. _communicationRequestInfo->_net_info.maskaddr = cjson_net_mask->valuestring ;
  4693. if(cjson_net_gateway!=NULL)
  4694. _communicationRequestInfo->_net_info.gateway = cjson_net_gateway->valuestring ;
  4695. if(cjson_net_dns1!=NULL)
  4696. _communicationRequestInfo->_net_info.dns1 = cjson_net_dns1->valuestring ;
  4697. if(cjson_net_dns2!=NULL)
  4698. _communicationRequestInfo->_net_info.dns2 = cjson_net_dns2->valuestring ;
  4699. }
  4700. //RS485配置
  4701. if(strcmp(_communicationRequestInfo->type,"RsSave")==0)
  4702. {
  4703. cJSON* cjson_rs_mode = cJSON_GetObjectItem(cjson,"mode");
  4704. cJSON* cjson_rs_baud = cJSON_GetObjectItem(cjson,"sensorBaud");
  4705. cJSON* cjson_rs_addr = cJSON_GetObjectItem(cjson,"ipaddress");
  4706. if(cjson_rs_mode!=NULL)
  4707. _communicationRequestInfo->_rs_info.mode = cjson_rs_mode->valuestring ;
  4708. if(cjson_rs_baud!=NULL)
  4709. _communicationRequestInfo->_rs_info.baud = cjson_rs_baud->valuestring ;
  4710. if(cjson_rs_addr!=NULL)
  4711. _communicationRequestInfo->_rs_info.addr = cjson_rs_addr->valuestring ;
  4712. }
  4713. //4G和wifi配置
  4714. if(strcmp(_communicationRequestInfo->type,"fourgPZSave")==0)
  4715. {
  4716. cJSON* cjson_4g_mode = cJSON_GetObjectItem(cjson,"czmode");
  4717. if(cjson_4g_mode!=NULL)
  4718. _communicationRequestInfo->_4g_wifi_info.Cellular_mode = atoi(cjson_4g_mode->valuestring);
  4719. for (int i = 0; i < MAIL_RECV_MAX; i++)
  4720. {
  4721. memset(_communicationRequestInfo->_4g_wifi_info.recvAccount[i] , '\0', sizeof(_communicationRequestInfo->_4g_wifi_info.recvAccount[i]));
  4722. }
  4723. cJSON* cjson_4g_ssid = cJSON_GetObjectItem(cjson,"ssid");
  4724. cJSON *cjson_recv_account = cJSON_GetObjectItem(cjson, "receiveAccountList");
  4725. if (cjson_recv_account != NULL)
  4726. {
  4727. cJSON *node = cjson_recv_account->child;
  4728. while (node)
  4729. {
  4730. cJSON *cjson_id = cJSON_GetObjectItem(node, "idx");
  4731. cJSON *cjson_acc = cJSON_GetObjectItem(node, "receiveAccount");
  4732. if (cjson_id && cjson_acc)
  4733. {
  4734. sprintf(_communicationRequestInfo->_4g_wifi_info.recvAccount[cjson_id->valueint] , "%s", cjson_acc->valuestring);
  4735. //_communicationRequestInfo->_4g_wifi_info.recvAccount[cjson_id->valueint] = cjson_acc->valuestring;
  4736. }
  4737. log_i("dev_SMS_update_recv,%d,%s\n", cjson_id->valueint, cjson_acc->valuestring);
  4738. node = node->next;
  4739. }
  4740. }
  4741. }
  4742. // 4G和wifi配置
  4743. if (strcmp(_communicationRequestInfo->type, "WIFIPZSave") == 0)
  4744. {
  4745. cJSON *cjson_wifi_mode = cJSON_GetObjectItem(cjson, "czmode");
  4746. if (cjson_wifi_mode != NULL)
  4747. _communicationRequestInfo->_4g_wifi_info.WIFI_mode = atoi(cjson_wifi_mode->valuestring);
  4748. cJSON *cjson_wifi_ssid = cJSON_GetObjectItem(cjson, "ssid");
  4749. if (cjson_wifi_ssid != NULL)
  4750. sprintf(_communicationRequestInfo->_4g_wifi_info.WIFI_name, "%s", cjson_wifi_ssid->valuestring);
  4751. cJSON *cjson_wifi_password = cJSON_GetObjectItem(cjson, "password");
  4752. if (cjson_wifi_password != NULL)
  4753. sprintf(_communicationRequestInfo->_4g_wifi_info.WIFI_code, "%s", cjson_wifi_password->valuestring);
  4754. }
  4755. return cjson;
  4756. }
  4757. /// @brief JSON服务参数获取
  4758. /// @param str
  4759. /// @param _serviceManageRequestInfo
  4760. /// @return
  4761. cJSON* json_to_service_manage(const char* str,_ServiceManageRequestInfo* _serviceManageRequestInfo)
  4762. {
  4763. cJSON* cjson = NULL;
  4764. cjson = cJSON_Parse(str);
  4765. if(cjson==NULL)
  4766. {
  4767. //log_e("Invalid JSON!");
  4768. return NULL;
  4769. }
  4770. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4771. if(cjson_token!=NULL)
  4772. _serviceManageRequestInfo->user_token = cjson_token->valuestring;
  4773. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4774. if(cjson_type!=NULL)
  4775. _serviceManageRequestInfo->type = cjson_type->valuestring ;
  4776. ///SMTP上传参数
  4777. if(strcmp(_serviceManageRequestInfo->type,"SmtpSave")==0)
  4778. {
  4779. _MAIL_ServerRequestInfo *info=&_serviceManageRequestInfo->_smtp_info;
  4780. cJSON* cjson_mode = cJSON_GetObjectItem(cjson,"mode");
  4781. cJSON* cjson_account = cJSON_GetObjectItem(cjson,"zh");
  4782. cJSON* cjson_passwd = cJSON_GetObjectItem(cjson,"mm");
  4783. cJSON* cjson_server = cJSON_GetObjectItem(cjson,"server");
  4784. cJSON* cjson_port = cJSON_GetObjectItem(cjson,"port");
  4785. cJSON* cjson_auth = cJSON_GetObjectItem(cjson,"rzfs");
  4786. cJSON* cjson_recv_account = cJSON_GetObjectItem(cjson,"receiveAccountList");
  4787. if(cjson_mode!=NULL)
  4788. info->mode = cjson_mode->valuestring ;
  4789. if(cjson_account!=NULL)
  4790. info->account = cjson_account->valuestring ;
  4791. if(cjson_passwd!=NULL)
  4792. info->password = cjson_passwd->valuestring ;
  4793. if(cjson_server!=NULL)
  4794. info->server = cjson_server->valuestring ;
  4795. if(cjson_port!=NULL)
  4796. info->port = cjson_port->valuestring ;
  4797. if(cjson_auth!=NULL)
  4798. info->auth = cjson_auth->valuestring ;
  4799. if(cjson_recv_account!=NULL) {
  4800. cJSON *node=cjson_recv_account->child;
  4801. while(node) {
  4802. cJSON *cjson_id=cJSON_GetObjectItem(node, "idx");
  4803. cJSON *cjson_acc=cJSON_GetObjectItem(node, "receiveAccount");
  4804. if (cjson_id && cjson_acc){
  4805. info->recvAccount[cjson_id->valueint] = cjson_acc->valuestring;
  4806. }
  4807. node = node->next;
  4808. }
  4809. }
  4810. }
  4811. else if(strcmp(_serviceManageRequestInfo->type,"mqttSave")==0)
  4812. {
  4813. cJSON *tmp;
  4814. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4815. tmp = cJSON_GetObjectItem(cjson, "idx");
  4816. if(tmp) {
  4817. info->idx = atoi(tmp->valuestring);
  4818. }
  4819. tmp = cJSON_GetObjectItem(cjson, "serverName");
  4820. if(tmp) {
  4821. info->name = tmp->valuestring;
  4822. }
  4823. tmp = cJSON_GetObjectItem(cjson, "ip");
  4824. if(tmp) {
  4825. info->server = tmp->valuestring;
  4826. }
  4827. tmp = cJSON_GetObjectItem(cjson, "port");
  4828. if(tmp) {
  4829. info->port = tmp->valuestring;
  4830. }
  4831. tmp = cJSON_GetObjectItem(cjson, "kfdId");
  4832. if(tmp) {
  4833. info->cid = tmp->valuestring;
  4834. }
  4835. tmp = cJSON_GetObjectItem(cjson, "yhm");
  4836. if(tmp) {
  4837. info->user = tmp->valuestring;
  4838. }
  4839. tmp = cJSON_GetObjectItem(cjson, "mm");
  4840. if(tmp) {
  4841. info->password = tmp->valuestring;
  4842. }
  4843. tmp = cJSON_GetObjectItem(cjson, "ljzt");
  4844. if(tmp) {
  4845. info->status = tmp->valuestring;
  4846. }
  4847. }
  4848. else if(strcmp(_serviceManageRequestInfo->type,"mqttOpen")==0)
  4849. {
  4850. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4851. cJSON *tmp=cJSON_GetObjectItem(cjson, "idx");
  4852. if(tmp) {
  4853. info->idx = atoi(tmp->valuestring);
  4854. }
  4855. info->mode = 1;
  4856. }
  4857. else if(strcmp(_serviceManageRequestInfo->type,"mqttClose")==0)
  4858. {
  4859. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4860. cJSON *tmp=cJSON_GetObjectItem(cjson, "idx");
  4861. if(tmp) {
  4862. info->idx = atoi(tmp->valuestring);
  4863. }
  4864. info->mode = 0;
  4865. }
  4866. else if(strcmp(_serviceManageRequestInfo->type,"mqttZtSave")==0)
  4867. {
  4868. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4869. cJSON *tmp=cJSON_GetObjectItem(cjson, "mode");
  4870. if(tmp) {
  4871. //info->mode = atoi(tmp->valuestring);
  4872. }
  4873. }
  4874. //SNMP上传参数
  4875. else if(strcmp(_serviceManageRequestInfo->type,"SnmpSave")==0)
  4876. {
  4877. cJSON* tmp=NULL;
  4878. tmp = cJSON_GetObjectItem(cjson,"mode");
  4879. if(tmp!=NULL)
  4880. _serviceManageRequestInfo->_snmp_info.mode = tmp->valuestring ;
  4881. tmp = cJSON_GetObjectItem(cjson,"snmpVersion");
  4882. if(tmp!=NULL)
  4883. _serviceManageRequestInfo->_snmp_info.version = tmp->valuestring ;
  4884. tmp = cJSON_GetObjectItem(cjson,"public");
  4885. if(tmp!=NULL)
  4886. _serviceManageRequestInfo->_snmp_info.public = tmp->valuestring ;
  4887. tmp = cJSON_GetObjectItem(cjson,"trapMode");
  4888. if(tmp!=NULL)
  4889. _serviceManageRequestInfo->_snmp_info.trapmode = tmp->valuestring ;
  4890. tmp = cJSON_GetObjectItem(cjson,"yhm");
  4891. if(tmp!=NULL)
  4892. _serviceManageRequestInfo->_snmp_info.user = tmp->valuestring;
  4893. tmp = cJSON_GetObjectItem(cjson,"rzxy");
  4894. if(tmp!=NULL)
  4895. _serviceManageRequestInfo->_snmp_info.auth_alg = tmp->valuestring;
  4896. tmp = cJSON_GetObjectItem(cjson,"rzmm");
  4897. if(tmp!=NULL)
  4898. _serviceManageRequestInfo->_snmp_info.auth_passwd = tmp->valuestring;
  4899. tmp = cJSON_GetObjectItem(cjson,"jmxy");
  4900. if(tmp!=NULL)
  4901. _serviceManageRequestInfo->_snmp_info.priv_alg = tmp->valuestring;
  4902. tmp = cJSON_GetObjectItem(cjson,"jmmm");
  4903. if(tmp!=NULL)
  4904. _serviceManageRequestInfo->_snmp_info.priv_passwd = tmp->valuestring;
  4905. tmp = cJSON_GetObjectItem(cjson,"nmsId");
  4906. if(tmp!=NULL)
  4907. _serviceManageRequestInfo->_snmp_info.nms_IP = tmp->valuestring;
  4908. }
  4909. //SNMP TRAP参数
  4910. else if(strcmp(_serviceManageRequestInfo->type,"StSave")==0)
  4911. {
  4912. cJSON* cjson_snmp_trap_mode = cJSON_GetObjectItem(cjson,"mode");
  4913. cJSON* cjson_snmp_trap_stType = cJSON_GetObjectItem(cjson,"stType");
  4914. if(cjson_snmp_trap_mode!=NULL)
  4915. _serviceManageRequestInfo->_snmp_trap_info.mode = cjson_snmp_trap_mode->valuestring ;
  4916. if(cjson_snmp_trap_mode!=NULL)
  4917. _serviceManageRequestInfo->_snmp_trap_info.stType = cjson_snmp_trap_mode->valuestring ;
  4918. }
  4919. //NTP参数
  4920. else if(strcmp(_serviceManageRequestInfo->type,"NtpSave")==0)
  4921. {
  4922. cJSON* cjson_ntp_mode = cJSON_GetObjectItem(cjson,"mode");
  4923. cJSON* cjson_ntp_name = cJSON_GetObjectItem(cjson,"ntpName");
  4924. cJSON* cjson_ntp_address = cJSON_GetObjectItem(cjson,"ntpadress");
  4925. cJSON* cjson_ntp_port = cJSON_GetObjectItem(cjson,"port");
  4926. cJSON* cjson_ntp_datetime = cJSON_GetObjectItem(cjson,"time");
  4927. cJSON* cjson_ntp_timezone = cJSON_GetObjectItem(cjson,"sq");
  4928. cJSON* cjson_ntp_weekday = cJSON_GetObjectItem(cjson,"week");
  4929. if(cjson_ntp_mode!=NULL)
  4930. {
  4931. if (cjson_ntp_mode->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.mode = cjson_ntp_mode->valuestring;
  4932. if (cjson_ntp_mode->type == cJSON_Number)
  4933. {
  4934. _serviceManageRequestInfo->_ntp_info.mode = malloc(10);
  4935. sprintf(_serviceManageRequestInfo->_ntp_info.mode, "%d", cjson_ntp_mode->valueint);
  4936. }
  4937. }
  4938. if(cjson_ntp_name!=NULL)
  4939. _serviceManageRequestInfo->_ntp_info.ntpName = cjson_ntp_name->valuestring ;
  4940. if(cjson_ntp_address!=NULL)
  4941. _serviceManageRequestInfo->_ntp_info.ntpaddress = cjson_ntp_address->valuestring ;
  4942. if(cjson_ntp_port!=NULL)
  4943. {
  4944. if (cjson_ntp_mode->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.port = cjson_ntp_port->valuestring;
  4945. if (cjson_ntp_mode->type == cJSON_Number)
  4946. {
  4947. _serviceManageRequestInfo->_ntp_info.port = malloc(10);
  4948. sprintf(_serviceManageRequestInfo->_ntp_info.port, "%d", cjson_ntp_port->valueint);
  4949. }
  4950. }
  4951. if(cjson_ntp_datetime!=NULL)
  4952. _serviceManageRequestInfo->_ntp_info.time = cjson_ntp_datetime->valuestring ;
  4953. if(cjson_ntp_timezone!=NULL)
  4954. {
  4955. if (cjson_ntp_timezone->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.tzone = cjson_ntp_timezone->valuestring;
  4956. if (cjson_ntp_timezone->type == cJSON_Number)
  4957. {
  4958. _serviceManageRequestInfo->_ntp_info.tzone = malloc(10);
  4959. sprintf(_serviceManageRequestInfo->_ntp_info.tzone, "%d", cjson_ntp_timezone->valueint);
  4960. }
  4961. }
  4962. if(cjson_ntp_weekday!=NULL)
  4963. {
  4964. if (cjson_ntp_weekday->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.weekday = cjson_ntp_weekday->valuestring;
  4965. if (cjson_ntp_weekday->type == cJSON_Number)
  4966. {
  4967. _serviceManageRequestInfo->_ntp_info.weekday = malloc(10);
  4968. sprintf(_serviceManageRequestInfo->_ntp_info.weekday, "%d", cjson_ntp_weekday->valueint);
  4969. }
  4970. }
  4971. }
  4972. //定时
  4973. else if(strcmp(_serviceManageRequestInfo->type,"listDsQuery")==0)
  4974. {
  4975. cJSON* cjson_ds_ch_name = cJSON_GetObjectItem(cjson,"productChName");
  4976. cJSON* cjson_ds_ch_id = cJSON_GetObjectItem(cjson,"productChId");
  4977. cJSON* cjson_ds_ch_date = cJSON_GetObjectItem(cjson,"setDate");
  4978. if (cjson_ds_ch_name != NULL)
  4979. {
  4980. _serviceManageRequestInfo->_ds_info.productChName = cjson_ds_ch_name->valuestring;
  4981. }
  4982. if (cjson_ds_ch_id != NULL)
  4983. {
  4984. _serviceManageRequestInfo->_ds_info.productChId = cjson_ds_ch_id->valuestring;
  4985. }
  4986. if (cjson_ds_ch_date != NULL)
  4987. {
  4988. _serviceManageRequestInfo->_ds_info.channelDate = cjson_ds_ch_date->valuestring;
  4989. }else{
  4990. _serviceManageRequestInfo->_ds_info.channelDate =NULL;
  4991. }
  4992. }
  4993. else if(strcmp(_serviceManageRequestInfo->type,"listSxQuery")==0)
  4994. {
  4995. cJSON* cjson_sx_product_id = cJSON_GetObjectItem(cjson,"productId");
  4996. if(cjson_sx_product_id != NULL)
  4997. {
  4998. if (cjson_sx_product_id->type == cJSON_String) _serviceManageRequestInfo->_posix_info.productId = cjson_sx_product_id->valuestring;
  4999. if (cjson_sx_product_id->type == cJSON_Number)
  5000. {
  5001. _serviceManageRequestInfo->_posix_info.productId = malloc(10);
  5002. sprintf(_serviceManageRequestInfo->_posix_info.productId, "%d", cjson_sx_product_id->valueint);
  5003. }
  5004. }
  5005. }
  5006. else if(strcmp(_serviceManageRequestInfo->type,"dsSave")==0)
  5007. {
  5008. cJSON* cjson_ds_ch_name = cJSON_GetObjectItem(cjson,"productChName");
  5009. cJSON* cjson_ds_ch_id = cJSON_GetObjectItem(cjson,"productChId");
  5010. cJSON* cjson_ds_dateS = cJSON_GetObjectItem(cjson,"startDate");
  5011. cJSON* cjson_ds_dateE = cJSON_GetObjectItem(cjson,"endDate");
  5012. cJSON* cjson_ds_time = cJSON_GetObjectItem(cjson,"channelTime");
  5013. cJSON* cjson_ds_sts = cJSON_GetObjectItem(cjson,"setStatus");
  5014. if(cjson_ds_ch_name!=NULL)
  5015. _serviceManageRequestInfo->_ds_info.productChName = cjson_ds_ch_name->valuestring ;
  5016. if(cjson_ds_ch_id!=NULL)
  5017. {
  5018. memset(_serviceManageRequestInfo->_ds_info.productChIds,-1,sizeof(_serviceManageRequestInfo->_ds_info.productChIds));
  5019. int nIndex =0;
  5020. for (cJSON* cjson_ds_ch_id_child = cjson_ds_ch_id->child; cjson_ds_ch_id_child != NULL; cjson_ds_ch_id_child = cjson_ds_ch_id_child->next,nIndex++)
  5021. {
  5022. _serviceManageRequestInfo->_ds_info.productChIds[nIndex]=atoi(cjson_ds_ch_id_child->valuestring);
  5023. }
  5024. }
  5025. if (cjson_ds_dateS != NULL)
  5026. _serviceManageRequestInfo->_ds_info.StartDate = cjson_ds_dateS->valuestring;
  5027. if (cjson_ds_dateE != NULL)
  5028. _serviceManageRequestInfo->_ds_info.Enddate = cjson_ds_dateE->valuestring;
  5029. if (cjson_ds_time != NULL)
  5030. _serviceManageRequestInfo->_ds_info.channelTime = cjson_ds_time->valuestring;
  5031. if (cjson_ds_sts != NULL)
  5032. _serviceManageRequestInfo->_ds_info.setStatus = cjson_ds_sts->valuestring ;
  5033. }
  5034. else if(strcmp(_serviceManageRequestInfo->type,"deleteDs")==0)
  5035. {
  5036. cJSON *cjson_ds_ch_id = cJSON_GetObjectItem(cjson, "idx");
  5037. if (cjson_ds_ch_id != NULL)
  5038. {
  5039. memset(_serviceManageRequestInfo->_ds_info.idx, '\0', sizeof(_serviceManageRequestInfo->_ds_info.idx));
  5040. int nIndex = 0;
  5041. for (cJSON *cjson_ds_ch_id_child = cjson_ds_ch_id->child; cjson_ds_ch_id_child != NULL&&nIndex<64; cjson_ds_ch_id_child = cjson_ds_ch_id_child->next, nIndex++)
  5042. {
  5043. _serviceManageRequestInfo->_ds_info.idx[nIndex] = cjson_ds_ch_id_child->valuestring;
  5044. }
  5045. }
  5046. }
  5047. else if(strcmp(_serviceManageRequestInfo->type,"sXTimeSave")==0)
  5048. {
  5049. cJSON* cjson_sx_ch_name = cJSON_GetObjectItem(cjson,"productChName");
  5050. cJSON* cjson_sx_ch_id = cJSON_GetObjectItem(cjson,"productChId");
  5051. cJSON* cjson_sx_product_id = cJSON_GetObjectItem(cjson,"productId");
  5052. cJSON* cjson_sx_start_delay = cJSON_GetObjectItem(cjson,"firingInterval");
  5053. cJSON* cjson_sx_stop_delay = cJSON_GetObjectItem(cjson,"closeInterval");
  5054. if(cjson_sx_ch_name!=NULL)
  5055. _serviceManageRequestInfo->_posix_info.productChName = cjson_sx_ch_name->valuestring ;
  5056. if(cjson_sx_ch_id != NULL)
  5057. {
  5058. if (cjson_sx_ch_id->type == cJSON_String) _serviceManageRequestInfo->_posix_info.productChId = cjson_sx_ch_id->valuestring;
  5059. if (cjson_sx_ch_id->type == cJSON_Number)
  5060. {
  5061. _serviceManageRequestInfo->_posix_info.productChId = malloc(10);
  5062. sprintf(_serviceManageRequestInfo->_posix_info.productChId, "%s", cjson_sx_ch_id->valuestring);
  5063. }
  5064. }
  5065. if(cjson_sx_product_id != NULL)
  5066. {
  5067. if (cjson_sx_product_id->type == cJSON_String) _serviceManageRequestInfo->_posix_info.productId = cjson_sx_product_id->valuestring;
  5068. if (cjson_sx_product_id->type == cJSON_Number)
  5069. {
  5070. _serviceManageRequestInfo->_posix_info.productId = malloc(10);
  5071. sprintf(_serviceManageRequestInfo->_posix_info.productId, "%d", cjson_sx_product_id->valueint);
  5072. }
  5073. }
  5074. if(cjson_sx_start_delay!=NULL)
  5075. {
  5076. if (cjson_sx_start_delay->type == cJSON_String) _serviceManageRequestInfo->_posix_info.firingInterval = cjson_sx_start_delay->valuestring;
  5077. if (cjson_sx_start_delay->type == cJSON_Number)
  5078. {
  5079. _serviceManageRequestInfo->_posix_info.firingInterval = malloc(10);
  5080. sprintf(_serviceManageRequestInfo->_posix_info.firingInterval, "%d", cjson_sx_start_delay->valueint);
  5081. }
  5082. int value = atoi(_serviceManageRequestInfo->_posix_info.firingInterval);
  5083. value *= 1000;
  5084. sprintf(_serviceManageRequestInfo->_posix_info.firingInterval, "%d", value);
  5085. }
  5086. if(cjson_sx_stop_delay!=NULL)
  5087. {
  5088. if (cjson_sx_stop_delay->type == cJSON_String) _serviceManageRequestInfo->_posix_info.closeInterval = cjson_sx_stop_delay->valuestring;
  5089. if (cjson_sx_stop_delay->type == cJSON_Number)
  5090. {
  5091. _serviceManageRequestInfo->_posix_info.closeInterval = malloc(10);
  5092. sprintf(_serviceManageRequestInfo->_posix_info.closeInterval, "%d", cjson_sx_stop_delay->valueint);
  5093. }
  5094. int value = atoi(_serviceManageRequestInfo->_posix_info.closeInterval);
  5095. value *= 1000;
  5096. sprintf(_serviceManageRequestInfo->_posix_info.closeInterval, "%d", value);
  5097. }
  5098. }
  5099. //分组管理
  5100. else if(strcmp(_serviceManageRequestInfo->type,"fzSave")==0)
  5101. {
  5102. cJSON* cjson_Group_mode = cJSON_GetObjectItem(cjson,"mode");
  5103. //cJSON* cjson_Group_modeid = cJSON_GetObjectItem(cjson_Group_mode,"id");
  5104. cJSON* cjson_Group_xlnumber = cJSON_GetObjectItem(cjson,"xlnumber");
  5105. cJSON* cjson_Group_jgnumber = cJSON_GetObjectItem(cjson,"jgnumber");
  5106. // if (cjson_Group_modeid->type == cJSON_String) _serviceManageRequestInfo->_group_info.mode = atoi(cjson_Group_modeid->valuestring);
  5107. // if (cjson_Group_modeid->type == cJSON_Number) _serviceManageRequestInfo->_group_info.mode = cjson_Group_modeid->valueint;
  5108. if(cjson_Group_mode!=NULL)
  5109. _serviceManageRequestInfo->_group_info.mode = cjson_Group_mode->valuestring;
  5110. if(cjson_Group_xlnumber!=NULL)
  5111. _serviceManageRequestInfo->_group_info.xlnumber = cjson_Group_xlnumber->valuestring;
  5112. if(cjson_Group_jgnumber!=NULL)
  5113. _serviceManageRequestInfo->_group_info.jgnumber = cjson_Group_jgnumber->valuestring;
  5114. }
  5115. else if (strcmp(_serviceManageRequestInfo->type, "fzOpen") == 0)
  5116. {
  5117. cJSON *cjson_Group_fzh = cJSON_GetObjectItem(cjson, "fzh");
  5118. if (cjson_Group_fzh != NULL)
  5119. {
  5120. _serviceManageRequestInfo->_group_info.opergroupid = cjson_Group_fzh->valuestring;
  5121. }
  5122. }
  5123. else if (strcmp(_serviceManageRequestInfo->type, "fzClose") == 0)
  5124. {
  5125. cJSON *cjson_Group_fzh = cJSON_GetObjectItem(cjson, "fzh");
  5126. if (cjson_Group_fzh != NULL)
  5127. {
  5128. _serviceManageRequestInfo->_group_info.opergroupid = cjson_Group_fzh->valuestring;
  5129. }
  5130. }
  5131. else if (strcmp(_serviceManageRequestInfo->type, "updateFz") == 0)
  5132. {
  5133. cJSON *cjson_Group_fzh = cJSON_GetObjectItem(cjson, "fzh");
  5134. if (cjson_Group_fzh != NULL)
  5135. {
  5136. _serviceManageRequestInfo->_group_info.opergroupid = cjson_Group_fzh->valuestring;
  5137. }
  5138. cJSON *cjson_Group_fzmc = cJSON_GetObjectItem(cjson, "fzmc");
  5139. if (cjson_Group_fzmc != NULL)
  5140. {
  5141. _serviceManageRequestInfo->_group_info.updategroupName = cjson_Group_fzmc->valuestring;
  5142. }
  5143. }
  5144. else if (strcmp(_serviceManageRequestInfo->type, "gysbSave") == 0)
  5145. {
  5146. cJSON *cjson_productName = cJSON_GetObjectItem(cjson, "productName");
  5147. if (cjson_productName != NULL)
  5148. {
  5149. _serviceManageRequestInfo->productName = cjson_productName->valuestring;
  5150. }
  5151. }
  5152. return cjson;
  5153. }
  5154. /// @brief 用户角色管理
  5155. /// @param str
  5156. /// @param json_to_user_manage
  5157. /// @return
  5158. cJSON* json_to_user_manage(const char* str,_UserRoleManageInfo* _UserRoleManageRequestInfo)
  5159. {
  5160. cJSON* cjson = NULL;
  5161. cjson = cJSON_Parse(str);
  5162. if(cjson==NULL)
  5163. {
  5164. //log_e("Invalid JSON!");
  5165. return NULL;
  5166. }
  5167. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  5168. if(cjson_token!=NULL)
  5169. _UserRoleManageRequestInfo->user_token = cjson_token->valuestring;
  5170. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  5171. if(cjson_type!=NULL)
  5172. _UserRoleManageRequestInfo->type = cjson_type->valuestring ;
  5173. //获取角色接口
  5174. if(strcmp(_UserRoleManageRequestInfo->type,"getUser")==0)
  5175. {
  5176. }
  5177. //查询用户接口
  5178. if(strcmp(_UserRoleManageRequestInfo->type,"listUserQuery")==0)
  5179. {
  5180. cJSON* cjson_user_userName = cJSON_GetObjectItem(cjson,"userName");
  5181. if(cjson_user_userName!=NULL)
  5182. _UserRoleManageRequestInfo->userName =cjson_user_userName->valuestring ;
  5183. else _UserRoleManageRequestInfo->userName =NULL ;
  5184. cJSON *cjson_pagenum = cJSON_GetObjectItem(cjson, "pageNum");
  5185. if (cjson_pagenum != NULL)
  5186. _UserRoleManageRequestInfo->pagenum = cjson_pagenum->valueint;
  5187. cJSON *cjson_pagesize = cJSON_GetObjectItem(cjson, "pageSize");
  5188. if (cjson_pagesize != NULL)
  5189. _UserRoleManageRequestInfo->pagesize = cjson_pagesize->valueint;
  5190. }
  5191. //删除用户
  5192. if(strcmp(_UserRoleManageRequestInfo->type,"deleteUser")==0)
  5193. {
  5194. cJSON* cjson_user_userIds = cJSON_GetObjectItem(cjson,"userIds");
  5195. if(cjson_user_userIds!=NULL)
  5196. _UserRoleManageRequestInfo->userIds = cjson_user_userIds->valueint ;
  5197. }
  5198. //新增及更新用户
  5199. if(strcmp(_UserRoleManageRequestInfo->type,"addUser")==0 || strcmp(_UserRoleManageRequestInfo->type,"updateUser")==0)
  5200. {
  5201. cJSON* cjson_user_userId = cJSON_GetObjectItem(cjson,"userId");
  5202. cJSON* cjson_user_userName = cJSON_GetObjectItem(cjson,"userName");
  5203. cJSON* cjson_user_nickName = cJSON_GetObjectItem(cjson,"nickName");
  5204. cJSON* cjson_user_delFlag = cJSON_GetObjectItem(cjson,"delFlag");
  5205. cJSON* cjson_user_roleId = cJSON_GetObjectItem(cjson,"roleId");
  5206. cJSON* cjson_user_roleName = cJSON_GetObjectItem(cjson,"roleName");
  5207. cJSON* cjson_user_password = cJSON_GetObjectItem(cjson,"password");
  5208. cJSON* cjson_user_createtime = cJSON_GetObjectItem(cjson,"createTime");
  5209. if (cjson_user_userId != NULL)
  5210. _UserRoleManageRequestInfo->userId = cjson_user_userId->valueint;
  5211. if (cjson_user_userName != NULL)
  5212. _UserRoleManageRequestInfo->userName = cjson_user_userName->valuestring;
  5213. if (cjson_user_nickName != NULL)
  5214. _UserRoleManageRequestInfo->nickName = cjson_user_nickName->valuestring;
  5215. if (cjson_user_delFlag != NULL)
  5216. _UserRoleManageRequestInfo->delFlag = cjson_user_delFlag->valueint;
  5217. if (cjson_user_roleId != NULL)
  5218. _UserRoleManageRequestInfo->roleId = atoi(cjson_user_roleId->valuestring);
  5219. if (cjson_user_roleName != NULL)
  5220. _UserRoleManageRequestInfo->roleName = cjson_user_roleName->valuestring;
  5221. if (cjson_user_password != NULL)
  5222. _UserRoleManageRequestInfo->password = cjson_user_password->valuestring;
  5223. if (cjson_user_createtime != NULL)
  5224. _UserRoleManageRequestInfo->createTime = cjson_user_createtime->valuestring;
  5225. }
  5226. return cjson;
  5227. }
  5228. /// @brief 返回时序设置
  5229. /// @param __PowerManage_t
  5230. /// @return
  5231. char* service_sx_ack_to_json(int product_id, GlobalPowerManger * __PowerManage_t)
  5232. {
  5233. char* str = NULL;
  5234. char datetemp[32]={0};
  5235. GlobalPowerManger* _powerSxManagerTemp = NULL;
  5236. // 创建 JSON 对象
  5237. cJSON* root = cJSON_CreateObject();
  5238. // 添加基本键值对
  5239. cJSON_AddNumberToObject(root, "code", 200);
  5240. //创建数据
  5241. cJSON* data_root_array = cJSON_CreateArray();
  5242. char temp[64]={0};
  5243. //循环添加数据
  5244. list_for_each_entry(_powerSxManagerTemp, &__PowerManage_t->list, list)
  5245. {
  5246. if (product_id == _powerSxManagerTemp->product_id && _powerSxManagerTemp->product_ch_id)
  5247. {
  5248. cJSON* data_filed = cJSON_CreateObject();
  5249. cJSON_AddStringToObject(data_filed,"productName", __globalDeviceManage._globalDevInfo.product.name);
  5250. cJSON_AddNumberToObject(data_filed,"productId", __globalDeviceManage._globalDevInfo.product.id);
  5251. cJSON_AddStringToObject(data_filed,"productChName", _powerSxManagerTemp->product_ch_name);
  5252. sprintf(temp, "%d", _powerSxManagerTemp->product_ch_id);
  5253. cJSON_AddStringToObject(data_filed, "productChId", temp);
  5254. if (_powerSxManagerTemp->_PowerSXManage)
  5255. {
  5256. cJSON_AddNumberToObject(data_filed,"firingSortno", _powerSxManagerTemp->_PowerSXManage->firingSortno);
  5257. cJSON_AddNumberToObject(data_filed,"closeSortno",_powerSxManagerTemp->_PowerSXManage->closeSortno);
  5258. }
  5259. cJSON_AddNumberToObject(data_filed,"firingInterval",_powerSxManagerTemp->product_ch_start_delay / 1000);
  5260. cJSON_AddNumberToObject(data_filed,"closeInterval",_powerSxManagerTemp->product_ch_stop_delay / 1000);
  5261. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  5262. }
  5263. }
  5264. //添加汇总
  5265. cJSON_AddItemToObject(root, "data", data_root_array);
  5266. //添加结果
  5267. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5268. //转换
  5269. str = cJSON_Print(root);
  5270. //释放资源
  5271. cJSON_Delete(root);
  5272. return str;
  5273. }
  5274. char* service_ntp_ack_to_json(NTPManager* __NTPManager_t)
  5275. {
  5276. char* str = NULL;
  5277. char datetemp[32]={0};
  5278. // 创建 JSON 对象
  5279. cJSON* root = cJSON_CreateObject();
  5280. // 添加基本键值对
  5281. cJSON_AddNumberToObject(root, "code", 200);
  5282. cJSON* data_filed = cJSON_CreateObject();
  5283. char buf[30];
  5284. memset(buf, 0, sizeof(buf));
  5285. sprintf(buf, "%d", __NTPManager_t->mode);
  5286. cJSON_AddStringToObject(data_filed,"mode", buf);
  5287. cJSON_AddStringToObject(data_filed,"ntpName", __NTPManager_t->ntpName);
  5288. cJSON_AddStringToObject(data_filed,"ntpadress", __NTPManager_t->ntpaddress);
  5289. memset(buf, 0, sizeof(buf));
  5290. sprintf(buf, "%d", __NTPManager_t->port);
  5291. cJSON_AddStringToObject(data_filed,"port", buf);
  5292. memset(buf, 0, sizeof(buf));
  5293. if (__NTPManager_t->tzone >= 0) sprintf(buf, "GMT/UTC+%d", __NTPManager_t->tzone);
  5294. else sprintf(buf, "GMT/UTC%d", __NTPManager_t->tzone);
  5295. cJSON_AddStringToObject(data_filed,"sq", buf);
  5296. cJSON_AddStringToObject(data_filed,"time", __NTPManager_t->time);
  5297. memset(buf, 0, sizeof(buf));
  5298. sprintf(buf, "%d", __NTPManager_t->weekday);
  5299. cJSON_AddStringToObject(data_filed,"week", buf);
  5300. cJSON_AddItemToObject(root, "data", data_filed);
  5301. //添加结果
  5302. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5303. //转换
  5304. str = cJSON_Print(root);
  5305. //释放资源
  5306. cJSON_Delete(root);
  5307. return str;
  5308. }
  5309. char* service_snmp_ack_to_json(SNMPManager* sm)
  5310. {
  5311. char* str=NULL;
  5312. char buf[30];
  5313. // 创建 JSON 对象
  5314. cJSON* root = cJSON_CreateObject();
  5315. // 添加基本键值对
  5316. cJSON_AddNumberToObject(root, "code", 200);
  5317. //创建数据
  5318. cJSON* data_filed = cJSON_CreateObject();
  5319. //创建数据
  5320. memset(buf, 0, sizeof(buf));
  5321. sprintf(buf, "%d", sm->mode);
  5322. cJSON_AddStringToObject(data_filed, "mode", buf);//data_mode_array);
  5323. memset(buf, 0, sizeof(buf));
  5324. if (sm->version==0)
  5325. {
  5326. sprintf(buf, "SNMP V1");
  5327. }
  5328. else if (sm->version==1)
  5329. {
  5330. sprintf(buf, "SNMP V2c");
  5331. }
  5332. else if (sm->version==2)
  5333. {
  5334. sprintf(buf, "SNMP V3");
  5335. }
  5336. else
  5337. {
  5338. sprintf(buf, "null");
  5339. }
  5340. cJSON_AddStringToObject(data_filed,"snmpVersion", buf);
  5341. cJSON_AddStringToObject(data_filed,"public", sm->public);
  5342. memset(buf, 0, sizeof(buf));
  5343. sprintf(buf, "%d", sm->trapmode);
  5344. cJSON_AddStringToObject(data_filed, "trapMode", buf);//data_trapmode_array);
  5345. crypt_t *pc=&sm->crypt;
  5346. cJSON_AddStringToObject(data_filed, "yhm", pc->user);
  5347. cJSON_AddStringToObject(data_filed, "rzxy", pc->auth.alg);
  5348. cJSON_AddStringToObject(data_filed, "rzmm", pc->auth.passwd);
  5349. cJSON_AddStringToObject(data_filed, "jmxy", pc->priv.alg);
  5350. cJSON_AddStringToObject(data_filed, "jmmm", pc->priv.passwd);
  5351. cJSON_AddStringToObject(data_filed, "nmsId", sm->nmsIP);
  5352. //添加汇总
  5353. cJSON_AddItemToObject(root, "data", data_filed);
  5354. //添加结果
  5355. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5356. //转换
  5357. str = cJSON_Print(root);
  5358. //释放资源
  5359. cJSON_Delete(root);
  5360. return str;
  5361. }
  5362. char* service_mail_ack_to_json(mail_info_t* info)
  5363. {
  5364. int idx=0;
  5365. char* str = NULL;
  5366. mail_send_t *send=&info->send;
  5367. mail_recv_t *recv=info->recv;
  5368. // 创建 JSON 对象
  5369. cJSON* root = cJSON_CreateObject();
  5370. // 添加基本键值对
  5371. cJSON_AddNumberToObject(root, "code", 200);
  5372. cJSON* data_filed = cJSON_CreateObject();
  5373. char buf[30];
  5374. memset(buf, 0, sizeof(buf));
  5375. sprintf(buf, "%d", send->mode);
  5376. cJSON_AddStringToObject(data_filed,"mode", buf);
  5377. cJSON_AddStringToObject(data_filed,"server", send->server);
  5378. cJSON_AddStringToObject(data_filed,"port", send->port);
  5379. cJSON_AddStringToObject(data_filed,"zh", send->account);
  5380. cJSON_AddStringToObject(data_filed,"mm", send->password);
  5381. cJSON_AddStringToObject(data_filed,"rzfs", send->auth);
  5382. cJSON* array=NULL;
  5383. for(int i=0; i<MAIL_RECV_MAX; i++) {
  5384. if(1) {
  5385. cJSON* tmp = cJSON_CreateObject();
  5386. if(strlen(recv[i].account)>0) {
  5387. cJSON_AddStringToObject(tmp,"receiveAccount", recv[i].account);
  5388. cJSON_AddNumberToObject(tmp,"idx", idx++);
  5389. if(array==NULL) {
  5390. array = cJSON_CreateArray();
  5391. }
  5392. if(array) {
  5393. cJSON_AddItemToArray(array, tmp);
  5394. }
  5395. }
  5396. }
  5397. }
  5398. if(array) {
  5399. cJSON_AddItemToObject(data_filed, "receiveAccountList", array);
  5400. }
  5401. //添加汇总
  5402. cJSON_AddItemToObject(root, "data", data_filed);
  5403. //添加结果
  5404. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5405. //转换
  5406. str = cJSON_Print(root);
  5407. //释放资源
  5408. cJSON_Delete(root);
  5409. return str;
  5410. }
  5411. char* service_mqtt_ack_to_json(mqtt_info_t* info,int nWSType)
  5412. {
  5413. int idx=0;
  5414. char buf[30];
  5415. char* str = NULL;
  5416. // 创建 JSON 对象
  5417. cJSON* root = cJSON_CreateObject();
  5418. cJSON* sdata_filed = cJSON_CreateObject();
  5419. if (nWSType)
  5420. {
  5421. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  5422. }
  5423. else
  5424. {
  5425. cJSON_AddNumberToObject(root, "code", 200);
  5426. }
  5427. #if 1
  5428. cJSON *array=cJSON_CreateArray();
  5429. if(array) {
  5430. for(int i=0; i<MQTT_SER_MAX; i++) {
  5431. mqtt_server_t *ser = &info->ser[i];
  5432. if (ser->id == i)
  5433. {
  5434. cJSON *tmp = cJSON_CreateObject();
  5435. if (tmp)
  5436. {
  5437. sprintf(buf, "%d", ser->id);
  5438. cJSON_AddStringToObject(tmp, "idx", buf);
  5439. sprintf(buf, "%d", ser->mode);
  5440. cJSON_AddStringToObject(tmp, "mode", buf);
  5441. cJSON_AddStringToObject(tmp, "serverName", ser->name);
  5442. cJSON_AddStringToObject(tmp, "ip", ser->server);
  5443. cJSON_AddStringToObject(tmp, "port", ser->port);
  5444. cJSON_AddStringToObject(tmp, "yhm", ser->user);
  5445. cJSON_AddStringToObject(tmp, "mm", ser->password);
  5446. cJSON_AddStringToObject(tmp, "kfdId", ser->cid);
  5447. if (strlen(ser->cert) > 0)
  5448. {
  5449. strcpy(buf, "CERT");
  5450. }
  5451. else
  5452. {
  5453. strcpy(buf, "");
  5454. }
  5455. cJSON_AddStringToObject(tmp, "zs", buf);
  5456. sprintf(buf, "%d", ser->status ? 1 : 2);
  5457. cJSON_AddStringToObject(tmp, "ljzt", buf);
  5458. cJSON_AddItemToArray(array, tmp);
  5459. }
  5460. }
  5461. }
  5462. if (nWSType)
  5463. {
  5464. // 添加汇总
  5465. cJSON_AddItemToObject(sdata_filed, "data", array);
  5466. // 添加结果
  5467. cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5468. cJSON_AddItemToObject(root, "data", sdata_filed);
  5469. // 添加内容
  5470. cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5471. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  5472. cJSON_AddBoolToObject(root, "success", true);
  5473. cJSON_AddStringToObject(root, "type", "mqttStatus");
  5474. }
  5475. else
  5476. {
  5477. cJSON_AddItemToObject(root, "data", array);
  5478. // 添加内容
  5479. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5480. }
  5481. }
  5482. #endif
  5483. str = cJSON_Print(root);
  5484. cJSON_Delete(root);
  5485. return str;
  5486. }
  5487. char* mqtt_status_to_json(int mode)
  5488. {
  5489. char* str = NULL;
  5490. char buf[20];
  5491. cJSON* root = cJSON_CreateObject();
  5492. cJSON_AddNumberToObject(root, "code", 200);
  5493. cJSON* data_filed = cJSON_CreateObject();
  5494. sprintf(buf, "%d", mode);
  5495. cJSON_AddStringToObject(data_filed, "mode", buf);
  5496. cJSON_AddItemToObject(root, "data", data_filed);
  5497. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5498. //转换
  5499. str = cJSON_Print(root);
  5500. //释放资源
  5501. cJSON_Delete(root);
  5502. return str;
  5503. }
  5504. // @brief 返回分组设置
  5505. char* service_group_ack_to_json(GroupInfo* _globalgroupInfo)
  5506. {
  5507. if (!_globalgroupInfo)
  5508. {
  5509. return NULL;
  5510. }
  5511. char* str = NULL;
  5512. char buffer[50];
  5513. GroupInfo* _GroupInfoTemp = NULL ;
  5514. // 创建 JSON 对象
  5515. cJSON* root = cJSON_CreateObject();
  5516. // 添加基本键值对
  5517. cJSON_AddNumberToObject(root, "code", 200);
  5518. //创建数据
  5519. cJSON* data_root_array = cJSON_CreateArray();
  5520. //循环添加数据
  5521. list_for_each_entry(_GroupInfoTemp, &_globalgroupInfo->list, list)
  5522. {
  5523. cJSON* data_filed = cJSON_CreateObject();
  5524. sprintf(buffer, "%d",_GroupInfoTemp->GroupID);
  5525. cJSON_AddStringToObject(data_filed,"fzh",buffer);
  5526. cJSON_AddStringToObject(data_filed,"fzmc",_GroupInfoTemp->GroupName);
  5527. cJSON_AddStringToObject(data_filed,"tdhs",_GroupInfoTemp->GroupChList);
  5528. char nGroupNameList[3300];
  5529. memset(nGroupNameList, 0, sizeof(nGroupNameList));
  5530. char *pCHlist;
  5531. pCHlist = strtok(_GroupInfoTemp->GroupChList, ",");
  5532. // 直流版本功能
  5533. while (pCHlist)
  5534. {
  5535. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  5536. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  5537. {
  5538. if (_globalPowerMangerTemp == NULL)
  5539. break;
  5540. int nChId=atoi(pCHlist) ;
  5541. if (nChId== _globalPowerMangerTemp->product_ch_id)
  5542. {
  5543. char chTemp[64];
  5544. sprintf(chTemp, "%s,", _globalPowerMangerTemp->product_ch_name);
  5545. strcat(nGroupNameList, chTemp);
  5546. break;
  5547. }
  5548. }
  5549. pCHlist = strtok(NULL, ",");
  5550. }
  5551. cJSON_AddStringToObject(data_filed,"tdmcs",nGroupNameList);
  5552. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  5553. }
  5554. //添加汇总
  5555. cJSON_AddItemToObject(root, "data", data_root_array);
  5556. //添加结果
  5557. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5558. //转换
  5559. str = cJSON_Print(root);
  5560. //释放资源
  5561. cJSON_Delete(root);
  5562. return str;
  5563. }
  5564. int GetRoleIDByUserName(char* _userName,UserInfo* __UserInfo_t)
  5565. {
  5566. int nRole = -1;
  5567. if (_userName==NULL || __UserInfo_t==NULL)
  5568. {
  5569. return nRole;
  5570. }
  5571. UserInfo *_UserInfoTemp = NULL;
  5572. list_for_each_entry(_UserInfoTemp, &__UserInfo_t->list, list)
  5573. {
  5574. if (_UserInfoTemp == NULL)
  5575. break;
  5576. if (strcmp(_UserInfoTemp->userName, _userName) == 0)
  5577. {
  5578. nRole = _UserInfoTemp->roleID;
  5579. break;
  5580. }
  5581. }
  5582. return nRole;
  5583. }
  5584. int GetRoleLevelByID(int _RoleID,RoleInfo* __RoleInfo_t)
  5585. {
  5586. int nlevel = -1;
  5587. if ( __RoleInfo_t==NULL)
  5588. {
  5589. return nlevel;
  5590. }
  5591. RoleInfo *_RoleInfoTemp = NULL;
  5592. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5593. {
  5594. if (_RoleInfoTemp == NULL)
  5595. break;
  5596. if (_RoleInfoTemp->roleID == _RoleID)
  5597. {
  5598. nlevel = _RoleInfoTemp->roleLevel;
  5599. break;
  5600. }
  5601. }
  5602. return nlevel;
  5603. }
  5604. char* GetRoleNameByID(int _RoleID,RoleInfo* __RoleInfo_t)
  5605. {
  5606. char* nname=NULL;
  5607. if (__RoleInfo_t == NULL)
  5608. {
  5609. return nname;
  5610. }
  5611. RoleInfo *_RoleInfoTemp = NULL;
  5612. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5613. {
  5614. if (_RoleInfoTemp == NULL)
  5615. break;
  5616. if (_RoleInfoTemp->roleID == _RoleID)
  5617. {
  5618. // nname = _RoleInfoTemp->roleName;
  5619. nname = malloc(128);
  5620. if (nname != NULL)
  5621. {
  5622. if (_RoleID == 1)
  5623. {
  5624. strcpy(nname, language_Role_Super_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5625. }
  5626. else if (_RoleID == 2)
  5627. {
  5628. strcpy(nname, language_Role_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5629. }
  5630. else if (_RoleID == 3)
  5631. {
  5632. strcpy(nname, language_Role_User[__globalDeviceManage._globalDevInfo.product.language]);
  5633. }
  5634. }
  5635. break;
  5636. }
  5637. }
  5638. return nname;
  5639. }
  5640. int GetRoleIDByName(char* _RoleName,RoleInfo* __RoleInfo_t)
  5641. {
  5642. int nID = -1;
  5643. if ( __RoleInfo_t==NULL)
  5644. {
  5645. return nID;
  5646. }
  5647. RoleInfo *_RoleInfoTemp = NULL;
  5648. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5649. {
  5650. if (_RoleInfoTemp == NULL)
  5651. break;
  5652. if (strcmp(_RoleInfoTemp->roleName, _RoleName) == 0)
  5653. {
  5654. nID = _RoleInfoTemp->roleID;
  5655. break;
  5656. }
  5657. }
  5658. return nID;
  5659. }
  5660. char* service_userQuery_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleInfo* __RoleInfo_t,char* _SelName,int pagenum,int pagesize)
  5661. {
  5662. char* str = NULL;
  5663. int nRoleID = GetRoleIDByUserName(_userName,__UserInfo_t);
  5664. int nlevel = GetRoleLevelByID(nRoleID,__RoleInfo_t);
  5665. //根据登录的账号筛选查询的范围
  5666. UserInfo SelUser_list;
  5667. INIT_LIST_HEAD(&SelUser_list.list);
  5668. UserInfo *_UserInfoTemp = NULL;
  5669. list_for_each_entry(_UserInfoTemp, &__UserInfo_t->list, list)
  5670. {
  5671. if (_UserInfoTemp == NULL)
  5672. break;
  5673. int nRoleTemp = GetRoleIDByUserName(_UserInfoTemp->userName,__UserInfo_t);
  5674. int nlevelTemp = GetRoleLevelByID(nRoleTemp,__RoleInfo_t);
  5675. if (nlevelTemp>=nlevel)
  5676. {
  5677. if (_SelName && strcmp(_SelName, "") != 0)
  5678. {
  5679. if (strstr(_UserInfoTemp->userName, _SelName) !=NULL)
  5680. {
  5681. UserInfo *new_user = (UserInfo *)malloc(sizeof(UserInfo));
  5682. memcpy(new_user, _UserInfoTemp, sizeof(UserInfo));
  5683. list_add_tail(&new_user->list, &SelUser_list.list);
  5684. }
  5685. }
  5686. else
  5687. {
  5688. UserInfo *new_user = (UserInfo *)malloc(sizeof(UserInfo));
  5689. memcpy(new_user, _UserInfoTemp, sizeof(UserInfo));
  5690. list_add_tail(&new_user->list, &SelUser_list.list);
  5691. }
  5692. }
  5693. }
  5694. int nTotalUserNum=0;
  5695. int nSelUserNum = 0;
  5696. // 创建 JSON 对象
  5697. cJSON* root = cJSON_CreateObject();
  5698. //创建数据
  5699. char buffer[50];
  5700. cJSON* data_root_array = cJSON_CreateArray();
  5701. UserInfo *_UserInfoTemp1 = NULL;
  5702. list_for_each_entry(_UserInfoTemp1, &SelUser_list.list, list)
  5703. {
  5704. if (_UserInfoTemp1 == NULL)
  5705. break;
  5706. if (nTotalUserNum>=(pagenum-1)*pagesize && nTotalUserNum< pagenum*pagesize)
  5707. {
  5708. // 创建数据
  5709. cJSON *data_filed = cJSON_CreateObject();
  5710. cJSON_AddStringToObject(data_filed, "createTime", _UserInfoTemp1->createTime);
  5711. cJSON_AddNumberToObject(data_filed, "userId", _UserInfoTemp1->userID);
  5712. cJSON_AddStringToObject(data_filed, "userName", _UserInfoTemp1->userName);
  5713. cJSON_AddStringToObject(data_filed, "nickName", _UserInfoTemp1->nickName);
  5714. cJSON_AddStringToObject(data_filed, "delFlag", "1");
  5715. memset(buffer, 0, sizeof(buffer));
  5716. sprintf(buffer, "%d", _UserInfoTemp1->roleID);
  5717. cJSON_AddStringToObject(data_filed, "roleId", buffer);
  5718. char *nroleName = GetRoleNameByID(_UserInfoTemp1->roleID, __RoleInfo_t);
  5719. if (nroleName != NULL)
  5720. {
  5721. cJSON_AddStringToObject(data_filed, "roleName", nroleName);
  5722. free(nroleName);
  5723. }
  5724. else
  5725. cJSON_AddStringToObject(data_filed, "roleName", "");
  5726. cJSON_AddItemToObject(data_root_array, "rows", data_filed);
  5727. nSelUserNum++;
  5728. }
  5729. nTotalUserNum++;
  5730. }
  5731. cJSON_AddNumberToObject(root,"total", nTotalUserNum);
  5732. //添加汇总
  5733. cJSON_AddItemToObject(root, "rows", data_root_array);
  5734. // 添加基本键值对
  5735. cJSON_AddNumberToObject(root, "code", 200);
  5736. //添加结果
  5737. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5738. //转换
  5739. str = cJSON_Print(root);
  5740. //释放资源
  5741. cJSON_Delete(root);
  5742. return str;
  5743. }
  5744. char* service_userRole_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleInfo* __RoleInfo_t)
  5745. {
  5746. char* str = NULL;
  5747. int nRoleID = GetRoleIDByUserName(_userName,__UserInfo_t);
  5748. int nlevel = GetRoleLevelByID(nRoleID,__RoleInfo_t);
  5749. //根据登录的账号筛选查询的范围
  5750. RoleInfo SelRole_list;
  5751. INIT_LIST_HEAD(&SelRole_list.list);
  5752. RoleInfo *_RoleInfoTemp = NULL;
  5753. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5754. {
  5755. if (_RoleInfoTemp == NULL)
  5756. break;
  5757. if (_RoleInfoTemp->roleLevel >= nlevel)
  5758. {
  5759. RoleInfo *new_Role = (RoleInfo *)malloc(sizeof(RoleInfo));
  5760. memcpy(new_Role,_RoleInfoTemp,sizeof(RoleInfo));
  5761. list_add_tail(&new_Role->list, &SelRole_list.list);
  5762. }
  5763. }
  5764. // 创建 JSON 对象
  5765. cJSON* root = cJSON_CreateObject();
  5766. char buffer[50];
  5767. //创建数据
  5768. cJSON* data_root_array = cJSON_CreateArray();
  5769. RoleInfo *_RoleInfoTemp1 = NULL;
  5770. list_for_each_entry(_RoleInfoTemp1, &SelRole_list.list, list)
  5771. {
  5772. if (_RoleInfoTemp1 == NULL)
  5773. break;
  5774. //创建数据
  5775. cJSON* data_filed = cJSON_CreateObject();
  5776. cJSON_AddStringToObject(data_filed,"createTime",_RoleInfoTemp1->createTime);
  5777. cJSON_AddStringToObject(data_filed, "status", "1");
  5778. memset(buffer, 0, sizeof(buffer));
  5779. sprintf(buffer, "%d",_RoleInfoTemp1->roleID);
  5780. cJSON_AddStringToObject(data_filed, "roleId", buffer);
  5781. if (_RoleInfoTemp1->roleID==1)
  5782. {
  5783. cJSON_AddStringToObject(data_filed,"roleName",language_Role_Super_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5784. }
  5785. else if (_RoleInfoTemp1->roleID==2)
  5786. {
  5787. cJSON_AddStringToObject(data_filed,"roleName",language_Role_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5788. }
  5789. else
  5790. {
  5791. cJSON_AddStringToObject(data_filed,"roleName",language_Role_User[__globalDeviceManage._globalDevInfo.product.language]);
  5792. }
  5793. //cJSON_AddStringToObject(data_filed,"roleName",_RoleInfoTemp1->roleName);
  5794. cJSON_AddItemToObject(data_root_array, "roles", data_filed);
  5795. }
  5796. //添加汇总
  5797. cJSON_AddItemToObject(root, "roles", data_root_array);
  5798. // 添加基本键值对
  5799. cJSON_AddNumberToObject(root, "code", 200);
  5800. //添加结果
  5801. cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
  5802. //转换
  5803. str = cJSON_Print(root);
  5804. //释放资源
  5805. cJSON_Delete(root);
  5806. return str;
  5807. }