zwaveupnpbridgeform.cs
来自「zwave 无线通讯协议 PC controller 控制器源码」· CS 代码 · 共 1,362 行 · 第 1/5 页
CS
1,362 行
ClosePort();
ZWaveSaveToFile();
foreach (ZensysBridgedDevice zenDev in UPnPdownDeviceList)
{
ZWaveUPnPDeviceStop(zenDev);
ZWaveNodes.Remove(zenDev.NodeId);
UPnPdownDeviceList.Remove(zenDev);
}
/* Remove all devices */
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
catch (Exception)
{
}
}
#region UPnP
private void ZensysUPnPAddDevice(ZensysUPnPDevice device)
{
try
{
UPnPdownDeviceList.Add(device);
if (device.NodeId != 0)
{
((ZWaveNode)ZWaveNodes[device.NodeId]).Dev = device;
((ZWaveNode)ZWaveNodes[device.NodeId]).Type = (byte)device.DeviceZWaveType;
}
}
catch (Exception e)
{
mainLog.Write("ZensysUPnPAddDevice: Exception - " + e.Message);
}
}
private void ZWaveUPnPDeviceStart(ZensysUPnPDevice device)
{
string[] itemString = new string[5];
itemString[0] = device.NodeId.ToString("000");
switch (device.DeviceZWaveType)
{
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_BINARY:
itemString[1] = "Binary Switch";
itemString[2] = "BinaryLight";
itemString[3] = device.Device.FriendlyName;
break;
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_MULTILEVEL:
itemString[1] = "Multilevel Switch";
itemString[2] = "BinaryLight";
itemString[3] = device.Device.FriendlyName;
break;
default:
itemString[1] = "Unknown";
itemString[2] = "Unknown";
itemString[3] = device.Device.FriendlyName;
break;
}
itemString[4] = (device.BridgeType == ZensysUPnPDevice.ZWaveBridgeTypes.UPnP) ? "Down" : "Up";
ListViewItem item = new ListViewItem(itemString);
item.Tag = device;
/* Update device list */
listViewDeviceList.Items.Add(item);
/* Start device */
device.Start();
statusBarMain.Panels[2].Text = " Bridged Devices : " + listViewDeviceList.Items.Count.ToString("");
foreach (ListViewItem lvitem in listViewZWaveNodes.Items)
{
if ((lvitem.Tag != null) && ((device == lvitem.Tag) || (((ZensysBridgedDevice)lvitem.Tag).NodeId == device.NodeId)))
{
lvitem.SubItems[3].Text = device.BridgeType.ToString("g");
switch (device.BridgeType)
{
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP:
break;
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP2ZWave:
lvitem.Tag = device;
break;
default:
break;
}
break;
}
}
}
private void ZWaveUPnPDeviceStart(ZensysUPnPAvRendererDevice zStore)
{
string[] itemString = new string[5];
itemString[0] = zStore.NodeId.ToString("000");
Node node = applicationLayer.GetNode(zStore.NodeId);
switch ((ZensysBridgedDevice.ZWaveDeviceTypes)node.Generic)
{
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_BINARY:
itemString[1] = "Binary Switch";
itemString[2] = zStore.DeviceUPnPType.ToString();
itemString[3] = (zStore.Device as Intel.UPNP.UPnPDevice).FriendlyName;
break;
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_MULTILEVEL:
itemString[1] = "Multilevel Switch";
itemString[2] = zStore.DeviceUPnPType.ToString();
itemString[3] = (zStore.Device as Intel.UPNP.UPnPDevice).FriendlyName;
break;
default:
itemString[1] = "Unknown";
itemString[2] = zStore.DeviceUPnPType.ToString();
itemString[3] = zStore.Device.FriendlyName;
break;
}
itemString[4] = "Up";
ListViewItem item = new ListViewItem(itemString);
item.Tag = zStore;
/* Update device list */
listViewDeviceList.Items.Add(item);
/* Start device */
zStore.Start();
statusBarMain.Panels[2].Text = " Bridged Devices : " + listViewDeviceList.Items.Count.ToString("");
foreach (ListViewItem lvitem in listViewZWaveNodes.Items)
{
try
{
if (((lvitem.Tag != null) && (zStore == lvitem.Tag)) || (lvitem.Text == zStore.NodeId.ToString("000")))
{
lvitem.SubItems[3].Text = zStore.BridgeType.ToString("g");
switch (zStore.BridgeType)
{
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP:
break;
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP2ZWave:
lvitem.Tag = zStore;
break;
default:
break;
}
break;
}
}
catch (Exception)
{
}
}
}
public void ZWaveUPnPDeviceStop(ZensysBridgedDevice dev)
{
if (dev != null)
{
foreach (ListViewItem item in listViewDeviceList.Items)
{
if (dev == item.Tag)
{
listViewDeviceList.Items.Remove(item);
break;
}
}
dev.Stop();
foreach (ListViewItem item in listViewZWaveNodes.Items)
{
if (dev == item.Tag)
{
if (ZWaveNodes.ContainsKey(dev.NodeId))
{
try
{
Node nid = applicationLayer.GetNode(dev.NodeId);
if (nid != null)
{
if (nid.IsVirtual)
{
item.SubItems[3].Text = "idle up";
break;
}
}
}
catch (Exception ex)
{
mainLog.Write("Exception_ ZWaveUPnPDeviceStop (" + dev.NodeId + ") " + ex.Message);
}
}
item.SubItems[3].Text = "idle down";
break;
}
}
}
statusBarMain.Panels[2].Text = " Bridged Devices : " + listViewDeviceList.Items.Count.ToString("");
}
private ZensysUPnPDevice ZensysUPnPAddRootDevice(ZensysBridgedDevice.ZWaveDeviceTypes deviceType, string friendlyName, byte Id, ZensysBridgedDevice.ZWaveBridgeDeviceState state)
{
device = null;
switch (deviceType)
{
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_BINARY: /* It is a Binary Light device... */
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_MULTILEVEL: /* It is a Multilevel Light device... */
{
/* Create new Light device */
device = new ZensysUPnPLightDevice(deviceType, friendlyName, Id, mainLog);
((ZensysUPnPLightDevice)device).bridgeSubscriberEvent += new ZensysBridgedDevice.BridgeEvent_SubscriberHandler(ZensysBridge_subscriberEvent);
device.State = state;
break;
}
default:
mainLog.Write("Unknown Z-Wave Device Type " + deviceType.ToString());
return (ZensysUPnPDevice)null;
}
if (device != null)
{
ZensysUPnPAddDevice(device);
/* Start it */
if (device.State == ZensysBridgedDevice.ZWaveBridgeDeviceState.Started)
{
ZWaveUPnPDeviceStart(device);
}
}
return device;
}
#endregion UPnP
private void ZensysAddDevice(byte node, byte nodeType, bool down, bool bridgeIt)
{
string nameStr;
Node nodeInf = applicationLayer.GetNode(node);
if (nodeInf == null)
{
return;
}
if (nodeType == 0)
{
nodeType = nodeInf.Generic;
}
device = null;
if (ZWaveNodes.ContainsKey(node))
{
if (((ZWaveNode)ZWaveNodes[node]).Dev != null)
{
((ZWaveNode)ZWaveNodes[node]).DevBridge.Stop();
}
ZWaveNodes.Remove(node);
}
ZWaveNodes.Add(node, new ZWaveNode(node, nodeType, null, nodeInf.IsVirtual));
switch ((ZensysBridgedDevice.ZWaveDeviceTypes)nodeType)
{
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_BINARY:
{
nameStr = "Binary Light " + node.ToString("000") + " (" + labelHomeID.Text + ", " + labelNodeID.Text + ")";
if (down)
{
device = ZensysUPnPAddRootDevice((ZensysBridgedDevice.ZWaveDeviceTypes)nodeType, nameStr, node, (bridgeIt) ? ZensysBridgedDevice.ZWaveBridgeDeviceState.Started : ZensysBridgedDevice.ZWaveBridgeDeviceState.Stopped);
}
break;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?