Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JScript-Editor in Blockly zickt rum

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JScript-Editor in Blockly zickt rum

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @iobroker2001 last edited by paul53

      @iobroker2001
      Die Javascript-Funktion erstellt Blockly. In das Editor-Fenster (3 Punkte) der Funktion gehört nur der Inhalt der Funktion. Oder hast Du versucht, die Javascript-Ansicht des Blockly zu editieren? Das geht nicht: Es ist eine reine Anzeige.

      Blockly_temp.JPG

      Hier kann man mit Ctrl-V einfügen:

      Blockly_temp.JPG

      Funktioniert bei mir problemlos (auch viele Zeilen). Ist vielleicht der Quelltext schon versaut?

      Codierknecht G I 3 Replies Last reply Reply Quote 1
      • Codierknecht
        Codierknecht Developer Most Active @paul53 last edited by

        @paul53 sagte in JScript-Editor in Blockly zickt rum:

        Ist vielleicht der Quelltext schon versaut?

        Da stellt sich für mich auch die Frage: Wo kommt der Quellcode her?

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

          @paul53 said in JScript-Editor in Blockly zickt rum:

          Ist vielleicht der Quelltext schon versaut?

          Offensichtlich. Die meisten Zeilen kann man ja nicht vollständig sehen. Aber in der dritten Zeile wird deutlich, dass die Hochkommas nicht paarweise gesetzt sind. Wer weiß, was da sonst noch schief ist.

          38f37c64-f9e8-445d-85ca-126a32d59e08-grafik.png

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @GombersIOB last edited by Codierknecht

            @gombersiob
            Wo kommt der denn her?
            .Schattieru...: sieht schon sehr schräg aus. Da stimmt sicher noch 'ne ganze Menge mehr nicht.

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

              Zunächst einmal danke für Eure Antworten!
              Es ist mir peinlich, ich habe mich geirrt, der Fehler tritt nicht beim Einfügen, sondern beim Herauskopieren auf, sorry für die Verwirrung!

              Meine Vorgehensweise:
              Ich befinde mich im Blockly-Editor und erzeuge eine Funktion namens "Kreiere Datenpunkte".

              Genau in diesen Funktions-Editor (über die 3 Punkte) füge ich diesen Text per Ctrl-V ein:
              (Das sollte reines ASCII sein 😉 .)

                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Aktivschalter.SchlafzimmerSchattierungAktiv', true, {name: "SchlafzimmerSchattierungAktiv", type: "boolean", role: "state"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Aktivschalter.SchlafzimmerAktiv', true, {name: "SchlafzimmerAktiv", type: "boolean", role: "state"        });
              
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.Istwerte.SchattenzahlSchlafzimmerRolladen', 0, {name: "SchattenzahlSchlafzimmerRolladen", type: "number", role: "state"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.AzimuthEndeSchlafzimmer', 0, {name: "AzimuthEndeSchlafzimmer", type: "number", role: "state", unit: "°"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.AzimuthStartSchlafzimmer', 0, {name: "AzimuthStartSchlafzimmer", type: "number", role: "state", unit: "°"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.HelligkeitHiSchlafzimmer', 0, {name: "HelligkeitHiSchlafzimmer", type: "number", role: "state", unit: "klux"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.HelligkeitLoSchlafzimmer', 0, {name: "HelligkeitLoSchlafzimmer", type: "number", role: "state", unit: "klux"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.TempAußenMinMarkiseSchlafzimmer', 15, {name: "TempAußenMinMarkiseSchlafzimmer", type: "number", role: "state", unit: "°C"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.TempInnenMinMarkiseSchlafzimmer', 15, {name: "TempInnenMinMarkiseSchlafzimmer", type: "number", role: "state", unit: "°C"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.WartezeitSchlafzimmerRolladen', 1800000, {name: "WartezeitSchlafzimmerRolladen", type: "number", role: "state", unit: "ms"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.WartezeitNachManuellMarkiseSchlafzimmer', 3600000, {name: "WartezeitNachManuellMarkiseSchlafzimmer", type: "number", role: "state", unit: "ms"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Status.StatusMarkiseSchlafzimmer', 0, {name: "StatusMarkiseSchlafzimmer", type: "string", role: "state"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.PosSchattierungMarkiseSchlafzimmer', 20, {name: "PosSchattierungMarkiseSchlafzimmer", type: "string", role: "state"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.ZeitStartSchattierungMarkiseSchlafzimmer', '09:00', {name: "ZeitStartSchattierungMarkiseSchlafzimmer", type: "string", role: "state"        });
              
                  createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.ZeitEndeSchattierungMarkiseSchlafzimmer', '18:00', {name: "ZeitEndeSchattierungMarkiseSchlafzimmer", type: "string", role: "state"        });
              
              

              Das funktioniert, mit dem kleinen Schönheitsfehler, dass jede folgende Zeile um einen Tab eingerückt ist, s. Bild.
              blockly eingerückt.png

              Kann man mit "Dokument formatieren" beheben. So weit, so gut! Ausführen der Funktion klappt ebenfalls.
              Versuche ich jetzt aber, den soeben eingefügten Text komplett zu markieren und mit "Kopieren" herauszuholen, erhalte ich folgenden Text im Tastaturpuffer:

              createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Aktivschalter.SchlafzimmerSchattierungAktiv', true, { name: "SchlafzimmerSchattierungAktiv", type: "boolean", role: "state" });
              
              createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Aktivschalter.SchlafzimmerAktiv', true, { name: "SchlafzimmerAktiv", type: "boolean", role: "state" });
              
              
              createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.Istwerte.SchattenzahlSchlafzimmerRolladen', 0, { name: "SchattenzahlSchlafzimmerRolladen", type: "number", role: "state" });
              
              createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.AzimuthEndeSchlafzimmer', 0, { name: "AzimuthEndeSchlafzimmer", type: "number", role: "state", unit: "°" });
              
              createState('0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.AzimuthStartSchlafzimmer', 0, { name: "AzimuthStartSchlafzimmer", type: "number", role: "state", unit: "°" });
              …
              

              Man beachte: Text fehlt, und es erscheinen "..." 3 Punkte im Text für eine Textauslassung.
              Das passiert mit jedem Text, der etwas mehr als ein paar Zeilen hat!!

              Codierknecht G 2 Replies Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @iobroker2001 last edited by

                @iobroker2001 sagte in JScript-Editor in Blockly zickt rum:

                "Dokument formatieren"

                Das ist eine Funktion des Browsers - darauf würde ich mich nicht verlassen.
                Ich würde für das Formatieren einen Editor mit Syntaxhervorhebung verwenden. Z.B. PsPad, VSCode, o.ä.
                Dort kann man den Code dann in die gewünschte Form bringen und von dort aus in den JS-Editor bringen.

                1 Reply Last reply Reply Quote 1
                • G
                  GombersIOB @iobroker2001 last edited by GombersIOB

                  @iobroker2001

                  Ich befinde mich im Blockly-Editor und erzeuge eine Funktion namens "Kreiere Datenpunkte".

                  Ich würde es, einfach der Übersicht halber, auch anders schreiben. Ich finde es schwierig wenn die Zeilen zu lang werden.

                  var pathAktivschalter="0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Aktivschalter.";
                  var pathSchattierung="0_userdata.0.friedhelm.Rolladensteuerung.Einstellungen.Schattierung.";
                  createState(pathAktivschalter+'SchlafzimmerSchattierungAktiv', true, {
                  
                  	name: "SchlafzimmerSchattierungAktiv",
                  	type: "boolean",
                  	role: "state"
                  });
                  createState(pathAktivschalter+'SchlafzimmerAktiv', true, {
                  
                  	name: "SchlafzimmerAktiv",
                  	type: "boolean",
                  	role: "state"
                  });
                  createState(pathSchattierung+'Istwerte.SchattenzahlSchlafzimmerRolladen', 0, {
                  
                  	name: "Istwerte.SchattenzahlSchlafzimmerRolladen",
                  	type: "number",
                  	role: "state"
                  });
                  createState(pathSchattierung+'AzimuthEndeSchlafzimmer', 0, {
                  
                  	name: "AzimuthEndeSchlafzimmer",
                  	type: "number",
                  	role: "state",
                  	unit: "°"
                  });
                  createState(pathSchattierung+'AzimuthStartSchlafzimmer', 0, {
                  
                  	name: "AzimuthStartSchlafzimmer",
                  	type: "number",
                  	role: "state",
                  	unit: "°"
                  });
                  
                  I 1 Reply Last reply Reply Quote 1
                  • I
                    iobroker2001 @GombersIOB last edited by

                    @gombersiob
                    Ja, gute Idee, vielen Dank!

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      GombersIOB @iobroker2001 last edited by

                      @iobroker2001
                      Um die Übersicht zu behalten würde ich den Aufruf auch als Blockly machen.
                      ab5193a2-2fda-44e9-a2e2-c19623587f7d-grafik.png
                      (Hier als importierbares XML: DoCreateDatapoints.blockly)

                      Die beiden JavaScripts sehen dann nur so aus:

                      async function DoCreateNumberDatapoint(aPath, aDatapoint, aValue, aUnit) {
                          console.log("Path=" + aPath + " DataPoint=" + aDatapoint + " Value=" + aValue);
                          createState(aPath+aDatapoint, aValue, {
                          	name: aDatapoint,
                          	type: "number",
                          	role: "state",
                              unit: aUnit
                          });
                      }
                      
                      async function DoCreateBooleanDatapoint(aPath, aDatapoint, aValue) {
                          createState(aPath+aDatapoint, aValue, {
                          	name: aDatapoint,
                          	type: "boolean",
                          	role: "state"
                          });
                      }
                      

                      Wobei ich selber weniger mit Blockly arbeite. Ich finde JavaScript (besser noch TypeScript) handlicher und übersichtlicher.

                      Homoran I 2 Replies Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @GombersIOB last edited by

                        @gombersiob sagte in JScript-Editor in Blockly zickt rum:

                        Ich finde JavaScript (besser noch TypeScript) handlicher und übersichtlicher.

                        Wenn man es beherrscht sicher keine Frage!

                        1 Reply Last reply Reply Quote 0
                        • I
                          iobroker2001 @GombersIOB last edited by

                          @gombersiob sagte in JScript-Editor in Blockly zickt rum:

                          Wobei ich selber weniger mit Blockly arbeite. Ich finde JavaScript (besser noch TypeScript) handlicher und übersichtlicher.

                          Finde ich auch, zumindest bei den eintönigen Definitionen für Datenpunkte ist JS knapper und übersichtlicher.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          748
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          5
                          12
                          495
                          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