Differenze tra le versioni di "Centralina livello 1/Notes"

Da raspibo.
Jump to navigation Jump to search
Riga 1: Riga 1:
 +
[[Centralina livello 1|Torna a Centralina livello 1]]
 +
 +
== Appunti sparsi ==
 +
 +
=== Caso PIR ===
 +
 +
Invio da remoto, alla posizione:
 +
 +
I/Casa/Piano1/Sala/Messaggi
 +
 +
questa stringa:
 +
 +
{ "ID" : "PIR0", "Valore" : "0" }
 +
 +
La centralina legge, eventualmente manipola (aggiungendo "DataOra" : "2016-03-20 09:45:11"), e modifica/aggiunge il sensore a Redis ..
 +
 +
Nel caso cambi il valore, stessa cosa, arriva la stringa:
 +
 +
{ "ID" : "PIRangoloTV", "Valore" : "1" }
 +
 +
La centralina legge, eventualmente manipola, e modifica/aggiunge il sensore a Redis ..
 +
 +
=== Caso 1 ===
 +
 +
Invio da remoto ad MQTT, alla posizione:
 +
 +
"I/C/P/S/Type"
 +
 +
questa stringa:
 +
 +
{ "ID" : "TEMProv1", "Valore" : "18.5" }
 +
 +
La centralina legge, manipola (aggiungendo "DataOra" : "2016-03-20 09:45:11"), e modifica/aggiunge il sensore a Redis ..
 +
 +
Vengono create due chiavi:
 +
 +
"I:C:P:S:Type:ID" e "I:C:P:S:Type:ID:Valori"
 +
 +
Nelle successive letture sara` solo inserito il valore nella lista "Valori" (l'utenza e` gia` inserita, non e` piu` necessario)
 +
 +
Tramite apposita pagina sara` poi possibile manipolare il resto dei dati, come la descrizione ed altre informazioni (un paio ancora al vaglio).
 +
 +
=== ? ===
 +
 +
Ma se ci fosse una spia/lampada da accendere ?
 +
 +
Si potrebbe fare arrivare il feedback, ma come riconoscere che e` un'uscita ? Visto che arriverebbe come ingresso ?
 +
 +
Forse serve un TipoIO "F" ?
 +
 
== Record da/per MQTT ==
 
== Record da/per MQTT ==
  

Versione delle 09:30, 17 apr 2016

Torna a Centralina livello 1

Appunti sparsi

Caso PIR

Invio da remoto, alla posizione:

I/Casa/Piano1/Sala/Messaggi

questa stringa:

{ "ID" : "PIR0", "Valore" : "0" }

La centralina legge, eventualmente manipola (aggiungendo "DataOra" : "2016-03-20 09:45:11"), e modifica/aggiunge il sensore a Redis ..

Nel caso cambi il valore, stessa cosa, arriva la stringa:

{ "ID" : "PIRangoloTV", "Valore" : "1" }

La centralina legge, eventualmente manipola, e modifica/aggiunge il sensore a Redis ..

Caso 1

Invio da remoto ad MQTT, alla posizione:

"I/C/P/S/Type"

questa stringa:

{ "ID" : "TEMProv1", "Valore" : "18.5" }

La centralina legge, manipola (aggiungendo "DataOra" : "2016-03-20 09:45:11"), e modifica/aggiunge il sensore a Redis ..

Vengono create due chiavi:

"I:C:P:S:Type:ID" e "I:C:P:S:Type:ID:Valori"

Nelle successive letture sara` solo inserito il valore nella lista "Valori" (l'utenza e` gia` inserita, non e` piu` necessario)

Tramite apposita pagina sara` poi possibile manipolare il resto dei dati, come la descrizione ed altre informazioni (un paio ancora al vaglio).

?

Ma se ci fosse una spia/lampada da accendere ?

Si potrebbe fare arrivare il feedback, ma come riconoscere che e` un'uscita ? Visto che arriverebbe come ingresso ?

Forse serve un TipoIO "F" ?

Record da/per MQTT

Percorso di ricevimento dato, dove una "centralina" remota scrive il valore:

TipoIO(I)/PosizioneC/PosizioneP/PosizioneS/Tipo

Percorso d'invio comando, dove scrivere l'eventuale comando utenza che sia letto dalla "centralina" remota:

TipoIO(O)/PosizioneC/PosizioneP/Possession/Tipo

Il dato in arrivo avra` solo informazioni di base, esempio di input:

{ "ID" : "NomeUtenza", "Valore" : "1" }

Sono omesse { "TipoIO" : "I" , "PosizioneC" : "Casa", "PosizioneP" : "Piano0", "PosizioneS" : "Corridoio", "Tipo" : "PIR" }, perche` ricavabili da struttura directory.
Ho eliminato anche "DataOra" : "2016-03-16 09:46:01", perche` non sempre e` a disposizione, mentre lo sara` nella centralina, quindi si occupera` lei di inserirlo nella fase di manipolazione dati pre-inserimento in redis.

Il dato per 'comando' avra`, per esempio, queste informazioni:

{ "ID" : "NomeUtenza", "Valore" : "1" }

Anche qua, possono essere omesse le info ricavabili dal percorso di "scambio" dati.

4

RPI3

apt-get install redis-server redis-tools python3-redis

apt-get install mosquitto mosquitto-clients

apt-get install python3-pip

apt-get install nginx-full fcgiwrap

pip3 install paho-mqtt

3

http://docs.python-guide.org/en/latest/scenarios/json/

2

Per ricordarsi come estrarre le info:

Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> var = "/I/Casa1/Piano2/Stanza4/Message"
>>> var.split()
['/I/Casa1/Piano2/Stanza4/Message']
>>> var.split("/")
['', 'I', 'Casa1', 'Piano2', 'Stanza4', 'Message']
>>> var.split("/")[1]
'I'
>>> var.split("/")[2]                                                                                                                                                                                               
'Casa1'
>>> var.split("/")[3]
'Piano2'
>>> var.split("/")[4]
'Stanza4'
>>> var.split("/")[5]
'Message'
>>> var = "/I/Casa1/Piano2/Stanza4/Message"
>>> while (var != "/"):
...   #print(var)
...   print(os.path.basename(var))                                                                                                                                                                                  
...   var=os.path.split(var)[0]                                                                                                                                                                                     
... 
Message
Stanza4
Piano2
Casa1
I
>>> 

Ho controllato, sembra che mosquitto scriva senza il primo backslash, quindi:

>>> var = "I/Casa1/Piano2/Stanza4/Message"
>>> while (var != ""):
...   #print(var)
...   print(os.path.basename(var))
...   var=os.path.split(var)[0]
... 
Message
Stanza4
Piano2
Casa1
I
>>> 

1

http://nginx.org/en/docs/http/configuring_https_servers.html

apt-get install ssl-cert

make-ssl-cert generate-default-snakeoil --force-overwrite


pip3 install paho-mqtt