Esp8266 ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ MQTT

Esp8266 ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ MQTT
ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказано ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π·Π° 20 ΠΌΠΈΠ½ΡƒΡ‚ свободного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ дистанционноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ esp8266 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прилоТСния Π½Π° Android ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ MQTT.

ИдСя дистанционного управлСния ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° всСгда Π±ΡƒΠ΄ΠΎΡ€Π°ΠΆΠΈΠ»Π° ΡƒΠΌΡ‹ ΡƒΠ²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π² элСктроникС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ людСй. Π’Π΅Π΄ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ зависимо ΠΎΡ‚ своСго мСстополоТСния, Π΄Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности. Π’ своих ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ( Π‘Ρ‚Π°Ρ‚ΡŒΡ 1 ΠΈ Π‘Ρ‚Π°Ρ‚ΡŒΡ 2) я пытался Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ нСсколько доступных ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простых Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ дистанционного управлСния ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Однако врСмя ΠΈ вСсь ΠΌΠΈΡ€ Π½Π΅ стоит Π½Π° мСстС – прогрСсс ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ своС Π½Π΅ΡƒΠΌΠΎΠ»ΠΈΠΌΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΠ΅Ρ€Π΅Π΄. Π—Π° это нСбольшоС врСмя ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π» ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ esp8266 ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ благодаря Π½ΠΈΠ·ΠΊΠΎΠΉ Ρ†Π΅Π½Π΅ ΠΈ встроСнному wi-fi стал ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· основных ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Β«Π£ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ°Β».

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ MQTT являСтся ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹ΠΌ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярным ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ устройствами Π² Ρ€Π°ΠΌΠΊΠ°Ρ… систСм Β«Π£ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ°Β». Он ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом прСимущСств ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ:
β€” Π½ΠΈΠ·ΠΊΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°;
β€” соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром всСгда ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ;
β€” Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠ°Π½Π°Π»;
β€” отсутствиС Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ…;
β€” удобная систСма подписок Π½Π° Ρ‚ΠΎΠΏΠΈΠΊΠΈ;
Всё это Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ управлСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Однако MQTT Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ своСго собствСнного сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Ρ€ΠΎΠ»ΡŒ посрСдника ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ сСти. Π’ΡƒΡ‚ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свой сСрвСр Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сторонниС сСрвисы.

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΠ°Ρ систСма управлСния состоит ΠΈΠ· Π΄Π²ΡƒΡ… основных частСй: сСрвСра MQTT (ΠΎΠ½ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ΄ΠΈΠ½) ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ. Π’ нашСм случаС Π² качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Android ΠΈ сам ΠΌΠΎΠ΄ΡƒΠ»ΡŒ esp8266.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ сСрвСру ΠΈ сразу послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… осущСствляСт подписку Π½Π° ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ Ρ‚ΠΎΠΏΠΈΠΊΠΈ. Всё ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСнаправляСт Π΄Π°Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΈΡ… подписок.

MQTT сСрвСр.

Π’ нашСм случаС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ сСрвис www.cloudmqtt.com Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ бСсплатный Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ (Cute Cat), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΊΡ€ΠΎΠ΅Ρ‚ потрСбности для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нСбольшой собствСнной систСмы Β«ΡƒΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ°Β».
Esp8266 ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ MQTT
ΠŸΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π½Π° сайтС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для доступа ΠΊ сСрвСру. ΠŸΡ€ΠΈ настройкС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠŸΠΎΡ€Ρ‚ ( Π±Π΅Π· SSL ΠΈ TLS).
Esp8266 ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ MQTT

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Android.

НашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² качСствС ΠΏΡƒΠ»ΡŒΡ‚Π° управлСния для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ всю ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ esp8266.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ называСтся IoT MQTT Dashboard ΠΈ прСдставляСт собой Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ mqtt ΠΊΠ»ΠΈΠ΅Π½Ρ‚ с нСбольшим количСством ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ². Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ.

Esp8266.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π² срСдС программирования Arduino, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρƒ модуля ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ Π² послСдних вСрсиях Arduino, поэтому Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 1.6.4.
Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊ esp8266 ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ свСтодиод (5 ΠΏΠΈΠ½) ΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ds18b20 (2 ΠΏΠΈΠ½).
Π’Π°ΠΊ ΠΊΠ°ΠΊ для управлСния свСтодиода Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ esp послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ подписку Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠΏΠΈΠΊ Β«test/ledΒ» ΠΈΠ½Π°Ρ‡Π΅ всС ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΉΠ΄ΡƒΡ‚ ΠΌΠΈΠΌΠΎ нашСго ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.
Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ подписка Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΏΠΈΠΊ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΉΠ΄ΡƒΡ‚.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ скСтч с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ коммСнтариями.

Π‘ΠΊΠ΅Ρ‚Ρ‡ Esp8266_mqtt.ino// Π‘Π²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ ΠΏΠΎΠ΄Π»ΠΊΡŽΡ‡Π΅Π½ ΠΊ 5 ΠΏΠΈΠ½Ρƒ
// Π”Π°Ρ‚Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ds18b20 ΠΊ 2 ΠΏΠΈΠ½Ρƒ

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const char *ssid = "AIRPORT"; // Имя Π²Π°ΠΉΡ„Π°ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ доступа
const char *pass = "PASSWORD"; // ΠŸΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ доступа

const char *mqtt_server = "server"; // Имя сСрвСра MQTT
const int mqtt_port = 11140; // ΠŸΠΎΡ€Ρ‚ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру MQTT
const char *mqtt_user = "Login"; // Π›ΠΎΠ³ΠΈ ΠΎΡ‚ сСрвСр
const char *mqtt_pass = "Pass"; // ΠŸΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ сСрвСра

#define BUFFER_SIZE 100

bool LedState = false;
int tm=300;
float temp=0;

// Ѐункция получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ сСрвСра

void callback(const MQTT::Publish& pub)
{
Serial.print(pub.topic()); // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² сСриал ΠΏΠΎΡ€Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠΈΠΊΠ°
Serial.print(" => ");
Serial.print(pub.payload_string()); // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² сСриал ΠΏΠΎΡ€Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

String payload = pub.payload_string();

if(String(pub.topic()) == "test/led") // провСряСм ΠΈΠ· Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π»ΠΈ Π½Π°ΠΌ Ρ‚ΠΎΠΏΠΈΠΊΠ° ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅
{
int stled = payload.toInt(); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚ΠΈΠΏ integer
digitalWrite(5,stled); // Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ свСтодиод Π² зависимоти ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ…
}
}

WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);

void setup() {

sensors.begin();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(5, OUTPUT);
}

void loop() {
// ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ wi-fi
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);

if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi connected");
}

// ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ MQTT сСрвСру
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Connecting to MQTT server");
if (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Connected to MQTT server");
client.set_callback(callback);
client.subscribe("test/led"); // подписывааСмся ΠΏΠΎ Ρ‚ΠΎΠΏΠΈΠΊ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для свСтодиода
} else {
Serial.println("Could not connect to MQTT server");
}
}

if (client.connected()){
client.loop();
TempSend();
}

}
} // ΠΊΠΎΠ½Π΅Ρ† основного Ρ†ΠΈΠΊΠ»Π°

// Ѐункция ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ с Ρ‚Π΅Ρ€ΠΌΠΎΠ΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°
void TempSend(){
if (tm==0)
{
sensors.requestTemperatures(); // ΠΎΡ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹
float temp = sensors.getTempCByIndex(0);
client.publish("test/temp",String(temp)); // отправляСм Π² Ρ‚ΠΎΠΏΠΈΠΊ для Ρ‚Π΅Ρ€ΠΌΠΎΠ΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹
Serial.println(temp);
tm = 300; // ΠΏΠ°ΡƒΠ·Π° ΠΌΠ΅Π΄Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΊΠΎΠ»ΠΎ 3 сСкунд
}
tm--;
delay(10);
}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт для дистанционного управлСния ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ довольно прост Π² освоСнии ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ силу Π΄Π°ΠΆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ.

Π’ΠΈΠ΄Π΅ΠΎ с дСмонстрациСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы управлСния

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ видСоинструкция ΠΏΠΎ настройкС систСмы

Один ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² примСнСния управлСния esp8266 Ρ‡Π΅Ρ€Π΅Π· MQTT ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ свСтодиодной Π»Π΅Π½Ρ‚ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚

Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ вопросы ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρƒ, Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ, Π³Π΄Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ наглядно.

Π’ Π°Ρ€Ρ…ΠΈΠ²Π΅ находятся скСтч ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° скСтчСм ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.
ΠžΠ±Ρ€Π°Ρ‰Π°ΡŽ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ESP8266WiFi.h Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΄Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ², ΠΎΠ½Π° устанавливаСтся Ρ‡Π΅Ρ€Π΅Π· Boards manager Π² срСдС Arduino.

АРΠ₯Π˜Π’

MQTT сСрвСр β€” www.cloudmqtt.com

Бсылка Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ IoT MQTT Dashboard β€” play.google.com/store/apps/details?id=com.thn.iotmqttdashboard&hl=ru

ВсСм спасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com