NEWS
[Gelöst] Abfrage "Sind Sie sicher?" Ja/Nein
-
Hallo zusammen.
ich habe ein View, in dem ich die Haustür über Homekey steuere.
Da habe ich, wie man sieht drei Button's, die jeweils eine Aktion auslösen.
Die wird natürlich sofort ausgelöst, nachdem man einen Button klickt. Ich würde
aber nun gern noch eine Sicherheitsabrage "Sind sie sicher`? und einen Ja / Nein Button
einblenden, bevor die Aktion wirklich ausgeführt wird.
Jemand eine Idee, wie ich das am bestene bewerkstellige ?
Gruss.
ToBo
-
Druck auf knopf ist trigger der ein popup öffnet, dahinter eine Variable true/false und mit JavaScript/blockly Action auslösen
Kram gerade Mal raid was mir einfällt aber so ähnlich müsste es gehen ?
–-----------------------
Send from mobile device
-
Hab das ähnlich gelöst. Auf/zu setzt eine Variable. Diese Variable dient über Sichtbarkeit der Einblendung des eigentlichen öffnen-Knopfes.
Pix
-
So ähnlich habe ich mir das schon gedacht. Also muss ich noch 6 weiter Buttons erstellen. Ich habe hier drei Funktionen und brauche für jede einen Ja und einen Nein Button. Diese alle genau übereinander gelegt und je nach Funktion eingeblendet.
Gibt es vielleicht ein Frame Widget, indem ich diese Buttons legen kann und nur diesen Frame ein/ausblenden kann ?
PS: In VB würde ich eine Variable anlegen, Je nachdem welcher Funktionsbutton gedrückt wurde, diese auf 1,2, oder 3 setzen, einen Frame mit Ja und Nein Button einblenden und anhand des Zustandes der Trigger Variable die entsprechende Funktion auslösen, oder den Frame einfach wieder ausblenen und den Trigger auf 0 setzen.
-
Hallo Tobo,
bleibt doch bitte im ioBroker Terminus. Ich weiß sonst nicht, was du meinst. Frames = Views oder Widgets? Was ist VB?
Es reicht auch eine Variable für die Sichtbarkeit. Wenn irgendeine der drei Tasten gedrückt (alle drei ändern das gleiche Objekt, nämlich diese Variable "Sicherheitsfrage"), dann "Sicherheitsfrage" = true.
Wenn "Sicherheitsfrage" = true, dann alle Widgets, die unter der Bedingung "Sicherheitsfrage" = true eingeblendet werden sollen, anzeigen. Dann nach zB 5s "Sicherheitsfrage" = false;
Kannst aber auch für jede Funktion eine Variable erstellen.
So habe ich das im meinem Smartphone-Projekt gemacht. Mein Wandtablet Projekt öffnet einfach nur einen Dialog.
Gruß
Pix
-
VB dürfte Visual Basic sein?
Frames nehme ich an sind Dialoge.
Wenn ich mich an dieser Stelle kurz mit zwei Fragen einklinken dürfte, da sie auch zu Dialogen passen:
-
schließt du (Pix) deinen Dialog dann über das x rechts oben, oder hast du eine Lösung, dass der Dialog nach der auswahl automatisch schließt?
-
Steuerst du, und wenn ja wie, wo dein Dialogfenster sich öffnet? Bei mir ist das Problem, dass einige Dialogfenster mittig auf dme Screen sich öffnen (wunderbar), andere aber teilweise so, dass der Rahmen außerhalb des Screens liegt und ich dann keine Chance habe, diese mit "x" zu schließen?
-
-
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.