NEWS
Fragen zu "vis"
-
Ich weiss nicht was du für thermostate hast `
HM-TC-IT-WM-W-EUaber wenn du keine soll temperatur setzen kannst, `
doch, kann ich, geht aber nicht.kann aber daran liegen, dass das Widget nicht dafür gemacht ist. Zeigt schließlich auch die Ventilstellung an, die hat der Wandthermostat naturgemäß nicht
Dann wird es auch nicht mit einem Dimmer funktionieren, weil die Datenpunktstruktur eine ganz andere ist.
EDIT:
habe gerade eine Beobachtung gemacht.
manuelle Änderung am Raumthermostat der Solltemperatur und Änderung der Isttemperatur wird erst nach refresh (F5) in ioBroker übernommen.
Änderungen in ioBroker werden nicht im Raumthermostat übernommen - ich habe da eine Idee…..
Gruß
Rainer
703_npm-debug.log -
Naja. Ich habe mal einen einfachen horizontal slider aus dem metro set genommen und ihn auf eine knx gruppenadresse schreiben lassen. Gleicher effekt. Nix kommt durch. Gleicher Fehler:
ReferenceError: id is not defined
Ich werde mich morgen nochmal durch den code quälen und vieleicht werde ich ja schlauer. Verstehe muss ich den Krempel eh, wenn ich irgendwann mal selber ein widget bauen will. 8-)
Gruß
Martin
-
Ok. Ich bin ein wenig weiter gekommen.
In der metro.html steht in Zeile 193:
> vis.setValue(id, (parseFloat(val) / factor) + min);
funktionieren tut aber nur wenn da:
> vis.setValue(****oid****, (parseFloat(val) / factor) + min);
steht.
Gruß
Martin
-
Ok. Ich bin ein wenig weiter gekommen.
In der metro.html steht in Zeile 193:
> vis.setValue(id, (parseFloat(val) / factor) + min);
funktionieren tut aber nur wenn da:
> vis.setValue(****oid****, (parseFloat(val) / factor) + min);
steht.
Gruß
Martin `
Super. Vielen Dank. -
Ja, aber warte bitte noch mit der Änderung. Da ist noch der Wurm drin. Ich habe Widgetübergreifende Seiteneffekte. Z.b. Wenn ich, nachdem ich den Slider benutzt habe einen Schalter bediene, geht der Slider auf 100%. Ist mir erst Gestern Abend aufgefallen. Ich melde mich wenn ich ne Lösung habe. Gruß
-
Das kann ich bestätigen. Als ich für dich den slider getestet habe ist mir das auch passiert.
Kann aber sein, dass ich den gleichen Datenpunkt in beiden widgets hatte. Dann muss das so sein.
an der Wand getippt auf meinem 21" Riesentablet
-
Ok, das Problem mit den Crossactions der Widgets scheint Browserspezifisch zu sein.
Bei mir ist es unter iOS Safari aufgetreten. Andere Browser zeigten dieses Verhalten bisher nicht. Ich teste aber noch.
Gruß
-
Neue Informationen:
Das Eingangs geschilderte Problem mit den "crossactions" der Widgets besteht weiterhin. Ich konnte es allerdings näher eingrenzen.
1.) Das Problem tritt nur bei "Touchdevices" auf. Reproduzieren konnte ich es auf einem Ipad sowie auf zwei Android devices.
2.) Das Problem tritt nur dann auf, wenn ich direkt nach Benutzung des sliders ein anderes widget z.b. einen Schalter nutze. Wenn ich jedoch zwischendrin irgendwo ins nirgendwo touche, ist alles ok.
Es hat also irgendwas mit den "touch" events zu tun.
Hat jemand einen Tipp?
Nutzt niemand die metro widgets?
Gruß
Martin
-
Beide Probleme mit dem Slider sind auch mir vorhanden. "oid" eingetragen und der Slider geht.
Auf einem Tablet mit Win 7 kommt Chrome zum Einsatz. Hier der gleiche Effekt das der Slider einfach so fährt.
Für mich sieht es so aus als ob der Slider betätigt bleibt bis man wo anders hinklickt, dabei fährt er aber in die Richtung in der geklickt wird.
So jetzt hab ich den Slider mal am PC mit der Maus getestet, ebenfalls Chrome. Parallel dazu war die Seite auch auf dem Tablet offen, beim ändern ist der Slider wieder auf den Ausgangswert zurück gesprungen.
Nachdem ich die Seite am Tablet geschlossen hab, ging es normal.
Das Stützt meine Theorie das der Slider auf dem Touch gerät festgehalten wird. Technisch liegt es wohl daran das es auf dem Touch Gerät das "Links-klick-halten" & "Ziehen" Ereignis nicht beendet wird wenn man den Finger vom Display nimmt.
Da es vom Browser unabhängig zu sein scheint, dürfte es am Slider liegen.
Ich hab kein Plan von js oder css, aber eine Idee wie man das problem evtl. lösen kann wenn es wirklich daran liegt dass das "Links-klick-halten" & "Ziehen" Ereignis nicht beendet wird.
Einfach ein Timeout im ms bereich einbauen.
EDIT: Ich bin auf folgenden Artikel gestoßen: http://www.mediaevent.de/javascript/touch-events.html
Und auf das hier: http://www.html5rocks.com/en/mobile/tou … _locale=de
Viel kann ich damit nicht anfangen, hab aber die Funktion ".click" im code der Widgets entdeckt, also ist es Maus optimiert. Wir bräuchten dann wohl Touch optimiert.
EDIT 2: In der Datei "Metro.js" steht gleich am Anfang die Erkennung ob Touch oder Maus Steuerung.
Ab der Zeile 439 findet sich dieser code:
/* To add touch support for element need create listeners for component dom element if (hasTouch) { element.addEventListener("touchstart", touch2Mouse, true); element.addEventListener("touchmove", touch2Mouse, true); element.addEventListener("touchend", touch2Mouse, true); }*/
Ich hatte in Testhalber mal von seiner Auskommentierung befreit, das hat bei mir jedoch nichts geändert. Gleich danach steht der Code(die Klasse) für die Slider.
EDIT 3: Hier ist der selbe Fehler beschrieben: https://github.com/olton/Metro-UI-CSS/issues/651
-
So lange rum gespielt und getestet. Ich glaub jetzt gehts, wäre gut wenn das noch jemand anders Testen kann.
Auf einem Android 4.2 Tablet mit standard Browser geht es.
Dazu folgenden Code in die Metro.js, nach zeile 548 einfügen:
$(document).on('touchend.metroSlider', function () { $(document).off('mousemove.metroSlider'); $(document).off('mouseup.metroSlider'); element.data('value', that.options.position); element.trigger('changed', that.options.position); o.changed(that.options.position, element); if (!element.hasClass('permanent-hint')) { hint.css('display', 'none'); } });
Gruß
Jey Cee
-
@Jey Cee:So lange rum gespielt und getestet. Ich glaub jetzt gehts, wäre gut wenn das noch jemand anders Testen kann.
Auf einem Android 4.2 Tablet mit standard Browser geht es.
Dazu folgenden Code in die Metro.js, nach zeile 548 einfügen:
$(document).on('touchend.metroSlider', function () { $(document).off('mousemove.metroSlider'); $(document).off('mouseup.metroSlider'); element.data('value', that.options.position); element.trigger('changed', that.options.position); o.changed(that.options.position, element); if (!element.hasClass('permanent-hint')) { hint.css('display', 'none'); } });
Gruß
Jey Cee `
Kann nicht finden, wo das eingefügt sein sollte, kannst ganze geänderte Datei hier posten? -
Klar kein Problem.
Wer ein Desktop Betriebssystem und Chrome einsetzt kann unter about://flags die Touch Events aktivieren. Damit geht es bei mir auf dem Tablet.
282_metro.js -
@Jey Cee:Klar kein Problem.
Wer ein Desktop Betriebssystem und Chrome einsetzt kann unter about://flags die Touch Events aktivieren. Damit geht es bei mir auf dem Tablet. `
Danke, werde heute eine Version machen.
305_betriebsstundenzaehler_095.txt -
Ich hab für die Metro Widgets noch eine Schönheitskorrektur: Bei Widgets wie "nav - Tile Navigation" oder "Tile Bool" kann man eine Ikonenklasse wählen, dadurch wird ein ein Icon in der Mitte des Tiles angezeigt.
Wenn man ein eigenes möchte kann man das auch über eine URL benutzen. Leider wird dieses dann immer ganz Links oben angezeigt (siehe Bild, das obere Tile ist mit Ikonenklasse das untere mit eigener Ikone).
Damit die eigene Ikone ebenfalls so angezeigt werden kann, habe ich eine Dummy Ikonenklasse namens icon-myown angelegt. Bei dieser Klasse wird kein icon aus dem bestehenden Set verwendet sondern lediglich die Style Informationen.
Um die Änderungen nach zu rüsten muss iconFont.min.css nach "\widgets\metro\css" und metro.html nach "\widgets" sowohl in den Ordner "ioBroker\node_modules\iobroker.vis\www" als auch in "ioBroker\data\files\vis" kopiert werden.
@Bluefox: Die Angehängten Dateien sind aus der vis 0.1.0. Es würde mich freuen wenn die Änderung im nächsten Update dabei ist.
Danke für den neuen Editor der ist wirklich gelungen.
-
Im Moment exportiere ich meine views aus ccu.io und importiere die bei ioBroker.
Was passiert jetzt mit den Widgets, die in ioBroker (noch) nicht vorhanden sind?
Von update zu update tauchten immer mal wieder welche auf.
Stören die nicht vorhandenen widgets beim rendern? Kosten solche "Leichen" unnötig Rechenpower?
…wenn ja, wie könnte man sie einfach löschen? Man sieht sie ja nicht.
Gesendet von meinem Cynus T7 mit Tapatalk
-
Stören die nicht vorhandenen widgets beim rendern? Kosten solche "Leichen" unnötig Rechenpower?
…wenn ja, wie könnte man sie einfach löschen? Man sieht sie ja nicht. `
Eigentlich kosten die kein Rechenpower.Die müssen trotzdem in Select-Auswahl da sein.
Man kann die selktieren und löschen -
Danke, hab ich noch nicht gesehen.
Hab immer nur auf dem dashboard gesucht.
Gesendet von meinem Cynus T7 mit Tapatalk
-
Brauche dann mal Hilfe von euch, hab schon alle Widgets durch, aber nix passendes gefunden:
Möchte im vis einen Text sichtbar machen (z.B. nach einem Bewegungsmelder-Event) der aber sichtbar bleibt, bis er durch einen Button "bestätigt" und dadurch wieder unsichtbar wird.
Wie stell ich das an?
Gruß Bernd
-
Hallo,
Hab nun auch wieder eine Frage …
Es gibt jetzt zu meiner Freude auch wieder die jqui-mfd widgets mit den HUE Widgets.
Leider funktionieren gerade die HUE Widgets nicht.
Überhaupt dürfte beim HUE Adapter schon was nicht stimmen, der steigt bei jedem Update des js-controllers aus und muss immer neu installiert werden..., bei mir zumindest.
lg
Hannes
-
@bku:Brauche dann mal Hilfe von euch, hab schon alle Widgets durch, aber nix passendes gefunden:
Möchte im vis einen Text sichtbar machen (z.B. nach einem Bewegungsmelder-Event) der aber sichtbar bleibt, bis er durch einen Button "bestätigt" und dadurch wieder unsichtbar wird.
Wie stell ich das an?
Gruß Bernd `
Das geht mit dem Javascript (oder node-red). Ich zeige mit JS. (Achtung es geht nur die neueste Version von heute)Javascript Adapter installieren.
Folgendes Skript erzeugen (Daunten gibt es kelines "plus").// Erzeuge die Variable "Bewegung", falls die nicht existiert. createState('bewegung', 0); on("hm-rpc.0.deinBewegungsMelder.1.STATE", function (obj) { log('Value: ' + obj.newState.val); // Setze meine Variable "Bewegung" auf 1 falls Bewegung erkannt if (obj.newState.val) setState('bewegung', 1, true); });
Nicht vergessen Adapter Javascript selbst aktivieren.
Danach in "vis" Zwei Widgets kreieren:
- Basic - Hide on 0/false
- jqui - Button State
- Basic - Hide on 0/false