<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Воронин: заметки с тегом Nodemcu-CP2102</title>
<link>https://voronin.one/tags/nodemcu-cp2102/</link>
<description>воронин, voronin, it</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.4 (v4171)</generator>

<itunes:subtitle>воронин, voronin, it</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>автоматизация фитолампы</title>
<guid isPermaLink="false">35</guid>
<link>https://voronin.one/all/avtomatizaciya-fitolampy/</link>
<pubDate>Wed, 30 Nov 2022 14:15:56 +0300</pubDate>
<author></author>
<comments>https://voronin.one/all/avtomatizaciya-fitolampy/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/Adenium-obesum.jpg" width="442" height="442" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Растут у меня красивые растения &lt;b&gt;Адениум обесум&lt;/b&gt;, но пока маленькие и некрасивые. 😉 Холодной и хмурой зимой хочется даль больше света и тепла малявкам, а для этого на выручку — придёт фитолампа, у меня длинная над подоконником висит и питается 12В.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/fitolampa.jpg" width="500" height="500" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Конечно же автоматизировать процесс включения и отключения. Для этого на Алике мною было приобретено реле с датчиком света:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/rele-s-datchikom-sveta.jpg" width="319" height="281" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;с помощью проводов с разъёмами на 12В я собрал простенькую схему для подключения в разрыв цепи&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/razemy-12V.jpg" width="395" height="375" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;примерно так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/avtomatizaciya-fitolampy-2.png" width="592" height="267" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;И в процессе тестов мои подозрения подтвердились, в момент переключения реле начинает щёлкать, безостановочно то включаясь, то отключаясь. Почему так происходило? Темнеет очень плавно, когда наступает пороговое значение — датчик освещенности дает сигнал на включение фитолампы, общая освещенность помещения немного увеличивается, но этого достаточно, чтобы сработал датчик и выключил лампу и так по кругу. Такой процесс происходит длительный период, переключая туда-сюда по несколько раз в секунду.&lt;/p&gt;
&lt;p&gt;Правильно, для света и тепла использовать датчики с двумя порогами и разносить точки включения и отключения, создавая петлю Гистерезиса.&lt;/p&gt;
&lt;p&gt;С текущим устройством реализовать подобную схему не получится, пороговая точка одна. К сожалению, разбираем и думаем другое решение.&lt;/p&gt;
&lt;h2&gt;Новый проект&lt;/h2&gt;
&lt;p&gt;А с решением мне помог мой коллега Дмитрий, он подсказал, что проще всего привязаться ко времени восхода и захода солнца.&lt;/p&gt;
&lt;p&gt;Приступаем:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;самое главное — синхронизация времени&lt;/li&gt;
&lt;li&gt;график включения/отключения для нашей полосы&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Остановил свой выбор на ESP8266 с WiFi модулем Nodemcu-CP2102.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/Nodemcu-CP2102.jpg" width="500" height="500" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Алгоритм следующий: подключились к wifi, синхронизировали время с ntp сервером, и с определенной периодичностью проверяем вхождение времени в массивы вкл/откл.&lt;/p&gt;
&lt;p&gt;Я проверил время восходов и закатов из года в год примерно одинаковое, ± 1 минута, что не существенная погрешность. Используем готовые массивы, которые можно получить из онлайн калькуляторов для своего местоположения (в примере для Москвы).&lt;/p&gt;
&lt;p&gt;Схема подключения очень простая, в качестве ключа я использовал мосфет 30N06, благо, в своё время куплено их было много&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/30N06.jpg" width="233" height="233" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Он спокойно работает с напряжением 12В и током 1А, и переключается рабочим напряжением 3,3В с ноги ардуино.&lt;/p&gt;
&lt;p&gt;Схема подключения взята из ролика Алекса Гайвера&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/hoprWM_b6V0?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/avtomatizaciya-fitolampy-4.png" width="800" height="384.60161145927" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Питание 12В я подал на разъём VIN и GND, а управление повесил на ногу D1.&lt;/p&gt;
&lt;p&gt;Ниже сам код, в комментариях я постарался максимально подробно расписать механизмы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#include &amp;lt;NTPClient.h&amp;gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;
#include &amp;lt;WiFiUdp.h&amp;gt;

const char *ssid     = &amp;quot;wifi_name&amp;quot;;
const char *password = &amp;quot;wifi_password&amp;quot;;
char buf[6];

// массивы с временем в формате день:месяц-часы:минуты, дополненные нулями
String time_lamp_off[366] = { &amp;quot;01.01-09:00&amp;quot;, &amp;quot;02.01-09:00&amp;quot;, &amp;quot;03.01-08:59&amp;quot;, &amp;quot;04.01-08:59&amp;quot;, &amp;quot;05.01-08:59&amp;quot;, &amp;quot;06.01-08:58&amp;quot;, &amp;quot;07.01-08:57&amp;quot;, &amp;quot;08.01-08:57&amp;quot;, &amp;quot;09.01-08:56&amp;quot;, &amp;quot;10.01-08:55&amp;quot;, &amp;quot;11.01-08:54&amp;quot;, &amp;quot;12.01-08:54&amp;quot;, &amp;quot;13.01-08:53&amp;quot;, &amp;quot;14.01-08:52&amp;quot;, &amp;quot;15.01-08:51&amp;quot;, &amp;quot;16.01-08:49&amp;quot;, &amp;quot;17.01-08:48&amp;quot;, &amp;quot;18.01-08:47&amp;quot;, &amp;quot;19.01-08:46&amp;quot;, &amp;quot;20.01-08:44&amp;quot;, &amp;quot;21.01-08:43&amp;quot;, &amp;quot;22.01-08:42&amp;quot;, &amp;quot;23.01-08:40&amp;quot;, &amp;quot;24.01-08:39&amp;quot;, &amp;quot;25.01-08:37&amp;quot;, &amp;quot;26.01-08:35&amp;quot;, &amp;quot;27.01-08:34&amp;quot;, &amp;quot;28.01-08:32&amp;quot;, &amp;quot;29.01-08:30&amp;quot;, &amp;quot;30.01-08:29&amp;quot;, &amp;quot;31.01-08:27&amp;quot;, &amp;quot;01.02-08:25&amp;quot;, &amp;quot;02.02-08:23&amp;quot;, &amp;quot;03.02-08:21&amp;quot;, &amp;quot;04.02-08:19&amp;quot;, &amp;quot;05.02-08:17&amp;quot;, &amp;quot;06.02-08:15&amp;quot;, &amp;quot;07.02-08:13&amp;quot;, &amp;quot;08.02-08:11&amp;quot;, &amp;quot;09.02-08:09&amp;quot;, &amp;quot;10.02-08:07&amp;quot;, &amp;quot;11.02-08:05&amp;quot;, &amp;quot;12.02-08:03&amp;quot;, &amp;quot;13.02-08:00&amp;quot;, &amp;quot;14.02-07:58&amp;quot;, &amp;quot;15.02-07:56&amp;quot;, &amp;quot;16.02-07:54&amp;quot;, &amp;quot;17.02-07:51&amp;quot;, &amp;quot;18.02-07:49&amp;quot;, &amp;quot;19.02-07:47&amp;quot;, &amp;quot;20.02-07:44&amp;quot;, &amp;quot;21.02-07:42&amp;quot;, &amp;quot;22.02-07:40&amp;quot;, &amp;quot;23.02-07:37&amp;quot;, &amp;quot;24.02-07:35&amp;quot;, &amp;quot;25.02-07:32&amp;quot;, &amp;quot;26.02-07:30&amp;quot;, &amp;quot;27.02-07:27&amp;quot;, &amp;quot;28.02-07:25&amp;quot;, &amp;quot;29.02-07:25&amp;quot;, &amp;quot;01.03-07:23&amp;quot;, &amp;quot;02.03-07:20&amp;quot;, &amp;quot;03.03-07:18&amp;quot;, &amp;quot;04.03-07:15&amp;quot;, &amp;quot;05.03-07:12&amp;quot;, &amp;quot;06.03-07:10&amp;quot;, &amp;quot;07.03-07:07&amp;quot;, &amp;quot;08.03-07:05&amp;quot;, &amp;quot;09.03-07:02&amp;quot;, &amp;quot;10.03-07:00&amp;quot;, &amp;quot;11.03-06:57&amp;quot;, &amp;quot;12.03-06:54&amp;quot;, &amp;quot;13.03-06:52&amp;quot;, &amp;quot;14.03-06:49&amp;quot;, &amp;quot;15.03-06:47&amp;quot;, &amp;quot;16.03-06:44&amp;quot;, &amp;quot;17.03-06:41&amp;quot;, &amp;quot;18.03-06:39&amp;quot;, &amp;quot;19.03-06:36&amp;quot;, &amp;quot;20.03-06:33&amp;quot;, &amp;quot;21.03-06:31&amp;quot;, &amp;quot;22.03-06:28&amp;quot;, &amp;quot;23.03-06:26&amp;quot;, &amp;quot;24.03-06:23&amp;quot;, &amp;quot;25.03-06:20&amp;quot;, &amp;quot;26.03-06:18&amp;quot;, &amp;quot;27.03-06:15&amp;quot;, &amp;quot;28.03-06:12&amp;quot;, &amp;quot;29.03-06:10&amp;quot;, &amp;quot;30.03-06:07&amp;quot;, &amp;quot;31.03-06:04&amp;quot;, &amp;quot;01.04-06:02&amp;quot;, &amp;quot;02.04-05:59&amp;quot;, &amp;quot;03.04-05:57&amp;quot;, &amp;quot;04.04-05:54&amp;quot;, &amp;quot;05.04-05:51&amp;quot;, &amp;quot;06.04-05:49&amp;quot;, &amp;quot;07.04-05:46&amp;quot;, &amp;quot;08.04-05:44&amp;quot;, &amp;quot;09.04-05:41&amp;quot;, &amp;quot;10.04-05:39&amp;quot;, &amp;quot;11.04-05:36&amp;quot;, &amp;quot;12.04-05:33&amp;quot;, &amp;quot;13.04-05:31&amp;quot;, &amp;quot;14.04-05:28&amp;quot;, &amp;quot;15.04-05:26&amp;quot;, &amp;quot;16.04-05:23&amp;quot;, &amp;quot;17.04-05:21&amp;quot;, &amp;quot;18.04-05:18&amp;quot;, &amp;quot;19.04-05:16&amp;quot;, &amp;quot;20.04-05:14&amp;quot;, &amp;quot;21.04-05:11&amp;quot;, &amp;quot;22.04-05:09&amp;quot;, &amp;quot;23.04-05:06&amp;quot;, &amp;quot;24.04-05:04&amp;quot;, &amp;quot;25.04-05:02&amp;quot;, &amp;quot;26.04-04:59&amp;quot;, &amp;quot;27.04-04:57&amp;quot;, &amp;quot;28.04-04:55&amp;quot;, &amp;quot;29.04-04:52&amp;quot;, &amp;quot;30.04-04:50&amp;quot;, &amp;quot;01.05-04:48&amp;quot;, &amp;quot;02.05-04:46&amp;quot;, &amp;quot;03.05-04:43&amp;quot;, &amp;quot;04.05-04:41&amp;quot;, &amp;quot;05.05-04:39&amp;quot;, &amp;quot;06.05-04:37&amp;quot;, &amp;quot;07.05-04:35&amp;quot;, &amp;quot;08.05-04:33&amp;quot;, &amp;quot;09.05-04:31&amp;quot;, &amp;quot;10.05-04:29&amp;quot;, &amp;quot;11.05-04:27&amp;quot;, &amp;quot;12.05-04:25&amp;quot;, &amp;quot;13.05-04:23&amp;quot;, &amp;quot;14.05-04:21&amp;quot;, &amp;quot;15.05-04:19&amp;quot;, &amp;quot;16.05-04:18&amp;quot;, &amp;quot;17.05-04:16&amp;quot;, &amp;quot;18.05-04:14&amp;quot;, &amp;quot;19.05-04:12&amp;quot;, &amp;quot;20.05-04:11&amp;quot;, &amp;quot;21.05-04:09&amp;quot;, &amp;quot;22.05-04:08&amp;quot;, &amp;quot;23.05-04:06&amp;quot;, &amp;quot;24.05-04:05&amp;quot;, &amp;quot;25.05-04:03&amp;quot;, &amp;quot;26.05-04:02&amp;quot;, &amp;quot;27.05-04:00&amp;quot;, &amp;quot;28.05-03:59&amp;quot;, &amp;quot;29.05-03:58&amp;quot;, &amp;quot;30.05-03:57&amp;quot;, &amp;quot;31.05-03:55&amp;quot;, &amp;quot;01.06-03:54&amp;quot;, &amp;quot;02.06-03:53&amp;quot;, &amp;quot;03.06-03:52&amp;quot;, &amp;quot;04.06-03:51&amp;quot;, &amp;quot;05.06-03:51&amp;quot;, &amp;quot;06.06-03:50&amp;quot;, &amp;quot;07.06-03:49&amp;quot;, &amp;quot;08.06-03:48&amp;quot;, &amp;quot;09.06-03:48&amp;quot;, &amp;quot;10.06-03:47&amp;quot;, &amp;quot;11.06-03:47&amp;quot;, &amp;quot;12.06-03:46&amp;quot;, &amp;quot;13.06-03:46&amp;quot;, &amp;quot;14.06-03:46&amp;quot;, &amp;quot;15.06-03:45&amp;quot;, &amp;quot;16.06-03:45&amp;quot;, &amp;quot;17.06-03:45&amp;quot;, &amp;quot;18.06-03:45&amp;quot;, &amp;quot;19.06-03:45&amp;quot;, &amp;quot;20.06-03:45&amp;quot;, &amp;quot;21.06-03:45&amp;quot;, &amp;quot;22.06-03:45&amp;quot;, &amp;quot;23.06-03:46&amp;quot;, &amp;quot;24.06-03:46&amp;quot;, &amp;quot;25.06-03:46&amp;quot;, &amp;quot;26.06-03:47&amp;quot;, &amp;quot;27.06-03:47&amp;quot;, &amp;quot;28.06-03:48&amp;quot;, &amp;quot;29.06-03:49&amp;quot;, &amp;quot;30.06-03:49&amp;quot;, &amp;quot;01.07-03:50&amp;quot;, &amp;quot;02.07-03:51&amp;quot;, &amp;quot;03.07-03:52&amp;quot;, &amp;quot;04.07-03:53&amp;quot;, &amp;quot;05.07-03:54&amp;quot;, &amp;quot;06.07-03:55&amp;quot;, &amp;quot;07.07-03:56&amp;quot;, &amp;quot;08.07-03:57&amp;quot;, &amp;quot;09.07-03:58&amp;quot;, &amp;quot;10.07-03:59&amp;quot;, &amp;quot;11.07-04:01&amp;quot;, &amp;quot;12.07-04:02&amp;quot;, &amp;quot;13.07-04:03&amp;quot;, &amp;quot;14.07-04:05&amp;quot;, &amp;quot;15.07-04:06&amp;quot;, &amp;quot;16.07-04:08&amp;quot;, &amp;quot;17.07-04:09&amp;quot;, &amp;quot;18.07-04:11&amp;quot;, &amp;quot;19.07-04:12&amp;quot;, &amp;quot;20.07-04:14&amp;quot;, &amp;quot;21.07-04:15&amp;quot;, &amp;quot;22.07-04:17&amp;quot;, &amp;quot;23.07-04:19&amp;quot;, &amp;quot;24.07-04:21&amp;quot;, &amp;quot;25.07-04:22&amp;quot;, &amp;quot;26.07-04:24&amp;quot;, &amp;quot;27.07-04:26&amp;quot;, &amp;quot;28.07-04:28&amp;quot;, &amp;quot;29.07-04:29&amp;quot;, &amp;quot;30.07-04:31&amp;quot;, &amp;quot;31.07-04:33&amp;quot;, &amp;quot;01.08-04:35&amp;quot;, &amp;quot;02.08-04:37&amp;quot;, &amp;quot;03.08-04:39&amp;quot;, &amp;quot;04.08-04:40&amp;quot;, &amp;quot;05.08-04:42&amp;quot;, &amp;quot;06.08-04:44&amp;quot;, &amp;quot;07.08-04:46&amp;quot;, &amp;quot;08.08-04:48&amp;quot;, &amp;quot;09.08-04:50&amp;quot;, &amp;quot;10.08-04:52&amp;quot;, &amp;quot;11.08-04:54&amp;quot;, &amp;quot;12.08-04:56&amp;quot;, &amp;quot;13.08-04:58&amp;quot;, &amp;quot;14.08-05:00&amp;quot;, &amp;quot;15.08-05:02&amp;quot;, &amp;quot;16.08-05:04&amp;quot;, &amp;quot;17.08-05:06&amp;quot;, &amp;quot;18.08-05:07&amp;quot;, &amp;quot;19.08-05:09&amp;quot;, &amp;quot;20.08-05:11&amp;quot;, &amp;quot;21.08-05:13&amp;quot;, &amp;quot;22.08-05:15&amp;quot;, &amp;quot;23.08-05:17&amp;quot;, &amp;quot;24.08-05:19&amp;quot;, &amp;quot;25.08-05:21&amp;quot;, &amp;quot;26.08-05:23&amp;quot;, &amp;quot;27.08-05:25&amp;quot;, &amp;quot;28.08-05:27&amp;quot;, &amp;quot;29.08-05:29&amp;quot;, &amp;quot;30.08-05:31&amp;quot;, &amp;quot;31.08-05:33&amp;quot;, &amp;quot;01.09-05:35&amp;quot;, &amp;quot;02.09-05:37&amp;quot;, &amp;quot;03.09-05:39&amp;quot;, &amp;quot;04.09-05:40&amp;quot;, &amp;quot;05.09-05:42&amp;quot;, &amp;quot;06.09-05:44&amp;quot;, &amp;quot;07.09-05:46&amp;quot;, &amp;quot;08.09-05:48&amp;quot;, &amp;quot;09.09-05:50&amp;quot;, &amp;quot;10.09-05:52&amp;quot;, &amp;quot;11.09-05:54&amp;quot;, &amp;quot;12.09-05:56&amp;quot;, &amp;quot;13.09-05:58&amp;quot;, &amp;quot;14.09-06:00&amp;quot;, &amp;quot;15.09-06:02&amp;quot;, &amp;quot;16.09-06:03&amp;quot;, &amp;quot;17.09-06:05&amp;quot;, &amp;quot;18.09-06:07&amp;quot;, &amp;quot;19.09-06:09&amp;quot;, &amp;quot;20.09-06:11&amp;quot;, &amp;quot;21.09-06:13&amp;quot;, &amp;quot;22.09-06:15&amp;quot;, &amp;quot;23.09-06:17&amp;quot;, &amp;quot;24.09-06:19&amp;quot;, &amp;quot;25.09-06:21&amp;quot;, &amp;quot;26.09-06:23&amp;quot;, &amp;quot;27.09-06:25&amp;quot;, &amp;quot;28.09-06:27&amp;quot;, &amp;quot;29.09-06:28&amp;quot;, &amp;quot;30.09-06:30&amp;quot;, &amp;quot;01.10-06:32&amp;quot;, &amp;quot;02.10-06:34&amp;quot;, &amp;quot;03.10-06:36&amp;quot;, &amp;quot;04.10-06:38&amp;quot;, &amp;quot;05.10-06:40&amp;quot;, &amp;quot;06.10-06:42&amp;quot;, &amp;quot;07.10-06:44&amp;quot;, &amp;quot;08.10-06:46&amp;quot;, &amp;quot;09.10-06:48&amp;quot;, &amp;quot;10.10-06:50&amp;quot;, &amp;quot;11.10-06:52&amp;quot;, &amp;quot;12.10-06:54&amp;quot;, &amp;quot;13.10-06:56&amp;quot;, &amp;quot;14.10-06:58&amp;quot;, &amp;quot;15.10-07:00&amp;quot;, &amp;quot;16.10-07:02&amp;quot;, &amp;quot;17.10-07:04&amp;quot;, &amp;quot;18.10-07:06&amp;quot;, &amp;quot;19.10-07:08&amp;quot;, &amp;quot;20.10-07:11&amp;quot;, &amp;quot;21.10-07:13&amp;quot;, &amp;quot;22.10-07:15&amp;quot;, &amp;quot;23.10-07:17&amp;quot;, &amp;quot;24.10-07:19&amp;quot;, &amp;quot;25.10-07:21&amp;quot;, &amp;quot;26.10-07:23&amp;quot;, &amp;quot;27.10-07:25&amp;quot;, &amp;quot;28.10-07:27&amp;quot;, &amp;quot;29.10-07:29&amp;quot;, &amp;quot;30.10-07:31&amp;quot;, &amp;quot;31.10-07:34&amp;quot;, &amp;quot;01.11-07:36&amp;quot;, &amp;quot;02.11-07:38&amp;quot;, &amp;quot;03.11-07:40&amp;quot;, &amp;quot;04.11-07:42&amp;quot;, &amp;quot;05.11-07:44&amp;quot;, &amp;quot;06.11-07:46&amp;quot;, &amp;quot;07.11-07:48&amp;quot;, &amp;quot;08.11-07:51&amp;quot;, &amp;quot;09.11-07:53&amp;quot;, &amp;quot;10.11-07:55&amp;quot;, &amp;quot;11.11-07:57&amp;quot;, &amp;quot;12.11-07:59&amp;quot;, &amp;quot;13.11-08:01&amp;quot;, &amp;quot;14.11-08:03&amp;quot;, &amp;quot;15.11-08:05&amp;quot;, &amp;quot;16.11-08:07&amp;quot;, &amp;quot;17.11-08:09&amp;quot;, &amp;quot;18.11-08:11&amp;quot;, &amp;quot;19.11-08:13&amp;quot;, &amp;quot;20.11-08:15&amp;quot;, &amp;quot;21.11-08:17&amp;quot;, &amp;quot;22.11-08:19&amp;quot;, &amp;quot;23.11-08:21&amp;quot;, &amp;quot;24.11-08:23&amp;quot;, &amp;quot;25.11-08:25&amp;quot;, &amp;quot;26.11-08:27&amp;quot;, &amp;quot;27.11-08:29&amp;quot;, &amp;quot;28.11-08:30&amp;quot;, &amp;quot;29.11-08:32&amp;quot;, &amp;quot;30.11-08:34&amp;quot;, &amp;quot;01.12-08:35&amp;quot;, &amp;quot;02.12-08:37&amp;quot;, &amp;quot;03.12-08:39&amp;quot;, &amp;quot;04.12-08:40&amp;quot;, &amp;quot;05.12-08:42&amp;quot;, &amp;quot;06.12-08:43&amp;quot;, &amp;quot;07.12-08:45&amp;quot;, &amp;quot;08.12-08:46&amp;quot;, &amp;quot;09.12-08:47&amp;quot;, &amp;quot;10.12-08:48&amp;quot;, &amp;quot;11.12-08:50&amp;quot;, &amp;quot;12.12-08:51&amp;quot;, &amp;quot;13.12-08:52&amp;quot;, &amp;quot;14.12-08:53&amp;quot;, &amp;quot;15.12-08:54&amp;quot;, &amp;quot;16.12-08:55&amp;quot;, &amp;quot;17.12-08:56&amp;quot;, &amp;quot;18.12-08:56&amp;quot;, &amp;quot;19.12-08:57&amp;quot;, &amp;quot;20.12-08:58&amp;quot;, &amp;quot;21.12-08:58&amp;quot;, &amp;quot;22.12-08:59&amp;quot;, &amp;quot;23.12-08:59&amp;quot;, &amp;quot;24.12-09:00&amp;quot;, &amp;quot;25.12-09:00&amp;quot;, &amp;quot;26.12-09:00&amp;quot;, &amp;quot;27.12-09:00&amp;quot;, &amp;quot;28.12-09:00&amp;quot;, &amp;quot;29.12-09:00&amp;quot;, &amp;quot;30.12-09:00&amp;quot;, &amp;quot;31.12-09:00&amp;quot; };
String time_lamp_on[366] = { &amp;quot;01.01-16:07&amp;quot;, &amp;quot;02.01-16:08&amp;quot;, &amp;quot;03.01-16:10&amp;quot;, &amp;quot;04.01-16:11&amp;quot;, &amp;quot;05.01-16:12&amp;quot;, &amp;quot;06.01-16:14&amp;quot;, &amp;quot;07.01-16:15&amp;quot;, &amp;quot;08.01-16:17&amp;quot;, &amp;quot;09.01-16:18&amp;quot;, &amp;quot;10.01-16:20&amp;quot;, &amp;quot;11.01-16:21&amp;quot;, &amp;quot;12.01-16:23&amp;quot;, &amp;quot;13.01-16:25&amp;quot;, &amp;quot;14.01-16:27&amp;quot;, &amp;quot;15.01-16:28&amp;quot;, &amp;quot;16.01-16:30&amp;quot;, &amp;quot;17.01-16:32&amp;quot;, &amp;quot;18.01-16:34&amp;quot;, &amp;quot;19.01-16:36&amp;quot;, &amp;quot;20.01-16:38&amp;quot;, &amp;quot;21.01-16:40&amp;quot;, &amp;quot;22.01-16:42&amp;quot;, &amp;quot;23.01-16:44&amp;quot;, &amp;quot;24.01-16:46&amp;quot;, &amp;quot;25.01-16:48&amp;quot;, &amp;quot;26.01-16:50&amp;quot;, &amp;quot;27.01-16:52&amp;quot;, &amp;quot;28.01-16:54&amp;quot;, &amp;quot;29.01-16:56&amp;quot;, &amp;quot;30.01-16:58&amp;quot;, &amp;quot;31.01-17:01&amp;quot;, &amp;quot;01.02-17:03&amp;quot;, &amp;quot;02.02-17:05&amp;quot;, &amp;quot;03.02-17:07&amp;quot;, &amp;quot;04.02-17:09&amp;quot;, &amp;quot;05.02-17:11&amp;quot;, &amp;quot;06.02-17:14&amp;quot;, &amp;quot;07.02-17:16&amp;quot;, &amp;quot;08.02-17:18&amp;quot;, &amp;quot;09.02-17:20&amp;quot;, &amp;quot;10.02-17:22&amp;quot;, &amp;quot;11.02-17:25&amp;quot;, &amp;quot;12.02-17:27&amp;quot;, &amp;quot;13.02-17:29&amp;quot;, &amp;quot;14.02-17:31&amp;quot;, &amp;quot;15.02-17:33&amp;quot;, &amp;quot;16.02-17:36&amp;quot;, &amp;quot;17.02-17:38&amp;quot;, &amp;quot;18.02-17:40&amp;quot;, &amp;quot;19.02-17:42&amp;quot;, &amp;quot;20.02-17:44&amp;quot;, &amp;quot;21.02-17:46&amp;quot;, &amp;quot;22.02-17:48&amp;quot;, &amp;quot;23.02-17:51&amp;quot;, &amp;quot;24.02-17:53&amp;quot;, &amp;quot;25.02-17:55&amp;quot;, &amp;quot;26.02-17:57&amp;quot;, &amp;quot;27.02-17:59&amp;quot;, &amp;quot;28.02-18:01&amp;quot;, &amp;quot;29.02-18:02&amp;quot;, &amp;quot;01.03-18:03&amp;quot;, &amp;quot;02.03-18:05&amp;quot;, &amp;quot;03.03-18:08&amp;quot;, &amp;quot;04.03-18:10&amp;quot;, &amp;quot;05.03-18:12&amp;quot;, &amp;quot;06.03-18:14&amp;quot;, &amp;quot;07.03-18:16&amp;quot;, &amp;quot;08.03-18:18&amp;quot;, &amp;quot;09.03-18:20&amp;quot;, &amp;quot;10.03-18:22&amp;quot;, &amp;quot;11.03-18:24&amp;quot;, &amp;quot;12.03-18:26&amp;quot;, &amp;quot;13.03-18:28&amp;quot;, &amp;quot;14.03-18:30&amp;quot;, &amp;quot;15.03-18:32&amp;quot;, &amp;quot;16.03-18:34&amp;quot;, &amp;quot;17.03-18:36&amp;quot;, &amp;quot;18.03-18:38&amp;quot;, &amp;quot;19.03-18:40&amp;quot;, &amp;quot;20.03-18:42&amp;quot;, &amp;quot;21.03-18:44&amp;quot;, &amp;quot;22.03-18:46&amp;quot;, &amp;quot;23.03-18:48&amp;quot;, &amp;quot;24.03-18:50&amp;quot;, &amp;quot;25.03-18:52&amp;quot;, &amp;quot;26.03-18:54&amp;quot;, &amp;quot;27.03-18:56&amp;quot;, &amp;quot;28.03-18:58&amp;quot;, &amp;quot;29.03-19:00&amp;quot;, &amp;quot;30.03-19:02&amp;quot;, &amp;quot;31.03-19:04&amp;quot;, &amp;quot;01.04-19:06&amp;quot;, &amp;quot;02.04-19:08&amp;quot;, &amp;quot;03.04-19:10&amp;quot;, &amp;quot;04.04-19:12&amp;quot;, &amp;quot;05.04-19:14&amp;quot;, &amp;quot;06.04-19:16&amp;quot;, &amp;quot;07.04-19:18&amp;quot;, &amp;quot;08.04-19:20&amp;quot;, &amp;quot;09.04-19:22&amp;quot;, &amp;quot;10.04-19:24&amp;quot;, &amp;quot;11.04-19:26&amp;quot;, &amp;quot;12.04-19:29&amp;quot;, &amp;quot;13.04-19:31&amp;quot;, &amp;quot;14.04-19:33&amp;quot;, &amp;quot;15.04-19:35&amp;quot;, &amp;quot;16.04-19:37&amp;quot;, &amp;quot;17.04-19:39&amp;quot;, &amp;quot;18.04-19:41&amp;quot;, &amp;quot;19.04-19:43&amp;quot;, &amp;quot;20.04-19:45&amp;quot;, &amp;quot;21.04-19:47&amp;quot;, &amp;quot;22.04-19:49&amp;quot;, &amp;quot;23.04-19:51&amp;quot;, &amp;quot;24.04-19:53&amp;quot;, &amp;quot;25.04-19:55&amp;quot;, &amp;quot;26.04-19:57&amp;quot;, &amp;quot;27.04-19:59&amp;quot;, &amp;quot;28.04-20:01&amp;quot;, &amp;quot;29.04-20:03&amp;quot;, &amp;quot;30.04-20:05&amp;quot;, &amp;quot;01.05-20:07&amp;quot;, &amp;quot;02.05-20:09&amp;quot;, &amp;quot;03.05-20:11&amp;quot;, &amp;quot;04.05-20:13&amp;quot;, &amp;quot;05.05-20:15&amp;quot;, &amp;quot;06.05-20:17&amp;quot;, &amp;quot;07.05-20:19&amp;quot;, &amp;quot;08.05-20:21&amp;quot;, &amp;quot;09.05-20:23&amp;quot;, &amp;quot;10.05-20:25&amp;quot;, &amp;quot;11.05-20:27&amp;quot;, &amp;quot;12.05-20:29&amp;quot;, &amp;quot;13.05-20:30&amp;quot;, &amp;quot;14.05-20:32&amp;quot;, &amp;quot;15.05-20:34&amp;quot;, &amp;quot;16.05-20:36&amp;quot;, &amp;quot;17.05-20:38&amp;quot;, &amp;quot;18.05-20:40&amp;quot;, &amp;quot;19.05-20:42&amp;quot;, &amp;quot;20.05-20:43&amp;quot;, &amp;quot;21.05-20:45&amp;quot;, &amp;quot;22.05-20:47&amp;quot;, &amp;quot;23.05-20:48&amp;quot;, &amp;quot;24.05-20:50&amp;quot;, &amp;quot;25.05-20:52&amp;quot;, &amp;quot;26.05-20:53&amp;quot;, &amp;quot;27.05-20:55&amp;quot;, &amp;quot;28.05-20:56&amp;quot;, &amp;quot;29.05-20:58&amp;quot;, &amp;quot;30.05-20:59&amp;quot;, &amp;quot;31.05-21:01&amp;quot;, &amp;quot;01.06-21:02&amp;quot;, &amp;quot;02.06-21:04&amp;quot;, &amp;quot;03.06-21:05&amp;quot;, &amp;quot;04.06-21:06&amp;quot;, &amp;quot;05.06-21:07&amp;quot;, &amp;quot;06.06-21:08&amp;quot;, &amp;quot;07.06-21:10&amp;quot;, &amp;quot;08.06-21:11&amp;quot;, &amp;quot;09.06-21:12&amp;quot;, &amp;quot;10.06-21:12&amp;quot;, &amp;quot;11.06-21:13&amp;quot;, &amp;quot;12.06-21:14&amp;quot;, &amp;quot;13.06-21:15&amp;quot;, &amp;quot;14.06-21:16&amp;quot;, &amp;quot;15.06-21:16&amp;quot;, &amp;quot;16.06-21:17&amp;quot;, &amp;quot;17.06-21:17&amp;quot;, &amp;quot;18.06-21:18&amp;quot;, &amp;quot;19.06-21:18&amp;quot;, &amp;quot;20.06-21:19&amp;quot;, &amp;quot;21.06-21:19&amp;quot;, &amp;quot;22.06-21:19&amp;quot;, &amp;quot;23.06-21:19&amp;quot;, &amp;quot;24.06-21:19&amp;quot;, &amp;quot;25.06-21:19&amp;quot;, &amp;quot;26.06-21:19&amp;quot;, &amp;quot;27.06-21:19&amp;quot;, &amp;quot;28.06-21:19&amp;quot;, &amp;quot;29.06-21:19&amp;quot;, &amp;quot;30.06-21:18&amp;quot;, &amp;quot;01.07-21:18&amp;quot;, &amp;quot;02.07-21:17&amp;quot;, &amp;quot;03.07-21:17&amp;quot;, &amp;quot;04.07-21:16&amp;quot;, &amp;quot;05.07-21:16&amp;quot;, &amp;quot;06.07-21:15&amp;quot;, &amp;quot;07.07-21:14&amp;quot;, &amp;quot;08.07-21:13&amp;quot;, &amp;quot;09.07-21:12&amp;quot;, &amp;quot;10.07-21:11&amp;quot;, &amp;quot;11.07-21:10&amp;quot;, &amp;quot;12.07-21:09&amp;quot;, &amp;quot;13.07-21:08&amp;quot;, &amp;quot;14.07-21:07&amp;quot;, &amp;quot;15.07-21:06&amp;quot;, &amp;quot;16.07-21:05&amp;quot;, &amp;quot;17.07-21:03&amp;quot;, &amp;quot;18.07-21:02&amp;quot;, &amp;quot;19.07-21:01&amp;quot;, &amp;quot;20.07-20:59&amp;quot;, &amp;quot;21.07-20:58&amp;quot;, &amp;quot;22.07-20:56&amp;quot;, &amp;quot;23.07-20:54&amp;quot;, &amp;quot;24.07-20:53&amp;quot;, &amp;quot;25.07-20:51&amp;quot;, &amp;quot;26.07-20:49&amp;quot;, &amp;quot;27.07-20:48&amp;quot;, &amp;quot;28.07-20:46&amp;quot;, &amp;quot;29.07-20:44&amp;quot;, &amp;quot;30.07-20:42&amp;quot;, &amp;quot;31.07-20:40&amp;quot;, &amp;quot;01.08-20:38&amp;quot;, &amp;quot;02.08-20:36&amp;quot;, &amp;quot;03.08-20:34&amp;quot;, &amp;quot;04.08-20:32&amp;quot;, &amp;quot;05.08-20:30&amp;quot;, &amp;quot;06.08-20:28&amp;quot;, &amp;quot;07.08-20:26&amp;quot;, &amp;quot;08.08-20:24&amp;quot;, &amp;quot;09.08-20:22&amp;quot;, &amp;quot;10.08-20:20&amp;quot;, &amp;quot;11.08-20:17&amp;quot;, &amp;quot;12.08-20:15&amp;quot;, &amp;quot;13.08-20:13&amp;quot;, &amp;quot;14.08-20:11&amp;quot;, &amp;quot;15.08-20:08&amp;quot;, &amp;quot;16.08-20:06&amp;quot;, &amp;quot;17.08-20:04&amp;quot;, &amp;quot;18.08-20:01&amp;quot;, &amp;quot;19.08-19:59&amp;quot;, &amp;quot;20.08-19:57&amp;quot;, &amp;quot;21.08-19:54&amp;quot;, &amp;quot;22.08-19:52&amp;quot;, &amp;quot;23.08-19:49&amp;quot;, &amp;quot;24.08-19:47&amp;quot;, &amp;quot;25.08-19:44&amp;quot;, &amp;quot;26.08-19:42&amp;quot;, &amp;quot;27.08-19:39&amp;quot;, &amp;quot;28.08-19:37&amp;quot;, &amp;quot;29.08-19:34&amp;quot;, &amp;quot;30.08-19:32&amp;quot;, &amp;quot;31.08-19:29&amp;quot;, &amp;quot;01.09-19:27&amp;quot;, &amp;quot;02.09-19:24&amp;quot;, &amp;quot;03.09-19:22&amp;quot;, &amp;quot;04.09-19:19&amp;quot;, &amp;quot;05.09-19:16&amp;quot;, &amp;quot;06.09-19:14&amp;quot;, &amp;quot;07.09-19:11&amp;quot;, &amp;quot;08.09-19:09&amp;quot;, &amp;quot;09.09-19:06&amp;quot;, &amp;quot;10.09-19:03&amp;quot;, &amp;quot;11.09-19:01&amp;quot;, &amp;quot;12.09-18:58&amp;quot;, &amp;quot;13.09-18:55&amp;quot;, &amp;quot;14.09-18:53&amp;quot;, &amp;quot;15.09-18:50&amp;quot;, &amp;quot;16.09-18:47&amp;quot;, &amp;quot;17.09-18:45&amp;quot;, &amp;quot;18.09-18:42&amp;quot;, &amp;quot;19.09-18:39&amp;quot;, &amp;quot;20.09-18:37&amp;quot;, &amp;quot;21.09-18:34&amp;quot;, &amp;quot;22.09-18:32&amp;quot;, &amp;quot;23.09-18:29&amp;quot;, &amp;quot;24.09-18:26&amp;quot;, &amp;quot;25.09-18:24&amp;quot;, &amp;quot;26.09-18:21&amp;quot;, &amp;quot;27.09-18:18&amp;quot;, &amp;quot;28.09-18:16&amp;quot;, &amp;quot;29.09-18:13&amp;quot;, &amp;quot;30.09-18:10&amp;quot;, &amp;quot;01.10-18:08&amp;quot;, &amp;quot;02.10-18:05&amp;quot;, &amp;quot;03.10-18:02&amp;quot;, &amp;quot;04.10-18:00&amp;quot;, &amp;quot;05.10-17:57&amp;quot;, &amp;quot;06.10-17:55&amp;quot;, &amp;quot;07.10-17:52&amp;quot;, &amp;quot;08.10-17:50&amp;quot;, &amp;quot;09.10-17:47&amp;quot;, &amp;quot;10.10-17:44&amp;quot;, &amp;quot;11.10-17:42&amp;quot;, &amp;quot;12.10-17:39&amp;quot;, &amp;quot;13.10-17:37&amp;quot;, &amp;quot;14.10-17:34&amp;quot;, &amp;quot;15.10-17:32&amp;quot;, &amp;quot;16.10-17:29&amp;quot;, &amp;quot;17.10-17:27&amp;quot;, &amp;quot;18.10-17:24&amp;quot;, &amp;quot;19.10-17:22&amp;quot;, &amp;quot;20.10-17:20&amp;quot;, &amp;quot;21.10-17:17&amp;quot;, &amp;quot;22.10-17:15&amp;quot;, &amp;quot;23.10-17:12&amp;quot;, &amp;quot;24.10-17:10&amp;quot;, &amp;quot;25.10-17:08&amp;quot;, &amp;quot;26.10-17:05&amp;quot;, &amp;quot;27.10-17:03&amp;quot;, &amp;quot;28.10-17:01&amp;quot;, &amp;quot;29.10-16:59&amp;quot;, &amp;quot;30.10-16:56&amp;quot;, &amp;quot;31.10-16:54&amp;quot;, &amp;quot;01.11-16:52&amp;quot;, &amp;quot;02.11-16:50&amp;quot;, &amp;quot;03.11-16:48&amp;quot;, &amp;quot;04.11-16:46&amp;quot;, &amp;quot;05.11-16:44&amp;quot;, &amp;quot;06.11-16:42&amp;quot;, &amp;quot;07.11-16:40&amp;quot;, &amp;quot;08.11-16:38&amp;quot;, &amp;quot;09.11-16:36&amp;quot;, &amp;quot;10.11-16:34&amp;quot;, &amp;quot;11.11-16:32&amp;quot;, &amp;quot;12.11-16:30&amp;quot;, &amp;quot;13.11-16:28&amp;quot;, &amp;quot;14.11-16:27&amp;quot;, &amp;quot;15.11-16:25&amp;quot;, &amp;quot;16.11-16:23&amp;quot;, &amp;quot;17.11-16:22&amp;quot;, &amp;quot;18.11-16:20&amp;quot;, &amp;quot;19.11-16:18&amp;quot;, &amp;quot;20.11-16:17&amp;quot;, &amp;quot;21.11-16:15&amp;quot;, &amp;quot;22.11-16:14&amp;quot;, &amp;quot;23.11-16:13&amp;quot;, &amp;quot;24.11-16:11&amp;quot;, &amp;quot;25.11-16:10&amp;quot;, &amp;quot;26.11-16:09&amp;quot;, &amp;quot;27.11-16:08&amp;quot;, &amp;quot;28.11-16:07&amp;quot;, &amp;quot;29.11-16:05&amp;quot;, &amp;quot;30.11-16:04&amp;quot;, &amp;quot;01.12-16:04&amp;quot;, &amp;quot;02.12-16:03&amp;quot;, &amp;quot;03.12-16:02&amp;quot;, &amp;quot;04.12-16:01&amp;quot;, &amp;quot;05.12-16:00&amp;quot;, &amp;quot;06.12-16:00&amp;quot;, &amp;quot;07.12-15:59&amp;quot;, &amp;quot;08.12-15:59&amp;quot;, &amp;quot;09.12-15:58&amp;quot;, &amp;quot;10.12-15:58&amp;quot;, &amp;quot;11.12-15:57&amp;quot;, &amp;quot;12.12-15:57&amp;quot;, &amp;quot;13.12-15:57&amp;quot;, &amp;quot;14.12-15:57&amp;quot;, &amp;quot;15.12-15:57&amp;quot;, &amp;quot;16.12-15:57&amp;quot;, &amp;quot;17.12-15:57&amp;quot;, &amp;quot;18.12-15:57&amp;quot;, &amp;quot;19.12-15:57&amp;quot;, &amp;quot;20.12-15:58&amp;quot;, &amp;quot;21.12-15:58&amp;quot;, &amp;quot;22.12-15:59&amp;quot;, &amp;quot;23.12-15:59&amp;quot;, &amp;quot;24.12-16:00&amp;quot;, &amp;quot;25.12-16:00&amp;quot;, &amp;quot;26.12-16:01&amp;quot;, &amp;quot;27.12-16:02&amp;quot;, &amp;quot;28.12-16:03&amp;quot;, &amp;quot;29.12-16:04&amp;quot;, &amp;quot;30.12-16:05&amp;quot;, &amp;quot;31.12-16:06&amp;quot; };

// переопределяем +3 часа к Гринвичу
const long utcOffsetInSeconds = 10800;
// задаем частоту синхронизации 1 час
const long UpdateIntervalInMilliseconds = 3600000;

// Определение NTP-клиента для получения времени
WiFiUDP ntpUDP;
// синхронизируем время с ntp сервером pool.ntp.org
NTPClient timeClient(ntpUDP, &amp;quot;pool.ntp.org&amp;quot;, utcOffsetInSeconds, UpdateIntervalInMilliseconds);

// функция дополнения числа нулём
String c2d (byte i) { 
// добавляю ноль перед числом до 10 и преобразовываю в строку
  String str = (String)i;
  if (i &amp;lt; 10)  str = &amp;#039;0&amp;#039; + str; 
  return str;
}

void setup() {
  Serial.begin(115200);
  // Подготовка GPIO
  pinMode(5, OUTPUT);
  digitalWrite(5, 0);

  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( &amp;quot;.&amp;quot; );
  }
  Serial.println(&amp;quot;&amp;quot;);
  Serial.println(&amp;quot;WiFi connected&amp;quot;);
// в случае обрыва соединения Wifi - автоматически переподключаемся
  WiFi.setAutoReconnect(true);
  WiFi.persistent(true);
  timeClient.begin();
}

void loop() 
{
  timeClient.update();

// считываем часы и минуты
  int currentHour = timeClient.getHours();
  int currentMinute = timeClient.getMinutes();
  time_t epochTime = timeClient.getEpochTime();
  struct tm *ptm = gmtime ((time_t *)&amp;amp;epochTime);
// считываем число и месяц
  int monthDay = ptm-&amp;gt;tm_mday;
  int currentMonth = ptm-&amp;gt;tm_mon;
// формируем строку в соответствие с форматом в массивах для последующего сравнения
  String currentDateTime = c2d(monthDay)+&amp;quot;.&amp;quot;+c2d(currentMonth+1)+&amp;quot;-&amp;quot;+c2d(currentHour)+&amp;quot;:&amp;quot;+c2d(currentMinute);
  Serial.println(currentDateTime);

// проходим в цикле значения массива отключения и в случае совпадения - отключаем лампу
  for (int i = 0; i &amp;lt; 366; i++) {
    if (time_lamp_off[i] == currentDateTime) {
      Serial.println(&amp;quot;Off lamp&amp;quot;);
      digitalWrite(5, 0);
      break;
    }
 }
// проходим в цикле значения массива включения и в случае совпадения - включаем лампу
  for (int i = 0; i &amp;lt; 366; i++) {
    if (time_lamp_on[i] == currentDateTime) {
      Serial.println(&amp;quot;On lamp&amp;quot;);
      digitalWrite(5, 1);
      break;
    }
 }

// пауза - 20 сек. проверку осуществляем 3 раза в минуту, в случае, если что-то один раз сбоит - перепроверим еще пару раз, просто добавляем надёжности
  delay(20000);
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Собрано было в компактный корпус, тоже с Алика&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/avtomatizaciya-fitolampy-7.png" width="533" height="411" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь всё работает как часы, в прямом и переносном смысле 😅&lt;/p&gt;
</description>
</item>


</channel>
</rss>