Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [gelöst] Widget zur Anzeige einer Webseite

    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

    [gelöst] Widget zur Anzeige einer Webseite

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

      Hallo,

      ich versuche mich gerade in Javascript und will mir eine User-freundliche FLOT-Selektion bauen.

      Das Script kann aus vorgefertigten Datenpunkte wählen und den Zeitraum bestimmen - mehr nicht.

      Das Ergebnis schreibe ich ein eine Variable als HTML-Link.

      Diesen Link will ich nun aufrufen und anzeigen lassen. Aber irgendwie finde ich dafür kein Widget.

      Alle die ich gesehen haben könne nur feste Texte (über einen Editor erfasst) anzeigen.

      Ich brauche aber eines, dass die HTML-Zeile aus einem Objekt holt.

      Habe ich da was übersehen?

      tnx.

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        @Harry423:

        Hallo,

        ich versuche mich gerade in Javascript und will mir eine User-freundliche FLOT-Selektion bauen.

        Das Script kann aus vorgefertigten Datenpunkte wählen und den Zeitraum bestimmen - mehr nicht.

        Das Ergebnis schreibe ich ein eine Variable als HTML-Link.

        Diesen Link will ich nun aufrufen und anzeigen lassen. Aber irgendwie finde ich dafür kein Widget.

        Alle die ich gesehen haben könne nur feste Texte (über einen Editor erfasst) anzeigen.

        Ich brauche aber eines, dass die HTML-Zeile aus einem Objekt holt.

        Habe ich da was übersehen?

        tnx. `

        anzeigen und aufrufen sowie in einer iFrame oder forward/redirect ?

        ~Dutch

        1 Reply Last reply Reply Quote 0
        • H
          Harry423 last edited by

          Danke für die schnelle Antwort.

          Eigentlich so wie das Widget "basic - iFrame", nur halt die "Quelle" aus der Variablen "javascript.0.dyn_Diagramm.tempHTML".

          1 Reply Last reply Reply Quote 0
          • H
            Harry423 last edited by

            Kann man sowas vielleicht über ein Skript machen? Z.B. als Skript im Widget - das habe ich noch nicht gemacht…

            1 Reply Last reply Reply Quote 0
            • H
              Harry423 last edited by

              Hallo,

              inzwischen habe ich das Problem gelöst:

              Ich verwende eine einfaches HTML-Widget und <iframe>. Hier das Widget mit den Daten.<br/><br /><br /><CODE><s><pre></s>[{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"html":"<iframe src={javascript.0.dyn_Diagramm.tempHTML} width="890" height="490"></iframe>"},"style":{"left":"127px","top":"34px","width":"890px","height":"490px"},"widgetSet":"basic"}]

              Für alle die es selber mal probieren wollen hier mein Skript:

              `/* System dynamisches Diagramm
              erzeugt ein dynamisches Diagramm für Temperaturen
              Stand: 2017-06-05 15:43 Uhr (hf)
              
              *********************************************************************************
              Variablen, die manuell angelegt werden müssen:
              
              javascript.0.dyn_Diagramm.tempAUS  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempAZI  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempBAD  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempFLK  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempGAR  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempKZN  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempKZS  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempWZI  - Datenpunkt - Typ: Boolean
              javascript.0.dyn_Diagramm.tempHTML - Datenpunkt - Typ: String
              javascript.0.dyn_Diagramm.tempZR'  - Datenpunkt - Typ: Werteliste
                  Werte:  720:12 Std.;
              			1440:1 Tage;
              			4320:3 Tage;
              			10080:7 Tage;
              			20160:14 Tage;
              			1m:1 Monat;
              			3m:3 Monate;
              			1y:1 Jahr
              *********************************************************************************/
              
              const util = require('util');												// Modul util für debugging :-)
              
              var html_part1 = "https://iobroker/flot/index.html?";						// Name der Webseite
              //var html_part1 = '/flot/index.html?';										// alternativ Aufruf ohne Namen..
              var points = [];
              //           Raum   Variable           Instanz  Farbe     Name
              points[0] = ['AUS', 'hm-rega.0.xxxx', 'sql.0', 'FF0000', 'Au%C3%9Fen'];
              points[1] = ['AZI', 'hm-rega.0.xxxx', 'sql.0', '00FF00', 'AZi'];
              points[2] = ['BAD', 'hm-rega.0.xxxx', 'sql.0', 'FF00FF', 'Bad'];
              points[3] = ['GAR', 'hm-rega.0.xxxx', 'sql.0', 'FFFF00', 'Garage'];
              points[4] = ['FLK', 'hm-rega.0.xxxx', 'sql.0', 'FF00FF', 'Flur+KG'];
              points[5] = ['KZN', 'hm-rega.0.xxxx', 'sql.0', '00FFFF', 'KiZi+Nord'];
              points[6] = ['KZS', 'hm-rega.0.xxxx', 'sql.0', '800000', 'KiZi+S%C3%BCd'];
              points[7] = ['WZI', 'hm-rega.0.xxxx', 'sql.0', '008000', 'WZI'];
              //ACHTUNG: Der Name muss den letzten 3 Buchstaben in der Variablen entsprechen!!!
              //log(util.inspect(points, { showHidden: true, depth: null }));
              
              var html_line = "";															// Zeile für den HTML-Aufrauf des Diagramms
              var erster    = true;														// Schalter ob erster Datenpunkt oder nicht
              var i, j      = 0;															// Zähler
              var flag      = true;														// Flag für gesetzt oder nicht
              var raum      = "";															// Variable für den Raumnamen
              var range     = "";															// Variable für den Anzeige-Zeitraum
              
              // Hauptprogramm beginnt hier...
              function createDiagramm(obj) {
                  if (obj) {																// zuerst den Auslöser loggen
                  	log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val);		// Info im Log, welcher Zustand sich geändert hat
                  } else {
              		log('manuell ausgelöst...');										// sonst manuell aufgerufen.
                  }
              
              	html_line = html_part1;													// HTML-Zeile löschen und vorbereiten
              	erster    = true;														// Schalter für ersten Datenpunkt initialisieren
              	j = 0;																	// Zähler für Datenreigbe initialisieren
              	for (i=0 ; i < 8; i++) {
              		raum = points[i][0];												// Raumnamen holen
              		flag = getState("javascript.0.dyn_Diagramm.temp" + raum).val;		// Flag für Datenreihe holen
              		log("Raum: " + raum + " - " + flag);								// Informationen im Log speichern
              		if (flag) {															// wenn Flag an, dann Datenreihe holen
              			if (!erster) {
              				html_line += '&';											// & bei allen weiteren Datenpunkten einfügen
              			}	
              			html_line +=  'l%5B' + j + '%5D%5Bid%5D='             + points[i][1];	// ID
              			html_line += '&l%5B' + j + '%5D%5Binstance%5D='       + points[i][2];   // Instanz
              			html_line += '&l%5B' + j + '%5D%5Boffset%5D=0';							// Offset
              			html_line += '&l%5B' + j + '%5D%5Baggregate%5D=minmax';					// Art
              			html_line += '&l%5B' + j + '%5D%5Bcolor%5D=%23'       + points[i][3];   // Farbe
              			html_line += '&l%5B' + j + '%5D%5Bthickness%5D=3';						// Thickness
              			html_line += '&l%5B' + j + '%5D%5Bshadowsize%5D=3';						// ShadowSize
              			html_line += '&l%5B' + j + '%5D%5Bname%5D='           + points[i][4];   // Name
              			if (erster) {															// Nur der erste Datenpunkt mit Achsen
              				html_line += '&l%5B' + j + '%5D%5Byaxe%5D=left';					// Y-Achse
              				html_line += '&l%5B' + j + '%5D%5Bxaxe%5D=bottom';					// X-Achse
              				erster = false;														// ab jetzt kommen die Folge-Punkte
              			} else {																// Folge-Datenpunkte ohne Achsen
              				html_line += '&l%5B' + j + '%5D%5Byaxe%5D=off';						// Y-Achse
              				html_line += '&l%5B' + j + '%5D%5Bxaxe%5D=off';						// X-Achse
              			}
              			html_line += '&l%5B' + j + '%5D%5BcommonYAxis%5D=1';					// gemeinsame Y-Achse!!!
              			html_line += '&l%5B' + j + '%5D%5BignoreNull%5D=true';					// NULL-Werte ignorieren
              			html_line += '&l%5B' + j + '%5D%5BafterComma%5D=1';						// Nachkomma-Stellen
              			html_line += '&l%5B' + j + '%5D%5Bunit%5D=%C2%B0C';						// Maßeinheit
              			++j;																	// Datenpunkt hochzählen...
              		}
              	}
              
              	range = getState("javascript.0.dyn_Diagramm.tempZR").val;						// Zeitraum auslesen 
              	log("Zeitraum: " + range + " gewählt.");										// und ins Log schreiben
              
              	html_line += '&timeType=relative';												// Zeit-Typ
              	html_line += '&relativeEnd=now';												// Zeit-Ende
              	html_line += '&range=' + range;													// Zeitraum
              	html_line += '&aggregateType=count';											// Aggregation: Schritttyp
              	html_line += '&aggregateSpan=300';												// Aggregation: Anzahl
              	html_line += '&bg=7';															// Hintergrund
              	html_line += '&legend=nw';														// Legende anzeigen oben, links
              	html_line += '&legColumns=2';													// Lgende Anzahl Spalten
              	html_line += '&hoverDetail=true';												// Hover Details
              	html_line += '&timeFormat=%25d.%25m.%25y';										// Zeitformat
              	html_line += '&useComma=false';													// Benutze Komma
              	html_line += '&zoom=true';														// aktiviere Zoom
              	html_line += '&noedit=true';													// kein Edit-Knopf
              	html_line += '&animation=0';													// Animation aus
              
              	setState('javascript.0.dyn_Diagramm.tempHTML', html_line);						// HTML-Zeile zurück schreiben 
              
              }
              
              on('javascript.0.dyn_Diagramm.tempAUS', function (obj) { createDiagramm(obj); });	// Aufruf 
              on('javascript.0.dyn_Diagramm.tempAZI', function (obj) { createDiagramm(obj); });	// wenn
              on('javascript.0.dyn_Diagramm.tempBAD', function (obj) { createDiagramm(obj); });	// eine
              on('javascript.0.dyn_Diagramm.tempFLK', function (obj) { createDiagramm(obj); });	// der
              on('javascript.0.dyn_Diagramm.tempGAR', function (obj) { createDiagramm(obj); });	// Variablen
              on('javascript.0.dyn_Diagramm.tempKZN', function (obj) { createDiagramm(obj); });	// geändert 
              on('javascript.0.dyn_Diagramm.tempKZS', function (obj) { createDiagramm(obj); });	// wurde.
              on('javascript.0.dyn_Diagramm.tempWZI', function (obj) { createDiagramm(obj); });	// Dann
              on('javascript.0.dyn_Diagramm.tempZR',  function (obj) { createDiagramm(obj); });	// Neuberechnung...
              // javascript.0.dyn_Diagramm.tempHTML gehört hier nicht rein, sonst gibt es eine Endlos-Schleife :-)
              
              createDiagramm();																	// zu Beginn erst mal starten...` 
              
              Ich habe es versucht übersichtlich und nicht effizient zu machen und habe es hoffentlich auch ausreichend kommentiert :-)
              
              Da logging läuft bei mir über Variablen in der Homematic.
              
              Zur Steuerung habe ich "Bool Checkbox" für Auswahl der Elemente und eine "Select ValueList" für die Zeit genommen, die das jeweils die Variablen ändern.
              
              Wenn noch Fragen sind einfach melden...[/i][/i][/i][/i][/i]
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              710
              Online

              31.9k
              Users

              80.1k
              Topics

              1.3m
              Posts

              2
              5
              3911
              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