Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. gelöst - VIS-2 - eChart mit dynamischem Zeitfenster

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    694

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.4k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.3k

gelöst - VIS-2 - eChart mit dynamischem Zeitfenster

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
8 Beiträge 2 Kommentatoren 324 Aufrufe 3 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Norwegen60N Online
    Norwegen60N Online
    Norwegen60
    schrieb am zuletzt editiert von Norwegen60
    #1

    Hallo zusammen,

    ich habe unter VIS-2 in einem Basic - iFrame ein eChart mit mehreren Wertelinien eingebunden.

    Quelle = /echarts/index.html?preset=Climate
    

    Das Chart wird auch korrekt angezeigt mit dem im eChart-Editor definierten Zeitfenster Ende "Jetzt" , Reichweite "2 Tage"
    Jetzt habe ich die beiden Datenfelder 0_userdata.0.dashboard.rTimeFrom und rTimeTo als Timestamp. Gibt es eine Möglichkeit, dass ich diesen Zeitbereich irgendwie an eChart übergebe? Sei es auf der eChart-Seite, sei es auf der iFrame-Seite.
    Versuch mit

    /echarts/index.html?preset=echarts.0.Climate&start={v:0_userdata.0.dashboard.rTimeFrom}&end={v:0_userdata.0.dashboard.rTimeTo}
    

    hatte keinen Einfluss. Auch nicht wenn ich Festwerte genommen habe. Am Binding lags also nicht

    Danke und Grüße
    Gerd

    fuzzy1955F 1 Antwort Letzte Antwort
    0
    • Norwegen60N Norwegen60

      Hallo zusammen,

      ich habe unter VIS-2 in einem Basic - iFrame ein eChart mit mehreren Wertelinien eingebunden.

      Quelle = /echarts/index.html?preset=Climate
      

      Das Chart wird auch korrekt angezeigt mit dem im eChart-Editor definierten Zeitfenster Ende "Jetzt" , Reichweite "2 Tage"
      Jetzt habe ich die beiden Datenfelder 0_userdata.0.dashboard.rTimeFrom und rTimeTo als Timestamp. Gibt es eine Möglichkeit, dass ich diesen Zeitbereich irgendwie an eChart übergebe? Sei es auf der eChart-Seite, sei es auf der iFrame-Seite.
      Versuch mit

      /echarts/index.html?preset=echarts.0.Climate&start={v:0_userdata.0.dashboard.rTimeFrom}&end={v:0_userdata.0.dashboard.rTimeTo}
      

      hatte keinen Einfluss. Auch nicht wenn ich Festwerte genommen habe. Am Binding lags also nicht

      Danke und Grüße
      Gerd

      fuzzy1955F Online
      fuzzy1955F Online
      fuzzy1955
      schrieb am zuletzt editiert von Homoran
      #2

      @Norwegen60 sagte:

      VIS-2 in einem Basic - iFrame ein eChart

      Hallo Norwegen60,

      ich hatte das gleiche Thema mit 11 übereinanderliegenden Diagrammen in Basic-IFrames auf einer Seite. Mit der Zeitauswahl habe ich lange probiert, bis ich vor Kurzem diese Seite entdeckte: https://mcuiobroker.gitbook.io/jarvis-infos/jarvis-v3/system-effektprog./echartschange
      Klappt wunderbar und müsste auch mit "start" und "end" funktionieren! Basic-IFrames habe ich keines mehr sondern das eChart-Widget.

      e8e3fa02-34ad-414b-a9fc-dd1f60d1b7e1-image.jpeg

      [EDIT] Unter anderen Eigenschaften ist da einstellbar:

      range: 1440, (in Minuten)
      relativeEnd: now,
      start: ,
      end: ,
      start_time: ,
      end_time: ,
      timeFormatCustom: false,
      timeFormat: 'DD.MM',
      

      Das JavaScript dazu:

      // 13.6.2026 / hfurt
      
      const idDiagramm = '0_userdata.0.Diagrammdaten.Diagrammart';
      const idRange = '0_userdata.0.Diagrammdaten.Range';
      const idTimeformat = '0_userdata.0.Diagrammdaten.Zeitformat';
      const idTimeformatCheck = '0_userdata.0.Diagrammdaten.ZeitformatJN';
      const strDiagrammPath = 'echarts.0.';
      
      on({id: idDiagramm, change: "any"}, function (obj) {
          let value = obj.state.val;
          if (value!=null &&value!=undefined && value!=''){
              let echartsDP = strDiagrammPath + getState(idDiagramm).val;
              if (existsObject(idDiagramm) &&  echartsDP !=''){
                  const eChartobj = getObject(echartsDP);
                  const ecRange = String(TimeRange(String(eChartobj.native.data.range)));
                  const ecTimeFormat = 'HH.MM dd.mm';
                  const ectimeFormatCustom = true;
                  setStateAsync(idRange,ecRange,false);
                  setStateAsync(idTimeformatCheck,ectimeFormatCustom,false)
                  setStateAsync(idTimeformat,ecTimeFormat,false);
                  setObject(getState(idDiagramm).val,eChartobj);
                  //log('ecRange=' + ecRange + ', echartsDP=' + echartsDP);
      
              }else{
                  log('Angegebener eChart-DP ' + idDiagramm + 'existiert nicht!','warn');
              }
          }
      });
      
      
      on({id: idRange, change: "any"}, function (obj) {
          let value = obj.state.val;
          if (value!=null &&value!=undefined && value!=''){
              let echartsDP = strDiagrammPath + getState(idDiagramm).val;
              if (existsObject(echartsDP)){
                  let objDP = getObject(echartsDP);
                  log(objDP);
                  objDP.native.data.range = TimeRange(value);
                  setObject(echartsDP,objDP);
              }else{
                  log('eCharts-DP ' + echartsDP + ' ist nicht vorhanden! Eingeben!','warn');
              }
          }
      });
      
      function TimeRange (vRange) {
          
          let iVal;
      
          switch (vRange) {
              case ("1 Tag"): iVal = 1440; break;
              case ("1 Woche"): iVal = 10080; break;
              case ("2 Wochen"): iVal = 20160; break;
              case ("1 Monat"): iVal = 40320; break;
              case ("2 Monate"): iVal = 86400; break;
              case ("3 Monate"): iVal = 129600; break;
              case ("6 Monate"): iVal = 259200; break;
              case ("1 Jahr"): iVal = 518400; break;
              case ("2 Jahre"): iVal = 1036800; break;
              default: iVal = 720; break;
          }
      
          return Number(iVal);
      
      }
      

      Smart-Home-Automation unter IOB auf RASPI5, 16GB RAM, 50GB SSD, MariaSQL, VIS-2.
      Anfang 2025 war ich Newbie in Sachen RaspBerry, Linux und IOB.
      Jetzt läuft alles konstant gut und ich gebe gern meine Erfahrungen und mein Wissen an die Forums-User/Innen weiter.
      Großes Danke an alle tatkräftigen Helfer im Forum!

      1 Antwort Letzte Antwort
      1
      • Norwegen60N Online
        Norwegen60N Online
        Norwegen60
        schrieb am zuletzt editiert von Norwegen60
        #3

        Hallo Fuzzy,
        mit etwas probieren habe ich es geschafft, das Chart per range anzupassen. Danke dafür.

        • Hast du auch mit start, end und start_time, end_time gearbeitet? Das funktioniert bei mir nicht.
        • Ich denke dazu muss ich auch timeType anpassen, und ich habe ihen auf Statisch = static gesetzt
        • Unterschied zwischen start und start_time ist das Format. start als String und start_time als Timestamp. Wenn ich Start_Time aber auf 1781914467858 setze, zeigt das Objekt 1781912748321
          db94cffe-6934-4d58-8177-4755b0bee0e3-image.jpeg
          Hast du eine Idee was ich falsch mache?
        • Und noch die Frage. Du schreibst du verwendest das eChart-Widget. Das habe ich aber nur dazu bekommen, eine Linie anzuzeigen und nicht 4 verschiedene Werte. Geht das doch?
        1 Antwort Letzte Antwort
        0
        • Norwegen60N Online
          Norwegen60N Online
          Norwegen60
          schrieb am zuletzt editiert von Norwegen60
          #4

          Blödsinn. Ich hatte in dem Beispiel das Log noch gar nicht hinter meine Änderung gesetzt. Jetzt passt start_time und start_end. Es funktionierte trotzdem nicht.

          Ich habe aber raus gefunden, dass meine Annahme falsch war, dass start in String und start_time in Timestamp funktioniert. Beides sind String. start nur das Datum in yyyy-mm-dd, start_time nur die Uhrzeit in HH:MM.
          Mit diesem Script geht es

          function formatEChartTime(ts) {
              let d = new Date(Number(ts) || 0);
          
              return {
                  date:
                      d.getFullYear() + "-" +
                      String(d.getMonth() + 1).padStart(2, "0") + "-" +
                      String(d.getDate()).padStart(2, "0"),
          
                  time:
                      String(d.getHours()).padStart(2, "0") + ":" +
                      String(d.getMinutes()).padStart(2, "0")
              };
          }
          
          
          function SetEChart() {
              let from = formatEChartTime(getState(ID_FROM).val);
              let to   = formatEChartTime(getState(ID_TO).val);
          
              let echartsDP = 'echarts.0.Climate';
          
              if (existsObject(echartsDP)) {
                  let objDP = getObject(echartsDP);
          
                  objDP.native.data.timeType = 'static';
                  objDP.native.data.start = from.date;
                  objDP.native.data.start_time = from.time;
                  objDP.native.data.end = to.date;
                  objDP.native.data.end_time = to.time;
          
                  setObject(echartsDP, objDP);
          
                  log(`SetEChart ${from.date} ${from.time} bis ${to.date} ${to.time}`);
              } else {
                  log(`eCharts-DP ${echartsDP} ist nicht vorhanden!`, 'warn');
              }
          }
          Bliebe noch die Frage, wie du den Chart per eChart-Widget eingebunden hast. Gibt es ein Vorteil gegenüber der Einbindung per iFrame?
          
          fuzzy1955F 1 Antwort Letzte Antwort
          0
          • Norwegen60N Norwegen60

            Blödsinn. Ich hatte in dem Beispiel das Log noch gar nicht hinter meine Änderung gesetzt. Jetzt passt start_time und start_end. Es funktionierte trotzdem nicht.

            Ich habe aber raus gefunden, dass meine Annahme falsch war, dass start in String und start_time in Timestamp funktioniert. Beides sind String. start nur das Datum in yyyy-mm-dd, start_time nur die Uhrzeit in HH:MM.
            Mit diesem Script geht es

            function formatEChartTime(ts) {
                let d = new Date(Number(ts) || 0);
            
                return {
                    date:
                        d.getFullYear() + "-" +
                        String(d.getMonth() + 1).padStart(2, "0") + "-" +
                        String(d.getDate()).padStart(2, "0"),
            
                    time:
                        String(d.getHours()).padStart(2, "0") + ":" +
                        String(d.getMinutes()).padStart(2, "0")
                };
            }
            
            
            function SetEChart() {
                let from = formatEChartTime(getState(ID_FROM).val);
                let to   = formatEChartTime(getState(ID_TO).val);
            
                let echartsDP = 'echarts.0.Climate';
            
                if (existsObject(echartsDP)) {
                    let objDP = getObject(echartsDP);
            
                    objDP.native.data.timeType = 'static';
                    objDP.native.data.start = from.date;
                    objDP.native.data.start_time = from.time;
                    objDP.native.data.end = to.date;
                    objDP.native.data.end_time = to.time;
            
                    setObject(echartsDP, objDP);
            
                    log(`SetEChart ${from.date} ${from.time} bis ${to.date} ${to.time}`);
                } else {
                    log(`eCharts-DP ${echartsDP} ist nicht vorhanden!`, 'warn');
                }
            }
            Bliebe noch die Frage, wie du den Chart per eChart-Widget eingebunden hast. Gibt es ein Vorteil gegenüber der Einbindung per iFrame?
            
            fuzzy1955F Online
            fuzzy1955F Online
            fuzzy1955
            schrieb am zuletzt editiert von fuzzy1955
            #5

            @Norwegen60 sagte:

            Bliebe noch die Frage, wie du den Chart per eChart-Widget eingebunden hast. Gibt es ein Vorteil gegenüber der Einbindung per iFrame?

            MIr ist das eChart-Widget sympathischer. Da braucht man keinen elendslangen Link wie beim IFrame, sondern man wählt das Preset aus der Box.
            48f743cf-8b96-4bad-a917-59dc27b2bb7e-image.jpeg

            Die Sichtbarkeit benutze ich für das Ein/Ausblenden, weil ich 11 übereinanderliegende Diagramme brauche.

            4 verschiedene Werte müssten auch funktionieren. Ich habe max. 3.

            6771bacf-bc53-436a-bb33-6104af354b59-image.jpeg

            Smart-Home-Automation unter IOB auf RASPI5, 16GB RAM, 50GB SSD, MariaSQL, VIS-2.
            Anfang 2025 war ich Newbie in Sachen RaspBerry, Linux und IOB.
            Jetzt läuft alles konstant gut und ich gebe gern meine Erfahrungen und mein Wissen an die Forums-User/Innen weiter.
            Großes Danke an alle tatkräftigen Helfer im Forum!

            Norwegen60N 1 Antwort Letzte Antwort
            0
            • fuzzy1955F fuzzy1955

              @Norwegen60 sagte:

              Bliebe noch die Frage, wie du den Chart per eChart-Widget eingebunden hast. Gibt es ein Vorteil gegenüber der Einbindung per iFrame?

              MIr ist das eChart-Widget sympathischer. Da braucht man keinen elendslangen Link wie beim IFrame, sondern man wählt das Preset aus der Box.
              48f743cf-8b96-4bad-a917-59dc27b2bb7e-image.jpeg

              Die Sichtbarkeit benutze ich für das Ein/Ausblenden, weil ich 11 übereinanderliegende Diagramme brauche.

              4 verschiedene Werte müssten auch funktionieren. Ich habe max. 3.

              6771bacf-bc53-436a-bb33-6104af354b59-image.jpeg

              Norwegen60N Online
              Norwegen60N Online
              Norwegen60
              schrieb am zuletzt editiert von
              #6

              @fuzzy1955 sagte:

              MIr ist das eChart-Widget sympathischer. Da braucht man keinen elendslangen Link wie beim IFrame, sondern man wählt das Preset aus der Box.

              Ja, aber ich weiß nicht wie ich dort mehrere Linien auswähle. Eine Linie kann ich in "Allgemein - Objekt mit Geschichte" verlinken, aber du scheinst das über Sichtbarkeit und ein Datenpunkt zu machen, in dem definiert ist, welche Linien angezeigt werden sollen. Wenn ich nur dort mein Datenpunkt eintrage wird nichts angezeigt
              af36fb25-9606-422d-bf71-764c5d2cfa8d-image.jpeg

              fuzzy1955F 1 Antwort Letzte Antwort
              0
              • Norwegen60N Norwegen60

                @fuzzy1955 sagte:

                MIr ist das eChart-Widget sympathischer. Da braucht man keinen elendslangen Link wie beim IFrame, sondern man wählt das Preset aus der Box.

                Ja, aber ich weiß nicht wie ich dort mehrere Linien auswähle. Eine Linie kann ich in "Allgemein - Objekt mit Geschichte" verlinken, aber du scheinst das über Sichtbarkeit und ein Datenpunkt zu machen, in dem definiert ist, welche Linien angezeigt werden sollen. Wenn ich nur dort mein Datenpunkt eintrage wird nichts angezeigt
                af36fb25-9606-422d-bf71-764c5d2cfa8d-image.jpeg

                fuzzy1955F Online
                fuzzy1955F Online
                fuzzy1955
                schrieb am zuletzt editiert von fuzzy1955
                #7

                @Norwegen60 sagte:

                aber ich weiß nicht wie ich dort mehrere Linien auswähle

                [EDIT]
                Hast du auch die eCharts v3.1.0? Da geht es über die Datenquellen (Entwurfsansicht). In dem Widget wird dann nur das eCharts -Preset ausgewählt:

                8c7e0f71-cb14-4e58-ab67-7fcb71431c3d-image.jpeg

                So wird es 1:1 in dem VIS2- eCharts-Widget dargestellt:
                b7187064-f0e8-47c9-881d-566c6c9a2aaa-image.jpeg

                Smart-Home-Automation unter IOB auf RASPI5, 16GB RAM, 50GB SSD, MariaSQL, VIS-2.
                Anfang 2025 war ich Newbie in Sachen RaspBerry, Linux und IOB.
                Jetzt läuft alles konstant gut und ich gebe gern meine Erfahrungen und mein Wissen an die Forums-User/Innen weiter.
                Großes Danke an alle tatkräftigen Helfer im Forum!

                1 Antwort Letzte Antwort
                0
                • Norwegen60N Online
                  Norwegen60N Online
                  Norwegen60
                  schrieb zuletzt editiert von Norwegen60
                  #8

                  Vielen Dank, jetzt hab ichs.
                  Ich wollte es so machen und dachte, dass man da dann irgendwie auch mehrere Linie dazu bekommt.
                  49fd2747-554c-4be5-9231-e00ee9abb7ad-image.jpeg
                  Aber du hast die Charts im ioBroker-Editor - Diagramme definiert
                  4462aaf4-ae28-46a9-bb4c-a7a88387ca22-image.jpeg
                  und dann kannst du die in EChart-Preset auswählen
                  87c9637d-551e-4aa1-8787-8956184a8318-image.jpeg

                  1 Antwort Letzte Antwort
                  0

                  Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                  Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                  Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                  Registrieren Anmelden
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  444

                  Online

                  33.0k

                  Benutzer

                  83.5k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2026
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe