void device_values_DeviceValueDataChangedEvent(object sender, device_values.ValueDataChangedEventArgs args) { using (zvsEntities2 db = new zvsEntities2(zvsEntityControl.GetzvsConnectionString)) { device_values dv = db.device_values.FirstOrDefault(v => v.id == args.device_value_id); if (dv != null) { string UpdateString = DeviceToString(dv); if (!string.IsNullOrEmpty(UpdateString)) { BroadcastMessage("UPDATE~" + DeviceToString(dv) + Environment.NewLine); BroadcastMessage("ENDLIST" + Environment.NewLine); } string device_name = string.Empty; device_name = dv.device.friendly_name; BroadcastMessage("MSG~" + "'" + device_name + "' " + dv.label_name + " changed to " + dv.value + Environment.NewLine); } } }
void device_values_DeviceValueDataChangedEvent(object sender, device_values.ValueDataChangedEventArgs args) { if (IsReady) { using (zvsEntities2 db = new zvsEntities2(zvsEntityControl.GetzvsConnectionString)) { device_values dv = db.device_values.FirstOrDefault(v => v.id == args.device_value_id); if (dv != null) { string[] deviceTypeValuespairs = GetSettingValue("NOTIFICATIONS").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string deviceTypeValuespair in deviceTypeValuespairs) { string thisEvent = dv.device.device_types.name + ":" + dv.label_name; if (thisEvent.Equals(deviceTypeValuespair.Trim())) { Notification notification = new Notification("zVirtualScenes", NOTIFY_DEVICE_VALUE_CHANGE, "0", dv.device.friendly_name + " " + dv.label_name, "Changed to " + dv.value + " from " + args.previousValue + "."); GrowlConnector.Notify(notification); } } } } } }
void device_values_DeviceValueDataChangedEvent(object sender, device_values.ValueDataChangedEventArgs args) { }
private string DeviceToString(device_values dv) { //Only send applicable updated to LightSwitch if (dv.label_name == "Basic") { int level = 0; int.TryParse(dv.value, out level); switch (dv.device.device_types.name) { case "SWITCH": return dv.device.friendly_name + "~" + dv.device.id + "~" + (level > 0 ? "255" : "0") + "~" + "BinarySwitch"; case "DIMMER": return dv.device.friendly_name + "~" + dv.device.id + "~" + level + "~" + "MultiLevelSwitch"; case "SENSOR": return dv.device.friendly_name + "~" + dv.device.id + "~" + level + "~" + "Sensor"; } } else if (dv.label_name == "Temperature") { if (dv.device.device_types.name.Equals("THERMOSTAT")) { int temp = 0; int.TryParse(dv.value, out temp); return dv.device.friendly_name + "~" + dv.device.id + "~" + temp + "~" + "Thermostat"; } } return string.Empty; }
public void DefineOrUpdateDeviceValue(device_values dv, bool IgnoreValueChange = false) { using (zvsEntities2 db = new zvsEntities2(zvsEntityControl.GetzvsConnectionString)) { device d = db.devices.FirstOrDefault(o => o.id == dv.device_id); if (d != null) { device_values existing_dv = d.device_values.FirstOrDefault(o => o.value_id == dv.value_id); string prev_value = string.Empty; if (existing_dv == null) { //NEW VALUE d.device_values.Add(dv); db.SaveChanges(); //Call Event dv.DeviceValueAdded(new System.EventArgs()); } else { //CHANGED VALUE prev_value = existing_dv.value; //values come in blank sometimes. If they are blank, keep the DB value. if (!IgnoreValueChange && !string.IsNullOrEmpty(dv.value)) existing_dv.value = dv.value; existing_dv.type = dv.type; existing_dv.label_name = dv.label_name; existing_dv.index = dv.index; existing_dv.genre = dv.genre; existing_dv.commandClassId = dv.commandClassId; existing_dv.read_only = dv.read_only; db.SaveChanges(); if (!IgnoreValueChange && !string.IsNullOrEmpty(dv.value) && (string.IsNullOrEmpty(prev_value) || !prev_value.Equals(dv.value))) { //Call Event dv.DeviceValueDataChanged(new device_values.ValueDataChangedEventArgs { device_value_id = existing_dv.id, previousValue = prev_value }); } } } else WriteToLog(Urgency.WARNING, string.Format("Device value change event on '{0}' occured but could not find a device value with id {1} in database.", dv.label_name, dv.value_id)); } }
void device_values_DeviceValueDataChangedEvent(object sender, device_values.ValueDataChangedEventArgs args) { if (this.InvokeRequired) this.Invoke(new device_values.ValueDataChangedEventHandler(device_values_DeviceValueDataChangedEvent), new object[] { sender, args }); else { using (zvsEntities2 db = new zvsEntities2(zvsEntityControl.GetzvsConnectionString)) { device_values dv = db.device_values.FirstOrDefault(v=> v.id == args.device_value_id); if (dv != null) { //GUI UPDATING if (dv.label_name == "Basic" || dv.label_name == "Temperature") { SyncdataListViewDevices(); } string device_name = "Unknown"; if (String.IsNullOrEmpty(dv.device.friendly_name)) device_name = "Device #" + dv.device_id; else device_name = dv.device.friendly_name; if (!String.IsNullOrEmpty(args.previousValue)) Logger.WriteToLog(Urgency.INFO, string.Format("{0} {1} changed from {2} to {3}.", device_name, dv.label_name, args.previousValue, dv.value), "EVENT"); else Logger.WriteToLog(Urgency.INFO, string.Format("{0} {1} changed to {2}.", device_name, dv.label_name, dv.value), "EVENT"); // Check to see if previous value == new value. If so then the value didn't actually change! if (args.previousValue != dv.value) { //Event Triggering foreach (device_value_triggers trigger in dv.device_value_triggers.Where(t => t.enabled)) { if (((device_value_triggers.TRIGGER_TYPE)trigger.trigger_type) == device_value_triggers.TRIGGER_TYPE.Basic) { switch ((device_value_triggers.TRIGGER_OPERATORS)trigger.trigger_operator) { case device_value_triggers.TRIGGER_OPERATORS.EqualTo: { if (dv.value.Equals(trigger.trigger_value)) { Logger.WriteToLog(Urgency.INFO, string.Format("Trigger '{0}' caused scene '{1}' to activate.", trigger.Name, trigger.scene.friendly_name), "TRIGGER"); Logger.WriteToLog(Urgency.INFO, trigger.scene.RunScene(db), "TRIGGER"); } break; } case device_value_triggers.TRIGGER_OPERATORS.GreaterThan: { double deviceValue = 0; double triggerValue = 0; if (double.TryParse(dv.value, out deviceValue) && double.TryParse(trigger.trigger_value, out triggerValue)) { if (deviceValue > triggerValue) { Logger.WriteToLog(Urgency.INFO, string.Format("Trigger '{0}' caused scene '{1}' to activate.", trigger.Name, trigger.scene.friendly_name), "TRIGGER"); Logger.WriteToLog(Urgency.INFO, trigger.scene.RunScene(db), "TRIGGER"); } } else Logger.WriteToLog(Urgency.INFO, string.Format("Trigger '{0}' failed to evaluate. Make sure the trigger value and device value is numeric.", trigger.Name), "TRIGGER"); break; } case device_value_triggers.TRIGGER_OPERATORS.LessThan: { double deviceValue = 0; double triggerValue = 0; if (double.TryParse(dv.value, out deviceValue) && double.TryParse(trigger.trigger_value, out triggerValue)) { if (deviceValue < triggerValue) { Logger.WriteToLog(Urgency.INFO, string.Format("Trigger '{0}' caused scene '{1}' to activate.", trigger.Name, trigger.scene.friendly_name), "TRIGGER"); Logger.WriteToLog(Urgency.INFO, trigger.scene.RunScene(db), "TRIGGER"); } } else Logger.WriteToLog(Urgency.INFO, string.Format("Trigger '{0}' failed to evaluate. Make sure the trigger value and device value is numeric.", trigger.Name), "TRIGGER"); break; } case device_value_triggers.TRIGGER_OPERATORS.NotEqualTo: { if (!dv.value.Equals(trigger.trigger_value)) { Logger.WriteToLog(Urgency.INFO, string.Format("Trigger '{0}' caused scene '{1}' to activate.", trigger.Name, trigger.scene.friendly_name), "TRIGGER"); Logger.WriteToLog(Urgency.INFO, trigger.scene.RunScene(db), "TRIGGER"); } break; } } } else { ScriptManager.RunScript(trigger); } } } } } } }
void device_values_DeviceValueDataChangedEvent(object sender, device_values.ValueDataChangedEventArgs args) { using (zvsEntities2 db = new zvsEntities2(zvsEntityControl.GetzvsConnectionString)) { device_values dv = db.device_values.FirstOrDefault(v => v.id == args.device_value_id); if (dv != null) { string[] objTypeValuespairs = GetSettingValue("JABBERNOTIFICATIONS").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string objTypeValuespair in objTypeValuespairs) { string thisEvent = dv.device.device_types.name + ":" + dv.label_name; if (thisEvent.Equals(objTypeValuespair.Trim())) SendMessage(dv.device.friendly_name + " " + dv.label_name + " changed to " + dv.value + "."); } } } }
void device_values_DeviceValueDataChangedEvent(object sender, device_values.ValueDataChangedEventArgs args) { this.BroadcastEvent("DeviceValueDataChanged", args.device_value_id.ToString(), args.previousValue.ToString()); }
void device_values_DeviceValueDataChangedEvent(object sender, device_values.ValueDataChangedEventArgs args) { if (IsReady) { using (zvsEntities2 db = new zvsEntities2(zvsEntityControl.GetzvsConnectionString)) { device_values dv = db.device_values.FirstOrDefault(v => v.id == args.device_value_id); if (dv != null) { string user_selected_announce_option = GetSettingValue("ANNOUCEOPTIONS"); if (user_selected_announce_option == "Switch Level" || user_selected_announce_option == "All of the above") { if (dv.device.device_types.name == "SWITCH" && dv.label_name == "Basic") { _synth.SpeakAsync(dv.device.friendly_name + " switched " + (dv.value == "255" ? "On" : "Off") + "."); } } if (user_selected_announce_option == "Dimmer Level" || user_selected_announce_option == "All of the above") { if (dv.device.device_types.name == "DIMMER" && dv.label_name == "Level") { _synth.SpeakAsync(dv.device.friendly_name + " " + dv.label_name + " changed to " + dv.value + "."); } } if (user_selected_announce_option == "Thermostat Operating State and Temp" || user_selected_announce_option == "All of the above") { if (dv.device.device_types.name == "THERMOSTAT" && dv.label_name == "Temperature") { _synth.SpeakAsync(dv.device.friendly_name + " " + dv.label_name + " changed to " + dv.value + "."); } if (dv.device.device_types.name == "THERMOSTAT" && dv.label_name == "Operating State") { _synth.SpeakAsync(dv.device.friendly_name + " " + dv.label_name + " changed to " + dv.value + "."); } } if (user_selected_announce_option == "Custom") { string[] objTypeValuespairs = GetSettingValue("CUSTOMVALUES").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string objTypeValuespair in objTypeValuespairs) { string thisEvent = dv.device.device_types.name + ":" + dv.label_name; if (thisEvent.Equals(objTypeValuespair.Trim())) _synth.SpeakAsync(dv.device.friendly_name + " " + dv.label_name + " changed to " + dv.value + "."); } } } } } }
/// <summary> /// Deprecated Method for adding a new object to the device_values EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddTodevice_values(device_values device_values) { base.AddObject("device_values", device_values); }
/// <summary> /// Create a new device_values object. /// </summary> /// <param name="id">Initial value of the id property.</param> /// <param name="device_id">Initial value of the device_id property.</param> /// <param name="read_only">Initial value of the read_only property.</param> public static device_values Createdevice_values(global::System.Int64 id, global::System.Int64 device_id, global::System.Boolean read_only) { device_values device_values = new device_values(); device_values.id = id; device_values.device_id = device_id; device_values.read_only = read_only; return device_values; }