Raspberry PI – Implementazione di un sistema di domotica a prezzi accessibili [Parte III]

Dopo diversi mesi, ho deciso di tornare alla Questo progetto con che ho intenzione di creare un sistema di automazione domestica gratis, e economicamente conveniente; Questo basso consumo basati su microcomputer, ma multi-piattaforma e portatile a qualsiasi dispositivo con sistema operativo GNU/Linux disponibile da porta GPIO.In post precedenti Abbiamo imparato a controllare i moduli di relè di optoacoplados con Lampone PI da bash, PHP, e Python; in questa occasione Ho ottimizzato il sistema di automazione, e per inciso ho migrato a Raspberry PI 3 per smaltire connettività wireless, Ma se lo si desidera è possibile utilizzare qualsiasi modello precedente.

Il hardware Si compone di due moduli di otto relè ogni, che costituiscono un totale di Sedici uscite al controllo elettrodomestici, Paranchi elettrici, illuminazione; e un senza fine di dispositivi che essere convertita a questo piccolo Raspberry PI 3, in tutto ciò che serve per casa domotica Ufficio di u convenzionale.

Sistema di automazione di edificio

Interruttore automatico interruttore diagramma domotica fai da te.

Pannello di controllo è programmato in PHP, ed è un'ottimizzazione del codice di la versione precedente ma destinato a gestire il GPIO direttamente attraverso bash che accelera notevolmente il processo; un must, Poiché questo serviamo tramite la pagina Wi-Fi.

FremooticsPI

Pannello di controllo web sistema di automazione.

Il fatto di senza file aggiuntivi per gestire gli output porta GPIO di Lampone da Python; Converte questo semplice pagina Web, un singolo file, nel vero punto di partenza di cui è diventato un giorno in un sistema domotico completo che sarà lo sviluppo insieme.

<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

?>

Per eseguire le connessioni tra lampone e relè, È necessario Vai al piede della lettera nelle tabelle basato sullo schema GPIO BCM; perché in caso contrario sarà necessario modificare le righe nel file. PHP, e sostituire il codice i numeri di PIN dipendenti.

Modello di lampone PI B + / 2/3 Modulo relè 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
Modello di lampone PI B + / 2/3 Modulo relè 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

Una volta collegati tutti i perni di Lampone ai rispettivi VCC, GND, e ingressi della Relè di; rimane solo Copiare il file PHP. per la Lampone PI, a cosa serve SCP che ci permetterà di farlo in modalità remota.

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/

Anche in modalità remota Ci si sposta il file nella directory del server web, e ti assegneremo come dai proprietari SSH per la utente e gruppo www-data; Aggiungerò per la Gruppo gpio, E poi Abbiamo riavviare per applicare le modifiche.

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

Finalmente Ci nutriamo con relè 230V come abbiamo visto nella articoli precedenti facendo un ponte tra l'ingresso e l'altri poli positivi, di utilizzare un unico Spina, o interruttore interruttori miniaturizzati; Ma se vogliamo collegare Sedici dispositivi alto consumo è raccomandato l'uso di due, o più spine.

relespuenteados

Schema del ponte tra i poli positivi del modulo relè.

I fili rimanenti, che corrispondono alla polo negativo e alla prende di Terra, Li collegheremo direttamente al dispositivo desidera controllare attraverso il Modulo relè, nel mio caso un Spina domotica fai da te; Dovremmo anche tenere a mente che per sicurezza il nostro relè dovrebbe avere 1A uscita, così, per 16 uscite avrà bisogno di un relè di 16A.

Relè diagramma spina

Diagramma spina domotica fai da te.

In quanto segue video Si può vedere la performance di questo Sedici uscite sistema archiviandole, attraverso una dimostrazione con una lampada a basso consumo energetico; Se ti piace non dimenticate Seguimi su YouTube per non perdere il video inediti Ho intenzione di pubblicare.

Se si desidera è possibile seguire su Twitter, Facebook, Google +, LinkedIn, Feedly, o condividerlo con i pulsanti sotto questa pubblicazione, Se avete domande o suggerimenti, non esitate a commentare.

Aiutaci a raggiungere più lettori Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

15 Thoughts on"Raspberry PI – Implementazione di un sistema di domotica a prezzi accessibili [Parte III]

  1. Peatonet un dubbio, Ho copiato il codice tale che e funziona correttamente, tranne che i pulsanti indietro Vai, attivare la chiusura verso il basso e viceversa.

    Molte grazie per tutti un blog grande.

    • Ciao XuFLeS, Grazie per il tuo commento.

      Sicuramente hanno che vedere con le connessioni del relè per l'alimentazione di rete; dovrebbe essere per verificare se si è connesso normalmente aperto (NON) invece di normalmente chiuso (NC).

      A presto.

      • Sto testando prima di collegare i contatti per 230 V e il led rosso del relè viene attivato quando a sua volta fuori di impulso. Ho modificato leggermente il codice per invertire tale tendenza e guardare bene, ma dubito che la verità era emerso me. Grazie x la risposta.

  2. Buon contributo. Ho bisogno di qualcosa di simile per il controllo dell'irrigazione, ma a una condizione: Se delle n uscite sono 1 poi GPIOx sarà in 1. Osso GPIO = 0 se solo se tutte le uscite = 0. [object Window]?? Dove output sono valvole a solenoide e GPIOx pompa. Da già vi ringrazio.

    • Ciao Edu,

      A seconda del numero di uscite finale, utilizzare uno o più lampone PI; uno sarebbe semplice, con parecchi dovrebbe valutare quale è il modo più ottimale informazioni tra dispositivi.

      Grazie per il commento.

  3. Ciao, Sono interessato a questo perché mi piacerebbe controllare alcune luci stranieri dal cellulare.
    Sarebbe la prima volta si è tentato qualcosa con il lampone.
    Ma il dubbio mi sorge quando si chiama questo post “terza parte”.
    Codice PHP con solo che, come non manca nulla utilizzerebbe da parti uno e due?
    Capisco che questo codice sarebbe index. php, dove posizionato iria?
    Grazie mille!

    • [object Window],

      Solo con questo codice PHP può implementare la versione più ' corrente’ Sistema.

      Nel precedente tutorial e recensioni di loro spiegare dove si trova il file. (index. php), come dare le autorizzazioni corrette, ecc…

      Grazie per il commento.

      • Molte grazie per la tempestiva risposta.
        Già ho collegato il tutto con un'unica lastra di otto relè.
        Ma una cosa rara sta accadendo a me che non riesce a trovare una soluzione.
        Dando i pulsanti web, è attivato il GPIO perfettamente, dando loro tensione corrispondente e mantenerlo fino a che esso arresto, ma d'altra parte il relè fa sua “Fare clic su” di funzionamento ma non cambiò. Il suono è come se il relè è activase e viene disattivato, è così veloce che il tester non rileva qualsiasi cambiamento.
        Che potrebbe essere dovuto a?
        Grazie.

        Salu2!

        • Già trovato il bug.
          Nel codice PHP, nella disattiva comando, rimuovere il codice $a- Exec(“Eco 18 > /sys/classe/gpio/unexport”); , come lo hai l'interruttore prima e ora mi funziona.
          Ora ciò che rende, la prima volta che accendere il lampone; è la luce l'otto LED a media intensità, è necessario attivare e chiudere una volta e quindi già luci led funziona bene e già corretto.

          Salu2!

          • Mi dispiace essere così pesante con così tanti commenti, ma questo è il primo progetto che faccio con la mia raspery ed è incredibile e molto molto semplice! È un passato questo tutorial.
            E il mondo che si apre con questa squadra è inmeso!
            Sul web, senza lasciare il PHP, si poteva vedere che l'interruttore è attivo?
            Gli interruttori, potrebbe arrivare a gestirlo con tempismo e tempo di programmazione?
            Della verità,Ho aperto un nuovo mondo, molto divertente ed economico.

            Salu2 e grazie!

          • Ciao Paolo GC.

            Penso che in un commento ho spiegato come verificare che l'interruttore sia lettura attiva attraverso PHP stato di GPIO.

            Per controllare a livello di programmazione il tempo la cosa più semplice è usare il demone CRON di sistema per eseguire quello che vuoi, volte in cui le Marquis.

            Grazie mille per il commento.

          • progetto tenda già abbastanza, a leggere lo stato di gpio è sufficiente usare
            Exec ( “GPIO leggere 29”, $status21 );
            Se ($status21[0] == 0) {
            }
            e mettere le staffe che si desidera visualizzare se è acceso o = = lo stato di 1 per arresto.

            La numerazione di gpio leggere non corrisponde la numerazione delle porte gpio, Se vuoi ho messo qui la tabella delle equivalenze per ogni porta con la numerazione di lettura che ho fatto.

            L'unica cosa che non capisco ancora, è perché 1 È spento e 0 È il.
            e perché sul lampone, tutte le uscite sono apolidi, lasciando a media tensione e uscite non lavoro finche ' li trasformano due volte.

            Creare una reimpostazione del sito, ciò che fa è dare l'ordine a tutte le uscite, un “sonno” e di nuovo per dare l'ordine di spegnerle tutte le, Dopo questo processo già sono tutti funzionali.

            Può essere che passano queste due cose?

            Salu2!

          • [object Window], Ci scusiamo per il ritardo ma ho sono ultimamente molto poco tempo tra lavoro e studi.

            In primo luogo voglio ringraziare voi che avete condiviso il vostro progresso con gli altri lettori del blog, Quando ho tempo libero che ho in sospeso continuare questa sezione di tutorial su Domotica facile e conveniente, ma è davvero un orgoglio per me vedere come potete seguire te stesso in avanti con il progetto e fare ognuno nel proprio sistema personalizzato.

            Connessione sul relè assegnando un valore logico basso (0), e li trasformano con un valore logico alto (1) È possibile che a causa di che aver collegato il relè a 230V come normalmente aperta invece normalmente a circuito chiuso, come ho detto il lettore XuFLes il primo commento di questo articolo; Se si tenta e il problema persiste, Sentitevi liberi di commentare e provare a pensare a qualsiasi altra possibilità.

            Per evitare di dover fare le uscite reset dopo ogni accensione Raspbian, È possibile creare un semplice script che esportano e impostare i pin che si desidera riavviare il sistema, e lanciarlo per esempio da RC. local.

          • Ciao!
            Nulla in quel pomeriggio nella risposta!
            È logico per prendere tempo e soprattutto in queste date.
            Accensione e spegnimento, Funziona l'altro senso intorno, Ho i relè collegati.

            E cosa la RC. local, per evitare di dover andare alla pagina reset, come si farebbe.

            Salu2!

  4. Buona pedonale, ha preso il tempo di leggerli 3 parti di tutorial su Domotica, ma nella sua programmazione andando molto veloce per il mio, l'argomento sembra super interessante ma penso che abbiamo bisogno di un dettaglio di un sistema di automazione domestica completa ed è di ricevere l'input dall'esterno, ( pulsanti, sensori di luce, ecc). Mi piacerebbe collaborare e pensare che nella parte elettrica si può aiutare e per cambiare chiedete aiuta a comprendere tutta la programmazione di parte. La mia email è tecnico.antono.Raya@gmail.com

    Un saluto e complimenti per il web

Lasciare una risposta