Centralina livello 1/Notes

Da raspibo.
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Torna a Centralina livello 1

Chiavi e codici extra

Nell'ultimo device ho inserito delle nuove definizioni utili per debug e controllo dei devices.

I/<C>/<P>/<S>/Start { "ID" : "WDT", "Valore" : "1" }
Questa stringa viene inviata ad ogni avvio del device.
Per controllare quanti riavvi "automatici" si siano avuti, dovrebbe essere suffciente controllare quanti valori contiene il record nel database redis.
I/<C>/<P>/<S>/DelayRead { "ID" : "KTdelay", "Valore" : "<numero>" }
Questa stringa viene inviata ad ogni cambio temporizzazione di lettura.
Utile per sapere a quanto e` impostato il timer di lettura sul device.
I/<C>/<P>/<S>/Errore { "ID" : "Errore", "Valore" : "<?>" }
Questa stringa viene inviata ad ogni errore ?
Usata nell'ultimo device per sapere quando viene riavviata la WiFi.

Chiavi e codici, esempi da ultimo device

I/Test/Test/Test/Luce { "ID" : "Luce", "Valore" : "516" }

I/Test/Test/Test/Temperatura { "ID" : "STtemp", "Valore" : "21.80" }

I/Test/Test/Test/Umidita { "ID" : "SThum", "Valore" : "58.20" }

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