PDA

View Full Version : raspberry e lettura registri


ilgio
06-05-2014, 17:02
sto pilotando la mia domotica con minimalmodbus.
sto usando degli script in python per leggere e scrivere i registri.

funzionano perfettamente collegati a pagine internet..
quello che voglio fare è che nella pagina internet mi aggiorni ogni 2 secondi le letture dei registri.

cosa si potrebbe fare?
usare un java per aggiornare le pagine.. oppure creare un demone in pyton?

eaman
07-05-2014, 12:24
Prova con un micro web server, tipo flask .
Se cerchi ci sono 2/3 micro framework carini per pagine dinamiche con micro web server incorporato, tipo flask / bottle / pyramid da far girare su gunicorn con un impatto di risorse minimo.

antenore
07-05-2014, 12:25
Se hai la pagina internet scritta in html/php esiste la funzione per fare il refresh ogni n secondi....

ilgio
07-05-2014, 12:35
si la pagina è in php..
il fatto è che magari se sto navigando nella pagine e questo continua refresharmi la pagina… non è bello
no?

è una pagina immagina con tanti pulsanti per le lampade
quindi verde se è accesa e rossa se è spenta.

vorrei tenere questi pulsanti aggiornati

eaman
07-05-2014, 21:33
Ma non avevi detto che lavoravi in python?
Cosa fai, fai girare un intero webserver con php per una pagina su un device embedded? ...

- https://www.google.it/search?client=opera&q=asynchronous+networking+library&sourceid=opera&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=CphqU-r_HMWO8Qe05IDwCw#newwindow=1&q=asynchronous+webserver+python

ilgio
08-05-2014, 08:50
devo lanciare un file.py
sono riuscito a farlo con una pagina .php
ma vorrei farlo senza refresh e in trasparenza con jscript


il pulsante in html


<form action="file.php" method="get">
<input type="submit" value="luce" id="luce" style="height:23px;width:150px"/><br>
</form>
il file "file.php"


<?php

$param1 = '400'; #numero registro
$param2 = '1'; #bit della word in questo caso %MX400.1


$command= "python scrivi.py"; #nome del file python che scrivera' sul modbus
$command .= " $param1 $param2 2>&1"; #crei la stringa da passare al python
$pid = popen( $command,"r"); #passa la stringa al python
pclose($pid); #chiude il processo...credo


passthru("cat /var/www/pagina.html"); #ritorna alla pagina iniziale da cui hai schiacciato il bottone

?>

come si può fare in un modo migliore??

ilgio
09-05-2014, 09:33
non capisco il motivo…
il file python non mi viene lanciato da php

se lo eseguo a mano sul terminale funziona

invece con il file php non funziona..
come mai?
forse ci vuole qualche permesso?

eaman
09-05-2014, 13:39
$command= "python scrivi.py"; #nome del file python che scrivera' sul modbus

...di sicuro qua bisogna che ci metti il path assoluto per l'interprete python.

ilgio
12-05-2014, 13:15
ok stasera provo.
intanto,

allora inquadro brevemnte la situzione con un esempio di pagina web
ho un server debian web collegato alla domotica di casa.
la pagina web in questione ha 5 link con 5 icone affianco che indicano se è accesa o spenta

LUCE SALA (icona)
LUCE INGRESSO (icona)
LUCE CUCINA (icona)
LUCE STANZA (icona)


allora ho 2 script.. uno scrive i registri con python, e l'altro che li legge
però sulla pagina web li voglio vedere sempre aggiornati.. quindi chiedo a voi qual'è la strada migliore
1) creare un python che legge ogni 2 secondi e scrive in un DB i registri, poi nella pagina web fare in modo che ogni secondo il java controlli il DB e aggiorni le icone.
2) non fare il database e ogni 2 secondi il java lancia il python che legge i dati e aggiorna la pagina

che fare??