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.
    • I
      iobroker2001 last edited by

      Guten Abend,
      ist es normal, dass man im Javascript-Editor in Blockly nicht richtig Code einfügen kann?
      Ich versuche, in Blockly eine Javascript-Funktion ("etwas tun") anzulegen. Im leeren Codeeditor füge ich dann einen ca. 30 Zeilen langen Code über Ctrl-V (Einfügen wird nicht explizit angeboten) ein. Der gelangt aber nur bruchstückhaft und viel zu kurz im Editor, s. Screenshot. Man beachte die 2 Punkte!!
      Habe ich noch irgendwo eine Einstellung für den Editor vergessen.ksnip_20230313-183204.png
      Vielen Dank für einen Tipp!

      paul53 1 Reply Last reply Reply Quote 0
      • 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

                            747
                            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