Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Globale (JS) Funktionen (Einschaltdauer berechnen)

    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

    Globale (JS) Funktionen (Einschaltdauer berechnen)

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

      Moin,
      komme vom Job her eigentlich von der JavaScript Entwicklung, mache bei ioBroker aber momentan noch sehr viel in Blockly (ist übersichtlicher).

      Jetzt würde ich gerne von TV und Backofen tracken wie lange die Geräte schon eingeschaltet sind. Was in JS nur ein paar Zahlen Code sind, artet aber in Blockly in einen ziemlichen Clusterfuck aus...
      (oder gibt es dahingehend schon was fertiges das ich übersehen habe?)

      Daher die Frage: Kann ich mir eine JavaScript Funktion bauen, die ich dann in Blockly benutze? Falls nicht, kann ich mir generell globale Funktionen (egal ob Blockly oder JS) erstellen, auf die ich in den Scripten zugreifen kann? Hab das bisher immer nur innerhalb eines Scriptes hinbekommen

      Vielen Dank,
      lg, Dave

      Xenon paul53 3 Replies Last reply Reply Quote 0
      • Xenon
        Xenon Forum Testing Developer @D.VE last edited by

        @D-VE ja kannst du

        js.png

        D.VE 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @D.VE last edited by paul53

          @D-VE sagte:

          Kann ich mir eine JavaScript Funktion bauen, die ich dann in Blockly benutze?

          Ja, innerhalb des Blockly-Scripts.

          @D-VE sagte in Globale (JS) Funktionen (Einschaltdauer berechnen):

          kann ich mir generell globale Funktionen (egal ob Blockly oder JS) erstellen, auf die ich in den Scripten zugreifen kann?

          Javascript: Ja, Blockly: Nein, bzw. nur mit einer Javascript-Funktion, die die globale Funktion aufruft.

          @D-VE sagte in Globale (JS) Funktionen (Einschaltdauer berechnen):

          Blockly (ist übersichtlicher).

          Wirklich ?

          1 Reply Last reply Reply Quote 0
          • D.VE
            D.VE @Xenon last edited by

            @Xenon said in Globale (JS) Funktionen (Einschaltdauer berechnen):

            @D-VE ja kannst du

            Dass man grundsätzlich Funktionen erstellen kann, weiß ich. Mir ging es um globale Funktionen, auf die man in jedem Blockly Script zugreifen kann...

            @paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):

            Nein, bzw. nur mit einer Javascript-Funktion, die die globale Funktion aufruft.

            Das hab ich nicht ganz verstanden. Man kann also mit Blockly JS-Funktionen aufrufen?

            @paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):

            Wirklich ?

            Für Leute ohne Entwickler-Background: Ja! Auf jeden Fall. Vor allem wenn man anständig kommentiert...

            lg, Dave

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @D.VE last edited by paul53

              @D-VE sagte:

              Man kann also mit Blockly JS-Funktionen aufrufen?

              Beispiel: Ich habe ein Script unter global, das die Funktion runden(val, digits) enthält. Diese Funktion kann per Blockly-JS-Funktion aufgerufen werden.

              Blockly_temp.JPG

              Inhalt der JS-Funktion runde(wert, stellen):

              return runden(wert, stellen);
              

              Warnung: Globale Skripte werden in jedes andere (nicht globale) Skript kopiert ! Deshalb sollten globale Skripte nur häufig verwendete eigene Funktionen enthalten.

              D.VE 1 Reply Last reply Reply Quote 0
              • D.VE
                D.VE @paul53 last edited by

                @paul53

                Thx...

                Wo ist mein Fehler? Die Funktion wird nicht aufgerufen. Im Log steht auch kein Fehler

                d49a8c38-7e2d-4328-b642-2380ab6f8eae-grafik.png

                2a583644-5391-471c-8e82-9f8c36a978bf-grafik.png

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @D.VE last edited by

                  @D-VE sagte:

                  Wo ist mein Fehler? Die Funktion wird nicht aufgerufen.

                  Die Blockly-JS-Funktion hat den gleichen Namen wie die globale Funktion ?

                  D.VE 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @D.VE last edited by paul53

                    @D-VE sagte:

                    Einschaltdauer berechnen

                    Eine Startzeit muss man sich nicht in einem Datenpunkt merken, denn die stellt der Datenpunkt des Aktors zur Verfügung, wenn er als Trigger verwendet wird:

                    • "letzte Änderung" während der Aktor ein ist
                    • "vorherige letzte Änderung", wenn der Aktor aus ist
                    1 Reply Last reply Reply Quote 0
                    • D.VE
                      D.VE @paul53 last edited by

                      @paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):

                      Die Blockly-JS-Funktion hat den gleichen Namen wie die globale Funktion ?

                      Ja... Siehe Screenshot

                      @paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):

                      Eine Startzeit muss man sich nicht in einem Datenpunkt merken, denn die stellt der Datenpunkt des Aktors zur Verfügung, wenn er als Trigger verwendet wird:

                      Das ist kein SmartDevice, sondern eine 15 Jahre alte Spülmaschine die ich über den Shelly tracke. Wenn der Stromverbrauch unter 3 Watt liegt, ist sie aus (Standby) und wenn darüber sollte der Startzeitpunkt gesetzt werden.

                      lg, Dave

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @D.VE last edited by

                        @D-VE sagte:

                        Ja... Siehe Screenshot

                        Das wird das Problem sein. Verwende unterschiedliche Namen.

                        D.VE 1 Reply Last reply Reply Quote 0
                        • D.VE
                          D.VE @paul53 last edited by

                          @paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):

                          Das wird das Problem sein. Verwende unterschiedliche Namen.

                          Verstehe ich nicht... Wie soll er denn sonst wissen, welche JS Funktion ich aufrufen will???

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @D.VE last edited by paul53

                            @D-VE sagte:

                            Wie soll er denn sonst wissen, welche JS Funktion ich aufrufen will???

                            Bei gleichen Namen für die globale Funktion und die Blockly-JS-Funktion wird nicht die globale Funktion aus der JS-Funktion aufgerufen, sondern man erzeugt eine Endlosschleife.

                            D.VE 1 Reply Last reply Reply Quote 0
                            • D.VE
                              D.VE @paul53 last edited by D.VE

                              @paul53

                              Ich glaube, ich hab da etwas missverstanden...

                              Wie rufe ich die globale JavaScript-Funktion setStartTime() im Blockly korrekt auf?

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @D.VE last edited by paul53

                                @D-VE sagte:

                                Wie rufe ich die globale JavaScript-Funktion setStartTime() im Blockly korrekt auf?

                                Es genügt, im Namen der Blockly-JS-Funktion, einen Buchstaben zu ändern, z.B.

                                Blockly_temp.JPG

                                Inhalt:

                                setStartTime(deviceStr); // Aufruf der globalen Funktion
                                
                                D.VE 1 Reply Last reply Reply Quote 0
                                • D.VE
                                  D.VE @paul53 last edited by

                                  @paul53

                                  Ah... Jetzt hab ich das erst kapiert, dass man die JS Funktion nicht direkt aufrufen kann, sondern über einen Blockly Wrapper... Das war das fehlender Puzzlestück

                                  Vielen dank

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  493
                                  Online

                                  31.8k
                                  Users

                                  80.0k
                                  Topics

                                  1.3m
                                  Posts

                                  blockly javascript
                                  3
                                  15
                                  866
                                  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