Raspberry PI – Uitvoering van een betaalbaar domoticasysteem [Deel III]

Na enkele maanden, heb ik besloten terug te keren naar Dit project met die ik wil maken een gratis domoticasysteem, en economisch betaalbare; Dit lage verbruik microcomputer gebaseerde, maar multiplatform en draagbare naar elk apparaat met OS GNU/Linux beschikbaar vanaf poort GPIO.In vorige berichten We geleerd om de controle van de modules van Relais optoacoplados met Framboos PI door bash, PHP, en Python; bij deze gelegenheid Ik heb het automatiseringssysteem geoptimaliseerd, en overigens ik heb gemigreerd te Raspberry PI 3 voor de verwijdering van draadloze connectiviteit, Maar als u wenst kunt u eventuele vorige model.

De hardware Het bestaat uit twee modules van acht Relais elke, dat maakt een totaal van Zestien outs om te controleren toestellen, Elektrische aansluitingen, verlichting; en een zonder einde van apparaten dat deze worden geconverteerd naar dit kleine Raspberry PI 3, in alles wat die u nodig hebt voor domotic huis u office conventionele.

Gebouw automatisering regeling

Circuit breaker schakelaar diagram domotic DIY.

Het bedieningspaneel is geprogrammeerd in PHP, en is een optimalisatie van het Wetboek van de vorige versie maar die bestemd zijn voor het beheer van de GPIO direct door bash die sterk versnelt het proces; een must, Aangezien we dit via de pagina zal dienen WiFi.

FremooticsPI

Het automatisering systeem web control panel.

Het feit van zonder extra bestanden voor het beheer van de poort-uitgangen GPIO van Framboos door Python; Zet deze eenvoudige webpagina, een enkel bestand, in de ware uitgangspunt van die ooit is geworden in een volledige domoticasysteem dat ik zal ontwikkelen samen.

<html>
<head>
<title>Panel de control - Sistema domotico libre</title>
</head>

<body>
<div align="center">
<br></br>

 <!--GPIO4/IN1-->
 <form action="" method="post">
 Interruptor 01 &nbsp;<input type="submit" name="encender4" value="Encender">
 <input type="submit" name="apagar4" value="Apagar">

 <!--GPIO17/IN2-->
 <form action="" method="post">
 &nbsp; Interruptor 02 &nbsp;<input type="submit" name="encender17" value="Encender">
 <input type="submit" name="apagar17" value="Apagar">

<br></br>

 <!--GPIO27/IN3-->
 <form action="" method="post">
 Interruptor 03 &nbsp;<input type="submit" name="encender27" value="Encender">
 <input type="submit" name="apagar27" value="Apagar">

 <!--GPIO22/IN4-->
 <form action="" method="post">
 &nbsp; Interruptor 04 &nbsp;<input type="submit" name="encender22" value="Encender">
 <input type="submit" name="apagar22" value="Apagar">

<br></br>

 <!--GPIO18/IN5-->
 <form action="" method="post">
 Interruptor 05 &nbsp;<input type="submit" name="encender18" value="Encender">
 <input type="submit" name="apagar18" value="Apagar">

 <!--GPIO23/IN6-->
 <form action="" method="post">
 &nbsp; Interruptor 06 &nbsp;<input type="submit" name="encender23" value="Encender">
 <input type="submit" name="apagar23" value="Apagar">

<br></br>

 <!--GPIO24/IN7-->
 <form action="" method="post">
 Interruptor 07 &nbsp;<input type="submit" name="encender24" value="Encender">
 <input type="submit" name="apagar24" value="Apagar">

 <!--GPIO25/IN8-->
 <form action="" method="post">
 &nbsp; Interruptor 08 &nbsp;<input type="submit" name="encender25" value="Encender">
 <input type="submit" name="apagar25" value="Apagar">

<br></br>

 <!--GPIO5/IN1-->
 <form action="" method="post">
 Interruptor 09 &nbsp;<input type="submit" name="encender5" value="Encender">
 <input type="submit" name="apagar5" value="Apagar">

 <!--GPIO6/IN2-->
 <form action="" method="post">
 &nbsp; Interruptor 10 &nbsp;<input type="submit" name="encender6" value="Encender">
 <input type="submit" name="apagar6" value="Apagar">

<br></br>

 <!--GPIO13/IN3-->
 <form action="" method="post">
 Interruptor 11&nbsp;<input type="submit" name="encender13" value="Encender">
 <input type="submit" name="apagar13" value="Apagar">

 <!--GPIO12/IN4-->
 <form action="" method="post">
 &nbsp; Interruptor 12 &nbsp;<input type="submit" name="encender12" value="Encender">
 <input type="submit" name="apagar12" value="Apagar">

<br></br>

 <!--GPIO19/IN5-->
 <form action="" method="post">
 Interruptor 13 &nbsp;<input type="submit" name="encender19" value="Encender">
 <input type="submit" name="apagar19" value="Apagar">

 <!--GPIO16/IN6-->
 <form action="" method="post">
 &nbsp; Interruptor 14 &nbsp;<input type="submit" name="encender16" value="Encender">
 <input type="submit" name="apagar16" value="Apagar">

<br></br>

 <!--GPIO20/IN7-->
 <form action="" method="post">
 Interruptor 15 &nbsp;<input type="submit" name="encender20" value="Encender">
 <input type="submit" name="apagar20" value="Apagar">

 <!--GPIO21/IN8-->
 <form action="" method="post">
 &nbsp; Interruptor 16 &nbsp;<input type="submit" name="encender21" value="Encender">
 <input type="submit" name="apagar21" value="Apagar">

</div>
</body>
</html>

<?php

// Funciones PHP del pin GPIO 4

 if ($_POST[encender4]) {
 $a- exec("echo 4 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio4/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio4/value");
 echo $a;
 }

 if ($_POST[apagar4]) {
 $a- exec("echo 0 > /sys/class/gpio/gpio4/value");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 17

 if ($_POST[encender17]) {
 $a- exec("echo 17 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio17/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio17/value");
 echo $a;
 }

 if ($_POST[apagar17]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio17/value");
 $a- exec("echo 17 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 27

 if ($_POST[encender27]) {
 $a- exec("echo 27 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio27/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio27/value");
 echo $a;
 }

 if ($_POST[apagar27]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio27/value");
 $a- exec("echo 27 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 22

 if ($_POST[encender22]) {
 $a- exec("echo 22 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio22/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio22/value");
 echo $a;
 }

 if ($_POST[apagar22]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio22/value");
 $a- exec("echo 22 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 18

 if ($_POST[encender18]) {
 $a- exec("echo 18 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio18/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio18/value");
 echo $a;
 }

 if ($_POST[apagar18]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio18/value");
 $a- exec("echo 18 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 23

 if ($_POST[encender23]) {
 $a- exec("echo 23 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio23/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio23/value");
 echo $a;
 }

 if ($_POST[apagar23]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio23/value");
 $a- exec("echo 23 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 24

 if ($_POST[encender24]) {
 $a- exec("echo 24 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio24/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio24/value");
 echo $a;
 }

 if ($_POST[apagar24]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio24/value");
 $a- exec("echo 24 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 25

 if ($_POST[encender25]) {
 $a- exec("echo 25 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio25/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio25/value");
 echo $a;
 }

 if ($_POST[apagar25]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio25/value");
 $a- exec("echo 25 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 5

 if ($_POST[encender5]) {
 $a- exec("echo 5 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio5/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio5/value");
 echo $a;
 }

 if ($_POST[apagar5]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio5/value");
 $a- exec("echo 5 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 6

 if ($_POST[encender6]) {
 $a- exec("echo 6 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio6/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio6/value");
 echo $a;
 }

 if ($_POST[apagar6]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio6/value");
 $a- exec("echo 6 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 13

 if ($_POST[encender13]) {
 $a- exec("echo 13 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio13/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio13/value");
 echo $a;
 }

 if ($_POST[apagar13]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio13/value");
 $a- exec("echo 13 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 12

 if ($_POST[encender12]) {
 $a- exec("echo 12 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio12/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio12/value");
 echo $a;
 }

 if ($_POST[apagar12]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio12/value");
 $a- exec("echo 12 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 19

 if ($_POST[encender19]) {
 $a- exec("echo 19 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio19/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio19/value");
 echo $a;
 }

 if ($_POST[apagar19]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio19/value");
 $a- exec("echo 19 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 16

 if ($_POST[encender16]) {
 $a- exec("echo 16 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio16/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio16/value");
 echo $a;
 }

 if ($_POST[apagar16]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio16/value");
 $a- exec("echo 16 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 20

 if ($_POST[encender20]) {
 $a- exec("echo 20 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio20/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio20/value");
 echo $a;
 }

 if ($_POST[apagar20]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio20/value");
 $a- exec("echo 20 > /sys/class/gpio/unexport");
 echo $a;
 }

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

// Funciones PHP del pin GPIO 21

 if ($_POST[encender21]) {
 $a- exec("echo 21 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio21/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio21/value");
 echo $a;
 }

 if ($_POST[apagar21]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio21/value");
 $a- exec("echo 21 > /sys/class/gpio/unexport");
 echo $a;
 }

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

?>

Om uit te voeren de verbindingen tussen de framboos en estafette, U moet Ga naar de voet van de brief de volgende tabellen op basis van het schema GPIO BCM; want anders moet u de regels in het bestand wijzigen PHP, en te vervangen in de code het aantal PIN werknemers.

Raspberry PI model B + / 2/3 Relais module 1
+ 5V + 5V
GPIO 4
IN 1
GPIO 17
IN 2
GPIO 27 IN 3
GPIO 22
IN 4
GPIO 18 IN 15
GPIO 23
IN1 6
GPIO 24
IN1 7
GPIO 25
IN1 8
GND GND
Raspberry PI model B + / 2/3 Relais module 2
+ 5V + 5V
GPIO 5
IN 1
GPIO 6
IN 2
GPIO 13
IN 3
GPIO 12
IN 4
GPIO 19
IN1 5
GPIO 16
IN1 6
GPIO 20
IN1 7
GPIO 21
IN1 8
GND GND

Zodra alle verbonden de pinnen van Framboos aan de respectieve VCC, GND, e ingangen van de Estafette; alleen blijft Kopieer het PHP-bestand aan de Framboos PI, Wat gebruik SCP dat zal ons toelaten om doen op afstand.

usuario@maquina:~ $ scp index.php pi@192.168.1.*:/home/pi/
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo mv /home/pi/index.php /var/www/html/

Ook op afstand We zullen het bestand verplaatsen naar de map van de webserver, en we zullen toewijzen als door eigenaren SSH aan de gebruiker en groep www-data; zal toevoegen aan de Groep gpio, en vervolgens We opnieuw opstarten om de wijzigingen toe te passen.

usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo chown www-data:www-data /var/www/html/index.php
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo usermod -a -G gpio www-data
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo reboot

Eindelijk Wij voeden met 230V estafette zoals we zagen in de vorige artikelen maken van een brug tussen de ingang en de andere positief-Polen, Gebruik een honkslag Plug, of schakel over miniatuur circuit breaker; Maar als we willen om verbinding te maken Zestien apparaten hoog verbruik is Aanbevolen gebruik van twee, of meer stekkers.

relespuenteados

Regeling van de brug tussen de positieve Polen van de relay-module.

De resterende draden, die overeenkomen met de negatieve pool en tot de neemt van Aarde, We zullen hen verbinden rechtstreeks naar het apparaat wilt bedienen via de Relais module, in mijn geval een Stekker domotic DIY; We mogen ook niet vergeten dat voor veiligheid moet onze estafette 1A afsluiten, dus voor 16 uitgangen moet een estafette van 16Aan.

Relay diagram plug

Diagram sluit domotic DIY.

In de volgende video Kunt u de prestaties van dit Zestien uitgangen systeem door het controleren van hen, door middel van een demonstratie met een energiezuinige lamp; Als je vergeet niet Volg mij op YouTube niet missen een van de niet-gepubliceerde video 's I 'm gonna publiceren.

Als je net als u me kunt volgen op Twitter, Facebook, Google +, LinkedIn, Feedly, of het te delen met de knoppen onder deze publicatie, Als u vragen hebt of suggesties gelieve te niet aarzelen om commentaar te.

Help ons te bereiken meer lezers Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

15 gedachten over"Raspberry PI – Uitvoering van een betaalbaar domoticasysteem [Deel III]

  1. Peatonet een vraag, Ik heb de code zoals is gekopieerd en alles werkt goed, behalve dat ga achteruit-knoppen, afsluiten inschakelen naar beneden en vice versa.

    Bedankt voor alles van een briljante blog.

    • Hallo XuFLeS, Bedankt voor uw reactie.

      Waarschijnlijk heeft te maken met de estafette op lichtnet verbindingen; Het zou zinvol zijn om te controleren of u hebt aangesloten het in normaal open (NIET) in plaats van normaal gesloten (NC).

      Tot gauw.

      • Ik ben het testen voordat u de contactpersonen 230 V en de rode led van het Relais is uitgeschakeld op wanneer uitschakelen van pulse. Ik heb enigszins bewerkt de code om te keren en er goed uitzien, maar twijfelen aan de waarheid waren ontstaan me. Dank u voor uw antwoord.

  2. Goede bijdrage. Ik moet iets dergelijks voor controle van de irrigatie, maar op één voorwaarde: Als een van de n uitgangen zijn in 1 GPIOx zullen in 1. GPIO bot = 0 als alleen als alle uitgangen = 0. Enig idee?? Waar de uitgangen zijn magneetafsluiters en GPIOx pomp. Van al dank u.

    • Hola Edu,

      Dependiendo del numero final de salidas, usarás una o varias raspberry PI; con una sería sencillo, con varias deberías valorar cual es la forma mas óptima de consultar la información entre dispositivos.

      Bedankt voor commentaar.

  3. Hallo, estoy interesado en esto ya que me gustaria controlar unas luces exteriores desde el movil.
    Seria la primera vez que intentase algo con la raspberry.
    Pero me surge una duda al llamarse este postparte tres”.
    Con solo ese codigo PHP ya no haria falta usar nada de la parte uno y dos?
    Entiendo que ese codigo seria index.php, donde iria colocado?
    Heel hartelijk bedankt!

    • Hallo Paul,

      Únicamente con este código PHP puedes implementar la versión más ‘actual’ Systeem.

      En los anteriores tutoriales y los comentarios de los mismos explico donde va el archivo (index.php), como darle los permisos adecuados, enz…

      Gracias por el comentario.

      • Muchas gracias por tu pronta respuesta.
        Ya he conectado todo con una sola placa de ocho relés.
        Pero me está pasando una cosa rara a la que no encuentro una solución.
        Dándole a los botones de la web, se me activan los GPIO perfectamente, dando su correspondiente voltaje y manteniéndolo asta que lo apago, pero en cambio el relé hace su “Klik op” de funcionamiento pero no conmuta. El sonido es como si el relé se activase y se desactivase, es tan rápido que el polímetro no detecta ningún cambio.
        ¿A que podría ser debido?
        Dank u.

        Salu2!

        • Ya encontré el fallo.
          En el código PHP, en el comando de apagar, le quite el código $a- exec(“ECHO 18 > /sys/class/gpio/unexport”); , como lo tienes en el primer interruptor y ahora ya me funciona.
          Ahora lo que hace, la primera vez que enciendes la raspberry; se encienden los ocho leds a media intensidad, tienes que encender y apagalos una vez y después ya enciende el led bien y ya funciona correcto.

          Salu2!

          • Siento ser tan pesado con tantos comentarios pero este es el primer proyecto que hago con mi raspery y es una pasada y muy muy simple! Es una pasada este tutorial.
            Y el mundo que se abre con este equipo es inmeso!
            Op het web, sin salirse del php, se podria ver que interruptor esta activo?
            Los interuptores, podrian llegar a manejarse con programacion horaria y temporizacion?
            De verdad,me habeis abierto un mundo nuevo, muy entretenido y economico.

            Salu2 y gracias!

          • Hola Pablo GC.

            Creo que en algún comentario expliqué como ver que interruptor está activo leyendo mediante PHP el estado de los GPIO.

            Para el control mediante programación horaria lo más sencillo es usar el demonio del sistema CRON para que ejecute lo que desees, a las horas que le marques.

            Hartelijk dank voor commentaar.

          • ya avancé bastante en el proyecto, para leer el estado de los gpio basta con usar
            exec ( “gpio read 29”, $status21 );
            Als ($status21[0] == 0) {
            }
            y meter entre los corchetes lo que quieres que se muestre si está encendido o estatus == a 1 para apagado.

            La numeración del gpio read no concuerda con la numeración del puerto gpio, si queréis os pongo aquí la tabla que hice de equivalencias de cada puerto con su numeración de read.

            Lo único que sigo sin entender, es porque 1 es apagado y 0 es encendido.
            y por que al encender la raspberry, todas las salidas salen sin estado, dejando las salidas a medio voltage y sin funcionar asta que las apagas dos veces.

            Cree una pagina reset, que lo que hace es darle la orden de apagar a todas las salidas, een “slaap” y otra vez vuelve a dar la orden de apagarlas todas, después de este proceso ya quedan todas funcionales.

            Por que puede ser que pasen estas dos cosas?

            Salu2!

          • Hallo Paul, disculpa la demora pero últimamente ando muy escaso de tiempo entre el trabajo y los estudios.

            En primer lugar quiero agradecerte que hayas compartido tus avances con los demás lectores del blog, en cuanto tenga tiempo libre tengo pendiente continuar esta sección de tutoriales sobre domótica fácil y asequible, pero es realmente un orgullo para mi ver como seguís vosotros mismos adelante con el proyecto y lo vais convirtiendo cada uno en vuestro propio sistema personalizado.

            Respecto a encender los relés asignando un valor lógico bajo (0), y apagarlos con un valor lógico alto (1) es posible que se deba a que tengas conectado el relé al circuito de 230V como normalmente abierto en lugar de normalmente cerrado, como le comenté al lector XuFLes en el primer comentario de este artículo; si lo pruebas y el problema persiste, no dudes en comentar e intentaremos pensar en alguna otra posibilidad.

            Para no tener que hacer el reset de las salidas después de cada encendido de Raspbian, puedes crear un simple script que exporte y configure los pins que desees al iniciar el sistema, y lanzarlo por ejemplo desde rc.local.

          • Hallo!
            No pasa nada en que tardes en contestar!
            Es lógico que te lleve tiempo y sobre todo en estas fechas.
            Lo de encendido y apagado, que funcione al revés, los relés los tengo bien conectados.

            Y lo del rc.local, para no tener que entrar a la pagina de reset, como lo haría.

            Salu2!

  4. Buenas peatones, llevo tiempo leyendo las 3 partes de tutoriales sobre domotica, pero en la parte programación vais muy rápido para mi, el tema me parece super interesante pero creo que nos falta un detalle para poder realizar un sistema domotico completo y es poder recibir input del exterior, ( pulsadores, sensores lumínicos, enz). Me gustaría colaborar y creo que en la parte eléctrica os puedo ayudar y a cambio os pido ayuda para comprender toda la parte programación. Mi correo es tecnico.antono.raya@gmail.com

    Un saludo y felicidades por la web

Laat een antwoord achter