public static void InitiatePingMeterRequest(List <string> meterList) { try { if (meterList != null) { if (meterList.Count > 0) { _log.Debug("Sending ping request..."); //Send meters to OD Web services to request ping action MultiSpeakMsgHeader multispeakHeader = new MultiSpeakMsgHeader(); multispeakHeader.UserID = userName; multispeakHeader.Pwd = password; MultiSpeakService multiSpeakService = new MultiSpeakService(); multiSpeakService.MultiSpeakMsgHeaderValue = multispeakHeader; errorObject[] errors = new errorObject[0]; //Send ping request errors = multiSpeakService.InitiateOutageDetectionEventRequest(meterList, System.DateTime.Now, url, "InitiateOutageDetectionEventRequest"); } } } catch (Exception e) { _log.Error("Failed to initiate a request to ping meters. The error message : " + e.Message + " OD_Server_Client::InitiatePingMeterRequest"); } }
/// <summary> /// Logs the request - quick hack to keep up with data for referencing the requests sent. /// </summary> /// <param name="meters">Meters.</param> /// <param name="header">Header.</param> private static void LogRequest(meterID[] meters, MultiSpeakMsgHeader header) { StdOut("Company : " + header.Company); StdOut("UserID : " + header.UserID); StdOut("Pwd : " + header.Pwd); StdOut("AppName : " + header.AppName); foreach (var meter in meters) { StdOut("********** Meter List **********"); StdOut("meterNo : " + meter.meterNo); StdOut("objectID : " + meter.objectID); StdOut("serviceType : " + meter.serviceType.ToString()); StdOut("serviceTypeSpecified : " + meter.serviceTypeSpecified.ToString()); StdOut("utility : " + meter.utility); StdOut("Value : " + meter.Value); } }
/// <summary> /// Initiates the meter readings by meter identifier. /// </summary> /// <param name="messages">Messages.</param> public static void InitiateMeterReadingsByMeterID(int messages) { var wallTime = new System.Diagnostics.Stopwatch(); var client = new MDM_Server(); client.Url = "https://10.87.1.95/MultiSpeak/416/1/MDM_Server.asmx"; StdOut(client.Url); //Add the security - once for the entire batch var header = new MultiSpeakMsgHeader { Company = "Spacely's Sprockets", UserID = "niscmr", Pwd = "niscmr", AppName = "TestApp for HAProxy" }; client.MultiSpeakMsgHeaderValue = header; for (int i = 0; i < messages; i++) { try { StdOut("********** NEW MESSAGE **********"); wallTime.Restart(); // Add fake meters meterID[] meters = { new meterID { meterNo = "0", objectID = i.ToString(), serviceType = serviceType.Electric, serviceTypeSpecified = true, utility = i + "_HA_Test", //Value = "What is this for?" } }; LogRequest(meters, header); string responseURL = "http://10.86.1.31/Simulators/MultiSpeak/416/MDM_Server.asmx"; //Where we send the results, need a test url for this... //responseURL = ""; //Test this for empty url and error to be returned. string transactionID = i.ToString(); //Guid.NewGuid().ToString(); var lifespan = new expirationTime { units = timeUnits.Hours, Value = 1 }; //self-signed cert override ServicePointManager.ServerCertificateValidationCallback = delegate( object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return(true); }; var results = client.InitiateMeterReadingsByMeterID(meters, responseURL, transactionID, lifespan); if (results != null) { foreach (var result in results) { StdOut("errorString\t: " + result.errorString); StdOut("eventTime \t: " + result.eventTime); StdOut("eventTimeSpecified \t: " + result.eventTimeSpecified); StdOut("nounType \t: " + result.nounType); StdOut("objectID \t: " + result.objectID); StdOut("Value \t: " + result.Value); } } //System.Threading.Thread.Sleep(1000); wallTime.Stop(); StdOut("Wall Time | " + wallTime.Elapsed); StdOut("********** END MESSAGE **********"); } catch (Exception ex) { StdOut("Exception TransactionID | (" + i + ") | " + ex.Message); if (ex.InnerException != null) { StdOut("InnerException TransactionID | (" + i + ") | " + ex.Message); } wallTime.Stop(); StdOut("Wall Time | " + wallTime.Elapsed); StdOut("********** END MESSAGE **********"); } } //end of loop }