Arduino Forum

International => Italiano => Generale => Topic started by: zenodallavalle on Mar 23, 2019, 09:35 pm

Title: Far interagire arduino con Domoticz
Post by: zenodallavalle on Mar 23, 2019, 09:35 pm
Buonasera a tutti,
sono nuovo del forum e per ora sono interessato alla domotica. In particolare il mio obiettivo sarebbe di riuscire a comandare un arduino collegato tramite scheda ESP8266-01 alla mia rete locale da Domoticz e da iPhone tramite l'applicazione nativa homekit e tramite quindi Homebridge.
Attualmente sono già riuscito a collegare homebridge e domoticz tramite eDomoticz e un broker MQTT su rete locale. Attualmente sto lavorando sul far comprendere ad Arduino ciò che gli viene detto di fare da Domoticz. In particolare per il mio progetto Arduino avrebbe collegata una scheda WiFi tramite software serial e a un pin un sensore DHT11 (per ora, intanto ho già ordinato i più precisi DHT22). Sono riuscito a fare un codice utilizzando la libreria PubSub e dunque il protocollo MQTT che pubblica il risultato della lettura del sensore in un formato che DomoticZ può comprendere.

FASE1. Inizialmente l'obiettivo era quello di far si che arduino leggesse direttamente i messaggi inviati da domoticz con il topic "domoticz/out". Poi ho visto che questi messaggi sono abbastanza pesanti (circa 250/280 byte) e quindi arduino fa fatica a gestirli per limitazioni hardware. Comunque ero riuscito a ottenere qualcosa di decente che riusciva sia ad inviare che a ricevere i messaggi anche se devo dire che l'elaborazione del messaggio non l'avevo ancora programmata. A questo punto ho salvato il progetto e i vari log e ho virato leggermente...

FASE2. Ho cambiato approccio. L'idea è di scrivere un programma in Python che vada eseguito sul computer che mi fa sia da server domoticz che da broker MQTT. Questo programma dovrebbe filtrare i grossi messaggi inviati da domoticz in domoticz/out e ricavarne solo le informazioni necessarie quindi più o meno idx, tipo di switch, valore e inviarle in modo conciso ad arduino, aspettando una conferma di ricevuta dallo stesso, il tutto sempre tramite il protocollo MQTT. A questo punto sono riuscito anche a scrivere un codice su arduino che interpreta il messaggio nel senso che "legge" idx, tipo, valore ed esegue.
Il problema (e questo riguarda un po anche la fase 1) è che dei messaggi che invio dal pc arduino ne "capta" meno della metà, non capisco veramente il motivo.

3° OPZIONE. Terza opzione a cui avevo pensato, ma che non ho ancora sviluppato (sia per mancanza di tempo che per il fatto che stavo lavorando alle altre), sarebbe di inviare delle richieste ad arduino tramite HTTP avendo quindi spazio per restituire un qualcosa che conferma l'avvenuta ricezione della richiesta.

Il problema come dicevo è che facendo come ho fatto io perdo un sacco di richieste nell'etere. Per cui la domanda è: posto che ho spiegato in lungo e in largo quello che voglio fare (cioè comandare arduino tramite homebridge --> domoticz) come mi consigliate di muovermi a questo punto? giusto proseguire con il protocollo MQTT o meglio qualcosa di più robusto?
Vi pubblico qui sotto il codice che usavo in FASE1, fermo restando che il problema di tutto ciò è che arduino riceve metà o meno dei messaggi che gli vengono mandati. Quello della fase 2 ve lo risparmio sopratutto perchè non è finito e non funziona come dovrebbe cioè riesco a mandare i messaggi ma non sono ancora riuscito ad implementare un efficace sistema in grado di analizzare i messaggi di ritorno da arduino e stabilire quindi se le richieste sono state eseguite o no e contemporaneamente analizzare i messaggi in uscita da domoticz e processarli.

Vi chiedo già scusa per la terminologia sicuramente non corretta. Non sono "del settore" sono solo un appassionato che ha iniziato a masticare veramente qualcosa da poche settimane, diciamo che prima assaggiavo solo briciole. Sarò ben felice di leggere eventuale materiale che mi posterete e vi dico già che prima di scrivere ho cercato un sacco su tutto il web.

EDIT: Confermo che l'opzione 3 si sta rilevando la miglior strada da percorrere. Attualmente ho risolto gran parte dei problemi e le richieste non sono più perse nel nulla
Title: Re: Far interagire arduino con Domoticz
Post by: zoomx on Mar 25, 2019, 12:21 pm
Se devi solamente prendere i dati da un DHT fai prima a collegarlo all'ESP01 e usare solo quello con l'IDE Arduino. HA molte più risorse di un Atmega328. In rete poi ci sono già parecchi esempi.
Tieni conto che se il sensore è troppo vicino al modulo forse avrai valori sballati perché l'ESP8266 scalda un po'.
Title: Re: Far interagire arduino con Domoticz
Post by: zenodallavalle on Mar 25, 2019, 05:08 pm
Grazie della risposta...l'idea in realtà sarebbe di controllare anche dei relè tramite le uscite di Arduino...
In realtà precedentemente avevo già collegato il sensore all'esp8266 gli avevo messo il firmware personalizzato easyesp che devo dire funziona molto bene...
Title: Re: Far interagire arduino con Domoticz
Post by: zoomx on Mar 26, 2019, 08:44 am
Con l'ESP01 un relè lo piloti, con il GPIO2, e credo rimanga un piedino per un sensore che comunichi con un solo pin, tipo il DS18B20 e i DHT, appunto.
Non ho ancora provato ad usare l'ESP8266 per quello per cui è nato, cioè come periferica.

Giusto ieri ho messo il firmware Tasmota su un ESP8266, l'ho collegato alla rete e azionato con l'app Yeti per Android.