109 lines
5.1 KiB
C#
109 lines
5.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using BlubbFish.IoT.Hue.Events;
|
|
using BlubbFish.IoT.Hue.Interfaces;
|
|
using BlubbFish.IoT.Hue.lib;
|
|
using LitJson;
|
|
|
|
namespace BlubbFish.IoT.Hue.Devices.Configs {
|
|
public class SwUpdate : AConfig {
|
|
#region Properties
|
|
public Boolean Checkforupdate { get; private set; }
|
|
public DateTime Lastchange { get; private set; }
|
|
public String Bridgestate { get; private set; }
|
|
public DateTime Bridgelastinstall { get; private set; }
|
|
public String State { get; private set; }
|
|
public String Autoinstallupdatetime { get; private set; }
|
|
public Boolean Autoinstallon { get; private set; }
|
|
#endregion
|
|
|
|
#region Constructor
|
|
public SwUpdate(JsonData json, HttpConnection http, Boolean polling) : base(json, http, polling) {
|
|
this.ComplexInit(json);
|
|
}
|
|
|
|
private void ComplexInit(JsonData json) {
|
|
if(json.ContainsKey("checkforupdate") && json["checkforupdate"].IsBoolean) {
|
|
this.Checkforupdate = (Boolean)json["checkforupdate"];
|
|
}
|
|
if (json.ContainsKey("lastchange") && json["lastchange"].IsString) {
|
|
this.Lastchange = DateTime.Parse(json["lastchange"].ToString()).ToLocalTime();
|
|
}
|
|
if (json.ContainsKey("bridge") && json["bridge"].IsObject) {
|
|
if (json["bridge"].ContainsKey("state") && json["bridge"]["state"].IsString) {
|
|
this.Bridgestate = json["bridge"]["state"].ToString();
|
|
}
|
|
if (json["bridge"].ContainsKey("lastinstall") && json["bridge"]["lastinstall"].IsString) {
|
|
this.Bridgelastinstall = DateTime.Parse(json["bridge"]["lastinstall"].ToString()).ToLocalTime();
|
|
}
|
|
}
|
|
if (json.ContainsKey("state") && json["state"].IsString) {
|
|
this.State = json["state"].ToString();
|
|
}
|
|
if (json.ContainsKey("autoinstall") && json["autoinstall"].IsObject) {
|
|
if (json["autoinstall"].ContainsKey("updatetime") && json["autoinstall"]["updatetime"].IsString) {
|
|
this.Autoinstallupdatetime = json["autoinstall"]["updatetime"].ToString();
|
|
}
|
|
if (json["autoinstall"].ContainsKey("on") && json["autoinstall"]["on"].IsBoolean) {
|
|
this.Autoinstallon = (Boolean)json["autoinstall"]["on"];
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region AConnector
|
|
public override String ToString() {
|
|
return "Updates: Check-" + this.Checkforupdate + " LatestCheck-" + this.Lastchange + " Updates-" + this.Bridgestate + " Installed-" + this.Bridgelastinstall + " State-" + this.State + " AutoTime-" + this.Autoinstallupdatetime + " AutoOn-" + this.Autoinstallon;
|
|
}
|
|
|
|
public override void SetUpdate(JsonData json) {
|
|
if (json.ContainsKey("checkforupdate") && json["checkforupdate"].IsBoolean) {
|
|
if (this.Checkforupdate != (Boolean)json["checkforupdate"]) {
|
|
this.Checkforupdate = (Boolean)json["checkforupdate"];
|
|
this.NotifyClient<ConfigUpdateEvent>(this.Checkforupdate);
|
|
}
|
|
}
|
|
if (json.ContainsKey("lastchange") && json["lastchange"].IsString) {
|
|
if (this.Lastchange != DateTime.Parse(json["lastchange"].ToString()).ToLocalTime()) {
|
|
this.Lastchange = DateTime.Parse(json["lastchange"].ToString()).ToLocalTime();
|
|
this.NotifyClient<ConfigUpdateEvent>(this.Lastchange);
|
|
}
|
|
}
|
|
if (json.ContainsKey("bridge") && json["bridge"].ContainsKey("state") && json["bridge"]["state"].IsString) {
|
|
if (this.Bridgestate != json["bridge"]["state"].ToString()) {
|
|
this.Bridgestate = json["bridge"]["state"].ToString();
|
|
this.NotifyClient<ConfigUpdateEvent>(this.Bridgestate);
|
|
}
|
|
}
|
|
if (json.ContainsKey("bridge") && json["bridge"].ContainsKey("lastinstall") && json["bridge"]["lastinstall"].IsString) {
|
|
if (this.Bridgelastinstall != DateTime.Parse(json["bridge"]["lastinstall"].ToString()).ToLocalTime()) {
|
|
this.Bridgelastinstall = DateTime.Parse(json["bridge"]["lastinstall"].ToString()).ToLocalTime();
|
|
this.NotifyClient<ConfigUpdateEvent>(this.Bridgelastinstall);
|
|
}
|
|
}
|
|
if (json.ContainsKey("state") && json["state"].IsString) {
|
|
if (this.State != json["state"].ToString()) {
|
|
this.State = json["state"].ToString();
|
|
this.NotifyClient<ConfigUpdateEvent>(this.State);
|
|
}
|
|
}
|
|
if (json.ContainsKey("autoinstall") && json["autoinstall"].ContainsKey("updatetime") && json["autoinstall"]["updatetime"].IsString) {
|
|
if (this.Autoinstallupdatetime != json["autoinstall"]["updatetime"].ToString()) {
|
|
this.Autoinstallupdatetime = json["autoinstall"]["updatetime"].ToString();
|
|
this.NotifyClient<ConfigUpdateEvent>(this.Autoinstallupdatetime);
|
|
}
|
|
}
|
|
if (json.ContainsKey("autoinstall") && json["autoinstall"].ContainsKey("on") && json["autoinstall"]["on"].IsBoolean) {
|
|
if (this.Autoinstallon != (Boolean)json["autoinstall"]["on"]) {
|
|
this.Autoinstallon = (Boolean)json["autoinstall"]["on"];
|
|
this.NotifyClient<ConfigUpdateEvent>(this.Autoinstallon);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|