NEWS
[Gelöst] Abfrage "Sind Sie sicher?" Ja/Nein
-
Was ist bitte ein Dialogfenster und wie erstelle ich so eines.
Sorry Pix. Ich dachte diese Begriffe sind für Programmierer gängige Praxis. VB ist Visual Basic und ein Frame ein Rahmen, in dem man etwas anzeigen kann. Also in diesem Fall besagtes Dialogfenster.
-
Dialoge sind wohl deine "Frames", in denen du nach klick auf einen Button (widget habe ich nicht auswendig im Kopf, können aber mehrere) eine andere View anzeigen lassen kannst.
Rechts in den Widget Einstellungen findest du neben Allgemein, Sichtbarkeit usw eben bei einigen auch "Dialog"; dort dann die anzusprechende View eintragen und die Größe des Dialogs (z.B. 200 x 100 px).
-
Noch eine Frage zu der Triggervariable. Kann ich in IOBroker eine globale Systemvariable anlegen, die ich dazu verwenden kann ? Wenn ja, wie und wo ?
-
Hallo,
"globale" Systemvariablen kann man anlegen. Im Reiter Objekte können Objekte angelegt werden. Alternativ im Javascript Adapter mit einem Skript. Bitte in der Javascript Adapter Doku nach createStates() und setStates() nachsehen.
Global habe ich oben in Haken gesetzt, da das Wort im Zusammenhang mit ioBroker Scripts eine andere Bedeutung hat, als hier.
Zum Dialog:
Es gibt ein Skript, das Dialoge nach X Zeit schließen kann (http://forum.iobroker.net/viewtopic.php … ßen#p38378)
Du kannst aber auch einen eigenen Dialog bauen. Die Funktion "Sichtbarkeit" in VIS ist dazu perfekt geeignet.
Gruß
Pix
-
@pix:Im Reiter Objekte können Objekte angelegt werden. `
Ist das so richtig ? Unter Admin.0 ein neues Objekt anlegen ?
-
Da ich bisher keine Antwort auf meine vorherige Frage bekommen habe und ich nix kaputt machen will, habe ich die Variablen in der HomeMatic als Systemvariablen angelegt.
So sieht das jetzt bei mir aus.
Wenn eine der drei Tasten geklickt wird, werden diese und die Back Taste sofort ausgeblendet und mit 400ms Verzögerung die Sicherheitsabfrage eingeblendet.
Hier ist mein Code. Funktioniert alles ganz Prima
var idJa = "hm-rega.0.2334"; //Button Ja var idNein = "hm-rega.0.2335"; //Button Nein var idJN = "hm-rega.0.2333"; //1 = aufschließen / 2 = zuschließen / 3 = Tür öffnen var idPause = "hm-rega.0.2336" //Trigger einblenden Abfrage verzögert // Script start alles Reset setState(idJa, false); setState(idNein, false); setState(idPause, false); setState(idJN, 0); //Abfrage einblenden on(idJN, function(dp) { // Triggern bei Änderung if (getState(idJN).val !== 0 ) { setStateDelayed(idPause, true, 400); } }); //Bestätigung Nein on(idNein, function(dp) { // Triggern bei Änderung if (getState(idNein).val == "1" ) { setState(idNein, false); setState(idJa, false); setState(idPause, false); setStateDelayed(idJN, 0, 400); } }); //Bestätigung Ja - Tür zu on(idJa, function(dp) { // Triggern bei Änderung if (getState(idJa).val == "1" && getState(idJN).val == 2) { setState(idNein, false); setState(idJa, false); setState(idPause, false); setStateDelayed(idJN, 0, 400); setState("hm-rpc.0.OEQ0119854.2.PRESS_SHORT", true); } }); //Bestätigung Ja - Tür auf on(idJa, function(dp) { // Triggern bei Änderung if (getState(idJa).val == "1" && getState(idJN).val == 1) { setState(idNein, false); setState(idJa, false); setState(idPause, false); setStateDelayed(idJN, 0, 400); setState("hm-rpc.0.OEQ0119854.1.PRESS_SHORT", true); } }); //Bestätigung Ja - Tür Öffnen on(idJa, function(dp) { // Triggern bei Änderung if (getState(idJa).val == "1" && getState(idJN).val == 3) { setState(idNein, false); setState(idJa, false); setState(idPause, false) setStateDelayed(idJN, 0, 400); setState("hm-rpc.0.OEQ0119854.4.PRESS_SHORT", true); } });
PS: Falls jemand wissen möchte, warum ich 400ms Verzögerung beim Ein und Ausblenden der Abfrage habe. Auf dem PC geht das ohne super. Da klickt man mit der Maus. Auf dem Handy nicht. Weil die Buttons der Abfrage genau über den mittleren Button Tür Zu liegen, wird beim Handy, sofort der Ja, oder Nein Button betätigt wenn die Abfrage eingeblendet wird. Komisch, ist aber so. Die Umschaltung geht so superschnell.
Gruss.
ToBo
-
Danke fürs teilen;
Als Idee:
Du könntest die Buttos noch sachlogisch anzeigen lassen. Sprich lock nur, wenn die Tür auch geschlossen ist. Unlock nur, wenn Tür gelockt ist. Tür auf nur, wenn wenn unlocked.
Ist mehr optisch; aber ich persönlich bin immer ein Freund davon, nur das anzuzeigen, was auch aktiv umgesetzt werden kann.
LG
-
Hallo,
darüber hab ich noch gar nicht nachgedacht. Danke, ist keine schlechte Idee.
Gruss.
ToBo
-
Da muss ich kurz einhaken, ich hab da nämlich ein "verwandtes" Problem.
Grundsätzlich steuerst Du ja die UI über system-globale Variablen.
Das heisst wenn Du hier was machst, wird das auf JEDER Instanz, die grad auf vis zugreift, gleich angezeigt.
Das kann jetzt gut oder schlecht sein
Manchmal wärs schlauer, so eine Variable die die UI "steuert" nur für die Browser Instanz zu haben.
Gibts da eine Lösung?
Wie gesagt, wenn grad zwei Leute auf diesen Screen schauen und einer drückt "öffnen", sehen beide das "Bist Du sicher" …
CU
Werner
-
So ist es. Ist mir auch schon aufgefallen. Hat mich aber nicht so stark gestört, weil sehr unwahrscheinlich das bei uns zwei Leute das zur gleichen Zeit machen wollen.