コード例 #1
0
        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);
            }
        }
コード例 #2
0
 /// <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)
 {
 }
コード例 #3
0
ファイル: HSPI.cs プロジェクト: lulzzz/HS3_EnOcean_Plugin
        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);
            }
        }