Example #1
0
        public string InitZapi(string sZibaseIP, string sLocalIP)
        {
            ZBClass   ZBS         = new ZBClass();
            IPAddress IpAddr      = null;
            string    sZibaseName = "";

            ZBS.header       = GetBytesFromString("ZSIG");
            ZBS.command      = 13;
            ZBS.alphacommand = GetBytesFromString("ZapiInit");
            ZBS.label_base   = GetBytesFromString("");

            ZBS.serial = 0;

            // If (sAddr = "10.40.1.255") Then
            //       IpAdd(i) = IPAddress.Parse("192.168.1.16")
            // End If

            IpAddr = IPAddress.Parse(sLocalIP);

            byte[] temp = IpAddr.GetAddressBytes();
            Array.Reverse(temp);
            ZBS.param1 = BitConverter.ToUInt32(temp, 0);
            ZBS.param2 = my_port;
            ZBS.param3 = 0;
            ZBS.param4 = 0;

            byte[] data = null;
            UDPDataTransmit(ZBS.GetBytes(), ref data, sZibaseIP, 49999);

            //Detection d'une nouvelle zibase
            if ((data != null))
            {
                if (data.Length >= 70)
                {
                    ZBClass ZBSrcv = new ZBClass();
                    ZBSrcv.SetData(data);
                    sZibaseName = System.Text.Encoding.Default.GetString(ZBSrcv.label_base);
                    int iPos = Strings.InStr(sZibaseName, Strings.Chr(0));
                    if (iPos > 0)
                    {
                        sZibaseName = sZibaseName.Substring(iPos - 1); // Strings.Left(sZibaseName, iPos - 1);
                    }
                }
            }

            return(sZibaseName);
        }
 public void RunScenario(uint ScenarioNumber)
 {
     m_Zibase.RunScenario((int)ScenarioNumber);
     return;
     //              Old Method
     ZBClass class2 = new ZBClass();
     class2.header = class2.GetBytesFromString("ZSIG");
     class2.command = 11;
     class2.alphacommand = class2.GetBytesFromString("SendCmd");
     class2.label_base = class2.GetBytesFromString("");
     class2.command_text = class2.GetBytesFromString("");
     class2.serial = 0;
     class2.param1 = 1;
     class2.param2 = ScenarioNumber;
     class2.param3 = 0;
     class2.param4 = 0;
     byte[] rBuff = null;
     byte[] bytes = class2.GetBytes();
     ZibaseDll.ZBClass zb = new ZibaseDll.ZBClass();
     string ipAddress = LongToIP(m_ZibaseInfo.lIpAddress);
     zb.UDPDataTransmit(bytes, ref rBuff, ipAddress, 0xc34f);
 }
        public void SetVirtualProbeValue(string sZibaseName, UInt16 wSensorID, VirtualProbeType SensorType,
            UInt32 dwValue1, UInt32 dwValue2, UInt32 dwLowBat)
        {
            var ZBS = new ZBClass();
            //ZBClass ZBSrcv = new ZBClass();
            int iSensorType = 0;
            UInt32 dwSensorID = default(UInt32);

            switch (SensorType)
            {
                    // Simule un OWL
                case VirtualProbeType.POWER_SENSOR:
                    iSensorType = DOMO_EVENT_ACTION_OWL_SIGNAL_32B_SENSOR_CODE;
                    dwSensorID = (uint) 0x2 << 16 | wSensorID;

                    break;
                    // Simule une THGR228
                case VirtualProbeType.TEMP_HUM_SENSOR:
                    iSensorType = DOMO_EVENT_ACTION_OREGON_SIGNAL_32B_SENSOR_CODE;
                    dwSensorID = (uint) (0x1a2d << 16) | wSensorID;

                    break;
                    // Simule une THN132
                case VirtualProbeType.TEMP_SENSOR:
                    iSensorType = DOMO_EVENT_ACTION_OREGON_SIGNAL_32B_SENSOR_CODE;
                    dwSensorID = (uint) (0x1 << 16) | wSensorID;

                    break;
                    // Simule un pluviometre
                case VirtualProbeType.WATER_SENSOR:
                    iSensorType = DOMO_EVENT_ACTION_OREGON_SIGNAL_32B_SENSOR_CODE;
                    dwSensorID = (uint) (0x2a19 << 16) | wSensorID;
                    break;
            }

            ZBS.header = ZBS.GetBytesFromString("ZSIG");
            ZBS.command = 11;
            ZBS.alphacommand = ZBS.GetBytesFromString("VProbe");
            ZBS.label_base = ZBS.GetBytesFromString("");

            ZBS.serial = 0;

            ZBS.param1 = 6;
            ZBS.param2 = dwSensorID;
            ZBS.param3 = dwValue1 | (dwValue2 << 16) | (dwLowBat << 24);
            ZBS.param4 = (uint) iSensorType;

            SendToZibase(sZibaseName, ZBS);
        }
        public void SetVar(string sZibaseName, UInt32 dwNumVar, UInt32 dwVal)
        {
            var ZBS = new ZBClass();

            ZBS.header = ZBS.GetBytesFromString("ZSIG");
            ZBS.command = 11;
            ZBS.alphacommand = ZBS.GetBytesFromString("SetVar");
            ZBS.label_base = ZBS.GetBytesFromString("");

            ZBS.serial = 0;

            ZBS.param1 = 5;
            ZBS.param2 = dwVal;
            ZBS.param3 = CMD_TYPE_WRITE_VAR;
            ZBS.param4 = dwNumVar;

            SendToZibase(sZibaseName, ZBS);
        }
        public void SetPlatform(string sZibaseName, UInt32 dwPlatform, UInt32 dwPasswordIn, UInt32 dwPasswordOut)
        {
            var ZBS = new ZBClass();

            ZBS.header = ZBS.GetBytesFromString("ZSIG");
            ZBS.command = 11;
            ZBS.alphacommand = ZBS.GetBytesFromString("SetPlatform");
            ZBS.label_base = ZBS.GetBytesFromString("");

            ZBS.serial = 0;

            ZBS.param1 = 7;
            ZBS.param2 = dwPasswordIn;
            ZBS.param3 = dwPasswordOut;
            ZBS.param4 = dwPlatform;

            SendToZibase(sZibaseName, ZBS);
        }
        public uint SendToZibase(String ZibaseName, ZBClass SendBuffer)
        {
            byte[] dataRcv = null;
            var ZibaseReceiveBuf = new ZBClass();
            IEnumerable<ZibaseInfo> q = (from c in m_ZibaseList
                                         where c.Value.sLabelBase == ZibaseName || String.IsNullOrEmpty(ZibaseName)
                                         select c.Value);

            if (q.Any())
            {
                ZibaseInfo zInfo = q.First();
                String ZibaseIP = zInfo.GetIPAsString();
                m_Zbs.UDPDataTransmit(SendBuffer.GetBytes(), ref dataRcv, ZibaseIP, 49999);
                ZibaseReceiveBuf.SetData(dataRcv);
                return ZibaseReceiveBuf.param1;
            }
            return 0;
        }
        public void SendCommand(string sZibaseName, string sAddress, State iState, int iDim = 0,
            Protocol iProtocol = Protocol.PROTOCOL_CHACON, int iNbBurst = 1)
        {
            if ((Strings.Len(sAddress) < 2))
                return;

            var ZBS = new ZBClass();

            ZBS.header = ZBS.GetBytesFromString("ZSIG");
            ZBS.command = 11;
            ZBS.alphacommand = ZBS.GetBytesFromString("SendX10");
            ZBS.label_base = ZBS.GetBytesFromString("");

            ZBS.serial = 0;
            ZBS.param1 = 0;

            if (iState == State.STATE_DIM & iDim == 0)
            {
                iState = State.STATE_OFF;
            }

            switch (iState)
            {
                case State.STATE_OFF:
                    ZBS.param2 = 0;
                    break;
                case State.STATE_ON:
                    ZBS.param2 = 1;
                    break;
                case State.STATE_DIM:
                    ZBS.param2 = 3;
                    break;
            }

            // DEFAULT BROADCAST (RF X10, CHACON, DOMIA) : 0
            // VISONIC433:   1,          ( frequency : device RF LOW, 310...418Mhz band))
            // VISONIC868:   2,          (  frequency :  device RF HIGH, 868 Mhz Band)
            // CHACON (32B) (ChaconV2) :  3
            // DOMIA (24B) ( =Chacon V1 + low cost shit-devices):    4
            // RF X10 :    5
            ZBS.param2 = (uint) (ZBS.param2 | (((int) iProtocol & 0xff) << 8));

            // Dim
            if ((iState == State.STATE_DIM))
            {
                ZBS.param2 = (uint) (ZBS.param2 | ((iDim & 0xff) << 16));
            }

            if ((iNbBurst != 1))
            {
                ZBS.param2 = (uint) (ZBS.param2 | ((iNbBurst & 0xff) << 24));
            }

            string sHouse = Strings.Mid(sAddress, 1, 1);
            string sCode = Strings.Mid(sAddress, 2);

            ZBS.param3 = (uint) Convert.ToInt32(sCode) - 1;
            ZBS.param4 = (uint) Strings.Asc(sHouse[0]) - 65;

            SendToZibase(sZibaseName, ZBS);
        }
        public bool GetX10State(string sZibaseName, char house, byte unit)
        {
            var ZBS = new ZBClass();

            ZBS.header = ZBS.GetBytesFromString("ZSIG");
            ZBS.command = 11;
            ZBS.alphacommand = ZBS.GetBytesFromString("GetX10");
            ZBS.label_base = ZBS.GetBytesFromString("");

            ZBS.serial = 0;

            ZBS.param1 = 5;
            ZBS.param2 = 0;
            ZBS.param3 = CMD_READ_X10;
            ZBS.param4 = (uint) ((Strings.Asc(house) - Strings.Asc('A')) << 8) | unit;

            return SendToZibase(sZibaseName, ZBS) == 1;
        }
        public UInt32 GetVar(string sZibaseName, UInt32 dwNumVar)
        {
            var ZBS = new ZBClass();

            ZBS.header = ZBS.GetBytesFromString("ZSIG");
            ZBS.command = 11;
            ZBS.alphacommand = ZBS.GetBytesFromString("GetVar");
            ZBS.label_base = ZBS.GetBytesFromString("");

            ZBS.serial = 0;

            ZBS.param1 = 5;
            ZBS.param2 = 0;
            ZBS.param3 = CMD_READ_VAR;
            ZBS.param4 = dwNumVar;

            return SendToZibase(sZibaseName, ZBS);
        }
        public void ExecScript(string sZibaseName, string sScript)
        {
            sScript = "cmd:" + sScript;

            if ((Strings.Len(sScript) > 96))
                return;

            var ZBS = new ZBClass();

            ZBS.header = ZBS.GetBytesFromString("ZSIG");
            ZBS.command = 16;
            ZBS.alphacommand = ZBS.GetBytesFromString("SendCmd");
            ZBS.label_base = ZBS.GetBytesFromString("");

            ZBS.command_text = ZBS.GetBytesFromString(sScript);

            ZBS.serial = 0;
            ZBS.param1 = 0;
            ZBS.param2 = 0;
            ZBS.param3 = 0;
            ZBS.param4 = 0;
            SendToZibase(sZibaseName, ZBS);
        }
        public string InitZapi(string sZibaseIP, string sLocalIP)
        {
            ZBClass ZBS = new ZBClass();
            IPAddress IpAddr = null;
            string sZibaseName = "";

            ZBS.header = GetBytesFromString("ZSIG");
            ZBS.command = 13;
            ZBS.alphacommand = GetBytesFromString("ZapiInit");
            ZBS.label_base = GetBytesFromString("");

            ZBS.serial = 0;

            // If (sAddr = "10.40.1.255") Then
            //       IpAdd(i) = IPAddress.Parse("192.168.1.16")
            // End If

            IpAddr = IPAddress.Parse(sLocalIP);

            byte[] temp = IpAddr.GetAddressBytes();
            Array.Reverse(temp);
            ZBS.param1 = BitConverter.ToUInt32(temp, 0);
            ZBS.param2 = my_port;
            ZBS.param3 = 0;
            ZBS.param4 = 0;

            byte[] data = null;
            UDPDataTransmit(ZBS.GetBytes(), ref data, sZibaseIP, 49999);

            //Detection d'une nouvelle zibase
            if ((data != null))
            {
                if (data.Length >= 70)
                {
                    ZBClass ZBSrcv = new ZBClass();
                    ZBSrcv.SetData(data);
                    sZibaseName = System.Text.Encoding.Default.GetString(ZBSrcv.label_base);
                    int iPos = Strings.InStr(sZibaseName, Strings.Chr(0));
                    if (iPos > 0)
                        sZibaseName = sZibaseName.Substring(iPos - 1); // Strings.Left(sZibaseName, iPos - 1);
                }
            }

            return sZibaseName;
        }