Popup bei Telefonanruf

Begonnen von Lichti, 25 Februar 2016, 15:00:36

Vorheriges Thema - Nächstes Thema

Lichti

Mit Tablet UI möchte ich das bei einem eingenden Telefonanruf sich ein Popup-Fenster öffnet, die Rufnummer anzeigt, und sich nach Beendigung des Anrufs wieder schliesst.

Code:

<li data-row="9" data-col="9" data-sizex="1" data-sizey="1">
  <header>WARN-POPUP</header>
  <div class="top-space">
      <div data-type="popup" data-device="Telefon" data-get="event" data-get-on="ring" data-get-off="disconnect" data-height="240px" data-width="240px">
         <div class="dialog">
           <header>ANRUF</header>
           <div data-type="label" data-device='Anrufliste' data-get="1-number" class="top-space-3x red big"></div>
         </div>
      </div>
  </div>
</li>

Das Popup geht jedoch sofort auf, auch wenn kein Anruf kommt.
Was mache ich falsch ?

Gruß

Lichti

#1
Hab nochmal getestet:
Sobald ich bei data-get einen gültigen Wert angebe, macht das Popup auch ohne Event sofort auf und öffnet sich nach manuellem schliessen auch sofort wieder.
Schreibe ich hier was üngültiges rein, bleibt das Popup geschlossen. Hat dann aber natürlich keine Funktion.

Hat jemand eine Idee, woran das liegt ?

Danke und Gruß

setstate

Hallo Lichti,

da gibt es noch Optimierungsspielraum beim popup Widget.

Bis dahin musst du noch einen Starter angeben: (hier mal nur ein <div></div>)


<li data-row="9" data-col="9" data-sizex="1" data-sizey="1">
  <header>WARN-POPUP</header>
  <div class="top-space">
      <div data-type="popup" data-device="dummy1" data-get="event" data-get-on="ring" data-height="240px" data-width="240px">
      <div></div>
         <div class="dialog">
           <header>ANRUF</header>
           <div data-type="label" data-device='Anrufliste' data-get="1-number" class="top-space-3x red big"></div>
         </div>
      </div>
  </div>
</li>


Hintergrund: es wird ein $(this).children(":first") gesucht. Das ist aber im Fall ohne das explizite Starter-Element, das falsche.

Lichti

#3
Hallo setstate,

danke für die Info.

Muss ich noch ein dummy1-Device anlegen oder kann ich hier das Telefon-Device einsetzen ?
Und was muss ich bei dem Starter einsetzen ? Oder reicht das <div></div> ?

Jetzt öffnet das Popup zwar nicht mehr von allein, aber auch nicht beim Event.

Gruß
Lichti

accessburn

Vielen Dank für den netten Denkanstoß:

  <div class="top-space">
      <div data-type="popup" data-device="Fritzboxanrufeliste" data-get="1-state" data-get-on="=>  ((o))" data-height="300px" data-width="240px">
      <div></div>
         <div class="dialog">
           <header>ANRUF</header>
<div class="red bold big top-space-2x">Neuer Anruf f&uuml;r <div data-type="label" data-device="Fritzboxanrufeliste" data-get="1-internal" class="inline"></div></div>
<br />
<table width="100%" border="0">
<tr>
<td align="center">
<div data-type="label" data-device="Fritzboxanrufeliste" data-get="1-number" class="inline"></div>
</td>
<td align="center">
<div data-type="label" data-device="Fritzboxanrufeliste" data-get="1-name" class="inline"></div>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<div data-type="symbol" title="test" data-device="Fritzboxanrufeliste" data-get="1-state" data-icons='["fa-toggle-off","fa-phone","fa-phone","fa-phone fa-blink","fa-phone fa-blink","fa-phone fa-blink","fa-phone fa-blink","fa-phone fa-blink","fa-phone"]' data-on-colors='["red","green","green","red","yellow","yellow","green","green","white"]' data-get-on='["=> O_O","<=","=>","=> X","=>  ((o))","<= ((o))","=>  [=]","<=  [=]","<= X"]' style="font-size: 160%; height: 50px;"></div>
<div data-type="symbol" data-device="Fritzboxanrufeliste" data-get="1-state" data-icons='["fa-sign-in","fa-sign-out","fa-sign-in","fa-sign-in","fa-sign-in","fa-sign-out","fa-sign-in","fa-sign-out","fa-sign-out"]' data-on-colors='["red","green","green","red","yellow","yellow","green","green","white"]' data-get-on='["=> O_O","<=","=>","=> X","=>  ((o))","<= ((o))","=>  [=]","<=  [=]","<= X"]'  style="font-size: 160%; height: 50px;"></div>
</td>
</tr>
</table>
        <div data-type="link" class="round top-space-2x left-space-3x" data-width="130" data-height="50" data-color="white" data-background-color="red" data-icon="fa-check" onclick="$('.dialog-close').trigger('click');">OK</div>
         </div>
      </div>
  </div>
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

setstate

Zitat von: Lichti am 27 Februar 2016, 11:04:06
Hallo setstate,

danke für die Info.

Muss ich noch ein dummy1-Device anlegen oder kann ich hier das Telefon-Device einsetzen ?
Und was muss ich bei dem Starter einsetzen ? Oder reicht das <div></div> ?

Jetzt öffnet das Popup zwar nicht mehr von allein, aber auch nicht beim Event.

Gruß
Lichti

Ich habe es geändert, jetzt sollte dein Code auch ohne extra div funktionieren. Nach Update ...

Lichti

Habe einen fhem-Update gemacht und den (etwas angepassten) Code von accessburn genommen.
Funktioniert jetzt super !
Das <div></div> muss allerdings immer noch drin sein, sonst macht das Popup dauernd auf.

rasti

Hab ich nun auch eingebaut, hier meine stark abgespeckte Version auf Basis des Codes von Accessburn


  <div class="top-space">
      <div data-type="popup" data-device="Fritzboxanrufeliste" data-get="1-state" data-get-on="=>  ((o))" data-height="300px" data-width="600px">
      <div></div>
         <div class="dialog">
           <header></header>
<h1>Anruf von </h1>
<br>
<div data-type="label" class="big" data-device="Fritzboxanrufeliste" data-get="1-number" ></div>
<br>
<div data-type="label" class="big"  data-device="Fritzboxanrufeliste" data-get="1-name"></div>
        <div data-type="link" class="round top-space-2x left-space-3x" data-width="130" data-height="50" data-color="white" data-background-color="red" data-icon="fa-check" onclick="$('.dialog-close').trigger('click');">OK</div>
         </div>
      </div>
  </div>


Gruss

Ralf

setstate

Aber, geht das bei euch nicht wirklich ohne <div></div> ???
Bei mir klappt das. Ich aktuellsten Code ergänze ich ein <div class="dialog-starter"></div> automatisch

accessburn

dialog-starter steht für was?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Lichti

Hab nochmal getestet:

Sobald ich im popup-Aufruf ein "data-get-off=" einbaue, muss dahinter ein <div></div> stehen.
Sonst geht's ohne.

MegaData

Hallo zusammen,

ich habe es mit allen genannten Varianten probiert - bei mir funktioniert es leider nicht. Hat sich da etwas geändert ? :( Bei mir öffnet sich keinerlei Popup.

VG

Mustermann

Hallo,
ich habe es bei mir mit einen Notify und einen dummy gelöst.

kurze erklärung.
bei einen Anruf löst das notify aus, es setzt den dummy (telefon) auf on.
Das popup fenster öffnet sich weil ----> data-get-on="on"
Ist der anruf vorbei wird der dummy auf off gesetzt und das popup schliest sich


als erstes einen dummy erstellen:
define telefon dummy
attr telefon WebCmd on:off


und nun das notify:
define telefon_popup notify Callmon:.* {
my $event = ReadingsVal("Callmon","event","disconnect");;


if ($event eq "ring") {
       fhem ("set telefon on");;
        }
  else {     
  fhem ("set telefon off");; 
}
}




hier noch mein tabletUI code:

<div data-type="popup"
     data-device="telefon"
     data-get-on="on"
     data-get-off="off"
     data-height="100px"
     data-width="600px">
    <div class="dialog">
        <header>Anrufer Info</header>
        <div>
                <div data-type="label" data-device="FritzBoxCallList" data-get="1-name"></div>
                <div data-type="label" data-device="FritzBoxCallList" data-get="1-number"></div>           
        </div>
    </div>
</div>

Sailor

Ein herzerfrischendes "Moin Moin" vom "hintern Deich" vorweg!

Ich bin mir bewusst, dass ich mit meinem Anliegen nicht ganz richtig bin aber ich denke zumindest zu 80%  ;)

Ich habe die Anleitung oben ausprobiert und sie funktioniert super!
Sobald ein bestimmtes Reading einen bestimmten Wert hat geht das popup auf und hinterher wieder zu.

Erstklassig - Danke!  :)

Jetzt zu meinem Problem:

Das Popup soll einen Stream meiner Türsprechanlage darstellen.
Macht es im Grunde auch, allerdings lädt der Stream bereits beim Refresh der tablet Oberfläche los.

Das führt zu folgenden Problemen:
a) Die Daten für diesen Stream laufen die ganze Zeit im Hintergrund weiter, auch wenn das Popup sich im Hintergrund befindet.
b) Sollte der Stream kurzzeitig Kameraseitig unterbrochen werden, friert das Bild im Hintergrund bereits ein und man bekommt auf dem Popup nur das letzte Bild des Streams angezeigt.

Frage:
1) Habt Ihr eine Ahnung, wie ich den Stream einbinden kann, so dass er erst dann geladen wird, wenn das Popup in den Vordergrund gehoben wurde?
2) Wie kann man den Stream wieder unterbrechen, sollte das Popup wieder in den Hintergrund geschoben worden sein.

Danke für Eure Mühe!

Gruß
    Sailor

******************************
Man wird immer besser...

moonsorrox

ich habe das jetzt mal nach gebaut da ich etwas ähnliches in Betrieb habe nur ich muss jedes mal die Warnanzeige drücken.
Deshalb mal der Test mit dem Beispiel hier, aber ich stelle fest das erst nach dem aktualisieren F5 drücken das PopUp aufgeht  :-\

<div class="top-space">
<div data-type="popup" data-device="Callmonitor" data-get="event" data-get-on="ring" data-height="260px" data-width="700px">
<!--div></div-->
<div class="dialog bg-darkgray">
<header style="background-color:#1f222e">
<div class="sheet">
<div class="left" style="margin-left:15px; margin-top:17px; margin-bottom:15px; font-size:20px; color:crimson">=== Neuer Anruf ===</div>
</div>
</header>
<div class="cell">
<div class="hbox">
<div class="cell inline" style="font-size:20px; color:white" data-type="label" data-device="Anrufliste" data-get="1-number"></div>
<div class="cell inline" style="font-size:130%; color:white" data-type="label" data-device="Anrufliste" data-get="1-name"></div>
</div>
<div class="hbox">
<div class="cell compressed inline" style="font-size: 160%; height: 50px;" data-type="symbol" data-device="Anrufliste" data-get="1-state" data-icons='["fa-toggle-off","fa-phone","fa-phone","fa-phone fa-blink","fa-phone fa-blink","fa-phone fa-blink","fa-phone fa-blink","fa-phone fa-blink","fa-phone"]' data-colors='["crimson","green","green","crimson","yellow","yellow","green","green","white"]' data-get-on='["=> O_O","<=","=>","=> X","=>  ((o))","<= ((o))","=>  [=]","<=  [=]","<= X"]'></div>
<div class="cell compressed inline" style="font-size: 160%; height: 50px;" data-type="symbol" data-device="Anrufliste" data-get="1-state" data-icons='["fa-sign-in","fa-sign-out","fa-sign-in","fa-sign-in","fa-sign-in","fa-sign-out","fa-sign-in","fa-sign-out","fa-sign-out"]' data-colors='["crimson","green","green","crimson","yellow","yellow","green","green","white"]' data-get-on='["=> O_O","<=","=>","=> X","=>  ((o))","<= ((o))","=>  [=]","<=  [=]","<= X"]'></div>
</div>
<div class="inline">
<div class="top-align round" data-type="link" data-width="130" data-height="50" data-color="white" data-background-color="crimson" data-icon="fa-check" onclick="$('.dialog-close').trigger('click');">OK</div>
</div>
</div>
</div>
</div>
</div>
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM