operx-cli 0.11.0__tar.gz → 0.12.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. {operx_cli-0.11.0/operx_cli.egg-info → operx_cli-0.12.0}/PKG-INFO +33 -3
  2. operx_cli-0.11.0/PKG-INFO → operx_cli-0.12.0/README.md +344 -329
  3. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/AGENTES.md +3 -0
  4. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/__init__.py +1 -1
  5. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/chat.py +13 -2
  6. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/connect.py +55 -1
  7. operx_cli-0.12.0/operx_cli/forwarding/__init__.py +2 -0
  8. operx_cli-0.12.0/operx_cli/forwarding/buffer.py +90 -0
  9. operx_cli-0.12.0/operx_cli/forwarding/read.py +193 -0
  10. operx_cli-0.12.0/operx_cli/forwarding/run.py +64 -0
  11. operx_cli-0.12.0/operx_cli/forwarding/send.py +114 -0
  12. operx_cli-0.12.0/operx_cli/forwarding/sources.py +306 -0
  13. operx_cli-0.11.0/README.md → operx_cli-0.12.0/operx_cli.egg-info/PKG-INFO +359 -315
  14. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli.egg-info/SOURCES.txt +7 -0
  15. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli.egg-info/requires.txt +1 -0
  16. {operx_cli-0.11.0 → operx_cli-0.12.0}/pyproject.toml +3 -1
  17. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_chat.py +21 -0
  18. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_connect.py +2 -2
  19. operx_cli-0.12.0/tests/test_forward.py +544 -0
  20. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/agent_guide.py +0 -0
  21. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/api_fields.py +0 -0
  22. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/app.py +0 -0
  23. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/browser_login.py +0 -0
  24. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/client.py +0 -0
  25. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/__init__.py +0 -0
  26. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/account.py +0 -0
  27. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/ambiental.py +0 -0
  28. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/articulos.py +0 -0
  29. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/avisos.py +0 -0
  30. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/campos.py +0 -0
  31. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/common.py +0 -0
  32. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/completar.py +0 -0
  33. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/empresas.py +0 -0
  34. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/inventario.py +0 -0
  35. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/lecturas.py +0 -0
  36. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/muestreo.py +0 -0
  37. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/ordenes.py +0 -0
  38. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/personas.py +0 -0
  39. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/planta.py +0 -0
  40. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/preventivos.py +0 -0
  41. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/raw.py +0 -0
  42. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/registros.py +0 -0
  43. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/reportes.py +0 -0
  44. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/rutinas.py +0 -0
  45. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/search.py +0 -0
  46. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/sst.py +0 -0
  47. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/commands/update.py +0 -0
  48. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/lookup.py +0 -0
  49. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/output.py +0 -0
  50. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/record_completion.py +0 -0
  51. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/self_update.py +0 -0
  52. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/settings.py +0 -0
  53. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/shell.py +0 -0
  54. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/spreadsheet.py +0 -0
  55. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/updates.py +0 -0
  56. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/values.py +0 -0
  57. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli/welcome.py +0 -0
  58. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli.egg-info/dependency_links.txt +0 -0
  59. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli.egg-info/entry_points.txt +0 -0
  60. {operx_cli-0.11.0 → operx_cli-0.12.0}/operx_cli.egg-info/top_level.txt +0 -0
  61. {operx_cli-0.11.0 → operx_cli-0.12.0}/setup.cfg +0 -0
  62. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_agentes.py +0 -0
  63. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_api_campos.py +0 -0
  64. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_app.py +0 -0
  65. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_articulos.py +0 -0
  66. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_campos.py +0 -0
  67. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_cards.py +0 -0
  68. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_client.py +0 -0
  69. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_completar.py +0 -0
  70. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_daily_flows.py +0 -0
  71. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_inventario_lecturas.py +0 -0
  72. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_json_writes.py +0 -0
  73. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_login.py +0 -0
  74. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_logout_and_routes.py +0 -0
  75. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_lookup.py +0 -0
  76. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_more_of_the_api.py +0 -0
  77. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_muestreo.py +0 -0
  78. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_ordenes.py +0 -0
  79. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_output.py +0 -0
  80. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_personas.py +0 -0
  81. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_preventivos.py +0 -0
  82. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_record_completion.py +0 -0
  83. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_registros.py +0 -0
  84. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_rutinas.py +0 -0
  85. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_self_update.py +0 -0
  86. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_settings.py +0 -0
  87. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_shell.py +0 -0
  88. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_spreadsheet.py +0 -0
  89. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_sst_ambiental.py +0 -0
  90. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_updates.py +0 -0
  91. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_values.py +0 -0
  92. {operx_cli-0.11.0 → operx_cli-0.12.0}/tests/test_welcome.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: operx-cli
3
- Version: 0.11.0
3
+ Version: 0.12.0
4
4
  Summary: La línea de comandos de OperX: tu empresa desde la terminal, con tu token de API.
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -8,6 +8,7 @@ Requires-Dist: typer>=0.27
8
8
  Requires-Dist: httpx>=0.28
9
9
  Requires-Dist: keyring>=25
10
10
  Requires-Dist: openpyxl>=3.1
11
+ Requires-Dist: paho-mqtt>=2.2
11
12
  Requires-Dist: prompt_toolkit>=3.0
12
13
  Provides-Extra: test
13
14
  Requires-Dist: pytest>=8; extra == "test"
@@ -224,8 +225,37 @@ operx connect mapear d-7f3k2m planta/comp2/temp --equipo "Compresor 2" --punto "
224
225
  operx connect silenciar d-7f3k2m planta/comp2/temp --hasta "05/11/2026 18:00" --motivo "Mantenimiento"
225
226
  ```
226
227
 
227
- Las claves de los dispositivos no pasan por el CLI: se crean y se ven en la
228
- app, en la pestaña Clave del dispositivo.
228
+ Las claves de los dispositivos se crean y se ven solo en la app, en la
229
+ pestaña Clave del dispositivo: el CLI no las crea ni las muestra.
230
+
231
+ ### Reenviar desde un computador de la planta
232
+
233
+ `operx connect forward` corre en un computador de la planta, sin parar: lee el
234
+ broker de la planta o una carpeta de archivos CSV y lo envía a OperX por HTTPS.
235
+ Lo que no puede enviar queda en ese computador, en orden, hasta que vuelve
236
+ internet.
237
+
238
+ ```sh
239
+ operx connect forward "mqtt://localhost/planta/#" # el broker de la planta
240
+ operx connect forward "mqtts://broker.planta:8883/planta/#" --usuario lector --ca ca.crt
241
+ operx connect forward "C:\scada\exportes" # una carpeta de CSV
242
+ ```
243
+
244
+ - Usa la clave de un dispositivo, no tu sesión: créalo en la app, en Agregar
245
+ dispositivo › «Computador de la planta» (hasta 300.000 valores al día). Ponla en la variable
246
+ `OPERX_DEVICE_KEY`, o te la pide sin mostrarla; nunca va como opción. La
247
+ clave del broker va en `OPERX_BROKER_CLAVE`.
248
+ - Cada tema es un canal (`planta/comp2/temp`); en un JSON, cada clave va bajo
249
+ su tema. De cada canal envía el primer valor de cada minuto.
250
+ - Un CSV lleva una columna Fecha y una columna por canal, o Fecha, Canal y
251
+ Valor. Lee lo nuevo de la carpeta cada 30 segundos.
252
+ - Lo que espera queda en la carpeta de `operx` (o en el archivo de `--datos`),
253
+ hasta 2 millones de valores. Cada minuto escribe una línea con lo leído, lo
254
+ enviado y lo que espera.
255
+ - Para que corra solo al prender el computador: el Programador de tareas de
256
+ Windows o un servicio de systemd, con la clave en `OPERX_DEVICE_KEY` y lo que
257
+ escribe guardado en un archivo. La guía «Desde un computador de la planta»
258
+ de Connect lo explica paso a paso.
229
259
 
230
260
  SG-SST y Ambiental van por empresa: sin `--empresa`, la de tu cuenta. Si
231
261
  llevas el SG-SST o lo ambiental de tus clientes, `operx sst empresas` y