/// <summary>
 /// Handler for 'testEvents()' command.
 /// </summary>
 /// <param name="originator"></param>
 public void testEvents(IDeviceEventOriginator originator)
 {
     //sendMeasurement(getHardwareId(), "engine.temp", 170.0, originator);
     sendLocation(getHardwareId(), 33.7550, -84.3900, 0.0, originator);
     sendAlert(getHardwareId(), "engine.overheat", "Engine is overheating!", originator);
     LOGGER.info("Sent reponse to 'testEvents' command.");
 }
 /// <summary>
 /// Convenience method for sending an acknowledgement event to SiteWhere.
 /// </summary>
 /// <param name="hardwareId"></param>
 /// <param name="message"></param>
 /// <param name="originator"></param>
 public void sendAck(String hardwareId, String message, IDeviceEventOriginator originator)
 {
     SiteWhere.SiteWhere.Types.Acknowledge ack = new SiteWhere.SiteWhere.Types.Acknowledge();
     ack.HardwareId = hardwareId;
     ack.Message    = message;
     getEventDispatcher().acknowledge(ack, getOriginatorEventId(originator));
 }
        /// <summary>
        /// Gets event id of the originating command if available.
        /// </summary>
        /// <param name="originator"></param>
        /// <returns></returns>
        protected String getOriginatorEventId(IDeviceEventOriginator originator)
        {
            if (originator == null)
            {
                return(null);
            }

            return(originator.getEventId());
        }
        /// <summary>
        /// Convenience method for sending an alert event to SiteWhere.
        /// </summary>
        /// <param name="hardwareId"></param>
        /// <param name="alertType"></param>
        /// <param name="message"></param>
        /// <param name="originator"></param>
        public void sendAlert(String hardwareId, String alertType, String message, IDeviceEventOriginator originator)
        {
            Lib.SiteWhere.Model.Types.DeviceAlert ab = new Model.Types.DeviceAlert();
            ab.HardwareId   = hardwareId;
            ab.AlertType    = alertType;
            ab.AlertMessage = message;

            getEventDispatcher().sendAlert(ab, getOriginatorEventId(originator));
        }
        /// <summary>
        /// Handler for 'helloWorld(String, boolean)' command.
        /// </summary>
        /// <param name="greeting"></param>
        /// <param name="loud"></param>
        /// <param name="originator"></param>
        public void helloWorld(String greeting, Boolean loud, IDeviceEventOriginator originator)
        {
            String response = greeting + " Yungoal!";

            if (loud)
            {
                response = response.ToUpper();
            }
            sendAck(getHardwareId(), response, originator);
            LOGGER.info("Sent reponse to 'helloWorld' command.");
        }
 /// <summary>
 /// Handler for 'ping()' command.
 /// </summary>
 /// <param name="originator"></param>
 public void ping(IDeviceEventOriginator originator)
 {
     sendAck(getHardwareId(), "Acknowledged.", originator);
     LOGGER.info("Sent reponse to 'ping' command.");
 }
        /// <summary>
        /// Convenience method for sending a location event to SiteWhere.
        /// </summary>
        /// <param name="hardwareId"></param>
        /// <param name="latitude"></param>
        /// <param name="longitude"></param>
        /// <param name="elevation"></param>
        /// <param name="originator"></param>
        public void sendLocation(String hardwareId, double latitude, double longitude, double elevation, IDeviceEventOriginator originator)
        {
            Lib.SiteWhere.Model.Types.DeviceLocation lb = new Model.Types.DeviceLocation();
            lb.HardwareId = hardwareId;
            lb.Longitude  = longitude;
            lb.Elevation  = elevation;
            lb.Latitude   = latitude;

            getEventDispatcher().sendLocation(lb, getOriginatorEventId(originator));
        }
        /// <summary>
        /// Convenience method for sending a measurement event to SiteWhere.
        /// </summary>
        /// <param name="hardwareId"></param>
        /// <param name="measurements"></param>
        /// <param name="originator"></param>
        public void sendMeasurement(String hardwareId, Model.Types.Measurement[] measurements, IDeviceEventOriginator originator)
        {
            Lib.SiteWhere.Model.Types.DeviceMeasurements mb = new Model.Types.DeviceMeasurements();

            mb.HardwareId = hardwareId;

            mb.Measurement.AddRange(measurements);

            getEventDispatcher().sendMeasurement(mb, getOriginatorEventId(originator));
        }