Aviečių PI ir GPIO smeigtukai: Kontroliuoti LED web sąsaja

Per paskutines žinutes iš šios serijos, Mes matėme jie yra GPIO smeigtukai ir tarnauti, ir Kaip kontroliuoti galios šviesos diodai nuo terminalo; prieš pradėdami Mes turime įdiegti GPIO bibliotekos Python, ir surinktos elektroninės grandinės ir darbo.
Žiniatinklio programos HTML + PHP + Python tvarkyti keletą LED per į GPIO.

Šį kartą mes bus įdiegti į Apache web serveris, ir išmokti rašyti į kodą į HTML ir PHP kontroliuoti patį LED, ar kelių, web sąsaja.

gpioprogramar0pngPirmas dalykas, mes turi padaryti įdiegti lempos serverį, Taigi įveskite šias komandas terminale:

#Actualizamos los repositorios y el software de la pi
usuario@maquina:~$ sudo apt-get update && sudo apt-get upgrade

#Instalamos LAMP
usuario@maquina:~$ sudo apt-get install apache2
usuario@maquina:~$ sudo apt-get install php5 libapache2-mod-php5
usuario@maquina:~$ sudo service apache2 restart

Dabar mes pridėti kaip sudoer vartotojui www-data, Tai nėra išeitis daugiau užtikrinti, bet nepamirškite, kad mes darome bandymas kontroliuojamoje aplinkoje; aplinka gamybos turėtume ieškoti dar galima vykdyti scenarijus Python kaip sudoer.

Redaguoti šias teises, parašė sudo visudo į terminalą ir failo pabaigoje Pridėk www-data sudoer, Jis turi būti taip.

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL

Už kiekvieną pin GPIO Mums reikia sukurti pakatalogį ir tris scenarijus Python; vienas įjungti, kitą išjungti, ir galutinis scenarijų, kad mūsų LED mirksi, Štai pavyzdys su į PIN 4.

#!usr/bin/env/ python
## enciende.py
#Importamos la libreria y le cambiamos el nombre a GPIO
importuoti RPi.GPIO kaip GPIO
#Mes nustatyti numeravimo sistemą, kad mes norime, 
#Šiuo atveju sistema BCM
GPIO.setmode(GPIO. BCM)
#Konfigūruoti GPIO pin 4 kaip galia
GPIO.setup(4, GPIO. IŠ)
#Mes įjungti
GPIO.output(4, GPIO. AUKŠTOS)
#!usr/bin/env/ python
## apaga.py
#Mes importuojame bibliotekoje ir pakeisti savo pavadinimą į GPIO
importuoti RPi.GPIO kaip GPIO
#Mes nustatyti numeravimo sistemą, kad mes norime, 
#Šiuo atveju sistema BCM
GPIO.setmode(GPIO. BCM)
#Konfigūruoti GPIO pin 4 kaip galia
GPIO.setup(4, GPIO. IŠ)
#Išjungti led
GPIO.output(4, GPIO. MAŽAI)
#Ir mes išlaisvinti ir GPIO
GPIO.cleanup()
#!usr/bin/env/ python
## parpadea.py
#Mes importuojame bibliotekoje ir pakeisti savo pavadinimą į GPIO
importuoti RPi.GPIO kaip GPIO

#Būtinos vėlavimą
importo metu

#Mes nustatyti numeravimo sistemą, kad mes norime, 
#Šiuo atveju sistema BCM
GPIO.setmode(GPIO. BCM)

#Konfigūruoti GPIO pin 4 kaip galia
GPIO.setup(4, GPIO. IŠ)

#Įjungti ir išjungti su led 5 kartus
už i diapazone(0,5):

        GPIO.output(4, GPIO. AUKŠTOS)
        Time.Sleep(1)(1)
        GPIO.output(4, GPIO. MAŽAI)
        Time.Sleep(1)(1)

#Ir mes išlaisvinti ir GPIO
GPIO.cleanup()

Dabar atėjo laikas sukurti mūsų pagrindinį puslapį HTML ir PHP, yra mygtukai, mes paspauskite vykdyti scenarijus Python web sąsaja, vėliau matysime kaip galutinis hierarchija.

<html>
 <head>
                        <!--index.php--> 
 </head>
 <body>

  <!--GPIO17--> 
  <form action="" method="post">
   GPIO 17&nbsp;<input type="submit" name="encender17" value="Encender">
   <input type="submit" name="apagar17" value="Apagar">
   <input type="submit" name="parpadear17" value="Parpadear">

 <br></br>

  <!--GPIO27--> 
  <form action="" method="post">
   GPIO 27&nbsp;<input type="submit" name="encender27" value="Encender">
   <input type="submit" name="apagar27" value="Apagar">
   <input type="submit" name="parpadear27" value="Parpadear">

 <br></br>

  <!--GPIO4--> 
  <form action="" method="post">
   GPIO 04&nbsp;<input type="submit" name="encender4" value="Encender">
   <input type="submit" name="apagar4" value="Apagar">
   <input type="submit" name="parpadear4" value="Parpadear">

 <br></br>

  <!--GPIO22--> 
  <form action="" method="post">
   GPIO 22&nbsp;<input type="submit" name="encender22" value="Encender">
   <input type="submit" name="apagar22" value="Apagar">
   <input type="submit" name="parpadear22" value="Parpadear">

 </body>
</html>

<?php

// Funciones PHP del pin GPIO 17

  if ($_POST[encender17]) { 
   $a- exec("sudo python /var/www/leds/gpio/17/enciende.py");
   echo $a;
  }

  if ($_POST[apagar17]) { 
   $a- exec("sudo python /var/www/leds/gpio/17/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear17]) { 
   $a- exec("sudo python /var/www/leds/gpio/17/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 17


// Funciones PHP del pin GPIO 27

  if ($_POST[encender27]) { 
   $a- exec("sudo python /var/www/leds/gpio/27/enciende.py");
   echo $a;
  }

  if ($_POST[apagar27]) { 
   $a- exec("sudo python /var/www/leds/gpio/27/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear27]) { 
   $a- exec("sudo python /var/www/leds/gpio/27/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 27


// Funciones PHP del pin GPIO 4

  if ($_POST[encender4]) { 
   $a- exec("sudo python /var/www/leds/gpio/4/enciende.py");
   echo $a;
  }

  if ($_POST[apagar4]) { 
   $a- exec("sudo python /var/www/leds/gpio/4/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear4]) { 
   $a- exec("sudo python /var/www/leds/gpio/4/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 4


// Funciones PHP del pin GPIO 22

  if ($_POST[encender22]) { 
   $a- exec("sudo python /var/www/leds/gpio/22/enciende.py");
   echo $a;
  }

  if ($_POST[apagar22]) { 
   $a- exec("sudo python /var/www/leds/gpio/22/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear22]) { 
   $a- exec("sudo python /var/www/leds/ejecgpio/22/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 22

?>

Aš suskirstyti jį visi tame pačiame puslapyje. tarsi sukurti puslapį PHP Kiekvienas variantas, paleisti jį, aš buvo išsiųstas į scenarijų puslapį (tuščią puslapį); dabar paleisti kodą ir lieka tame pačiame puslapyje..

pagaliau Mes turime gauti šią hierarchiją per žiniatinklio serverio pakatalogyje /var/www.

Ekrano 2014-10-05 00:06:52Jei jums patinka galite follow me on Twitter, "Facebook", Google +, LinkedIn, arba pasidalinti ja su mygtukus pagal šio leidinio, Jei turite klausimų ar pasiūlymų prašome nedvejodami komentaras.

Padėti mums pasiekti daugiau skaitytojų Share on LinkedIn
LinkedIn
Share on Facebook
"Facebook"
Tweet about this on Twitter
Twitter
Share on Google+
Google +
Email this to someone
el. paštas

75 mintys apie"Aviečių PI ir GPIO smeigtukai: Kontroliuoti LED web sąsaja

  1. geras, Po žiūri interneto sprendimai namų automatizavimo, Aš nusprendžiau, kad iš savo sistemą, atrodo gerai veikia.
    Nepaisant to ir dėl savo nulinius patirties minkštas. abejoja, ar man, Linkiu, kad galėtų jas spręsti, Aš jau daro daug bandymų ir nieko, Aš nesuprantu….:)
    atlikti visus veiksmus, kad paaiškinti ir galiu valdyti su gpio iš terminalo su glaistai, bet kadangi interneto negalite įjungti python scenarijus.
    Man reikia padaryti /val/www su html puslapyje (index.html) Taigi tarnauti jį aš apache. Pateikdamas savo svetainę čia jei mygtukus palikti mane, bet nevykdo php skripto. Puslapis index.php, negalima išleisti viduje.
    Atsiprašome už nepatogumus ir ačiū.

      • Ačiū, kad taip greitai reaguoti, Taip aš padariau žingsnis suteikti teises į failą, kad jūs įtraukėte, I 'm painioti su index.php puslapį, galite pakabinti GPiO katalogas, tik pamatyti mygtukus internete, jei aš įdėti ją į /val/www….HTML!…index.html, bet nevykdo PHP skripto. Kad reikia įdėti į index.php, kurie kabo GPIO katalogas?

        • Jei atidžiai, index.php /var/www/leds 🙂 stringa, jei vis dar neveikia, šio straipsnio komentarą ir pažiūrėkite į jį.

          Jei disko skirsnyje www/index.php cuelgas bus matyti šia kryptimi, tačiau ji negali nieko dirbti:

          http://ipdelapi

          Jei pakabinti /var/www/leds/will veikia tinkamai, bet kadangi šis maršrutas:

          http://ipdelapi/leds

          Tikiuosi, kad tai išspręs jūsų abejones ir kad galite perkelti į šį pasaulį, taip įdomu.

          • geras, Turiu ta pačia problema kaip aukščiau kolegos.

            Mano index.php stringa nuo /var/www/html/index.html
            , Jei man mano indeksas html iš ten nebus rodomi, bet aš neturiu jokių problemų, kad ji būtų ten, Mano problema yra kai impulso mygtuką ir paleisti mane kad kelionmaišis.

            PD: Aš jam viską ir leidimai

            Ačiū už atsakymą.
            Sveikinimas

            JOCIENĖ.

  2. geras, jūsų darbas yra tarnauti man daug, Jūs esate mašina!
    Aš mėginu padaryti automatika kontroliuoti kelių šviesos diodai iš interneto, bet turiu problema nėra gali palengvinti.
    Ši tema yra, kad aš aktyvuota turiu GPIO, Aš juos įjungti ir išjungti iš terminalo, Prijungti kitą kompiuterį prijungti prie to paties tinklo, į 192.168.X.X/leds/ ir svetainės atrodo gerai, namų valdymo meniu atrodo puikiai, bet LED negali atsakyti, Bandžiau iš aktyvios ir pasyvios, ką darau negerai…
    Vienintelis dalykas, galiu pasakyti, kad jums rodant puslapio kodą ir tik rodo html kodą, PHP atrodo, negali būti, jei reikia ar ne.
    Manau, kad tai gali būti kažkas PHP, tačiau aš nesu labai įsitikinęs, nes aš bandžiau bandymo PHP ir ji tai daro gerai, Esu beviltiška lol

    • Sveiki, John,

      Man alegro, daug, kad gali būti nauda, mano straipsnių 🙂 visada yra sveiki teigiami komentarai.

      Visus PHP kodas naršyklėje rodomas kaip HTML, Nuo PHP funkcijai yra tuo metu ir dinamiškai kurti internetinius puslapius, kuriuose naršyklėje.

      Tiesiogiai veikia python'o scenarijus, jei LED šviečia? teisingai būtų pradėti bandymai iš čia ir eiti į priekį.

  3. Ačiū už greitai!
    Pagaliau vėl aviečių formatas, Aš po visų veiksmų dar kartą ir viskas veikia puikiai, negali būti, kad gali nepavykti atlikti.
    Bet kokiu atveju Ačiū už dėmesį.
    JT saludo

    • Dėkojame už pasidalinti savo abejones, Aš džiaugiuosi, kad pagaliau sutvarkė.

      Jūs pakeitėte ką savo aviečių, taip pat formato, kaip pvz transformatorius microUSB?

      • taip, Kai aš nusipirkau ją aš įdėti kriauklės mikro greitį, jam ir taip bus dirbti greičiau, Tačiau nei yra labai pastebimą pokytį.
        Tai buvo vienintelis dalykas, kad jums pakeisti į šiurkštumo.

        • Sveiki, John, Man malonu skaityti jūsų vėl čia.

          Iš esmės neturi turėti įtakos Tuning šiuo aspektu, Tačiau ji gali būti bet kokios konfigūracijos; Dabar, kai jūs dirbate su Raspbian valymo grąžina duoti problemų po to, kai gamyba, Dabar, jei, rekomenduočiau surasti problemos šaknis.

          Keisti jūs pastebėsite jį pagal konkrečias užduotis, kurioms reikia daug galios Tuning, Tačiau kai kurie veiksniai, pvz., Ethernet prievadą ir toliau pagal santalkos, kuri naudoja.

          Matote aš Raspberry PI B modelių apžvalga, B + ir B2 šią nuorodą, su pilna našumo testavimas:

          http://www.peatonet.com/raspberry-pi-y-los-pines-gpio-controlando-el-led-desde-una-interfaz-web/

          Tikiuosi, jums bus naudinga, iki pasimatymo 🙂

  4. labas, Turiu mažai klausimą/problemą. Aš norėčiau prisijungti švilpukas vietoj tai paskatino, bet aš noriu pabandyti pirmas su paskatino mokytis. Tai būtina padaryti, index.html ir kitų .php?
    Aš turiu, buvo prijungtas prie to gpio4, ir aš turiu on.py scenarijų ir kitų off.py, viduje aplanką 4. Konsolės darbą puikiai.
    ir aš negaliu įdėti index.html nes ji neleidžia man, bet tik paskatino funkcionalumas 4.

    Tikiuosi, kad jūs galite man padėti, Aš aplankė savo facebook profilį ir tikiuosi kada nors ir Aviečių PI kaip žinote. Sveikinimas ir ačiū.

  5. Web PHP gali būti HTML iš kurios reikia tik į index.php

    Jeigu jūs įtraukėte PHP komandas paleisti savo scenarijus Python HTML failo, neveiks.

    Dabar, kai terminalas veikia, gali tiesiog nukopijuokite šį vadovėlį index.php, pašalinti kitų GPIO ir paliekant tik į 4 tai, ką jūs naudojate; ir ji turi dirbti.

    Jei jūs negalite redaguoti failus į/var/www tikrai bus, iš leidimo, Šiame pavyzdyje yra išeitis, ir ji turi dirbti, Jei tai ne komentaras, ir aš pabandyti duoti jums ranka.

  6. labas, I 'm going to imtis įgyvendinti kitą klausimą čia, Jei jūs ar kas nors gali man imtis kabeliu. Aš šį scenarijų ir norite panaikinti aplanką vieną kartą paleistas data, ir kas mane domina, žinome kaip tai padaryti, kai jis ateina į x dydžio laimikio kiekį, Visi ištrinti arba bus paleistas iš naujo, Rygos technikos universitetas. Ačiū už sveikinimą.

    #! /bin/s
    # /etc/init.d/motionStartup
    #

    # Keletas dalykų, kurie visada paleisti
    #liesti /var/lock/motionStartup
    kaupiklis - s “Scenarijų vadinamas motionStartup”

    # Atlieka specifines funkcijas, kai iš sistemos
    atveju “$1” į
    Pradėti)
    kaupiklis - s “Scenarijus motionStartup pradėjo”
    LAIKO ŽYMA = $(data + %m %H %M %S %d ir % | SED's / / / g ") # Be tarpų
    kaupiklis - s “Scenarijus motionStartup $TIMESTAMP”
    sudo mkdir/motiontmp / $TIMESTAMP || kaupiklis - s “Mkdir pradėti klaida”
    rasti/motiontmp/judesio /. -f tipo - dydis 0 -print0 - ištrinti
    rasti/motiontmp/judesio /. -MaxDepth 1 -f tipo | \
    XARGS - AŠ "{}’ sudo mv {} /motiontmp / $TIMESTAMP
    ;;
    sustoti, sustok)
    kaupiklis - s “Scenarijaus motionStartup, sustojo”
    ;;
    *)
    Aidas “Naudojimas: /etc/init.d/motionStartup {Pradėti|sustoti, sustok}”
    išeiti iš 1
    ;;
    ESAC

    išeiti iš 0

  7. Jei galite pridėti šios eilutės pradžioje savo scenarijų, kiekvieną kartą, kai jums paleisti scenarijų, prieš ką nors jums bus ištrinti visus aplankus viduje/motiontmp /

    sudo rm - rf/motiontmp / *

    Dėl naikinti failus, kai jūs pasieksite tam tikro dydžio, galite pabandyti concatenating komandą df - h rodo katalogo disko naudojimas, arba pertvara:

    DF - h /motiontmp

    Su kita komanda kaip wc ar sed, kad jis tik skaito MB ar GB naudojamos frazės, Pagaliau su jei galima programos dalis kad jei rezultatas yra didesnis kaip N, Vykdykite komandą rm pirmiau.

    • Naikinti puikiai aplankus, bet tada…
      Atsiprašau, bet aš esu šiek tiek nauja ir aš pasimetęs, como sería por ejemplo para cuando alcance el directorio /motiontmp/motion/ 5 Gigas? Muchas gracias un saludo.

  8. Disculpen por tantos mensajes seguidos pero conforme voy averiguando actualizo. Algo así podría funcionar?

    #! /bin/s
    # /etc/init.d/motionStartup
    #

    size= du -sh /motiontmp

    readsize

    Jei [ “$size” > “2048000K” ]; then

    sudo rm - rf/motiontmp / *

    else

    kaupiklis - s “Scenarijų vadinamas motionStartup”

    # Atlieka specifines funkcijas, kai iš sistemos
    atveju “$1” į
    Pradėti)
    kaupiklis - s “Scenarijus motionStartup pradėjo”
    LAIKO ŽYMA = $(data + %m %H %M %S %d ir % | SED's / / / g ") # Be tarpų
    kaupiklis - s “Scenarijus motionStartup $TIMESTAMP”
    sudo mkdir/motiontmp / $TIMESTAMP || kaupiklis - s “Mkdir pradėti klaida”
    rasti/motiontmp/judesio /. -f tipo - dydis 0 -print0 - ištrinti
    rasti/motiontmp/judesio /. -MaxDepth 1 -f tipo | \
    XARGS - AŠ "{}’ sudo mv {} /motiontmp / $TIMESTAMP
    ;;
    sustoti, sustok)
    kaupiklis - s “Scenarijaus motionStartup, sustojo”
    ;;
    *)
    Aidas “Naudojimas: /etc/init.d/motionStartup {Pradėti|sustoti, sustok}”
    išeiti iš 1
    ;;
    ESAC

    išeiti iš 0

    fi

  9. Hola que tal amigo, disculpa segui tu ejemplo y al encender el led no existe algun problema, pero al hacer clic en el boton apagar, el led parpadea, ya cheque los codigos y todo esta correcto :/ tienes alguna idea que podria estar haciendo mal?

    • Hola Fco, Ačiū už jūsų komentarą.

      Internete, hay tres botones:

      Encender, išjunk, y parpadear.

      Si puedes, pega aquí el código que has asignado al botón apagar, Taigi komentaras yra įmanoma, kad mygtuką išjungti veikia scenarijų, kuris turėtų būti susietas su mygtuku mirksi.

      iki pasimatymo.

  10. Sveiki visiems, kitas abejonių daugiau pridėti lol.

    Kol aš įdėti fone, Tai yra įjungti skambučio garsą (švilpukas) Tai būtų linijos, kad įdėti savo pin 1 ir a 0 nuolat, ne kaip į vadovaujamas kad nors 1 Jis vis dar.
    Problema ta, kaip sustabdyti šią kilpą naudoti web php, nes konsolė pridedant scenarijų pokalbio pabaigoje a & Ji veikia fone ir leiskite paskambinti scenarijų, kuris baigiasi ji konsolės, pvz.:

    sudo python'o sonar.py &

    Tai yra du scenarijai, Tai leidžia garso ir užtikrinti, kad jis sustoja skambėjimo:

    importo metu
    importuoti RPi.GPIO kaip gpio

    GPIO.SetWarnings(Klaidingas)
    GPI.setMode(gpio.BOARD)
    gpio.setup(7,gpio.OUT)

    gpio.output(7,1)
    Time.Sleep(1)(.3)
    gpio.output(7,0)
    Time.Sleep(1)(.3)

    y el de apagado:

    importo metu
    importuoti RPi.GPIO kaip gpio

    GPIO.SetWarnings(Klaidingas)
    GPI.setMode(gpio.BOARD)
    gpio.setup(7,gpio.OUT)

    gpio.output(7,0)
    gpio.cleanup()

    aunque simplemente con interrumpir el primero bastaria. Ačiū už sveikinimą.

  11. Puedes concatenar distintos comandos, para que basándose en el nombre de tu script, la terminal busque su PID y mate posteriormente su ejecución con Kill.

    Una vez hallado el comando, cambia la función pensada para cerrar con Ctrl + C, por una que en lugar de ello, al zumbar N veces lo mate automáticamente con dicho comando.

  12. Si con Ctrl + C se cierra en consola, pero yo trato de implementarlo a través de PHP como los leds de tu post, entonces tendrá que ser de otra manera digo yo.

  13. labas.
    Gracias por el tutorial.

    Tengo un problema, no ejecuta los scritp, si los ejecuta desde consola van, pero desde la página no, no sé que puede ser. He hecho lo que comentar de
    escribimos sudo visudo en la terminal y al final del archivo añadimos a www-data como sudoer, debe quedar así.

    Pero nada. ¿Qué más puedo mirar?

    geriausi linkėjimai.

  14. labas, labas rytas,
    Bent nieko, ačiū.

    Tai leidžia klausimą, Viskas puikiai veikia, dabar, Aš norėčiau įtraukti ekranas, kuris rodo Kada LED yra įjungiamas ir išjungiamas, Radau keletą straipsnių, net su vaizdai, parodantys spalva priklausomai nuo to, ar keičiasi lempos veikia ar ne, trate de entender el funcionamiento pero no logre hacerlo funcionar, llego a la web con los comandos pero nada se activa, espero no molestar con esto y otra ves, gracias por tu increíble amabilidad.

    Ignacio iš Belgijos

    • Sveiki Ignacio, Ačiū labai už jūsų komentarą.

      Supongo que para ello estás utilizando Javascript, integrando en él las funciones PHP que activan el script en Python para, gestionar el encendido y apagado de las luminarias.

      No domino JavaScript, ya que no soy desarrollador web pero quizás pueda orientarte un poco mejor, o algún otro lector pueda ayudarte a conseguir lo que tú quieres; pero para ello necesitaría ver el código, o los tutoriales que has seguido para intentar detectar donde está el fallo.

      iki pasimatymo, y ¡mucho ánimo!

  15. Hola ante todo muchas gracias, aprendo un monton.
    He seguido todos los pasos expuestos, logro encender los leds desde el terminal local, cargue el parche php como lo indicó ullu, otorgue los permisos incluso uno 775—-ir tt. Carga la página con los botones despues de leds/gpio pero nada. Estoy usando Raspberry pi 2…..sera algo con esta tarjeta?. Aprecio su colaboración.

    • Hola Rafael, gracias a ti por comentar.

      Es posible que la solución se halle en los comentarios de los tutoriales anteriores de esta serie dedicada a la domotica asequible basada en Raspberry PI.

      Los pasos a seguir son compatibles con cualquiera de las versiones de la PI, se me ocurre que podrías cambiar en la página web la ejecución del script en python por la siguiente orden que creará un archivo en el directorio home de tu Raspberry:

      sudo touch /home/pi/funciona

      Si todo está funcionando bien, debería crearse dicho archivo.

      • Gracias por su rápida respuesta. Hice los cambios, conforme me lo indicó, en index.html retirando la parte de python y colocando a cambio: sudo touch /home/pi/funciona , pero infortunadamente no se crea el archivo en mi raspberry. Me parece una excelente prueba y por el resultado creo que concentra el problema en la zona web. Buscare mas información en otros tutoriales. Gracias por su ayuda. Estamos en contacto.

        • Hola Rafael, a continuación podrías hacer la misma prueba cambiando ligeramente la ruta del archivo para comprobar si el problema recae en los permisos del directorio /var/www.

          sudo touch /var/www/funciona

  16. labas, me podrias decir alguna manera de poner una etiqueta con el estatus de el LED desde la interfaz web PHP
    que cambie automaticamente al darle Clic a dicho boton ya sea encender, išjunk, parpadeartener una etiqueta que te diga el estatus. Gracias por tu aporte espero me puedas ayudar..

    • Hola Chaka, Ačiū labai už jūsų komentarą.

      Creo que podrías hacerlo con PHP y JavaScript si quieres darle algún efecto más visual, o realizar cambios en el botón.

      Si solo quieres añadir una etiqueta de texto según que botón presiones, únicamente tendrías que ampliar las funciones asociadas a cada input; te adjunto una lista de las funciones disponibles en PHP:

      http://php.net/manual/es/indexes.functions.php

    • Hola Jameson,

      No entiendo bien la pregunta, pero para encontrar la IP de algún dispositivo puedes utilizar NMAP.

      También dispones de herramientas con interfaz gráfica como ZenMap basada en NMAP y Fing para dispositivos Android.

    • Hola Jameson,

      Efectivamente la IP que debes escribir en tu navegador es la de Raspberry PI puesto que esta es la que actúa como servidor web, además si tu archivo php no lo nombraste como index.php tendrás que añadir tras la ip el nombre de tu archivo separado por una “/”.

      En mi caso la IP es del rango 10.42.0.0 ya que es una IP del tipo NAT proporcionada por una interfaz virtual de red.

    • Hola Sergio,

      Supongo que te refieres a los scripts en Python, otros usuarios tuvieron el mismo problema y hay varias soluciones en los comentarios anteriores; si tras probarlas persiste el fallo si aportas más datos quizás otros lectores o yo podríamos ayudarte.

      iki pasimatymo.

    • Hola Roberto, bienvenido.

      No soy experto en php, y en esos momentos busqué un tutorial para ejecutar ordenes en el interprete bash desde php y así lo encontré.

      ¿Sería mas apropiado utilizar a= exec en lugar de a- Exec?

      Muchas gracias por tu comentario, iki pasimatymo.

  17. Si no os funciona la web pero si los scripts, pronto haré un artículo para que podáis solucionarlo; gracias a los datos que he recopilado de los distintos usuarios a los que no les ha funcionado.

    Si os corre prisa solucionarlo, Jūs galite patikrinti, jei var katalogas yra jūsų aviečių, ir jeigu taip, jūs turite perkelti visus failus į tą kelią ir pakeisti scenarijų “/var/www” iš “/var/www/html” nuo šiol
    Tai yra numatytoji žiniatinklio serverio maršrutą.

    Taip pat galima neištrynėte indeksas pagal nutylėjimą, “index.html” ar trūksta jums pakeisti jį “index.php”.

    Tikiuosi bus naudinga, iki pasimatymo.

  18. Sveiki Antonio,
    I was wondering, jei žiniatinklio serveryje gali būti montuojamas tinka namų automatizavimo sistemą ir pabandykite twitter api įjungti šviesas ir t.t.… (Aš mačiau, kad tai taip pat gali būti padaryta iš python su keletą bibliotekų ir lengvai sekti pamokos… Tačiau galite padaryti, kaip aš pasakyti, ir su php? t. y., que la raspberry tenga el servidor web con twitter y los puertos gpio enciendan los leds
    Gracias de antemano.

    • Nano Sveiki,

      Desde la web en php puedes ejecutar cualquier orden en el interprete de órdenes BASH, lo que incluye scripts en Python.

      Puedes utilizar la librería o API de Twitter para que cuando envíes cierto tweet citando el nombre de usuario de la cuenta del bot, apague o encienda la luz o electrodomestico asociada a ese mensaje en concreto.

      Veo un problema, y es que cualquiera podría encenderte y apagarte las luces y los electrodomésticos de casa; a no ser que se pueda restringir dependiendo del usuario que envía el tweet.

      Sería interesante si vas comentando lo que encuentres al respecto.

      Ačiū už komentarus, iki pasimatymo.

  19. laba diena,
    He seguido el tutorial, copie el codigo de la web, lo guarde como .php, en la carpeta que me crea el servidor /var/www/html , porque si pongo el index.php fuera de la carpeta html no me encuentra el archivo, pero bueno, parece que todo esta bien. Solo estoy probando con el GPIO 17, entonces he creado dos .py, uno para encender y otro para apagar, los he ubicado en la misma carpeta del archivo index.php. Abro el navegador, entro en el index, pero no me prende el led. Si accedo por ssh al archivo enciende y lo ejecuto por consola si que funciona. no se donde puedo estar fallando. Por supuesto cambie la ruta de acceso a los scripts desde el php, ya que es diferente a tu tutoria.
    Espero puedas echarme una mano, estoy pillado.
    JT saludo.

    labai ačiū.

  20. Hola peatonet, estoy intentando hacer un invento para activar un modulo de 4 relés desde la web para encender o apagar las luces de un local que tengo, el problema es que en la prueba, el led puesto con redistencia se enciende y apaga a voluntad desde la web, pero cuando conecto el pin40 (que es el que tengo configurado) quitando la resistencia y el led, se apaga la luz roja del módulo de relés y ni enciende ni apaga la bombilla que tengo para probar.

    Por favor ayudadme porque ya no se si es que esta mal el módulo de relés (maldito aliexchinapress) aunque en ninguno de los 2 módulos que tengo funciona o si es que la raspberrypi no manda bastante tensión al relé (como VCC le tengo puesto al pin3)

    Perdón por la parrafada y gracias de antemano

    Un saludo amigos

    • labas, me autorespondo yo amigos, el problema lo tenía en que en el pin20 (mano atveju) le tenía que poner una resistencia, yo la he puesto de 330 unida a tierra.
      Supongo que será porque cuando pase de led a relé elimine la resistencia

      Gracias por todo ?

      • Hola Jesús, muchas gracias a ti por compartir la solución con nosotros.

        Disculpa si no pude contestar antes pero me pillaste con fiebre, en la última semana de clases preparando exámenes, y hasta arriba de trabajo (los Freelance no tenemos permiso para ponernos enfermos).

        Respecto al pin al que tienes conectado el VCC, en mi caso lo conecto al pin 2 o al 4 en su defecto ya que requiere 5V de alimentación.

        Si quieres puedes dar más detalles de tu prueba de concepto, estás utilizando leds en lugar de tomas de 220V AC entonces?

        Gracias por tu comentario.

  21. labas, estoy haciendo un proyecto para la facultad y quisiera saber si existe la forma que desde una aplicacion android se pueda emular este sistema, t. y., como manejar los pines de la raspberry de esta forma me parece 100 veces mas facil que en una aplicacion de android, quisiera saber si creando una aplicacion podria de alguna forma automatica direccionarme a este tipo de sistema para no tener que aprender de la nada a programar semejante cosa en android. Lamentablemente estoy obligado a entregar el proyecto como aplicacion de celular, no de forma web.
    Espero tu respuesta

    • Sveiki Ignacio, Ačiū už komentarus.

      Este tutorial está desarrollado sobre una Raspberry PI 3 por lo que debería funcionar sin complicaciones.

      Si aún así no logras hacerlo funcionar, puedes compartir los errores o problemas que has encontrado.

  22. Hola colegas, necesito de vuestra ayuda pues estoy inmerso en un proyecto entre 3 especialidades, eléctrica, electrónica e informática, yo domino la parte de electricidad pero no soy especialista en las dos restantes. Les explico, necesito conectar un analizador de red M2DL2 a una Raspberry pi con el objetivo de registrar datos de consumo de corriente y poder trasmitirlos a la raspberry y que esta a su vez lo registre y visualice en una tabla de datos. Sé que la señal que saca el analizador es RS485 y la que debe entrar a la raspberry es RS232 por lo que necesito un convertidor de una señal a otra, lo que no sé es como hacer la interconexion entre el analizador, el convertidor y la raspberry. Sabéis algo de esto o me podéis orientar donde buscar información al respecto?
    geriausi linkėjimai.
    Ramon.

  23. Hola como andas?
    Si quisiera consultar el estado de un gpio, a traves de php, para que me diga si esta ON / OFF ya que me encuentro remoto. Como deberia hacer?

    Quizá existe alguna manera de que la rasp devuelva el valor que esta el gpio.

    Sino lo hare en una db ingresando 1 o 0 al presionar los botones, pero eso lo veo medio rustico

    • Hola Juani, Ačiū už komentarus.

      El subsistema GPIO es al fin y al cabo parte del sistema de archivos /sys de GNU/Linux, y realmente se gestiona editando los valores de los archivos asignados a cada puerto GPIO.

      Puedes consultar si un GPIO está activo o inactivo leyendo el archivo que contiene su valor, un ejemplo en PHP para el GPIO 18:

      $estado_gpio18 = file_get_contents(“/sys/class/gpio/gpio18/value”);

      Si el valor es “1” el GPIO está activo, por el contrario si el valor es “0” está inactivo.

      iki pasimatymo.

  24. labas, lo primero agradecerte la molestia de compartir tus conocimientos con los que tenemos inquietudes similares.

    Quisiera hacerte una consulta (espero que no sea muy tonta), ya hace meses que llevo dándole vueltas al tema de la creación de interfaces web para la raspi. Tu comentas el tema de darle permisos a www-data, pero eso, estaría bien como comentas para accesos desde entornos locales o para pruebas. ¿Que soluciones aconsejarías para entornos más seguros?

    Un saludo y gracias nuevamente

    • Hola Gon, gracias a tí por tu comentario; únicamente intento documentar como voy aprendiendo día a día sobre este fascinante mundo, de forma online para que así podamos aprender todos juntos.

      Quiero recordar a todos los lectores que a pesar de ser funcional este panel no es en absoluto perfecto, es un ejemplo realmente básico de lo que puede hacerse y cuanto más aprendo más cuenta me doy de lo mucho que se podría mejorar; este año estoy tratando de mejorar mis habilidades como programador ya que siempre me dediqué más a los sistemas y a la seguridad, y no tenía apenas nociones sobre estructuras de código, metodologías de diseño ni algoritmos; espero en breves sacar tiempo para mejorar el panel web y compartir una siguiente versión de la cual ya no me averguence tanto.

      En principio desde la versión 3 de la web es suficiente con añadir el usuario www-data al grupo GPIO para gestionar el estado de los pins evitando darle permisos de sudoer; esto puede hacerse mediante la siguiente orden:

      sudo usermod -a -G gpio www-data

      De todos modos creo que tu pregunta va más enfocada a restringir el acceso a dicho panel mediante autenticación, y esto puede hacerse con el modulo mod_auth para Apache2; también es recomendable utilizar mod_ssl aunque sea con un certificado autofirmado.

      Si vas a acceder desde el exterior siempre puedes añadir una capa más de seguridad configurando una VPN, a la cual puedes proteger el acceso con certificados x509, usuario y contraseña, y sistemas de prevención como fail2ban entre otros.

      Espero haber aclarado un poco tus dudas, muchas gracias por tu interés acerca del artículo.

      • Sveiki Antonio! En primer lugar muchísimas Gracias por responder y tan rápido.

        A mi me pasa un poco al revés, soy desarrollador web intentando empaparme del mundo de los sistemas y la seguridad. Es un placer que haya personas como tu que inviertan su tiempo documentando sus proyectos para que otros podamos aprender un poquito más cada día.

        Decirte que me has ayudado mucho. Tengo un proyectito conectado a la raspi, y llevo meses dándole vueltas a lo del interfaz y sin decidirme mucho que hacer ( que si php, que si cylon.js, servicios ya creados tipo mydevice y similares…) y siempre me topé con las mismas dudas: permisos, Saugumo, …ir tt. Tu artículo (créeme que leído muchos) es de los pocos que van un poco más allá de como pinchar cables en las GPIO, de ahí el preguntarte.

        Gracias nuevamente, has aclarado muchas dudas.

        Iré probando e implementando según tenga tiempo libre, y si te interesa te comento resultados.

        JT saludo

  25. Hola Que aplicaciones se pueden utilizar en los automóviles
    Se podría que funcionara milrrolling
    Alguien a echó algún proyecto sobre este tema
    Saudos

  26. estimado y si deseo hacerlo con input type radio y sin el boton submit, este podria ser llamado desde un js ? ajax? me gustaria puedas asesorarme gracias

  27. geras,
    He estado intentando realizar lo que propones y no lo he conseguido. He seguido todos los pasos y nada. El problema es el archivo php. He creado un archivo de texto en el que he copiado todo lo que has puesto arriba, sin modificar nada, tal cuál, y lo he guardado como php. Lo he ubicado dentro de la carpeta leds y no hay manera de que se ejecute. No sé cuál es el problema.
    Gracias y un saludo

  28. Hola Amigo, para mi proyecto me pidieron madar al prender el led de la misma forma pero publicnado desde tweter,tendras algun tuto para eso?? yo tenfo un codigo pero no lo puedo hacer jalar te lo podria compartir para que lo cheques??

palik atsakymą