توت العليق PI – تنفيذ نظام أتمتة منزل بأسعار معقولة [الجزء الثالث]

وبعد عدة أشهر، قررت العودة إلى هذا المشروع مع التي تنوي إنشاء نظام التشغيل الآلي للمنزل مجاناً, و معقولة اقتصاديا; وهذا انخفاض الاستهلاك القائم على الحواسيب الدقيقة, ولكن عبر النظام الأساسي و المحمولة لأي جهاز مع نظام التشغيل جنو/لينكس متاح من منفذ جبيو.في الوظائف السابقة ونحن تعلمنا أن وحدات التحكم مرحلات أوبتواكوبلادوس مع توت العليق PI قبل باش, بي إتش بي, وبايثون; وفي هذه المناسبة أنا الأمثل نظام التشغيل الآلي للمكاتب, و بالمناسبة لقد هاجرت إلى توت العليق PI 3 للتخلص من الاتصال اللاسلكي, ولكن إذا أردت يمكنك استخدام أي نموذج سابق.

ميسبيس الأجهزة وهو يتألف من اثنين من وحدات من ثماني ناقلات كل, التي تشكل في مجموعها ستة عشر عموميات للتحكم الأجهزة المنزلية, مقابس كهربائية, الإضاءة; ودون نهاية أجهزة أن تحويله إلى هذا صغير توت العليق PI 3, في كل ما تحتاجه بيت دوموتيك مكتب يو التقليدية.

بناء نظام التشغيل الآلي للمكاتب

قواطع دوائر التبديل الرسم التخطيطي دوموتيك ديي.

وتمت برمجة لوحة التحكم في بي إتش بي, وهو الأمثل لمدونة الإصدار السابق ولكن المقصود لإدارة جبيو من خلال مباشرة باش الذي يتسارع بشكل كبير في عملية; يجب أن يكون, منذ ذلك الحين ونحن سوف يخدم هذا عبر صفحة وأي فأي.

فريموتيكسبي

لوحة تحكم ويب نظام التشغيل الآلي للمكاتب.

وحقيقة دون ملفات إضافية إدارة النواتج المنفذ جبيو من توت العليق قبل بايثون; يحول هذا بسيط صفحة ويب, ملف واحد, في نقطة البداية الحقيقية التي قد تصبح يوما ما في نظام التشغيل الآلي للمنزل كامل أنه سوف يتم وضع معا.

<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

?>

لإجراء الصلات القائمة بين التوت وترحيل, يجب عليك الانتقال إلى أسفل الرسالة الجداول التالية استناداً إلى مخطط جبيو بليون متر مكعب; لأن خلاف ذلك سيكون لديك لتعديل الخطوط في الملف بي إتش بي, ويستعاض في مدونة أرقام رقم التعريف الشخصي الموظفين.

نموذج PI التوت ب +/2/3 الوحدة النمطية للتقوية 1
+ 5V + 5V
جبيو 4
في 1
جبيو 17
في 2
جبيو 27 في 3
جبيو 22
في 4
جبيو 18 في 15
جبيو 23
IN1 6
جبيو 24
IN1 7
جبيو 25
IN1 8
GND GND
نموذج PI التوت ب +/2/3 الوحدة النمطية للتقوية 2
+ 5V + 5V
جبيو 5
في 1
جبيو 6
في 2
جبيو 13
في 3
جبيو 12
في 4
جبيو 19
IN1 5
جبيو 16
IN1 6
جبيو 20
IN1 7
جبيو 21
IN1 8
GND GND

بمجرد توصيل كافة دبابيس من توت العليق لكل منهما VCC, GND, ه المدخلات لأن ترحيل; ولم يبق سوى نسخ ملف بي إتش بي لأن توت العليق PI, لماذا استخدام اللجنة الدائمة التي سوف تسمح لنا بالقيام بذلك عن بعد.

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/

أيضا عن بعد نحن سيتم نقل الملف إلى دليل ملقم ويب, وسوف نعلق بأصحاب سة لأن المستخدم والمجموعة www-البيانات; سيتم إضافته إلى مجموعة جبيو, وبعد ذلك نحن إعادة تشغيل الكمبيوتر لتطبيق التغييرات.

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

أخيرًا نقوم بتغذية مع ترحيل 230V وكما رأينا في المواد السابقة صنع جسر بين المدخل واقطاب الإيجابية الأخرى, لاستخدام واحد التوصيل, أو قم بالتبديل قواطع مصغرة; ولكن إذا كنا نريد للاتصال ستة عشر من الأجهزة ارتفاع الاستهلاك وأوصى باستخدام اثنين, أو المقابس أكثر.

ريليسبوينتيدوس

المخطط للجسر الذي يربط بين القطبين إيجابية من الوحدة النمطية التتابع.

الأسلاك المتبقية, التي تتوافق مع القطب السلبي وإلى يأخذ من الأرض, ونحن سوف قم بتوصيلها مباشرة إلى الجهاز تريد التحكم عن طريق الوحدة النمطية للتقوية, في حالتي قم بتوصيل دوموتيك ديي; ينبغي أن نضع في الاعتبار أيضا أن للسلامة يجب أن يكون لدينا ترحيل 1A الخروج, قبل لما 16 سوف تحتاج إلى نواتج تتابع من 16إلى.

ترحيل مخطط التوصيل

رسم تخطيطي للتوصيل دوموتيك ديي.

في ما يلي فيديو يمكنك أن ترى أداء هذا نظام النواتج الستة عشر بالتحقق منها, من خلال تظاهرة مع مصباح طاقة المنخفضة; لا تنسى إذا كنت تحب لي على متابعة يوتيوب لا يغيب عن أي من فيديو غير منشورة أنا ذاهب لنشر.

إذا كنت مثلك اتبع لي على تويتر, فيسبوك, جوجل +, LinkedIn, Feedly, أو تقاسمها مع الأزرار الموجودة تحت هذا المنشور, إذا كان لديك أي أسئلة أو اقتراحات لا تترددوا في التعليق.

تساعدنا للوصول إلى أكبر عدد من القراء Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

14 أفكار بشأن "توت العليق PI – تنفيذ نظام أتمتة منزل بأسعار معقولة [الجزء الثالث]

  1. باتنة سؤال, وقد نسخ التعليمات البرمجية كما هو، وكل شيء يعمل بشكل صحيح, إلا أن أزرار الخلف الذهاب, تشغيل إيقاف تشغيل لأسفل والعكس بالعكس.

    شكرا لكم جميعا المدونة الرائعة.

    • مرحبا إكسوفليس, شكرا لتعليقك.

      ربما له علاقة بالتتابع إلى اتصالات التيار الكهربائي; ينبغي أن يكون للتحقق إذا قد اتصال في العادة مفتوحة (لا) بدلاً من إغلاقه بشكل عادي (نورث كارولاينا).

      أراك لاحقًا.

      • أنا اختبار قبل الاتصال جهات الاتصال إلى 230 V والأحمر أدت للترحيل قيد التشغيل عند إيقاف تشغيل في نبض. لقد تعديل طفيف التعليمة البرمجية عكس ذلك، وتبدو جيدة, ولكن أشك في الحقيقة قد ظهرت لي. شكرا لك x إجابتك.

  2. Buen aporte. Estoy necesitando algo similar para un control de riego pero con una condición: si una de las n salidas están en 1 entonces GPIOx estará en 1. Osea GPIO=0 si solo si todas las salidas = 0. أي فكرة?? Donde n salidas son electrovalvulas y GPIOx la bomba. Desde ya muchas gracias.

  3. مرحبا, 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?
    شكرًا جزيلاً!

      • 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 “انقر فوق” 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?
        شكرا.

        Salu2!

        • Ya encontré el fallo.
          En el código PHP, en el comando de apagar, le quite el código $a- exec(“صدى 18 > /sys/فئة/جبيو/أونيكسبورت”); , 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!
            في صفحة ويب, 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!

          • ya avancé bastante en el proyecto, para leer el estado de los gpio basta con usar
            exec ( “gpio read 29”, $status21 );
            إذا كان ($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, أ “النوم” 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!

          • مرحبا 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.

          • مرحبا!
            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!

اترك ردًا