Close Menu
magazin Mehatronikamagazin Mehatronika
  • English
  • Početna
  • Industrija
  • Recenzije
    • Industrijska oprema
    • SBC računari
    • Razvojni sistemi
    • STEM
    • Mrežna oprema
    • Displeji
    • Dodaci
    • Alati
    • Muzička oprema
    • Pametni uređaji
  • Edukacija
  • Novosti
  • Lifestyle
    • Događaji
    • Intervjui
  • Stručni tekstovi
  • Forum
Facebook X (Twitter) Instagram LinkedIn
Trending
  • Inovativna rešenja za optimizaciju potrošnje energije u industriji
  • magazin Mehatronika: nagradni konkurs #0003
  • Danfoss iC2-Micro
  • Haiwell IoT i Cloud nikada nisu bili dostupniji i jednostavniji
  • P-KUBE Krome sigurnosna ručka
  • Ispitivanje EV punjača
  • Radionica o WSCAD softveru
  • INNOMOTICS elektrifikuje veliki rudarski pogon u Čileu
  • Srpski
    • Srpski
    • English
LinkedIn Facebook X (Twitter) Instagram
magazin Mehatronikamagazin Mehatronika
  • Početna
  • Industrija
  • Recenzije
    • Industrijska oprema
    • SBC računari
    • Razvojni sistemi
    • STEM
    • Mrežna oprema
    • Displeji
    • Dodaci
    • Alati
    • Muzička oprema
    • Pametni uređaji
  • Edukacija
  • Novosti
  • Lifestyle
    • Događaji
    • Intervjui
  • Stručni tekstovi
  • Forum
magazin Mehatronikamagazin Mehatronika
Home»Stručni tekstovi»Open Source rešenje za praćenje stanja senzora u pametnom domu uz Home Assistant i Elecrow W5
Stručni tekstovi

Open Source rešenje za praćenje stanja senzora u pametnom domu uz Home Assistant i Elecrow W5

Implementacija Elecrow W5 u vidu MQTT senzora i njegova integracija u Home Assistant open source home automation softver
By Aleksandar Dakić14/03/2025Updated:14/03/20257 Mins Read
photo: magazin Mehatronika

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).

Home Assistant on Mixtile Edge 2
photo: magazin Mehatronika

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
MQTT Broker on Home Assistant
photo: magazin Mehatronika

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.

photo: magazin Mehatronika

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.

configuration.yaml in Home Assistant MQTT Server
photo: magazin Mehatronika

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.

photo: magazin Mehatronika

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).

ELECROW W5 with MQTT Server in Home Assistant programming in Python in Thonny
photo: magazin Mehatronika

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.

  • About
  • Latest Posts
Aleksandar Dakić
Follow me
Aleksandar Dakić
Editor-in-chief at magazin Mehatronika
Aleksandar je osnivač magazina Mehatronika.

Sa pozadinom u električnom inženjeringu i dugom istorijom rada u stručnim časopisima, on se fokusira na ključnom sadržaju magazina Mehatronika i stoji iza brojnih inicijativa.
Aleksandar Dakić
Follow me
Latest posts by Aleksandar Dakić (see all)
  • Inovativna rešenja za optimizaciju potrošnje energije u industriji - 26/06/2025
  • magazin Mehatronika: nagradni konkurs #0003 - 25/06/2025
  • Danfoss iC2-Micro - 25/06/2025
Elecrow
Previous ArticleISO Stars – Merenje otpora izolacije do savršenstva
Next Article AI Skills 4 Women: besplatan AI trening za žene u Srbiji

Related posts

Inovativna rešenja za optimizaciju potrošnje energije u industriji

26/06/2025

Elecrow All-in-one Starter Kit for Pico2

7.8 28/05/2025

Elecrow All-in-one Starter Kit for Arduino

7.3 04/05/2025

Kako se nositi sa momentom inercije u aplikacijama koje zahtevaju precizno pozicioniranje?

26/04/2025

Node-RED: Upravljanje GPIO signalima na Orange Pi 4A

11/04/2025

Zephyr RTOS devicetree overlay za mikroE RELAY click

26/03/2025
Kompanije
ABB akYtec Armsom Auma Automatika Banana Pi Beogradski Sajam Bosch Rexroth CADCAM Data CHIRON Croatia CircuitMess Danfoss DFRobot Digilent Dossis Eaton Elcom Media Elecfreaks Elecrow Electronic Design Elektromont ELESA+GANTER EMP EMT elektro ENEL Valjevo EP-Solutions ePlan Eurocom EXOR ETI Fanuc Faulhaber Festo Fox Electronics Gamax Gomo Design Hennlich Hidraulika HMS ICM Electronics ICOP INEA SR IvDam Process Control Kinco electronics LattePanda Libre Computer Lilygo magazinMehatronika malina314 Mean Well / ASIKO Melco-Buda Metronik Microsoft Mikro Kontrol Milk-V Mitsubishi Electric Momentum National Instruments Neminik Neofyton NVIDIA OM SISTEM Orange Pi PCBWay Pickering Radxa Raspberry Pi Recom Rittal Samsung Schneider Electric Schunk Seeed Studio Servoteh Siemens SM Automation Sobel Soldered staubli STMicroelectronics SunFounder Tectra / Megger teenage engineering Tehnogama TeLa elektrik TI LaunchPad Tipteh TRC pro Trim Triton Engineering UMBRAmatik Unicom Uno-Lux Processing Uno Lux NS URAM System Vesimpex VETS Weidmuller Wurth Elektronik Yaskawa Yokogawa
Distribuciju štampanih izdanja srednjim školama omogućile kompanije
Facebook X (Twitter) Instagram LinkedIn
  • Politika privatnosti
  • Uređivačka politika
  • Kontakt
  • Media kit
  • Slanje jedinica za recenziju
  • Pretplata
  • Elektronska izdanja

magazin Mehatronika - Agencija “Gomo Design”
Stanoja Glavaša 37, 26300 Vršac, Serbia
+381 60 0171 273

© 2025 magazin Mehatronika by Gomo Design.

Type above and press Enter to search. Press Esc to cancel.

Koristimo minimalne kolačiće da bismo obezbedili najbolje iskustvo na sajtu.PrihvatamPolitika privatnosti