Gestione MQTT...non so da dove iniziare..

di il
4 risposte

Gestione MQTT...non so da dove iniziare..

Salve a tutti è il mio primo messaggio qui sul forum, per studio e facendo un po di pratica negli anni (qualcosa nel recente e qualcosa nel passato remoto) ho maneggiato linguaggi come come Assembly per z80(roba vecchia eh?!),Basic e C con gestione dell hardware, ultimamente ho fatto pratica con Arduino e ESP8266....comunque tutto indirizzato sempre ad un a programmazione molto "fisica"....detto brutalmente procedure che controllano pin di porte hardware, senza però tralasciare la conoscenza di come funzionano gli elaboratori, la gestione dei tipi di variabili, la gestione delle memorie.

Di recente ho studiato un po HTML e JavaScript e riesco a produrre una pagina con testo,input di vario tipo, assegnazione ID degli elementi e conseguente gestione e cose simili (credo sia proprio la base).

Vengo al punto.
Vorrei realizzare un sistema di lettura di più sensori contemporaneamente tramite uno smartphone.
Vi faccio un esempio: ho 6 termometri(ognuno su una scheda ESP8266) e devo inviare i loro dati in tempo reale allo schermo dello smartphone(un schermata scarna,che ne sò, divisa in sei parti e in ogni parte un numero relativo alla temperatura di un sensore).Come frequenza di aggiornamento dati sono indirizzato verso 0,5 secondi ma se più veloce va bene uguale.

In teoria ho già un sistema funzionante tramite protocollo MQTT (che se ho capito bene è l'ideale per queste cose rispetto HTTP ma accetto volentieri suggerimenti).

Il tutto funziona così: Accendo sullo smartphone l'hotspot WIFI, poi attivo una app("MQTTbroker") che fa da BrokerMQTT, le mie schede ESP8266 vi si collegano e vengono assegnati degli IP e inviano i dati al broker.Poi dalla stessa App c'è una sezione MQTT Client dove ricevere i dati(e anche inviarne).

Vorrei fare la stessa cosa con una pagina HTML/Javascript.OK la parte grafica che è molto semplice(visualizzare 6 campi di testo) ma non riesco proprio a capire come inserirci dentro l'attivazione di un broker MQTT.

In teoria questa dovrebbe essere la bibbia del sistema MQTT https://github.com/moscajs/mosc ......ci sono esempi ma non capisco comandi come "npm" o come far funzionare quella riga dove dice " var mosca = require('mosca'); " cosa è la funzione/classe require??? è tipo l'include di C??

Riepilogo quello che voglio fare:
1.dal desktop di windows avvio un file HTML
2.questo file deve avviare un broker(locale...non di quelli in cloud o simili)
3.tramite richieste "subscribe" ricevo i valori dei termometri e li assegno a delle variabili
4.visualizzo le variabili nella pagina HTML con un aggiornamento relativamente rapido (max 0,5s)

sono bloccato al punto 2,inoltre sto rimandando il fatto di capire come aggiornare i campi di testo velocemente senza ricaricare tutta la pagina.
Parlo di file HTML perchè mi risulta un po più commestibile ed ho letto da qualche parte che ci sono convertitori da HTML/Javascript ad applicazione Android.(su cui non sono molto ferrato,ho provato a smanettare con AndroidStudio ma solo gran mal di testa)

Sono stato mooolto prolisso scusate,ci sto passando ste settimane di quarantena ma non esco fuori.AIUTOOO!!!

4 Risposte

  • Re: Gestione MQTT...non so da dove iniziare..

    Purtroppo moscajs non è un pacchetto per il javascript che gira sui browser, bensì è un pacchetto node.js.

    Cos'è node.js? È un interprete javascript che però non gira su un browser. node.js inoltre ha molte meno restrizioni di un browser: puo accedere al filesystem e ai dispositivi di rete, questa cosa ti sarebbe proibita all' interno del browser, il quale ti limita ad usare HTTP.

    Da queste ultime premesse ho una cattiva notizia da darti: non riuscirai mai a far si che il browser scambi direttamente pacchetti MQTT con altre macchine. Il browser ti permette di usare solo HTTP.

    Hai bisogno di un intermediario.

    Ti consiglio è di scrivere (o reperire online dato che la community di smanettoni è molto ampia) un server HTTP che faccia da bridge tra MQTT e HTTP. Dopodiche dal browser non aprirai un file HTML ma accederai al server locale.
  • Re: Gestione MQTT...non so da dove iniziare..

    @ spocchio Ti ringrazio moltissimo! almeno so di aver imboccato la strada sbagliata e non persevero su questa.

    Visto che già ho scritto un primo messaggio lunghissimo anticipo che quello che sto per scrivere può essere altrettanto noioso e forse OT.
    Ma se qualcuno ha delle dritte.......

    In realtà il mio scopo è girare su android. Ho provato ad approcciare ad android studio con pessimi risultati mentre con html e javascript qualcosa riesco ad arrangiarla, speravo di poter convertire un progetto html in una applicazione....quindi niente se ho capito bene la tua risposta.

    Nel frattempo ho provato anche un altra strada.Ho estratto con il decompilatore il codice dall'applicazione MQTT Broker App(su playstore) per poi rendermi conto che l'autore indiano l'ha pubblicata open su github ahahhahahaha. https://github.com/naveenrobo/android-mqtt-broke

    L'ho caricata in android studio con intento di snellirla (e copiarla), nel senso che in origine questa applicazione all'avvio da possibilità di cambiare dei parametri e poi c'è un tasto che avvia il broker. A me serve solo la parte che avvia il broker, eliminando la parte di modifica paramenti e la richiesta di conferma di avvio (anzi a dirla tutta, dovrei eliminare tutto il layout...avvio l app e parte il broker senza nessuna grafica). Il progetto verrà poi completato con la schermata che mostra i dati ricevuti (forse questo riesco a farlo...imposto un layout abbastanza semplice, 6 caselle di testo, e le collego con le richieste di subscribe topic).

    ci ho perso un oretta ieri ma non capisco cosa devo togliere dal progetto "indiano"...
    forse anche questa è una strada sbagliata?! come potrei muovermi?forse non è la sezione adatta?
    se mi dite che sono troppo a digiuno ed è meglio lasciar perdere lo capisco
  • Re: Gestione MQTT...non so da dove iniziare..

    Mi sembra un buon inizio. Certo puoi imboccare due strade:

    1) modificare quella app indiana
    2) perseguire con javascript.

    Sul punto 1, io ti consiglio il seguente hack: di mantenere la UI con la configurazione, ma automatizzare il riempimento dei campi e automatizzare lo start del servizio.
    Ho dato un occhiata e il file che fa configurare i parametri è su https://github.com/naveenrobo/android-mqtt-broker/blob/master/app/src/main/java/in/dotworld/mqttserver/MainActivity.java io ti consiglio:

    1a) nella funzione updateUI vedi che ci sono due righe port.setText e host.setText, copia le righe di configurazione e ci scrivi a mano i valori di user/pass/host ecc
    1b) alla fine della funzione onCreate, ci incolli e istruzioni che appunto riempano i campi della UI:
    username.setText(valore);
            password.setText(valore);
            port.setText(valore);
            host.setText(valore);
    1c) sempre su onCreate, dopo aver settato i valori, simuli la richiesta di inizio del servizio facendo una chiamata a startService();

    Se vuoi perseguire con javascript, la cosa ha una curva di apprendimento molto ripida. Il programma Apachi Cordova converte una app HTML/JS in un una app android/iOS/window phone: https://cordova.apache.or - dovrai leggerti per bene la documentazione per capire come fare. Il JS "accettato" da cordova ha molte meno limitazioni di un JS del browser e in particolare ti permette anche di comunicare via MQTT, infatti ho anche visto che esiste un pacchetto per cordova che comunica via mqtt: https://github.com/arcoirislabs/cordova-plugin-mqt
  • Re: Gestione MQTT...non so da dove iniziare..

    Grazie ancora!
    Ora studio un po quello che mi hai suggerito....la sintassi java è come la criptonite.....sono più tipo da C e neanche ++.

    nel frattempo ho trovato questo https://github.com/moquette-io/moquett forse è la base per android...ovvio che non ho capito come si usa ehehheh

    Spocchio mi sa che fra qualche giorno perdo la pazienza e ti assoldo come programmatore
Devi accedere o registrarti per scrivere nel forum
4 risposte