FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: psycho160 am 21 Mai 2021, 19:48:40

Titel: Shelly Reboot
Beitrag von: psycho160 am 21 Mai 2021, 19:48:40
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
Titel: Antw:Shelly Reboot
Beitrag von: supernova1963 am 25 Mai 2021, 07:07:16
Hi @psycho160,

vielen Dank für's teilen.

lg

Titel: Antw:Shelly Reboot
Beitrag von: ch.eick am 25 Mai 2021, 09:15:35
Von mir auch Dank, ich lege es mal in die Interessenliste :-)
Nachdem ich jetzt den Tipp mit dem Energiezähler beim Shelly (https://forum.fhem.de/index.php/topic,121214.0.html) 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
Titel: Antw:Shelly Reboot
Beitrag von: caldir65 am 04 Juli 2021, 16:50:09
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
Titel: Antw:Shelly Reboot
Beitrag von: ch.eick am 05 Juli 2021, 10:33:13
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.
Titel: Antw:Shelly Reboot
Beitrag von: psycho160 am 05 Juli 2021, 11:50:57
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.
Titel: Antw:Shelly Reboot
Beitrag von: caldir65 am 05 Juli 2021, 20:00:34
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  ;)