[{"server":null,"owner":null,"id":"b745961d-cd53-4cf1-b266-a83aa8bf4cda","params":{"result":{"value":null,"datetime":1592376912,"status":null,"version":0},"hash":{"value":"NC0mfDxVQoJZlCIkSoavjA==","datetime":1592382343,"status":null,"version":0},"enabled":{"value":false,"datetime":1592467788,"status":null,"version":0},"error_text":{"value":null,"datetime":1592382343,"status":null,"version":0},"type":{"value":"EgsScenario","datetime":1592474251,"status":null,"version":0},"settings":{"value":"{\r\n  \"start\": \"2020-06-18T10:10:00\",\r\n  \"stop\": \"2020-06-18T10:15:00\",\r\n  \"types\": {\r\n    \"Onvif_AccessControl\": {\r\n      \"state\": [\r\n        \"alarm_alarm\",\r\n        \"error_defective\"\r\n      ],\r\n      \"name\": [\r\n        \"имярек 1\",\r\n        \"имярек 2\"\r\n      ],\r\n      \"comment\": [\r\n        \"комментарий 1\",\r\n        \"комментарий 2\"\r\n      ],\r\n      \"place\": [\r\n        \"комната 1\",\r\n        \"комната 2\"\r\n      ]\r\n    },\r\n    \"Onvif_SteamDetector\": {\r\n      \"state\": [\r\n        \"alarm_alarm\"\r\n      ],\r\n      \"account\": [\r\n        \"учетная запись 1\",\r\n        \"учетная запись 2\"\r\n      ],\r\n      \"mesures\": [\r\n        \"50\",\r\n        \"100\"\r\n      ],\r\n      \"picture\": [\r\n        \"изображение 1\",\r\n        \"изображение 2\"\r\n      ]\r\n    },\r\n    \"Onvif_RadiationMonitoring\": {\r\n      \"state\": [\r\n        \"alarm_alarm\"\r\n      ],\r\n      \"category\": [\r\n        \"категория 1\",\r\n        \"категория 2\"\r\n      ],\r\n      \"account\": [\r\n        \"учетная запись 1\",\r\n        \"учетная запись 2\"\r\n      ],\r\n      \"mesures\": [\r\n        \"50\",\r\n        \"100\"\r\n      ],\r\n      \"picture\": [\r\n        \"изображение 1\",\r\n        \"изображение 2\"\r\n      ]\r\n    },\r\n    \"Onvif_NeutronProbing\": {\r\n      \"state\": [\r\n        \"alarm_alarm\"\r\n      ],\r\n      \"place\": [\r\n        \"сектор 1\",\r\n        \"сектор 2\"\r\n      ],\r\n      \"explosiveType\": [\r\n        \"тип взрывчатки 1\",\r\n        \"тип взрывчатки 2\"\r\n      ],\r\n      \"location\": [\r\n        \"расположение 1\",\r\n        \"расположение 2\"\r\n      ],\r\n      \"comment\": [\r\n        \"комментарий 1\",\r\n        \"комментарий 2\"\r\n      ]\r\n    },\r\n    \"Onvif_MetalDetector\": {\r\n      \"state\": [\r\n        \"alarm_alarm\"\r\n      ],\r\n      \"account\": [\r\n        \"учетная запись 1\",\r\n        \"учетная запись 2\"\r\n      ],\r\n      \"picture\": [\r\n        \"изображение 1\",\r\n        \"изображение 2\"\r\n      ]\r\n    },\r\n    \"Onvif_Introscopy\": {\r\n      \"state\": [\r\n        \"alarm_alarm\"\r\n      ],\r\n      \"account\": [\r\n        \"учетная запись 1\",\r\n        \"учетная запись 2\"\r\n      ],\r\n      \"result\": [\r\n        \"результат 1\",\r\n        \"результат 2\"\r\n      ],\r\n      \"picture\": [\r\n        \"изображение 1\",\r\n        \"изображение 2\"\r\n      ]\r\n    },\r\n    \"Onvif_GasAnalysis\": {\r\n      \"state\": [\r\n        \"alarm_alarm\"\r\n      ],\r\n      \"place\": [\r\n        \"сектор 1\",\r\n        \"сектор 2\"\r\n      ],\r\n      \"concentrationLimit\": [\r\n        \"40\",\r\n        \"70\"\r\n      ],\r\n      \"gasType\": [\r\n        \"газ 1\",\r\n        \"газ 2\"\r\n      ],\r\n      \"concentration\": [\r\n        \"50\",\r\n        \"100\"\r\n      ],\r\n      \"comment\": [\r\n        \"комментарий 1\",\r\n        \"комментарий 2\"\r\n      ]\r\n    },\r\n    \"Onvif_FireAlarm\": {\r\n      \"state\": [\r\n        \"alarm_openCase\",\r\n        \"alarm_alarm\",\r\n        \"error_defective\"\r\n      ],\r\n      \"category\": [\r\n        \"категория 1\",\r\n        \"категория 2\"\r\n      ],\r\n      \"zone\": [\r\n        \"зона 1\",\r\n        \"зона 2\"\r\n      ],\r\n      \"comment\": [\r\n        \"комментарий 1\",\r\n        \"комментарий 2\"\r\n      ]\r\n    },\r\n    \"Onvif_VideoSurveillanceSystem\": {\r\n      \"state\": [\r\n        \"ok_channelDisconnect\",\r\n        \"ok_channelConnect\",\r\n        \"ok_archiveStop\",\r\n        \"ok_archiveNormal\",\r\n        \"alarm_motionInZone\",\r\n        \"ok_connect\",\r\n        \"ok_deleteRecordRequest\",\r\n        \"ok_editDbRecordRequest\",\r\n        \"ok_copyDbRecordRequest\",\r\n        \"ok_authorization\",\r\n        \"ok_ivStart\",\r\n        \"error_ivStop\"\r\n      ],\r\n      \"category\": [\r\n        \"категория 1\",\r\n        \"категория 2\"\r\n      ],\r\n      \"comment\": [\r\n        \"комментарий 1\",\r\n        \"комментарий 2\"\r\n      ],\r\n      \"priority\": [\r\n        \"1\",\r\n        \"2\"\r\n      ]\r\n    }\r\n  },\r\n  \"count\": 100,\r\n  \"interval\": 0.5\r\n}","datetime":1592475208,"status":null,"version":0},"state":{"value":"ok.normal","datetime":1592382343,"status":null,"version":0},"script":{"value":"# имя: 'Simulator'\r\n# описание: симуляция изменений\r\n# тип триггера: 'EgsScenario'\r\n# создан: 2017.10.03 14:22:07, Сельченков Н.Ю.\r\n# изменен: '2020.06.17 12.25.42', Сельченков Н.Ю.\r\n# подробности: https://redmine.integra-s.com:11000/projects/eilyacuario/wiki/Simulator\r\n\r\nuse System.Random\r\nuse System.Math\r\n\r\nuse json_schema\r\n`\r\n{\r\n    \"type\": \"object\",\r\n    \"properties\":\r\n    {\r\n        \"start\": { \"type\": \"string\", \"format\": \"DateTime\" },\r\n        \"stop\":  { \"type\": \"string\", \"format\": \"DateTime\" },\r\n        \"count\": { \"type\": \"integer\" },\r\n        \"types\":\r\n        {\r\n            \"type\": \"object\",\r\n            \"additionalProperties\": \r\n            { \r\n                \"type\": \"object\",\r\n                \"additionalProperties\": { \"type\": \"array\",  \"items\": { \"type\": \"string\" } }\r\n            }\r\n        },\r\n        \"interval\": { \"type\": \"number\", \"default\": 0.5 }\r\n    }\r\n}\r\n` as SETTINGS\r\n\r\nlet settings = SETTINGS(this.settings)\r\nlet random   = Random() \r\n\r\nlet select_item(typename as string) = from graph.Values where it is typename order by LastUpdate first\r\n\r\nlet delta = (settings.stop - settings.start).TotalSeconds / settings.count\r\n\r\nlet simulate() = \r\n    from settings.types do\r\n        let typename = Key\r\n        let params   = Value \r\n        let item     = select_item(typename)\r\n        from params do\r\n            let value = Value[random.Next(0, Value.Length)]\r\n            item[Key].Set(value, nil, settings.start)\r\n        now\r\n    now\r\n    settings.start = settings.start + TimeSpan.FromSeconds(delta)\r\n    this.enabled   = settings.start < settings.stop\r\n    void()\r\nend\r\n\r\nthis.RunOnTimer(settings.interval, simulate)\r\n","datetime":1592382342,"status":null,"version":0},"name":{"value":"Simulator","datetime":1592376912,"status":null,"version":0}},"entity":"item","operation":"create"}]