public async Task OnDeviceStatus(DeviceStatus deviceStatus) { try { var dr = GetDeviceRuntime(deviceStatus.Key); if (dr != null) { try { dr.Status = deviceStatus; var dto = deviceStatus.ToDTO(dr); await this.playHub.Clients.All.SendDeviceStatus(dto); log.Debug($"{dr.DisplayName}, {deviceStatus.ToString()}"); } catch (Exception xe) { log.Error(xe); } } else { log.Debug($"Update received from device {deviceStatus.Key}, state {deviceStatus.State} - not found in device run time"); } } catch (Exception xe) { log.Error(xe); } }
/// <summary> /// Gets the device information. /// </summary> public virtual string GetInfo() { StringBuilder sb = new StringBuilder((int)(lastInfoLength * 1.1)); sb.AppendLine(Title); sb.Append('-', Title.Length).AppendLine(); string TimeToStringRu(DateTime dateTime) { return(dateTime > DateTime.MinValue ? dateTime.ToLocalTime().ToLocalizedString() : "неопределено"); }; string TimeToStringEn(DateTime dateTime) { return(dateTime > DateTime.MinValue ? dateTime.ToLocalTime().ToLocalizedString() : "Undefined"); }; void AppendStats(string caption, int total, int errors) { sb.Append(caption).Append(total).Append(" / ").Append(errors).AppendLine(); } if (Locale.IsRussian) { sb.Append("Драйвер : ").AppendLine(DriverName); sb.Append("Состояние : ").AppendLine(DeviceStatus.ToString()); sb.Append("Время сеанса : ").AppendLine(TimeToStringRu(LastSessionTime)); sb.Append("Время команды : ").AppendLine(TimeToStringRu(LastCommandTime)); sb.AppendLine(); AppendStats("Сеансы (всего / ошибок) : ", DeviceStats.SessionCount, DeviceStats.SessionErrors); AppendStats("Команды (всего / ошибок) : ", DeviceStats.CommandCount, DeviceStats.CommandErrors); AppendStats("Запросы (всего / ошибок) : ", DeviceStats.RequestCount, DeviceStats.RequestErrors); } else { sb.Append("Driver : ").AppendLine(DriverName); sb.Append("Status : ").AppendLine(DeviceStatus.ToString()); sb.Append("Session time : ").AppendLine(TimeToStringEn(LastSessionTime)); sb.Append("Command time : ").AppendLine(TimeToStringEn(LastCommandTime)); sb.AppendLine(); AppendStats("Sessions (total / errors) : ", DeviceStats.SessionCount, DeviceStats.SessionErrors); AppendStats("Commands (total / errors) : ", DeviceStats.CommandCount, DeviceStats.CommandErrors); AppendStats("Requests (total / errors) : ", DeviceStats.RequestCount, DeviceStats.RequestErrors); } sb.AppendLine(); DeviceData.AppendInfo(sb); lastInfoLength = sb.Length; return(sb.ToString()); }
/// <summary> /// Connection status acquisition /// </summary> /// <returns>Connection status for display</returns> public string GetStatusString() { string status = _status.ToString(); switch (_status) { case DeviceStatus.Ethernet: case DeviceStatus.EthernetFast: status += string.Format("---{0}.{1}.{2}.{3}", _ethernetConfig.abyIpAddress[0], _ethernetConfig.abyIpAddress[1], _ethernetConfig.abyIpAddress[2], _ethernetConfig.abyIpAddress[3]); break; default: break; } return(status); }
private void updateLog() { if (lastStatus != this.Status) { lastStatus = this.Status; File.AppendAllText("latest.log", "[" + DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss") + "-DEVICE-" + Name + "] Status changed to " + Status.ToString() + (Status == DeviceStatus.ARPError ? " (Error: " + LastARPResponse + ")" : Status == DeviceStatus.Offline ? " (Error: " + LastPingResponse.ToString() + ")" : "") + Environment.NewLine); } }
private IMessage GetSalida(VirlocDeviceCommand dc, GPSPoint.SourceProviders provider) { var msgid = dc.MessageId ?? 0; DeviceStatus devStatus = dc.ParsePosition(); Console.WriteLine(devStatus.ToString()); /* * // cachear devstatus en de gpspoint * var oldpos = NewestPositionReceived; * if (oldpos == null || * (oldpos.Date < pos4.Date)) * NewestPositionReceived = pos4; * * // If the Message Origin is no the LOG, then doesnt process it, just store on CACHE. * if (dc.MessageOrigin != GTEDeviceCommand.Attributes.MessageOrigin_LOG) * break; */ var gpoint = devStatus.Position; if (gpoint == null) { return(null); } gpoint.SourceProvider = provider; MessageIdentifier codigo; switch (devStatus.FiredEventNumber) // codigo del Evento generador del reporte { case Evento.PanicoConductor: codigo = MessageIdentifier.DigitalInput01Closed; break; case Evento.PanicoJefe: codigo = MessageIdentifier.DigitalInput00Closed; break; case Evento.IgnitionOn: codigo = MessageIdentifier.EngineOnInternal; break; case Evento.IgnitionOff: codigo = MessageIdentifier.EngineOffInternal; break; case Evento.PowerOn: codigo = MessageIdentifier.PowerReconnected; break; case Evento.SleepModeOn: codigo = MessageIdentifier.SleepModeOn; break; case Evento.GPSAntennaInShort: codigo = MessageIdentifier.GPSAntennaShort; break; case Evento.GPSAntennaDisconnected: codigo = MessageIdentifier.GPSAntennaDisconnected; break; case Evento.CustomerArrivedTo: codigo = MessageIdentifier.CustomEvent0001; break; case Evento.CustomerLeaved: codigo = MessageIdentifier.CustomEvent0002; break; case Evento.Parked15Min: codigo = MessageIdentifier.CustomEvent0003; break; case Evento.NonPlannedParked2Min: codigo = MessageIdentifier.CustomEvent0004; break; case Evento.StopNotCompleted: codigo = MessageIdentifier.CustomEvent0005; break; case Evento.CustomerCodeCorrect: codigo = MessageIdentifier.CustomEvent0006; break; case Evento.DoorOpenedOutsideOfStop: codigo = MessageIdentifier.CustomEvent0007; break; case Evento.OperativeCodeEntered: codigo = MessageIdentifier.CustomEvent0008; break; case Evento.MovementDetectedWithoutStopEnd: codigo = MessageIdentifier.CustomEvent0009; break; case Evento.EventualCodeEntered: codigo = MessageIdentifier.CustomEvent0010; break; case Evento.StopNotice: codigo = MessageIdentifier.CustomEvent0011; break; case Evento.TreasureDoorOpenWithDoorOpenIgnitionOffNotFixed: codigo = MessageIdentifier.CustomEvent0012; break; case Evento.TreasureDoorOpenInPanicMode: codigo = MessageIdentifier.CustomEvent0013; break; case Evento.TreasureDoorOpenOutOfCustomer: codigo = MessageIdentifier.CustomEvent0014; break; case Evento.TreasureDoorOpenOutOfSequence: codigo = MessageIdentifier.CustomEvent0015; break; case Evento.TreasureDoorOpenWithCorrectCode: codigo = MessageIdentifier.CustomEvent0016; break; case Evento.TreasureDoorOpenOutsideStop: codigo = MessageIdentifier.CustomEvent0017; break; case Evento.TreasureDoorReadyButNotOpened: codigo = MessageIdentifier.CustomEvent0018; break; case Evento.ForceCodeEnteredForTreasureDoorOpening: codigo = MessageIdentifier.CustomEvent0019; break; case Evento.TreasureDoorOpen: codigo = MessageIdentifier.CustomEvent0020; break; case Evento.AlarmDeactivatedFromVehicle: codigo = MessageIdentifier.CustomEvent0021; break; case Evento.AITOffByKey: codigo = MessageIdentifier.CustomEvent0022; break; case Evento.AITOffByCode: codigo = MessageIdentifier.CustomEvent0023; break; case Evento.GabineteApertura: codigo = MessageIdentifier.DigitalInput03Open; break; case Evento.GabineteCierre: codigo = MessageIdentifier.DigitalInput03Closed; break; default: return(gpoint.ToPosition(Id, msgid)); } return(codigo.FactoryEvent(Id, msgid, gpoint, gpoint.GetDate(), null, null)); }
public string GetStatusString() { string status = _status == DeviceStatus.NoConnection ? "No connection" : _status.ToString(); const string SegmentBranch = "."; switch (_status) { case DeviceStatus.Ethernet: status += string.Format("---{0}", EthernetSetting.ipAddress[0] + SegmentBranch + EthernetSetting.ipAddress[1] + SegmentBranch + EthernetSetting.ipAddress[2] + SegmentBranch + EthernetSetting.ipAddress[3]); break; default: break; } return(status); }