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.
    • 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

                        741
                        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