{"id":5842,"date":"2026-08-15T07:00:00","date_gmt":"2026-08-15T05:00:00","guid":{"rendered":"https:\/\/raspberrytips.es\/?p=5842"},"modified":"2026-08-14T05:34:40","modified_gmt":"2026-08-14T03:34:40","slug":"automatizar-raspberry-pi-python","status":"publish","type":"post","link":"https:\/\/raspberrytips.es\/automatizar-raspberry-pi-python\/","title":{"rendered":"9 Potentes Scripts en Python para Automatizar tu Raspberry Pi"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Si eres como yo, tu Raspberry Pi siempre est\u00e1 ejecutando algo: puede ser una copia de seguridad, un monitor de red o un simple script. Pero hacer las mismas tareas todos los d\u00edas se vuelve aburrido r\u00e1pidamente. Ah\u00ed es donde Python ayuda. Con unos pocos scripts sencillos, tu Pi puede encargarse autom\u00e1ticamente de las tareas rutinarias. He probado un mont\u00f3n y he seleccionado los m\u00e1s \u00fatiles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><strong>Los scripts de Python se pueden usar en una Raspberry Pi para automatizar tareas funcionales como copias de seguridad, monitorizaci\u00f3n, alertas y control de dispositivos con solo unas l\u00edneas de c\u00f3digo.<\/strong> Son m\u00e1s f\u00e1ciles de escribir, leer y ampliar que los scripts de Bash, especialmente cuando se usan bibliotecas o API web.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo, comparto algunos de los scripts de Python m\u00e1s \u00fatiles que he usado para hacer que mi Raspberry Pi sea m\u00e1s inteligente y requiera menos intervenci\u00f3n manual. Encontrar\u00e1s ideas, fragmentos de c\u00f3digo y consejos que puedes aplicar de inmediato; no se necesitan conocimientos avanzados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Script de actualizaci\u00f3n autom\u00e1tica del sistema<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mantener tu sistema actualizado es esencial, ya que las actualizaciones suelen incluir parches de seguridad cr\u00edticos y correcciones de errores. Tambi\u00e9n es buena pr\u00e1ctica actualizar el sistema antes de instalar software nuevo.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/automatedSystemUpdate-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38972\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">A diferencia de la mayor\u00eda de los sistemas operativos modernos, Raspberry Pi OS no tiene una funci\u00f3n de actualizaci\u00f3n autom\u00e1tica o programada. Normalmente, cuando necesitamos actualizar nuestro sistema, lo hacemos manualmente a trav\u00e9s del gestor de paquetes usando el siguiente comando:<br><code>sudo apt update &amp;&amp; sudo apt full-upgrade -y<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Este proceso se puede automatizar mediante un script de Python que utilice la biblioteca subprocess. El siguiente fragmento de c\u00f3digo de Python actualiza la Raspberry Pi autom\u00e1ticamente:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import subprocess\n\n# Update and upgrade the system\ndef run_update():\n    subprocess.run(&#91;\"sudo\", \"apt\", \"update\"])\n    subprocess.run(&#91;\"sudo\", \"apt\", \"upgrade\", \"-y\"])\n\nrun_update()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lo que puedes hacer es convertir este script de Python en un archivo ejecutable mediante el siguiente comando:<br><code>chmod +x \/home\/pat\/path\/to\/script.py<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y a\u00f1adirlo al final de tu archivo ~\/.bashrc. De esta forma, al iniciar sesi\u00f3n en tu Raspberry Pi se iniciar\u00e1 autom\u00e1ticamente una actualizaci\u00f3n del sistema en segundo plano.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para evitar actualizaciones repetidas, puedes a\u00f1adir un archivo de registro para guardar la hora de la \u00faltima actualizaci\u00f3n y luego a\u00f1adir una l\u00ednea en tu script para comprobar que ha pasado un tiempo m\u00ednimo (por ejemplo, 7 d\u00edas) antes de iniciar la actualizaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pathlib import Path\nfrom datetime import datetime, timedelta\n\n#Define Log Path and the number of days required to start a new update\nUPDATE_LOG = Path(\"\/home\/pi\/.last_update\")\nUPDATE_THRESHOLD_DAYS = 7\n\n#Check if Update is required\ndef needs_update():\n    if not UPDATE_LOG.exists():\n        return True\n    last_update = datetime.fromisoformat(UPDATE_LOG.read_text())\n    return datetime.now() - last_update &gt; timedelta(days=UPDATE_THRESHOLD_DAYS)\n\n#Only run update if update is required\nif needs_update():\n    run_update()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si est\u00e1s usando tu Raspberry Pi en modo gr\u00e1fico (GUI), puedes a\u00f1adir notificaciones que te avisen cu\u00e1ndo una actualizaci\u00f3n ha empezado y cu\u00e1ndo ha finalizado correctamente (o no). Podemos hacer esto usando la biblioteca <strong>plyer<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes instalar esta biblioteca usando el comando:<br><code>pip install plyer<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/InstallPlyer-1024x150.jpg\" alt=\"\" class=\"wp-image-38706\"\/><\/figure>\n<\/div>\n\n\n<p class=\"has-theme-palette-7-background-color has-background wp-block-paragraph\"><span style=\"margin: 0px;padding: 0px\"><strong>Nota<\/strong>: <\/span>Raspberry Pi OS no tiene preinstalado su demonio de notificaciones. Por lo tanto, debes instalar <strong>dunst<\/strong> desde el repositorio oficial para ver las notificaciones. Puedes instalar dunst usando el comando:<br><code>sudo apt install dunst<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s, podemos usar esto en nuestro script de Python para mostrar notificaciones cada vez que empieza y termina correctamente una actualizaci\u00f3n, usando el c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from plyer import notification\n\ndef show_notification(title, message):\n    notification.notify(\n        title=title,\n        message=message,\n        timeout=5\n    )\n\nshow_notification(\"System Update\", \"Starting update...\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez configurado, te mostrar\u00e1 una notificaci\u00f3n en pantalla cada vez que empiece y complete una actualizaci\u00f3n del sistema, como se muestra a continuaci\u00f3n:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/NotificationExample-1024x295.jpg\" alt=\"\" class=\"wp-image-38744\"\/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Script de copia de seguridad en la nube<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"margin: 0px;padding: 0px\">Hacer copias de seguridad de tus archivos es una de esas cosas en las que <em>solo<\/em> piensas cuando<\/span> ya es demasiado tarde. Ya sean fotos, proyectos o registros, perderlos por un fallo en la tarjeta SD puede ser muy frustrante. As\u00ed que vamos a solucionar eso.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/cloudBackup-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38973\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Puedes escribir un script en Python para hacer copias de seguridad autom\u00e1ticamente de cualquier carpeta de tu Raspberry Pi a Google Drive.<\/strong> Puedes programarlo para que se ejecute peri\u00f3dicamente (diario, semanal, etc.) mediante una tarea de <strong>cron<\/strong>. Usaremos <strong>rclone<\/strong>, una herramienta potente que conecta tu Pi con los servicios de almacenamiento en la nube m\u00e1s populares.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para <a href=\"https:\/\/raspberrytips.com\/rclone-raspberry-pi\/\">usar rclone<\/a> (en ingl\u00e9s), primero necesitas instalarlo usando el comando:<br><code>sudo apt install rclone<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/installRClone-1024x133.jpg\" alt=\"\" class=\"wp-image-38745\"\/><\/figure>\n<\/div>\n\n\n<p class=\"has-theme-palette-7-background-color has-background wp-block-paragraph\"><span style=\"margin: 0px;padding: 0px\"><strong>Nota<\/strong>:<\/span> Aseg\u00farate de configurar rclone para vincularlo con tu Google Drive usando el comando:<br><code>rclone config<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez instalado y configurado, puedes usar un c\u00f3digo Python sencillo, como el que se muestra a continuaci\u00f3n, para hacer copias de seguridad, autom\u00e1ticamente, de la carpeta seleccionada en tu Google Drive:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import subprocess\nfrom datetime import datetime\n\n# Folder to back up\nsource_folder = \"\/home\/pi\/projects\"\n\n# Destination folder in Google Drive\nbackup_name = f\"backup_{datetime.now().strftime('%Y-%m-%d')}\"\nremote_folder = f\"gdrive:PiBackups\/{backup_name}\"\n\n# Run the backup\nsubprocess.run(&#91;\"rclone\", \"copy\", source_folder, remote_folder])<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes mejorar esto a\u00fan m\u00e1s configurando un <strong>crontab<\/strong> para automatizar y ejecutar el script en intervalos programados (por ejemplo, cada noche). Esto asegura que tus datos importantes se clonen autom\u00e1ticamente en tu Google Drive.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes usar un m\u00e9todo de notificaci\u00f3n similar al que vimos en el script de actualizaci\u00f3n autom\u00e1tica, para avisarte cuando se haya creado una copia de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n puedes usar la funci\u00f3n <strong>sync<\/strong> de <strong>rclone<\/strong> para actualizar las copias de seguridad existentes en lugar de crear una nueva cada vez. Otra ventaja de usar rclone es que puedes configurarlo para trabajar con Dropbox, OneDrive u otros servicios de alojamiento de archivos similares, y no est\u00e1s limitado \u00fanicamente a Google Drive.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si quieres conocer otros m\u00e9todos para hacer copias de seguridad de tu Raspberry Pi, los explicamos aqu\u00ed, en <a href=\"https:\/\/raspberrytips.es\/copia-de-seguridad-de-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.es\/copia-de-seguridad-de-raspberry-pi\/\">La gu\u00eda definitiva para hacer copias de seguridad y restaurar tu Raspberry Pi<\/a>, como usar <a href=\"https:\/\/raspberrytips.com\/rsnapshot-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/rsnapshot-raspberry-pi\/\">rsnapshot para copias de seguridad incrementales<\/a> (en ingl\u00e9s).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Registro de uso de recursos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfTe has preguntado alguna vez si tu Raspberry Pi se est\u00e1 calentando demasiado o est\u00e1 usando demasiada memoria? Si tu Pi de repente se ralentiza, tener un registro de rendimiento puede ayudarte a averiguar por qu\u00e9.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/resourceUsageLogger-1024x683.jpg\" alt=\"\" class=\"wp-image-38974\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Aunque <span style=\"margin: 0px;padding: 0px\">hay varias <a href=\"https:\/\/raspberrytips.com\/monitor-raspberry-pi-performance\/#vcgencmd--check-cpu-temperature--clock-speed\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/monitor-raspberry-pi-performance\/#vcgencmd--check-cpu-temperature--clock-speed\">herramientas disponibles para monitorizar el estado de tu Raspberry Pi<\/a> (en ingl\u00e9s), la mayor\u00eda requieren que est\u00e9s presente f\u00edsicamente. <\/span><strong><span style=\"margin: 0px;padding: 0px\">Puedes desarrollar un script de Python usando la <\/span>biblioteca psutil para llevar un registro del uso de CPU, memoria y disco, y avisarte si algo supera un l\u00edmite establecido.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes instalar la biblioteca psutil usando el comando:<br><code>pip install psutil<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/installPSUtils-1024x157.jpg\" alt=\"\" class=\"wp-image-38748\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s puedes usar las funciones integradas de psutil para obtener el uso de CPU, RAM y disco, como se muestra a continuaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import psutil \n\ncpu = psutil.cpu_percent()\nram = psutil.virtual_memory().percent\ndisk = psutil.disk_usage('\/').percent<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Otra estad\u00edstica importante a monitorizar es la temperatura de la CPU de la Raspberry Pi. La temperatura de la CPU tambi\u00e9n se puede obtener leyendo el valor del archivo <code>\/sys\/class\/thermal\/thermal_zone0\/temp<\/code>. Tambi\u00e9n puedes convertir esto en c\u00f3digo Python:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Function to get CPU temperature\ndef get_cpu_temp():\n    try:\n        with open(\"\/sys\/class\/thermal\/thermal_zone0\/temp\", \"r\") as f:\n            temp_str = f.readline()\n            return round(int(temp_str) \/ 1000, 1)\n    except FileNotFoundError:\n        return None<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s puedes guardar todos estos datos en un archivo CSV con una marca de fecha y hora para crear un registro que puedas revisar m\u00e1s tarde y analizar el rendimiento del sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n puedes mejorar este script usando <strong>Pushbullet<\/strong> para enviar notificaciones si algo se vuelve excesivo (por ejemplo, si la temperatura de la CPU es demasiado alta) mientras est\u00e1s fuera.<\/p>\n\n\n\n<p class=\"has-theme-palette-7-background-color has-background wp-block-paragraph\"><span style=\"margin: 0px;padding: 0px\"><strong>Nota<\/strong>:<\/span> Aseg\u00farate de tener Pushbullet instalado y configurado en tu PC o m\u00f3vil para recibir las notificaciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes usar un script de Python, como el que se muestra a continuaci\u00f3n, para enviar notificaciones de Pushbullet a todos los dispositivos conectados:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\n\nPUSHBULLET_TOKEN = \"your_token_here\"\n\ndef send_alert(msg):\n    requests.post(\n        \"https:\/\/api.pushbullet.com\/v2\/pushes\",\n        headers={\"Access-Token\": PUSHBULLET_TOKEN},\n        json={\"type\": \"note\", \"title\": \"Raspberry Pi Alert\", \"body\": msg}\n    )\n\nif temp and temp &gt; TEMP_LIMIT:\n    send_alert(f\"CPU temperature is high: {temp}\u00b0C\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora, cada vez que tu Raspberry Pi se caliente demasiado, te avisar\u00e1 autom\u00e1ticamente, incluso cuando est\u00e9s fuera:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/pushbulletNotificationWindows-1024x331.jpg\" alt=\"\" class=\"wp-image-38749\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Las notificaciones de Pushbullet tambi\u00e9n se pueden recibir en tu m\u00f3vil.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/pushbulletMobile-1024x861.jpg\" alt=\"\" class=\"wp-image-38750\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Si tu Raspberry Pi se sobrecalienta con frecuencia, sigue esta gu\u00eda completa sobre <a href=\"https:\/\/raspberrytips.es\/temperatura-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.es\/temperatura-raspberry-pi\/\">Temperatura de Raspberry Pi: L\u00edmites y Soluciones<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Apagado de pantalla por inactividad \/ ahorro de energ\u00eda<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfDejas tu Raspberry Pi funcionando con una pantalla conectada? Si es as\u00ed, esa pantalla puede permanecer encendida incluso cuando nadie la est\u00e1 usando. Con el tiempo, esto puede desperdiciar electricidad y reducir la vida \u00fatil de tu pantalla.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/idleScreenOff-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38975\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Raspberry Pi OS incluye una funci\u00f3n b\u00e1sica de apagado de pantalla, que la pone en negro tras 10 o 15 minutos de inactividad. Sin embargo, esta funci\u00f3n solo pone la pantalla en negro, y la salida HDMI no se desactiva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Con un sencillo script de Python, puedes monitorizar la actividad del rat\u00f3n y el teclado y apagar autom\u00e1ticamente la pantalla tras un tiempo determinado.<\/strong> Tambi\u00e9n podemos usar <strong>vgencmd<\/strong> para desactivar la alimentaci\u00f3n de la salida HDMI, lo que supone un ahorro de energ\u00eda mucho m\u00e1s significativo que el apagado de pantalla predeterminado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para monitorizar la actividad del teclado y el rat\u00f3n, necesitar\u00e1s la biblioteca <strong>pynput<\/strong>. Puedes instalarla usando el comando:<br><code>pip install pynput<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/installPynput-1024x440.jpg\" alt=\"\" class=\"wp-image-38751\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s puedes usar un script de Python para monitorizar el uso del teclado y el rat\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import time\nfrom pynput import mouse, keyboard\n\ndef reset_timer(x=None):\n    global last_input_time\n    last_input_time = time.time()\n\n# Set up listeners for keyboard and mouse\nkeyboard_listener = keyboard.Listener(on_press=reset_timer)\nmouse_listener = mouse.Listener(on_move=reset_timer, on_click=reset_timer, on_scroll=reset_timer)\n\nkeyboard_listener.start()\nmouse_listener.start()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, puedes seguir monitorizando el tiempo de inactividad. Si el tiempo supera un cierto umbral, puedes usar vgencmd para desactivar la salida HDMI.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>while True:\n    idle_duration = time.time() - last_input_time\n\n    if idle_duration &gt; IDLE_TIME and not screen_off:\n        subprocess.run(&#91;\"\/usr\/bin\/vcgencmd\", \"display_power\", \"0\"])\n        screen_off = True\n        print(\"Screen turned OFF due to inactivity.\")\n        \n    elif idle_duration &lt;= IDLE_TIME and screen_off:\n        subprocess.run(&#91;\"\/usr\/bin\/vcgencmd\", \"display_power\", \"1\"])\n        screen_off = False\n        print(\"Activity detected. Screen turned ON.\")\n\n    time.sleep(5)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes automatizar y ejecutar este script en segundo plano usando <strong>~\/.bashrc, rc.local<\/strong> o un servicio <strong>systemd<\/strong>. Este script puede suponer un ahorro de energ\u00eda considerable, ya que tu monitor suele ser lo que m\u00e1s electricidad consume.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Script para detectar inserci\u00f3n de USB<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Transferir archivos desde una Raspberry Pi normalmente implica conectarse por SSH, SCP o sincronizaci\u00f3n en la nube. Pero a veces, la forma m\u00e1s f\u00e1cil sigue siendo la m\u00e1s antigua: conectar una unidad USB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo, si est\u00e1s usando tu Raspberry Pi como servidor sin monitor y quieres descargar algunos registros de ella, \u00bfno ser\u00eda genial que simplemente conectaras un USB y tu Raspberry Pi descargara autom\u00e1ticamente todos los registros relevantes en tu USB y lo expulsara de forma segura?<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/usbInsertionScript-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38976\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Suena como algo de una pel\u00edcula de James Bond, pero puedes hacerlo con un sencillo script de Python.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes encontrar la ruta de montaje de tu USB usando el c\u00f3digo Python que se muestra a continuaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\nMOUNT_ROOT = \"\/media\/pi\"\nUSB_LABEL = \"LOGDUMP\"  # Optional: use a specific USB label\n\ndef find_usb_mount():\n    for mount in os.listdir(MOUNT_ROOT):\n        mount_path = os.path.join(MOUNT_ROOT, mount)\n        if os.path.ismount(mount_path):\n            if USB_LABEL and USB_LABEL.lower() not in mount.lower():\n                continue\n            return mount_path\n    return None<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y luego usar eso para copiar datos a tu USB usando la biblioteca <strong>shutil<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nimport shutil\nimport time\n\nSOURCE_DIR = \"\/var\/log\/mylogs\"\nDESTINATION_NAME = f\"logs_{time.strftime('%Y%m%d_%H%M%S')}\"\n\ndef copy_logs(usb_path):\n    dest = os.path.join(usb_path, DESTINATION_NAME)\n    os.makedirs(dest, exist_ok=True)\n    shutil.copytree(SOURCE_DIR, dest, dirs_exist_ok=True)\n    print(f\"\u2705 Logs copied to: {dest}\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo, la verdadera magia ocurre cuando a\u00f1ades este script a tus reglas de <strong>udev<\/strong>. Puedes hacerlo siguiendo estos pasos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Primero, necesitas hacer que tu script de Python sea ejecutable mediante el siguiente comando:<br><code>sudo chmod +x \/path\/to\/your\/script.py<\/code><\/li>\n\n\n\n<li>Luego, puedes crear un script de shell auxiliar que contenga el siguiente <a href=\"https:\/\/raspberrytips.com\/bash-vs-python-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/bash-vs-python-raspberry-pi\/\">script de bash<\/a> (en ingl\u00e9s):<br><code>python3 \/path\/to\/your\/script.py<\/code><\/li>\n\n\n\n<li>Haz que este script de shell tambi\u00e9n sea ejecutable. <\/li>\n\n\n\n<li>Finalmente, puedes crear una regla de udev con el comando:<br><code>sudo nano \/etc\/udev\/rules.d\/99-usb-log.rules<\/code><\/li>\n\n\n\n<li>A\u00f1ade las siguientes l\u00edneas:<br><code>ACTION==\"add\", SUBSYSTEM==\"block\", KERNEL==\"sd[a-z][0-9]\", RUN+=\"\/path\/to\/your\/shell\/script.sh\"<\/code><\/li>\n\n\n\n<li>Recarga udev usando el comando:<br><code>sudo udevadm control --reload-rules &amp;&amp; sudo udevadm trigger<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora, cada vez que insertes un USB, tu Raspberry Pi copiar\u00e1 autom\u00e1ticamente todos tus registros al USB sin necesidad de monitor, teclado ni rat\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes mejorar a\u00fan m\u00e1s este script a\u00f1adiendo un m\u00e9todo de autenticaci\u00f3n para reforzar la seguridad de los datos, por ejemplo, un token de autenticaci\u00f3n guardado en tu USB, que el script de Python verificar\u00e1 antes de copiar todos los registros al USB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Relacionado<\/strong>: <a href=\"https:\/\/raspberrytips.com\/raspberry-pi-backup-tips\/\">Los 10 mejores consejos de copia de seguridad para Raspberry Pi para mantener tus datos seguros<\/a> (en ingl\u00e9s)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Detector de movimiento por c\u00e1mara con captura de imagen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Convertir tu Raspberry Pi en un sistema de seguridad b\u00e1sico suena complicado, pero es m\u00e1s sencillo de lo que piensas. Usando un <a href=\"https:\/\/raspberrytips.es\/instalar-camara-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.es\/instalar-camara-raspberry-pi\/\">m\u00f3dulo de c\u00e1mara<\/a> con Raspberry Pi y algo de magia de visi\u00f3n por ordenador, puedes lograrlo f\u00e1cilmente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/cameraMotionDetector-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38977\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/raspberrytips.es\/instalar-opencv-en-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.es\/instalar-opencv-en-raspberry-pi\/\">OpenCV<\/a> es una biblioteca de c\u00f3digo abierto<span style=\"margin: 0px;padding: 0px\"> comp<\/span>atible con lenguajes como <a href=\"https:\/\/raspberrytips.com\/c-vs-python-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/c-vs-python-raspberry-pi\/\">Python y C++<\/a> (en ingl\u00e9s). Te permite crear proyectos de visi\u00f3n por ordenador y aprendizaje autom\u00e1tico. Con OpenCV puedes lograr tareas como reconocimiento facial, reconocimiento de gestos, etc.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2022\/08\/Facial_Recog_activating_this_servo-1024x407.png\" alt=\"\" class=\"wp-image-12771\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Puedes configurar tu c\u00e1mara de Raspberry Pi para usarla con Python siguiendo esta gu\u00eda: <a href=\"https:\/\/raspberrytips.es\/camara-picamera2-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.es\/camara-picamera2-raspberry-pi\/\">C\u00f3mo usar la c\u00e1mara de Raspberry Pi con Python en 2025<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes instalar OpenCV en tu Raspberry Pi usando el comando:<br><code>sudo apt install python3-opencv<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/installOpenCV-1024x139.jpg\" alt=\"\" class=\"wp-image-38798\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s puedes usar OpenCV en un script de Python para crear un algoritmo de detecci\u00f3n de movimiento, como se muestra a continuaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2\n\n# Capture video stream\ncam = cv2.VideoCapture(0)\n\n# Read the first frame and preprocess it\n_, frame1 = cam.read()\ngray1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)\ngray1 = cv2.GaussianBlur(gray1, (21, 21), 0)\n\nwhile True:\n    # Read the next frame\n    _, frame2 = cam.read()\n    gray2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)\n    gray2 = cv2.GaussianBlur(gray2, (21, 21), 0)\n\n    # Compute difference between frames\n    delta = cv2.absdiff(gray1, gray2)\n    thresh = cv2.threshold(delta, 25, 255, cv2.THRESH_BINARY)&#91;1]\n    thresh = cv2.dilate(thresh, None, iterations=2)\n\n    # Find contours (moving areas)\n    contours, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)\n\n    # Check for motion\n    motion_detected = any(cv2.contourArea(c) &gt; 1000 for c in contours)\n\n    if motion_detected:\n        print(\"\u26a0\ufe0f Motion detected!\")\n\n    # Update the baseline frame\n    gray1 = gray2.copy()\n\n    # Exit on 'q'\n    if cv2.waitKey(10) == ord('q'):\n        break\n\ncam.release()\ncv2.destroyAllWindows()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este script de detecci\u00f3n de movimiento puede entonces enviarte un correo electr\u00f3nico con la imagen adjunta. Esto tambi\u00e9n se puede hacer con un sencillo c\u00f3digo Python:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import smtplib\nfrom email.message import EmailMessage\n\ndef send_email(image_path):\n    # Set up the email details\n    msg = EmailMessage()\n    msg&#91;'Subject'] = '\ud83d\udcf8 Motion Detected on Raspberry Pi'\n    msg&#91;'From'] = 'your_email@gmail.com'\n    msg&#91;'To'] = 'recipient_email@gmail.com'\n    msg.set_content('Motion detected! See attached snapshot.')\n\n    # Attach the image\n    with open(image_path, 'rb') as f:\n        msg.add_attachment(f.read(), maintype='image', subtype='jpeg', filename='snapshot.jpg')\n\n    # Send via Gmail (or your preferred SMTP)\n    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:\n        smtp.login('your_email@gmail.com', 'your_app_password')\n        smtp.send_message(msg)\n        print(\"\ud83d\udce7 Email sent successfully!\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Combinando estos dos scripts, puedes hacer que tu Raspberry Pi act\u00fae como un vigilante del hogar. Cada vez que detecte alg\u00fan movimiento en su c\u00e1mara, tomar\u00e1 una foto y te la enviar\u00e1 por correo electr\u00f3nico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes mejorar este proyecto a\u00f1adiendo un sensor de detecci\u00f3n de movimiento HC-SR501 para reforzar las capacidades de detecci\u00f3n de movimiento de tu sistema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comprobador de disponibilidad de dispositivos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes dispositivos inteligentes para el hogar como impresoras, o incluso otra Raspberry Pi en tu red, es posible que quieras saber cu\u00e1ndo alguno se desconecta. Esto puede ser muy \u00fatil para administrar de forma remota tus herramientas.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/deviceReachability-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38978\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Un script de Python puede comprobar peri\u00f3dicamente si tus dispositivos de red (r\u00fater, impresoras o controladores de dispositivos inteligentes para el hogar) son accesibles.<\/strong> Haciendo <em>ping<\/em> a sus direcciones IP a intervalos determinados, el script puede detectar si alguno se desconecta y enviarte una notificaci\u00f3n cuando eso ocurra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comprobar la disponibilidad de tus dispositivos mediante <em>ping<\/em> se puede hacer f\u00e1cilmente con el c\u00f3digo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nimport time\n\n# List of devices to monitor (name, IP address)\ndevices = {\n    \"Router\": \"192.168.1.1\",\n    \"Printer\": \"192.168.1.100\",\n    \"NAS\": \"192.168.1.50\"\n}\n\ndef is_reachable(ip):\n    return os.system(f\"ping -c 1 -W 2 {ip} &gt; \/dev\/null 2&gt;&amp;1\") == 0\n\nwhile True:\n    for name, ip in devices.items():\n        if not is_reachable(ip):\n            print(f\"\u26a0\ufe0f {name} ({ip}) is offline!\")\n            # Add optional alert here\n        else:\n            print(f\"\u2705 {name} is reachable.\")\n    time.sleep(300)  # Wait 5 minutes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes dar seguimiento a todos los dispositivos, y si alguno se desconecta, recibir una notificaci\u00f3n mediante <strong>Pushbullet<\/strong> o envi\u00e1ndote un correo electr\u00f3nico, tal como se muestra en las secciones anteriores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, un ejemplo de funci\u00f3n que env\u00eda una notificaci\u00f3n a trav\u00e9s de Pushbullet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\n\ndef send_alert(device_name, ip):\n    token = \"your_pushbullet_token\"\n    msg = f\"{device_name} ({ip}) is offline!\"\n    requests.post(\n        \"https:\/\/api.pushbullet.com\/v2\/pushes\",\n        headers={\"Access-Token\": token},\n        json={\"type\": \"note\", \"title\": \"Device Alert\", \"body\": msg}\n    )<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Usando este script, puedes monitorizar el estado de todos tus dispositivos inteligentes en casa mientras est\u00e1s de vacaciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero, \u00bfc\u00f3mo te asegurar\u00e1s de que tu propia Raspberry Pi sigue encendida?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto tambi\u00e9n se puede hacer usando una notificaci\u00f3n de \u00ablatido\u00bb (<em>heartbeat<\/em>); puedes modificar el mismo script de Python para generar notificaciones peri\u00f3dicas de este tipo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import time\nimport requests\n\ndef send_heartbeat():\n    token = \"your_pushbullet_token\"\n    message = {\n        \"type\": \"note\",\n        \"title\": \"Raspberry Pi Heartbeat\",\n        \"body\": \"I'm still online. Time: \" + time.strftime(\"%Y-%m-%d %H:%M:%S\")\n    }\n    requests.post(\"https:\/\/api.pushbullet.com\/v2\/pushes\", headers={\n        \"Access-Token\": token\n    }, json=message)\n\nwhile True:\n    send_heartbeat()\n    print(\"\u2705 Heartbeat sent.\")\n    time.sleep(3600)  # Every hour<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes combinar estos scripts de Python para detectar el estado de todos los dispositivos inteligentes conectados en tu casa y de la propia Raspberry Pi. De esta forma, puedes estar tranquilo sabiendo que todo funciona correctamente cuando est\u00e1s fuera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n puedes a\u00f1adir <a href=\"https:\/\/raspberrytips.com\/monitor-internet-speed-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/monitor-internet-speed-raspberry-pi\/\">monitorizaci\u00f3n de la velocidad de red<\/a> (en ingl\u00e9s) para detectar la conectividad general de tu red dom\u00e9stica con internet y avisarte si la velocidad de conexi\u00f3n cae por debajo de un umbral determinado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para una administraci\u00f3n de sistemas m\u00e1s avanzada de servidores conectados a trav\u00e9s de tu Raspberry Pi, considera usar <a href=\"https:\/\/raspberrytips.com\/nagios-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/nagios-raspberry-pi\/\">Nagios<\/a> (en ingl\u00e9s).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Controlador de luces para dispositivos Philips Hue o Tasmota<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La Raspberry Pi se puede usar para varios <a href=\"https:\/\/raspberrytips.com\/easy-home-automation-projects\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/easy-home-automation-projects\/\">proyectos de dom\u00f3tica<\/a> (en ingl\u00e9s). Aunque existen numerosas <a href=\"https:\/\/raspberrytips.com\/top-tools-for-raspberry-pi-smart-home\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/top-tools-for-raspberry-pi-smart-home\/\">herramientas de dom\u00f3tica<\/a> (en ingl\u00e9s) disponibles, algunos scripts sencillos de Python tambi\u00e9n se pueden usar para automatizar las luces de tu hogar inteligente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/lightController-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38979\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Un script de Python puede <a href=\"https:\/\/raspberrytips.com\/control-lights-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/control-lights-raspberry-pi\/\">controlar bombillas como las Philips Hue o las bombillas con firmware Tasmota<\/a> <\/strong>(en ingl\u00e9s)<strong>. Estas luces se pueden encender o apagar en franjas horarias espec\u00edficas o cuando se detecta movimiento.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Necesitar\u00e1s instalar la biblioteca <strong>phue<\/strong> para habilitar esta funcionalidad en Python. Puedes hacerlo usando el comando:<br><code>pip install phue<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/installPhue-1024x140.jpg\" alt=\"\" class=\"wp-image-38804\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Debes conocer la IP de tu Hue Bridge para conectarte. Adem\u00e1s, la primera vez que ejecutes el script, deber\u00e1s pulsar el bot\u00f3n de enlace del puente para autorizar tu Pi. Puedes iniciar una conexi\u00f3n con el siguiente c\u00f3digo Python:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from phue import Bridge\n\nbridge_ip = '192.168.1.100'  # Replace with your bridge IP\nb = Bridge(bridge_ip)\nb.connect()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez conectado, puedes usar esta biblioteca para controlar las luces:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from datetime import datetime\n\n# Turn on a specific light by name\ndef turn_on_lights():\n    b.set_light('Living Room Lamp', 'on', True)\n\n# Turn off all lights at midnight\nif datetime.now().hour == 0:\n    b.set_light('Living Room Lamp', 'on', False)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s de encenderlas o apagarlas, puedes controlar el brillo, los colores y las escenas usando esta biblioteca.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si en lugar de luces Philips Hue est\u00e1s usando enchufes o bombillas inteligentes con Tasmota, tambi\u00e9n puedes controlarlos mediante solicitudes HTTP. Por ejemplo, el siguiente c\u00f3digo se puede usar para encender y apagar un dispositivo con Tasmota:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nfrom datetime import datetime\n\n# Replace with your Tasmota device IP\ndevice_ip = \"192.168.1.150\"\n\ndef turn_light_on():\n    requests.get(f\"http:\/\/{device_ip}\/cm?cmnd=Power%20On\")\n\ndef turn_light_off():\n    requests.get(f\"http:\/\/{device_ip}\/cm?cmnd=Power%20Off\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para lograr una automatizaci\u00f3n a\u00fan mayor, combina estos controles con una simple comprobaci\u00f3n de fecha y hora o con el script de detecci\u00f3n de movimiento que vimos antes. Tambi\u00e9n puedes automatizar estos scripts mediante tareas de cron.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes combinar estos scripts con <a href=\"https:\/\/raspberrytips.com\/mqtt-broker-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/mqtt-broker-raspberry-pi\/\">MQTT<\/a> (en ingl\u00e9s) para habilitar funciones de control remoto para tus dispositivos inteligentes en casa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque las herramientas de dom\u00f3tica preconstruidas son excelentes y ofrecen multitud de funciones, desarrollar tu propio script de Python permite una personalizaci\u00f3n mucho mayor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monitor de disponibilidad de sitios web<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si alojas tu propia web, blog o servidor dom\u00e9stico, es bueno saber cu\u00e1ndo se cae, especialmente si ocurre cuando no est\u00e1s pendiente. Actualizar el navegador manualmente no es una soluci\u00f3n fiable.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/websiteUpTimeMonitorjpg-1-1024x683.jpg\" alt=\"\" class=\"wp-image-38980\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Un script de Python puede comprobar regularmente el estado de tu sitio y avisarte si devuelve un c\u00f3digo de error o se vuelve demasiado lento para responder.<\/strong> Crear tu propio sistema de monitorizaci\u00f3n de disponibilidad usando la librer\u00eda <strong>requests<\/strong> solo requiere unas pocas l\u00edneas de c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes instalar la biblioteca requests usando el comando:<br><code>pip install requests<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/raspberrytips.com\/wp-content\/uploads\/2025\/04\/installRequests-1024x373.jpg\" alt=\"\" class=\"wp-image-38807\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Una vez instalada esta biblioteca, se puede usar para desarrollar un script b\u00e1sico de comprobaci\u00f3n de disponibilidad, como se muestra a continuaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nimport time\n\nURL = \"https:\/\/yourwebsite.com\"\nCHECK_INTERVAL = 300  # 5 minutes\n\ndef check_website():\n    try:\n        response = requests.get(URL, timeout=5)\n        if response.status_code != 200:\n            print(f\"\u26a0\ufe0f Website returned status code {response.status_code}\")\n        else:\n            print(f\"\u2705 Website is online. ({response.status_code})\")\n    except requests.exceptions.RequestException as e:\n        print(f\"\ud83d\udea8 Website check failed: {e}\")\n\nwhile True:\n    check_website()\n    time.sleep(CHECK_INTERVAL)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s puedes <a href=\"https:\/\/raspberrytips.com\/send-notifications-from-raspberry-pi\/\" data-type=\"link\" data-id=\"https:\/\/raspberrytips.com\/send-notifications-from-raspberry-pi\/\">enviarte notificaciones mediante Pushbullet o correo electr\u00f3nico<\/a> (en ingl\u00e9s) para que te avisen si la web est\u00e1 ca\u00edda o si devuelve un error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\n\ndef send_alert(message):\n    token = \"your_pushbullet_token\"\n    requests.post(\n        \"https:\/\/api.pushbullet.com\/v2\/pushes\",\n        headers={\"Access-Token\": token},\n        json={\"type\": \"note\", \"title\": \"Website Down\", \"body\": message}\n    )<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes usar esta funci\u00f3n dentro de tu funci\u00f3n de comprobaci\u00f3n de la siguiente manera:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if response.status_code != 200:\n    send_alert(f\"Website returned {response.status_code}\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes mejorarlo a\u00fan m\u00e1s para avisarte si el tiempo de carga de tu web es lento. Los tiempos de carga lentos tambi\u00e9n pueden indicar un problema subyacente que necesita solucionarse.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>response = requests.get(URL, timeout=10)\nload_time = response.elapsed.total_seconds()\n\nif load_time &gt; 1.5:\n    send_alert(f\"\u23f1\ufe0f Website is slow: {load_time:.2f}s\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes combinar este script con tu comprobador de accesibilidad de dispositivos y tu registro de uso de recursos para crear un script todo en uno que te mantenga informado sobre todos tus dispositivos inteligentes, tu web\/blog y la salud de la propia Raspberry Pi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si eres como yo, tu Raspberry Pi siempre est\u00e1 ejecutando algo: puede ser una copia de seguridad, un monitor de red o un simple script. Pero hacer las mismas tareas todos los d\u00edas se vuelve aburrido r\u00e1pidamente. Ah\u00ed es donde Python ayuda. Con unos pocos scripts sencillos, tu Pi puede encargarse autom\u00e1ticamente de las tareas&#8230;<\/p>\n","protected":false},"author":2,"featured_media":5841,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[3],"tags":[],"class_list":["post-5842","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to"],"taxonomy_info":{"category":[{"value":3,"label":"Tutoriales pr\u00e1cticos"}]},"featured_image_src_large":["https:\/\/raspberrytips.es\/wp-content\/uploads\/2026\/08\/pythonscripts-4-1024x683.jpg",1024,683,true],"author_info":{"display_name":"Patrick FROMAGET","author_link":"https:\/\/raspberrytips.es\/author\/p-fromaget\/"},"comment_info":0,"category_info":[{"term_id":3,"name":"Tutoriales pr\u00e1cticos","slug":"how-to","term_group":0,"term_taxonomy_id":3,"taxonomy":"category","description":"","parent":0,"count":89,"filter":"raw","cat_ID":3,"category_count":89,"category_description":"","cat_name":"Tutoriales pr\u00e1cticos","category_nicename":"how-to","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/posts\/5842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/comments?post=5842"}],"version-history":[{"count":5,"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/posts\/5842\/revisions"}],"predecessor-version":[{"id":5849,"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/posts\/5842\/revisions\/5849"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/media\/5841"}],"wp:attachment":[{"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/media?parent=5842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/categories?post=5842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/raspberrytips.es\/wp-json\/wp\/v2\/tags?post=5842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}