Giter VIP home page Giter VIP logo

onos's People

Contributors

ikatsukoi avatar onosadmin avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

onos's Issues

Problema seriale usb

Se la seriale è connessa ma arduino non è presente o non comunica onos aspetta indefinitivamente risposta e non avvia il webserver..

Aggiornamento variabile interfaccia database online

Per migliorare la velocità di comando del'onos center dal server online si può fare in modo che quando un utente si logga nella pagina web online di controllo l'onoscenter se ne accorga ed inizi ad scaricare con frequenza maggiore i comandi dal database online.
Da sviluppare quando finita l'interfaccia web

Verificare periodicamente disponibiltà aggiornamenti e chiedere agli utenti di aggiornare onos

OnosCenter deve essere in grado di verificare se sul server principale sono presenti degli aggiornamenti e deve chiedere agli utenti di confermare l'aggiornamento.
Bisogna fare un sistema che periodicamente controlli la versione presente sul server e che mostri una comunicazione (ad esempio una tendina nella parte inferiore della grafica) inoltre da li l'utente deve selezionare se vuole posticipare l'aggiornamento o se vuole effettuarlo.
Deve essere anche possibile vedere quali saranno i cambiamenti dopo l'aggiornamento..

Aggiornamento firmware tramite radio

Da implementare la parte di aggiornamento firmware tramite radio, sviluppando gli esempi che ho provato.
Da aggiungere sia lato arduino sia lato python.
Da fare una notifica nella gui html per l'utente che il nodo non funzionerà per i prossimi 5 minuti e che premendo accetta la licenza ed il rischio ...una volta premuto parte l'aggiornamento di quel singolo nodo.
Quando l'aggiornamento finisce con successo o fallisce ci deve essere una notifica che informa l'utente.
Da decidere se nel mentre ci deve essere un elemento che gira tipo caricamento in corso.
Non sarà possibile fare una barra con la percentuale del processo perchè troppo laborioso..

Possibilità di rinominare gli oggetti web

Al momento non è possibile rinominare gli oggetti di un nodo .
Sviluppare un metodo per rendere possibile l'associazione tra nome oggetto dato dall'utente e nome dell'oggetto nel nodo.
Probabilmente si potrebbe creare un dizionario di traduzione ...
Notare che il nodo comunica solo il numero progressivo dell'oggetto quindi ad esempio dice: il primo oggetto del nodo è cambiato dallo stato 0 allo stato 1.
Quindi si potrebbe fare una correlazione tra nome oggetto dell'utente e numero progressivo dell'oggetto nel nodo.
L'utente al momento può cambiare lo stato di un oggetto da pagina web, da scenario e da mail, tenere conto che l'utente da questi mezzi deve poter usare il nome da lui dato all'oggetto.

Creazione Scenari

per la creazione degli scenari prendo come esempio la pagina che avevamo nella vecchia versione della grafica o bisogna aggiungere o togliere qualcosa ?

enable
set type : condition-math-timer
set type after run : nothing-autodelete-onetime-shot
delay time
priprity
summary condition
summary functions
pulsanti vari per condizioni e creazione

avrei delle modifiche da fare e un idea per rendere semplice e user friendly la creazione delle condizioni però è lunga da scrivere faccio prima a creare un esempio e poi mostrartelo

Cose da aggiungere alla grafica

Cose da aggiungere alla grafica:

-Collegamento ad indirizzo locale di onos..192.168.x.x se si è su interfaccia web da internet e metodo per riconoscere se si è collegati in locale oppure da remoto.

Possibilità modifica parametro frequenza aggiornamento nodo

Su nodi che hanno un sensore collegato sarebbe interessante permettere all'utente di modificare la frequenza con la quale il nodo aggiorna il dato su onos , considerando che se si mette una frequenza troppo alta e si hanno troppi nodi la capacità di onos di controllare un nodo via radio diminuisce .

utenti database online/ dizionario locale

Creare una sincronizzazione tra gli utenti online(database) e quelli locali (dizionario) su onos, al momento ci sono due dizionari distinti ..bisogna creare interfaccia web e gestione software degli utenti .

problemi feedback interfaccia online

l'interfaccia web online passa da 0 a pending a 0 e poi ad 1 quando si preme il pulsante...
rendendo l'interfaccia online non affidabile.
(per adesso lo fa solo con plug0_WPlugAvx0008)

creazione nuovo oggetto

Sviluppare la parte web per permettere agli uenti di creare manualmente degli oggetti e di modificare quelli esitenti.

Ecco i parametri che gli utenti dovranno poter cambiare:

Ci dovrà essere una casella da spuntare per visualizzare i parametri avanzati.
E alcuni parametri saranno modificabili solo se si è amminitratori.

  • '''objname''' : the web object name
  • '''type''' : the web object type se l'oggetto è stato creato in automatico non si potrà cambiare questo parametro.

Web Object Status type[edit]
digital_input
digital_output
analog_input
analog_output
servo_output
sr_relay
string_var
numeric_var
switch
digital_obj
analog_obj
cfg_obj

  • '''htmlDict''' : a dictionary where the keys are the status values and the data is the html to display for each status visibile solo e si spunta la casella advanced options

  • '''styleDict''' : a dictionary where the keys are the status values and the data is the style to use for each status visibile solo e si spunta la casella advanced options

  • '''cmdDict''' : a dictionary where the keys are the status values and the data is the linux shell command to execute when the webobject became equal to the relative status key solo admin può cambiare questa impostazione visibile solo e si spunta la casella advanced options

  • '''own''' : the username of the web object owner (the one who created it) solo admin può cambiare questa impostazione visibile solo e si spunta la casella advanced options

  • '''grp''' : the group list the user must belong to in order to set the status (linux style) solo admin può cambiare questa impostazione visibile solo e si spunta la casella advanced options

  • '''perm''' : the permission the user must have in order to change the status (linux style) , expressed in octal form like 777 ,read write execute (execute is not used) solo admin può cambiare questa impostazione visibile solo e si spunta la casella advanced options

  • '''mail_l''' : list of mail addresses which onos will send a mail when the object status changes

Aggiornamento arduino da seriale

Da sviluppare la parte per aggiornare il fw di arduino collegato ad onosCenter tramite seriale..bisognerà calcolare i tempi e far autoresettare arduino tramito comando seriale visto che non abbiamo il rts su openwrt...

cose da aggiungere alla grafica

Cose da aggiungere alla grafica:

-La parte in basso della pagina web deve poter contenere un log del sistema e di tutte le azioni che esso compie, cambio stati oggetti , cambio stati da mail ecc
questo log deve essere minimizzabile..

switch inizio comando onos su onos_rf69_serial_transponder

fare automa per trovare inizio comando onos su onos_rf69_serial_transponder

  switch (tmp_byte) {
    case '[':{
      onos_cmd_start_detector=1; 
    }
    case 'S':{
      if (onos_cmd_start_detector==1){ 
        onos_cmd_start_detector=2; 
      }
      else{// reset automa
        onos_cmd_start_detector=0;
      }
    }

    case '_':{
      if (onos_cmd_start_detector==2){ 
        onos_cmd_start_detector=0; 
        onos_cmd_start_position=0;

      }
      else{// reset automa
        onos_cmd_start_detector=0;
      }
    }

  } // end switch

Firmware upgrade sonoff via wifi

Testata la possibilità di aggiornare sonoff da wifi , resta ora da fare una interfaccia che invii il comando per effettuare l'aggiornamento.
Il comando da dare per aggiornare è:
http://192.168.1.17/cm?user=admin&password=password&cmnd=upload 1
Bisogna posizionare il nuovo firmware in /scripts_folder/sonoffOTA/Sonoff1P0001.ino.bin
E rinominarlo con il seriale del nodo.

Inoltre onosCenter dovrebbe ricevere e rinominare autonomamente i nuovi fw da server myonos...(da sviluppare procedura)

Lista parti grafica

Pagina home

  • Display Zone

  • Display Scenari

  • Display Grafici [tempo di accensione,consumo,temperatura,umidità,luminosità,pressione] dei nodi

  • Display Nodi [stato(online/offline),parametri] nodi

  • Display notifiche

  • Modifica oggetti [creare,modificare,cancellare,rinominare] oggetti,aggiungere utenti per notifica cambiamento stato via mail/telegram

  • Modifica zone [creare,modificare,cancellare,rinominare] zone

  • Modifica scenari [creare,modificare,cancellare,rinominare] scenari (terminata)

  • Modifica utenti [creare,modificare permessi,cancellare,aggiungere mail ,cambiare password] utenti

  • Modifica impostazioni [backup,esporta,importa,ripristina a default] impostazioni

  • Aggiornamento nodi [caricamento fw nodo sonoff da file,caricamento nodo rfm69 da file]

  • Aggionamento OnosCenter con notifica di aggiornamento online disponibile.

ctrl+c doesn't terminate python

Premendo ctrl+c non si termina più python webserver.py (provato con un nodo che chiedeva address ma non lo riceveva,quindi con onos che continuava a ritrasmettere..)

zona automatica originale

quando un nuovo oggetto viene acceso e comunica con onoscenter per la prima volta e non è stata creata nessuna stanza (nel caso del primo avvio) si potrebbe creare una zona in automatico (automatic_zone) nella quale vengono assegnati tutti i nuovi oggetti collegati ad onoscenter

Tips per spiegare il funzionamento delle cose all'utente

Sulla parte grafica degli scenari ma anche altrove potrebbe essere comodo mettere un pulsante punto interrogativo per ogni form , premendo su questo pulsante dovrebbe comparire del testo che spieghi la funzione del form ed i valori che possono essere inseriti.

Storico comandi cambiamento oggetti

Da implementare uno storico (almeno di 24 ore) che tenga traccia dei cambiamenti di stato degli oggetti e che segni l'username dell'utente che ha deciso il cambiamento, inoltre se il cambiamento è stato fatto da uno scenario salverà come utente che ha fatto l'azione il nome dello scenario.

Struttura a blocchi del funzionamento onos

Per semplificare la comprensione del sistema bisognerebbe disegnare uno schema a blocchi ed una lista delle azioni e funzioni che onos compie .
Da fare quando è quasi completato il sistema.

problema scenari

Se il server online non è attivo e quindi onoscenter non riesce a parlarci gli scenari probabilmente non funzionano..da verificare e risolvere.

Assegnazione valori numerici ,date ed ore agli scenari

Nella parte di inserimento delle condizioni scenari ma anche nella parte delle funzioni da eseguire andrebbe aggiunto un metodo per inserire numeri e date oltre che i nomi degli oggetti (che sono già presenti al momento)

bug: se si rimuove la porta seriale onos si termina

Se all'avvio di onos si rimuove la porta usb seriale onos da errore:
class Serial_connection_Handler destroyed
class arduinoserial destroyed
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
executed changeWebObjectType() with :wifi0_Plug6way0002
Traceback (most recent call last):
File "webserver.py", line 1373, in
changeWebObjectType(a.getName(),a.getType()) #i call this in order to setup the node io conf for the webobjects
File "webserver.py", line 411, in changeWebObjectType
hardware.setHwPinMode(node_address,pins_to_set[0],"DOUTPUT")
NameError: global name 'hardware' is not defined

standardidazzione nome files

Rinominare i files html ,css e fonts in modo che seguano questa specifica:

home --> pagina home al momento mostra la lista delle zone

display_zone_objects --> pagina che mostra la lista degli oggetti in una zona

scenarios_list --> pagina che mostra la lista degli scenari

mod_scenario --> pagina per modificare uno scenario

login --> pagina di login

Aggiornamento mantenendo configurazioni utente

Al momento dopo aggiornamento automatico di onos i seguenti files rimangono quelli vecchi:
tutto nelle cartelle:
cgi
config_files
zones
Ed il file
globalVar.py

Bisognerebbe verificare che sia vero e fare in modo di permettere ad onos di aggiornare in modo intelligente i files di configurazione leggendo i vecchi dati e aggiungendo le variabili non ancora create in quella versione di onos..

Impostazione grafica dei permessi degli utenti e sviluppo

L'amministratore del sistema deve poter impostare i permessi degli oggetti e delle zone per ogni utente e gruppo , da sviluppare la parte grafica e la gestione ( l'utente che non ha permesso di vedere lo stato dell'oggetto vedrà un punto di domanda oppure una x al posto del valore)

messaggio mail personalizzabile

Rendere possibile la configurare degli scenari in modo che mandino una mail con testo personalizzabile agli utenti inseribile in un txt..
Oppure rendere possibile personalizzare la mail che viene mandata al cambio dello stato di un oggetto.

Parte grafica per modificare afterDelayFunctionsToRun negli scenari

afterDelayFunctionsToRun è una lista di operazioni che l'utente può configurare per essere esguite un certo tempo dopo che le condizioni dello scenario si sono verificate.
In questo modo lo scenario esegue le operazioni in functionsToRun quando si verificano le sue condizioni , poi crea un'altro scenario con all'interno delle functionsToRun le operazioni che erano in afterDelayFunctionsToRun , e come condizione del nuovo scenario mette un tempo che è l'orario quando si sono verificate le prime condizioni sommato al delay impostato dall'utente.

Con questa soluzione si possono creare condizioni molto avanzate come ad esempio :
Se passa qualcuno ed attiva un sensore allora onos accende una luce e dopo 5 minuti la spegne.

Queste cose si possono fare anche usando due scenari separati..
Per il momento l'interfaccia web per configurare gli scenari è già abbastanza complessa quindi forse non è il caso di sviluppare un ramo di operazioni aggiuntive...

Mqtt per usare harware alternativo

Per usare ulteriore hardware fatto da terzi è necessario sviluppare la parte che gestisce mqtt con onos.
Il broker è installabile su openwrt quindi basta implementare la parte python del client.

Regole base per scrivere html con form

Se esiste già la pagina partire sempre dalla pagina html generata da onos perchè ha sempre le ultime modifiche apportate.

Tutte le pagine che hanno un form devono avere :

parte html con tutti gli input....

Altrimenti onos non riceve i dati post..

Tutti gli input devono avere il parametro name="un nome" altrimenti non passano la variabile tramite il post e si perdono ore a capire il perchè non funziona :P

Esempio:

Tutti i pulsanti "invio" che servono per inviare dati del form devono avere la voce submit, non devono essere solamente link html:

Esempio:

selecting serial port

We need a way for the user to select the serial port where arduino is connected to the pc.
Graphical or text parameters? for now it will connect to the first one found ..

Creazione nuova zona

Per creare una nuova zona si clicka sul pulsante nuova sul menù destro a comparsa una volta ckickato il pulsante si viene reindirizzati ad una nuova pagina ?

se si una volta clickato sul submit sarebbe utile essere reindirizzati alla pagina con la lista delle zone

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.