Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly und Funktionen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

Blockly und Funktionen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
19 Beiträge 7 Kommentatoren 5.0k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • rantanplanR Offline
    rantanplanR Offline
    rantanplan
    schrieb am zuletzt editiert von
    #2

    @Plasmachef:

    Wenn nicht … welche Alternative habe ich (Datenpunkte anlegen, die Werte reinschreibe und dann Skript aufrufen kenne ich)? `

    Um nicht alles immer wieder neu anzulegen, Baustein mit strg-c kopieren und in anderem Script mit strg+v einfügen.

    Oder komplettes Blockly kopieren und nicht benötigte Bausteine löschen.

    Grüße

    Rantanplan

    CCU3 / MS Server 2019(VM) / Scripten mit Blockly

    1 Antwort Letzte Antwort
    0
    • PlasmachefP Offline
      PlasmachefP Offline
      Plasmachef
      schrieb am zuletzt editiert von
      #3

      Danke für den Tipp!

      Das kann es aber nicht sein, dass ich eine Funktion (Befehlsabfolge), die ich sicherlich 2-3 Dutzend mal brauche, an jede Stelle reinkopiere.

      … und was ist wenn ich Änderungen vornehmen möchte? Mach ich das dann 2-3 Dutzend mal???

      Da muss es eine besser Lösung geben :-)

      1 Antwort Letzte Antwort
      0
      • rantanplanR Offline
        rantanplanR Offline
        rantanplan
        schrieb am zuletzt editiert von
        #4

        @Plasmachef:

        Da muss es eine besser Lösung geben :-) `
        Nö, in Blockly, leider nicht.

        Wird es auch wohl nie geben.

        Grüße

        Rantanplan

        CCU3 / MS Server 2019(VM) / Scripten mit Blockly

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #5

          @Plasmachef:

          Das kann es aber nicht sein, dass ich eine Funktion (Befehlsabfolge), die ich sicherlich 2-3 Dutzend mal brauche, an jede Stelle reinkopiere.

          … und was ist wenn ich Änderungen vornehmen möchte? Mach ich das dann 2-3 Dutzend mal???

          Da muss es eine besser Lösung geben `
          Ja, wenn Du schon so professionell rangehst, dann solltest Du in Javascript programmieren. In JS kann man oft verwendete eigene Funktionen innerhalb von Skripten unter der Gruppe "global" erstellen. Diese Funktionen stehen in jedem (nicht globalen) Skript zur Verfügung, da sie dort automatisch reinkopiert werden.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • rantanplanR Offline
            rantanplanR Offline
            rantanplan
            schrieb am zuletzt editiert von
            #6

            @paul53:

            Ja, wenn Du schon so professionell rangehst, ….... `
            Danke, das habe ich jetzt auch verstanden :oops: :D

            Grüße

            Rantanplan

            CCU3 / MS Server 2019(VM) / Scripten mit Blockly

            1 Antwort Letzte Antwort
            0
            • PlasmachefP Offline
              PlasmachefP Offline
              Plasmachef
              schrieb am zuletzt editiert von
              #7

              PERFEKT!!!!

              > In JS kann man oft verwendete eigene Funktionen innerhalb von Skripten unter der Gruppe "global" erstellen. Diese Funktionen stehen in jedem (nicht globalen) Skript zur Verfügung, da sie dort automatisch reinkopiert werden.

              Herzlichen Dank, dass war der Tipp zum Wochenende!

              So gehts :-)

              Danke euch für die Hilfe :-)

              1 Antwort Letzte Antwort
              0
              • AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #8

                @rantanplan:

                @paul53:

                Ja, wenn Du schon so professionell rangehst, ….... Danke, das habe ich jetzt auch verstanden :oops: :D
                Wo er Recht hat ;) :twisted:

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                A 1 Antwort Letzte Antwort
                0
                • AlCalzoneA AlCalzone

                  @rantanplan:

                  @paul53:

                  Ja, wenn Du schon so professionell rangehst, ….... Danke, das habe ich jetzt auch verstanden :oops: :D
                  Wo er Recht hat ;) :twisted:

                  A Offline
                  A Offline
                  acme2020
                  schrieb am zuletzt editiert von
                  #9

                  Ich habe ein ähnliches Problem. Ich habe mittlerweile eine ganze Reihe smarte Heizungsthermostate, die ich steueree. Natürlich auch abhängig von den dazugehörigen Fenstersensoren. Das läuft alles schon einwandfrei, aber ich würde gerne die Befehle zur Steuerung samt Nachricht zum Messenger Signal in eine separate Funktion auslagern, damit ich das nicht zig-mal in die Scripte kopieren muss. Eine Änderung an der Befehls-/Nachrichtenroutine ist im Moment halt mega aufwändig.

                  Gibt es mittlerweile vielleicht einen Weg, von einem Blockly Script ein anderes aufzurufen oder als Include einzubinden? Ich habe wenig Lust, das ganze in Javascript zu programmieren, weil für den Ablauf ein Blockly Script deutlich übersichtlicher ist. Eventuell wäre natürlich der Aufruf einer Javascript Funktion von einem Blockly Script denkbar, aber das habe ich leider nicht hinbekommen.

                  Für einen Schubser wäre ich sehr dankbar, um alles etwas zu optimieren.

                  --

                  Gruß
                  Uwe.

                  DJMarc75D 1 Antwort Letzte Antwort
                  0
                  • A acme2020

                    Ich habe ein ähnliches Problem. Ich habe mittlerweile eine ganze Reihe smarte Heizungsthermostate, die ich steueree. Natürlich auch abhängig von den dazugehörigen Fenstersensoren. Das läuft alles schon einwandfrei, aber ich würde gerne die Befehle zur Steuerung samt Nachricht zum Messenger Signal in eine separate Funktion auslagern, damit ich das nicht zig-mal in die Scripte kopieren muss. Eine Änderung an der Befehls-/Nachrichtenroutine ist im Moment halt mega aufwändig.

                    Gibt es mittlerweile vielleicht einen Weg, von einem Blockly Script ein anderes aufzurufen oder als Include einzubinden? Ich habe wenig Lust, das ganze in Javascript zu programmieren, weil für den Ablauf ein Blockly Script deutlich übersichtlicher ist. Eventuell wäre natürlich der Aufruf einer Javascript Funktion von einem Blockly Script denkbar, aber das habe ich leider nicht hinbekommen.

                    Für einen Schubser wäre ich sehr dankbar, um alles etwas zu optimieren.

                    --

                    Gruß
                    Uwe.

                    DJMarc75D Offline
                    DJMarc75D Offline
                    DJMarc75
                    schrieb am zuletzt editiert von
                    #10

                    @acme2020 sagte in Blockly und Funktionen:

                    Ich habe ein ähnliches Problem

                    ein FÜNF jahrealter Beitrag und Du hast ein ähnliches Problem ??

                    Welche Thermostate ?
                    Welche Sensoren ?
                    Signa l?
                    Was hast Du denn genau vor?
                    Was hat Du bisher gemacht ?
                    Schubbs uns mal in die richtige Richtung damit wir helfen können !

                    Lehrling seit 1975 !!!
                    Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
                    https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

                    A 1 Antwort Letzte Antwort
                    0
                    • DJMarc75D DJMarc75

                      @acme2020 sagte in Blockly und Funktionen:

                      Ich habe ein ähnliches Problem

                      ein FÜNF jahrealter Beitrag und Du hast ein ähnliches Problem ??

                      Welche Thermostate ?
                      Welche Sensoren ?
                      Signa l?
                      Was hast Du denn genau vor?
                      Was hat Du bisher gemacht ?
                      Schubbs uns mal in die richtige Richtung damit wir helfen können !

                      A Offline
                      A Offline
                      acme2020
                      schrieb am zuletzt editiert von
                      #11

                      @DJMarc75
                      Unitec Thermostate, Aqara Fenstersensoren, Benachrichtigung an Signal (Telegram und WhatsApp sind absolutes No-Go) über CallMeBot API. Das funktioniert auch alles wunderbar, so wie ich mir das vorstelle.

                      6 Uhr z.B. stellt der Thermostat im Wohnzimmer 22 Grad ein und um 22 Uhr auf 18 Grad. Ich habe zur Zeit 6 Thermostate laufen, die ähnlich schalten. Ich möchte gern eine Funktion separat haben, die ich mit Parametern (Temperatur, ZigBee Objekt, Text, usw.) aufrufen kann, damit ich das nicht zig-mal in die Scripte kopieren muss. Die Scripte für jeden Thermostat sind ja fast gleich, bis auf die Zeiten, die Temperatur und die Objekt-ID.

                      Das möchte ich halt vereinfachen, wie das in einem guten Programm so üblich ist.

                      --

                      Gruß
                      Uwe.

                      CodierknechtC 1 Antwort Letzte Antwort
                      0
                      • A acme2020

                        @DJMarc75
                        Unitec Thermostate, Aqara Fenstersensoren, Benachrichtigung an Signal (Telegram und WhatsApp sind absolutes No-Go) über CallMeBot API. Das funktioniert auch alles wunderbar, so wie ich mir das vorstelle.

                        6 Uhr z.B. stellt der Thermostat im Wohnzimmer 22 Grad ein und um 22 Uhr auf 18 Grad. Ich habe zur Zeit 6 Thermostate laufen, die ähnlich schalten. Ich möchte gern eine Funktion separat haben, die ich mit Parametern (Temperatur, ZigBee Objekt, Text, usw.) aufrufen kann, damit ich das nicht zig-mal in die Scripte kopieren muss. Die Scripte für jeden Thermostat sind ja fast gleich, bis auf die Zeiten, die Temperatur und die Objekt-ID.

                        Das möchte ich halt vereinfachen, wie das in einem guten Programm so üblich ist.

                        --

                        Gruß
                        Uwe.

                        CodierknechtC Online
                        CodierknechtC Online
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von
                        #12

                        @acme2020
                        Die Lösung wurde ja auch schon vor fast 5 Jahren genannt: JS in "global".

                        @paul53 sagte in Blockly und Funktionen:

                        Ja, wenn Du schon so professionell rangehst, dann solltest Du in Javascript programmieren. In JS kann man oft verwendete eigene Funktionen innerhalb von Skripten unter der Gruppe "global" erstellen. Diese Funktionen stehen in jedem (nicht globalen) Skript zur Verfügung, da sie dort automatisch reinkopiert werden.

                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                        HmIP|ZigBee|Tasmota|Unifi
                        Zabbix Certified Specialist
                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                        A 1 Antwort Letzte Antwort
                        0
                        • CodierknechtC Codierknecht

                          @acme2020
                          Die Lösung wurde ja auch schon vor fast 5 Jahren genannt: JS in "global".

                          @paul53 sagte in Blockly und Funktionen:

                          Ja, wenn Du schon so professionell rangehst, dann solltest Du in Javascript programmieren. In JS kann man oft verwendete eigene Funktionen innerhalb von Skripten unter der Gruppe "global" erstellen. Diese Funktionen stehen in jedem (nicht globalen) Skript zur Verfügung, da sie dort automatisch reinkopiert werden.

                          A Offline
                          A Offline
                          acme2020
                          schrieb am zuletzt editiert von
                          #13

                          @codierknecht
                          Das hab ich wohl glesen, bekomme ich aber irgendwie nicht hin. Wie rufe ich denn so eine Funktion mit Parametern auf? Hast du mal ein konkretes Beispiel, das ich als Vorlage nehmen kann?

                          CodierknechtC paul53P 2 Antworten Letzte Antwort
                          0
                          • A acme2020

                            @codierknecht
                            Das hab ich wohl glesen, bekomme ich aber irgendwie nicht hin. Wie rufe ich denn so eine Funktion mit Parametern auf? Hast du mal ein konkretes Beispiel, das ich als Vorlage nehmen kann?

                            CodierknechtC Online
                            CodierknechtC Online
                            Codierknecht
                            Developer Most Active
                            schrieb am zuletzt editiert von Codierknecht
                            #14

                            @acme2020
                            In "global" habe ich eine Funktion zum Versenden von Nachrichten via Signal:

                            function sendSignalMessage(aText, aNumber) {
                                if (aNumber == '') aNumber = mobileNumber;
                                sendTo("signalclirestapiclient.0", "send", {
                                    "text": aText,
                                    "numbers": [aNumber]
                                });
                            }
                            

                            Die kann ich jetzt in jedem anderen Script aufrufen:

                            function Blubb() {
                                message += (message != '' ? '\n' : '') + 'ACHTUNG: Frostgefahr am ' + wochentag;
                                message += '\nTemperatur: ' + obj.state.val + ' °C';
                                await sendSignalMessage(message, mobileNumber);
                            }
                            

                            Auch mobileNumber ist als Konstante nur einmal im globalen Script angelegt und kann überall verwendet werden.

                            Wie @paul53 aber bereits vor Jahren schrieb: Geht nur am besten in JS!
                            In Blockly müsstest Du Dir jeweils wieder eine Wrapper-Funktion in JS schreiben. Da ist der Nutzen bei so ein paar Zeilen schon fast wieder dahin.

                            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                            HmIP|ZigBee|Tasmota|Unifi
                            Zabbix Certified Specialist
                            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                            A 1 Antwort Letzte Antwort
                            0
                            • CodierknechtC Codierknecht

                              @acme2020
                              In "global" habe ich eine Funktion zum Versenden von Nachrichten via Signal:

                              function sendSignalMessage(aText, aNumber) {
                                  if (aNumber == '') aNumber = mobileNumber;
                                  sendTo("signalclirestapiclient.0", "send", {
                                      "text": aText,
                                      "numbers": [aNumber]
                                  });
                              }
                              

                              Die kann ich jetzt in jedem anderen Script aufrufen:

                              function Blubb() {
                                  message += (message != '' ? '\n' : '') + 'ACHTUNG: Frostgefahr am ' + wochentag;
                                  message += '\nTemperatur: ' + obj.state.val + ' °C';
                                  await sendSignalMessage(message, mobileNumber);
                              }
                              

                              Auch mobileNumber ist als Konstante nur einmal im globalen Script angelegt und kann überall verwendet werden.

                              Wie @paul53 aber bereits vor Jahren schrieb: Geht nur am besten in JS!
                              In Blockly müsstest Du Dir jeweils wieder eine Wrapper-Funktion in JS schreiben. Da ist der Nutzen bei so ein paar Zeilen schon fast wieder dahin.

                              A Offline
                              A Offline
                              acme2020
                              schrieb am zuletzt editiert von
                              #15

                              @codierknecht
                              Danke, schau ich mir morgen mal an.

                              Ich schicke die Nachricht an Signal aus Blockly bisher immer per Request URL an https://api.callmebot.com/signal/send.php?phone=+491741234567&apikey=123456&text="Nachricht". So brauche ich keinen Adapter dafür. Klappt prima.

                              CodierknechtC 1 Antwort Letzte Antwort
                              0
                              • A acme2020

                                @codierknecht
                                Das hab ich wohl glesen, bekomme ich aber irgendwie nicht hin. Wie rufe ich denn so eine Funktion mit Parametern auf? Hast du mal ein konkretes Beispiel, das ich als Vorlage nehmen kann?

                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #16

                                @acme2020 sagte: ein konkretes Beispiel

                                Siehe hier.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                A 1 Antwort Letzte Antwort
                                0
                                • A acme2020

                                  @codierknecht
                                  Danke, schau ich mir morgen mal an.

                                  Ich schicke die Nachricht an Signal aus Blockly bisher immer per Request URL an https://api.callmebot.com/signal/send.php?phone=+491741234567&apikey=123456&text="Nachricht". So brauche ich keinen Adapter dafür. Klappt prima.

                                  CodierknechtC Online
                                  CodierknechtC Online
                                  Codierknecht
                                  Developer Most Active
                                  schrieb am zuletzt editiert von
                                  #17

                                  @acme2020 sagte in Blockly und Funktionen:

                                  So brauche ich keinen Adapter dafür. Klappt prima

                                  Das wird über eine meiner eigenen Rufnummern mit eigener SIM gesendet. Das geht nicht per CallMeBot ;-)

                                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                  HmIP|ZigBee|Tasmota|Unifi
                                  Zabbix Certified Specialist
                                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                  1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @acme2020 sagte: ein konkretes Beispiel

                                    Siehe hier.

                                    A Offline
                                    A Offline
                                    acme2020
                                    schrieb am zuletzt editiert von
                                    #18

                                    @paul53
                                    Super, danke.:+1:

                                    A 1 Antwort Letzte Antwort
                                    0
                                    • A acme2020

                                      @paul53
                                      Super, danke.:+1:

                                      A Offline
                                      A Offline
                                      acme2020
                                      schrieb am zuletzt editiert von
                                      #19

                                      Ich habe eine andere, wie ich glaube, elegante Lösung gefunden, die ohne Pogrammierung in JavaScript auskommt.

                                      Ich habe mir fürs Senden nach Signal ein normales Blockly Script (_SendToSignal) geschrieben, was einfach ein paar extra dafür eingerichtete Datenpunkte (0_userdata.0.SendToSignal.SendStat, 0_userdata.0.SendToSignal.Text) überwacht. Wenn irgendein beliebiges Script, auch Blockly, den Datenpunkt SendStat auf true setzt, sendet das Script den String in Text an Signal und setzt SendStat auf false. Das wars. Total einfach im Handling.

                                      Sowas kann man mit beliebigen Funktionen erledigen, die in mehreren Scripn gleich sind. Das baue ich mir jetzt noch für die Thermostateinstellung und gut ist.

                                      1 Antwort Letzte Antwort
                                      0
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      836

                                      Online

                                      32.4k

                                      Benutzer

                                      81.6k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe