Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript - erste Gehversuche

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JavaScript - erste Gehversuche

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      legro last edited by

      Da uns Blockly mittlerweile nicht mehr ausreicht, startet ich heute erste Gehversuche, mittels JavaScript unsere Möglichkeiten zu erweitern. Als erstes Ziel: Eine Eingabe realisieren. Hier mein erster Versuch ..

      let eingabe;
      alert("Bitte gib hier eine Zahl ein!")
      eingabe=prompt("Eingabe:", "0");
      return eingabe;
      

      28440e3c-fb83-45e0-8675-c8af98276ca1-image.png

      Offenbar stehen weder alert noch prompt zur Verfügung. Sie werden als undefined abgewiesen.

      Weiß jemand Rat, wie ich dennoch mein Vorhaben umsetzen kann?

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

        @legro
        ioBroker ist ein Server - kein Programm mit UI - dafür gibt's entsprechende Adapter zur Visualisierung.
        Wer soll den eine Meldung lesen oder gar etwas eingeben?

        L 1 Reply Last reply Reply Quote 0
        • L
          legro @Codierknecht last edited by legro

          @codierknecht

          Was Blockly nicht ist bzw. nicht kann, möchte ich ja ändern. Nur weiß ich nicht wie. 😕

          Fleißig habe ich mich über eine längere Zeit in Javascript eingearbeitet. Nun möchte ich über die oben erwähnten Blockly-Funktionen nach und nach all das ergänzen, was mir fehlt.

          Meine naive Vorstellung war nun, dass - von wem auch immer - die meisten Javascript-Befehle ausgeführt werden. Blockly dürfte ja sich ebenfalls dieser irgendwo eingebauten Software bedienen.

          Als erstes möchte ich eine Ein- und Ausgabe realisieren. Hierzu wollte ich halt die beiden Befehle alert und promt verwenden. Da dies nicht geht, meine Hilfeschreie.😊

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md

            L Homoran 2 Replies Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @legro last edited by Codierknecht

              @legro
              Nochmal: Das hat mit Blockly oder JS zunächst einmal gar nicht zu tun.
              ioBroker ist dafür gebaut, 24/7 auf einem Server zu laufen und Dinge zu automatisieren.
              Sensoren und/oder Zustände werden ausgelesen, Aktoren werden gesteuert oder Werte irgendwohin geschrieben.

              Dort sitzt niemand vor einem Gerät und reagiert auf Meldungen oder gibt sogar irgendwelche Werte ein.
              Zur Ausgabe kannst Du zur Not noch das Log verwenden. Eingaben kannst Du über einen Datenpunkt regeln.
              Was Du an UI siehst ist die Oberfläche, mit der das System konfiguriert wird.
              Das System an sich kriegt gar nicht mit, dass da gerade jemand davor sitzt. Warum auch? Es ist nicht dafür gemacht.
              Stell es Dir am einfachsten als eine Art Betriebssystem vor - OHNE Bildschirm und Tastatur.

              Erklär doch mal, an welcher Stelle dir Blockly nicht reicht und was Du stattdessen mit JS machen willst.

              1 Reply Last reply Reply Quote 0
              • L
                legro @Homoran last edited by legro

                @homoran

                Danke für den Hinweis. Aber hier hatte ich selbst schon vergeblich nach einer Möglichkeit gesucht, eine Ein-/Ausgabe Funktion zu finden.

                Mir ist (als Anfänger) völlig unklar, welche Elemente wie, wo, wann, .. bereitstehen. Beispielsweise kann ich doch in Safari mich problemlos der Funktionen alert und prompt bedienen. Da Blockly ja im Browser läuft, dachte ich, dass diese Funktionen doch wohl zur Verfügung stehen müssten. Warum geht mein obiges Beispiel nicht?

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

                  @legro sagte in JavaScript - erste Gehversuche:

                  vergeblich nach einer Möglichkeit gesucht, eine Ein-/Ausgabe Funktion zu finden.

                  wie dir jetzt schon mehrfach gesagt wurde ist eine Ein- Ausgabe auf dem ioBroker Server nicht vorgesehen und auch Unsinn.
                  Die Ausgabe müsste auf dem Frontend erscheinen, doch der js Adapter läuft auf dem Server

                  Da Blockly ja im Browser läuft,

                  tut es eben nicht!

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

                    @legro sagte in JavaScript - erste Gehversuche:

                    Beispielsweise kann ich doch in Safari mich problemlos der Funktionen alert und prompt bedienen. Warum geht mein obiges Beispiel nicht?

                    @Homoran hat den Link gepostet. Dort kannst Du nachlesen, welches JS-Funktionen Du nutzen kannst und welche nicht.
                    alert und prompt sind nicht dabei - aus gutem Grund.
                    Mit Safari interagierst Du - mit dem ioBroker nicht.
                    Zumindest nicht direkt. Indirekt kannst Du eine Visualisierung wie z.B. VIS verwenden, um Werte einzugeben und Meldungen zu erhalten.

                    Die Gretchenfrage: Was willst Du erreichen?

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

                      @homoran sagte in JavaScript - erste Gehversuche:

                      Da Blockly ja im Browser läuft,

                      tut es eben nicht!

                      Das Frontend zur "Bedienung" von Blockly ist ein Browser-Frontend.
                      Was daraus generiert wird ist JavaScript ... zu Ausführung auf dem Server ... und nirgendwo sonst.

                      Homoran 1 Reply Last reply Reply Quote 0
                      • L
                        legro @Codierknecht last edited by

                        @codierknecht said in JavaScript - erste Gehversuche:

                        Die Gretchenfrage: Was willst Du erreichen?

                        Hatte ich da nicht geschrieben? Ich möchte Werte ausgeben und einlesen können.

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

                          @legro sagte in JavaScript - erste Gehversuche:

                          @codierknecht said in JavaScript - erste Gehversuche:

                          Die Gretchenfrage: Was willst Du erreichen?

                          Hatte ich da nicht geschrieben? Ich möchte Werte ausgeben und einlesen können.

                          Naja, das ist ein wenig unspezifisch.

                          Du willst also an einem Gerät (Tablet, PC, what auch ever) Werte sehen, diese (oder andere) Werte verändern und wieder an das System übergeben?

                          Wie gesagt: VIS

                          Beispiel:
                          Ich habe einen Datenpunkt mit dem ich festhalte, wann ich die SIM-Karte meiner EMA neu aufladen muss.
                          Anzeige und Eingabe zugleich.
                          8375e60c-3556-43d0-99cb-67b6eca67c40-image.png

                          H 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @legro last edited by

                            @legro sagte in JavaScript - erste Gehversuche:

                            Ich möchte Werte ausgeben und einlesen können.

                            wo und wie?

                            genau!

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @Codierknecht last edited by

                              @codierknecht sagte in JavaScript - erste Gehversuche:

                              Das Frontend zur "Bedienung" von Blockly ist ein Browser-Frontend.

                              naja,
                              der javascript Adapter stellt über das Webinterface des admin den JS-Editor zur Verfügung.
                              dort sieht man dann auch die Logausgaben via console.log

                              Das kompilierte Script läuft ausschließlich auf dem Server

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

                                @homoran sagte in JavaScript - erste Gehversuche:

                                Das kompilierte Script läuft ausschließlich auf dem Server

                                Vielleicht sollte man das an dieser Stelle nochmal ganz klar differenzieren:

                                Jeder moderne Browser ist in der Lage, JS auszuführen. Alles was man an Online-Tutorials so findet geht in der Regel in diese Richtung. Da kann man viel ausprobieren. Und weil man mit dem Browser auch praktischerweise gleich ein UI zur Verfügung hat, kann man auch Dinge wie alert, prompt und was auch immer verwenden.

                                Nun gibt's seit einigen Jahren auch Frameworks - vorrangig Node.js - mit denen JS auf dem Server ausgeführt wird. Und der ioBroker nutzt genau das ... server-side-JavaScript.
                                Und da er von Natur aus eben ein Server ist, der 24/7 unbeaufsichtigt läuft, verbietet sich halt alles was mit Benutzer-Interaktion zu tun hat.

                                @legro Stelle dir ein Programm vor, das beim Auftreten eines bestimmten Ereignisses den Benutzer per Dialog informiert und eine Aktion erwartet:

                                confirm('Es ist ein Fehler aufgetreten!')
                                

                                Laut Murphy passiert sowas entweder Nachts oder wenn Du im Urlaub bist.
                                Das Programm bliebe an exakt dieser Stelle stehen und wartet bis zum Sanktnimmerleinstag auf eine Antwort.

                                Was genau willst Du erfassen und wo/wie weiterverarbeiten?
                                Hast Du schon eine Visualisierung aufgesetzt?
                                Da könnte man Dir dann beim konkreten Einsatzzweck deutlich besser helfen.

                                L Homoran 2 Replies Last reply Reply Quote 1
                                • H
                                  homecineplexx @Codierknecht last edited by

                                  @codierknecht du kannst als aus und eingabe zB auch Telegram benutzen und dann deine Settings darüber steuern

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    legro @Codierknecht last edited by legro

                                    @codierknecht said in JavaScript - erste Gehversuche:

                                    Was genau willst Du erfassen und wo/wie weiterverarbeiten?
                                    Hast Du schon eine Visualisierung aufgesetzt?

                                    Unsere Visualisierung ist schon recht weit fortgeschritten. In Auszügen kannst du hier dir ein Bild davon machen, was wir so alles bisher umgesetzt haben.

                                    Und nun mein bescheidenes Vorhaben, zu dem ich hier Fragen stellte:

                                    Ich möchte durch Klicken auf eine Schaltfläche (Widget) erreichen, dass ein Eingabefenster auf dem Bildschirm erscheint, in dem ich einen Wert eingeben kann. Diesen möchte ich in einen Datenpunkt speichern oder weiterverarbeiten.

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

                                      @legro
                                      Widget gehören dem Frontend. Das hat mit Blockly und Server-Side-JavaScript ja nix zu tun.
                                      Und mal unter uns: Du hast eine durchgestylte VIS und willst den Anwender doch nicht im Ernst mit so 'nem popeligen Eingabeprompt kommen 😉
                                      Auch wenn das mit JS in der VIS durchaus möglich wäre.

                                      Da wäre sowas hier doch sicher eleganter:
                                      f37a303c-879f-437f-9f09-182050ad6646-image.png

                                      Du hast also eigentlich kein JS-Problem, sondern Fragen zur VIS.

                                      [EDIT]
                                      Funktioniert übrigens wunderbar. Text rein, OK klicken und schon steht das Eingegebene im DP.
                                      beb6f694-cebe-4ca3-b87b-23a12f11032d-image.png

                                      L 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @Codierknecht last edited by

                                        @codierknecht sagte in JavaScript - erste Gehversuche:

                                        Jeder moderne Browser ist in der Lage, JS auszuführen. Alles was man an Online-Tutorials so findet geht in der Regel in diese Richtung. Da kann man viel ausprobieren. Und weil man mit dem Browser auch praktischerweise gleich ein UI zur Verfügung hat, kann man auch Dinge wie alert, prompt und was auch immer verwenden.

                                        genau!
                                        Das ist der Knackpunkt! Dann ist js Bestandteil der HTML Seite

                                        1 Reply Last reply Reply Quote 0
                                        • L
                                          legro @Codierknecht last edited by legro

                                          @codierknecht said in JavaScript - erste Gehversuche:

                                          .. Du hast eine durchgestylte VIS und willst den Anwender doch nicht im Ernst mit so 'nem popeligen Eingabeprompt kommen 😉

                                          Meine offenbar falsche Vorstellung bzw. Einschätzung war, dass ich in Blockly nahezu beliebigen Java-Code einpflegen könnte. Das gewählte Beispiel war sozusagen mein „Hello World“ Programm.😁

                                          Armilar liv-in-sky 2 Replies Last reply Reply Quote 0
                                          • Armilar
                                            Armilar Most Active Forum Testing @legro last edited by

                                            @legro sagte in JavaScript - erste Gehversuche:

                                            Meine offenbar falsche Vorstellung bzw. Einschätzung war, dass ich in Blockly nahezu beliebigen Java-Code einpflegen könnte

                                            Warum sollte das denn nicht gehen (vorausgesetzt du meinst JS)?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            859
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            49
                                            1533
                                            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