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");
}
}
}
}
});
}
});