Exemple #1
0
        public Counters ActualizeFromLastAzureRow(ref string pSwitchMessage)
        {
#if DebugPrint
            Debug.Print("\r\nGoing to query for Entities");
#endif
            // Now we query for the last row of the table as selected by the query string "$top=1"
            // (OLS means Of the Last Send)
            string       readTimeOLS = DateTime.Now.ToString(); // shall hold send time of the last entity on Azure
            const string noTime      = "000-00:00:00";
            string       onTimeDay   = noTime;
            string       onTimeWeek  = noTime;
            string       onTimeMonth = noTime;
            string       onTimeYear  = noTime;
            string       cD          = "0";
            string       cW          = "0";
            string       cM          = "0";
            string       cY          = "0";


            ArrayList queryArrayList = new ArrayList();
            //myAzureSendManager_Burner = new AzureSendManager_Burner(myCloudStorageAccount, timeZoneOffset, _tablePreFix, _sensorValueHeader, _socketSensorHeader, caCerts, _timeOfLastSend, sendInterval, _azureSends, _AzureDebugMode, _AzureDebugLevel, IPAddress.Parse(fiddlerIPAddress), pAttachFiddler: attachFiddler, pFiddlerPort: fiddlerPort, pUseHttps: Azure_useHTTPS);
            try { GHI.Processor.Watchdog.ResetCounter(); }
            catch { };
            HttpStatusCode queryEntityReturnCode = queryTableEntities("$top=1", out queryArrayList);

            if (queryEntityReturnCode == HttpStatusCode.OK)
            {
#if DebugPrint
                Debug.Print("Query for entities completed. HttpStatusCode: " + queryEntityReturnCode.ToString());
#endif
                try { GHI.Processor.Watchdog.ResetCounter(); }
                catch { };
                if (queryArrayList.Count != 0)
                {
                    var    entityHashtable = queryArrayList[0] as Hashtable;
                    string lastBootReason  = entityHashtable["bR"].ToString();
                    if (lastBootReason == "X")     // reboot was forced by the program (not enougth free ram)
                    {
                        _lastResetCause = "ForcedReboot";
                        try
                        {
                            _forcedReboots   = int.Parse(entityHashtable["forcedReboots"].ToString()) + 1;
                            _badReboots      = int.Parse(entityHashtable["badReboots"].ToString());
                            _azureSends      = int.Parse(entityHashtable["Sends"].ToString()) + 1;
                            _azureSendErrors = int.Parse(entityHashtable["sendErrors"].ToString());
                        }
                        catch { }
                    }
                    else
                    {
                        try
                        {
                            _forcedReboots   = int.Parse(entityHashtable["forcedReboots"].ToString());
                            _badReboots      = int.Parse(entityHashtable["badReboots"].ToString()) + 1;
                            _azureSends      = int.Parse(entityHashtable["Sends"].ToString()) + 1;
                            _azureSendErrors = int.Parse(entityHashtable["sendErrors"].ToString());
                        }
                        catch { }
                    }

                    try
                    {
                        onTimeDay   = entityHashtable["OnTimeDay"].ToString();
                        onTimeWeek  = entityHashtable["OnTimeWeek"].ToString();
                        onTimeMonth = entityHashtable["OnTimeMonth"].ToString();
                        onTimeYear  = entityHashtable["OnTimeYear"].ToString();
                        cD          = entityHashtable["CD"].ToString();
                        cW          = entityHashtable["CW"].ToString();
                        cM          = entityHashtable["CM"].ToString();
                        cY          = entityHashtable["CY"].ToString();
                    }
                    catch { }

                    _onTimeDay = new TimeSpan(int.Parse(onTimeDay.Substring(0, 3)), int.Parse(onTimeDay.Substring(4, 2)), int.Parse(onTimeDay.Substring(7, 2)), int.Parse(onTimeDay.Substring(10, 2)));

                    readTimeOLS = entityHashtable["SampleTime"].ToString();

                    try
                    {
                        _timeOfLastSend = new DateTime(int.Parse(readTimeOLS.Substring(6, 4)), int.Parse(readTimeOLS.Substring(0, 2)),
                                                       int.Parse(readTimeOLS.Substring(3, 2)), int.Parse(readTimeOLS.Substring(11, 2)),
                                                       int.Parse(readTimeOLS.Substring(14, 2)), int.Parse(readTimeOLS.Substring(17, 2)));

                        // calculate back to the time without dayLightSavingTime offset
                        _timeOfLastSend = _timeOfLastSend.AddMinutes(-DayLihtSavingTime.DayLightTimeOffset(dstStart, dstEnd, dstOffset, _timeOfLastSend, true));
                    }
                    catch
                    {
                        _timeOfLastSend = DateTime.Now.AddHours(-1.0);  // if something goes wrong, take DateTime.Now minus 1 hour;
                    }

                    try
                    {
                        if (_timeOfLastSend.Day == _timeOfLastSensorEvent.Day)
                        {
                            _onTimeDay   = new TimeSpan(int.Parse(onTimeDay.Substring(0, 3)), int.Parse(onTimeDay.Substring(4, 2)), int.Parse(onTimeDay.Substring(7, 2)), int.Parse(onTimeDay.Substring(10, 2)));
                            _onTimeWeek  = new TimeSpan(int.Parse(onTimeWeek.Substring(0, 3)), int.Parse(onTimeWeek.Substring(4, 2)), int.Parse(onTimeWeek.Substring(7, 2)), int.Parse(onTimeWeek.Substring(10, 2)));
                            _onTimeMonth = new TimeSpan(int.Parse(onTimeMonth.Substring(0, 3)), int.Parse(onTimeMonth.Substring(4, 2)), int.Parse(onTimeMonth.Substring(7, 2)), int.Parse(onTimeMonth.Substring(10, 2)));
                            _onTimeYear  = new TimeSpan(int.Parse(onTimeYear.Substring(0, 3)), int.Parse(onTimeYear.Substring(4, 2)), int.Parse(onTimeYear.Substring(7, 2)), int.Parse(onTimeYear.Substring(10, 2)));
                            _CD          = int.Parse(cD);
                            _CW          = int.Parse(cW);
                            _CM          = int.Parse(cM);
                            _CY          = int.Parse(cY);
                        }
                        else
                        {
                            _onTimeDay = new TimeSpan(0);
                            _CD        = 0;
                            if (!((_timeOfLastSend.DayOfWeek == DayOfWeek.Sunday) && (_timeOfLastSensorEvent.DayOfWeek == DayOfWeek.Monday)))
                            {
                                _onTimeWeek = new TimeSpan(int.Parse(onTimeWeek.Substring(0, 3)), int.Parse(onTimeWeek.Substring(4, 2)), int.Parse(onTimeWeek.Substring(7, 2)), int.Parse(onTimeWeek.Substring(10, 2)));
                                _CW         = int.Parse(cW);
                            }
                            else
                            {
                                _onTimeWeek = new TimeSpan(0);
                                _CW         = 0;
                            }
                            if (_timeOfLastSend.Month == _timeOfLastSensorEvent.Month)
                            {
                                _onTimeMonth = new TimeSpan(int.Parse(onTimeMonth.Substring(0, 3)), int.Parse(onTimeMonth.Substring(4, 2)), int.Parse(onTimeMonth.Substring(7, 2)), int.Parse(onTimeMonth.Substring(10, 2)));
                                _CM          = int.Parse(cM);
                            }
                            else
                            {
                                _onTimeMonth = new TimeSpan(0);
                                _CM          = 0;
                            }
                            if (_timeOfLastSend.Year == _timeOfLastSensorEvent.Year)
                            {
                                _onTimeYear = new TimeSpan(int.Parse(onTimeYear.Substring(0, 3)), int.Parse(onTimeYear.Substring(4, 2)), int.Parse(onTimeYear.Substring(7, 2)), int.Parse(onTimeYear.Substring(10, 2)));
                                _CY         = int.Parse(cY);
                            }
                            else
                            {
                                _onTimeYear = new TimeSpan(0);
                                _CY         = 0;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        _onTimeDay   = new TimeSpan(0);
                        _onTimeWeek  = new TimeSpan(0);
                        _onTimeMonth = new TimeSpan(0);
                        _onTimeYear  = new TimeSpan(0);
                        _CD          = 0;
                        _CW          = 0;
                        _CM          = 0;
                        _CY          = 0;
                    }
                }
                else
                {
                    _timeOfLastSend = DateTime.Now;
                }
            }
            else
            {
                try { GHI.Processor.Watchdog.ResetCounter(); }
                catch { };
                _timeOfLastSend = DateTime.Now;


#if DebugPrint
                Debug.Print("Failed to query Entities. HttpStatusCode: " + queryEntityReturnCode.ToString());
#endif
            }

            pSwitchMessage = "Reboot: " + _lastResetCause;

            Counters returnValue = new Counters();
            returnValue.AzureSends      = _azureSends;
            returnValue.AzureSendErrors = _azureSendErrors;
            returnValue.ForcedReboots   = _forcedReboots;
            returnValue.BadReboots      = _badReboots;

            return(returnValue);
        }
        public Counters ActualizeFromLastAzureRow(ref string pSwitchMessage)
        {
#if DebugPrint
            Debug.Print("\r\nGoing to query for Entities");
#endif
            // Now we query for the last row of the table as selected by the query string "$top=1"
            // (OLS means Of the Last Send)
            string readTimeOLS = DateTime.Now.ToString();  // shall hold send time of the last entity on Azure

            ArrayList queryArrayList = new ArrayList();
            try { GHI.Processor.Watchdog.ResetCounter(); }
            catch { };
            HttpStatusCode queryEntityReturnCode = queryTableEntities("$top=1", out queryArrayList);

            if (queryEntityReturnCode == HttpStatusCode.OK)
            {
#if DebugPrint
                Debug.Print("Query for entities completed. HttpStatusCode: " + queryEntityReturnCode.ToString());
#endif
                try { GHI.Processor.Watchdog.ResetCounter(); }
                catch { };
                if (queryArrayList.Count != 0)
                {
                    var    entityHashtable = queryArrayList[0] as Hashtable;
                    string lastBootReason  = entityHashtable["bR"].ToString();
                    if (lastBootReason == "X")     // reboot was forced by the program (not enougth free ram)
                    {
                        _lastResetCause = "ForcedReboot";
                        try
                        {
                            _forcedReboots             = int.Parse(entityHashtable["forcedReboots"].ToString()) + 1;
                            _badReboots                = int.Parse(entityHashtable["badReboots"].ToString());
                            _azureSends                = int.Parse(entityHashtable["Sends"].ToString()) + 1;
                            _azureSendErrors           = int.Parse(entityHashtable["sendErrors"].ToString());
                            _dayMin                    = double.Parse(entityHashtable["min"].ToString());
                            _dayMax                    = double.Parse(entityHashtable["max"].ToString());
                            _lastContent[Ch_3_Sel - 1] = double.Parse(entityHashtable["T_3"].ToString());
                            // RoSchmi
                            //_lastContent[Ch_6_Sel - 1] = double.Parse(entityHashtable["T_6"].ToString());
                            _lastContent[Ch_5_Sel - 1] = double.Parse(entityHashtable["T_5"].ToString());
                            _lastContent[Ch_6_Sel - 1] = double.Parse(entityHashtable["T_6"].ToString());
                        }
                        catch { }
                    }
                    else
                    {
                        try
                        {
                            _forcedReboots             = int.Parse(entityHashtable["forcedReboots"].ToString());
                            _badReboots                = int.Parse(entityHashtable["badReboots"].ToString()) + 1;
                            _azureSends                = int.Parse(entityHashtable["Sends"].ToString()) + 1;
                            _azureSendErrors           = int.Parse(entityHashtable["sendErrors"].ToString());
                            _dayMin                    = double.Parse(entityHashtable["min"].ToString());
                            _dayMax                    = double.Parse(entityHashtable["max"].ToString());
                            _lastContent[Ch_3_Sel - 1] = double.Parse(entityHashtable["T_3"].ToString());
                            // RoSchmi
                            //_lastContent[Ch_6_Sel - 1] = double.Parse(entityHashtable["T_6"].ToString());
                            _lastContent[Ch_5_Sel - 1] = double.Parse(entityHashtable["T_5"].ToString());
                            _lastContent[Ch_6_Sel - 1] = double.Parse(entityHashtable["T_6"].ToString());
                        }
                        catch { }
                    }

                    readTimeOLS = entityHashtable["SampleTime"].ToString();

                    try
                    {
                        _timeOfLastSend = new DateTime(int.Parse(readTimeOLS.Substring(6, 4)), int.Parse(readTimeOLS.Substring(0, 2)),
                                                       int.Parse(readTimeOLS.Substring(3, 2)), int.Parse(readTimeOLS.Substring(11, 2)),
                                                       int.Parse(readTimeOLS.Substring(14, 2)), int.Parse(readTimeOLS.Substring(17, 2)));

                        // calculate back to the time without dayLightSavingTime offset
                        _timeOfLastSend = _timeOfLastSend.AddMinutes(-DayLihtSavingTime.DayLightTimeOffset(dstStart, dstEnd, dstOffset, _timeOfLastSend, true));
                    }
                    catch
                    {
                        _timeOfLastSend = DateTime.Now.AddHours(-1.0);  // if something goes wrong, take DateTime.Now minus 1 hour;
                    }
                }
                else
                {
                    _timeOfLastSend = DateTime.Now;
                }
            }
            else
            {
                try { GHI.Processor.Watchdog.ResetCounter(); }
                catch { };
                _timeOfLastSend = DateTime.Now;


#if DebugPrint
                Debug.Print("Failed to query Entities. HttpStatusCode: " + queryEntityReturnCode.ToString());
#endif
            }

            pSwitchMessage = "Reboot: " + _lastResetCause;

            Counters returnValue = new Counters();
            returnValue.AzureSends      = _azureSends;
            returnValue.AzureSendErrors = _azureSendErrors;
            returnValue.ForcedReboots   = _forcedReboots;
            returnValue.BadReboots      = _badReboots;


            return(returnValue);
        }
 public static int Get(DateTime pDateTime, string pDstStart, string pDstEnd, int pDstOffset)
 {
     return(DayLihtSavingTime.DayLightTimeOffset(pDstStart, pDstEnd, pDstOffset, pDateTime, true));
 }
 private static int GetDlstOffset(DateTime pDateTime)
 {
     return(DayLihtSavingTime.DayLightTimeOffset(dstStart, dstEnd, dstOffset, pDateTime, true));
 }