Schalten beim verbinden eines Clients

Die Verwendung von Skripten liegt im eigenen Ermessen des Benutzers. Unterstützung für Skripte wird vom Autor des Skripts bereitgestellt.
  • Hallo zusammen,

    ich bin frisch in der Shelly-Welt und wollte ein kleines Projekt umsetzen. Ich habe mir einen Shelly plus gekauft und will ihn als Access Point betreiben. Beim verbinden von einem bestimmten Gerät soll der Ausgang schalten. Leider habe ich nicht genügend Wissen was das Scripten angeht, denoch habe ich mich soweit geschlagen, das ich die MAC- und IP-Adresse mittels print Befehl sehen kann. Nun zu meinem Problem: Ich müsste die MAC-Adresse einer Variable zuweisen und diese dann mit meiner vorgegeben MAC-Adresse vergleichen, allerdings kriege ich die MAC-Adresse der verbundenen Geräte nicht in einer Variable zugewiesen.

    Für jede Hilfe bedanke ich mich im Voraus.

  • Hallo Buu98,

    dein Problem besteht darin, dass Shelly.Call asynchron ist und der dazugehörige Callback im Hintergrund, mit Verzögerung ausgeführt wird. Deine untere Ausgabe wird also noch vor dem Callback ausgeführt, weshalb sie als Ergebnis nur "undefiniert" liefert. Ich hab deinen Code angepasst, sodass innerhalb einer Endlosschleife auf die Pseudo-Rückgabe deines Callbacks gewartet wird. Außerdem hab ich gleich noch einen Mac-Whitelist-Filter eingebaut, um zu demonstrieren, wie du nach bestimmten Mac-Adressen suchen könntest.

  • Hallo @De kat,

    ein riesengroßes dankeschön für deine Hilfe. Ich hab eine frage zum Script. Nach dem ersten durchlauf der Main_Loop Funktion scheint die Funktion sich nicht zu wiederholen hast du eine Idee womit es zusammenhängen könnte ?

  • Der Main_Loop läuft endlos weiter, jedoch hab ich nach einem Durchlauf list_Clients auf 0 gesetzt. Daher springt es nicht erneut in das "if".

    Hier ist die Zeile, die dafür sorgt, dass der Inhalt des "if" nur einmal im Haupt-Loop ausgeführt wird: list_Clients = 0; //Reset Async Return.

    Beachte bitte ebenfalls das du result.ap_clients nur einmal aufrufst im Synchronen Code, der Callback dazu wird also auch nur einmal ausgeführt.

    https://www.mediaevent.de/javascript/callback-function.html

    https://www.mediaevent.de/javascript/asynchron-synchron.html

    3 Mal editiert, zuletzt von _[Deleted]_ (5. November 2023 um 00:33)