184 lines
6.4 KiB
Markdown
184 lines
6.4 KiB
Markdown
---
|
|
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 (validado 2026-09-08 14:05)
|
|
|
|
MCP Tapo **operacional** neste PC (venv `.venv-tpap`). Credenciais da app Tapo no `mcp.json` (não repetir aqui).
|
|
|
|
**Tomada protegida — Proxmox / Dell R630:**
|
|
|
|
| Campo | Valor |
|
|
|---|---|
|
|
| Alias | R630_Dell_Server |
|
|
| Modelo | P110 |
|
|
| IP LAN | 192.168.1.104 |
|
|
| Tipo | Plug |
|
|
| Estado 2026-09-08 | **ON** (`is_on: true`) |
|
|
|
|
**PROIBIDO:** `tapo_turn_off` em `192.168.1.104` / `R630_Dell_Server` — corta o Proxmox.
|
|
Permitido: `tapo_list_devices`, `tapo_get_status`, e `tapo_turn_on` só se o host estiver em baixo e o Roger pedir.
|
|
|
|
Discovery: `TAPO_DISCOVERY_TARGET=192.168.1.255` — só na mesma Wi-Fi. Noutro escritório a lista vem vazia.
|
|
|
|
---
|
|
|
|
## 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]]
|
|
|
|
---
|
|
|
|
## 9. Boiler Tuya (projeto separado do R630)
|
|
|
|
- Pasta vault: `Boiler-Tuya-Energy/`
|
|
- App: https://boiler.myvexx.com/
|
|
- Live: CT120 `/opt/boiler-energy` porta 8788, SQLite, estimativa 2,3 kW
|
|
- Nao misturar com Tapo P110 `r630.myvexx.com`
|