Exemple #1
0
        /// <summary>
        /// convenience function, reads cimdata file, calls getGroupStatus, returns result
        /// </summary>
        /// <param name="path">file name</param>
        /// <param name="mrid">der group unique identifier</param>
        /// <param name="q">apparent or real</param>
        /// <returns></returns>
        public static CIMData.DERStatus getDERGroupStatus(String path, String mrid, quantity q, ref String SOAPMessage, ref String SoapResponse)
        {
            CIM c = new CIM();

            c._data = DERMSInterface.CIMData.read(path);
            CIMData.DERStatus status = c.getDERGroupStatus(mrid, q);
            SOAPMessage  = c.LastMessageSent;
            SoapResponse = c.LastMessageReceived;
            return(status);
        }
Exemple #2
0
        /// <summary>
        /// convenience function reads cimdata file, calls dispatch
        /// </summary>
        /// <param name="path"> filename</param>
        /// <param name="DERGroupName">DER group name</param>
        /// <param name="q">apparent or real</param>
        /// <param name="isOverride">send my own value, rather than pulling from config</param>
        /// <param name="overrideValue">value to send</param>
        /// <returns></returns>
        public static int DispatchDERGroup(String path, String DERGroupName, quantity q, ref String SOAPMessage, ref String SoapResponse, Boolean isOverride = false, double overrideValue = 0.0)
        {
            CIM c = new CIM();

            c._data = DERMSInterface.CIMData.read(path);
            int rc = c.DispatchDERGroup(DERGroupName, q, isOverride, overrideValue);

            SOAPMessage  = c.LastMessageSent;
            SoapResponse = c.LastMessageReceived;
            return(rc);
        }
Exemple #3
0
        public List <string> Qnty(int id)
        {
            var           qntComp = vc.quantities.Where(p => p.qntId == id).FirstOrDefault();
            List <string> error   = new List <string>();

            qntComp = new quantity();
            if (qntComp.quantity1 <= qntComp.qntCtrl)
            {
                error.Add("Please update the Vending Machine");
            }
            return(error);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            VendingBL vm  = new VendingBL();
            quantity  qnt = new quantity();
            int       id  = qnt.qntId;


            List <string> invalid = vm.Qnty(id);

            if (invalid.Count == 0)
            {
                lblLow.Text = "";
            }
            else
            {
                lblLow.Text = invalid[0];
            }
        }
Exemple #5
0
        public static int dispatchDERGroup(
            [MarshalAs(UnmanagedType.LPTStr)] String path,
            [MarshalAs(UnmanagedType.LPTStr)] String mrid,
            [MarshalAs(UnmanagedType.LPTStr)] String q,
            [MarshalAs(UnmanagedType.LPTStr)] ref String xml,
            [MarshalAs(UnmanagedType.Bool)] bool isOverride,
            [MarshalAs(UnmanagedType.R8)] double overrideValue)
        {
            DERResult result = new DERResult();

            try
            {
                quantity qtype = (quantity)Enum.Parse(typeof(DERMSInterface.quantity), q);
                Console.WriteLine("DER file : " + path);
                Console.WriteLine("DERGroupName : " + mrid);
                Console.WriteLine("Override : " + isOverride);
                Console.WriteLine("Override value : " + overrideValue);
                String SOAPMessage  = null;
                String SOAPResponse = null;
                int    rvalue       = CIM.DispatchDERGroup(path, mrid, qtype, ref SOAPMessage, ref SOAPResponse, isOverride, overrideValue);

                result.SOAPMessage  = SOAPMessage;
                result.SOAPResponse = SOAPResponse;
                result.Returncode   = 0;
            }
            catch (Exception e)
            {
                result.Returncode   = 1;
                result.ErrorMessage = e.ToString();
                Console.WriteLine("Exception: {0}", e);
            }

            XmlSerializer ser    = new XmlSerializer(typeof(DERResult));
            StringWriter  writer = new StringWriter();

            ser.Serialize(writer, result);
            xml = writer.ToString();

            return(result.Returncode);
        }
Exemple #6
0
        public static int getDERGroupStatus(
            [MarshalAs(UnmanagedType.LPTStr)] String path,
            [MarshalAs(UnmanagedType.LPTStr)] String mrid,
            [MarshalAs(UnmanagedType.LPTStr)] String q,
            [MarshalAs(UnmanagedType.LPTStr)] ref String xml)
        {
            DERResult     result   = new DERResult();
            List <String> nameList = new List <string>();

            try
            {
                quantity qtype = (quantity)Enum.Parse(typeof(DERMSInterface.quantity), q);

                Console.WriteLine("DER file : " + path);
                Console.WriteLine("DERGroupName : " + mrid);
                String            SOAPMessage  = null;
                String            SOAPResponse = null;
                CIMData.DERStatus status       = CIM.getDERGroupStatus(path, mrid, qtype, ref SOAPMessage, ref SOAPResponse);
                int rvalue = CIM.CreateDERGroup(path, mrid, nameList.ToArray <String>(), ref SOAPMessage, ref SOAPResponse);
                result.Status       = status;
                result.SOAPMessage  = SOAPMessage;
                result.SOAPResponse = SOAPResponse;
                result.Returncode   = 0;
            }
            catch (Exception e)
            {
                result.Returncode   = 1;
                result.ErrorMessage = e.ToString();
                Console.WriteLine("DERConfigureException: {0}", e);
            }

            XmlSerializer ser    = new XmlSerializer(typeof(DERResult));
            StringWriter  writer = new StringWriter();

            ser.Serialize(writer, result);
            xml = writer.ToString();

            return(result.Returncode);
        }
Exemple #7
0
 public VendingBL()
 {
     vc = new VendingMachineContext();
     v  = new vending();
     q  = new quantity();
 }
Exemple #8
0
        /// <summary>
        /// send Get DER Group status SOAP message, get the status of the der
        /// </summary>
        /// <param name="mrid">unique identifier of DER group to be retrieved</param>
        /// <param name="q">real power or reactive power</param>
        /// <returns></returns>
        public CIMData.DERStatus getDERGroupStatus(String mrid, quantity q)
        {
            // initialize the soap call
            CIMGetDERGroupStatuses.GetDERGroupStatuses_Port client;
            CIMData.header header = _data.GetDERStatusHeader;

            if (!hasData(header.EndPoint))
            {
                throw new DERConfigureException("End Point required");
            }

            client = new CIMGetDERGroupStatuses.GetDERGroupStatuses_PortClient("GetDERGroupStatuses_Port", header.EndPoint);


            // initialize the vars used for the SOAP call
            CIMGetDERGroupStatuses.GetDERGroupStatusesRequest  req     = new CIMGetDERGroupStatuses.GetDERGroupStatusesRequest();
            CIMGetDERGroupStatuses.DERGroupStatusesPayloadType payload = new CIMGetDERGroupStatuses.DERGroupStatusesPayloadType();
            CIMGetDERGroupStatuses.HeaderType to = new CIMGetDERGroupStatuses.HeaderType();


            // build header
            CIMGetDERGroupStatuses.HeaderTypeVerb v = new CIMGetDERGroupStatuses.HeaderTypeVerb();
            if (Enum.TryParse(header.Verb, out v))
            {
                to.Verb = v;
            }
            else
            {
                to.Verb = CIMGetDERGroupStatuses.HeaderTypeVerb.get;
            }
            to.Noun         = header.Noun;
            to.ReplyAddress = header.ReplyAddress;
            to.Revision     = header.Revision;
            to.Source       = header.Source;
            to.AckRequired  = header.AckRequired;
            if (to.AckRequired == true)
            {
                to.AckRequiredSpecified = true;
            }
            to.Comment = header.Comment;
            to.Context = header.Context;

            if (hasData(header.UserOrganization) || hasData(header.UserID))
            {
                to.User              = new CIMGetDERGroupStatuses.UserType();
                to.User.UserID       = (hasData(header.UserID)) ? header.UserID : "epri"; // required
                to.User.Organization = header.UserOrganization;                           // optional
            }

            // load up the payload
            req.GetDERGroupStatusesRequestMessage.Header  = to;
            req.GetDERGroupStatusesRequestMessage.Request = new CIMGetDERGroupStatuses.GetDERGroupStatusesRequestType();
            req.GetDERGroupStatusesRequestMessage.Request.GetDERGroupStatuses         = new CIMGetDERGroupStatuses.DERGroupStatus[1];
            req.GetDERGroupStatusesRequestMessage.Request.GetDERGroupStatuses[0]      = new CIMGetDERGroupStatuses.DERGroupStatus();
            req.GetDERGroupStatusesRequestMessage.Request.GetDERGroupStatuses[0].mRID = mrid;

            // log outgoing, call soap, log return message
            _lastMessageSent = logMessage <CIMGetDERGroupStatuses.GetDERGroupStatusesRequest>(req);
            CIMGetDERGroupStatuses.GetDERGroupStatusesResponse reply = client.GetDERGroupStatuses(req);
            _lastMessageReceived = logMessage <CIMGetDERGroupStatuses.GetDERGroupStatusesResponse>(reply);


            CIMGetDERGroupStatuses.DERGroupStatus1[] statuses = reply.GetDERGroupStatusesResponseMessage.Payload.DERGroupStatuses;


            if (statuses.Length > 1)
            {
                throw new DERResponseException("GETDERGroupStatus returned multiple DER Groups.");
            }
            else if (statuses.Length < 1)
            {
                throw new DERResponseException("GETDERGroupStatus returned NO DER Groups.");
            }
            else
            {
                // we're loading up our own object, DERStatus
                CIMData.DERStatus status = new CIMData.DERStatus();
                status.Mrid = statuses[0].mRID;

                CIMGetDERGroupStatuses.EndDeviceGroup1 edg = statuses[0].EndDeviceGroup;
                if (edg.otherCapabilities == null)
                {
                    return(status);
                }

                // todo : missing values in here, problem with wsdl vs object
                CIMGetDERGroupStatuses.otherCapability cap = edg.otherCapabilities;
                status.PresentValue = edg.Item.value;

                return(status);
            }
        }
Exemple #9
0
        /// <summary>
        /// executes a create DERdispatch soap command
        /// </summary>
        /// <param name="DERGroupName">DERGroup name</param>
        /// <param name="q">realPower or reactivePower</param>
        /// <param name="isOverride">send overrideValue instead of value from cimdata</param>
        /// <param name="overrideValue">value to be used for dispatch</param>
        /// <returns></returns>
        public int DispatchDERGroup(String MRID, quantity q, Boolean isOverride = false, double overrideValue = 0.0)
        {
            CIMDERGroupDispatches.DERGroupDispatches_PortClient client;
            CIMData.header header = _data.DispatchDERHeader;

            if (!hasData(header.EndPoint))
            {
                throw new DERConfigureException("End Point required");
            }

            // initialize SOAP server
            client = new CIMDERGroupDispatches.DERGroupDispatches_PortClient("DERGroupDispatches_Port", header.EndPoint);

            // intiailize service arguments
            CIMDERGroupDispatches.HeaderType to = new CIMDERGroupDispatches.HeaderType();
            CIMDERGroupDispatches.DERGroupDispatchesPayloadType payload = new CIMDERGroupDispatches.DERGroupDispatchesPayloadType();

            CIMDERGroupDispatches.DERGroupDispatchesRequestMessageType req = new CIMDERGroupDispatches.DERGroupDispatchesRequestMessageType();
            req.Payload = payload;
            req.Header  = to;

            // set service header arguments
            CIMDERGroupDispatches.HeaderTypeVerb v = new CIMDERGroupDispatches.HeaderTypeVerb();
            if (header.Verb != null && Enum.TryParse(header.Verb, out v))
            {
                to.Verb = v;
            }
            else
            {
                to.Verb = CIMDERGroupDispatches.HeaderTypeVerb.create;
            }
            to.Noun         = header.Noun;
            to.ReplyAddress = header.ReplyAddress;
            to.Revision     = header.Revision;
            to.Source       = header.Source;
            to.AckRequired  = header.AckRequired;
            if (to.AckRequired == true)
            {
                to.AckRequiredSpecified = true;
            }
            to.Comment = header.Comment;
            to.Context = header.Context;
            if (hasData(header.UserOrganization) || hasData(header.UserID))
            {
                to.User              = new CIMDERGroupDispatches.UserType();
                to.User.UserID       = (hasData(header.UserID)) ? header.UserID : "epri"; // required
                to.User.Organization = header.UserOrganization;                           // optional
            }

            // load the data for the SOAP call
            CIMData.DERGroup group = _data.Groups.Find(x => x.Mrid.Equals(MRID));
            if (group != null)
            {
                payload.DERGroupDispatches                  = new CIMDERGroupDispatches.DERGroupDispatch[1];
                payload.DERGroupDispatches[0]               = new CIMDERGroupDispatches.DERGroupDispatch();
                payload.DERGroupDispatches[0].DERGroup      = new CIMDERGroupDispatches.DERGroup();
                payload.DERGroupDispatches[0].DERGroup.mRID = group.Mrid;
                payload.DERGroupDispatches[0].DERGroup.name = group.GroupName;
                // TODO : Docs say mrid, but name is required in wsdl. Ask Gerry.
                payload.DERGroupDispatches[0].RequestedCapability = new CIMDERGroupDispatches.RequestedCapability();
                payload.DERGroupDispatches[0].RequestedCapability.capabilityType = (CIMDERGroupDispatches.capabilityType)Enum.Parse(typeof(CIMDERGroupDispatches.capabilityType), q.ToString());

                // load with value passed, or reactive value, or real value
                if (isOverride == true)
                {
                    payload.DERGroupDispatches[0].RequestedCapability.value = (float)overrideValue;
                }
                else if (q.Equals(quantity.ApparentPower))
                {
                    payload.DERGroupDispatches[0].RequestedCapability.value = (float)group.getVarCapacity();
                }
                else
                {
                    payload.DERGroupDispatches[0].RequestedCapability.value = (float)group.getWattCapacity();
                }

                // set the multiplier and units
                if (q.Equals(quantity.RealPower))
                {
                    payload.DERGroupDispatches[0].RequestedCapability.capabilityMultiplier = CIMDERGroupDispatches.UnitMultiplier.k;
                    payload.DERGroupDispatches[0].RequestedCapability.capabilityUnits      = "W";
                }
                else
                {
                    payload.DERGroupDispatches[0].RequestedCapability.capabilityMultiplier = CIMDERGroupDispatches.UnitMultiplier.k;
                    payload.DERGroupDispatches[0].RequestedCapability.capabilityUnits      = "VAr";
                }


                // log message to be sent, send message, log result
                _lastMessageSent = logMessage <DERMSInterface.CIMDERGroupDispatches.DERGroupDispatchesRequestMessageType>(req);
                CIMDERGroupDispatches.DERGroupDispatchesResponseMessageType reply = client.CreateDERGroupDispatches(req);
                _lastMessageReceived = logMessage <CIMDERGroupDispatches.DERGroupDispatchesResponseMessageType>(reply);

                if (reply.Reply.Result.CompareTo(CIMDERGroupDispatches.ReplyTypeResult.OK) == 0)
                {
                    return(0);
                }
                else
                {
                    return(1);
                }
            }
            else
            {
                throw new DERConfigureException("DERGroup MRID " + MRID + " not found in configuration file");
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:BikeDistributor.BikeDiscounts"/> class.
 /// Adds a single discount object to the dictionary.
 /// </summary>
 /// <param name="quantity">Quantity.</param>
 /// <param name="di">Discount object</param>
 public BikeDiscounts(int quantity, DiscountInfo di) => Add(quantity, di);