$1) L'applicazione pratica in senso generale è una vera e propria GUI intesa come, prendendo in prestito da wikipedia:
è un tipo di interfaccia utente che consente all'utente di interagire con la macchina in modo visuale utilizzando rappresentazioni grafiche piuttosto che comandi testuali. (
https://it.wikipedia.org/wiki/Interfaccia_grafica)
Più in concreto una finestra con menu, pulsanti, etichette di testo, campi di input testuali, widgets vari, controlli immagine e chi più ne metta che può funzionare su diverse piattaforme come linux/windows/web perchè è concepita cross platform fin dall'origine.
Essendo EGE2D nata prevalentemente per l'ambito automazione/domotica presenta dei controlli orientati a questo compito, ad esempio i pulsanti di comando ON/OFF per devices, bargraph, widgets per la visualizzazione valori attuali.
(anche trend e alarm messaging anche se ad oggi sono in programma di completamento e non ancora rilasciati nella versione attuale, lo saranno tra un po ma non troppo se c'è riscontro).
La libreria è open source e chiunque può aprire il progetto compilarlo o modificarlo ed estenderne le funzionalità.
Questa è la gui che abbiamo realizzato ed è generica e in ottica di essere usata come scada/hmi.
Per l'ambito domotico/raspberry(come che facciamo riferimento a rapberryitaly) il progetto prevede due funzionalità ausiliarie che ne rendono semplice l'impiego:
1) le pagine si configurano tramite un file di configurazione xml in cui vengono inseriti gli elementi widgets, ad esempio:
<control>
<id>0</id>
<name>"SwitchLampadaCamera"</name>
<position>
<x>200</x>
<y>100</y>
</position>
<ctrlType>controlSwitch</ctrlType>
<actionList>
<action>0
<id>0</id>
<type>"setControlValue"</type>
<variableToSet>"raspberryVariable321"</variableToSet>
</action>
</actionList>
</control>
L'xml viene caricato ad avvio progetto e imposta la pagina in modo congruente, sul modello di come fa l'html per inserire degli elementi su una pagine web. E' un linguaggio di markup che specifica le caratteristiche degli elementi. Insieme all'oggetto viene anche inserita l'azione che si vuole egli compia in conseguenza di click utente. (setta una variabile del controllore in questo caso).
2) è implementato internamente un sistema di comunicazione basato su Websockets che permette all'interfaccia di comunicare con il controllore Raspberry per scambiare informazioni sotto forma di messaggi. I messaggi sono nelle due direzioni vediamo degli esempi pratici:
a) una volta attivata la pagina come da xml al punto sopra, quando si fa click sullo switch parte un messaggio dalla gui al controllore del tipo : "[opcodeSetValue,refVariable:"raspberryVariable321",value:1]".
Il raspberry in ascolto riceve tramite socket aperto la stringa di comando e la interpreta attivando le operazioni conseguenti.
b) in generale sono previsti dei messaggi anche dal controllore alla gui che impostano il valore visualizzato sull'interfaccia ,rilevando i cambi di stato da campo, del tipo:
"[opcodeSetControlStatus,refControlId:0,value:0]" , ad esempio imposterebbe lo stato dello switch del caso precedente nella posizione di off consentendo un riallineamento dell'interfaccia con dati aggiornati o rilevati all'avvio.
c) come chiedevi nell'intervento precedente è possibile anche comandare la visibilità o la posizione dei controlli da python sul controllore tramite comandi dedicati del tipo:
"[opcodeSetControlPosition,refControlId:0,x:100,y:420]" che causerebbe il riposizionamento del controllo alle nuove coordinate.
------------------------------------------------------------
$2) Responsive, nel senso, sono in uno stabilimento, gestisco tutti i macchinari col tablet, questa interfaccia funziona? Da quel che hai scritto, direi di si.
--------
Diciamo che il controller destinazione è raspberry. Nella lan possono essere presenti più raspberry tutti raggiungibili tramite il loro IP quindi credo di poter rispondere che tramite il tablet li si possa raggiungere e controllare tutti. Ognuno, avrebbe il suo server Apache dedicato e la sua interfaccia.
------------------------------------------------------------
$3) Per i sensori intendo i classici che trovi su aliexpress, le cose aziendali su misura ovviamente sono dedicate.
--------
I sensori standard sono di tipo digitale e analogico di input o output indipendentemente dal loro involucro hardware che li incapsula. I digitali possono essere controllati tramite comandi digitali in uscita (es. switch) e in ingresso da stati on / off come label o immagini verde/rosso in funzione dello stato. Le analogiche sono in generale controllate e visualizzate tramite campi di testo anche numerico sia in uscita per comando o in ingresso come valore visualizzato. Poi ci sono anche widgets più esotici tipo bargraph che adempiono allo stesso scopo, cambia solo il modo di presentare l'informazione numerica.
Per queste cose ci sono degli elementi di base pronti all'uso e anche modi per estendere le grafiche. Altre è necessaria programmazione aggiuntiva.
------------------------------------------------------------
$4) notifiche sul cellulare nel senso:
nello stabilimento ho il mio bel tablet, un sensore rileva che Aziz è finito nella vasca di cromatura Smile , vorrei un avviso
----
A parte che quando Aziz deve cromare, gli devi sempre sguinzagliare alle costole Abdul per sicurezza, che è meglio che non ci si può fidare mai di quello li...
detto questo, ci sarà una lista allarmi con tanto di ack e reset, volendo aggiungiamo anche "rescue"
------------------------------------------------------------
grazie che mi hai segnalato che non si capisce, mettiamo un doc. specifico ?