docs(infra): playbook Cursor Tapo Tuya MCP e Proxmox na tomada Tapo
This commit is contained in:
parent
5edacd7f9a
commit
1a1db5c9be
4 changed files with 177 additions and 0 deletions
171
Infra-Network/CURSOR_TAPO_TUYA_MCP.md
Normal file
171
Infra-Network/CURSOR_TAPO_TUYA_MCP.md
Normal file
|
|
@ -0,0 +1,171 @@
|
||||||
|
---
|
||||||
|
tags:
|
||||||
|
- infra
|
||||||
|
- cursor
|
||||||
|
- tapo
|
||||||
|
- tuya
|
||||||
|
- proxmox
|
||||||
|
- mcp
|
||||||
|
created: 2026-09-08
|
||||||
|
status: playbook
|
||||||
|
---
|
||||||
|
|
||||||
|
# Cursor + Tapo + Tuya — playbook (Roger)
|
||||||
|
|
||||||
|
Processo capturado em **2026-09-08** para reutilizar nas duas máquinas / dois locais de trabalho.
|
||||||
|
|
||||||
|
**Regra de ouro:** a tomada **Tapo** alimenta o **Proxmox**. Nunca `tapo_turn_off` nessa tomada sem confirmação explícita (três vezes). Ligar (`turn_on`) só se o host estiver em baixo e o Roger pedir.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Cursor em duas máquinas — o que sincroniza
|
||||||
|
|
||||||
|
O **mesmo login Cursor não replica** o histórico de Agent/Chat da IDE. Isso fica **local** (por pasta/workspace).
|
||||||
|
|
||||||
|
| Segue a conta | Fica na máquina |
|
||||||
|
|---|---|
|
||||||
|
| Plano, modelos, Cloud Agents | Histórico Agent/Chat da barra lateral |
|
||||||
|
| Regras/MCP de **team** (dashboard) | Checkpoints, side chats |
|
||||||
|
| | Settings, atalhos, extensões (salvo exportar perfil) |
|
||||||
|
| | MCP **user** em `%USERPROFILE%\.cursor\mcp.json` |
|
||||||
|
|
||||||
|
**O que fazer nas duas máquinas:**
|
||||||
|
|
||||||
|
1. Mesma conta Cursor.
|
||||||
|
2. Mesmo Git (código + `.cursor/rules`, `AGENTS.md`, MCP de projeto).
|
||||||
|
3. Copiar **à mão** `C:\Users\mini\.cursor\mcp.json` e a pasta `C:\Users\mini\.cursor\mcp-servers\` (MCP Tapo/Tuya **não** viajam com o login).
|
||||||
|
4. Conversas que precisam continuar noutro PC: **Move to Cloud** / Cloud Agents.
|
||||||
|
5. Caminhos de pasta diferentes = workspace diferente = histórico diferente.
|
||||||
|
6. Remote SSH: o código está no servidor; o **chat fica no cliente**.
|
||||||
|
|
||||||
|
Pedido frequente à Cursor (sync de chats) — **sem prazo**. Não copiar `state.vscdb` entre Windows/Mac (hashes e risco de corromper).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Dois mundos: Tuya ≠ Tapo
|
||||||
|
|
||||||
|
| | **Tuya / Smart Life** | **Tapo (TP-Link)** |
|
||||||
|
|---|---|---|
|
||||||
|
| App | Smart Life ou Tuya Smart | App **Tapo** |
|
||||||
|
| Como o Cursor fala | Cloud API (`openapi.tuyaeu.com`) | LAN (broadcast `python-kasa`) |
|
||||||
|
| MCP | `tuya` | `tapo` |
|
||||||
|
| O que controla hoje | Interruptor Wi-Fi 1 gang | **Tomada do Proxmox** |
|
||||||
|
| QR no iot.tuya.com | Sim (ligar conta da app) | **Não** |
|
||||||
|
|
||||||
|
O QR da Tuya **nunca** traz tomadas Tapo.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Ficheiros e paths (esta máquina Windows)
|
||||||
|
|
||||||
|
- MCP config: `C:\Users\mini\.cursor\mcp.json`
|
||||||
|
- Script Tapo: `C:\Users\mini\.cursor\mcp-servers\tapo_mcp.py`
|
||||||
|
- Venv MCP: `C:\Users\mini\.cursor\mcp-servers\.venv\`
|
||||||
|
- Fix TLS Avast: `C:\Users\mini\.cursor\mcp-servers\.venv\Lib\site-packages\sitecustomize.py`
|
||||||
|
- Pacote extra: `truststore` no mesmo venv
|
||||||
|
|
||||||
|
Credenciais **não** estão nesta nota. Estão no `mcp.json` (Tuya Access ID/Key; Tapo ainda `PREENCHER`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Tuya — estado em 2026-09-08
|
||||||
|
|
||||||
|
- Plataforma: https://eu.platform.tuya.com / https://iot.tuya.com
|
||||||
|
- Projeto: **cursor-casa**
|
||||||
|
- Project ID: `p1788865726593kjmtjy`
|
||||||
|
- Data Center: **Central Europe** → endpoint `https://openapi.tuyaeu.com`
|
||||||
|
- Tipo: Location/Campus
|
||||||
|
- Conta Smart Life ligada: `rogerio.cezar@gmail.com`
|
||||||
|
- Modo: **Automatic Link**
|
||||||
|
- IoT Core: plano trial (há botão Upgrade)
|
||||||
|
|
||||||
|
**Dispositivo ligado à API:**
|
||||||
|
|
||||||
|
| Campo | Valor |
|
||||||
|
|---|---|
|
||||||
|
| Nome | 1Gang WIFI Switch |
|
||||||
|
| Device ID | `bfaf766aa915197295qju6` |
|
||||||
|
| Produto | CB01-SBL |
|
||||||
|
| Categoria | `kg` (interruptor) |
|
||||||
|
| Online | sim (validado pela API) |
|
||||||
|
| Ativação | 2024-04-27 14:01:02 |
|
||||||
|
|
||||||
|
**Isto NÃO é o Proxmox.** Não desliga o host.
|
||||||
|
|
||||||
|
### Como ligar a conta da app (quando a lista está vazia)
|
||||||
|
|
||||||
|
1. Cloud → Development → lista **My Cloud Projects**.
|
||||||
|
2. **cursor-casa não é um link.** A janela estreita esconde a coluna **Operation**. Maximizar, Ctrl+-, ou scroll **horizontal**. Botão: **Open Project**.
|
||||||
|
3. Aba **Devices** → **Link App Account** → **Add App Account** → **Tuya App Account Authorization**.
|
||||||
|
4. QR: app **Smart Life** → **Me** → ícone scan (canto superior direito) → confirmar.
|
||||||
|
5. Região da app (**Me → Settings → Account and Security → Region**) tem de ser **Europa**.
|
||||||
|
6. Depois de ligado: a API `/v2.0/cloud/thing/device` deixa de devolver COUNT 0.
|
||||||
|
7. Em Automatic Link, o texto **Link** na tabela do dispositivo **não** é o passo que falta — já está associado.
|
||||||
|
|
||||||
|
CAPTCHA de puzzle no login Tuya: **humano** (não automatizar).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Avast Web Shield — MCP Tuya a falhar no arranque
|
||||||
|
|
||||||
|
Sintoma: servidor MCP `tuya` **errored**, tools `tuya_*` desaparecem.
|
||||||
|
|
||||||
|
Causa: Avast intercepta HTTPS. Certificado apresentado:
|
||||||
|
|
||||||
|
```
|
||||||
|
CN=*.tuyaeu.com
|
||||||
|
ISSUER: CN=Avast Web/Mail Shield Root
|
||||||
|
OU=generated by Avast Antivirus for SSL/TLS scanning
|
||||||
|
```
|
||||||
|
|
||||||
|
OpenSSL 3 do Python rejeita (Basic Constraints / unable to get local issuer certificate).
|
||||||
|
|
||||||
|
**Correção aplicada (esta máquina):** `sitecustomize.py` no venv injeta `truststore` (Schannel / loja Windows). Com isso: CONNECT True.
|
||||||
|
|
||||||
|
**Depois de alterar o venv:** reiniciar o Cursor ou toggle do servidor MCP em Settings → MCP.
|
||||||
|
|
||||||
|
Na **segunda máquina**, repetir: `pip install truststore` no venv + o mesmo `sitecustomize.py` se o Avast (ou outro SSL scanning) estiver ativo.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Tapo — estado e próximo passo
|
||||||
|
|
||||||
|
- `TAPO_USERNAME` / `TAPO_PASSWORD` = `PREENCHER` → scan LAN = **0 devices**.
|
||||||
|
- `TAPO_DISCOVERY_TARGET` = `192.168.1.255` (só funciona na **mesma Wi-Fi** das tomadas).
|
||||||
|
- Noutro escritório / outra LAN: lista vazia mesmo com senha certa.
|
||||||
|
|
||||||
|
**Para ficar operacional:**
|
||||||
|
|
||||||
|
1. Email + senha da **app Tapo**.
|
||||||
|
2. IP da tomada do Proxmox (se conhecido).
|
||||||
|
3. PC na mesma rede que o plug, **ou** MCP a correr num host nessa LAN.
|
||||||
|
4. Marcar essa tomada como **protegida**: só `tapo_get_status` / `tapo_turn_on`; **nunca** `tapo_turn_off`.
|
||||||
|
|
||||||
|
Tools Tapo: `tapo_list_devices`, `tapo_get_status`, `tapo_turn_on`, `tapo_turn_off` (proibido na tomada do Proxmox).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Checklist rápido (segunda máquina ou reinstall)
|
||||||
|
|
||||||
|
- [ ] Login Cursor
|
||||||
|
- [ ] Copiar `mcp.json` + `mcp-servers` (sem meter secrets no Git)
|
||||||
|
- [ ] Se Avast: `truststore` + `sitecustomize.py`
|
||||||
|
- [ ] Reiniciar Cursor; Settings → MCP: `tuya` e `tapo` verdes
|
||||||
|
- [ ] Tuya: listar devices; deve aparecer o interruptor `bfaf766aa915197295qju6`
|
||||||
|
- [ ] Tapo: preencher credenciais; PC na LAN de casa; **não** desligar Proxmox
|
||||||
|
- [ ] Git para código/regras de projeto; Cloud Agent se precisares do mesmo chat nos dois PCs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Segurança
|
||||||
|
|
||||||
|
- Password da conta Tuya Developer passou por chat nesta sessão — **rodar** quando possível.
|
||||||
|
- Não versionar `mcp.json` com Access Key / senhas.
|
||||||
|
- Access ID/Key Tuya: só no `mcp.json` local.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Links internos
|
||||||
|
|
||||||
|
- [[WELCOME]]
|
||||||
|
- [[INFRA/INDEX]]
|
||||||
|
|
@ -8,3 +8,4 @@ SPECs de rede (big / BIG1 / routers). Repo Forgejo: a criar `ligbox/infra-networ
|
||||||
| R7000 DD-WRT + Proxmox | SPEC_R7000_DDWRT_PROXMOX_NETWORK.md |
|
| R7000 DD-WRT + Proxmox | SPEC_R7000_DDWRT_PROXMOX_NETWORK.md |
|
||||||
| R8000 credentials | SPEC_R8000_CREDENTIALS.md |
|
| R8000 credentials | SPEC_R8000_CREDENTIALS.md |
|
||||||
| SPEC-VM500 Rent Charge | SPEC-VM500-RENTCHARGE.md |
|
| SPEC-VM500 Rent Charge | SPEC-VM500-RENTCHARGE.md |
|
||||||
|
| Cursor Tapo Tuya MCP (2026-09-08) | CURSOR_TAPO_TUYA_MCP.md |
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,10 @@ Vault central CT130 · Forgejo `https://git.spec.ligbox.com.br/ligbox/`
|
||||||
| `Infra-Network/` | [infra-network](https://git.spec.ligbox.com.br/ligbox/infra-network) |
|
| `Infra-Network/` | [infra-network](https://git.spec.ligbox.com.br/ligbox/infra-network) |
|
||||||
| `ligbox-ops-platform/` | [ligbox-ops-platform](https://git.spec.ligbox.com.br/ligbox/ligbox-ops-platform) |
|
| `ligbox-ops-platform/` | [ligbox-ops-platform](https://git.spec.ligbox.com.br/ligbox/ligbox-ops-platform) |
|
||||||
|
|
||||||
|
## Casa / Cursor / IoT
|
||||||
|
|
||||||
|
- [Cursor Tapo Tuya MCP](Infra-Network/CURSOR_TAPO_TUYA_MCP.md) — duas máquinas Cursor, Tuya vs Tapo, QR, Avast TLS, Proxmox na Tapo
|
||||||
|
|
||||||
## Links rápidos Invest
|
## Links rápidos Invest
|
||||||
|
|
||||||
- [SPEC-051](Invest-MyVexx/SPEC-051-INVEST-UNIFIED-DASHBOARD-INDEX-HUB.md)
|
- [SPEC-051](Invest-MyVexx/SPEC-051-INVEST-UNIFIED-DASHBOARD-INDEX-HUB.md)
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
- [CT130](ligbox-ops-platform/docs/vms/CT130.md)
|
- [CT130](ligbox-ops-platform/docs/vms/CT130.md)
|
||||||
- [VM500 PROJETOS](ligbox-ops-platform/docs/vms/VM500.md)
|
- [VM500 PROJETOS](ligbox-ops-platform/docs/vms/VM500.md)
|
||||||
- [SPEC VM500 Rent Charge](Infra-Network/SPEC-VM500-RENTCHARGE.md)
|
- [SPEC VM500 Rent Charge](Infra-Network/SPEC-VM500-RENTCHARGE.md)
|
||||||
|
- [Cursor Tapo Tuya MCP](Infra-Network/CURSOR_TAPO_TUYA_MCP.md)
|
||||||
---
|
---
|
||||||
## MyVexx / Invest
|
## MyVexx / Invest
|
||||||
- [Invest hub](Invest-MyVexx/Invest-MyVexx.md)
|
- [Invest hub](Invest-MyVexx/Invest-MyVexx.md)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue