Beiträge von eiche

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.

    Korrektur - ich muss zurückrudern und werde das Thema ändern.

    Die Validation ist doch korrekt, allerdings ist die Fehlermeldung irreführend. Ich hatte einen Fehler in der Zusammenstellung des HTTP Request.

    Mein Fehler an einem Beispiel

    Fehlerbehaftet: .../rpc/schedule.create?timespec="0 0 0 * * *"&calls=[{"method":switch.toggle,"params":{"id":0}}]
    Es fehlen die Anführungszeichen um die Methode, hier switch.toggle.

    Fehlerfrei: .../rpc/schedule.create?timespec="0 0 0 * * *"&calls=[{"method":"switch.toggle","params":{"id":0}}]

    Die resultierende Fehlermeldung ist: {"code":-103,"message":"Invalid argument 'timespec': Failed validation!"}.
    Aber nicht timespec ist fehlerhaft sondern der Methodenparameter ist es. Das hat mich verwirrt.

    Die passende Fehlermeldung sollte lauten:
    {"code":-103,"message":"Invalid argument 'calls': Failed validation!"}
    oder
    {"code":-103,"message":"Invalid argument 'method': Failed validation!"}

    Der timespec Wert war jedesmal valide, aber die calls Struktur war es nicht.

    Fazit: Die Schedule Job Regeln sind kompatibel - auch in Firmware 1.6.2. Die Fehlermeldung führt in die Irre.

    Hinweis:
    Meine Webseite zur flexiblen Nutzung/Eintragung von Schedule Jobs habe ich mittlerweile korrigiert. Somit sollte deren Nutzung obigen Fehler nicht mehr verursachen.

    Ich richte ja nicht regelmäßig Schedule Jobs ein. Derjenige, auf welchem ich es heute versuchte, ist ein Shelly Plus 1 mit der Firmware 1.5.1. Vermutlich wurde die Änderung mit 1.5.0 vorgenommen.

    Selbstverständlich konnte ich mir schließlich helfen. Mir missfällt aber, dass ich beispielsweise keinen timespec Wert von "0 */10 * * * *" vergeben kann, obwohl dies cron konform ist. Dies täte alle 10 Minuten die eingetragene RPC Methode ausführen lassen.

    Stattdessen muss der timespec Wert nun so laiuten: "0 0,10,20,30,40,50 * * * *"
    Dies bewerkstelligte ich mit dem WebUI und Klickerei. Die Methode habe ich danach geändert, was immerhin noch per schedule.update gelingt. Dies wurde wenigstens nicht auch noch "kaputtgeändert".

    Ein wenig wurde auch "verbessert": Es werden jetzt nicht mehr die Wochentage einzeln aufgelistet, wenn man im WebUI oder App alle Wochentage auswählt. Da hat also jemand dran gesessen, der zwar die Kurzform "*" (an letzter Stelle) für alle Wochentage nicht aber "*/<Periode>" kennt oder nicht zulassen wollte.

    Das ist halt doof, wenn man statt einer grafischen Oberfläche die RPC Methode "Schedule.Create" oder "Schedule.Update" nutzen will - bspw. für zügige (und flexible) Einrichtung von Schedule Jobs.

    Ich musste soeben feststellen, dass die Schedule Jobs (=Zeitpläne) mittlerweile sehr eingeschränkt editierbar sind - vermutlich ausschließlich auf DAUs ausgerichtet. Beim Anlegen mit Sachverstand - nicht etwa via Klickerei sondern professionell - wird der timespec derart eingeschränkt auf Regelkonformität analysiert, dass es mir graust.

    In der insgesamt sehr guten API Dokumentation ist nach wie vor ein sehr nützlicher Link zu den timespec Regeln untergebracht: "As defined by cron".

    Leider schränkt inzwischen die Analyse auf gültige timespec Werte derart ein, dass diese nur noch künstlich aufgebläht durchgehen und nicht mehr konform zu den Regeln nutzbar sind, wie sie unter dem obigen cron-Link zu finden sind. Vielleicht musste der für den Scheduler Zuständige Speicherplatz einsparen. Vielleicht beherrscht er die regulären Ausdrücke nicht hinreichend. So oder so ist es gegenüber früheren Firmware Versionen, vermutlich bis einschließlich ca. 1.4.1, ein echter Rückschritt. Vielleicht werden die Nutzer als tendenziell immer blöder eingeschätzt.

    Ich kenne den Grund/die Ursache nicht. Der nun werkelnde Analyzer ist ein "dämlicher Türsteher, der die Regeln nicht wirklich kennt". Solche Verschlimmbesserungen werfen kein gutes Licht auf die aktuelle Firmwareentwicklung. Das ist nicht der einzige Firmware-Entwicklungsschwachpunkt. Das sage ich als jemand, der ansonsten diese Firmware und die Offenlegung der API sehr schätzt.

    Ok, du beziehst dich auf BLE.Scanner.subscribe(), ich auf den EventHandler in #12 von FiSiCgn . Mit einem solchen EventHandler wird er derzeit keinen Erfolg haben, sehr wohl aber mit einem StatusHandler.

    Mit dem Subscriber habe ich tatsächlich noch nicht gearbeitet, soweit ich erinnere, weil in Gen 2 Shelly die callback Funktion raw Daten erhält, welche noch sehr aufwändig zu dekodieren sind.

    Ich werde den Subscriber gelegentlich dbzgl. testen.

    Ich habe derzeit keinen Antrieb dafür. ;) Mir erscheint diese Unterscheidung eh sinnfrei und in der Firmware eher verwirrend umgesetzt. Diese imho überflüssige Unterscheidung zwischen Status- und EventHandler sollte eigentlich wegfallen, ein EventHandler täte wohl genügen. Dies wird vermutlich aus Rückwärtskompatibilitätsgründen so schnell nicht geschehen, wenn überhaupt.

    Jedenfalls dürfte der TE mit einem StatusHandler weiterkommen.

    Lösungsansatz nach verkabeln durch Fachkraft:

    1. Beide Jarolift Ausgänge (NICHT BLAU) auf beide Shelly Eingänge führen.
    2. Shelly Eingänge auf detached konfigurieren.
    3. Via Actions oder Skript (flexibler) die RPC Methoden zum Fahren des Rollladens nutzen.

    Damit sollte sich immer die letzte Handhabung durchsetzen und kein Problem auftreten.

    Ok, dann verhalten sich Buttons und die Sensoren verschieden

    Kleine Korrektur:
    Nicht die BLU Geräte verhalten/verhielten sich unterschiedlich, sondern die von mir während der Experimentierphase genutze Firmware verhält/verhielt sich unterschiedlich - bzw. hätte sich aller Wahrscheinlichkeit nach unterschiedlich verhalten.

    Per StatusHandler kamen die Meldungen ja unmittelbar herein, aber nicht per EventHandler. Somit liegt es an der Firmware.

    Deshalb kann sich dies mit einer anderen Firmwareversion ändern - unabhängig von den BLU Geräten. :)

    Nach meiner Erfahrung nutzt hier ein EventHandler nichts. Stattdessen ist ein StatusHandler geeignet. Vielleicht nimmst du Anleihe aus meinem einschlägigen Thread:

    Mit konfigurierten Actions: RE: BLU Daten per Shelly Gen 3 und MQTT senden - ohne oder mit Skript

    Ohne Actions: RE: BLU Daten per Shelly Gen 3 und MQTT senden - ohne oder mit Skript

    Die Variante mit den Actions ist leichter auf dein Anwendungsziel anzupassen.

    freudi_t

    Zu BLU Motion kann ich derzeit mangels solcher Geräte leider nichts beitragen. Das sollten dann besser die tun, die ein Lager mit Shelly Geräten haben. Ich bin nur ein kleiner Anwender mit beschränkter Ausstattung. Meine Experimente stützen sich auf einen BLU Door Window und einen BLU H&T. In meinem bereits angeführten Thread habe ich meine Ergebnisse/Erfahrungen dargelegt und Lösungen angeboten.

    Ich führe nun noch einmal das interessanteste Skript hier auf, um besser darauf eingehen zu können.

    Der StatusHandler bthStatus() empfängt bei Statusänderung u.a. eines BLU Gerätes eine Nachricht, die auf BTHome Device getestet wird. Wenn eine Nachricht von einem BLU Gerät vorliegt, werden dessen aktuelle component Daten iterierend selektiert und von bths() verarbeitet. Die von mir im component Name eingebettete Einheit wird für dich uninteressant sein. Da ohne den Namensteil ":<Einheit>" die unit Komponente in der Struktur "Sensor" schlicht leer bleibt, brauchst du dort nichts anzupassen.

    Im StatusHandler bthStatus() oder in der Geräte bezogenen Verarbeitungsfunktion bths() kann die vorhandene Nachrichtstruktur, welche ein BLU Gerät an den Shelly Gen 3 übermittelt, analysiert werden. Wenn darin bedeutsame Werte enthalten sind, können diese leicht zielführend verarbeitet werden. Die Anpassung wird sich auf den Aufruf von MQTT.publish() beziehen, welcher für die Anwendungsziele zu ändern ist.

    Orientierung zum BLU Motion ist in der API Dokumentation zu finden: https://shelly-api-docs.shelly.cloud/docs-ble/Devices/motion

    Es sollte dir leicht fallen, die Nachrichtstruktur eines BLU Motion zu analysieren und die Werte geeignet zu verarbeiten.

    Bisher schrieb freudi_t nichts von Matter. Btw, ich brauche nach wie vor kein Matter und werde es vermutlich auch zukünftig nicht brauchen.

    In meinem Thread unter #22 ist das Skript noch etwas ausgereifter und kommt ohne Actions aus. In Zeile 33 kann leicht statt des Veröffentlichen einer MQTT Nachricht etwas anderes eingebaut werden, wie bspw. ein URL (s.o.).

    freudi_t

    Ich kann dir meine Lösung hier empfehlen: RE: BLU Daten per Shelly Gen 3 und MQTT senden - ohne oder mit Skript

    Im Skript braucht dann nur die Zeile 35 geändert zu werden, etwa so:

    Code
    Shelly.call("http.get", {url:<dein gewünschter URL, wo auch immer hin>});

    Dein Vorhaben gelingt auch ohne Skript - via lokaler Action, ohne Cloud. Da ich die RPC Methode "Script.Eval" in einer lokalen Action nutze, kannst du dort auch direkt (ohne Skript) deinen URL einbauen.

    Soweit ich es verstand, willst du ja nur deinen URL nutzen und dachtest, dass dafür die Cloud ein passender Ort sei. Das ist sie aber nicht, solange du die Cloud nicht noch für bspw. eine Anzeige nutzen willst. Bei vertiefter Cloud Nutzung bin ich raus, weil ich wenig davon halte.

    ging aber ein halbes jahr garnicht zu koppeln. Erst mit der kürzlich erschienenen Beta Software kann man die beiden koppeln.

    Ich hatte meinen Thread am 2025-05-06 begonnen, afaik ging das koppeln mit einem Gen 3 Shelly schon länger.

    Ich stelle fest, dass sich, meinem Eindruck nach, mittlerweile die Ansprüche häufen und im Zuge dessen die Kommunikation unfreundlicher wird.

    Ich vermute, dass hier das Relais schuld sein könnte, dass die 3 Jalousien (Wintergarten) zusammenfasst. Zumindest las ich irgendwo sowas, dass dies die Kalibrierung stört.

    Eine Vermutung ist keine Beantwortung.