Convert UpTimeSensor to LastBootSensor

pull/19/head
Chris Mancini 4 years ago
parent 776fd6274b
commit d8280bdd63

@ -106,9 +106,9 @@ You can use [WMI Explorer](https://github.com/vinaypamnani/wmie2/tree/v2.0.0.2)
This sensor returns the amount of seconds the workstation has been idle for. It starts counting the moment you stop typing or moving your mouse. This sensor returns the amount of seconds the workstation has been idle for. It starts counting the moment you stop typing or moving your mouse.
### UpTime ### LastBoot
This sensor returns theup time from Windows in seconds. This sensor returns the date/time that Windows was last booted.
### SessionState ### SessionState

@ -142,9 +142,9 @@ namespace UserInterface.Views
item.ShowWindowNameInput = false; item.ShowWindowNameInput = false;
item.UpdateInterval = 5; item.UpdateInterval = 5;
break; break;
case AvailableSensors.UpTimeSensor: case AvailableSensors.LastBootSensor:
item.Description = "This sensor returns the uptime from Windows in seconds"; item.Description = "This sensor returns the date/time that Windows was last booted";
item.MoreInfoLink = "https://github.com/sleevezipper/hass-workstation-service#uptime"; item.MoreInfoLink = "https://github.com/sleevezipper/hass-workstation-service#lastboot";
item.ShowQueryInput = false; item.ShowQueryInput = false;
item.ShowWindowNameInput = false; item.ShowWindowNameInput = false;
item.UpdateInterval = 5; item.UpdateInterval = 5;

@ -118,8 +118,8 @@ namespace hass_workstation_service.Communication.InterProcesCommunication
case AvailableSensors.IdleTimeSensor: case AvailableSensors.IdleTimeSensor:
sensorToCreate = new IdleTimeSensor(this._publisher,(int)model.UpdateInterval, model.Name); sensorToCreate = new IdleTimeSensor(this._publisher,(int)model.UpdateInterval, model.Name);
break; break;
case AvailableSensors.UpTimeSensor: case AvailableSensors.LastBootSensor:
sensorToCreate = new UpTimeSensor(this._publisher, (int)model.UpdateInterval, model.Name); sensorToCreate = new LastBootSensor(this._publisher, (int)model.UpdateInterval, model.Name);
break; break;
case AvailableSensors.SessionStateSensor: case AvailableSensors.SessionStateSensor:
sensorToCreate = new SessionStateSensor(this._publisher, (int)model.UpdateInterval, model.Name); sensorToCreate = new SessionStateSensor(this._publisher, (int)model.UpdateInterval, model.Name);

@ -43,7 +43,7 @@ namespace hass_workstation_service.Communication.InterProcesCommunication.Models
ActiveWindowSensor, ActiveWindowSensor,
NamedWindowSensor, NamedWindowSensor,
IdleTimeSensor, IdleTimeSensor,
UpTimeSensor, LastBootSensor,
SessionStateSensor SessionStateSensor
} }
} }

@ -96,8 +96,8 @@ namespace hass_workstation_service.Data
case "IdleTimeSensor": case "IdleTimeSensor":
sensor = new IdleTimeSensor(publisher, configuredSensor.UpdateInterval, configuredSensor.Name, configuredSensor.Id); sensor = new IdleTimeSensor(publisher, configuredSensor.UpdateInterval, configuredSensor.Name, configuredSensor.Id);
break; break;
case "UpTimeSensor": case "LastBootSensor":
sensor = new UpTimeSensor(publisher, configuredSensor.UpdateInterval, configuredSensor.Name, configuredSensor.Id); sensor = new LastBootSensor(publisher, configuredSensor.UpdateInterval, configuredSensor.Name, configuredSensor.Id);
break; break;
case "WebcamActiveSensor": case "WebcamActiveSensor":
sensor = new WebcamActiveSensor(publisher, configuredSensor.UpdateInterval, configuredSensor.Name, configuredSensor.Id); sensor = new WebcamActiveSensor(publisher, configuredSensor.UpdateInterval, configuredSensor.Name, configuredSensor.Id);

@ -28,8 +28,6 @@ namespace hass_workstation_service.Domain.Sensors
} }
static int GetLastInputTime() static int GetLastInputTime()
{ {
int idleTime = 0; int idleTime = 0;

@ -1,17 +1,13 @@
using hass_workstation_service.Communication; using hass_workstation_service.Communication;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text;
using HWND = System.IntPtr;
namespace hass_workstation_service.Domain.Sensors namespace hass_workstation_service.Domain.Sensors
{ {
public class UpTimeSensor : AbstractSensor public class LastBootSensor : AbstractSensor
{ {
public UpTimeSensor(MqttPublisher publisher, int? updateInterval = 10, string name = "UpTime", Guid id = default) : base(publisher, name ?? "UpTime", updateInterval ?? 10, id) public LastBootSensor(MqttPublisher publisher, int? updateInterval = 10, string name = "LastBoot", Guid id = default) : base(publisher, name ?? "LastBoot", updateInterval ?? 10, id)
{ {
@ -25,15 +21,13 @@ namespace hass_workstation_service.Domain.Sensors
Unique_id = this.Id.ToString(), Unique_id = this.Id.ToString(),
Device = this.Publisher.DeviceConfigModel, Device = this.Publisher.DeviceConfigModel,
State_topic = $"homeassistant/sensor/{Publisher.DeviceConfigModel.Name}/{this.Name}/state", State_topic = $"homeassistant/sensor/{Publisher.DeviceConfigModel.Name}/{this.Name}/state",
Icon = "mdi:clock-time-three-outline", Icon = "mdi:clock-time-three-outline"
Unit_of_measurement = "seconds"
}); });
} }
public override string GetState() public override string GetState()
{ {
return (DateTime.Now - TimeSpan.FromMilliseconds(GetTickCount64())).ToString("s");
return (GetTickCount64() / 1000).ToString(); //return in seconds
} }
[DllImport("kernel32")] [DllImport("kernel32")]
Loading…
Cancel
Save