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. JavaScript
  5. [gelöst] Wie krieg ich "result" an Blockly übergeben

NEWS

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

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

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

[gelöst] Wie krieg ich "result" an Blockly übergeben

Geplant Angeheftet Gesperrt Verschoben JavaScript
12 Beiträge 4 Kommentatoren 742 Aufrufe 4 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.
  • metaxaM Offline
    metaxaM Offline
    metaxa
    schrieb am zuletzt editiert von metaxa
    #1

    Liebes Forum,
    ahnungslos doktore ich jetzt schon seit Tagen mit den Blocklybausteinen
    084494ec-5436-42ff-876c-795fd9de49e4-image.png
    herum und komme einfach nicht weiter. Auch finde ich hier im Forum nix was mir weiterhilft, oder ich verwende die falschen Suchkriterien.

    Ich habe noch 5 alte HM Thermostate in Betrieb. Seit Jahren stelle ich den Modus dieser je nach Bedarf mittels eines abgekupferten und dankenswerter Weise mit Hilfe von @Homoran JS, hin und her.

    Beispiel:

    sendTo('hm-rpc.0', 'putParamset', {ID: 'GEQ0162204:2', 
        paramType: 'MASTER', params: {'MODE_TEMPERATUR_REGULATOR': 0}}, 
        // res => {
           // log(JSON.stringify(res));
        // }
    );
    

    Nun möchte ich die Thermostate periodisch prüfen und das Ergebnis mit Blockly verarbeiten. Ich komme nur mit JS nicht auf gleich, bzw. bin einfach zu blöd dafür:thinking_face:

    c768210a-7457-446a-8b0a-1e82fdfb54b1-image.png

    // Liest nur 1 Parameter aus
    // manu (0) oder auto (1) oder cen (2)
    // Wohnzimmer
    return 0;
    sendTo('hm-rpc.0', 'getParamset', {ID: 'HEQ0510329:2', paramType: 'MASTER'}, res => {
        // log(JSON.stringify(res)); //Liest alle Paprameter aus
        log(JSON.stringify(res.result.MODE_TEMPERATUR_REGULATOR)); //schreibt nur den aktuellen Modus ins Log
        // setState('0_userdata.0.Hilfsdatenpunkte.ScriptDP.HM.Thermostat_WZ.Master_Parameter', res.result.MODE_TEMPERATUR_REGULATOR, true);
    });
    

    9ac1ca6f-81fa-4410-b175-1ca22c9a6c9c-image.png

    Ich krieg das Resultat der Abfrage nicht nach Blockly.

    Kann mir bitte jemand unter die Arme greifen?

    Danke, mxa

    paul53P haus-automatisierungH 2 Antworten Letzte Antwort
    0
    • metaxaM metaxa

      Liebes Forum,
      ahnungslos doktore ich jetzt schon seit Tagen mit den Blocklybausteinen
      084494ec-5436-42ff-876c-795fd9de49e4-image.png
      herum und komme einfach nicht weiter. Auch finde ich hier im Forum nix was mir weiterhilft, oder ich verwende die falschen Suchkriterien.

      Ich habe noch 5 alte HM Thermostate in Betrieb. Seit Jahren stelle ich den Modus dieser je nach Bedarf mittels eines abgekupferten und dankenswerter Weise mit Hilfe von @Homoran JS, hin und her.

      Beispiel:

      sendTo('hm-rpc.0', 'putParamset', {ID: 'GEQ0162204:2', 
          paramType: 'MASTER', params: {'MODE_TEMPERATUR_REGULATOR': 0}}, 
          // res => {
             // log(JSON.stringify(res));
          // }
      );
      

      Nun möchte ich die Thermostate periodisch prüfen und das Ergebnis mit Blockly verarbeiten. Ich komme nur mit JS nicht auf gleich, bzw. bin einfach zu blöd dafür:thinking_face:

      c768210a-7457-446a-8b0a-1e82fdfb54b1-image.png

      // Liest nur 1 Parameter aus
      // manu (0) oder auto (1) oder cen (2)
      // Wohnzimmer
      return 0;
      sendTo('hm-rpc.0', 'getParamset', {ID: 'HEQ0510329:2', paramType: 'MASTER'}, res => {
          // log(JSON.stringify(res)); //Liest alle Paprameter aus
          log(JSON.stringify(res.result.MODE_TEMPERATUR_REGULATOR)); //schreibt nur den aktuellen Modus ins Log
          // setState('0_userdata.0.Hilfsdatenpunkte.ScriptDP.HM.Thermostat_WZ.Master_Parameter', res.result.MODE_TEMPERATUR_REGULATOR, true);
      });
      

      9ac1ca6f-81fa-4410-b175-1ca22c9a6c9c-image.png

      Ich krieg das Resultat der Abfrage nicht nach Blockly.

      Kann mir bitte jemand unter die Arme greifen?

      Danke, mxa

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

      @metaxa sagte: Ich krieg das Resultat der Abfrage nicht nach Blockly.

      Wenn die Funktion vor sendTo() mit

      return 0;
      

      beendet wird, kann nichts geloggt 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

      metaxaM 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @metaxa sagte: Ich krieg das Resultat der Abfrage nicht nach Blockly.

        Wenn die Funktion vor sendTo() mit

        return 0;
        

        beendet wird, kann nichts geloggt werden.

        metaxaM Offline
        metaxaM Offline
        metaxa
        schrieb am zuletzt editiert von
        #3

        @paul53 Lieben Dank für deine Reaktion!

        Dieser "Befehl" kommt automatisch mit wenn ich in Blockly den Baustein "JS-Funktion mit Ergebniss" auswähle. Ich hatte den Befehl auch schon am Ende, aber da kam auch nix an. Oder gehört der auf "1" gestellt?

        CodierknechtC paul53P 2 Antworten Letzte Antwort
        0
        • metaxaM metaxa

          @paul53 Lieben Dank für deine Reaktion!

          Dieser "Befehl" kommt automatisch mit wenn ich in Blockly den Baustein "JS-Funktion mit Ergebniss" auswähle. Ich hatte den Befehl auch schon am Ende, aber da kam auch nix an. Oder gehört der auf "1" gestellt?

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von Codierknecht
          #4

          @metaxa sagte in Wie krieg ich "result" an Blockly übergeben:

          Dieser "Befehl" kommt automatisch mit wenn ich in Blockly den Baustein "JS-Funktion mit Ergebniss" auswähle

          Ja - als Beispiel.
          Hinter dem "return" folgt das, was als Ergebnis zurückkommen soll.
          Mit einem "return" wird eine Funktion aber auch beendet. Das wird also als letztes aufgerufen. Nachdem das Ergebnis feststeht.

          Was möchtest Du denn als Ergebnis zurückliefern?

          "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

          metaxaM 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

            @metaxa sagte in Wie krieg ich "result" an Blockly übergeben:

            Dieser "Befehl" kommt automatisch mit wenn ich in Blockly den Baustein "JS-Funktion mit Ergebniss" auswähle

            Ja - als Beispiel.
            Hinter dem "return" folgt das, was als Ergebnis zurückkommen soll.
            Mit einem "return" wird eine Funktion aber auch beendet. Das wird also als letztes aufgerufen. Nachdem das Ergebnis feststeht.

            Was möchtest Du denn als Ergebnis zurückliefern?

            metaxaM Offline
            metaxaM Offline
            metaxa
            schrieb am zuletzt editiert von
            #5

            @codierknecht

            sendTo('hm-rpc.0', 'getParamset', {ID: 'HEQ0510329:2', paramType: 'MASTER'}, res => {
                // log(JSON.stringify(res)); //Liest alle Paprameter aus
                log(JSON.stringify(res.result.MODE_TEMPERATUR_REGULATOR)); //schreibt nur den aktuellen Modus ins Log
                // setState('0_userdata.0.Hilfsdatenpunkte.ScriptDP.HM.Thermostat_WZ.Master_Parameter', res.result.MODE_TEMPERATUR_REGULATOR, true);
            });
            

            Diese Abfrage des aktuellen Modus sollte "0", "1" oder "2" zurückgeben. Mit der Ziffer kann ich dann in Blockly weiterarbeiten.

            CodierknechtC 1 Antwort Letzte Antwort
            0
            • metaxaM metaxa

              @codierknecht

              sendTo('hm-rpc.0', 'getParamset', {ID: 'HEQ0510329:2', paramType: 'MASTER'}, res => {
                  // log(JSON.stringify(res)); //Liest alle Paprameter aus
                  log(JSON.stringify(res.result.MODE_TEMPERATUR_REGULATOR)); //schreibt nur den aktuellen Modus ins Log
                  // setState('0_userdata.0.Hilfsdatenpunkte.ScriptDP.HM.Thermostat_WZ.Master_Parameter', res.result.MODE_TEMPERATUR_REGULATOR, true);
              });
              

              Diese Abfrage des aktuellen Modus sollte "0", "1" oder "2" zurückgeben. Mit der Ziffer kann ich dann in Blockly weiterarbeiten.

              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von Codierknecht
              #6

              @metaxa

              Ich nehme mal an, dass das dann auch als Zahl zurückgegeben werden soll?

              Hier stand quatsch ...

              "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
              • metaxaM metaxa

                Liebes Forum,
                ahnungslos doktore ich jetzt schon seit Tagen mit den Blocklybausteinen
                084494ec-5436-42ff-876c-795fd9de49e4-image.png
                herum und komme einfach nicht weiter. Auch finde ich hier im Forum nix was mir weiterhilft, oder ich verwende die falschen Suchkriterien.

                Ich habe noch 5 alte HM Thermostate in Betrieb. Seit Jahren stelle ich den Modus dieser je nach Bedarf mittels eines abgekupferten und dankenswerter Weise mit Hilfe von @Homoran JS, hin und her.

                Beispiel:

                sendTo('hm-rpc.0', 'putParamset', {ID: 'GEQ0162204:2', 
                    paramType: 'MASTER', params: {'MODE_TEMPERATUR_REGULATOR': 0}}, 
                    // res => {
                       // log(JSON.stringify(res));
                    // }
                );
                

                Nun möchte ich die Thermostate periodisch prüfen und das Ergebnis mit Blockly verarbeiten. Ich komme nur mit JS nicht auf gleich, bzw. bin einfach zu blöd dafür:thinking_face:

                c768210a-7457-446a-8b0a-1e82fdfb54b1-image.png

                // Liest nur 1 Parameter aus
                // manu (0) oder auto (1) oder cen (2)
                // Wohnzimmer
                return 0;
                sendTo('hm-rpc.0', 'getParamset', {ID: 'HEQ0510329:2', paramType: 'MASTER'}, res => {
                    // log(JSON.stringify(res)); //Liest alle Paprameter aus
                    log(JSON.stringify(res.result.MODE_TEMPERATUR_REGULATOR)); //schreibt nur den aktuellen Modus ins Log
                    // setState('0_userdata.0.Hilfsdatenpunkte.ScriptDP.HM.Thermostat_WZ.Master_Parameter', res.result.MODE_TEMPERATUR_REGULATOR, true);
                });
                

                9ac1ca6f-81fa-4410-b175-1ca22c9a6c9c-image.png

                Ich krieg das Resultat der Abfrage nicht nach Blockly.

                Kann mir bitte jemand unter die Arme greifen?

                Danke, mxa

                haus-automatisierungH Offline
                haus-automatisierungH Offline
                haus-automatisierung
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @metaxa sagte in Wie krieg ich "result" an Blockly übergeben:

                Kann mir bitte jemand unter die Arme greifen?

                Du musst mit einem Promise arbeiten, da sonst die Callback-Funktion erst aufgerufen wird, wenn Deine Funktion längst abgearbeitet ist.

                const res = await sendToAsync('hm-rpc.0', 'getParamset', { ID: 'HEQ0510329:2', paramType: 'MASTER' });
                return res.result.MODE_TEMPERATUR_REGULATOR;
                

                🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                📚 Meine inoffizielle ioBroker Dokumentation

                metaxaM 1 Antwort Letzte Antwort
                2
                • metaxaM metaxa

                  @paul53 Lieben Dank für deine Reaktion!

                  Dieser "Befehl" kommt automatisch mit wenn ich in Blockly den Baustein "JS-Funktion mit Ergebniss" auswähle. Ich hatte den Befehl auch schon am Ende, aber da kam auch nix an. Oder gehört der auf "1" gestellt?

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

                  @metaxa sagte: da kam auch nix an.

                  Man kann aus einer Callback-Funktion nichts an den Funktionsaufruf zurück geben, da die Callback-Funktion erst später aufgerufen wird. Wenn setState() innerhalb der Callback-Funktion ausgeführt wird, wird das Ergebnis in den DP geschrieben.

                  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
                  • haus-automatisierungH haus-automatisierung

                    @metaxa sagte in Wie krieg ich "result" an Blockly übergeben:

                    Kann mir bitte jemand unter die Arme greifen?

                    Du musst mit einem Promise arbeiten, da sonst die Callback-Funktion erst aufgerufen wird, wenn Deine Funktion längst abgearbeitet ist.

                    const res = await sendToAsync('hm-rpc.0', 'getParamset', { ID: 'HEQ0510329:2', paramType: 'MASTER' });
                    return res.result.MODE_TEMPERATUR_REGULATOR;
                    
                    metaxaM Offline
                    metaxaM Offline
                    metaxa
                    schrieb am zuletzt editiert von
                    #9

                    @haus-automatisierung sagte in Wie krieg ich "result" an Blockly übergeben:

                    Du musst mit einem Promise arbeiten

                    Ich verstehe es nicht, liegt an meinen NICHT vorhandenen JS Kenntnissen. Leider gibt es keine Blockly Möglichkeit bei den alten Thermostaten den aktuellen Modus abzufragen, weswegen ich Euch quälen und um Hilfe bitten muss.

                    Es funktioniert :-)
                    7dc103f2-078e-41c4-bda2-96d7917943b1-image.png
                    0fc4d752-d580-46cd-9501-f95a728c6b8a-image.png

                    Lieben Dank @haus-automatisierung & @paul53 & @Codierknecht

                    haus-automatisierungH CodierknechtC 2 Antworten Letzte Antwort
                    0
                    • metaxaM metaxa

                      @haus-automatisierung sagte in Wie krieg ich "result" an Blockly übergeben:

                      Du musst mit einem Promise arbeiten

                      Ich verstehe es nicht, liegt an meinen NICHT vorhandenen JS Kenntnissen. Leider gibt es keine Blockly Möglichkeit bei den alten Thermostaten den aktuellen Modus abzufragen, weswegen ich Euch quälen und um Hilfe bitten muss.

                      Es funktioniert :-)
                      7dc103f2-078e-41c4-bda2-96d7917943b1-image.png
                      0fc4d752-d580-46cd-9501-f95a728c6b8a-image.png

                      Lieben Dank @haus-automatisierung & @paul53 & @Codierknecht

                      haus-automatisierungH Offline
                      haus-automatisierungH Offline
                      haus-automatisierung
                      Developer Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @metaxa sagte in [gelöst] Wie krieg ich "result" an Blockly übergeben:

                      Ich verstehe es nicht, liegt an meinen NICHT vorhandenen JS Kenntnissen.

                      Na in Deinem Ausgangspost rufst Du sendTo auf. Als letzten Parameter übergibst Du eine Funktion. Diese Funktion wird dann aufgerufen, sobald das Ergebnis vorliegt. Das Problem ist aber, dass die umliegende Funktion darauf nicht wartet. Das sendTo wird also ausgeführt und sofort ist die umliegende Funktion abgearbeitet.

                      Um diesem Problem vorzubeugen, gibt es in JavaScript sog. Promises (für Google). Für länger laufende Aufgaben kann man sich also explizit entscheiden, auf die Abarbeitung zu warten (mit dem Schlüsselwort await. Dafür ist nur wichtig, dass die aufgerufene Funktion ein Promise zurückgibt. Und das macht die Funktion mit dem Namen sendToAsync.

                      Und dann kann man damit eben weiterarbeiten. Damit man mit await arbeiten kann, muss die umliegende aber als async definiert sein. Aber das sind alle per Blockly definierten Funktionen automatisch. Siehst Du auch, wenn Du auf JavaScript umschaltest.

                      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                      📚 Meine inoffizielle ioBroker Dokumentation

                      1 Antwort Letzte Antwort
                      1
                      • metaxaM metaxa

                        @haus-automatisierung sagte in Wie krieg ich "result" an Blockly übergeben:

                        Du musst mit einem Promise arbeiten

                        Ich verstehe es nicht, liegt an meinen NICHT vorhandenen JS Kenntnissen. Leider gibt es keine Blockly Möglichkeit bei den alten Thermostaten den aktuellen Modus abzufragen, weswegen ich Euch quälen und um Hilfe bitten muss.

                        Es funktioniert :-)
                        7dc103f2-078e-41c4-bda2-96d7917943b1-image.png
                        0fc4d752-d580-46cd-9501-f95a728c6b8a-image.png

                        Lieben Dank @haus-automatisierung & @paul53 & @Codierknecht

                        CodierknechtC Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von Codierknecht
                        #11

                        @metaxa sagte in [gelöst] Wie krieg ich "result" an Blockly übergeben:

                        Es funktioniert

                        Könnte man aber noch etwas "optimieren".

                        eb431eb3-465f-413c-9175-3ac31b02d76c-image.png

                        Muss da wirklich mit 'nem Zeitplan gearbeitet werden?
                        Gibt es da keinen Datenpunkt, auf dessen Wertänderung man reagieren könnte?

                        Edit
                        Dieser DP muss ja nicht zwangsläufig einer sein, der auch gleich den passenden Wert liefert. Es reicht ja aus, dass man mitbekommt ob und wann sich da etwas ändert.
                        Ist halt ein Unterschied, ob man das 1.440 x am Tag aufruft, oder nur dann wenn sich auch tatsächlich etwas geändert hat.

                        "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

                        metaxaM 1 Antwort Letzte Antwort
                        2
                        • CodierknechtC Codierknecht

                          @metaxa sagte in [gelöst] Wie krieg ich "result" an Blockly übergeben:

                          Es funktioniert

                          Könnte man aber noch etwas "optimieren".

                          eb431eb3-465f-413c-9175-3ac31b02d76c-image.png

                          Muss da wirklich mit 'nem Zeitplan gearbeitet werden?
                          Gibt es da keinen Datenpunkt, auf dessen Wertänderung man reagieren könnte?

                          Edit
                          Dieser DP muss ja nicht zwangsläufig einer sein, der auch gleich den passenden Wert liefert. Es reicht ja aus, dass man mitbekommt ob und wann sich da etwas ändert.
                          Ist halt ein Unterschied, ob man das 1.440 x am Tag aufruft, oder nur dann wenn sich auch tatsächlich etwas geändert hat.

                          metaxaM Offline
                          metaxaM Offline
                          metaxa
                          schrieb am zuletzt editiert von metaxa
                          #12

                          @codierknecht sagte in [gelöst] Wie krieg ich "result" an Blockly übergeben:

                          Muss da wirklich mit 'nem Zeitplan gearbeitet werden?

                          Leider ja, natürlich nicht jede Minute wie in meinem Beispiel, das war nur für die Dauer des Testes. Die alten MH bieten leider keinen DP der sich ändert wenn am Thermostat manuell der Modus verändert wird.

                          6d4897f0-f033-4bd7-b14e-946cb28241f0-image.png

                          Nachdem ich 5 oder 6 Stk. abfragen muss, werde ich vermutlich auf einen Interval von 10 oder gar 30 Minuten gehen.

                          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

                          464

                          Online

                          32.4k

                          Benutzer

                          81.5k

                          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