№ 10029 В разделах: 3D printing
Electronics
от May 11th, 2019,
В подшивках: 3D модель, Smart Home
https://www.thingiverse.com/thing:3621513
Под 2-канальное реле
https://www.thingiverse.com/thing:3625989
Ссылки по теме:
№ 9737 В разделах: Electronics
ESP8266
Programming
от February 13th, 2019,
В подшивках: ESP8266, Smart Home, WifiManager
In Arduino IDE library you can find wifi manager (https://github.com/tzapu/WiFiManager). It will help you to connect your device to you home wifi without hardcoding credentials.
My projects where used wifi managers:
If you interested check whole tag.
Sample code:
#include <ESP8266WiFi.h> #include <DNSServer.h> #include <ESP8266WebServer.h> #include <WiFiManager.h> void setup() { .... WiFiManager wifiManager; wifiManager.autoConnect("my-device-name"); .... }
More examples here.
№ 8455 В разделах: Electronics
Programming
от September 8th, 2017,
В подшивках: MQTT, Python, Smart Home
Так уж случилось, что я стал крутым пацаном и начал делать интернет вещей 😀 В общем, для начала необходимо установить модуль paho-mqtt. А еще лучше сначала сделать виртуальное окружение и уже потом туда установить всё нужное.
sudo apt install python3-venv cd /opt && pyvenv mymqtt source mymqtt/bin/activate pip install wheel pip install paho-mqtt
Ну вот вроде и всё. Теперь можно приступать к работе 🙂 Открываем документацию и читаем. На этом запись можно заканчивать, но я всё-таки покажу вам пару примеров. Я люблю разносить все в разные файлы поэтому некоторые вещи будут работать через библиотеки в поддиректориях.
Итак, я создал директорию с проектом, где есть поддиректория libs и именно в нее я положу свою библиотечку для работы с mqtt.
import sys sys.path.append("..") import paho.mqtt.subscribe as subscribe import paho.mqtt.publish as publish import config def pub(topic, msg, retained=False): print("Connecting {}".format(config.mqtt_cred["hostname"])) publish.single(topic,msg,hostname=config.mqtt_cred["hostname"], port=config.mqtt_cred["port"],auth=config.mqtt_cred["auth"],retain=retained) def sub(callback_function, topic, wait=False): subscribe.callback(callback_function, topic, hostname=config.mqtt_cred["hostname"], port=config.mqtt_cred["port"],auth=config.mqtt_cred["auth"])
Сразу же заметна вторая строка. Прикол в том, что у меня на уровне выше лежит конфигурационный файл и я просто добавил в PYTHON_PATH его местоположение. В функции sub я сделал передачу callback функции через параметры, а сама функция описана в файле основной программы. Конечно, я мог ее написать прямо тут, но тогда бы я считал это говнокодом 🙂
Теперь можно поугарать в файле основной программы
from libs import libmqtt def any_message_received(client, userdata, message): '''Callback function on_message, catch any message and process it''' topic=message.topic value = message.payload.decode("utf-8") print(topic, value) libmqtt.sub(any_message_received, "#")
any_message_received
и есть та самая callback функция. На нее я возложил парсинг всего, что приходит из шины. Муторно, но зато делает то, что мне нужно 🙂
А теперь вишенка! Конфиг
'''Config module''' mqtt_cred={ "hostname": "myserver", "port": 5883, "auth": {"username":"mymqtt","password":"longlongpen1s"} }
Fortune cookie: There's a vas deferens between men and women.