Elecrow W5 je još jedna od varijacija na temu Raspberry Pi Pico 2 modela. Najznačajnija razlika ova dva sistema krije se u bežičnom modulu, naime Elecrow se odlučio za manje poznat BW16 baziran na RTL8720DN čipu. O tehničkim detaljima pisali smo u specijalizovanom prikazu Elecrow W5.
Podešavanje MQTT komunikacije na Home Assistant OS-u
Specifičnost ovog projekta je upravo način kojim se upravlja radom ugrađenog BW16 modula, a koji ima sve potrebne AT komande za MQTT komunikaciju. Kao osnovni softver za automatizaciju doma (home automation) korišćen je Home Assistant koga smo instalirali na Mixtile Edge 2 računaru. Ovaj edge računar baziran na Rockchip RK3568 koji bez problema pokreće njemu prilagođen Home Assistant OS (supervisor).

Ukoliko krećete od čiste instalacije Home Assistant-a, dobro je instalirati i par korisnih add-on-ova. Za editovanje konfiguracionog configuration.yaml fajla, zgodno je dodati ili File editor ili Studio Code Server koji je ugodniji za rad, ali i nešto zahtevniji što se neophodnih resursa tiče.
Najbitniji add-on je Open Source Mosquitto Broker koji će omogućiti slanje i primanje podataka na MQTT server koji se nalazi na Mixtile Edge 2 ili durgom računaru koji ste sami izabrali da pokreće Open Source Home Assistant softver. Nakon instalacije potrebno je dodatno konfigurisati MQTT Broker. Konfiguracija se radi u dva koraka. Prvo je u polju Logins potrebno upisati korisničko ime i lozinku Home Assistant naloga koji koristite za pristup MQTT serveru ukoliko nemate administratorske privilegije. Mi smo kao u ovom primeru koristili kombinaciju elecroww5 i lozinka. Ako ste se ulogovali kao administrator, nema potrebe da unosite ova dva elementa.
- username: elecroww5
password: lozinka

Ostao je još jedan parametar koji morate da upišete u YAML fajl, a koji je nemoguće dodati direktno iz UI-a podešavanja. Odaberite tri tačke u desnom gornjem uglu, pa zatim Edit in YAML. Na kraju fajla treba dodati discovery: true, pa on treba da izgleda kao na slici ispod. Nakon toga potrebno je samo klikom na START pokrenuti MQTT Broker. Uočite na slici ispod da je MQTT Broker port 1883.

Kada je naš računar, Mixtile Edge 2, sa Home Assistant OS-om pokrenuo MQTT server na sebi, potražili smo aktivne MQTT uređaje. Prvi korak je bio da u meniju Settings/Devices & Services/+ ADD INTEGRATION instaliramo MQTT „brand“. U okviru instalacije se podešava i pristup, unošenjem porta 1883, kao i username i password vrednosti koje smo definisali ranije. (elecroww5 i lozinka u našem slučaju). Od ovog trenutka je aktivan i povezan MQTT listener koji očekuje informacije od Elecrow W5. U realnim primerima to bi bila očitavanja vrednosti nekog senzora povezanog za Elecrow W5 ili neki od internih proračunskih parametara. Mi ćemo u ovom primeru slati vrednost koju generiše sam Elecrow W5 da bi akcenat stavili na samu vezu Elecrow W5-MQTT-Home Assistant.
Realizacija u MicroPython jeziku
U recenziji Elecrow W5 baziranog na Raspberry Pi RP2350A mikrokontroleru, rekli smo da su dostupna dva programska okruženja: Python i Arduino. Za potrebe ove demonstracije napisali smo veoma jednostavan program u Pythonu koji smo porenuli na Elecrow W5. Program omogućava povezivanje razvojnog sistema sa MQTT serverom i periodično slanje unapred definisanog podatka. MQTT listener na portu 1883 prima vrednosti i prikazuje na Home Assistant ekranu. Za komunikaciju Elecrow W5 i Mixtile Edge 2 koristili smo lokalnu mrežu na 192.168.0.x, sa tim da je Elecrow W5 mreži pristupao preko svog bežičnog modula BW16. Korišćene su postojeće AT komande iz AI-Thinker biblioteke, posebno one koje služe za MQTT komunikaciju. Zbog preglednosti kod je zapravo uprošćen i od sintaksnih grešaka očišćen Elecrow MQTT demo koji je dat na sajtu.
from machine import UART, Pin
import time
# Setting BW16 module
cmd_WIFI_1 = "AT+WMODE=3,1\n" # Set the wifi mode to AP+STA
cmd_WIFI_2 = "AT+WJAP=SSID,password" # Wi-fi settings
cmd_MQTT_1 = "AT+MQTT=1,192.168.0.98\n" # Home Assistant with MQTT server IP address
cmd_MQTT_2 = "AT+MQTT=2,1883\n" # MQTT Server port
cmd_MQTT_3 = "AT+MQTT=3,1\n" # TCP MQTT mod
cmd_MQTT_4 = "AT+MQTT=5,elecroww5\n" # MQTT user name
cmd_MQTT_5 = "AT+MQTT=6,lozinka\n" # MQTT user password
cmd_MQTT_6 = "AT+MQTT\n" # Connect to MQTT
cmd_MQTT_7 = "AT+MQTTSUB=TP,0\n" # Subscribe to a topic TP with QoS 0
cmd_MQTT_9 = "AT+MQTTPUBRAW=TP,0,0,9\n" # Publish data to the topic TP
# Elecrow W5 initialize UART1 baud 115200 to comunicate to BW16
uart1 = UART(1, baudrate=115200, tx=Pin(4), rx=Pin(5))
# Send AT commands
def send_at_command(uart, command):
uart1.write(command + '\n')
time.sleep(0.1)
# Receive data AT function
def Uart1_receive():
data = b''
succeed = "OK"
fail = "ERROR"
while True:
if uart1.any():
data += uart1.read()
if data.endswith(b'\n'):
if succeed in data:
print(data)
break
if fail in data:
print(data)
break
print(data)
time.sleep(0.5)
# Test the Home Assistant function
def test():
"""Test code."""
#Initializing BW16 for MQTT
send_at_command(uart1, cmd_WIFI_1)
Uart1_receive()
send_at_command(uart1, cmd_WIFI_2)
Uart1_receive()
send_at_command(uart1, cmd_MQTT_1)
Uart1_receive()
send_at_command(uart1, cmd_MQTT_2)
Uart1_receive()
send_at_command(uart1, cmd_MQTT_3)
Uart1_receive()
send_at_command(uart1, cmd_MQTT_4)
Uart1_receive()
send_at_command(uart1, cmd_MQTT_5)
Uart1_receive()
send_at_command(uart1, cmd_MQTT_6)
Uart1_receive()
time.sleep(0.5)
send_at_command(uart1, cmd_MQTT_7)
Uart1_receive()
# Set temperature and humidity demo value
temp = int (25)
hum = int (87)
while True:
# Publish data to MQTT
uart1.write(cmd_MQTT_9.encode('utf-8'))
time.sleep(0.5)
temp_s = f"{{\"t\":{temp}}}"
print(temp_s)
uart1.write(temp_s.encode('utf-8'))
uart1.write('\n')
Uart1_receive()
uart1.write(cmd_MQTT_9.encode('utf-8'))
time.sleep(0.5)
hum_s = f"{{\"h\":{hum}}}"
print(hum_s)
uart1.write(hum_s.encode('utf-8'))
uart1.write('\n')
Uart1_receive()
#Start Test
test()
Ovaj program u toku izvršavanja na Elecrow W5 kontinuirano šalje MQTT serveru vrednost Humidity = 87 i Temperature = 25. Potrebno je i to je poslednji korak, podesiti sam MQTT server da prima podatke sa ovog lažnog „senzora“. Potrebno je u u ranije instaliranoj Studio Code Server ili File editor aplikaciji otvoriti konfiguracioni fajl configuration.yaml i dopisati mqtt: blok. Jako je bitno paziti na nazubljenost, jer je yaml u tom pogledu osetljiv, budući da sama nazubljenost koda nosi informaciju. Ovde se Studio Code Server pokazao boljim od File editor aplikacije, jer vizuelno bojama i tačkicama olakšava pravilno nazubljivanje koda.

Ako je sve urađeno kako treba, na prvoj. HOME strani Home Assistant panela treba dodati karticu sa Humidity/Temperature poljima. Dobili ste kontinualni prikaz ova dva parametra u pisanom obliku. Time smo pokazali koliko je jednostavno na otvorenoj softverskoj Home Assistant / MQTT platformi pratiti bilo koju vrednost koju Elecrow W5 može očitati, obraditi i na kraju poslati MQTT serveru.

Na kraju ovog teksta o Python-u treba dati nekoliko bitnih napomena. Nažalost Elecrow nije dao svoj profil ove ploče kako bi je Thonny IDE u kome smo radili prepoznao. Verzija MicroPython-a kojeg smo koristili je 1.24.1 i namenjena je Raspberry Pi Pico 2 pločama. Elecrow W5 jeste donekle klon te platforme, koji na sebi na UART1 (pinovi 4 i 5) ima trajno povezan BW16 bežični modul. Ovu činjenicu uvek treba imati u vidu pri njegovom embedovanju, jer ta dva pina, iako prisutna na ploči nisu ni sa čim povezana (NC).

Zahvaljujući implementiranim MQTT naredbama u AT setu komandi (kompletne informacije i spisak komandi sa primerima možete naći na AI-Thinker sajtu), Elecrow W5 je bilo lako prilagoditi da sa uspehom izvrši očitavanja sa priključenih senzora i te podatke po potrebi obradi i pošalje udaljenom MQTT serveru preko lokalne 5 GHz Wi-Fi mreže. Time smo dobili Open Source rešenje za praćenje stanja senzora u pametnom domu uz Home Assistant OS i Elecrow W5. Da li se odlučiti za ovu kombinaciju ili je bolje i lakše uzeti Raspberry Pi 2W, trebalo bi da bude pitanje ličnih preferencija. Proizvodni timovi, često ne obraćaju pažnju na kvalitet svoje litarature i neretko se susrećemo sa zvaničnim demoima na Wiki stranama proizvoda koji imaju greške. To su propusti koji ne bi smeli da se događaju. Elecrow je sa svojom on-line dokumentacijom na samoj ivici ovog noža, posebno sa MQTT primerima i o tome mora da povede računa.
- Open Source rešenje za praćenje stanja senzora u pametnom domu uz Home Assistant i Elecrow W5 - 14/03/2025
- ISO Stars – Merenje otpora izolacije do savršenstva - 13/03/2025
- Elecrow W5 recenzija - 12/03/2025