Some checks failed
Build Android (APK + AAB) / build-android (push) Has been cancelled
Servidor (proxy assinado):
- server/src/tuya.js: cliente Tuya OpenAPI com HMAC-SHA256 + token cache
(2h TTL, retry 1x em token expirado), helpers categoryLabel
- 3 endpoints novos em server/src/index.js (todos requireAuth):
* GET /api/iot/devices → lista devices da conta Smart Life
* GET /api/iot/status/:deviceId → DPs (data points) atuais
* POST /api/iot/command/:deviceId → envia comandos {code,value}
- Audit log via db.audit('iot_command', ...) pra histórico de toggles
- 503 graceful quando TUYA_ACCESS_ID/SECRET ausentes
Client (UI):
- Card 🏠 Casa do Barco em Arquivo (após Bluetooth, antes Raymarine)
- Modal "Adicionar dispositivo" lista devices da conta Smart Life,
permite escolher quais aparecem no Shivão (multi-select via toque)
- Cards por device com ícone por categoria (cz=tomada, dj=lâmpada,
fs=ventilador, kt=ar-cond, sd=robô, etc.) + toggle ON/OFF + status
online/offline + tempo desde último ping
- Toggle optimistic UI: marca novo estado imediato, reverte se falhar
- Polling 10s pra sync de status, pausa em background (economiza
Starlink + bateria)
- Backoff: 3 falhas consec → marca offline, retry 30s
- state.smartDevices[] persistido no localStorage (mesmo padrão btDevices)
Setup (admin, 1x):
- Karlão precisa criar projeto em iot.tuya.com (5 min, gratuito) e
adicionar TUYA_ACCESS_ID + TUYA_ACCESS_SECRET no env Coolify
- Documentação completa no .env.example com passo a passo
- Sem credenciais: card mostra "⚙ Tuya não configurado"
Bumps:
- APP_VERSION 1.11.0 → 1.12.0
- sw.js VERSION shivao-v1.11.0 → shivao-v1.12.0
- mobile/package.json + build.gradle (versionCode 32→33)
- LATEST_APK_URL atualizado pro release v1.12.0
Fix gitignore:
- .env.example em pastas nested (server/.env.example) estava bloqueado
por **/.env.* — adicionado !**/.env.example pra liberar.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
81 lines
3.1 KiB
Text
81 lines
3.1 KiB
Text
# ======================================================
|
|
# SHIVAO CLOUD - Configuração
|
|
# Copie este arquivo para .env e preencha os valores
|
|
# ======================================================
|
|
|
|
# --- Autenticação ---
|
|
# Token único do barco. GERE UMA STRING ALEATÓRIA LONGA!
|
|
# Sugestão: openssl rand -hex 32
|
|
BOAT_TOKEN=troque-este-valor-por-uma-string-aleatoria-longa-e-secreta
|
|
|
|
# --- Dead-man switch ---
|
|
# Se o app não enviar heartbeat por X segundos enquanto fundeado,
|
|
# o servidor dispara o alarme automaticamente. Padrão: 300 (5 min)
|
|
HEARTBEAT_TIMEOUT_SEC=300
|
|
|
|
# ======================================================
|
|
# CANAIS DE NOTIFICAÇÃO (configure os que quiser usar)
|
|
# ======================================================
|
|
|
|
# --- Telegram (RECOMENDADO - grátis, instantâneo) ---
|
|
# 1. No Telegram, fale com @BotFather → /newbot → anote o token
|
|
# 2. Inicie conversa com seu novo bot
|
|
# 3. Acesse https://api.telegram.org/bot<TOKEN>/getUpdates → anote o chat.id
|
|
# Você pode enviar para múltiplos chats separando por vírgula
|
|
TELEGRAM_BOT_TOKEN=
|
|
TELEGRAM_CHAT_IDS=
|
|
|
|
# --- ntfy.sh (push notifications grátis sem cadastro) ---
|
|
# Instale o app ntfy no celular, escolha um tópico secreto único
|
|
# Ex: shivao-alertas-x7k9p2 — qualquer pessoa com o nome ouve, então use algo aleatório
|
|
NTFY_TOPIC=
|
|
NTFY_SERVER=https://ntfy.sh
|
|
|
|
# --- E-mail (SMTP) ---
|
|
# Para Gmail: ative 2FA, crie "App password" em
|
|
# https://myaccount.google.com/apppasswords
|
|
SMTP_HOST=
|
|
SMTP_PORT=587
|
|
SMTP_SECURE=false
|
|
SMTP_USER=
|
|
SMTP_PASS=
|
|
SMTP_FROM=Shivao Alertas <alerts@example.com>
|
|
# Múltiplos destinatários separados por vírgula
|
|
SMTP_TO=
|
|
|
|
# --- Twilio SMS / WhatsApp (PAGO) ---
|
|
# Crie conta em twilio.com
|
|
TWILIO_ACCOUNT_SID=
|
|
TWILIO_AUTH_TOKEN=
|
|
TWILIO_FROM_NUMBER=
|
|
TWILIO_WHATSAPP_FROM=
|
|
# Múltiplos números (com DDI, ex: +5521999998888) separados por vírgula
|
|
TWILIO_SMS_TO=
|
|
TWILIO_WHATSAPP_TO=
|
|
|
|
# --- Webhook genérico ---
|
|
# Para Discord, Slack, n8n, ou seu próprio endpoint
|
|
# Recebe POST com JSON {boat, message, lat, lng, distance, ...}
|
|
WEBHOOK_URL=
|
|
|
|
# ======================================================
|
|
# IOT (Smart Life / Tuya) — controlar dispositivos do barco
|
|
# ======================================================
|
|
# Tuya é o fabricante por trás do app Smart Life. Lâmpadas/tomadas
|
|
# brand X (Positivo, Multilaser, Intelbras, RWS) são todas Tuya.
|
|
#
|
|
# Setup (5 min, gratuito):
|
|
# 1. Crie conta em https://iot.tuya.com (use mesmo email do Smart Life)
|
|
# 2. Cloud → Development → Create Cloud Project
|
|
# - Industry: Smart Home
|
|
# - Method: Custom Development
|
|
# - Data Center: escolha o mesmo da app Smart Life
|
|
# (Eu → Account & Security → Region)
|
|
# 3. Aba Service API → autorize: IoT Core, Authorization, Smart Home Basic
|
|
# 4. Aba Devices → Link Tuya App Account → escaneia QR Code com Smart Life
|
|
# 5. Copie da aba Overview: Access ID + Access Secret
|
|
TUYA_ACCESS_ID=
|
|
TUYA_ACCESS_SECRET=
|
|
# Data center: tuyaus (US, default Brasil), tuyaeu (Europa), tuyacn (China),
|
|
# tuyain (Índia). Mude se sua conta estiver em outra região.
|
|
TUYA_BASE_URL=https://openapi.tuyaus.com
|