Hauptmenü

Shelly Reboot

Begonnen von psycho160, 21 Mai 2021, 19:48:40

Vorheriges Thema - Nächstes Thema

psycho160

Hi,

teile hier ein für mich sehr nützliches Snippet, dass ich mir geschrieben habe mit folgender Funktion:

Wenn ich meine AccessPoints Update oder aus irgendeinem Grund neu starte sind ab und zu nicht mehr alle Shellys mit dem "stärksten" AP verbunden. Dann starte ich alle meine Shellys neu, damit sie sich wieder zum Besten AP verbinden.

Dazu  einfach folgenden Code in die 99_myUtils.pm:

sub shellyRestart {
foreach my $shelly (devspec2array("TYPE=MQTT2_DEVICE:FILTER=id=[s|S]helly.*")) {
my $ip = ReadingsVal($shelly, "ip", "0");
Log 3, "Sende Reboot an: $shelly ($ip)";

# create request for every shelly

# Settings
my $URL         = qq{http://$ip/reboot};

my $param = {
url           => $URL,
method        => 'GET',
#user        => $username,
#pwd        => $password,
hideurl => 0,
shelly => $shelly,
timeout       =>  4,
callback   => \&ShellyReboot_ParseHttpResponse
};
# uncomment for debug
#Log3 'ShellyReboot-Fn', 3, 'NonBlocking GET: ' . Dumper($param);
HttpUtils_NonblockingGet($param);
  }
return "ShellyReboot started - See Log for Infos";
}

# Callback ShellyRestart
sub ShellyReboot_ParseHttpResponse($)
{
    my ($param, $err, $data) = @_;
    my $name = $param->{shelly};

    if($err ne "")
    {
        Log3 $name, 3, "$name : error while requesting ".$param->{url}." - $err";
    }
    elsif($data ne "")    {
        Log3 $name, 5, "url ".$param->{url}." returned: $data";

        # An dieser Stelle die Antwort parsen / verarbeiten mit $data
my $decoded_data = eval { decode_json($data) };
if ($@){
Log3 "ShellyReboot", 3, "ShellyReboot Error: decode_json failed, invalid json. error: $@ ";
}else{
Log3 "ShellyReboot", 3,"ShellyReboot OK: $name - Info: " . $decoded_data->{'ok'};
}
    }
}


Dann in der FHEM Commandozeile {shellyRestart} eingeben und schon starten alle neu.

Vielleicht kanns ja jemand gebrauchen.

lg
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)

supernova1963

Hi @psycho160,

vielen Dank für's teilen.

lg


ch.eick

#2
Von mir auch Dank, ich lege es mal in die Interessenliste :-)
Nachdem ich jetzt den Tipp mit dem Energiezähler beim Shelly bekommen habe würde ein regelmäßiger Reset für eine neue Anmeldung eventuell sinn machen, da ich den ein oder anderen time out im Log sehe.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

caldir65

Moin,

auch von mir Danke dafür.

Wie startest Du neu? Manuel per Befehl, oder wird das bei Dir über fhem detektiert und ein Reboot ausgelöst?

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

ch.eick

Zitat von: caldir65 am 04 Juli 2021, 16:50:09
Wie startest Du neu? Manuel per Befehl, oder wird das bei Dir über fhem detektiert und ein Reboot ausgelöst?
Wenn fhem die Verbindung verloren hat kann es doch nicht neu starten.
Ich habe da mal eine Option in den Shelly Einstellungen gesehen, nutze es jedoch nicht selber.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

psycho160

Nein, ich sehe am Access Point bzw. WLAN Controller wo welcher Shelly mit der jeweiligen Empfangsstärke verbunden ist. Wenn ich bemerke, dass einige nicht mit dem stärksten AP verbunden sind (eben aus den oben genannten Gründen) dann gebe ich den Befehl manuell ein und alle Shellys suchen sich dann wieder den "stärksten" AP.

Die Verbindung zu Fhem geht dabei nie verloren, ist nur vor dem Reboot nicht immer ideal.
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)

caldir65

Zitat von: psycho160 am 05 Juli 2021, 11:50:57
Die Verbindung zu Fhem geht dabei nie verloren, ist nur vor dem Reboot nicht immer ideal.

Naja, wenn die Verbindung verloren ginge, wäre ja auch schlecht  ;)
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.