Visualizzazione post con etichetta Webiopi. Mostra tutti i post
Visualizzazione post con etichetta Webiopi. Mostra tutti i post

martedì 29 ottobre 2013

Personalizzazione di Webiopi

Il sistema di gestione Web delle porte GPIO di Raspberry presentato in questo post puo' essere anche customizzato nell'aspetto dell'interfaccia per esempio per mostrare un solo pulsante



Un esempio viene riportato al Wiki di Google Code ...peccato che sia sbagliato

Dopo un po' di ricerche ecco una pagina funzionante che accende e spenge il solo pin GPIO 25. L'aspetto fondamentale e' che prima di usare il pin questo deve essere dichiarato come output
Il file deve essere posizionato in /usr/share/webiopi/htdocs
------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content = "height = device-height, width = 420, user-scalable = no" /> 
        <title>WebIOPi | Demo</title>

        <script type="text/javascript" src="/webiopi.js"></script>
        <script type="text/javascript">
        webiopi().ready(function() {
webiopi().setFunction(25,"out");

                var content, button;
                content = $("#content");
                               
                button = webiopi().createGPIOButton(25, "SWTICH");
                content.append(button); // append button to content div
                       
           

webiopi().refreshGPIO(true);
                
        });
                
        function mousedown() {
                webiopi().digitalWrite(7, 1);
        }
        
        function mouseup() {
                webiopi().digitalWrite(7, 0);
        }
        
        function outputSequence() {
                var sequence = "01010100110011001100101010" // S.O.S. morse code or whatever you want
                // output sequence on gpio 7 with a 100ms period
                webiopi().outputSequence(7, 100, sequence, sequenceCallback);
        }
        
        function sequenceCallback(gpio, data) {
                alert("sequence on " + gpio + " finished with " + data);
        }
        
        function callMacro() {
                var args = [1,2,3] // or whatever you want
                // call myMacroWithArgs(arg)
                webiopi().callMacro("myMacroWithArgs", args, macroCallback);
        }
        
        function macroCallback(macro, args, data) {
                alert(macro + " returned with " + data);
        }
        
        </script>
        <style type="text/css">
                button {
                        display: block;
                        margin: 5px 5px 5px 5px;
                        width: 160px;
                        height: 45px;
                        font-size: 24pt;
                        font-weight: bold;
                        color: black;
                }
                
                input[type="range"] {
                        display: block;
                        width: 160px;
                        height: 45px;
                }
                
                #gpio7.LOW {
                        background-color: White;
                }
                
                #gpio7.HIGH {
                        background-color: Red;
                }
        </style>
</head>
<body>
        <div id="content" align="center"></div>
</body>
</html>

venerdì 18 ottobre 2013

Controllo remoto di rele' mediante Raspberry

Recentemente un amico mi ha chiesto un metodo per poter gestire in remoto (dove per remoto si deve intendere accendere una caldaia negli USA stando in Italia) usando una Raspberry.

La cosa e' piuttosto semplice da fare con Php ma visto che la ruota e' gia' stata inventata, e funziona bene, ho preferito usare questo strada

Prima di tutto la parte collegamenti
La Raspberry, con montata una Raspbian, e' stata collegata al rele' alla porta GPIO #23 (porta S del rele') e i classici +5V e GND


Per la parte software ho impiegato WEBIOPI , uno script in Python che crea un piccolo webserver interfacciato con le GPIO

Prima prima cosa di sscaricare il file
wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz

e lo si scompatta
A questo punto da utente root si digita
./setup.sh
(attenzione, durante questa fase la Raspberry deve essere connessa ad internet perche' vengono scaricate eventuali librerie non gia' presenti nel sistema...l'operazione dura qualche minuto)

al termine si puo' digitare (sempre da root)
/etc/init.d/webiopi start

a questo punto collegandosi all'indirizzo della macchina sulla porta 8000 (od in localhost:8000) si accede ad una interfaccia di questo tipo

La username di default e' "webiopi" e la password "raspberry"

All'inizio tutte le porte sono di Input. Quindi si deve cliccare sulla casellina grigia accanto alla porta di interesse (nel mio caso #23) e porta in modalita' output (OUT). Fatto cio' cliccando sul numero della porta si interagisce con il rele' aprendo e chiudendo il contatto


Nel video si osserva il led luminoso del rele' che si accende quando si apre il contatto via web

Per rendere il sistema sempre avviato all'accensione del sistema si deve digitare


update-rc.d webiopi defaults

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...