Shelly Plus Uni, Script, Shelly.getComponentStatus

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

  • Hallo zusammen,

    ich habe ein Problem mit einem Scriptbefehl am Plus Uni.

    Zur Einleitung: Ich habe den Plus Uni mit Sensoren bestückt (z.B. Impuls-Windsensor am Count-In oder Helligkeitssensor am Analog-In). Das funktioniert seit Monaten problemlos und ich steuere über Szenen z.B. Markisen, Gartenlicht usw.. Da ich mit den Szenen zunehmend an die Grenzen komme, lerne ich nun Scripting.

    Es gelingt mir dabei nicht, die Windgeschwindigkeit (xfreq) mit dem Befehl Shelly.getComponentStatus in das Script einzulesen. Mit dem Browser Befehl GetStatus sehe ich, dass die Information am input:2 vorliegt. Bild 1 zeigt die Fehlermeldung. Dabei ist unabhängig, ob ich xfreq, freq oder gleich das ganze Objekt einlese. Die Variable im Hauptprogramm zu definieren hilft auch nicht, dann kommt die Meldung "Too many scopes remove at init()".

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Als nächstes habe ich probiert, anstelle des Windsensors, die Daten des Helligkeitssensors (input:100) einzulesen --> identes Problem. Das Einlesen der internen Daten wie z.B. unixtime oder mem_free funktioniert hingegen problemlos. Das Problem kann also auf die externen Sensoren eingegrenzt werden.

    Lese ich hingegen über einen anderen Shelly mit Shelly.call die Daten über das Netzwerk ein --> funktioniert.

    Komplett verwundert bin ich aber, als ich testweise den Befehl wie in Bild 2 ausgeführt habe, also ohne function und ohne Einsprungpunkt über init. Da funktioniert das Einlesen, hilft mir aber nicht, da eine function immer sinnvollerweise notwendig ist.

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Übersehe ich als Anfänger hier was grundlegendes oder ist das ein bug?

    Danke.

  • Das ist wirklich seltsam. Auf einem Pro 3EM mit 1.6.2 funktioniert das Skript (ich lese nur was anderes aus, aber das sollte an sich keinen Unterschied machen):

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Überwiegend PRO 3EM im Einsatz zur Haus und PV Überwachung

  • So sieht das bei mir für drei lokale Daten aus:

    Die Variable sollte zuerst außerhalb einer Funktion deklariert werden.

    Im Beispiel ist auch erkennbar, wie die drei einzelnen Daten gezielt ausgelesen entweder einzeln oder als JSON verfügbar sind.

    Vielleicht hilft dir das ein wenig weiter.

  • Hallo zusammen, danke für die Hinweise. Ich bekomme aber leider die Abrufe von input:2 und input:100 am Plus Uni nicht zum laufen, alles andere funktioniert (switch:0, input:1,...).

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
  • Meiner Meinung nach ist das ein Fall für ein Ticket an den Support. Sämtliche Beispiele von dir sind völlig in Ordnung und sollten problemlos funktionieren.

    Spekulation:

    In Firmware 1.5 wurde das Verhalten von let (und const) geändert. Variablen, die mit diesen beiden Keywords definiert werden beachten jetzt den Scope, in dem sie angelegt wurden (und Shelly-Javascript verhält sich damit jetzt in dieser Beziehung wie 'normales' JavaScript).

    Für mich sieht es so aus, als ob sich der Interpreter verläuft, wenn let verwendet wird und Sensoren im Spiel sind. Möglicherweise hat die erwähnte Änderung da nicht ganz geklappt.

    Du könntest das noch testen, indem du die Variablen mit var anstatt mit let definierst. Aber wie gesagt, für mich ist das eindeutig ein Problem auf der Shelly-Seite.

  • Dieses Thema enthält 15 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.