Пример #1
0
        public MockOpenSprinklerService(string hostname, string password)
            : base(null)
        {
            m_hostname     = hostname;
            m_password     = password;
            controllerInfo = CreateFromJson <MockControllerInfo>("{\"fwv\":207,\"tz\":16,\"ntp\":0,\"dhcp\":1,\"ip1\":192,\"ip2\":168,\"ip3\":1,\"ip4\":22,\"gw1\":192,\"gw2\":168,\"gw3\":1,\"gw4\":1,\"hp0\":80,\"hp1\":0,\"ar\":0,\"ext\":0,\"seq\":1,\"sdt\":0,\"mas\":0,\"mton\":0,\"mtof\":0,\"urs\":0,\"rso\":0,\"wl\":100,\"stt\":10,\"ipas\":0,\"devid\":0,\"con\":110,\"lit\":100,\"dim\":5,\"ntp1\":204,\"ntp2\":9,\"ntp3\":54,\"ntp4\":119,\"reset\":0}");
            controllerInfo.SetTimeZone(5);
            programs = CreateFromJson <ProgramDetailsInfo>("{\"nprogs\":5,\"nboards\":1,\"mnp\":53,\"pd\":[[1,255,1,270,360,1439,600,8],[1,255,1,270,480,1439,600,16],[1,255,1,270,360,1439,480,32],[1,255,1,270,480,1439,480,64],[1,127,1,270,600,1439,720,128]]}");
            var progs = programs.Programs as IList <Program>;

            progs[2].Duration = TimeSpan.FromMinutes(30);


            statuses   = CreateFromJson <StationStatusInfo>("{\"sn\":[0,0,0,1,0,1,0,0],\"nstations\":8}");
            statusInfo = CreateFromJson <StationInfo>("{\"snames\":[\"Raised beds\",\"Planters S\",\"Planters N\",\"Backyard lawn E\",\"Backyard lawn W\",\"Frontyard lawn\",\"Sidewalk lawn\",\"Planters E\"],\"masop\":[255],\"ignore_rain\":[128],\"maxlen\":16}");
        }
Пример #2
0
        /// <summary>
        /// 根据CURRENTData
        /// </summary>
        /// <param name="subcenter"></param>
        /// <returns></returns>
        public static List <StationStatusInfo> ListStationStatus(int subcenter)
        {
            List <StationStatusInfo>    result          = new List <StationStatusInfo>();
            List <CurrentData>          resultList      = new List <CurrentData>();
            List <CurrentData>          currentdataList = new List <CurrentData>();
            Dictionary <string, object> param           = new Dictionary <string, object>();
            Dictionary <string, string> paramInner      = new Dictionary <string, string>();

            paramInner["StationID"] = "";
            string url     = "http://127.0.0.1:8088/currentdata/getCurrentdata";
            string jsonStr = HttpHelper.SerializeDictionaryToJsonString(paramInner);

            param["currentdata"] = jsonStr;
            try
            {
                string resultJson = HttpHelper.Post(url, param);
                currentdataList = (List <CurrentData>)HttpHelper.JsonDeserialize <List <CurrentData> >(resultJson, new List <CurrentData>());
            }
            catch (Exception e)
            {
                Debug.WriteLine("查询实时数据失败");
                throw e;
            }
            //1.获取当前所有的站点,缓存有则直接使用,没有则
            if (StationHelper.stationInfoList == null || StationHelper.stationInfoList.Count == 0)
            {
                StationHelper.getStationInfoList();
            }
            //2.将已有最新数据的站点信息获取,并放入DIC
            Dictionary <string, CurrentData> currentDataDic = new Dictionary <string, CurrentData>();

            for (int i = 0; i < currentdataList.Count; i++)
            {
                if (int.Parse(currentdataList[i].CType) <= 10)
                {
                    if (!currentDataDic.ContainsKey(currentdataList[i].StationID))
                    {
                        currentDataDic[currentdataList[i].StationID] = currentdataList[i];
                    }
                }
            }
            //3.获取在线信息列表
            //TODO
            //获取在线列表信息,默认全部是在线的,1代表在线 0代表离线


            //4.根据站点信息 和  站点已有数据信息获取站点状态信息
            //0代表数据警告  1代表数据正常  -1代表数据异常
            //异常原因 0代表通讯故障 1代表电池欠压 2代表设备故障
            for (int i = 0; i < StationHelper.stationInfoList.Count; i++)
            {
                if (StationHelper.stationInfoList[i].stationType == StationTypes.rain2Station)
                {
                    continue;
                }
                StationStatusInfo stationStatusInfo = new StationStatusInfo();
                //5.1 如果有数据
                if (currentDataDic.ContainsKey(StationHelper.stationInfoList[i].stationId))
                {
                    DateTime dataTime = currentDataDic[StationHelper.stationInfoList[i].stationId].DataTime;
                    int      hours    = (DateTime.Now - dataTime).Hours;
                    stationStatusInfo.stationID   = StationHelper.stationInfoList[i].stationId;
                    stationStatusInfo.dataTime    = currentDataDic[StationHelper.stationInfoList[i].stationId].DataTime;
                    stationStatusInfo.stationName = StationHelper.stationInfoList[i].stationName;
                    stationStatusInfo.voltage     = currentDataDic[StationHelper.stationInfoList[i].stationId].Voltage;
                    if (hours >= 2)
                    {
                        stationStatusInfo.onlineState = "1";
                        if (stationStatusInfo.onlineState == "0")
                        {
                            stationStatusInfo.errorReason = "0";
                        }
                        else if (stationStatusInfo.voltage < (decimal)11.5)
                        {
                            stationStatusInfo.errorReason = "1";
                        }
                        else
                        {
                            stationStatusInfo.errorReason = "2";
                        }
                        stationStatusInfo.state = "-1";
                    }
                    else if (hours >= 1)
                    {
                        stationStatusInfo.onlineState = "1";
                        if (stationStatusInfo.onlineState == "0")
                        {
                            stationStatusInfo.errorReason = "0";
                        }
                        else if (stationStatusInfo.voltage < (decimal)11.5)
                        {
                            stationStatusInfo.errorReason = "1";
                        }
                        else
                        {
                            stationStatusInfo.errorReason = "2";
                        }
                        stationStatusInfo.state = "0";
                    }
                    else
                    {
                        stationStatusInfo.onlineState = "1";
                        stationStatusInfo.errorReason = "";
                        stationStatusInfo.state       = "1";
                    }
                }
                //如果无数据
                else
                {
                    stationStatusInfo.stationID   = StationHelper.stationInfoList[i].stationId;
                    stationStatusInfo.stationName = StationHelper.stationInfoList[i].stationName;
                    stationStatusInfo.dataTime    = null;
                    stationStatusInfo.voltage     = null;
                    stationStatusInfo.onlineState = "1";
                    stationStatusInfo.errorReason = "2";
                    stationStatusInfo.state       = "-1";
                }
                result.Add(stationStatusInfo);
            }


            return(result);
        }