Оглавление:

Подключенный почтовый ящик на солнечной энергии: 12 шагов (с изображениями)
Подключенный почтовый ящик на солнечной энергии: 12 шагов (с изображениями)

Видео: Подключенный почтовый ящик на солнечной энергии: 12 шагов (с изображениями)

Видео: Подключенный почтовый ящик на солнечной энергии: 12 шагов (с изображениями)
Видео: БОКОВУШЕЧКА У ТУАЛЕТА в плацкарте 2024, Июль
Anonim
Подключенный почтовый ящик на солнечной энергии
Подключенный почтовый ящик на солнечной энергии
Подключенный почтовый ящик на солнечной энергии
Подключенный почтовый ящик на солнечной энергии

В качестве второго Ible я опишу вам свои работы о моем подключенном почтовом ящике.

После прочтения этого руководства (и многих других), и поскольку мой почтовый ящик не находится рядом с моим домом, я хотел вдохновить меня работами Open Green Energy по подключению моего почтового ящика к моему серверу Domoticz.

Цели

  • Уведомлять Telegram о приходе писем;
  • Уведомлять Telegram о приходе посылки;
  • Проверьте, не забрали ли письма / посылки.

Мое главное ограничение

Почтовый ящик находится относительно далеко от дома, и к нему невозможно было протянуть электрический кабель для питания чего-либо.

Мне пришлось искать другое решение: солнечная энергия была хорошим решением!

Спецификация

  • Raspberry Pi (для размещения частей MQTT и Domoticz - здесь не описывается)
  • Учетная запись Telegram Bot
  • Lolin D1 mini (или Wemos…)
  • Разъем для клеммной колодки с винтовыми зажимами
  • Плата для зарядки литиевой батареи TP4056
  • Фотоэлектрическая солнечная панель 6V 2W
  • Литий-ионный аккумулятор 18650
  • Литий-ионный аккумулятор
  • PCB DIY Пайка Медный прототип Печатная плата
  • Аналоговый сервопривод SG90
  • 3 язычковых переключателя (один для писем, один для посылки и один для оформления заказа)
  • Магниты
  • Некоторые провода
  • Деревянный ящик: Так как у меня не было 3D-принтера, я реализовал свой собственный домик из дерева, чтобы получать детали электроники…
  • Запасной кабель Ethernet
  • Коммутационная плата разъема RJ45 Ethernet

  • J-B Weld
  • Некоторые шариковые подшипники
  • Винты, гайки, шайбы

Шаг 1: Глобальная схема

Глобальная схема
Глобальная схема
Глобальная схема
Глобальная схема

Красивые рисунки всегда лучше длинных выступлений;-)

Но несколько объяснений о MQTT, Domoticz и Telegram всегда приветствуются!

MQTT (Message Queuing Telemetry Transport) - это протокол обмена сообщениями, используемый для отправки данных между устройствами и другими системами в мире IoT (Интернет вещей).

Не вдаваясь в подробности, его работа основана на принципе подключения клиентов к серверу. В MQTT клиенты называются подписчиком или издателем, а сервер называется брокером.

В этом руководстве я использую только одного издателя, Lolin, подключенного к моему почтовому ящику: когда письма или посылки обнаруживаются через язычковые контакты, установленные в почтовом ящике (шаг 1 в схематике), он отправляет сообщение MQTT через WIFI брокеру (шаг 2).

Брокерская часть выполняется Mosquitto, который установлен на Raspberry Pi (шаг 3).

О Domoticz:

Как описано на исходной странице, Domoticz - это «система домашней автоматизации», позволяющая управлять различными устройствами и получать ввод от различных протоколов: MQTT - один из поддерживаемых протоколов …

Как только информация доходит до него (шаг 4), вы можете определять события: в случае почтового ящика я решил отправить уведомление Telegram (шаг 5).

Наконец, клиент Telegram настроен на моем телефоне (и на телефоне моей жены! - Шаг 6): конечная цель достигнута …

Шаг 2: Схема / Электромонтаж

Схема / Электромонтаж
Схема / Электромонтаж
Схема / Электромонтаж
Схема / Электромонтаж
Схема / Электромонтаж
Схема / Электромонтаж
Схема / Электромонтаж
Схема / Электромонтаж

Одно слово об аналоге читайте:

Прежде всего, я заметил после некоторых исследований, что Lolin mini D1 (как старый Wemos) имеет встроенный делитель напряжения для вывода A0 (учитывая 220 кОм для R1 и 100 кОм для R2 - см. Справа в таблице данных), что позволяет использовать 3,2 вольт. как максимальное аналоговое входное напряжение.

Учитывая, что максимальное выходное напряжение от батареи составляет 4,2 В (ограничено платой зарядки), и теоретически вам нужно только добавить внешний резистор (последовательно с R1), чтобы увеличить диапазон максимального входного напряжения. Затем, если вы добавите 100K последовательно с R1, вы получите следующий результат:

Вин * R1 / (R1 + R2) = Vout

4, 2 * 320K / (320K + 100K) = 3, 2

В своей схеме я решил иметь возможность регулировать его значение, поэтому я предпочел использовать в своей схеме регулируемый резистор: возможно, он будет бесполезен для вас, но в моей ситуации я установил его значение примерно на 10 кОм, чтобы иметь последовательная ценность в Domoticz…

Обратите внимание, что вывод A0 имеет разрешение 10 бит: это означает, что в вашем скетче аналоговые показания будут возвращать значение от 0 до 1024.

Поскольку я хочу отправить в Domoticz процентное значение, я должен разделить результат аналогового чтения на 10, 24.

Шаг 3: Управление мощностью

Управление питанием
Управление питанием
Управление питанием
Управление питанием

Конечно, я хочу, чтобы почтовый ящик был автономным. Для достижения своей цели я использую эти элементы:

  • аккумулятор Li-Ion 18650 емкостью 4000 мАч;
  • солнечная панель мощностью 6 В / 2 Вт;
  • Плата зарядки литиевой батареи TP4056.

Чтобы выбрать наиболее подходящую солнечную панель, я рассмотрел несколько примеров, в том числе этот: в этом примере используется солнечная панель 5,5 В / 0,66 Вт, и, вероятно, этого достаточно для этой цели. В моем случае, и поскольку ESP8266 должен оставаться включенным в течение дня и должен иметь возможность запускать серводвигатель, чтобы держать дом лицом к солнцу, я выбрал более мощную модель солнечной панели (6 В / 2 Вт) - это также позволяет мне предвидеть темные зимние периоды и пасмурные дни;-)

Также, чтобы максимально снизить расход энергии, я выбрал следующие сценарии:

  • зная, что почтальон приезжает только между 7:00 и 20:00, ESP помещается в DeepSleep на всю оставшуюся ночь;
  • Фактор не действует между полуднем субботы и утром понедельника: ESP также переводится в режим DeepSleep в течение этого периода.
  • На период с 7 утра до 8 вечера, чтобы снизить энергопотребление, я просто отключаю сетевой интерфейс ESP: сеть перезагружается только при получении посылки или письма, как раз достаточно времени, чтобы отправить информацию по адресу Domoticz. Меня не нужно сразу предупреждать, и несколько дополнительных секунд, необходимых для перезапуска сетевого интерфейса, не вредны!

Некоторая ценность потребления в разных режимах, которые я использую для Lolin - посмотрите на таблицу, стр.18:

  • В нормальном режиме (при работающей ВЧ) потребляемая мощность может увеличиваться до 170мА! Поскольку мой почтовый ящик находится примерно в 50 метрах от моего дома (и на пределе сигнала WIFI…), я полагаю, что мощность, используемая для поддержания связи, находится на максимальном уровне …
  • В режиме ожидания модема потребляемая мощность снижается до 15 мА. Но, как вы можете видеть в таблице, модем не остановился полностью, поскольку ESP «поддерживает соединение Wi-Fi без передачи данных».
  • В режиме глубокого сна мощность упала до 20 мкА.

Чтобы быть уверенным, что Wi-Fi не остается активным без необходимости, я предпочел отключить его с помощью следующих команд. Обратите внимание на множество вызовов delay () … Без них ESP выйдет из строя:

WiFi.disconnect ();

задержка (1000); WiFi.mode (WIFI_OFF); задержка (1000); WiFi.forceSleepBegin (); задержка (1);

В целом после нескольких дней эксплуатации вроде работает и особенно правильно загружается:

  • это позволяет мне запускать серводвигатель каждый час, чтобы направить дом к солнцу;
  • Я также могу позволить себе повторно активировать сетевой интерфейс каждый час, чтобы отправлять в Domoticz уровень заряда батареи.

Шаг 4: Установка контактов на магнитах и язычках

Установка контактов на магнитах и язычках
Установка контактов на магнитах и язычках
Установка контактов на магнитах и язычках
Установка контактов на магнитах и язычках
Установка контактов на магнитах и язычках
Установка контактов на магнитах и язычках

Как обычно, я использовал свой Proxxon, чтобы сформировать место язычка на дереве.

Чтобы зафиксировать язычок в отверстии, я применил немного сварного шва J-B.

Для посылки и вывода немного ленты, немного ножовки, и цель достигнута!

Преимущество моего почтового ящика в том, что он металлический, что облегчает расположение магнитов, так что он должным образом взаимодействует с язычковыми контактами.

Шаг 5: подключитесь к My Little House

Подключиться к My Little House
Подключиться к My Little House
Подключиться к My Little House
Подключиться к My Little House

Чтобы можно было легко подсоединять и отсоединять кабель, идущий к герконовым контактам от почтового ящика до дома, я решил использовать разъем Ethernet.

Вы можете использовать эту модель или, как я, использовать старый экран Arduino Ethernet, который висит в моих ящиках: он не страдал, он был храбрым перед пилой, его смерть была быстрой ^^

Несколько слов об этом щите Arduino Ethernet: не ожидайте, что у него будет 8 отдельных драйверов … Кабели соединены двумя парами внутри щита … Это слишком долго сводило меня с ума !!!

Шаг 6: В доме…

В доме …
В доме …
В доме …
В доме …

Достаточно места для крепления держателя батареи, установки сервопривода и женского разъема RJ45.

Шаг 7. Разрешите ему вращаться…

Let It Turntable…
Let It Turntable…
Let It Turntable…
Let It Turntable…
Let It Turntable…
Let It Turntable…
Let It Turntable…
Let It Turntable…

Цель состоит в том, чтобы держать его лицом к солнцу …

Чтобы иметь возможность поворачиваться, я использовал длинный винт в качестве оси с несколькими гайками и двумя шарикоподшипниками …

До сих пор я использовал сервопривод SG90 (крутящий момент: 1,8 кг / см при 4,8 В).

Перевернуть домик (и несколько его грамм) вполне достаточно. С другой стороны, я не уверен, что его пластиковые шестерни надолго выдержат частые порывы ветра, которые бывают в моем регионе.

Я заказал еще один (крутящий момент MG995: 9,4 кг / см при 4,8 В), тоже не очень дорогой, но с металлическими шестернями.

Когда я его получу, это будет следующим делом: я полагаюсь на свой подключенный почтовый ящик, чтобы уведомить меня о его прибытии!

Шаг 8: некоторые тесты

Image
Image

Несколько примечаний:

Этот эскиз предназначен только для имитации смены часов в течение дня, чтобы я мог контролировать положение сервопривода.

  • С SG90: никаких дополнительных требований, он может работать с выходным напряжением, поступающим от контроллера батареи.
  • Но с MG 995:

    • Общий угол поворота не тот (шире): мне пришлось использовать дополнительную функцию, чтобы уменьшить его (Servo_Delta ()).
    • Требуется повышающий уровень постоянного / постоянного тока, чтобы обеспечить достаточное напряжение на сервопривод … продолжение следует …

/*

- ТЕСТ с SG90: никаких дополнительных требований, он может работать с выходным напряжением, поступающим от контроллера батареи - ДЛЯ MG 995: - используйте функцию Servo_Delta ()… - Требуется повышение постоянного / постоянного тока, чтобы обеспечить достаточное напряжение на сервопривод … продолжение следует: * / #include bool Logs = true; Сервомашина; #define PIN_SERVO D2 // положение сервопривода для: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h // int Arr_Servo_Pos = {177, 173, 163, 148, 133, 118, 100, 80, 61, 41, 28, 15, 2, 2, 2}; int Arr_Servo_Pos = {180, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 0, 0, 0}; int old; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (я = 7; я <= 22; я ++) {старый = я; if (i == 7) {if (Logs) Serial.println ("Позиционирование сервопривода для 7 Heure"); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; индекс 7 && i = Arr_Servo_Pos [i-7]; index -) {if (Logs) Serial.println (показатель); if (Logs) Serial.print ("Скорректированное значение:"); if (журналы) Serial.println (Servo_Delta (index)); задержка (200); //myservo.write(Servo_Delta(index)); myservo.write (индекс); } задержка (15); myservo.write (Arr_Servo_Pos [i-7]); // снова записываем последнее значение, чтобы избежать резких движений при обработке данных myservo.detach (); }}} задержка (2000); }} int Servo_Delta (целое значение) {int Temp_val; Temp_val = (значение * 0,80) +9; return Temp_val; }

Шаг 9: Маленький домик

Маленький дом
Маленький дом
Маленький дом
Маленький дом
Маленький дом
Маленький дом

Как я уже говорил, у меня не было 3D-принтера. Поэтому я решил использовать старый овощной ящик …

Может быть, это не продержится долго, но к тому времени у меня будет время подумать над другим решением (или с другом, у которого есть 3D-принтер): чтобы защитить дерево, я повсюду добавил много лака …

Вы можете видеть "красивые занавески" … Вот что происходит, когда вы просите жену сделать эту работу ^^

Шаг 10: набросок

В процессе… Но вроде стабильно

Я все еще работаю над кодом: так как это не окончательная версия, ваши комментарии / советы приветствуются;-)

Некоторые замечания:

  • В коде много задержек (): это сделано для того, чтобы избежать частых сбоев Lolin, особенно при остановке стартовой сети …
  • Я не нашел простого и надежного способа получить азимут солнца: поэтому я установил значение сервопривода в зависимости от того, что я наблюдал … У вас есть хороший (и простой) способ получить его, мне интересно! трек для изучения здесь, даже если я предпочитаю онлайн-API, дает мне азимут непосредственно в соответствии с датой, часом и географическим положением …
  • О технике сна: поскольку Lolin - это 32-битный процессор Tensilica, его максимальное значение для 32-битного целого числа без знака составляет 4294967295… тогда он дает максимум 71 минуту для интервала глубокого сна. Вот почему я заставляю спать l'ESP много раз примерно по 60 минут …

РЕДАКТИРОВАТЬ - 10.08.2018:

Я обнаружил, что сервопривод имеет много резких движений, особенно перед привязкой (), отсоединением () и каждый раз, когда Лолин просыпается из deepSleep ().

Изучая еще немного таблиц, я понял две вещи:

  • В таблице данных Lolin выход D4 уже подключен к BUILTIN_LED…
  • В таблице данных ESP8266ex мы узнаем, что выход D4 используется как UART 1 / U 1 TXD (универсальный асинхронный приемный передатчик). Также указано, что этот UART1 используется для печати журнала.

Прочитав эту информацию, я понял, что выход D4 был не очень хорошей идеей, особенно для управления серводвигателем!

Итак, теперь для управления серводвигателем используется выход D2, и приведенный ниже код был соответствующим образом обновлен.

//****************************************

Дата создания: 08 / Дата выпуска: 08 / Версия: 0.9.4 Версия IDE Arduino: 1.8.6 Скорость загрузки: 921600 Тип карты в идентификаторе: "LOLIN (WEMOS) D1 R2 & mini" Картография сотрудников: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Функция вывода ESP-8266 Язык использования PIN-кода ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Аналоговый вход, макс. Вход 3,3 В A0 Напряжение питания D0 IO GPIO16 Подключение к RST (для глубокого сна) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k Pull-up GPIO0 D4 IO, 10k pull-up, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed relève D6 IO, MISO GPIO12 Reed lettre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull down, SS GPIO15 G Ground GND 5V 5V - 3V3 3.3V 3.3V RST Reset RST Connecté à D0 (залить глубоко.sleep) *************************************** / #include bool Logs = true; // Wi-Fi const char * ssid = "LOL"; const char * password = "LOL"; IP-адрес ip (192, 168, 000, 000); IP-адрес dns (192, 168, 000, 000); IP-адрес шлюза (192, 168, 000, 000); IP-адрес подсети (255, 255, 000, 000); Клиент WiFiClient; // Сервопривод #include #define PIN_SERVO D2 Servo myservo; // положение сервопривода для: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h int Arr_Servo_Pos = {179, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 1, 1, 1}; // Язычки #define PIN_SWITCH_OUT D5 byte Old_Switch_State_OUT; байт Switch_State_OUT; #define PIN_SWITCH_IN_PARCEL D6 byte Old_Switch_State_IN_PARCEL; байт Switch_State_IN_PARCEL; #define PIN_SWITCH_IN_LETTER D7 byte Old_Switch_State_IN_LETTER; байт Switch_State_IN_LETTER; беззнаковый длинный switchPressTime; const unsigned long DEBOUCE_TIME = 200; // Аналог #define PIN_ANALOG A0 // MQTT #include const char * MQTT_Server_IP = "Ваш адрес MQTT"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (клиент); char MQTT_Message_Buff [70]; Строка MQTT_Pub_String; // Поплавок натяжения vcc; // NTP #include time_t tnow; int Old_Time = 0; int Int_Heures = 0; int Int_Minutes = 0; интервал Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); сеть (правда); pinMode (PIN_SWITCH_OUT, INPUT_PULLUP); Old_Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); pinMode (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Old_Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); сеть (ложь); // NTP set tnow = time (nullptr); Int_Heures = Строка (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = Строка (ctime (& tnow)). Substring (14, 16).toInt (); // Глубокий сон на ночь if (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("минуты)"); сон (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = Строка (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = Строка (ctime (& tnow)). Substring (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Substring (11, 13)); //Serial.println (String (ctime (& tnow)). Substring (11, 13).toInt ()); // Управление сервоприводом if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Logs) Serial.println ("Позиционирование сервопривода для 7 Heure"); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; index 7 && Int_Heures = Arr_Servo_Pos [Int_Heures-7]; index -) {if (Logs) Serial.println (показатель); задержка (200); myservo.write (индекс); } задержка (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // снова записываем последнее значение, чтобы избежать резких движений при отсоединении myservo.detach (); } сеть (истина); SendBatteryLevel (); сеть (ложь); }}} // Глубокий сон, если в субботу после 13 часов if ((String (ctime (& tnow)). Substring (0, 3) == "Sat") && (Int_Heures> = 13)) {if (Logs) Serial.print ("Sleep pour le samedi aprés midi ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minutes)"); сон (Int_Sleep_Duration - Int_Minutes); } // Глубокий сон, если воскресенье if (String (ctime (& tnow)). Substring (0, 3) == "Sun") {if (Logs) Serial.print ("Sleep pour le dimanche ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (журналы) Serial.println ("минуты)"); сон (Int_Sleep_Duration - Int_Minutes); } // Управление язычками Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); if (Switch_State_OUT! = Old_Switch_State_OUT) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); если (Switch_State_OUT == HIGH) {Serial.println ("курьер релеве!"); сеть (правда); задержка (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, «0»); задержка (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, «0»); задержка (5000); сеть (ложь); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); if (Switch_State_IN_LETTER! = Old_Switch_State_IN_LETTER) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); если (Switch_State_IN_LETTER == HIGH) {Serial.println ("курьер прибыл!"); сеть (правда); задержка (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Курьер"); задержка (5000); сеть (ложь); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); if (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); если (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrivé!"); сеть (правда); задержка (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, «Колис»); задержка (5000); сеть (ложь); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {задержка (5000); vcc = analogRead (PIN_ANALOG) /10,24; if (журналы) Serial.println ("\ tTension relée:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, строка (vcc, 0)); задержка (5000); } недействительный сон (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print ("Запуск сети"); WiFi.forceSleepWake (); задержка (1); // инициализируем WIFI WiFi.config (ip, dns, gateway, subnet); WiFi.begin (ssid, пароль); в то время как (WiFi.status ()! = WL_CONNECTED) {задержка (500); Serial.print ("."); } задержка (5000); Serial.println ("."); Serial.print ("\ tConnected - IP-адрес:"); Serial.println (WiFi.localIP ()); // инициализируем MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Запускаем NTP Serial.print ("\ tTime Synch."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0 / 3 ", 0); while (time (nullptr) <= 100000) {Serial.print ("."); Delay (100);} Serial.println (".");} Else {Serial.println ("Остановка сети."); WiFi.disconnect (); delay (1000); WiFi.mode (WIFI_OFF); delay (1000); WiFi.forceSleepBegin (); delay (1);}} void reconnect () {while (! ClientMQTT.connected ()) {Serial.print (" / tAttempting MQTT connection… "); // Попытка подключиться if (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" connected ");} else {Serial.print (" failed, rc = "); Serial.print (ClientMQTT.state ()); Serial.println («попробуйте еще раз через 5 секунд»); // Подождите 5 секунд перед повторной попыткой delay (5000);}}} void MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) reconnect (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tОтправить информацию в MQTT…"); MQTT_Pub_String = "{" idx / ":" + String (Int_IDX) + ", \" Батарея / ":" + String (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" "+ S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length () + 1); ClientMQTT.publish ("domoticz / in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

Шаг 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

В Domoticz:

Для общего пользования:

  • Создайте два «Dummy (ничего не делает, используйте для виртуальных коммутаторов)»:

    1. Первый для букв…
    2. Второй для посылки…
  • Для каждого из них персонализируйте уведомления;
  • Конечно, вам нужно настроить свой токен Tegegram.

Необязательно:

Вы можете добавить «служебный датчик» для контроля уровня заряда аккумулятора.

Советы: здесь вы можете найти множество бесплатных пользовательских значков…

Шаг 12: Заключение

Заключение
Заключение
Заключение
Заключение

Надеюсь, это руководство поможет вам:

  • стоит ли создавать свой собственный подключенный почтовый ящик;
  • или просто дать вам несколько идей для ваших проектов!

Если есть идеи по улучшению, слушаю!

PS: извините за мой английский, перевод Google мне очень помогает, но, вероятно, не идеален;-)

Рекомендуемые: