Plugin MQTT

80 views
Skip to first unread message

Mauro Cicolella

unread,
May 29, 2016, 6:04:51 AM5/29/16
to Freedomotic - IoT and Smart Spaces Framework
Salve a tutti,
è disponibile una nuova versione del plugin MQTT che integra un broker basato sulla libreria open Moquette https://github.com/andsel/moquette .
Il suo utilizzo è principalmente rivolto all'acquisizione di dati da parte di sensori.
Di default resta in ascolto sulla porta standard 1883 che può essere modificata opportunamente nel file manifest del plugin.
Per utilizzarlo basta creare un oggetto, ad esempio un thermostat se vogliamo simulare la lettura di una temperatura, ed impostare come protocol "mqtt-broker" mentre come address il topic su cui il nostro sensore pubblicherà i valori (ad esempio /test).
In Sorgenti Dati occorre associare al behavior "temperature" il trigger "MQTT reads a value".
Questo trigger è generico e si adatta a tutte le situazioni in quanto il plugin, una volta ricevuto un messaggio su un topic, notifica un evento utilizzando come address dell'oggetto proprio il suddetto topic.
Ora con un client MQTT (ho usato MQTTSpy per i miei esperimenti) basta collegarsi al broker e pubblicare sul topic "/test" un valore tipo 234 per vedere comparire la temperatura di 23.4 gradi.
Per maggiori dettagli ho aggiunto qualche screenshot sulla gallery http://freedomotic.com/easy-gallery/34
Il plugin può essere scaricato dal marketplace selezionando la categoria "Internet of Things" http://freedomotic.com/content/plugins/mqtt-broker

Come sempre se avete suggerimenti o riscontrate qualche problema scrivete pure

Buona domenica
Mauro

Luca

unread,
Aug 6, 2017, 4:56:22 AM8/6/17
to Freedomotic - IoT and Smart Spaces Framework
Ciao Mauro,

non è possibile visualizzare il dato così come vinee letto? perchè i miei client inviano gia la temperatura e umdità esatta
es
temp 23.4
umidità 46.03

perchè attualmente nel sinotico leggo 2.3 e 4.6

grazie

Mauro Cicolella

unread,
Aug 6, 2017, 9:50:00 AM8/6/17
to Freedomotic - IoT and Smart Spaces Framework
Ciao Luca
dovresti modificare, nel trigger di lettura dei valori di MQTT, la proprietà <value>@event.mqtt.value></value> 
in <value>= behaviorValue=Math.floor(@event.mqtt.value*10);</value>
Attenzione allo spazio tra l'uguale e behaviorValue altrimenti il codice javascript non sarà valutato correttamente.

Mauro 


Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

luca

unread,
Aug 6, 2017, 10:13:05 AM8/6/17
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
c'è un problema, i dati che gli arrivano non sono interi ma testo:

WARN  [ActiveMQ Session Task-5] - Paramenter 'value = = behaviorValue=Math.floor(*10);' in energy behavior is not an integer.

grazie


--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/freedomotic-it/198c1ff1-8b43-499c-a77a-89baeaa6979e%40googlegroups.com.
Per altre opzioni visita https://groups.google.com/d/optout.
--
Luca Sanna

Mauro Cicolella

unread,
Aug 6, 2017, 11:15:37 AM8/6/17
to Freedomotic - IoT and Smart Spaces Framework
Strano. Ho fatto una prova simulando l'invio dei dati con mqtt-spy e funzionava tutto.
Da quello che vedo sembra che la property di mqtt sia "null" quindi il valore non viene moltiplicato correttamente.
Ma quale plugin stai usando, mqtt-broker o mqtt-client?

Mauro

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

luca

unread,
Aug 6, 2017, 11:18:31 AM8/6/17
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework

Mqtt-client perché mi collego ad un mio server mqtt locale, mosquito


--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.
--
Luca Sanna

Mauro Cicolella

unread,
Aug 6, 2017, 11:25:18 AM8/6/17
to Freedomotic - IoT and Smart Spaces Framework
Ok, penso di aver capito.
Il valore da moltiplicare è (@event.mqtt.message*10) perchè la property è diversa nei due plugin.
Fai un test per favore.

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

luca

unread,
Aug 6, 2017, 11:44:15 AM8/6/17
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
ok adesso per temperatura e umidità funziona, ho un problema invece sulla potenza attiva del contatore enel

INFO  [ActiveMQ Session Task-3] - Sensors notification ''Mqtt client reads a state change'' is going to change ''esterna-temperatura'' behavior ''temperature'' to ''282.0''
INFO  [ActiveMQ Session Task-3] - Setting behavior 'temperature' of object 'esterna-temperatura' to 282
INFO  [ActiveMQ Session Task-3] - Sensor notification ''Mqtt client reads a state change'' applied to object ''esterna-temperatura'' in 20ms.
INFO  [MQTT Call: freedomotic] - Received message '257.00' on topic 'home/cantina/enel'

257 sono i watt istantanei, però a sinotico vedo 2570, questi senza la moltiplicazine a 10 li leggeva giusti

--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.
--
Luca Sanna

Mauro Cicolella

unread,
Aug 6, 2017, 12:01:55 PM8/6/17
to Freedomotic - IoT and Smart Spaces Framework
Posso consigliarti di sdoppiare i trigger.
In sostanza ti crei un trigger (un nuovo file con estensione .xtrg duplicando quello esistente) per la lettura delle temperature con il moltiplicatore e uno per la lettura dell'energia senza.
E' importante che abbiano nomi diversi specificati nella property <name></name>.
A questo punto puoi associare il trigger corretto (li trovi tutti elencati) al corrispondente behavior dell'oggetto considerato.


Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

luca

unread,
Aug 6, 2017, 12:06:28 PM8/6/17
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
perfetto grazie mille

solo un altra domanda, anche se forse sono off-topic

invece che usare l icona della temperatura e umidità si può visualizzare direttamente il valore? su un touch da 7" sarebbe comodissimo

grazie ancora

--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.
--
Luca Sanna

Mauro Cicolella

unread,
Aug 6, 2017, 12:13:18 PM8/6/17
to Freedomotic - IoT and Smart Spaces Framework
Diciamo che la risposta è "ni" nel senso che al momento non è possibile ma in passato una proposta simile era già stata avanzata anche se è rimasta in sospeso.
Puoi leggere la discussione qui 

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

luca

unread,
Aug 6, 2017, 12:19:50 PM8/6/17
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
ok bisogna modificare il codice, nei prossimi giorni ci provo al momento ho creato la piantina, inserito i sensori, adesso leggo tutto correttamente,mi manca i comandi per le luci, caldaia e la tenda esterna, allego screenshot, questa visualizzazione va benissimo da web

grazie
Senzanome.png

--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.
--
Luca Sanna

luca

unread,
Sep 18, 2017, 3:25:11 PM9/18/17
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
Mauro scusa se riprendo l'argomento, ma se invece nel dato mqtt vorrei prendere solo i numeri interi e tagliare i decimali, come posso modificare la riga?

(@event.mqtt.message*10) 

grazie

ps: così evito che salvi di continuo su influxdb 


--
Luca Sanna

Mauro Cicolella

unread,
Sep 19, 2017, 10:01:33 AM9/19/17
to Freedomotic - IoT and Smart Spaces Framework
Intendi che da 25.7 vuoi solo 25?
In questo caso devi leggere il dato raw ovvero senza moltiplicarlo per 10 ma occorre modificare il parametro <scale></scale> del behavior temperature dell'oggetto termometro o termostato impostandolo a 1 (mentre ora è a 10 e quindi visualizza una cifra decimale).
Se vai nella cartella  data/furn/df28...../data/obj trovi il file index.txt con la lista degli oggetti. Apri il file corrispondente e imposta la scala a 1.

Mauro


Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

Mauro Cicolella

unread,
Jan 3, 2018, 6:01:18 AM1/3/18
to Freedomotic - IoT and Smart Spaces Framework
Ciao a tutti
riprendo il post per segnalarvi una novità.
Su proposta di Alberto, che sta sperimentando le integrazioni con altri framework via MQTT, abbiamo pensato di utilizzare questo protocollo per pubblicare gli eventi generati da Freedomotic.
In questo modo, sottoscrivendo alcuni topic specifici, è possibile ricevere aggiornamenti in tempo reale sul cambio di stato di un oggetto, di una zona o un qualsiasi messaggio.
Per ora si tratta di un PoC ma come potete vedere nell'immagine allegata funziona bene.
Mi sono accorto che al momento il payload è in un formato non proprio standard quindi sarebbe utile aggiungere due nuove funzionalità al core per recuperarlo in JSON ed eventualmente in XML così da poter effettuare delle successive elaborazioni o per estrapolare specifici dati.
A regime sarà possibile abilitare o meno questa opzione nel plugin mqtt-client.
La stessa sarà poi disponibile nel plugin mqtt-broker.
Se avete suggerimenti fatemi sapere.


Mauro

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:
mqtt-events.png

alberto mengoli

unread,
Jan 3, 2018, 8:15:55 AM1/3/18
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
Ciao a tutti,
@Mauro il solito grandioso lavoro!! L'integrazione tra frameworks non e' mai stata piu' vicina di cosi'. Come dicevi giustamente se il formato del payload fosse JSON o XML lo si potrebbe "dare in pasto" cosi com'e' ad un parser standard per recuperare velocemente le proprieta' dell'oogetto, ma sono chiaramente dettagli; si vede benissimo che l'oggetto kitchen light e' acceso con brightness=100, quindi funziona piuttosto bene. Volevo solo chiederti se la cosa funziona al momento sia in entrata che in uscita (su opportuni topics). Grazie per il solito grandissimo lavoro. @tutti: si accettono consigli e pareri sul concetto di integrazione tra frameworks. Buona giornata, 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 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/8ce7ebe7-5e70-461e-8c6d-da06b1cdd58b%40googlegroups.com.

Mauro Cicolella

unread,
Jan 3, 2018, 11:44:02 AM1/3/18
to Freedomotic - IoT and Smart Spaces Framework
Sono pubblicati solo gli eventi su specifici topic.

Mauro

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

Mauro Cicolella

unread,
Jan 4, 2018, 5:41:51 AM1/4/18
to Freedomotic - IoT and Smart Spaces Framework
Ciao,
ho iniziato ad implementare il metodo per la visualizzazione del contenuto degli eventi in formato JSON.
Questo è un esempio basato su un generico MessageEvent

[{"logical":"AND","attribute":"date.day.name","operand":"EQUALS","value":"Thursday"},{"logical":"AND","attribute":"date.day","operand":"EQUALS","value":"4"},{"logical":"AND","attribute":"date.month.name","operand":"EQUALS","value":"January"},{"logical":"AND","attribute":"date.month","operand":"EQUALS","value":"1"},{"logical":"AND","attribute":"date.year","operand":"EQUALS","value":"2018"},{"logical":"AND","attribute":"date.dow","operand":"EQUALS","value":"5"},{"logical":"AND","attribute":"time.hour","operand":"EQUALS","value":"11"},{"logical":"AND","attribute":"time.minute","operand":"EQUALS","value":"28"},{"logical":"AND","attribute":"time.second","operand":"EQUALS","value":"59"},{"logical":"AND","attribute":"time","operand":"EQUALS","value":"112859"},{"logical":"AND","attribute":"date","operand":"EQUALS","value":"20180104"},{"logical":"AND","attribute":"sender","operand":"EQUALS","value":"UnknownSender"},{"logical":"AND","attribute":"uuid","operand":"EQUALS","value":"3fec0905-4341-4b4c-b38e-fb2115040ddd"},{"logical":"AND","attribute":"type","operand":"EQUALS","value":"event"},
{"logical":"AND","attribute":"message.text","operand":"EQUALS","value":"hello there"},{"logical":"AND","attribute":"message.type","operand":"EQUALS","value":"callout"},{"logical":"AND","attribute":"message.level","operand":"EQUALS","value":"info"}]

Il filtro per selezionare i dati di interesse andrebbe fatto su "attribute" mentre "value" è il corrispondente valore.


Mauro

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

alberto mengoli

unread,
Jan 4, 2018, 6:30:15 AM1/4/18
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
Ciao,
Come è possibile avere questa meraviglia per tirare fuori un po' di test?

--
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 in questo gruppo, invia un'email a freedomotic-it@googlegroups.com.

Mauro Cicolella

unread,
Jan 4, 2018, 8:00:34 AM1/4/18
to Freedomotic - IoT and Smart Spaces Framework
Al momento è ancora tutto sul mio computer.
Conto di aggiornare nel pomeriggio il core per poi passare al plugin.
Sarà quindi necessario scaricare l'ultima build per disporre della nuova feature mentre il plugin posso inviarlo come al solito con wetransfer.
Per mantenere la retrocompatibilità con le versioni precedenti è possibile scegliere il formato dei dati da pubblicare: raw (come quello nell'immagine allegata al precedente post) e json. In questo modo si evitano eventuali errori a runtime.

Mauro

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

alberto mengoli

unread,
Jan 4, 2018, 9:10:51 AM1/4/18
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
Eccezionale! Non vedo l'ora!!

--
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 in questo gruppo, invia un'email a freedomotic-it@googlegroups.com.

Mauro Cicolella

unread,
Jan 4, 2018, 10:39:16 AM1/4/18
to Freedomotic - IoT and Smart Spaces Framework
La nuova build 263 è disponibile su TeamCity.


Mauro

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

luca

unread,
Jan 4, 2018, 10:40:49 AM1/4/18
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework

A quando un sistema di aggiornamento?


--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/freedomotic-it/3f194d15-62ae-4442-922d-eb623d38cda8%40googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.
--
Luca Sanna

Mauro Cicolella

unread,
Jan 4, 2018, 12:10:19 PM1/4/18
to Freedomotic - IoT and Smart Spaces Framework
Cosa intendi esattamente?


Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

luca

unread,
Jan 4, 2018, 12:13:34 PM1/4/18
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
direttamente da freedomotic si aggiorni da solo alla nuova release, magari se si potesse scegliere il ramo, testing o stable sarebbe utile, invece adesso se non ho visto e capito male, ad ogni modifica bisogna farlo in manuale, giusto?

--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.


--
Luca Sanna

Mauro Cicolella

unread,
Jan 4, 2018, 12:14:05 PM1/4/18
to Freedomotic - IoT and Smart Spaces Framework
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

Mauro

Il giorno domenica 29 maggio 2016 12:04:51 UTC+2, Mauro Cicolella ha scritto:

Mauro Cicolella

unread,
Jan 4, 2018, 12:21:45 PM1/4/18
to Freedomotic - IoT and Smart Spaces Framework
Le dailybuild sono "sperimentali" e quindi andrebbero utilizzate solo per test e feedback. 
Al momento il sistema di CI crea un package completo da scaricare manualmente.
Sinceramente non saprei come realizzare un meccanismo di aggiornamento selettivo del genere e ad ogni modo non avrei risorse adeguate per farlo.
Già è tanto il lavoro che sto facendo.

luca

unread,
Jan 4, 2018, 12:24:33 PM1/4/18
to Mauro Cicolella, Freedomotic - IoT and Smart Spaces Framework
era un idea :)

--
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 in questo gruppo, invia un'email a freedom...@googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.


--
Luca Sanna

alberto mengoli

unread,
Jan 4, 2018, 3:33:08 PM1/4/18
to Freedomotic - IoT and Smart Spaces Framework
Grande Mauro!!!
Sei stato velocissimo e precisissimo; grazie! Hai concretizzato di fatto quello che era uno scambio di idee nel giro di alcuni giorni. Fantastico.
Reply all
Reply to author
Forward
0 new messages