/// <summary>
        ///     Initializes a new instance of <see cref="PrinterMonitor" />
        /// </summary>
        /// <param name="status">Status object to connect to</param>
        public PrinterMonitor(PrinterStatus status)
        {
            _status = status;

            Receive <DeviceConnected>(_ => status.Connected    = true);
            Receive <DeviceDisconnected>(_ => status.Connected = false);

            Receive <TemperatureReported>(msg =>
            {
                if (msg.HotEndTemperature != null)
                {
                    status.HotEndTemperature = status.HotEndTemperature != null ?
                                               status.HotEndTemperature.Merge(msg.HotEndTemperature) :
                                               msg.HotEndTemperature;
                }

                if (msg.BedTemperature != null)
                {
                    status.BedTemperature = status.BedTemperature != null ?
                                            status.BedTemperature.Merge(msg.BedTemperature) :
                                            msg.BedTemperature;
                }
            });

            Receive <PrintJobStepsCompleted>(msg =>
            {
                status.Job.StepsCompleted = msg.StepsCompleted;
                status.Job.TotalSteps     = msg.TotalSteps;
            });

            Receive <PrintJobStatusUpdated>(msg => { status.Job.State = msg.State; });
        }
 /// <summary>
 ///     Creates the actor properties for the printer monitor
 /// </summary>
 /// <returns>Returns the actor properties</returns>
 public static Akka.Actor.Props Props(PrinterStatus status)
 {
     return(new Props(typeof(PrinterMonitor), new object[] { status }));
 }