collapse

* Posts Recentes

JBL partybox On-The-Go por jm_araujo
[Ontem às 11:02]


Alguém arranja motores? por brunus
[11 de Fevereiro de 2025, 16:42]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]


Sistema a LASER que será também capaz de matar moscas por brunus
[11 de Fevereiro de 2025, 16:02]


+ LASERs por dropes
[03 de Fevereiro de 2025, 16:02]


Meu novo robô por josecarlos
[30 de Janeiro de 2025, 18:57]


B-52 Bomber Astro Tracker - Part 2 Power up and gyro-stabilization por jm_araujo
[08 de Janeiro de 2025, 15:23]


Nevadent - Não carrega por almamater
[22 de Novembro de 2024, 21:36]


Classmate Leap T304 não liga por almamater
[19 de Novembro de 2024, 07:13]


Dúvida com fonte de alimentação comutada por filjoa
[28 de Outubro de 2024, 21:57]

Autor Tópico: Shelly em jeito de watchdog  (Lida 2684 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline SerraCabo

  • Mini Robot
  • *
  • Mensagens: 1.065
    • Serra Cabo
Shelly em jeito de watchdog
« em: 10 de Agosto de 2024, 22:13 »
Olá a todos.

Instalei um router banda larga (TP-Link Archer MR550) num local onde estou frequentemente mas necessitando que funcione quando não estiver nesse local.

Depois de vários testes com este e outro routers conclui que, por razões misteriosas, (parece que) especialmente com pouco tráfego no router, as companhias de telefones/internet gostam de ignorar a presença do router. Digamos que deixam o router pendurado, sem que a internet funcione. O router parece não conseguir sair desse turpôr por ele próprio.

Se o desligarmos e voltarmos a ligar tudo volta ao normal. O problema é que não estando no local quem o faça …

Vai daí, lembrei-me de alimentar o router atravéz de um “Shelly 1 Mini”. Caso o router encrave, se desligar-mos o relé do Shelly e voltarmos a ligar, o router volta a funcionar. A gaita é que quando o router está entupido não há forma de controlar o Shelly e, se houvesse, desligando o router não haveria forma de o religar por falta de ligação do Shelly à internet.

Mas o Shelly permite instalar um script. Perguntei, algures, se alguém saberia de um script para monitorar a funcionalidade da internet e, caso não houvesse internet, desligasse e voltasse a ligar o relé do Shelly.

Alguém respondeu que tinha visto uma coisa dessas e deu-me o link.

Fiz download à coisa, percebi que não percebia nada daquela linguagem, mas percebia o suficiente para martelar umas variáveis.

Ficou assim:

Código: [Seleccione]
/**

https://github.com/shelly-tools/shelly-script-examples/blob/main/monitor_internet_connection.js

* @copyright shelly-tools contributors
* @license   GNU Affero General Public License (https://www.gnu.org/licenses/agpl-3.0.de.html)
* @authors   https://github.com/shelly-tools/shelly-script-examples/graphs/contributors
*
* This script can be used to monitor the connection to the internet and restart the local relay
* if the connection fails for a configurable time. Perfect use case would be a router restart.
*/

// CONFIG START
let CONFIG = {
    // a remote URL with just a few bytes of content in order to check if internet is still available.
    remoteurl: 'https://global.gcping.com/ping',
    maxfails: 18, // number of times the check is done before internet is considered as down.
    interval: 5, // checks the internet connection every x seconds, recommended is 5 or more
    // 18x5s=90s   ..   the router takes 60s to boot
}
// CONFIG END

// internal vars and functions, no need to change anything below this line.
let alertTimer = '';
let failcounter = 0;
//print("Router power ON ");

Shelly.call("Switch.set", { id: 0, on: true });

function startMonitor() {
    alertTimer = Timer.set(CONFIG.interval * 1000, true, function () {
        Shelly.call("HTTP.GET", {
            url: CONFIG.remoteurl
        }, function (res, error_code, error_msg, ud) {
            if (error_code !== 0) {
                if (failcounter === CONFIG.maxfails) {
                    Shelly.call("Switch.set", { id: 0, on: false, toggle_after: 5 });  // power off router and on after 5s
                    failcounter = 0;
                } else {
                    failcounter++;
                }
            }
        },
            null
        );
    },
        null
    );
}

startMonitor();
« Última modificação: 11 de Agosto de 2024, 00:36 por SerraCabo »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.378
    • Tiago Rodrigues
Re: Shelly em jeito de watchdog
« Responder #1 em: 30 de Setembro de 2024, 21:21 »
Hum, interessante, obrigado por partilhares.

Tenho alguns shellys cá por casa, mas não me tinha pensado em usa-lo para reagir a falta de internet. fica a solução em carteira caso venha a necessitar.

Offline SerraCabo

  • Mini Robot
  • *
  • Mensagens: 1.065
    • Serra Cabo
Re: Shelly em jeito de watchdog
« Responder #2 em: 24 de Outubro de 2024, 19:24 »
Passados tempos ocorreu algo que é capaz de valer a pena relatar.

Determinado dia houve uma encrenca qualquer lá na zona e deixou de haver Internet por umas horas. O Shelly ficou a aplicar a cada minuto e pouco um reboot ao router (power down .. power up), como era previsto.

A certa altura deixou de o fazer e passo a relatar o que me parece que aconteceu (não necessariamente o que aconteceu).

Não esquecer que, para além do script, o Shelly tinha sido configurado para, ‘em caso de dúvida’, ligar o relé.

Voltando à conversa, a certa altura o Shelly deixou de aplicar os reboots e a minha INTERPRETAÇÃO é a seguinte:

No meio da confusão para tentar perceber o que estava a acontecer devo ter desligado o Shelly dos 220V. Tanto quanto me recordo, a partir dessa altura ele deixou de aplicar os reboots. Fiquei a olhar e não fiz mais nada porque, de qualquer forma, não havia Internet.

Algumas horas depois a Internet voltou. Passadas mais umas quantas horas resolvi testar o Shelly (para ver se ele voltava a aplicar os reboots) e ele não aplicava. Descobri então que o script estava lá mas desactivado. Reactivei-o e ele voltou ao funcionamento esperado.

Fiquei desconfiado que o script não ficaria guardado em memória não volátil no Shelly mas na nuvem da Shelly. Com o desligar da alimentação ao Shelly ele terá perdido o script só o tendo recarregado mais tarde quando a Internet voltou. Recarregou mas não activou o script. Pode também ter acontecido que ele tenha simplesmente desactivado o script.

Desde essa altura não voltei a investigar mais nada.

Abraço,
SC