[FHEM-Tablet-UI] Alert/Message Widget

Begonnen von ambiman, 21 Dezember 2015, 15:27:39

Vorheriges Thema - Nächstes Thema

ambiman

Hallo zusammen,

da ich eine Nachricht (inkl. Bestätigung) auf mein Tablet bringen wollte, habe ich mir heute ein simples neues Widget names "alertmsg" gebaut.
Da es eine Standard JavaScript Alert Nachricht ist, muss diese vom Benutzer bestätigt werden.
Basis hierfür war das 'label'-Widget.

Das Widget prüft auf das Reading 'msg'.
Sollte dieses in FHEM gesetzt werden erscheint sofort die Nachricht (msg) auf dem FTUI.

Eine Nachricht kann abgesetzt werden mit dem Befehl 'setreading <device> msg "NACHRICHT"'

Folgenden Dummy nutze ich derzeit:


Internals:
   CFGFN
   NAME       ftuimsg
   NR         24194
   STATE      ???
   TYPE       dummy
   Readings:
     2015-12-21 15:14:24   msg             ftui-processed
Attributes:


Vielleicht kann es noch jemand gebrauchen....

Einfach als 'widget_alertmsg.js' in den Ordner 'tablet' speichern und im FTUI HTML File wie folgt einbinden (das Widget selbst ist nicht sichtbar):


<div data-type="alertmsg" class="cell" data-device="ftuimsg"></div>


Anbei der Code:


if(typeof widget_widget == 'undefined') {
    loadplugin('widget_widget');
}

var widget_alertmsg = $.extend({}, widget_widget, {
    widgetname:"alertmsg",
    init_attr: function(elem) {
        elem.data('get',            elem.data('get')                    || 'msg');
        elem.data('part',           elem.data('part')                   || -1);

        readings[elem.data('get')] = true;
    },
    init: function () {
        this.elements = $('div[data-type="'+this.widgetname+'"]');
        this.elements.each(function(index) {
            widget_alertmsg.init_attr($(this));
        });
    },
    update: function (dev,par) {
        var base = this;
        var deviceElements= this.elements.filter('div[data-device="'+dev+'"]');
        deviceElements.each(function(index) {
            if ( $(this).data('get')==par){
                var value = ($(this).hasClass('timestamp'))
                            ?getReadingDate( $(this), 'get' )
                            :getDeviceValue( $(this), 'get' );
                if (value){
                    var val = getPart(value,-1);

    if (val){               
if ( val != 'ftui-processed' ){
//JS Alert message
alert(val);
setFhemStatus("setreading "+$(this).data('device')+" "+$(this).data('get')+" ftui-processed");
}
            }
                 }
            }
        });
    }
});