Оглавление:
- Шаг 1: Глобальная схема
- Шаг 2: Схема / Электромонтаж
- Шаг 3: Управление мощностью
- Шаг 4: Установка контактов на магнитах и язычках
- Шаг 5: подключитесь к My Little House
- Шаг 6: В доме…
- Шаг 7. Разрешите ему вращаться…
- Шаг 8: некоторые тесты
- Шаг 9: Маленький домик
- Шаг 10: набросок
- Шаг 11: Domoticz
- Шаг 12: Заключение
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В качестве второго 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
Чтобы можно было легко подсоединять и отсоединять кабель, идущий к герконовым контактам от почтового ящика до дома, я решил использовать разъем Ethernet.
Вы можете использовать эту модель или, как я, использовать старый экран Arduino Ethernet, который висит в моих ящиках: он не страдал, он был храбрым перед пилой, его смерть была быстрой ^^
Несколько слов об этом щите Arduino Ethernet: не ожидайте, что у него будет 8 отдельных драйверов … Кабели соединены двумя парами внутри щита … Это слишком долго сводило меня с ума !!!
Шаг 6: В доме…
Достаточно места для крепления держателя батареи, установки сервопривода и женского разъема RJ45.
Шаг 7. Разрешите ему вращаться…
Цель состоит в том, чтобы держать его лицом к солнцу …
Чтобы иметь возможность поворачиваться, я использовал длинный винт в качестве оси с несколькими гайками и двумя шарикоподшипниками …
До сих пор я использовал сервопривод SG90 (крутящий момент: 1,8 кг / см при 4,8 В).
Перевернуть домик (и несколько его грамм) вполне достаточно. С другой стороны, я не уверен, что его пластиковые шестерни надолго выдержат частые порывы ветра, которые бывают в моем регионе.
Я заказал еще один (крутящий момент MG995: 9,4 кг / см при 4,8 В), тоже не очень дорогой, но с металлическими шестернями.
Когда я его получу, это будет следующим делом: я полагаюсь на свой подключенный почтовый ящик, чтобы уведомить меня о его прибытии!
Шаг 8: некоторые тесты
Несколько примечаний:
Этот эскиз предназначен только для имитации смены часов в течение дня, чтобы я мог контролировать положение сервопривода.
- С 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:
Для общего пользования:
-
Создайте два «Dummy (ничего не делает, используйте для виртуальных коммутаторов)»:
- Первый для букв…
- Второй для посылки…
- Для каждого из них персонализируйте уведомления;
- Конечно, вам нужно настроить свой токен Tegegram.
Необязательно:
Вы можете добавить «служебный датчик» для контроля уровня заряда аккумулятора.
Советы: здесь вы можете найти множество бесплатных пользовательских значков…
Шаг 12: Заключение
Надеюсь, это руководство поможет вам:
- стоит ли создавать свой собственный подключенный почтовый ящик;
- или просто дать вам несколько идей для ваших проектов!
Если есть идеи по улучшению, слушаю!
PS: извините за мой английский, перевод Google мне очень помогает, но, вероятно, не идеален;-)