úterý 29. prosince 2020

Home Assistant Vs Somfy a TaHoma

 Propojeni Google Home a Somfy samo o sobe neni v cechach zrovna jednoduche. Nejprve musite zmenit nastaveni jazyka a regionu na svem mobilnim telefonu na anglictinu. Protoze v cechach toto propojeni neni podporovano.

Potom co obe sluzby propojite se vam sice do Google home dosynchronizuji vsechny mistnosti a zarizeni (rolety, zaluzie, ...) Ale z aplikace Google home je nemuzete nijak primo ovladat.

Ovladat rolety muzete stale jen z originalni aplikace somfy.

Ovladat je muzete pomoci hlasovych prikazu.

Hey Google open blinds

hey Google close blinds

hey Google close bedroom blinds 50%

Hey Google rotate bedroom blinds 20%


Rozhodne pri pojmenovani zarizeni v Somfy je dobry napad pojmenovat je anglicky. 

Take dobry napad je pojmenovat zarizeni tak aby jste dokazali jmeno spravne vyslovit.

Pokud si nastavite treba scenar ktery budete spoustet behem obedu a pojmenujete ho lunch.

Budete mit pravdepodobne nekdy problem ho aktivovat, protoze alespon v mem pripade Mel Google problem rozlisit jestli jsem rekl


Lunch, launch a lounge.






středa 11. listopadu 2020

Ukládání desetinných čísel ASP.NET MVC

 Validace hodnot formuláře pomocí knihovny jquery.validate.js

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}


Vyžaduje pro čekou culture drobnou úpravu v _Layout.cshtml, která nahradí validační funkci pro desetinná čísla


<script type="text/javascript">

        $.validator.methods.number = function (value, element) {

            return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)?(?:,\d+)?$/.test(value);

       }

        $.validator.methods.range = function (value, element, param) {

            value = Number(value.toString().replace(',', '.'));

            return this.optional(element) || (value >= Number(param[0].toString().replace(',', '.')) && value <= Number(param[1].toString().replace(',', '.')));

        }


    </script>

neděle 27. září 2020

Přesmětování HTTP na HTTPS ve WebConfigu

Stačí do WebConfigu doplnit rewrite pravidlo do části  System.Webserver

<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>


 Zdroj:

https://napoveda.czechia.com/clanek/presmerovani-http-na-https/

středa 17. června 2020

Test přihlášení ASP stránky


class Program
    {
        public class SettingModel
        {
            public string Login { get; set; }
            public string Password { get; set; }
            public string Url { get; set; }
            public string Assert { get; set; }
        }

        public static SettingModel ParseCommandLineArguments(string[] args)
        {
            var result = new SettingModel();
            for( int n=0; n < args.Length; n++)
            {
                switch (args[n].ToLower()) 
                {
                    case "-l":
                        result.Login = args[++n];
                        break;

                    case "-p":
                        result.Password = args[++n];
                        break;

                    case "-u":
                        result.Url = args[++n];
                        break;

                    case "-a":
                        result.Assert = args[++n];
                        break;
                }
            }

            return result;
        }

        static void Main(string[] args)
        {
            var model = ParseCommandLineArguments(args);

            Uri baseUri = new Uri(model.Url);
            //HttpClientHandler handler = new HttpClientHandler();
            //handler.CookieContainer = new CookieContainer();
            //HttpClient client = new HttpClient(handler);
            using (HttpClient client = new HttpClient()) 
            { 
                var getRequest = client.GetAsync(baseUri);
                getRequest.Wait();
                HttpResponseMessage response = getRequest.Result;

                //CookieCollection collection = handler.CookieContainer.GetCookies(uri); // Retrieving a Cookie
                var htmlPage = response.Content.ReadAsStringAsync();
                htmlPage.Wait();

                var html = htmlPage.Result;
                var reg = Regex.Match(html, "<input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"(.*)\" />");
                if (reg.Success)
                {
                    var regexGroups = reg.Groups;

                    var formVariables = new List<KeyValuePair<string, string>>();
                    formVariables.Add(new KeyValuePair<string, string>("login", model.Login));
                    formVariables.Add(new KeyValuePair<string, string>("password", model.Password));
                    formVariables.Add(new KeyValuePair<string, string>("__RequestVerificationToken", regexGroups[1].Value));
                    var loginFormData = new FormUrlEncodedContent(formVariables);

                    var postRequest = client.PostAsync(baseUri, loginFormData);
                    postRequest.Wait();
                    var postResult = postRequest.Result;

                    var dashboardHtmlPage = postResult.Content.ReadAsStringAsync();
                    htmlPage.Wait();
                    var htmlToAssert = dashboardHtmlPage.Result;

                    Assert(model.Assert, htmlToAssert);
                }
            }
        }

        private static void Assert(string assertString, string htmlToAssert)
        {
            if (htmlToAssert.Contains(assertString)) // "/KlientskaZona/ProfilSpolecnosti/ProfilSpolecnosti"))
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Success");
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Failed");
            }
        }
    }