private static void SetMode(int mode) { var dev = DreamData.GetDeviceData(); DreamSender.SendUdpWrite(0x03, 0x01, new[] { (byte)mode }, 0x21, (byte)dev.GroupNumber, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888)); }
private static void SetMode(JObject modeObj) { var myDev = DataUtil.GetDeviceData(); var ipAddress = myDev.IpAddress; var groupNumber = (byte)myDev.GroupNumber; var newMode = (byte)(modeObj["mode"] ?? "").Value <int>(); var id = (modeObj["id"] ?? "").Value <string>(); var tag = (modeObj["tag"] ?? "").Value <string>(); var groupSend = false; byte mFlag = 0x21; LogUtil.Write("Setting mode for: " + JsonConvert.SerializeObject(modeObj)); switch (tag) { case "HueBridge": case "Lifx": case "WLed": case "NanoLeaf": if (myDev.Mode == newMode) { return; } myDev.Mode = newMode; DataUtil.SetItem("MyDevice", myDev); ipAddress = "127.0.0.1"; mFlag = 0x11; groupSend = true; break; case "Group": groupNumber = (byte)int.Parse(id, CultureInfo.InvariantCulture); ipAddress = "255.255.255.0"; groupSend = true; mFlag = 0x11; break; default: var dev = DataUtil.GetDreamDevices().Find(e => e.Id == id); if (dev != null) { ipAddress = dev.IpAddress; if (dev.Mode == newMode) { return; } dev.Mode = newMode; SetMode(newMode); DataUtil.InsertCollection("devices", dev); } break; } DreamSender.SendUdpWrite(0x03, 0x01, new[] { newMode }, mFlag, groupNumber, new IPEndPoint(IPAddress.Parse(ipAddress), 8888), groupSend); }
private void TriggerRefresh() { var myDev = DataUtil.GetDeviceData(); var ipAddress = myDev.IpAddress; var groupNumber = (byte)myDev.GroupNumber; var me = new IPEndPoint(IPAddress.Parse(ipAddress), 8888); DreamSender.SendUdpWrite(0x01, 0x11, new byte[] { 0 }, 0, groupNumber, me); Thread.Sleep(TimeSpan.FromSeconds(5)); NotifyClients(); }
private static void SetMode(int mode) { var newMode = ByteUtils.IntByte(mode); var myDev = DataUtil.GetDeviceData(); var curMode = myDev.Mode; if (curMode == newMode) { LogUtil.Write("Old mode is same as new, nothing to do."); return; } myDev.Mode = mode; DataUtil.SetItem("MyDevice", myDev); var payload = new List <byte>(); payload.Add((byte)mode); DreamSender.SendUdpWrite(0x01, 0x10, payload.ToArray(), 0x21, (byte)myDev.GroupNumber, new IPEndPoint(IPAddress.Parse(myDev.IpAddress), 8888)); }
private static void SetBrightness(JObject dData) { if (dData == null) { throw new ArgumentException("invalid jobject"); } var tag = (dData["tag"] ?? "INVALID").Value <string>(); var id = (dData["id"] ?? "INVALID").Value <string>(); var brightness = (dData["brightness"] ?? -1).Value <int>(); LogUtil.Write($"Setting brightness for {tag} {id} to {brightness}."); var myDev = DataUtil.GetDeviceData(); var ipAddress = myDev.IpAddress; var groupNumber = (byte)myDev.GroupNumber; var sendRemote = false; var remoteId = ""; switch (tag) { case "Hue": var bridge = DataUtil.GetCollectionItem <BridgeData>("Dev_Hue", id); bridge.MaxBrightness = brightness; DataUtil.InsertCollection <BridgeData>("Dev_Hue", bridge); sendRemote = true; remoteId = bridge.Id; break; case "Lifx": var bulb = DataUtil.GetCollectionItem <LifxData>("Dev_Lifx", id); bulb.MaxBrightness = brightness; DataUtil.InsertCollection <LifxData>("Dev_Lifx", bulb); sendRemote = true; remoteId = bulb.Id; break; case "NanoLeaf": var panel = DataUtil.GetCollectionItem <NanoData>("Dev_NanoLeaf", id); panel.MaxBrightness = brightness; DataUtil.InsertCollection <NanoData>("Dev_Nanoleaf", panel); sendRemote = true; remoteId = panel.Id; break; default: var groupSend = false; byte mFlag = 0x11; if (ipAddress == "255.255.255.0") { groupSend = true; } else { mFlag = 0x21; } DreamSender.SendUdpWrite(0x03, 0x02, new[] { ByteUtils.IntByte(brightness) }, mFlag, groupNumber, new IPEndPoint(IPAddress.Parse(ipAddress), 8888), groupSend); break; } if (!sendRemote) { return; } var payload = new List <byte> { ByteUtils.IntByte(brightness) }; var utf8 = new UTF8Encoding(); payload.AddRange(utf8.GetBytes(remoteId)); DreamSender.SendUdpWrite(0x01, 0x10, payload.ToArray(), 0x21, groupNumber, new IPEndPoint(IPAddress.Parse(ipAddress), 8888)); }
private bool TriggerReload(JObject dData) { if (dData == null) { throw new ArgumentException("invalid jobject"); } var tag = (dData["tag"] ?? "INVALID").Value <string>(); var id = (dData["id"] ?? "INVALID").Value <string>(); if (tag == "INVALID" || id == "INVALID") { return(false); } var myDev = DataUtil.GetDeviceData(); var ipAddress = myDev.IpAddress; if (ipAddress == (dData["ipAddress"] ?? "INVALID").Value <string>()) { DataUtil.SetItem("MyDevice", dData); } var groupNumber = (byte)myDev.GroupNumber; switch (tag) { case "WLed": LogUtil.Write("Updating wled"); var wData = dData.ToObject <WLedData>(); DataUtil.InsertCollection <WLedData>("Dev_Wled", wData); _hubContext.Clients.All.SendAsync("wledData", wData); break; case "HueBridge": LogUtil.Write("Updating bridge"); var bData = dData.ToObject <BridgeData>(); DataUtil.InsertCollection <BridgeData>("Dev_Hue", bData); _hubContext.Clients.All.SendAsync("hueData", bData); break; case "Lifx": LogUtil.Write("Updating lifx bulb"); var lData = dData.ToObject <LifxData>(); DataUtil.InsertCollection <LifxData>("Dev_Lifx", lData); _hubContext.Clients.All.SendAsync("lifxData", lData); break; case "NanoLeaf": LogUtil.Write("Updating nanoleaf"); var nData = dData.ToObject <NanoData>(); DataUtil.InsertCollection <NanoData>("Dev_NanoLeaf", nData); _hubContext.Clients.All.SendAsync("nanoData", nData); break; case "SideKick": var dsData = dData.ToObject <SideKick>(); DataUtil.InsertDsDevice(dsData); break; case "Connect": var dcData = dData.ToObject <Connect>(); DataUtil.InsertDsDevice(dcData); break; case "DreamScreenHd": var dshdData = dData.ToObject <DreamScreenHd>(); DataUtil.InsertDsDevice(dshdData); break; case "DreamScreen4K": var ds4KData = dData.ToObject <DreamScreen4K>(); DataUtil.InsertDsDevice(ds4KData); break; case "DreamScreenSolo": var dsSoloData = dData.ToObject <DreamScreenSolo>(); DataUtil.InsertDsDevice(dsSoloData); break; } var payload = new List <byte>(); var utf8 = new UTF8Encoding(); payload.AddRange(utf8.GetBytes(id)); DreamSender.SendUdpWrite(0x01, 0x10, payload.ToArray(), 0x21, groupNumber, new IPEndPoint(IPAddress.Parse(ipAddress), 8888)); return(true); }