NEWS
Popup und Counter bei Bewegung
-
Hallo Pix,
ich habe grade versucht dein Script für mich umzuändern. Leider stecke ich momentan fest. Vielleicht kannst du mir ja weiterhelfen.
Mein Ziel ist es das am Tablet (also in Vis) ein Popup öffnet wenn der Briefträger einen Brief einwirft (möglichst mit der Einwurfzeit). Das Popup soll erst geschlossen werden, wenn es bestätigt wird. Oder wenn der Briefkasten geleert wird.
Bisher habe ich dein Script wie folgt geändert:
/* Oeffnungen zaehlen und in VIS anzeigen für hofi77 http://forum.iobroker.net/viewtopic.php?f=21&t=1703#p14520 Bitte var idBewegungsmelder = 'hm-rpc.0.MEQ0215699.1', anpassen mit eigener Seriennummer erstellt: 14.11.2015 von Pix */ createState('VIS.Briefkasten_voll_zeigen', false, { read: true, write: true, type: 'boolean', name: 'Briefkasten voll in VIS Widget anzeigen', desc: 'Steuervariable für VIS Widget Sichtbarkeit' }); createState('VIS.Briefwürfe_zaehlen', 0, { read: true, write: true, type: 'number', name: 'Briefwürfe zählen', desc: 'Counter für Briefwürfe, wird mit schedule zurückgesetzt' }); var idBewegungsmelder = 'hm-rpc.0.MEQ0215699.1', idCountMotion = 'VIS.Briefwürfe_zaehlen', idShowMotion = 'VIS.Briefkasten_voll_zeigen'; on({ id: idBewegungsmelder, val: true }, function (obj) { var counter = getState(idCountMotion).val; // bisherige Zahl aus Variable einlesen setState(idCountMotion, ++counter); // eins hochzählen setState(idShowMotion, true); // Steuerung VIS-Widget Sichtrbarkeit auf wahr setStateDelayed(idShowMotion, false, 10000); // nach 10.000 ms wieder ausblenden }); // Mitternacht Zähler zurücksetzen schedule('0 * * * *', function () { setState(idCountMotion, 0); });
Die IdBewegungsmelder habe ich in die ID von der Schließerkontaktschnittstelle geändert.
Die beiden Variablen Briefwürfe_zaehlen, und VIS.Briefkasten_voll_zeigen sind angelegt und stehen auf 0 bzw. auf false.
Dann habe ich das View Briefkasten angelgt und im View in dem es nachher angezeigt werden sooll eingebunden.
Leider ändert sich die Variable nicht von null auf 1 beim öffnen des Briefkastens und die Zweite Variable geht auch nicht von false auf true.
Hier der Widget Text für die Einbindung:
[{"tpl":"tplContainerView","data":{"visibility-cond":"==","visibility-val":"true","gestures-offsetX":0,"gestures-offsetY":0,"gestures-swiping-value":"","gestures-rotating-value":"","gestures-pinching-value":"","gestures-swipeRight-value":"","gestures-swipeLeft-value":"","gestures-swipeUp-value":"","gestures-swipeDown-value":"","gestures-rotateLeft-value":"","gestures-rotateRight-value":"","gestures-pinchIn-value":"","gestures-pinchOut-value":"","contains_view":"Briefkasten","visibility-oid":"javascript.1.VIS.Briefkasten_voll_zeigen"},"style":{"left":"340px","top":"130px","width":"600px","height":"600px","z-index":"10"},"widgetSet":"basic"}]
Und hier der Text für den View:
{ "settings": { "style": { "background": "orange", "background-size": "auto", "color": "white", "background_class": "" }, "theme": "redmond", "sizex": "600", "sizey": "600", "gridSize": "" }, "widgets": { "e00001": { "tpl": "tplHtml", "data": { "hm_id": 65535, "digits": "", "factor": 1, "min": 0, "max": 1, "step": 0.01, "html": "Die Post ist da :-)", "visibility-cond": "==", "visibility-val": 1, "refreshInterval": "0", "views": [ "OG", "Garten" ], "gestures-offsetX": 0, "gestures-offsetY": 0, "gestures-swiping-value": "", "gestures-rotating-value": "", "gestures-pinching-value": "", "gestures-swipeRight-value": "", "gestures-swipeLeft-value": "", "gestures-swipeUp-value": "", "gestures-swipeDown-value": "", "gestures-rotateLeft-value": "", "gestures-rotateRight-value": "", "gestures-pinchIn-value": "", "gestures-pinchOut-value": "" }, "style": { "left": "106px", "top": "102px", "width": "400px", "height": "69px", "text-shadow": "", "color": "darkred", "font-size": "45px", "font-family": "", "line-height": "", "font-weight": "700", "padding": "" }, "widgetSet": "basic" }, "e00002": { "tpl": "tplValueTimestamp", "data": { "oid": "hm-rega.0.16540", "visibility-cond": "==", "visibility-val": 1, "gestures-offsetX": 0, "gestures-offsetY": 0, "gestures-swiping-value": "", "gestures-rotating-value": "", "gestures-pinching-value": "", "gestures-swipeRight-value": "", "gestures-swipeLeft-value": "", "gestures-swipeUp-value": "", "gestures-swipeDown-value": "", "gestures-rotateLeft-value": "", "gestures-rotateRight-value": "", "gestures-pinchIn-value": "", "gestures-pinchOut-value": "", "format_date": "DD.MM.YYYY hh:mm:ss" }, "style": { "left": "128px", "top": "174px", "width": "350px", "height": "58px", "color": "darkred", "font-size": "xx-large" }, "widgetSet": "basic" }, "e00003": { "tpl": "tplImage", "data": { "visibility-cond": "==", "visibility-val": 1, "refreshInterval": "0", "refreshOnWakeUp": "false", "refreshOnViewChange": "false", "gestures-offsetX": 0, "gestures-offsetY": 0, "gestures-swiping-value": "", "gestures-rotating-value": "", "gestures-pinching-value": "", "gestures-swipeRight-value": "", "gestures-swipeLeft-value": "", "gestures-swipeUp-value": "", "gestures-swipeDown-value": "", "gestures-rotateLeft-value": "", "gestures-rotateRight-value": "", "gestures-pinchIn-value": "", "gestures-pinchOut-value": "", "src": "/icons-mfd-png/message_mail_open.png" }, "style": { "left": "169px", "top": "214px", "width": "218px", "height": "193px" }, "widgetSet": "basic" }, "e00004": { "tpl": "tplValueFloat", "data": { "oid": "javascript.1.VIS.Briefwürfe_zaehlen", "visibility-cond": "==", "visibility-val": 1, "is_comma": "true", "is_tdp": "false", "factor": "1", "gestures-offsetX": 0, "gestures-offsetY": 0, "gestures-swiping-value": "", "gestures-rotating-value": "", "gestures-pinching-value": "", "gestures-swipeRight-value": "", "gestures-swipeLeft-value": "", "gestures-swipeUp-value": "", "gestures-swipeDown-value": "", "gestures-rotateLeft-value": "", "gestures-rotateRight-value": "", "gestures-pinchIn-value": "", "gestures-pinchOut-value": "" }, "style": { "left": "224px", "top": "420px", "width": "107px", "height": "58px", "color": "darkred", "font-size": "45px" }, "widgetSet": "basic" } }, "name": "Briefkasten", "rerender": false, "filterList": [] }
Kannst du mir sagen was falsch ist, das sich die Variablen nicht ändern?
Und was muss ich noch hinzufügen, damit das Popup immer offen bleibt bzw. bis zu Bestätigung?
Und wie bekomme ich den Bestätigen Button?
Über deine Hilfe würde ich mich sehr freuen.
Danke Gruß Sven
-
Hallo,
da fehlt der komplette Datenpunkt.
Statt````
var idBewegungsmelder = 'hm-rpc.0.MEQ0215699.1',muss da```` var idBewegungsmelder = 'hm-rpc.0.MEQ0215699.1.STATE', ````rein. In dieser Zeile```` setStateDelayed(idShowMotion, false, 10000); // nach 10.000 ms wieder ausblenden ````wird noch festgelegt, dass das Popup nach 10s wieder verschwindet. Wenn das nicht sein soll, einfach auskommentieren ("//" an den Zeilenanfang schreiben) Gruß Pix [655_img_20190206_160552.jpg](/assets/uploads/files/655_img_20190206_160552.jpg)
-
Danke Pix,
das ging ja wirklich sehr schnell. Ich habe es geändert und jetzt funktioniert es perfekt.
Jetzt bleiben mir noch 2 Fragen übrig:
1. Wie kann ich einen "Schließen" Button einfügen? Wenn ich das richtig verstehe, müsste das ja ein widget sein, das die Variable auf false setzt oder? Welche nehme ich da am besten?
2. Wenn ich die Briefkastentür öffne, muss die Variable und der Zähler ja wieder auf null gesetzt werden. Wie bekomme ich das hin?
Grus Sven
-
Hallo,
freut mich, dass es klappt.
zu 1)
Du kannst ein Metro Tiel State Widget nehmen und false in "Wert" eintragen.
zu 2)
Dazu muss der Sensor, der die Tür überwacht, abgefragt werden. Wenn der true/false geht, dann Zähler auf 0.
Gruß
Pix
-
Hallo Pix,
zu 2 klar wird die tür überwacht und zwar mit der gleichen Schnittstelle ist ja extra mit 3 Anschlüssen.
Hier zielte meine Frage ganu darauf, welches widget mir diese Möglichkeit bietet sowohl die Variable auf false und den Zähler auf null zu stzen?
Gruß Sven
-
Hallo,
also, wenn es der gleiche Sensor, mit anderem Kanal ist, dann einfach den anderen Kanal in das Widget eintragen: hm-rpc.0.MEQ0215699.2.STATE oder hm-rpc.0.MEQ0215699.3.STATE
Und zum Setzen von Werten eignet sich - wie gesagt - das Metro Tile State Widget. In OID dann zB "javascript.0.VIS.Briefkasten_voll_zeigen" eintragen und in Wert "false". Beim Drücken des Widgets wird der Wert gesetzt, das Popup verschwindet. Für das Zurücksetzen des Zählers beim Öffnen der Tür (ich gehe einfach von hm-rpc.0.MEQ0215699.2.STATE für die Tür aus) diesen Code mit ins Skript schreiben:
on({ id: "hm-rpc.0.MEQ0215699.2.STATE", val: true // hier ggf. false eintragen. Abhängig davon, ob Tür offen = true oder false }, function (obj) { setState(idCountMotion, 0); // reset setState(idShowMotion, false); // Steuerung VIS-Widget Sichtrbarkeit auf aus });
-
Hallo Pix,
Sorry für die verspätete Antwort. 1000 dank für deine Hilfe es funktioniert wunderbar.
Ich freue mich über die schnelle und fachlich super gelungene Unterstützung.
Kannst du mir vielleicht auch noch einen Tipp geben was in das Script muss, damit bei der Briefkastenöffnung automatisch in das passende View (in dem mein popup geöffnet wird) gewechselt wird.
Gruß Sven
Gesendet von iPhone mit Tapatalk
-
Hallo Sven,
dafür gibt es in vis.0 die Datenpunkte control.instance, control.data und control.command (auch als Objekt), Beschreibung https://github.com/ioBroker/ioBroker.vis/blob/master/README.md#control-interface
Allerdings nutze ich das nicht, da es auf dem iPad im Vollbildmodus http://forum.iobroker.de/viewtopic.php?f=30&t=1477&p=19858&hilit=ipad+instanz&sid=23758ed301991316f9ef1b6d59c7fc9a#p19858 nicht funktioniert :?
Du kannst auf den Bewegungsmelder reagieren
deklariert ist ja bereits
<size size="85">var idBewegungsmelder = 'hm-rpc.0.MEQ0215699.1.STATE'</size>
Dann geht
on(idBewegungsmelder, function (obj) { log('Briefkasten betätigt, View wird gewechselt'); setState (vis.0.control.command, {instance: 'FFFFFFFF', command: 'cmd', data: 'name_der_view'}); // hier den Namen der Ziel-View eintragen });
Gruß
Pix
-
Hallo Pix,
leider klappt das mit dem View wechsel bei mir leider nicht.
Wenn ich das Script um deinen angegebenen Text erweitere, hat das Script ein Problem mit der Zeile: … vis.0. usw. wenn ich die 0 lösche, erscheint folgender fehler im Log.
javascript.1 2016-03-05 21:06:29 error ReferenceError: vis is not defined at Object. (script.js.Briefkasten:58:15) at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1190:48) at /op
javascript.1 2016-03-05 21:06:29 error message hm-rpc.0.MEQ0215699.1.STATE [object Object] vis is not defined
javascript.1 2016-03-05 21:06:29 info javascript.1 script.js.Briefkasten: Briefkasten betätigt, View wird gewechselt
javascript.1 2016-03-05 21:06:28 error ReferenceError: vis is not defined at Object. (script.js.Briefkasten:58:15) at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1190:48) at /op
javascript.1 2016-03-05 21:06:28 error message hm-rpc.0.MEQ0215699.1.STATE [object Object] vis is not defined
javascript.1 2016-03-05 21:06:28 info javascript.1 script.js.Briefkasten: Briefkasten betätigt, View wird gewechselt
javascript.1 2016-03-05 21:06:26 info javascript.1 script.js.Betriebsstundenzähler: Licht_Haustür.STATE;Betriebsstundenzaehler.System.Grp00MSec;false ; 000:00:01:48 ; 108360 ; 001:12:42:29 ; 132149522
javascript-1 2016-03-05 21:05:23 info script.js.Briefkasten: registered 3 subscriptions and 1 schedule
javascript-1 2016-03-05 21:05:23 info Start javascript script.js.Briefkasten
Wofür steht denn die "0" mit der das Script das Problem hat?
Vielleicht ist noch wichtig zu wissen, das bei mir die Javascript Instanz javascript.1 heißt.
Gruß en
-
Hallo, schreib mal 'vis.0.control.command' in Anführungszeichen.
Gruß,
Pix
Gesendet mit Tapatalk
-
Ok,
jetzt erscheint kein Fehler mehr im Log, aber das View wechselt leider auch nicht.
Gibt es noch eine Möglichkeit den Fehler zu finden?
Gruß Sven
-
Hallo Pix, bisher habe ich es leider noch nicht hinbekommen den View automatisch zu wechseln. Kannst du mir nochmal helfen?
Vielleicht hilft mir das auch bei meinem anderen Fred
Gruß Sven
Gesendet von iPhone mit Tapatalk