{"id":300311,"date":"2020-03-18T09:00:29","date_gmt":"2020-03-18T09:00:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=300311"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=300311","title":{"rendered":"\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 M5Stack \u043a \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0443"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/492838\/\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u043a M5STACK \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0440\u0438\u0441. 1).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/fc9\/26f\/3c9\/fc926f3c9671805c44acd1c5d20c69f0.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0448\u043b\u044e\u0437 M5Stack BLACK \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0433\u043e\u0434\u0435 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/openweathermap.org\" title=\"https:\/\/openweathermap.org\" rel=\"nofollow\">https:\/\/openweathermap.org<\/a> \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b \u0435\u0451 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 433 \u041c\u0413\u0446, \u0430 M5Stack GRAY \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043b \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043d\u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440.<br \/>  \u0412 M5Stack BLACK \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 TF-\u043a\u0430\u0440\u0442\u0430 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 Wi-Fi \u0441\u0435\u0442\u0435\u0439 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 openweathermap.org.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b (\u0440\u0438\u0441. 1.1):<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0444\u0430\u0439\u043b \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 Wi-Fi-\u0441\u0435\u0442\u044f\u043c\u0438 (system\/wifi.ini);<\/li>\n<li>\u0444\u0430\u0439\u043b \u0441\u0442\u0438\u043b\u0435\u0439 (system\/openweather.ini) (\u0440\u0438\u0441. 1.2).<\/li>\n<\/ul>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/514\/007\/1ee\/5140071ee933a6bd644acac25caae55e.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1.1. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 system<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c34\/be1\/185\/c34be1185f2a782982819f4a017f720d.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1.2. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 openweather.ini<\/p>\n<p>  <\/p>\n<h2 id=\"kratkaya-spravka\">\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0434 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b (\u0440\u0438\u0441. 2), \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.<br \/>  \u041f\u043e\u043d\u044f\u0442\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a\u0430\u043a \u043a \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c\u0443, \u0442\u0430\u043a \u0438 \u043a \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u043c\u0443 \u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u044e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e-\u043b\u0443\u0447\u0435\u0432\u044b\u0445 \u0442\u0440\u0443\u0431\u043a\u0430\u0445.<br \/>  \u041c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0444\u043e\u0442\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u043e\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u043e\u0441\u0438\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0447\u0435\u0440\u043d\u043e-\u0431\u0435\u043b\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0432 \u0446\u0432\u0435\u0442\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0435. \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0447\u0435\u0440\u043d\u043e\u0433\u043e \u0438 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0431\u0435\u043b\u043e\u0433\u043e \u0432 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0435. \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0447\u0435\u0440\u043d\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0440\u043e\u0432\u043d\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432. \u041e\u043d \u0436\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u043e\u043f\u043e\u0440\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c. \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u043b\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438. \u041a\u0440\u043e\u043c\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043c\u0435\u0436\u0434\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u2013 \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0438 \u043a\u0430\u0434\u0440\u043e\u0432\u044b\u0435. \u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0438\u043f\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f (\u0447\u0435\u0442\u043d\u043e\u0435 \u0438\u043b\u0438 \u043d\u0435\u0447\u0435\u0442\u043d\u043e\u0435).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8e2\/29f\/ece\/8e229fecef64722ed2e7d3cd6eecf40d.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2. \u041e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430: 4 \u043c\u043a\u0441 \u2014 \u0433\u0430\u0441\u044f\u0449\u0438\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441, 8 \u043c\u043a\u0441 \u2014 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u0435, 52 \u043c\u043a\u0441 \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u044f\u0440\u043a\u043e\u0441\u0442\u0438<\/p>\n<p>  <\/p>\n<p><strong>\u041f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0443\u0440\u043e\u043a\u0430<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>M5STACK (2 \u0448\u0442.);<\/li>\n<li>\u043a\u0430\u0431\u0435\u043b\u044c USB-C \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430;<\/li>\n<li>\u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 MicroSD \u043d\u0430 4 \u0413\u0411\u0430\u0439\u0442;<\/li>\n<li>\u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 (\u0442\u0438\u043f \u0440\u043e\u0437\u0435\u0442\u043a\u0430-\u0432\u0438\u043b\u043a\u0430);<\/li>\n<li>\u0440\u0430\u0434\u0438\u043e\u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a MX-JS-05V;<\/li>\n<li>\u0440\u0430\u0434\u0438\u043e\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a FS1000A;<\/li>\n<li>\u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 PAL;<\/li>\n<li>RCA-\u0432\u0438\u043b\u043a\u0430;<\/li>\n<li>\u043f\u0430\u044f\u043b\u044c\u043d\u0438\u043a \u0438 \u043f\u0440\u0438\u043f\u043e\u0439;<\/li>\n<li>\u0442\u0435\u0440\u043c\u043e\u0443\u0441\u0430\u0434\u043a\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"nachnyom\">\u041d\u0430\u0447\u043d\u0451\u043c!<\/h2>\n<p>  <\/p>\n<h3 id=\"shag-1-zaregistriruemsya-na-sayte-openweathermaporg\">\u0428\u0430\u0433 1. \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 openweathermap.org<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0433\u043e\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0435. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430 \u0438 \u043d\u0435 \u0437\u0430\u0439\u043c\u0451\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0440\u0438\u0441. 3).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/be5\/5e5\/895\/be55e5895daa2131afd16bec8b244c7d.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u043b\u0438\u0447\u043d\u043e\u043c \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b <strong>API keys<\/strong> \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 <strong>Key<\/strong> \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3ee\/b15\/929\/3eeb15929a2659fab03923de92a9a9bc.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3.1. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 API-\u043a\u043b\u044e\u0447\u0430<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430.<\/p>\n<p>  <\/p>\n<h3 id=\"shag-2-sdelaem-perehodnik-dlya-podklyucheniya-k-tv\">\u0428\u0430\u0433 2. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0422\u0412<\/h3>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0438 \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435. \u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u2014 \u0446\u0432\u0435\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u043e\u0434 \u043f\u0440\u0438\u043f\u0430\u044f\u0439\u0442\u0435 \u043a \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 RCA-\u0448\u0442\u0435\u043a\u0435\u0440\u0430 (\u0440\u0438\u0441. 4 \u2014 4.2).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/1ec\/9b6\/f20\/1ec9b6f20c686489aed930b1ee68a925.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2d2\/d34\/f7d\/2d2d34f7dd6dc7f1656a88cb5f6b751d.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4.1<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e03\/9a0\/941\/e039a0941af21b75ecd0f041eda9f225.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4.2<\/p>\n<p>  <\/p>\n<h3 id=\"shag-3-napishem-sketch-dlya-shlyuza-na-m5-black\">\u0428\u0430\u0433 3. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0435\u0442\u0447 \u0434\u043b\u044f \u0448\u043b\u044e\u0437\u0430 \u043d\u0430 m5 black<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u0441\u0430\u0439\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GET-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 GET-\u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">String GET(String url) {   while (true)   {     if ((wifiMulti.run() == WL_CONNECTED))     {       HTTPClient http;       http.begin(url);       int httpCode = http.GET();       if (httpCode &gt; 0)       {           if (httpCode == HTTP_CODE_OK)           {             return http.getString();           }       }       else       {         return (httpCode + &quot;&quot;);       }       http.end();     }   }     return &quot;&quot;;  }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 openweathermap, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0440\u0430\u043d\u0435\u0435, \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u0430 TF-\u043a\u0430\u0440\u0442\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f GET-\u0437\u0430\u043f\u0440\u043e\u0441\u0430:<\/p>\n<p>  <\/p>\n<blockquote><p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u0441\u0435\u0440\u0432\u0438\u0441 <strong>nl.sxgeo.city<\/strong> \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0412\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 IP-\u0430\u0434\u0440\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 GET-\u0437\u0430\u043f\u0440\u043e\u0441\u0435.<\/p><\/blockquote>\n<p>  <\/p>\n<pre><code class=\"plaintext\">String configOpenWeather() {   String file = TFReadFile(&quot;\/system\/openweather.ini&quot;);   if (file != &quot;&quot;)   {       String city = &quot;&amp;q=&quot; + parseString(1, '\\&quot;', parseString(1, ':', parseString(5, ',', GET(&quot;http:\/\/nl.sxgeo.city\/?&quot;))));      String api_key = &quot;&amp;APPID=&quot; + parseString(0, ' ', file);     String app_id = &quot;&amp;id=&quot; + parseString(1, ' ', file);     String lang = &quot;&amp;lang=&quot; + parseString(2, ' ', file);     String units = &quot;&amp;units=&quot; + parseString(3, ' ', file);     String host = &quot;http:\/\/api.openweathermap.org\/data\/2.5\/weather?&quot;;     String url_ = host + city + api_key + app_id + lang + units;     return url_;   }   return &quot;&quot;; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0443\u0440\u043e\u043a\u043e\u0432 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0449\u0443\u044e Wi-Fi \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441 TF-\u043a\u0430\u0440\u0442\u044b. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 MacOS X. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Mac \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d \u0441\u043f\u0435\u0446. \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0435 \u043a\u0430\u043a Windows \u2014 \u0434\u0432\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">bool configWifiMulti() {   \/* Get WiFi SSID &amp; password from wifi.ini from TF-card *\/   String file = TFReadFile(&quot;\/system\/wifi.ini&quot;);   if (file != &quot;&quot;)   {     for (int i = 0; i &lt; cntChrs(file, '\\n'); i++)     {       String wifi = parseString(i, '\\n', file);       wifi = wifi.substring(0, (wifi.length()));       if (wifi[wifi.length() - 1] == '\\r') wifi = wifi.substring(0, (wifi.length() - 1));       String ssid = parseString(0, ' ', wifi);       String pswd = parseString(1, ' ', wifi);       char* ssid_ = strToChar(ssid);       char* pswd_ = strToChar(pswd);       if (wifiMulti.addAP(ssid_, pswd_))       {         return true;       }     }   }   return false; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">temp = parseString(2, ':', parseString(7, ',', weather)); pres = parseString(1, ':', parseString(8, ',', weather)); hum = parseString(1, ':', parseString(9, ',', weather)); desc = parseString(1, '&quot;', parseString(1, ':', parseString(4, ',', weather)));  weatherIcon = parseString(1, '&quot;', parseString(1, ':', parseString(5, ',', weather)));<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0440\u0430\u0434\u0438\u043e\u044d\u0444\u0438\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sendString(&quot;1&quot; + String((char)0x1d) + temp); delay(1); sendString(&quot;2&quot; + String((char)0x1d) + String(round(pres.toInt() * 0.75))); delay(1); sendString(&quot;3&quot; + String((char)0x1d) + hum); delay(1); sendString(&quot;4&quot; + String((char)0x1d) + desc); delay(1); sendString(&quot;5&quot; + String((char)0x1d) + weatherIcon); delay(1);   <\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043a\u0435\u0442\u0447\u0430 \u0434\u043b\u044f \u0448\u043b\u044e\u0437\u0430-\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043e.<\/p>\n<p>  <\/p>\n<h3 id=\"shag-4-teper-napishem-sketch-dlya-priyomnika-na-m5-gray\">\u0428\u0430\u0433 4. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0435\u0442\u0447 \u0434\u043b\u044f \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u0430 \u043d\u0430 m5 gray<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0422\u0412 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0430\u0432\u0442\u043e\u0440\u0430 <a href=\"http:\/\/bitluni.net\/esp32-composite-video\/\" title=\"http:\/\/bitluni.net\/esp32-composite-video\/\" rel=\"nofollow\">http:\/\/bitluni.net\/esp32-composite-video\/<\/a>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0431\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 \u0426\u0410\u041f, \u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043b\u0435\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b. \u042f \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0432 \u0432\u0441\u0451 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <em>m5stack_tv.h<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">namespace m5stack_tv {   #include &quot;CompositeGraphics.h&quot;   #include &quot;Image.h&quot;   #include &quot;CompositeOutput.h&quot;   #include &lt;soc\/rtc.h&gt;   #include &quot;font6x8.h&quot;    const int XRES = 320;   const int YRES = 200;    CompositeGraphics graphics(XRES, YRES);   CompositeOutput composite(CompositeOutput::NTSC, XRES * 2, YRES * 2);   Font&lt;CompositeGraphics&gt; font(6, 8, font6x8::pixels);    char* strToChar(String str) {     int len = str.length() + 1;     char* buf = new char[len];     strcpy(buf, str.c_str());     return buf;   }    void compositeCore(void *data) {       while (true)     {       composite.sendFrameHalfResolution(&amp;graphics.frame);     }   }    void begin() {     rtc_clk_cpu_freq_set(RTC_CPU_FREQ_240M);     composite.init();     graphics.init();     graphics.setFont(font);     xTaskCreatePinnedToCore(compositeCore, &quot;c&quot;, 2048, NULL, 1, NULL, 0);   }    void setTextColor(int c) {     graphics.setTextColor(c);   }    void setCursor(int x, int y) {     graphics.setCursor(x, y);   }    void print(String str) {     graphics.print(strToChar(str));   }    void drawBitmap(int x, int y, int w, int h, const unsigned char* img) {        Image&lt;CompositeGraphics&gt; img_(w, h, img);     img_.draw(graphics, x, y);   }    void fillRect(int x, int y, int w, int h, int color = 0) {     graphics.fillRect(x, y, w, h, color);   }    void drawDot(int x, int y, int color) {     graphics.dotFast(x, y, color);   }    void clearScreen(int color = 0) {     fillRect(0, 0, XRES, YRES, color);   } }<\/code><\/pre>\n<p>  <\/p>\n<blockquote><p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0432 \u0443\u0440\u043e\u043a\u0430\u0445 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0435\u0433\u043e \u043d\u0430 \u0422\u0412 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u0430 &quot;Downloads&quot;.<\/p><\/blockquote>\n<p>\u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u0434\u0430 \u0438\u043a\u043e\u043d\u043a\u0438 \u043f\u043e\u0433\u043e\u0434\u044b \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">void drawWeatherIcon(int x, int y, String str) {   if (str == &quot;01d&quot;) m5stack_tv::drawBitmap(x, y, _01d::xres, _01d::yres, _01d::pixels);   else if (str == &quot;01n&quot;) m5stack_tv::drawBitmap(x, y, _01n::xres, _01n::yres, _01n::pixels);   else if (str == &quot;02d&quot;) m5stack_tv::drawBitmap(x, y, _02d::xres, _02d::yres, _02d::pixels);   else if (str == &quot;02n&quot;) m5stack_tv::drawBitmap(x, y, _02n::xres, _02n::yres, _02n::pixels);   else if (str == &quot;03d&quot;) m5stack_tv::drawBitmap(x, y, _03d::xres, _03d::yres, _03d::pixels);   else if (str == &quot;03n&quot;) m5stack_tv::drawBitmap(x, y, _03n::xres, _03n::yres, _03n::pixels);   else if (str == &quot;04d&quot;) m5stack_tv::drawBitmap(x, y, _04d::xres, _04d::yres, _04d::pixels);   else if (str == &quot;04n&quot;) m5stack_tv::drawBitmap(x, y, _04n::xres, _04n::yres, _04n::pixels);   else if (str == &quot;09d&quot;) m5stack_tv::drawBitmap(x, y, _09d::xres, _09d::yres, _09d::pixels);   else if (str == &quot;09n&quot;) m5stack_tv::drawBitmap(x, y, _09n::xres, _09n::yres, _09n::pixels);   else if (str == &quot;10d&quot;) m5stack_tv::drawBitmap(x, y, _10d::xres, _10d::yres, _10d::pixels);   else if (str == &quot;10n&quot;) m5stack_tv::drawBitmap(x, y, _10n::xres, _10n::yres, _10n::pixels);   else if (str == &quot;11d&quot;) m5stack_tv::drawBitmap(x, y, _11d::xres, _11d::yres, _11d::pixels);   else if (str == &quot;11n&quot;) m5stack_tv::drawBitmap(x, y, _11n::xres, _11n::yres, _11n::pixels);   else if (str == &quot;13d&quot;) m5stack_tv::drawBitmap(x, y, _13d::xres, _13d::yres, _13d::pixels);   else if (str == &quot;13n&quot;) m5stack_tv::drawBitmap(x, y, _13n::xres, _13n::yres, _13n::pixels);   else if (str == &quot;50d&quot;) m5stack_tv::drawBitmap(x, y, _50d::xres, _50d::yres, _50d::pixels);   else if (str == &quot;50n&quot;) m5stack_tv::drawBitmap(x, y, _50n::xres, _50n::yres, _50n::pixels); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">#include &quot;weatherIcons\/main.h&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">m5stack_tv::begin();<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u0433\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0422\u0412:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">void loop() {    if (radioRX.available(&amp;k))   {     message(&quot;data accepted&quot;);     radioRX.read(&amp;j, sizeof(j));     delay(1);     message(j);     int type = (parseString(0, (char)0x1d, j)).toInt();     String data = parseString(1, (char)0x1d, j);     if (type == 1) temp = data;     else if (type == 2) pres = data;     else if (type == 3) hum = data;     else if (type == 4) desc = data;      else if (type == 5) icon = data;      if (type &gt; 0)     {       m5stack_tv::setTextColor(0);       m5stack_tv::clearScreen(54);       message(&quot;drawing on TV&quot;);         m5stack_tv::setCursor(140, 60);       m5stack_tv::print(&quot;Temperature, C: &quot; + temp);       m5stack_tv::setCursor(140, 80);       m5stack_tv::print(&quot;Humidity, %: &quot; + hum);       m5stack_tv::setCursor(140, 100);       m5stack_tv::print(&quot;Pressure, mm Hg: &quot; + pres);       m5stack_tv::setCursor(140, 120);       m5stack_tv::print(desc);       drawWeatherIcon(30, 45, icon);     }   } }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"shag-5-zapusk\">\u0428\u0430\u0433 5. \u0417\u0430\u043f\u0443\u0441\u043a!<\/h3>\n<p>  <\/p>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <strong>&quot;Download&quot;<\/strong> \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0435\u043e \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u041d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d.<\/p>\n<p>  <\/p>\n<h2 id=\"downloads--ssylki\">Downloads \\ \u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 M5Stack \u043c\u043e\u0436\u043d\u043e <a href=\"http:\/\/ru.m5stack.com\" rel=\"nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dsiberia9s\/TV-out.-Weather-broadcast\" title=\"https:\/\/github.com\/dsiberia9s\/TV-out.-Weather-broadcast\" rel=\"nofollow\">\u0421\u043a\u0435\u0442\u0447\u0438 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 (GitHub)<\/a><\/li>\n<li><a href=\"https:\/\/yadi.sk\/d\/PzJVuAWj3UbLiv\" title=\"https:\/\/yadi.sk\/d\/PzJVuAWj3UbLiv\" rel=\"nofollow\">\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0422\u0412<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/OLJlK17hkDo\" rel=\"nofollow\">\u0412\u0438\u0434\u0435\u043e \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b (YouTube)<\/a><\/li>\n<\/ul>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/492838\/\"> https:\/\/habr.com\/ru\/post\/492838\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/492838\/\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u043a M5STACK \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0440\u0438\u0441. 1).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/fc9\/26f\/3c9\/fc926f3c9671805c44acd1c5d20c69f0.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-300311","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=300311"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300311\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=300311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=300311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=300311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}