public override void HSEvent(HomeSeerAPI.Enums.HSEvent eventType, object[] parameters) { try { if ( eventType != HomeSeerAPI.Enums.HSEvent.VALUE_SET && eventType != HomeSeerAPI.Enums.HSEvent.VALUE_CHANGE ) { Program.WriteLog(LogType.Warn, "Got unknown HSEvent type " + eventType); return; } int devRef = (int)parameters[4]; double newValue = (double)parameters[2]; if (!dimmersByRef.ContainsKey(devRef)) { return; } Program.WriteLog(LogType.Debug, $"Dimmer {devRef} was set to {newValue}."); if (!haveDoneInitialUpdate) { // We want to delay this until we've confirmed that we received a Z-Wave update, since now we know // that Z-Wave is up and running haveDoneInitialUpdate = true; UpdateAllDimmers(); } else { UpdateDimmerForStatus(dimmersByRef[devRef], newValue); } } catch (Exception ex) { Program.WriteLog(LogType.Error, "Exception in HSEvent: " + ex.Message); Console.WriteLine(ex); } }
/// <summary> /// This is called when an event happens, provided you called RegisterEventCB first. /// </summary> /// <param name="eventType">The type of the event that happened</param> /// <param name="parameters">Parameters for the event</param> public virtual void HSEvent(HomeSeerAPI.Enums.HSEvent eventType, object[] parameters) { }
public void HSEvent(HomeSeerAPI.Enums.HSEvent EventType, object[] parms) { JObject evtData = new JObject(); try { string Source = "Unknown"; evtData.Add("PARAMS", string.Join(", ", parms)); switch (EventType) { case Enums.HSEvent.CONFIG_CHANGE: { Console.WriteLine("Got CONFIG_CHANGE event"); Console.WriteLine(" - HSEvent {0}: {1}/{2}/{3}/{4}/{5}", EventType.ToString(), parms[5].ToString(), parms[0].ToString(), parms[1].ToString(), parms[2].ToString(), parms[3].ToString()); evtData.Add("time", DateTime.UtcNow.ToString()); //mCore.ReloadConfig(15); // Delay atleast 15 seconds to make time for other changes. } break; case Enums.HSEvent.LOG: evtData.Add("typeid", parms[0] as string); DateTime parsedTime; if (DateTime.TryParse(parms[1] as string, out parsedTime)) { evtData.Add("time", parsedTime); } else { // FIXME: Should not happen Console.WriteLine("Failed time parse.. FIXME"); evtData.Add("time", DateTime.UtcNow); } evtData.Add("category", parms[2] as string); evtData.Add("message", parms[3] as string); break; case Enums.HSEvent.STRING_CHANGE: { Source = parms[3].ToString(); string dev_addr = parms[1].ToString(); // if (dev_addr == "") evtData.Add("unique_id", "HS-ID-" + Source); evtData.Add("address", dev_addr); // evtData.Add("address", parms[1].ToString()); evtData.Add("value", parms[2].ToString()); Int32 sid = Int32.Parse(Source); var ta = hsHost.DeviceLastChangeRef(sid); evtData.Add("time", ta.ToUniversalTime()); } break; case Enums.HSEvent.VALUE_CHANGE: { Source = parms[4].ToString(); string dev_addr = parms[1].ToString(); evtData.Add("unique_id", "HS-ID-" + Source); evtData.Add("address", dev_addr); evtData.Add("value", parms[2].ToString()); evtData.Add("oldvalue", parms[3].ToString()); Int32 sid = Int32.Parse(Source); evtData.Add("string_value", hsHost.DeviceString(sid)); var ta = hsHost.DeviceLastChangeRef(sid); evtData.Add("time", ta.ToUniversalTime()); } break; default: evtData.Add("time", DateTime.UtcNow.ToString()); Console.WriteLine("No handler yet for HSEvent type {0}", EventType.ToString()); Console.WriteLine(" - HSEvent {0}: {1}", EventType.ToString(), String.Join(" | ", parms)); break; } } catch (Exception e) { Console.WriteLine("Exception something foo: {0}", e.Message); } }