Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Terrarium Steuerung probleme mit Funktion

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Terrarium Steuerung probleme mit Funktion

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      superzac last edited by

      Hallo,

      ich bin jetzt schon seit Tagen dabei für meine Tierchen eine Steuerung für die Beleuchtung zu bauen. Als Hardware setze ich die Hue Bridge zusammen mit den Steckdosen von Osram ein.
      Am Anfang hatte ich es ganz klassisch mit CronJob Steckdose ein und später wieder aus probiert. Es stellte sich heraus, dass die Steckdosen manchmal nicht geschaltet hatten. Darum wollte ich etwas sicher gehen und bin im Netz auf folgendes Skript gestoßen:

      screen.PNG

      Mit diesem Skript habe ich es bis jetzt seit einer Woche geschafft die Steckdose 100% zu schalten. Da dieses Skript schon etwas groß ist, wollte ich es jetzt in eine Funktion einbinden. Meine Herausforderung war, wie ich den Namen der Lampe in eine Funktion per Variable übergeben kann. Rausgekommen, ist dabei folgendes.

      screen2.PNG

      Um einen Fehler zu provozieren, habe ich den Strom der Hue getrennt. Jetzt passiert folgendes. Zu erst bekomme ich die Meldung, das alles geklappt hat und erst etwas später wird der Fehler geworfen. Aus meiner Sicht, sollte doch die Schleife nach Erfolgsmeldung verlassen werden. Ich stehe echt auf dem Schlauch und könnte etwas Anregung gebrauchen.

      LG Swen

      BBTown 1 Reply Last reply Reply Quote 0
      • BBTown
        BBTown @superzac last edited by BBTown

        @superzac
        An welcher Stelle fragst Du denn den Zustand der Steckdose - bzw. ob die Lampe erreichbar ist - ab?
        Ich kann keinen entsprechenden Trigger erkennen.

        ggf. könnte dies passen
        8e03f11e-1481-4c19-9163-a2bad8f35e5f-image.png pder so fbf7e11e-60c2-4f4b-9504-f13930f7eea4-image.png

        1 Reply Last reply Reply Quote 0
        • S
          superzac last edited by

          @BBTown

          Ich frage den Zustand in diesem Bereich ab

          screen.PNG

          Komisch finde ich auch, dass immer Instanz gestoppt kurz oben im Bildschirm erscheint.

          Ich werde Deinen Ansatz jetzt mal versuchen in die Funktion einzubauen und würde mich dann noch einmal zurückmelden.

          LG Swen

          BBTown 1 Reply Last reply Reply Quote 0
          • BBTown
            BBTown @superzac last edited by BBTown

            @superzac sagte in Terrarium Steuerung probleme mit Funktion:

            Ich frage den Zustand in diesem Bereich ab

            Nein, das ist nicht richtig!
            Hier reagierst Du auf das was als neuer Zustand gemeldet wird.
            Aber es gibt hier keinen Trigger der die Zustandsänderung selbst beobachtet/mitbekommt ... dafür benötigst Du einen Trigger der diese Änderungen an die Funktion übergibt.

            Mein Vorschlag ist/sind der/die Trigger ausserhalb der Funktion.
            Diese rufen ja die Funktionen nach Änderung erst auf.
            Entweder wenn der Zustand der Lampe oder der Zustand der Steckdose geändert wird.

            Ich weiss gar nicht ob Du beides brauchst, je nachdem was Du eigentlich beobachtest (Zustand Lampe oder Zustand Steckdose oder sowohl als auch?)

            1 Reply Last reply Reply Quote 0
            • S
              superzac last edited by

              @BBTown

              Ich möchte im grunde nur 5 mal versuchen die Steckdose zu einem Zeitpunkt X ein bzw. ausschalten.

              Damit ich eine Kontrolle darüber habe, was in den Terras passiert, möchte ich eine Prüfung hinterlegen, ob die Steckdose wirklich geschaltet hat. Wenn Sie das nicht getan hat, dann soll es noch weitere 4 mal probiert werden. Wenn es dann immer noch nicht geklappt hat, dann soll ich benachrichtigt werden, das es nicht geklappt hat oder im Erfolg, dann einen Erfolg vermelden. Weil ich extrem viele Lampen in den Terras verbaut habe, wollte ich den ganzen Schalt Kram mit samt Überprüfung in eine Funktion auslagern und diese dann mit einem Zeittrigger und den entsprechenden Parametern ausführen.

              LG Swen

              paul53 1 Reply Last reply Reply Quote 0
              • S
                superzac last edited by

                @BBTown habe es jetzt so umgebaut:

                screen.PNG

                leider Bricht das Skript jetzt immer gleich beim ersten Fehlversuch ab. Ich hoffe, das ich vielleicht keinen Denkfehler beim Testen habe. Ich habe mir jetzt eine Hue Iris Lampe hingestellt, wo ich immer den Stecker ziehen kann, wenn die Schaltung schief gehen soll.

                LG Swen

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @superzac last edited by

                  @superzac sagte:

                  Weil ich extrem viele Lampen in den Terras verbaut habe, wollte ich den ganzen Schalt Kram mit samt Überprüfung in eine Funktion auslagern

                  Es gibt aber nur ein Intervall.

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    superzac @paul53 last edited by

                    @paul53 Das verstehe ich jetzt nicht. Wie meinst Du das mit es gibt nur ein Intervall?

                    LG Swen

                    BBTown paul53 2 Replies Last reply Reply Quote 0
                    • BBTown
                      BBTown @superzac last edited by BBTown

                      @superzac
                      Ich würde es so probieren
                      ca343b97-7237-43ff-a604-0ba2a61259ec-image.png

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @superzac last edited by paul53

                        @superzac
                        Wenn, während das Intervall läuft, die Funktion für eine weitere Lampe aufgerufen wird, wird das Intervall gelöscht und für die weitere Lampe neu gestartet. Auch die Variable zaehler ist eine globale Variable, existiert also nur einmal.

                        1 Reply Last reply Reply Quote 0
                        • S
                          superzac last edited by

                          @paul53 danke für Deinen Tipp dieser hat mir sehr geholfen.

                          Ich hatte zum Testen das alte Skript kopiert und wieder eingefügt. Dadurch waren auch Intervalle nicht umbenannt und es kam dadurch immer zum Crash. Jetzt sieht alles wie am Anfang aus und es funzt 😉

                          @BBTown danke auch für Dich konntest ja auch nicht wissen, was ich hier für einen Bockmist gebaut hatte.

                          LG Swen

                          BBTown 1 Reply Last reply Reply Quote 0
                          • BBTown
                            BBTown @superzac last edited by

                            @superzac
                            wie sieht denn dann deine Lösung aus?

                            1 Reply Last reply Reply Quote 0
                            • S
                              superzac last edited by

                              @BBTown

                              screen.PNG

                              ich muss jetzt nur noch die Variablen für den Statustext einbinden und den Funktionsaufruf per Zeitplan steuern.

                              Was das Sahnehäubchen wäre eine Überprüfung, ob der Adapter den ich schalten will überhaupt erreichbar ist. Ich habe im Log gesehen, das Java da ein paar Errors wirft, wenn ich versuche eine Lampe anzusprechen, die nicht mit dem Strom verbunden ist. Aber das ist Fine Tuning.

                              Ich werde den Rat von @paul53 beherzigen und ein Skript pro Terrarium bauen. Dann gehe ich auch kein Risiko der Überschneidung ein, denn die Lampen gehen eh alle nicht zur selben Zeit an.

                              LG Swen

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @superzac last edited by paul53

                                @superzac
                                Ein Vergleich von Ist- und Sollwert des Datenpunktes genügt nicht. Es muss auch Ack auf wahr geprüft werden, d.h. ob der Wert bestätigt wurde.

                                1 Reply Last reply Reply Quote 0
                                • S
                                  superzac last edited by

                                  @paul53

                                  Es muss auch Ack auf wahr geprüft werden, d.h. ob der Wert bestätigt wurde.

                                  Was meinst Du mit Ack?

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @superzac last edited by

                                    @superzac sagte:

                                    Was meinst Du mit Ack?

                                    In Blockly heisst es "anerkannt".

                                    Blockly_temp.JPG

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      superzac last edited by

                                      @paul53 Danke für den Tipp hier muss ich mich dann nochmal etwas tiefer einlesen, um zu verstehen was man damit prüft.

                                      Aber das finde ich schon im Netz 😉 Danke für die schnelle Hilfe

                                      LG Swen

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @superzac last edited by paul53

                                        @superzac sagte:

                                        was man damit prüft.

                                        Ich würde auf {ack: true} (annerkannt ist Update) triggern und wenn Sollzustand = Istzustand sofort das Intervall stoppen. Etwa so:

                                        Blockly_temp.JPG

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        734
                                        Online

                                        31.9k
                                        Users

                                        80.3k
                                        Topics

                                        1.3m
                                        Posts

                                        3
                                        18
                                        589
                                        Loading More Posts
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        The ioBroker Community 2014-2023
                                        logo