{Pascal Script} Var List: TStringList; IdHTTP: TIdHTTP; IdHandler: TIdSSLIOHandlerSocketOpenSSL; i: integer; s: string; val: Double; const max_channel = 8; var web_tags: array[1..max_channel, 1..2] of string; const ID = '5ba0b2b618e5e27962e72112'; FORMATINIT = '{"id":"%d","clientType":"%d","tagData":{"OPCTag":"%s","ItemType":"%d","HighScale":"%n","LowScale":"%n","HighAlarm":"%n","LowAlarm":"%n","ValName":"%s"}}'; HOST = 'https://cloud.simplight.ru/api/client/init/?client_id=%s×tamp=%d'; HOST_LIVE = 'https://cloud.simplight.ru/api/tag/set/?client_id=%s×tamp=%d'; FORMATLIVE = '{"id":"%d","value":"%n"}'; function DateTimeToUnix(ConvDate: TDateTime): Longint; begin Result := Round((ConvDate - 25569.0) * 86400); end; procedure OnStartScript; var FID,FTYPE: integer; HScale, LScale, HAlarm, LAlarm: Double; Units: string; begin web_tags[1, 1]:= 'DI0.мерник_1_выход'; web_tags[2, 1]:= 'DI1.мерник_2_выход'; web_tags[3, 1]:= 'DI2.охлаждение'; web_tags[4, 1]:= 'Уровень мерник поз. 1'; web_tags[5, 1]:= 'Уровень мерник поз. 2'; web_tags[6, 1]:= 'Уровен в реакторе'; web_tags[7, 1]:= 'Температура в реакторе'; web_tags[8, 1]:= 'Давление в реакторе'; IdHTTP := TIdHTTP.Create; IdHandler := TIdSSLIOHandlerSocketOpenSSL.Create (nil); IdHTTP.IOHandler := IdHandler; IdHTTP.Request.ContentType := 'application/json ; charset=utf-8'; IdHTTP.Request.Charset := 'utf-8'; IdHTTP.ReadTimeout := 10000; List := TStringList.create; try S := '['; for i := 1 to max_channel do begin if GetChannelInfo(web_tags[i, 1], FID, HScale, LScale, HAlarm, LAlarm, Units, FTYPE) then begin web_tags[i, 2] := IntToStr(FID); S := S + Format(FORMATINIT, [FID, 1, web_tags[i, 1], 1, HScale, LScale, HAlarm, LAlarm, Units]); if i < max_channel then S := S + ','; // AddToDebugLog(s); end; end; S := S + ']'; List.Add(S); // AddToDebugLog(HOST); s := IdHTTP.PostEx(Format(HOST, [ID, DateTimeToUnix(now)]), List); // AddToDebugLog(s); finally IdHTTP.free; List.free; end; end; procedure OnStopScript; begin end; begin List := TStringList.create; IdHTTP := TIdHTTP.Create; IdHandler := TIdSSLIOHandlerSocketOpenSSL.Create (nil); IdHTTP.IOHandler := IdHandler; IdHTTP.Request.ContentType := 'application/json'; IdHTTP.ReadTimeout := 10000; try S := '['; for i := 1 to max_channel do begin val := ReadValue(web_tags[i, 1]); S := S + Format(FORMATLIVE, [StrToInt(web_tags[i, 2]), val]); if i < max_channel then S := S + ','; end; S := S + ']'; List.Add(S); // AddToDebugLog(HOST_LIVE); // AddToDebugLog(List.text); s := IdHTTP.Post(Format(HOST_LIVE, [ID, DateTimeToUnix(now)]), List); // AddToDebugLog(s); finally List.free; IdHTTP.free; end; end.