public FrameAttribute() { FrameResponse = new FrameResponse(); CompleteExpression = string.Empty; }
public FrameAttribute(FrameResponse frameResponse, string completeExpression) { FrameResponse = frameResponse; CompleteExpression = completeExpression; }
public List <FrameResponse> ReadAllTelegram(string portcom, string macadresseprt) { List <FrameResponse> myFrameList = new List <FrameResponse>(); HyScript hyScript = new HyScript(); int port = Convert.ToInt32(portcom); string comPort = "com://" + port; string response = "false"; string dataJSON = ""; string rawDataInterpretJSON = ""; string cmdClear = "if(dc~=nil) then dc:close(); cl=nil; pl=nil; dc=nil"; _logger.Info("Check Licence"); response = hyScript.call("setLogLevel(-1); setLogFileName('IzarCSI.log'); return License.check('EGEEEGEE','I1ARCQI0')"); _logger.Info("resultat Check Licence : " + response); if (response == "true") { hyScript.call(cmdClear); string cmd = "dc = DataConcentrator.new();" + " ds = BtReceiverDataSource.new();" + " ds:setDataConcentrator(ref(dc));" + " pl = IPhysicalLayer.new('" + comPort + "');" + " cl = ICommunicationLayer.new('hybtoh://', ref(pl));" + " ds:setCommunicationLayer(ref(cl));" + " local ri = RadioInterpreter.new();" + " ri:setProcessLevel();" + " dc:setRadioInterpreter(ri);" + " ri:enableDecryption(false);" + " tsf=ToStringFormater.new();" + " tsf:setAddSPDEAddress(true);" + " setFormater(tsf);" + " ds:setSourceId('" + macadresseprt + "');" + " ds:config('timeoutNoAnswer', 150);" + " ds:config('timeoutNoDataFollows', 2);" + " ds:config('timeoutAfterTelegram', 10); return true"; _logger.Info("Init: " + cmd); response = hyScript.call(cmd); _logger.Info("resultat Init : " + response); if (response == "true") { //startASync _logger.Info("ds:startASync()"); hyScript.call("ds:startASync()"); Thread.Sleep(2000); //stopASync _logger.Info("ds:stopASync()"); hyScript.call("ds:stopASync()"); string telegramProcessed = hyScript.call("return dc:getNumberOfProcessedTelegrams()"); _logger.Info("Nombre de télégrammes traités: " + telegramProcessed); string telegramCollected = hyScript.call("return dc:getNumberOfCollectedTelegrams()"); _logger.Info("Nombre de télégrammes collectés: " + telegramCollected); string falseTelegram = hyScript.call("return dc:getNumberOfFalseTelegrams()"); _logger.Info("Nombre de faux télégrammes : " + falseTelegram); string foundedDevice = hyScript.call("return dc:getNumberOfFoundedDevices()"); _logger.Info("Nombre de modules trouvés : " + foundedDevice); //device founded if (Convert.ToInt32(foundedDevice) > 0) { _logger.Info("dc:getDeviceList()"); dataJSON = hyScript.call("return dc:getDeviceList():__tostring(dc:getDeviceList():getBeginDeviceDescriptionIterator(true))"); _logger.Info("resultat getDeviceList : " + dataJSON); try { FrameResponse dataFrame; SappelResponseContract sappelResponseContract = JsonConvert.DeserializeObject <SappelResponseContract>(dataJSON); List <Entry> entries = sappelResponseContract.entries.ToList(); foreach (var entry in entries) { List <Telegram> telegrams = entry.value.meteringPoint.telegrams.ToList(); foreach (var telegram in telegrams) { dataFrame = new FrameResponse(); if (telegram.telegramTypeSpecifica.qualityIndicator.rssi > 25) { dataFrame.deviceId = telegram.mBusData.deviceId.spdeid.spde; dataFrame.manuString = telegram.mBusData.deviceId.manuString; dataFrame.ciField = telegram.mBusData.ciField; dataFrame.structure = telegram.mBusData.deviceId.spdeid.format; //Récupération des alarmes if (telegram.mBusData.alarmField.data != "00" && telegram.mBusData.alarmField.data != "00 00") { dataFrame.alarmeCode = TelegramAlarmFormat(telegram.mBusData.alarmField.data); } string rawData = TelegramFormat(telegram.mBusData.rawData.data); //On récupére la raw data rawDataInterpretJSON = Interpreter(rawData); Telegram telegramResponse = JsonConvert.DeserializeObject <Telegram>(rawDataInterpretJSON); List <MBusValue> mBusValues = telegramResponse.mBusData.mBusValues.ToList(); foreach (var mBusValue in mBusValues) { if ((mBusValue.valid == true)) { if (mBusValue.dimension.stringId == "VOLUME") { //volume if (mBusValue.storageNumber == 0 && mBusValue.tariffNumber == 0 && mBusValue.subUnitNumber == 0) { dataFrame.volumeValue = Convert.ToInt32(mBusValue.formated); dataFrame.volumeIndex = CalculIndex(Convert.ToInt32(mBusValue.formated), Convert.ToInt32(mBusValue.exponent)); dataFrame.volumeCode = mBusValue.dimension.stringId; dataFrame.volumeUnite = mBusValue.unit.stringId; dataFrame.volumeExponent = Convert.ToInt32(mBusValue.exponent); dataFrame.volumeFormat = dataFrame.volumeCode + " " + dataFrame.volumeIndex + " m3"; } } if (mBusValue.dimension.stringId == "ENERGY") { //Energy if (mBusValue.storageNumber == 0 && mBusValue.tariffNumber == 0 && mBusValue.subUnitNumber == 0) { dataFrame.energyValue = Convert.ToInt32(mBusValue.formated); dataFrame.energyIndex = CalculIndex(Convert.ToInt32(mBusValue.formated), Convert.ToInt32(mBusValue.exponent)); dataFrame.energyCode = mBusValue.dimension.stringId; dataFrame.energyUnite = mBusValue.unit.stringId; dataFrame.energyExponent = Convert.ToInt32(mBusValue.exponent); dataFrame.energyFormat = dataFrame.energyCode + " " + dataFrame.energyIndex + " " + dataFrame.energyUnite; } } if (mBusValue.dimension.stringId == "OPERATIONTIMEBATTERY") { dataFrame.batteryCode = mBusValue.dimension.stringId; dataFrame.batteryFormated = Convert.ToInt32(mBusValue.formated); dataFrame.batteryUnite = mBusValue.unit.stringId; } if (mBusValue.dimension.stringId == "TIMEPOINT") { dataFrame.date = mBusValue.formated.ToString(); } } } if (!myFrameList.Where(x => x.deviceId == dataFrame.deviceId).Any()) { if ((dataFrame.volumeCode != null || dataFrame.energyCode != null) && dataFrame.ciField != 0) { myFrameList.Add(dataFrame); } } } } } } catch (Exception ex) { _logger.Info("ERREUR : " + ex.Message); } } hyScript.call("dc:getDeviceList():clear()"); } else { dataJSON = hyScript.call("dc:clearLastException() val=dc:getValue(valueIdent) ret = {val, dc:getLastException()} return ret"); _logger.Info("Erreur Init and StartASync: " + dataJSON); } } else { dataJSON = hyScript.call("dc:clearLastException() val=dc:getValue(valueIdent) ret = {val, dc:getLastException()} return ret"); _logger.Info("Erreur check licence: " + dataJSON); } _logger.Info("ResultMyFrameList : " + myFrameList.ToString()); return(myFrameList); }