Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Javascript und Vis

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript und Vis

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

      Hallo,
      ich baue grade meine eigene Wetter Vis mit Daten von DasWetter. Habe auch alles soweit hinbekommen, stehe nun aber vor dem großen Problem mit dem Datum von morgen, übermorgen usw.

      In DasWetter wird das Datum als String angezeigt. Also heute = 21042023 Morgen =220423

      Da dieses Format sehr unschön ist ich gerne einen Punkt zwischen den einzelnen Werte hätte komme ich da nicht weiter.

      Meine Idee ist nun ein eigenes kleines JAvascript zu schreiben und z.b. Das Datum von Morgen auszugeben.

      Dazu habe ich das scriptunter Scripte ein javascript geschrieben mit dem Titel actual Dates. Das sieht grade so aus:

      var heute = new Date();
      heute = new Date(heute.getFullYear(),heute.getMonth(),heute.getDate(),0,0,0)
      var morgen = new Date(heute);
      morgen.setDate(morgen.getDate()+1);
      console.log(morgen);
      

      wenn ich nun in die Vis gehen und string text nehme und als ObjectID mein javascript bekomme ich nur true angzeigt.

      Hat jemand eine Idee wie ich das Datum von morgen, übermorgen in meine Vis einbetten kann?

      Danke für eure Hilfe

      bahnuhr liv-in-sky paul53 OliverIO 4 Replies Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @jones1975 last edited by

        @jones1975

        var date = new Date();
        date.setDate(date.getDate() + 1);
        var Tag = date.getDate();     // System Tag
        var Monat = date.getMonth()+1;    // System Monat
        var Jahr = date.getFullYear();        // System Jahr
        
        log (Tag + "." + Monat + "." + Jahr);
        
        J 1 Reply Last reply Reply Quote 0
        • J
          jones1975 @bahnuhr last edited by

          @bahnuhr
          Danke für das Script, allerdings löst es nicht mein Problem, in der VIS selber. Es wird mir immer nur true angezeigt.

          Wie kann ich in der VIS ein Script einbinden, dass nicht true zeigt?

          B OliverIO 2 Replies Last reply Reply Quote 0
          • B
            badsnoopy667 @jones1975 last edited by

            @jones1975
            Wie man das Javascript direkt in VIS einbettet kann ich Dir nicht sagen. Aber Du kannst den Wochentag doch einfach in einen Datenpunkt schreiben lassen von dem Skript. Und diesen Datenpunkt lässt Du dann in VIS anzeigen.
            So mache ich das jedenfalls immer.

            1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @jones1975 last edited by

              @jones1975 #

              var heute = new Date();
              heute = new Date(heute.getFullYear(),heute.getMonth(),heute.getDate(),0,0,0)
              var morgen = new Date(heute);
              morgen.setDate(morgen.getDate()+1);
              console.log(morgen);
              setState("0_userdata.0.CONTROL-OWN.AAATEST.TestString7",morgen.toString())
              

              vis mit string -widget:

              Image 073.png

              1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @jones1975 last edited by

                @jones1975 sagte in Javascript und Vis:

                @bahnuhr
                Danke für das Script, allerdings löst es nicht mein Problem, in der VIS selber. Es wird mir immer nur true angezeigt.

                Wie kann ich in der VIS ein Script einbinden, dass nicht true zeigt?

                mit welchem skript wird dir wo true angezeigt?
                wo hast du das skript eingetragen (im javascript reiter in vis)?

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

                  @jones1975 sagte: gerne einen Punkt zwischen den einzelnen Werte

                  Füge die Punkte ein. Prinzip:

                  date = date.slice(0, 2) + '.' + date.slice(2, 4) + '.' + date.slice(4);
                  

                  Vom Vis-Binding habe ich keine Ahnung.

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    jones1975 @paul53 last edited by

                    @paul53: Danke das werde ich probieren

                    Datenpunkt anlegen....
                    Also ich habe einen Datenpunkt unter 0_userdata angelegt und mit dem Namen Date versehen
                    als Objektdaten sehe ich nun

                    {
                      "common": {
                        "name": "Date",
                        "desc": "Manuell erzeugt",
                        "role": "date",
                        "type": "object",
                        "read": true,
                        "write": true
                      },
                      "type": "state",
                      "native": {},
                      "_id": "0_userdata.0.Date.Date",
                      "from": "system.adapter.admin.0",
                      "user": "system.user.admin",
                      "ts": 1682060316223
                    }
                    

                    Aber wie binde ich jetzt da mein javascript ein?

                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @jones1975 last edited by liv-in-sky

                      @jones1975 mir ist immer noch nicht klar, was du wo einbinden willst

                      • ein javascript im vis-editor, das auf datenpunkte zugreift (läuft letztlich als script im browser)
                      • oder ein javascript im javascript-adapter (läuft auf dem iob-server)
                      J 1 Reply Last reply Reply Quote 0
                      • J
                        jones1975 @liv-in-sky last edited by jones1975

                        @liv-in-sky ok da gibt es anscheinend auch unterschiede.... ich kann Programmieren (ok ein wenig 🙂 ) aber mir sind die ganzen Verbindungen die ich selber anlegen möchte noch total schleierhaft..

                        Als Ziel: In einer Visualisierung das Datum von Morgen anzeigen lassen.

                        Folgende Möglichkeiten:

                        1. in dem Adapter das Wetter gibt es als Object day_value. Dieses wird als String ohne Punkte angezeigt. Beispiel: 20230426
                          Dieses Value möchte ich gerne im folgenden Format in meiner VIS angezeigt bekommen 26.04.2023

                        2. Mithilfe eines Javascripts.
                          Dazu habe ich ein Javascript erstellt, bzw nehme das von Bahnuhr weiter oben. Log zeigt das richtige Ergebnis.
                          Datenpunkt erstellt, aber weiß nicht wie ich nun den Datenpunkt mit dem Javascript verknüpfe.

                        Ich google seit Tagen und es gibt zig Anleitungen wie erstelle ich einen Datenpunkt, wie baue ich ein javascript aber ich habe noch keine Anleitung gefunden die einem Anfänger zeigt, wie ein Datenpunkt mit einem Javascript verknüpft wird.
                        Das kann doch nicht so schwer sein, aber vermutlich stelle ich mich einfach nur total .... an 😄

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

                          @jones1975 sagte in Javascript und Vis:

                          Dazu habe ich ein Javascript erstellt, bzw nehme das von Bahnuhr weiter oben. Log zeigt das richtige Ergebnis.
                          Datenpunkt erstellt, aber weiß nicht wie ich nun den Datenpunkt mit dem Javascript verknüpfe.

                          1. erstelle einen manuellen DP unter javascript oder unter userdata
                          2. In dem Script ein setState hinzufügen, dass dann den Wert in diesen DP schreibt
                          3. Im Vis Editor dann ein Widget (String) nehmen und dieses positionieren.
                          4. im Widget als DP deinen selbst erstellten auswählen.
                          5. Im runtime wird dann das widget korrekt angezeigt.
                          1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @jones1975 last edited by liv-in-sky

                            @jones1975

                            da gibt es einige möglichkeiten

                            du machst ein script - im js-adapter - so wie mein beispiel - und schreibst das ganze in einen dp

                            • dann ein string-widget im vis editor und die object-id deines dp angeben
                            • oder ein html widget und über ein sog. binding

                            oder etwas umständlich
                            du machst das script im vis-editor (welches in einem html widget ist) und schreibst das ergebnis gleich in den html code - würde man aber bei diesem beispiel nicht machen)

                            script im adapter - fehlt noch der trigger einmalig am anfang des tages

                            var heute = new Date();
                            heute = new Date(heute.getFullYear(),heute.getMonth(),heute.getDate(),0,0,0)
                            var morgen = new Date(heute);
                            morgen.setDate(morgen.getDate()+1);
                            console.log(formatDate(getDateObject(morgen), "DD.MM.YYYY"));
                            setState("0_userdata.0.CONTROL-OWN.AAATEST.TestString7",formatDate(getDateObject(morgen), "DD.MM.YYYY").toString())
                            

                            widgets:
                            string:

                            Image 074.png

                            html-widget mit binding
                            Image 075.png

                            Image 077.png

                            1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @jones1975 last edited by OliverIO

                              @jones1975

                              mit einer reinen vis-lösung geht auch folgendes.
                              Alternative1
                              Da du jetzt nicht wirklich geschrieben hast, wie die Daten genau vorliegen, habe ich es mal an einem Beispiel aus einem Datenpunkt aufgeschrieben

                              Schritt1: den folgenden Code im Skripte-Tab in vis irgendwo am Ende kopieren (falls schon was drinsteht)

                              function calcDate(datum) {
                                  return datum.substr(0,2)+"."+datum.substr(2,2)+"."+datum.substr(4);
                              }
                              

                              Schritt2: Lege ein neues Html-Widget an
                              und trage in das Html-Feld das folgende ein

                              {datum:0_userdata.0.test.test1;calcDate(datum)}
                              

                              0_userdata.0.test.test1 gegen deinen Datenpunkt tauschen

                              Alternative2
                              Falls der Wert nicht in einem Datenpunkt vorliegt, geht auch noch folgendes, ebenfalls mit einem html-widget

                              <div id="meinDatum"></div>
                              

                              in deinem Code kannst du dann folgendes verwenden. In Variable datum muss der String in in Form 25042023 vorliegen.

                              $("#meinDatum").html(calcDate(datum));
                              

                              Du musst allerdings aufpassen, das zum Zeitpunkt deiner Skriptausführung das widget bereits existiert. Prüfen kannst du das mit der Funktion waitForElementaus dem folgenden thread
                              https://forum.iobroker.net/topic/48663/howto-skripte-im-vis-editor-mit-jquery?_=1682415616257

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              851
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              6
                              13
                              776
                              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