Integrazione tra Freedomotic, node_red e MQTT

93 views
Skip to first unread message

alberto mengoli

unread,
Dec 26, 2017, 6:56:24 AM12/26/17
to Freedomotic - IoT and Smart Spaces Framework
Ciao a tutti,
Questo topic e' nato quasi per caso partendo dall'idea di un membro spagnolo del gruppo Souliss, Michi, di creare una libreria python che ha chiamato pysouliss, la quale permette di comandare i tipici di Souliss (per adesso solo alcuni) attraverso comandi MQTT. L'idea di base era nata per l'integrazione di Souliss con un altro framework, ma si presta "out of the box" all'integrazione con qualsiasi framework che faccia uso del protocollo MQTT, e naturalmente anche con Freedomotic. Successivamente al post di Michi, il membro g.bonanno del gruppo Souliss, che ringrazio per l'idea anche in qusta sede, ha proposto l'uso di node red assieme a MQTT per il monitoraggio ed integrazione dei flussi dati, oltre che alla loro rappresentazione attraverso opportuna e graficamente bellissima dashboard. Il sistema di test, ancora non completo, utilizza 2 nodi arduino mega con eth shield e sensore dht11 per temperatura ed umidita' broker MQTT e server node red. Di seguito alcune immagini. Buone feste a tutti, Alberto

Mauro Cicolella

unread,
Dec 26, 2017, 2:43:33 PM12/26/17
to alberto mengoli, Freedomotic - IoT and Smart Spaces Framework
Ciao Alberto 
il tuo esperimento sembra molto interessante e promettente. 
Aspettiamo quanto prima ulteriori dettagli ed immagini. 
Grazie
Mauro

Il 26/Dic/2017 12:56, "alberto mengoli" <amen...@gmail.com> ha scritto:
Ciao a tutti,
Questo topic e' nato quasi per caso partendo dall'idea di un membro spagnolo del gruppo Souliss, Michi, di creare una libreria python che ha chiamato pysouliss, la quale permette di comandare i tipici di Souliss (per adesso solo alcuni) attraverso comandi MQTT. L'idea di base era nata per l'integrazione di Souliss con un altro framework, ma si presta "out of the box" all'integrazione con qualsiasi framework che faccia uso del protocollo MQTT, e naturalmente anche con Freedomotic. Successivamente al post di Michi, il membro g.bonanno del gruppo Souliss, che ringrazio per l'idea anche in qusta sede, ha proposto l'uso di node red assieme a MQTT per il monitoraggio ed integrazione dei flussi dati, oltre che alla loro rappresentazione attraverso opportuna e graficamente bellissima dashboard. Il sistema di test, ancora non completo, utilizza 2 nodi arduino mega con eth shield e sensore dht11 per temperatura ed umidita' broker MQTT e server node red. Di seguito alcune immagini. Buone feste a tutti, Alberto

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Freedomotic - IoT and Smart Spaces Framework" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a freedomotic-it+unsubscribe@googlegroups.com.
Per postare messaggi in questo gruppo, invia un'email a freedomotic-it@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/freedomotic-it/106ce0f4-74ff-46c3-b7fc-fedb61674950%40googlegroups.com.
Per ulteriori opzioni, visita https://groups.google.com/d/optout.

alberto mengoli

unread,
Dec 27, 2017, 8:58:20 AM12/27/17
to Freedomotic - IoT and Smart Spaces Framework

Ciao,
questo e' il nodo arduino con sonda termica DHT11 posizionato in una delle 4 zone termiche arbitrarie dell'appartamento, la zona 1 (camera da letto); lo sketch comprende un client MQTT che ad intervalli regolari pubblica valori di temperatura ed umidita' su due topics; freedomotictesttopic1/temp e freedomotictesttopic1/umid. Il client punta all'indirizzo del broker che in prima battuta era il plugin mqtt broker di Freedomotic RC4 sul portatile (192.168.1.79:1883) settato ad IP fisso = 79; secondariamente e' emerso un bug che ho in seguito rilevato essere gia' noto delle librerie moquette su cui era basato il plugin, per cui dopo avere segnalato il problema all'autore e in attesa del fix opportuno, ho cambiato leggermente architettura. Ora il broker MQTT e' provvisoriamente in un'app su smartphone su cui e' installata anche un'app client (MyMQTT) e tutto fino a qui funziona abbastanza liscio





Il giorno martedì 26 dicembre 2017 20:43:33 UTC+1, Mauro Cicolella ha scritto:
Ciao Alberto 
il tuo esperimento sembra molto interessante e promettente. 
Aspettiamo quanto prima ulteriori dettagli ed immagini. 
Grazie
Mauro
Il 26/Dic/2017 12:56, "alberto mengoli" <amen...@gmail.com> ha scritto:
Ciao a tutti,
Questo topic e' nato quasi per caso partendo dall'idea di un membro spagnolo del gruppo Souliss, Michi, di creare una libreria python che ha chiamato pysouliss, la quale permette di comandare i tipici di Souliss (per adesso solo alcuni) attraverso comandi MQTT. L'idea di base era nata per l'integrazione di Souliss con un altro framework, ma si presta "out of the box" all'integrazione con qualsiasi framework che faccia uso del protocollo MQTT, e naturalmente anche con Freedomotic. Successivamente al post di Michi, il membro g.bonanno del gruppo Souliss, che ringrazio per l'idea anche in qusta sede, ha proposto l'uso di node red assieme a MQTT per il monitoraggio ed integrazione dei flussi dati, oltre che alla loro rappresentazione attraverso opportuna e graficamente bellissima dashboard. Il sistema di test, ancora non completo, utilizza 2 nodi arduino mega con eth shield e sensore dht11 per temperatura ed umidita' broker MQTT e server node red. Di seguito alcune immagini. Buone feste a tutti, Alberto

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Freedomotic - IoT and Smart Spaces Framework" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a freedomotic-i...@googlegroups.com.
Per postare messaggi in questo gruppo, invia un'email a freedom...@googlegroups.com.

alberto mengoli

unread,
Dec 27, 2017, 10:58:50 AM12/27/17
to Freedomotic - IoT and Smart Spaces Framework


Ciao,
Questi sono i valori di temperatura sulla dashboard di MyMQTT su cellulare provenienti anche da una seconda sonda termica nella zona 2 (ingresso) 
 

alberto mengoli

unread,
Dec 27, 2017, 3:53:11 PM12/27/17
to Freedomotic - IoT and Smart Spaces Framework


Ciao, questa e' l'app broker MQTT (provvisoria, fino a definitiva e giusta collocazione del broker nell'armadio di derivazione)

alberto mengoli

unread,
Dec 27, 2017, 9:58:04 PM12/27/17
to Freedomotic - IoT and Smart Spaces Framework


La situazione lato Freedomotic: come potete vedere abbiamo quattro oggetti aggiuntivi nella zona 1 in basso a sx (camera da letto) e nella zona 2 in alto (soggiorno) ovvero hygrometer, thermostat, thermometer e air conditioner di cui i primi tre collegati ad altrettanti topics MQTT attraverso il plugin MQTT client che vedete attivo nella list a sinistra e regolarmente collegato al broker con indirizzo IP 192.168.1.63:1883, cioe' lo smartphone che ha indirizzo IP fisso di 63; a livello configurazione l'oggetto hygrometer ha nel tag proprieta' protocollo: mqtt-client, indirizzo: freedomotictesttopic1/umid e nel tag sorgenti dati humidity: MQTT client reads a state change. L'oggetto thermostat ha nel tag proprieta' protocollo mqtt-client, indirizzo: freedomotictesttopic1/setpoint e nel tag sorgenti dati setpoint: MQTT client reads a temperature; per finire l'oggetto thermometer ha nel tag proprieta' protocollo: mqtt-client, indirizzo: freedomotictesttopic1/temp e nel tag sorgenti dati temperature: MQTT client reads a temperature. Ovviamente gli oggetti della zona 2 avranno collegamento a tre topics di temp, umid e setpoint dove al posto di 1 avremo 2

alberto mengoli

unread,
Dec 27, 2017, 10:16:40 PM12/27/17
to Freedomotic - IoT and Smart Spaces Framework

Lanciando Freedomotic in finestra di prompt comandi possiamo vedere i messaggi smistati dal broker MQTT in questo caso sui topic di temperatura ed umidita' della sonda termica di zona 1; se abbiamo lavorato bene passando con la freccia del mouse sulle icone del jfrontend dei tre oggetti nelle due zone avremo un tooltiptext con valori sempre aggiornati di umidita' e temperatura e un setpoint del thermostat di default uguale a 24

alberto mengoli

unread,
Dec 27, 2017, 10:59:50 PM12/27/17
to Freedomotic - IoT and Smart Spaces Framework
E diciamo che fino a qui abbiamo scherzato: nel senso che fino ad ora niente di veramente nuovo concettualmente; un lungo prologo pero' necessario per inquadrare l'ambiente di test che e' ben lungi dall'essere completo. La parte interessante comincia ora. Sicuramente conoscerete node red, un editor di flussi dati grafico e intuitivo nato in sede Big Blue per la gestione di sensori IoT; il server e' leggero nell'installazione ed e' comunque bella l'idea di potere disaccoppiare servizi da una sola macchina a vario hardware dedicato (il classico Raspi o equivalente) e aggiungerei, possibilmente nel suo bel armadio di derivazione.

Saltando i banali passaggi di "ciao mondo" e dando per scontato che l'installazione della dashboard node red sia andata a buon fine (ultimo tag a dx in alto: perche' mai non dovrebbe andare a buon fine?) con questo primo test preleviamo un flusso dati dal broker MQTT che e' il primo elemento viola configurabile con un semplice doppio clic e poco altro (da notare la luce verde di "connected" quando tutto e' andato bene), ne filtriamo il payload dall'elemento JSON e indirizziamo doppiamente il risultato all'elemento msg.payload verde che scarica direttamente sul tag debug nella finestra a dx e all'elemento grafico gauge della dashboard. Risultato (istantaneo): la sequenza dei valori di temperatura della zona 1 in finestra di debug con tanto di data e ora di ricezione e questo


alberto mengoli

unread,
Dec 27, 2017, 11:14:45 PM12/27/17
to Freedomotic - IoT and Smart Spaces Framework
Siccome l'appetito vien mangiando, perche' fermarsi qui quando abbiamo ben quattro topics con cui sperimentare? Ragione per cui dopo un piccolo rimaneggiamento di flussi, questo e' il risultato:

e questo lato dashboard zona 1




alberto mengoli

unread,
Dec 27, 2017, 11:20:15 PM12/27/17
to Freedomotic - IoT and Smart Spaces Framework
E zona 2

Dimeticavo: una volta lanciato il server node red l'ambiente di sviluppo e raggiungibile via browser a [indirizzo IP del server]:1880 e la dashboard a [indirizzo IP del server]:1880/UI

alberto mengoli

unread,
Dec 28, 2017, 7:13:08 AM12/28/17
to Freedomotic - IoT and Smart Spaces Framework


Ma ora cerchiamo di fare qualcosa di totalmente nuovo: fare in modo che dalla dashboard di node red arrivino dei comandi ad uno o piu' oggetti di Freedomotic; finora il flusso dati era solo da sonde a dashboard e/o framework. Per fare cio' impostiamo un nuovo flusso fi dati

Facciamo partire due elementi di iniezione dati nel sistema (uno per ogni zona) che puntano a un elemento in uscita MQTT che pubblica sul topic rispettivamente freedomotictesttopic1/setpoint e freedomotictesttopic2/setpoint cioe' sul canale che fornisce il valore di setpoint al thermostat di zona 1 e 2

Sul versante dashboard ho collegato un controllo slide con range da 0 a 40 collegato al topic .../setpoint della zona 1; man mano che spostavo lo slide mandavo un messaggio MQTT all'oggetto thermostat 1 del framework; OK funziona e qui si vedono i messaggi in arricìvo al client MQTT di Freedomotic

Il risultato era buono ma non del tutto soddisfacente soprattutto per la mancanza di riferimento a valori numerici del controllo slide; ragione per cui ho sostituito lo slide con un controllo numerico che mostra il valore scelto e ha due frecce per aumentare e diminuire il valore

Perfetto e ora se passo la freccia del mouse sull'oggetto thermostat mi riileva i nuovo valori di setpoint!

alberto mengoli

unread,
Dec 28, 2017, 7:43:49 AM12/28/17
to Freedomotic - IoT and Smart Spaces Framework
Attualmente nella TODO list:
- creare trigger e reaction per collegare ai valori del termostato di zona termica quelli di temperatura delle sonde in modo che se la temperatura e' maggiore o uguale a quella di setpoint il condizionatore si accende, altrimenti stop; mi serve dell'hardware per mettere sotto controllo del framework gli split Daikin (emulatore di IR telecomando oppure MODBUS e potrebbe essere un buon scenario di test)
- installare il plugin InfluxDb per memorizzare i parametri di temperatura ed umidita' per poi provare a rappresentare dei grafici parametrizzati su dashboard node red
- finire di creare i due nodi Souliss (al momento e' pronto solo il nodo gateway) ed installare le librerie phython di pysouliss per creare una supervisione di Freedomotic su Souliss e node red via MQTT
- varie ed eventuali

Sono al momento fermamente convinto che questa combinazione di tecnologie gia' disponibili consenta l'integrazione tra frameworks (finora solo postulabile); dopodiche' ognuno potra' costruirsi il proprio sistema mesh in base alle proprie esigenze in pieno spirito open source. Aggregare i sistemi ed impedire da morienza da abbandono degli stessi e' importante, dato che ognuno di questi ha delle peculiarita' e in generale sono tutti validi; il campanilismo e' fuori luogo dato che l'allternativa consiste nel finire sotto il comando di sistemi proprietari che al momento concedono servizi in modo fintamente open (i vari Homekit con Alexa, Cortana, Google) per poi riservarsi il diritto di chiudere il cassetto in ogni momento. E' notizia recente che il creatore di Linux Mandrake ha creato un fork di Android chiamato eelo libero da codice che non sia open, in particolar modo Google-free; condivido pienamente. Ciao a tutti, Alberto

Mauro Cicolella

unread,
Dec 29, 2017, 10:01:11 AM12/29/17
to Freedomotic - IoT and Smart Spaces Framework
Ciao Alberto,
grazie per le informazioni. Penso possa essere un ottimo use case reale applicabile in diverse situazioni.
Devo ammettere che i widget di node-red sono graficamente accattivanti e che bisognerebbe tenerne conto nel client web perchè rendono più immediata la fruizione dei dati. Non so come potrebbero sostituire le icone dei sensori a livello di sinottico. Forse in quel contesto sarebbero eccessivamente "invasivi", o no?

Mauro

alberto mengoli

unread,
Dec 29, 2017, 9:24:37 PM12/29/17
to Freedomotic - IoT and Smart Spaces Framework
Ciao Mauro,
Se ho capito bene, il problema che poni riguarda l'aggiornamento di alcuni dei controlli del jfrontend sostituendoli o affiancandoli a widgets; io sarei per i widgets che non direi siano invasivi, anzi... Ad esempio se all'icona termometro si affiancasse il valore di temperatura la rappresentazione dei dati sarebbe migliore "a colpo d'occhio"; ma per quanto interessante, questa non e' l'implicazione piu' evidente del use case. Il punto e' che node red e' una sorta di middleware di integrazione e nella sua dashboard possono trovare posto elementi di rappresentazione di oggetti di Freedomotic e non solo ma perche' l'integrazione sia completa questa rappresentazione deve essere sincronizzata e aggiornata in tempo reale nelle GUI dei frameworks coinvolti. Questa cosa è una novità e quindi pone una serie di problematiche nuove che meriterebbero un proprio spazio di discussione. Nel use case ad esempio mancano i widget di temperatura e umidita' lato jfrontend, ma anche un controllo grafico tipo slider o mumerico per settare i valori di setpoint del termostato. Abbiamo molto su cui lavorare e sono aperti suggerimenti, sempre che condividiate il mio punto di vista (che non so' fino a che punto sia condiviso). Anche questo potrebbe essere oggetto di discussione.

alberto mengoli

unread,
Dec 30, 2017, 6:59:25 AM12/30/17
to Freedomotic - IoT and Smart Spaces Framework

Ciao gente,
Un'ultima cosa: che succede se provo a richiamare la dashboard node red da smatphone e ad impostare il setpoint della zona 1 sempre da cellulare? (Funzione al momento non disponibile neanche da client Polymer) Che fila tutto liscio come l'olio, come potete vedere nelle immagini di cui sopra; nella immagine numero 2 vedete il setpoint impostato ad un improbabile 11°C per chi ama le stalattiti di ghiaccio in camera; nella numero 1 il messaggio MQTT pubblicato da node red sul topic freedomotictesttopic1/setpoint e nella immagine numero 3 il tooltiptext dell'oggetto thermostat della zona 1 che mostra il valore di setpoint 11°C. Ricapitolando: finita la parte attuativa hardware sugli split e impostati trigger e reaction per l'oggetto air conditioner, possiamo dire di avere la "climatizzazione su 4 zone indipendenti controllate da Freedomotic e con (per ora solamente) controllo della temperatura da web, tablet, smartphone" a costo prossimo allo 0; valore commerciale medio intorno a €2000 + costi di integrazione (poco quantificabili).

Questa sembra una via promettente e dai costi ragionevoli per il controllo degli split: arduino IR shield costo $2.90. Memorizza le sequenze IR a livello hardware, le traduce in sequenze numeriche visibili nel monitor seriale, le memorizza e ne permette l'utilizzo da parte di qualsiasi software di supervisione. Diciamo ideale dal punto di vista teorico, in realta' da verificare e presuppone comunque un totale di lavoro. Vi aggiornero'! Dimenticavo dei credits dovuti per buona creanza open: il client MQTT arduino e' per il 99% codice di James Bruce che ovviamente ringrazio. Bye e buon anno a tutti!!

alberto mengoli

unread,
Jan 5, 2018, 1:05:53 PM1/5/18
to Freedomotic - IoT and Smart Spaces Framework
Ciao a tutti,
grazie allo splendido lavoro di Mauro, che nel giro di pochissimi giorni ha concretizzato quelli che erano solo pareri e ipotesi riguardo la integrazione tra frameworks, e' stato fatto un enorme passo avanti, almeno dal lato Freedomotic; infatti, modificando il core del framework (modifiche abilitate dalla dailybuilt 263 in poi, attualmente in distribuzione) e modificando il plugin MQTT client, abbiamo un wiring su opportuni topics MQTT di messaggi del framework con payload JSON attraverso cui si "esportano" in tempo reale le variazioni di caratteristiche degli oggetti. Abbiamo quindi una forma di dialogo con Freedomotic attraverso il protocollo MQTT standard e "out of the box", fruibile da qualsiasi programma che faccia uso di questo protocollo (ormai un must in campo IoT)

Questo e' quello che rilevo sul topic /freedomotic/events/objectChanged della dashboard MyMQTT su cellulare quando ho acceso una delle luci di casa

alberto mengoli

unread,
Jan 6, 2018, 3:23:47 AM1/6/18
to Freedomotic - IoT and Smart Spaces Framework


Ciao gente,
dimenticavo di dire un particolare importante sul nuovo plugin non ancora disponibile nel marketplace; quindi citero' Mauro

Il plugin di prova è disponibile al link https://wetransfer.com/downloads/08c396fd71ca2c54ce27fce21297c03620180104170849/c90abdc58fafd03af0a3aee8cd1a3bae20180104170849/2943b8
Come già accennato occorre l'ultima dailybuild.
I topic da sottoscrivere con un client MQTT sono

/freedomotic/events/objectChanged
/freedomotic/events/zoneChanged
/freedomotic/events/pluginChanged
/freedomotic/events/message

Io per ora ho abilitato all'ascolto sui vari clients MQTT solo il topic /freedomotic/events/objectChanged. Dal file JSON dell'immagine del post precedente si puo' vedere che la luce che ha cambiato di stato ha protocollo openwebnet e indirizzo 1*42.

Qui invece si puo' vedere, lato framework, un messaggio inviato sul topic /freedomotic/events/message

alberto mengoli

unread,
Jan 6, 2018, 6:23:48 AM1/6/18
to Freedomotic - IoT and Smart Spaces Framework

Vedimo quali implicazioni ci sono su node-red; impostazione di flusso in entrata con elemento MQTT collegato a broker e ricevente su topic /freedomotic/events/objectChanged filtrato dall'elemento JSON e riportato sulla finestra di debug; quello che vedete e' il risultato di un array di 22 oggetti che una volta aperti mostrano ognuno un pezzo del file proveniente da Freedomotic una volta spenta la luce con indirizzo 1*27. L'oggetto 20 mostra che "object.behavior.powered EQUALS false", cioe' la luce e' spenta.

Ho come l'idea che presto questo topic cambiera' in "Integrazione tra Freedomotic, node-red, MQTT... con qualsiasi altro programma per la domotica". E allora iniziera' il vero divertimento  :)  Si accettano pareri sia concordi che discordi

Mauro Cicolella

unread,
Jan 6, 2018, 12:12:05 PM1/6/18
to Freedomotic - IoT and Smart Spaces Framework
Il plugin sarà disponibile sul marketplace non appena avrò sufficienti feedback sul suo corretto funzionamento.

Mauro

Il giorno martedì 26 dicembre 2017 12:56:24 UTC+1, alberto mengoli ha scritto:
Reply all
Reply to author
Forward
0 new messages