Evaluierungsversion 2.2

Begonnen von setstate, 17 März 2016, 10:40:13

Vorheriges Thema - Nächstes Thema

HoTi

Zitat von: setstate am 05 April 2016, 23:26:19
Damit der Link aus dem FHEMWEB funktioniert, muss noch ein "/" angefügt werden. Also ftui_eval/ anstatt ftui_eval

define TABLETUIEVAL HTTPSRV ftui_eval/ ./www/tablet_eval Tablet-EVAL

Ja das muss man auch wissen... Ich hatte mich an den ersten Post gehalten  ;D Danke fürs korregieren, jetzt läuft auch die 2.1.

Gefühlt schneller, aber das kann hier auch täuschen, muss es zuhause am tablet Probieren.
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

roman1528

Moin.

Schade.. Ich komm nicht mehr mit.

Gerade ein Update (über FHEM) gemacht. Es funktioniert so einiges nicht mehr (Darstellung ausgeschlossen).

Was habe ich verpasst?

Die Widgets wurden scheinbar angepasst... Aber an welche Version? Welches JS-File muss ich jetzt nutzen damit alles wieder läuft?

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

eki

Hallo zusammen,

anbei mal eine erste Version des Chart Widget, die bei mir erst mal in der neuen Umgebung funktioniert. Allerdings sollte das noch intensiv weiter getestet werden.

@setstate: Man muss auf jeden Fall noch this.addReading(elem,'get') z.B. im init_attr() aufrufen, sonst wird kein update angestoßen. Bisher ging das wohl auch ohne die alte Form dieses Aufrufs (zumindest hatte ich die im alten Chart nicht drin).

setstate

An der Master Version (1.x) gab es keine Änderungen. Außer neue Version von Chart Widget.

nesges

Ich versuche meine Widgets an die neue Version anzupassen, aber offenbar mache ich an irgend einer Stelle einen grundlegenden Fehler.

1.) die update-Funktion wird nicht aufgerufen und ich habe keine Idee warum
2.) wie rufe ich Methoden der Elternelemente auf? Ich hätte zB "Modul_label.init_attr(elem)" vermutet, das funktioniert aber nicht, sondern wirft den Fehler: "Uncaught TypeError: Modul_label.init_attr is not a function"

Ich hänge mal zwei Beispiele an. Für User nochmal der explizite Hinweis: Die sind kaputt. Nicht verwenden.


setstate

Hallo nesges,
bei 1.) vermute ich es fehlt das this.addReading(elem,'get'); Es gibt kein default mehr.
bei 2.) das schaue ich mir zuhause dann an. Aber ein Aufruf der gleichnamigen function der Basis-Klasse wird nicht unterstützt. Das gibt es nicht bei JS out of the Box und die Implementierung dafür war mir zu umfangreich und aufgeblasen und unübersichtlich. Ich habe drauf verzichtet. Aber da gibt es bestimmt andere Möglichkeiten, doppeltes Coding zu vermeiden.
Deswegen habe ich den Variablename 'base' auch in 'me' geändert, damit das nicht verwirrt.
Ich glaube mich zu erinnern, schon was mit einem Zeiger 'base' probiert zu haben. Muss ich mal in den neuen Widgets suchen ...

nesges

Zitat von: setstate am 06 April 2016, 16:24:15
bei 1.) vermute ich es fehlt das this.addReading(elem,'get'); Es gibt kein default mehr.

In joinedlabel reicht "me.addReading(elem, 'get')" aus, hier geht's jetzt im update weiter.

In wind_direction habe ich folgendes versucht:

    function init_attr(elem) {
        var me = this;
        elem.initData('direction', elem.data('direction') || elem.data('get') || 'wind_direction');
        elem.initData('speed', elem.data('speed') || 'wind_speed');
        me.addReading(elem, elem.data('direction'));
        me.addReading(elem, elem.data('speed'));
        me.addReading(elem, 'wind_direction');
        me.addReading(elem, 'wind_speed');
        me.addReading(elem, 'get');
    };


Die letzten drei addReading() sollten nicht benötigt werden, ich hab sie nur try&error-mäßig hinzugefügt. update() wird aber nie aufgerufen. (auch nicht wenn ich die "dynamischen" Readings ganz weg lasse)


Wenn die Methoden des Parents nicht explizit aufrufbar sind, hab ich ein Problem mit der neuen Version.

setstate

Wie muss bei mir ein Dummy-Device aussehen, damit ich das wind_direction testen kann und bitte auch noch gleich ein kurzes Anwendungs-HTML zum Copy und Paste für mich bitte. Dann geht es schneller, als alles nur theoretisch durchzuspielen.

nesges

Zitat von: setstate am 06 April 2016, 17:50:25
Wie muss bei mir ein Dummy-Device aussehen, damit ich das wind_direction testen kann und bitte auch noch gleich ein kurzes Anwendungs-HTML zum Copy und Paste für mich bitte. Dann geht es schneller, als alles nur theoretisch durchzuspielen.

Das hier sollte reichen:

define WETTER_TEST dummy
setreading WETTER_TEST wind_direction 90
setreading WETTER_TEST wind_speed 12


<div data-type="wind_direction"
    data-device="WETTER_TEST"
    data-direction="wind_direction"
    data-speed="wind_speed"
    data-size="80"></div>


Wenn es korrekt läuft, wird ein Volume-Dial mit 8 Ticks angezeigt, in der Mitte ein "O" und davon ausgehend ein nach rechts zeigender Pfeil.

roman1528

Zitat von: roman1528 am 06 April 2016, 14:59:59
Moin.

Schade.. Ich komm nicht mehr mit.

Gerade ein Update (über FHEM) gemacht. Es funktioniert so einiges nicht mehr (Darstellung ausgeschlossen).

Was habe ich verpasst?

Die Widgets wurden scheinbar angepasst... Aber an welche Version? Welches JS-File muss ich jetzt nutzen damit alles wieder läuft?

Grüße^^

Hast du mir darauf schon geantwortet setstate?

ich nutze die 2.0 beta und bis zum update heute war alles schick.
jetzt läuft einiges nicht... vorallem das switch-widget nicht (ist mir explizit aufgefallen, da ich viel damit mache).
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

ulli

Wie ist denn die Bedeutung folgender Zeilen? 

    <meta name="shortpoll-interval" content="900">
Was für eine Einheit?

    <meta name="shortpoll-only-interval" content="30">
Was für eine Einheit? Welche bedeutung?

    <meta name="longpoll-delay" content="5"> <!-- 1=longpoll;0=shortpoll every 30sec -->
Sekunden zwischen den Longpolls?

    <meta name="longpoll" content="1"> <!-- 1=longpoll;0=shortpoll every 30sec -->
Aktiviert Longpoll? Schließt short poll aus?

setstate

#101
@nesges: wind_direction:

Zeile 87f
nicht
        });
        me.init_attr($(this));


sondern
          me.init_attr($(this));
        });


also Aufruf pro elem, innerhalb der Schleife

und Filterung beim 'update' muss auf die richtigen Attribute passieren.

    function update(dev,par) {
        isUpdating=true;
        console.log('update start');
        this.elements.filterDeviceReading('direction',dev,par)
        .add( this.elements.filterDeviceReading('speed',dev,par) )
        .each(function(index) {
            var elem = $(this);
                var value = elem.getReading('direction').val;
                var part = elem.data('part') || elem.data('direction-part') || -1;
                var val = getPart(value,part);
...


Aber ich räume noch bisschen auf und lade dann das kpl. File hoch.

z.B. - $(this) vermeiden, kostet Zeit, lieber var elem = $(this); und dann elem benutzen

setstate

Zitat von: ulli am 06 April 2016, 19:25:38
Wie ist denn die Bedeutung folgender Zeilen? 

    <meta name="shortpoll-interval" content="900">
Sekunden bis zur nächsten voller Werteabfrage, egal ob Longpoll an ist oder nicht

    <meta name="shortpoll-only-interval" content="30">
Sekunden bis zur nächsten voller Werteabfrage, wenn Longpoll aus ist

    <meta name="longpoll-delay" content="5">
Sekunden bis Longpoll startet. Gibt der Initialisierung mehr Zeit -> erst wenn alle Widgets fertig sind darf Longpoll starten.

    <meta name="longpoll" content="1">
Aktiviert Longpoll.

setstate

#103
@nesges: beim joinedlabel wird es ordentlich schwierig mit der Konvertierung, besonders mit den Array für das GET. Da muss richtig viel geändert werden. Mit dem base Funktionsaufruf bin ich auch noch nicht weitergekommen gestern. Muss ich noch etwas forschen ...

Edit:
Base Funktion Aufruf klappt jetzt. Welche Methode gefällt dir optisch besser? 1.) oder 2.) ?

1.)
Definition
   
    // inherit members from base class
    var base = new Modul_label();
    base.base_init_attr = base.init_attr;
    return $.extend(base, {
        //override members
        widgetname:         'joinedlabel',
        init_attr:          init_attr,
        update:             update,
        update_value_cb:    update_value_cb,
    });


Aufruf

    function init_attr(elem) {
        console.log('init_attr start');

        this.base_init_attr(elem);
       
        elem.initData('glue', ' ');
        elem.initData('mask', '');
        console.log('init_attr end');
    };


2.)
Definition

    // inherit members from base class
    var base = new Modul_label();
    var _base = {};
    _base.init_attr = base.init_attr;
    return $.extend(base, {
        //override members
        widgetname:         'joinedlabel',
        init_attr:          init_attr,
        update:             update,
        update_value_cb:    update_value_cb,
    });


Aufruf

    function init_attr(elem) {
        console.log('init_attr start');

        _base.init_attr.call(this,elem);
       
        elem.initData('glue', ' ');
        elem.initData('mask', '');
        console.log('init_attr end');
    };


Einige Änderungen bezüglich Array Reading sind noch nötig ...

Edit2
So, joinedlabel läuft jetzt bei mir rudimentär. Nur noch Sonderbehandlungsfunktionen wieder aktivieren und wieder hübsch machen.

Edit3
Das angepasste joinedlabel hängt jetzt hier dran. Es bedarf aber dazu die neuste Version vom fhem-tablet-ui.js und widget_label.js

Helmi55

Hallo guten Abend - sorry für die Verwirrung die ich gestiftet habe....
Habe wie von fheinz beschrieben die aktuelle 2.1 von Github geholt, ins Verzeichnis kopiert
und dann die einzelnen Thermostate und Switches in die neue index.html kopiert.
Funktioniert nun tadellos auch auf den mobilen Endgeräten wie Samsung Tab und iPad(muss hier nur die Formatierung noch einrichten)
Was bei mir wahrscheinlich den Fehler ausgelöst hat, war 1. das sture copy/past
denn dadurch habe ich auch den SVG Plot mit übernommen und der wird ja in 2.1 noch nicht unterstützt oder?
So siehts jetzt aus

Gruß
Helmut

System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/