diff --git a/CHANGELOG_INFRA.md b/CHANGELOG_INFRA.md index 525cdf0..947eb4a 100644 --- a/CHANGELOG_INFRA.md +++ b/CHANGELOG_INFRA.md @@ -5,13 +5,10 @@ ## Pendientes de replicar -- **2026-09-30-fix-telegram-watcher-telethon-1-44-encoding-utf-8** [watchers] Fix telegram_watcher (telethon 1.44 + encoding UTF-8) (aplicado en: portatil) -- **2026-10-02-superguardado-py-protocolo-guardado-total-automatico-portati** [scripts] superguardado.py: protocolo guardado total automatico portatil+sobremesa (aplicado en: portatil) - **2026-10-03-superwhisper-enter-ahk-f13-boton-auxiliar-logitech-tarea-pro** [scripts] SuperWhisper Enter: AHK F13 boton auxiliar Logitech + tarea programada (aplicado en: portatil) -- **2026-10-03-monitor-de-estado-telegram-correo-jira-en-segundo-plano** [servicios] Monitor de estado (Telegram + correo + Jira) en segundo plano (aplicado en: portatil) -- **2026-10-03-acceso-remoto-al-sobremesa-openssh-server-tailscale-ssh-powe** [servicios] Acceso remoto al sobremesa: OpenSSH Server + Tailscale (ssh -> PowerShell) (aplicado en: portatil) -- **2026-10-03-voicemonkey-sustituido-por-home-assistant-alexa** [servicios] VoiceMonkey sustituido por Home Assistant (Alexa) (aplicado en: portatil) -- **2026-10-03-omniroute-3-8-48-3-8-51-fix-catalogo-live-antigravity** [omniroute] OmniRoute 3.8.48 -> 3.8.51: fix catalogo live antigravity (aplicado en: portatil) +- **2026-10-03-perfil-juanjo-instaladas-dependencias-python-21-paquetes-en-** [scripts] Perfil juanjo: instaladas dependencias Python (21 paquetes) en C:\Python314 (aplicado en: sobremesa) +- **2026-10-03-sobremesa-juanjo-instaladas-17-apps-de-usuario-que-estaban-e** [scripts] Sobremesa juanjo: instaladas 17 apps de usuario que estaban en juanm (aplicado en: sobremesa) +- **2026-10-03-migracion-cuenta-juanjo-rutas-juanm-dinamicas-os-path-expand** [scripts] Migracion cuenta juanjo: rutas juanm -> dinamicas (os.path.expanduser / \C:\Users\juanjo / USERPROFILE) (aplicado en: sobremesa) ## Historial @@ -28,7 +25,7 @@ - **Equipo**: portatil - **Categoria**: servicios - **Transferible**: si -- **Aplicado en**: portatil +- **Aplicado en**: portatil, sobremesa - **Detalle**: Proceso Python (scripts/monitor_estado.py) que cada 30 min recoge Telegram (5 fuentes), correo jminguez@prolongo.es y Jira DS (nuevos + sin asignar), archiva por fuente, resume con IA (OmniRoute) y avisa por voz local. Arranque por tarea programada 'Monitor Estado' + plugin global monitor-estado-bootstrap.ts; watchdog idempotente; sesion Telegram dedicada (sessions/monitor, login por QR); tests pytest en tests/. Requiere en el otro equipo: pip install pytest qrcode, login Telegram QR y re-ejecutar instalar_global.ps1. ### 2026-10-03 · Acceso remoto al sobremesa: OpenSSH Server + Tailscale (ssh -> PowerShell) @@ -36,7 +33,7 @@ - **Equipo**: portatil - **Categoria**: servicios - **Transferible**: si -- **Aplicado en**: portatil +- **Aplicado en**: portatil, sobremesa - **Detalle**: Scripts en scripts/acceso_remoto/: setup_tailscale.ps1 (malla privada) y setup_ssh_server.ps1 (OpenSSH Server, shell PowerShell, firewall solo Tailscale+LAN, instala clave publica). Clave SSH del portatil: ~/.ssh/id_ed25519. Doc: docs/ACCESO_REMOTO_SOBREMESA.md. Permite ssh juanm@sobremesa desde cualquier red sin abrir puertos. Requiere en cada equipo: ejecutar setup_tailscale; en el sobremesa ademas setup_ssh_server (admin). ### 2026-10-03 · VoiceMonkey sustituido por Home Assistant (Alexa) @@ -44,7 +41,7 @@ - **Equipo**: portatil - **Categoria**: servicios - **Transferible**: si -- **Aplicado en**: portatil +- **Aplicado en**: portatil, sobremesa - **Detalle**: Validado con efecto real (anuncio por voz + comando 'apaga/enciende barras'). Nuevo helper biblioteca/scripts/ha_alexa.py (announce/command via HA REST). Migrados: netatmo_tool.notificar_alexa, telegram_read_tracker.notificar_alexa, protocolo_apagado.py y protocolo_apagado_test.py (apagar_luces_alexa). .env: +HOMEASSISTANT_URL/TOKEN (long-lived), -VOICEMONKEY_TOKEN/DEVICE. Obsoletos: alexa_notify.js, configurar_voicemonkey.py. Requiere en el otro equipo: git pull + tener HOMEASSISTANT_TOKEN en .env. ### 2026-10-03 · OmniRoute 3.8.48 -> 3.8.51: fix catalogo live antigravity @@ -52,7 +49,7 @@ - **Equipo**: portatil - **Categoria**: omniroute - **Transferible**: si -- **Aplicado en**: portatil +- **Aplicado en**: portatil, sobremesa - **Detalle**: Actualizado omniroute a 3.8.51 (npm i -g omniroute@latest). Ahora valida contra el 'active live catalog' de Antigravity: los modelos deprecados (gemini-3.5-flash-*, gemini-2.5-*, claude-* en antigravity) devuelven HTTP 400 en vez de texto de deprecacion. Funcionan: gemini-3.1-pro-low/high, gemini-3.1-flash-lite, gemini-pro-agent, gpt-oss-120b-medium. Servidor relanzado via omniroute_watchdog.ps1 -Once. ### 2026-10-03 · Fix ACL setup_ssh_server.ps1 (SIDs, no nombres en ingles) @@ -63,12 +60,36 @@ - **Aplicado en**: sobremesa - **Detalle**: icacls fallaba en Windows es-ES al usar BUILTIN\Administrators; ahora usa *S-1-5-18 y *S-1-5-32-544. Aplicado y verificado en sobremesa (sshd Automatic/Running, key portatil autorizada). +### 2026-10-03 · Perfil juanjo: instaladas dependencias Python (21 paquetes) en C:\Python314 +- **id**: `2026-10-03-perfil-juanjo-instaladas-dependencias-python-21-paquetes-en-` +- **Equipo**: sobremesa +- **Categoria**: scripts +- **Transferible**: si +- **Aplicado en**: sobremesa +- **Detalle**: Tras migrar a la cuenta juanjo, Python solo tenia pip. Instalados: pycryptodome PyP100 caldav python-dotenv edge-tts feedparser flask ftfy google-auth-oauthlib google-api-python-client openpyxl psutil qrcode requests telethon todoist-api-python urllib3 wakeonlan watchdog win10toast + setuptools<81 + pywin32. Necesario para watchers/tablero/Jira. + +### 2026-10-03 · Sobremesa juanjo: instaladas 17 apps de usuario que estaban en juanm +- **id**: `2026-10-03-sobremesa-juanjo-instaladas-17-apps-de-usuario-que-estaban-e` +- **Equipo**: sobremesa +- **Categoria**: scripts +- **Transferible**: si +- **Aplicado en**: sobremesa +- **Detalle**: VS Code, GitHub Desktop, Postman, HeidiSQL, Inno Setup, FFmpeg, Rclone, WinDbg(pend), Obsidian, Ollama, Antigravity IDE, Claude, Discord, Telegram Desktop, Stremio, superwhisper, Greenshot. Via winget (ids del inventario docs/formateo/01-INVENTARIO_PROGRAMAS.md). Requiere winget elevado. + +### 2026-10-03 · Migracion cuenta juanjo: rutas juanm -> dinamicas (os.path.expanduser / \C:\Users\juanjo / USERPROFILE) +- **id**: `2026-10-03-migracion-cuenta-juanjo-rutas-juanm-dinamicas-os-path-expand` +- **Equipo**: sobremesa +- **Categoria**: scripts +- **Transferible**: si +- **Aplicado en**: sobremesa +- **Detalle**: 50 ficheros .py + 8 .ps1 + 2 .ts: rutas C:\Users\juanm -> dinamicas para que funcionen en juanm (portatil) y juanjo (sobremesa). Incluye .env de INFRA scripts, gestion_jira, gestion_jira, contabo key, plugins opencode. Tambien: clave SSH contabo copiada, OmniRoute 3.8.51, UFW 5001 solo IP sobremesa, Google OAuth reautorizado. + ### 2026-10-02 · superguardado.py: protocolo guardado total automatico portatil+sobremesa - **id**: `2026-10-02-superguardado-py-protocolo-guardado-total-automatico-portati` - **Equipo**: portatil - **Categoria**: scripts - **Transferible**: si -- **Aplicado en**: portatil +- **Aplicado en**: portatil, sobremesa - **Detalle**: Script scripts/superguardado.py en biblioteca_negocio_prolongo. 7 pasos: ESTADO_DIARIO + git biblioteca + engram cloud + sync_continuo + obsidian + git INFRAESTRUCTURA + aviso sonoro. Palabra clave: superguardado/guarda/memoria. Descripcion auto si no se indica. ### 2026-09-30 · Fix telegram_watcher (telethon 1.44 + encoding UTF-8) @@ -76,7 +97,7 @@ - **Equipo**: portatil - **Categoria**: watchers - **Transferible**: si -- **Aplicado en**: portatil +- **Aplicado en**: portatil, sobremesa - **Detalle**: MessageRead(outbox=True) rompe en telethon 1.44 (kwarg eliminado) -> usar MessageRead(). Anadido reconfigure UTF-8 en stdout/stderr para evitar UnicodeEncodeError cp1252 al lanzar desde tarea programada sin PYTHONUTF8. ### 2026-09-29 · Migración de watchers al VPS diff --git a/changelog_infra.json b/changelog_infra.json index 8dd3901..4ad69d1 100644 --- a/changelog_infra.json +++ b/changelog_infra.json @@ -198,7 +198,8 @@ "titulo": "Fix telegram_watcher (telethon 1.44 + encoding UTF-8)", "transferible": true, "aplicado_en": [ - "portatil" + "portatil", + "sobremesa" ], "detalle": "MessageRead(outbox=True) rompe en telethon 1.44 (kwarg eliminado) -> usar MessageRead(). Anadido reconfigure UTF-8 en stdout/stderr para evitar UnicodeEncodeError cp1252 al lanzar desde tarea programada sin PYTHONUTF8." }, @@ -210,7 +211,8 @@ "titulo": "superguardado.py: protocolo guardado total automatico portatil+sobremesa", "transferible": true, "aplicado_en": [ - "portatil" + "portatil", + "sobremesa" ], "detalle": "Script scripts/superguardado.py en biblioteca_negocio_prolongo. 7 pasos: ESTADO_DIARIO + git biblioteca + engram cloud + sync_continuo + obsidian + git INFRAESTRUCTURA + aviso sonoro. Palabra clave: superguardado/guarda/memoria. Descripcion auto si no se indica." }, @@ -234,7 +236,8 @@ "titulo": "Monitor de estado (Telegram + correo + Jira) en segundo plano", "transferible": true, "aplicado_en": [ - "portatil" + "portatil", + "sobremesa" ], "detalle": "Proceso Python (scripts/monitor_estado.py) que cada 30 min recoge Telegram (5 fuentes), correo jminguez@prolongo.es y Jira DS (nuevos + sin asignar), archiva por fuente, resume con IA (OmniRoute) y avisa por voz local. Arranque por tarea programada 'Monitor Estado' + plugin global monitor-estado-bootstrap.ts; watchdog idempotente; sesion Telegram dedicada (sessions/monitor, login por QR); tests pytest en tests/. Requiere en el otro equipo: pip install pytest qrcode, login Telegram QR y re-ejecutar instalar_global.ps1." }, @@ -246,7 +249,8 @@ "titulo": "Acceso remoto al sobremesa: OpenSSH Server + Tailscale (ssh -> PowerShell)", "transferible": true, "aplicado_en": [ - "portatil" + "portatil", + "sobremesa" ], "detalle": "Scripts en scripts/acceso_remoto/: setup_tailscale.ps1 (malla privada) y setup_ssh_server.ps1 (OpenSSH Server, shell PowerShell, firewall solo Tailscale+LAN, instala clave publica). Clave SSH del portatil: ~/.ssh/id_ed25519. Doc: docs/ACCESO_REMOTO_SOBREMESA.md. Permite ssh juanm@sobremesa desde cualquier red sin abrir puertos. Requiere en cada equipo: ejecutar setup_tailscale; en el sobremesa ademas setup_ssh_server (admin)." }, @@ -258,7 +262,8 @@ "titulo": "VoiceMonkey sustituido por Home Assistant (Alexa)", "transferible": true, "aplicado_en": [ - "portatil" + "portatil", + "sobremesa" ], "detalle": "Validado con efecto real (anuncio por voz + comando 'apaga/enciende barras'). Nuevo helper biblioteca/scripts/ha_alexa.py (announce/command via HA REST). Migrados: netatmo_tool.notificar_alexa, telegram_read_tracker.notificar_alexa, protocolo_apagado.py y protocolo_apagado_test.py (apagar_luces_alexa). .env: +HOMEASSISTANT_URL/TOKEN (long-lived), -VOICEMONKEY_TOKEN/DEVICE. Obsoletos: alexa_notify.js, configurar_voicemonkey.py. Requiere en el otro equipo: git pull + tener HOMEASSISTANT_TOKEN en .env." }, @@ -270,7 +275,8 @@ "titulo": "OmniRoute 3.8.48 -> 3.8.51: fix catalogo live antigravity", "transferible": true, "aplicado_en": [ - "portatil" + "portatil", + "sobremesa" ], "detalle": "Actualizado omniroute a 3.8.51 (npm i -g omniroute@latest). Ahora valida contra el 'active live catalog' de Antigravity: los modelos deprecados (gemini-3.5-flash-*, gemini-2.5-*, claude-* en antigravity) devuelven HTTP 400 en vez de texto de deprecacion. Funcionan: gemini-3.1-pro-low/high, gemini-3.1-flash-lite, gemini-pro-agent, gpt-oss-120b-medium. Servidor relanzado via omniroute_watchdog.ps1 -Once." }, @@ -285,6 +291,42 @@ "sobremesa" ], "detalle": "icacls fallaba en Windows es-ES al usar BUILTIN\\Administrators; ahora usa *S-1-5-18 y *S-1-5-32-544. Aplicado y verificado en sobremesa (sshd Automatic/Running, key portatil autorizada)." + }, + { + "id": "2026-10-03-perfil-juanjo-instaladas-dependencias-python-21-paquetes-en-", + "fecha": "2026-10-03", + "equipo": "sobremesa", + "categoria": "scripts", + "titulo": "Perfil juanjo: instaladas dependencias Python (21 paquetes) en C:\\Python314", + "transferible": true, + "aplicado_en": [ + "sobremesa" + ], + "detalle": "Tras migrar a la cuenta juanjo, Python solo tenia pip. Instalados: pycryptodome PyP100 caldav python-dotenv edge-tts feedparser flask ftfy google-auth-oauthlib google-api-python-client openpyxl psutil qrcode requests telethon todoist-api-python urllib3 wakeonlan watchdog win10toast + setuptools<81 + pywin32. Necesario para watchers/tablero/Jira." + }, + { + "id": "2026-10-03-sobremesa-juanjo-instaladas-17-apps-de-usuario-que-estaban-e", + "fecha": "2026-10-03", + "equipo": "sobremesa", + "categoria": "scripts", + "titulo": "Sobremesa juanjo: instaladas 17 apps de usuario que estaban en juanm", + "transferible": true, + "aplicado_en": [ + "sobremesa" + ], + "detalle": "VS Code, GitHub Desktop, Postman, HeidiSQL, Inno Setup, FFmpeg, Rclone, WinDbg(pend), Obsidian, Ollama, Antigravity IDE, Claude, Discord, Telegram Desktop, Stremio, superwhisper, Greenshot. Via winget (ids del inventario docs/formateo/01-INVENTARIO_PROGRAMAS.md). Requiere winget elevado." + }, + { + "id": "2026-10-03-migracion-cuenta-juanjo-rutas-juanm-dinamicas-os-path-expand", + "fecha": "2026-10-03", + "equipo": "sobremesa", + "categoria": "scripts", + "titulo": "Migracion cuenta juanjo: rutas juanm -> dinamicas (os.path.expanduser / \\C:\\Users\\juanjo / USERPROFILE)", + "transferible": true, + "aplicado_en": [ + "sobremesa" + ], + "detalle": "50 ficheros .py + 8 .ps1 + 2 .ts: rutas C:\\Users\\juanm -> dinamicas para que funcionen en juanm (portatil) y juanjo (sobremesa). Incluye .env de INFRA scripts, gestion_jira, gestion_jira, contabo key, plugins opencode. Tambien: clave SSH contabo copiada, OmniRoute 3.8.51, UFW 5001 solo IP sobremesa, Google OAuth reautorizado." } ] } diff --git a/opencode/monitor-estado-bootstrap.ts b/opencode/monitor-estado-bootstrap.ts index 63507c6..b105e11 100644 --- a/opencode/monitor-estado-bootstrap.ts +++ b/opencode/monitor-estado-bootstrap.ts @@ -23,7 +23,7 @@ import { existsSync } from "node:fs" // Vigilante canonico (repo INFRAESTRUCTURA). Se puede sobreescribir con MONITOR_ESTADO_WATCHDOG. const WATCHDOG = process.env.MONITOR_ESTADO_WATCHDOG ?? - "C:\\Users\\juanm\\Documents\\Github\\INFRAESTRUCTURA\\scripts\\monitor_estado_watchdog.ps1" + `${process.env.USERPROFILE}\\Documents\\Github\\INFRAESTRUCTURA\\scripts\\monitor_estado_watchdog.ps1` const POWERSHELL = process.env.SystemRoot diff --git a/opencode/omniroute-bootstrap.ts b/opencode/omniroute-bootstrap.ts index 0320da1..b57151f 100644 --- a/opencode/omniroute-bootstrap.ts +++ b/opencode/omniroute-bootstrap.ts @@ -23,7 +23,7 @@ import { existsSync } from "node:fs" // Vigilante canonico (repo INFRAESTRUCTURA). Se puede sobreescribir con OMNIROUTE_WATCHDOG. const WATCHDOG = process.env.OMNIROUTE_WATCHDOG ?? - "C:\\Users\\juanm\\Documents\\Github\\INFRAESTRUCTURA\\omniroute\\omniroute_watchdog.ps1" + `${process.env.USERPROFILE}\\Documents\\Github\\INFRAESTRUCTURA\\omniroute\\omniroute_watchdog.ps1` const POWERSHELL = process.env.SystemRoot diff --git a/scripts/bootstrap_autologon_juanjo.ps1 b/scripts/bootstrap_autologon_juanjo.ps1 index daf2f4a..58c8d68 100644 --- a/scripts/bootstrap_autologon_juanjo.ps1 +++ b/scripts/bootstrap_autologon_juanjo.ps1 @@ -9,12 +9,12 @@ Start-Transcript -Path $log -Force | Out-Null Write-Output "=== BOOTSTRAP AUTOLOGON $(Get-Date -Format s) ===" Write-Output "Usuario: $env:USERDOMAIN\$env:USERNAME" -$infra = 'C:\Users\juanm\Documents\Github\INFRAESTRUCTURA' -$bib = 'C:\Users\juanm\Documents\Github\biblioteca_negocio_prolongo' +$infra = Join-Path $env:USERPROFILE 'Documents\Github\INFRAESTRUCTURA' +$bib = Join-Path $env:USERPROFILE 'Documents\Github\biblioteca_negocio_prolongo' $pwsh = Join-Path $env:SystemRoot 'System32\WindowsPowerShell\v1.0\powershell.exe' # 1) Git: identidad + safe.directory (los repos son de otro usuario) + helper -git config --global user.name "juanminsanz" +git config --global user.name "Juanjo Minguez" git config --global user.email "desarrollo@faccsa.es" git config --global --add safe.directory '*' git config --global credential.helper manager diff --git a/scripts/check_ha_config.py b/scripts/check_ha_config.py index 8efc471..b25c849 100644 --- a/scripts/check_ha_config.py +++ b/scripts/check_ha_config.py @@ -2,7 +2,7 @@ import requests import os from dotenv import load_dotenv -load_dotenv(r'C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env') +load_dotenv(os.path.expanduser('~/Documents/GitHub/biblioteca_negocio_prolongo/.env')) url = os.getenv('HOMEASSISTANT_URL') token = os.getenv('HOMEASSISTANT_TOKEN') diff --git a/scripts/configurar_voicemonkey.py b/scripts/configurar_voicemonkey.py index 1e79990..d5e1e21 100644 --- a/scripts/configurar_voicemonkey.py +++ b/scripts/configurar_voicemonkey.py @@ -15,7 +15,7 @@ if sys.platform == 'win32': sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict') # Cargar .env -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) def main(): diff --git a/scripts/monitor_homeassistant.py b/scripts/monitor_homeassistant.py index 8626b7c..6b5d41d 100644 --- a/scripts/monitor_homeassistant.py +++ b/scripts/monitor_homeassistant.py @@ -20,7 +20,7 @@ def check_homeassistant(): """Verifica si Home Assistant esta corriendo en el VPS""" try: result = subprocess.run( - ["ssh", "-i", r"C:\Users\juanm\Documents\GitHub\contabo", + ["ssh", "-i", os.path.expanduser("~/Documents/GitHub/contabo"), "root@185.187.169.109", "docker ps | grep homeassistant | grep -q Up && echo OK || echo NOK"], capture_output=True, @@ -49,7 +49,7 @@ Add-Type -AssemblyName System.Windows.Forms try: subprocess.run([ "python", - r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\scripts\aviso_sonoro.py", + os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/scripts/aviso_sonoro.py"), "ok" ]) except Exception: diff --git a/scripts/protocolo_apagado.py b/scripts/protocolo_apagado.py index 7635173..6472505 100644 --- a/scripts/protocolo_apagado.py +++ b/scripts/protocolo_apagado.py @@ -6,7 +6,7 @@ import urllib.request from dotenv import load_dotenv # Cargar variables de entorno locales (.env de biblioteca_negocio_prolongo) -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) # Permitir importar modulos del repo de negocio (ha_alexa). diff --git a/scripts/protocolo_apagado_final.py b/scripts/protocolo_apagado_final.py index 766291b..1bbe820 100644 --- a/scripts/protocolo_apagado_final.py +++ b/scripts/protocolo_apagado_final.py @@ -23,7 +23,7 @@ if sys.platform == 'win32': sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict') # Cargar variables de entorno locales (.env de biblioteca_negocio_prolongo) -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) def cerrar_ventanas(): @@ -101,7 +101,7 @@ p100.turnOff()""" # Comando SSH en dos saltos: local -> VPS -> RPi cmd = [ - "ssh", "-i", r"C:\Users\juanm\Documents\GitHub\contabo", + "ssh", "-i", os.path.expanduser("~/Documents/GitHub/contabo"), "root@185.187.169.109", f"ssh -i /root/.ssh/pi_deploy -p 2222 -o StrictHostKeyChecking=no pi@127.0.0.1 'python3 -c \"{tapo_script}\"'" ] diff --git a/scripts/protocolo_apagado_final_test.py b/scripts/protocolo_apagado_final_test.py index 8a62d00..0d4d8b7 100644 --- a/scripts/protocolo_apagado_final_test.py +++ b/scripts/protocolo_apagado_final_test.py @@ -23,7 +23,7 @@ if sys.platform == 'win32': sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict') # Cargar variables de entorno locales (.env de biblioteca_negocio_prolongo) -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) def cerrar_ventanas(): @@ -101,14 +101,14 @@ p100.turnOff()""" # Paso 1: Crear script en VPS cmd1 = [ - "ssh", "-i", r"C:\Users\juanm\Documents\GitHub\contabo", + "ssh", "-i", os.path.expanduser("~/Documents/GitHub/contabo"), "root@185.187.169.109", f"echo '{script_content}' > /tmp/tapo_off.py" ] # Paso 2: Copiar a RPi y ejecutar cmd2 = [ - "ssh", "-i", r"C:\Users\juanm\Documents\GitHub\contabo", + "ssh", "-i", os.path.expanduser("~/Documents/GitHub/contabo"), "root@185.187.169.109", "scp -i /root/.ssh/pi_deploy -P 2222 -o StrictHostKeyChecking=no /tmp/tapo_off.py pi@127.0.0.1:/tmp/ && ssh -i /root/.ssh/pi_deploy -p 2222 -o StrictHostKeyChecking=no pi@127.0.0.1 'python3 /tmp/tapo_off.py'" ] diff --git a/scripts/protocolo_apagado_homeassistant.py b/scripts/protocolo_apagado_homeassistant.py index 446a9dd..4487454 100644 --- a/scripts/protocolo_apagado_homeassistant.py +++ b/scripts/protocolo_apagado_homeassistant.py @@ -23,7 +23,7 @@ if sys.platform == 'win32': sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict') # Cargar variables de entorno locales (.env de biblioteca_negocio_prolongo) -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) def cerrar_ventanas(): @@ -90,7 +90,7 @@ p100.turnOff()""" # Comando SSH en dos saltos: local -> VPS -> RPi cmd = [ - "ssh", "-i", r"C:\Users\juanm\Documents\GitHub\contabo", + "ssh", "-i", os.path.expanduser("~/Documents/GitHub/contabo"), "root@185.187.169.109", f"ssh -i /root/.ssh/pi_deploy -p 2222 -o StrictHostKeyChecking=no pi@127.0.0.1 'python3 -c \"{tapo_script}\"'" ] diff --git a/scripts/protocolo_apagado_test.py b/scripts/protocolo_apagado_test.py index cfc2f98..54055bd 100644 --- a/scripts/protocolo_apagado_test.py +++ b/scripts/protocolo_apagado_test.py @@ -24,7 +24,7 @@ if sys.platform == 'win32': sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict') # Cargar variables de entorno locales (.env de biblioteca_negocio_prolongo) -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) # Permitir importar modulos del repo de negocio (ha_alexa). @@ -78,7 +78,7 @@ p100.turnOff()""" # Comando SSH en dos saltos: local -> VPS -> RPi cmd = [ - "ssh", "-i", r"C:\Users\juanm\Documents\GitHub\contabo", + "ssh", "-i", os.path.expanduser("~/Documents/GitHub/contabo"), "root@185.187.169.109", f"ssh -i /root/.ssh/pi_deploy -p 2222 -o StrictHostKeyChecking=no pi@127.0.0.1 'python3 -c \"{tapo_script}\"'" ] diff --git a/scripts/shutdown_listener.py b/scripts/shutdown_listener.py index 0ec4edd..1535676 100644 --- a/scripts/shutdown_listener.py +++ b/scripts/shutdown_listener.py @@ -12,7 +12,7 @@ from flask import Flask, request, jsonify from dotenv import load_dotenv # Cargar .env -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) app = Flask(__name__) diff --git a/scripts/telegram_bot_pc.py b/scripts/telegram_bot_pc.py index 799d80f..3e92c0a 100644 --- a/scripts/telegram_bot_pc.py +++ b/scripts/telegram_bot_pc.py @@ -20,7 +20,7 @@ from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup from telegram.ext import Application, CommandHandler, CallbackQueryHandler, ContextTypes # Cargar .env -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) # Configuración diff --git a/scripts/test_alexa_voz.py b/scripts/test_alexa_voz.py index bf2a12e..0e85b2d 100644 --- a/scripts/test_alexa_voz.py +++ b/scripts/test_alexa_voz.py @@ -17,7 +17,7 @@ if sys.platform == 'win32': sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict') sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict') -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) def enviar_comando_voz(echo_entity, comando): diff --git a/scripts/test_homeassistant.py b/scripts/test_homeassistant.py index 687b1f9..6ab002c 100644 --- a/scripts/test_homeassistant.py +++ b/scripts/test_homeassistant.py @@ -20,7 +20,7 @@ if sys.platform == 'win32': sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict') # Cargar .env -dotenv_path = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env" +dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) def main():