Schalten beim verbinden eines Clients

Hinweis zur Nutzung von Skripten (für Nutzer)

Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.


Hinweis für Entwickler

Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.

  • 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)