Open Bakati opened 4 years ago
Entscheidend ist, was in der URL steht.
Ruft man das System erstmalig über die Domain auf, ist der URL-Pfad leer und es wird immer der jeweils aktuelle Tag angezeigt.
Klickt man die Tage durch oder auf "Heute", steht in der URL ?date=2020-07-01 - dann ist die Ansicht auf dieses Datum festgelegt.
Lieber Tobias, vielen Dank für die prompte Antwort. Richtig, das habe ich auch gesehen aber, hier drückt niemand auf eine taste da die Monitor nur als Anzeige verwendet wird. Also ich rufe die URL auf und lasse es alle 3 min. auto reloaden, wie gesagt ohne den cache zu verwenden. Meine Meinung nach die Anzeige sollte am Mitternacht aud den nächsten Tag springen aber leider nicht.
Muss ich dafür unbeding den Browser schliessen und dann wieder öffnen? Genügt es nicht die Seite zu refreshen? Liebe Grüße
Versuche doch mal am Browser den Cache zu deaktivieren. Nachteil ist natürlich dann, dass Du alle 3 Minuten die komplette Seite lädst und damit viel mehr Traffic erzeugst. Aber dann kannst Du zumindest testen ob es daran liegt. Ansonsten müsstest Du den Browser um Mitternacht per Script neu starten und beim beenden automatisch den Cache leeren lassen.
Sorry, habe gerade erst gesehen, dass Du bereits ohne Cache arbeitest. Ist denn ein Benutzer eingeloggt oder lässt Du die Anzeige ohne Anmeldung laufen. Raspberry PI mit Raspbian?
Möglicherweise wird das Datum noch in einem Cookie gespeichert. Wenn du im Webbrowser Cookies für die Domain des Buchungssystems deaktivierst sollte es funktionieren.
Das mit Cookies habe ich noch nicht gedacht, super Idee. Danke, ich werde es sofort ausprobieren.
Ansonsten habe ich den Browser vor Mitternacht per Script heruntergefahren und nach Mitternacht hoch, wie gesagt ohne Erfolg.
Gibt es beim Hochfahren eine Möglichkeit von Auto Login damit man alle Stunden des Tages sehen kann?
Bisher habe ohne Anmeldung hochgefahren, aber es wäre super wenn es ginge.
Danke an euch alle
Bin auch gerade dabei ein Display für das Clubhaus mit RasPI zu basteln (Kiosk Mode). Da gibt es etwas, das quasi die Eingaben/Maus simuliert, so dass man Beim Starten ein autologin simulieren kann. Bin aber aus Zeitgründen Un Corona noch nicht so weit. Sollte erst ein Terminal mit Touchscreen werden, ist aber derzeit nicht sinnvoll, da es nach jeder Nutzung desinfiziert werden müsste. Die Display Funktion im Clubhaus finde ich aber schon sinnvoll, da wir standardmäßig die namentliche Buchungsanzeige nicht aktivieren wollen. Für uns ist das dann im Clubhaus quasi die Digitalisierung der Magnettafel.
Also bei uns ist namentliche Buchungsanzeige nur im Clubhaus erwünscht, daher die AUto Login auf dem großen Display der nur als Anzeige dient. leider kenn ich mit mit RasPI überhaupt nicht aus :(
Wenn ich es realisiert habe, kann ich gern eine Anleitung schreiben. Das schöne am Raspberry PI ist der geringe Stromverbrauch und dass man ihn einfach hinten am Monitor befestigen kann. Beim Touchscreen hatte ich einige Probleme mit der Bildschirmtastatur, sonst hat es auch gut funktioniert. Ist jetzt aber aktuell durch Corona auf Eis gelegt....
Das wäre großartig. Danke
Wenn Du Google Chrome auf dem Display nutzt, sollte das aber eigentlich auch mit dem autologin möglich sein. Auf dem Raspberry PI ist nur Chromium verfügbar, da funktioniert es leider nicht.
Super. Werde ausprobieren und berichten. Danke
Hi @Bakati,
hier nur ein paar spontane Gedankengänge um das Auto-Login-Problem und die Auswahl des richtigen Tages zu lösen. Auf einem Raspberry kann man auch Ubuntu Mate installieren .. dort gibt es auch den Firefox und man kann ein AutoAuth-Add-on installieren.
Man könnte ans Ende der layout.phtml
Datei ein Seiten-Reload mit Datumsübergabe einfügen ... sähe dann in etwas so aus.
.. die Funktion darf natürlich nicht bei jedem normalen User ausgeführt werden. Man darf diesen Code nur bei einem spezielle "Kisok-Mode"-User ausführen lassen; was man auch recht einfach implementieren kann.
// Alle 60 Sekunden sich selber mit dem aktuellen Tagesdatum aufrufen lassen
$(document).ready(function(){
setInterval(function()
{
start = Date.now();
const dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: '2-digit', day: '2-digit' });
const [{ value: month },,{ value: day },,{ value: year }] = dateTimeFormat.formatToParts(start);
location.href = "?date=" + `${year}-${month}-${day}`;
}, 60000);
});
Hi @ Shineson1001,
vielen Dank, auch eine tolle Idee, ich hoffe das ich sie umsetzen kann.
Hi Shineson1001, das klingt nach einer einfacheren Lösung als mit Raspbian und Chromium. Werde ich mal ausprobieren. Wie kann man denn den Code auf den "Kiosk-Mode" User beschränken? Bisher habe ich immer versucht das Problem von der Client Seite zu lösen, aber die Idee mit dem serverbasierten Code für den User finde ich echt spannend!
Hi @cbits68, ich denke morgen werde ich Zeit dafür finden. Ich würde dann die User-Prüfung mit dem Usernamen machen .. soblad diese mit "Kiosk-" beginnt wird der Seiten-Reload Mechanismus aktiv.
Hi @cbits68,
hier die Änderungen:
Neue Datei public/js/controller/frontend/autoreload.js
// Alle 60 Sekunden sich selber mit dem aktuellen Tagesdatum aufrufen lassen
$(document).ready(function(){
setInterval(function()
{
start = Date.now();
const dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: '2-digit', day: '2-digit' });
const [{ value: month },,{ value: day },,{ value: year }] = dateTimeFormat.formatToParts(start);
location.href = "?date=" + `${year}-${month}-${day}`;
}, 60000);
});
Anpassung module/Frontend/view/frontend/index/userpanel.online.phtml
...
<?= sprintf($this->t('Online as %s'), $this->user->need('alias')) ?>
<?php
// Usernamen pruefen um evtl. den Kiosk-Mode zu aktivieren
$useralias = $this->user->need('alias');
$pos = strpos($useralias, 'Kiosk-');
if($pos === 0)
{
$this->headScript()->appendFile($this->basePath('js/controller/frontend/autoreload.js'));
}
?>
Hi @Shineson1001, funktioniert Perfekt! Vielen Dank. Ubuntu Mate läuft auch schon auf dem Raspberry PI ;-) Muss jetzt nur noch den Kiosk Modus konfigurieren und den automatischen Login mit dem AutoAuth Add-On unter Firefox einstellen ;-) Im Clubhaus werde ich dann Monitor und RasPi an eine Zeitschaltuhr hängen, so dass die nicht 7*24 Stunden durchlaufen. Vor dem Ausschalten fahre ich den RasPi natürlich per CronJob sauber runter ;-) Da der RasPi ja selbstständig hochfährt, sobald der Strom wieder da ist, sollte das Display dann auch ohne Eingriffe funktionieren.
Gruß Andreas
Hi @ Shineson1001 toll gemacht. Bei mir läuft die Anzeige 7*24 und auf ein Windows PC. Wenn diese Reload funktioniert brauche dann AutoAuth Add-On nicht mehr, oder verstehe ich es falsch? Ich könnte mit ein User der "Kiosk-xy" einloggen und dei Anzeige ohne den Firefox herunterfahern und wieder hochfahren weiter laufen lassen durch den Reload funktion sollte auch immer den aktuellen Tag anzeigen. Ist es richtig so?
Vielen Dank für Deine tolle Arbeit. Liebe Grüße
Hi @Bakati, ja, wenn du den Rechner immer an und den Browser, mit eingeloggten "Kiosk-xy"-User, geöffnet lässt, dann braucht man kein AutoAuth-Add-On.
Hi @cbits68, so würde ich mir das auch einrichten. Berichte mal, ob das System zuverläßig läuft.
Mit dem AutoAuth Add-On komme ich noch nicht wirklich klar. Firefox speichert zwar die Anmeldeinformationen, aber im Add-On finde ich keine Einträge bei Saved Credentials :-( Googlen hilft hier bisher auch nicht weiter, eine Doku habe ich nicht gefunden und auf Github steht: "AutoAuth is a simple Firefox Addon based on WebExtension that submits HTTP authentication credentials automatically. It does not send credentials to pages that have a custom login form." Ob das mit dem ep3 Login funktioniert und mit https ist mir noch unklar.
Hi @ Shineson1001 Ok, werde erst heute einrichten spätestens bis morgen werde ich euch wissen lassen. Noch eine Frage. Die neue Datei soll 1zu 1 erstellt werden und die Anpasung in der module/Frontend/view/frontend/index/userpanel.online.phtml irgendwo eingefügt werden?
so ist es. Den Code in der userpanel.online.phtml einfach ans Ende kopieren ...
Super Danke. Übrigens ich habe mit Chrome Auto Login sehr gute Erfolge gehabt. Es funktioniert gut. Probiere mal.
Ja, da bin ich bereits dabei😉
Sorry für meine blöde Frage. Ist es so richtig?
...
<td style="padding-left: 12px; border-left: solid 1px #CCC;">
<a href="<?= $this->url('service/help') ?>" class="default-button" data-tooltip="<?= sprintf($this->t('Get additional %shelp and information%s'), '<b>', '</b>') ?>"><b>?</b></a>
</td>
</tr>
<?= sprintf($this->t('Online as %s'), $this->user->need('alias')) ?>
<?php
// Usernamen pruefen um evtl. den Kiosk-Mode zu aktivieren
$useralias = $this->user->need('alias');
$pos = strpos($useralias, 'Kiosk-');
if($pos == 0)
{
$this->headScript()->appendFile($this->basePath('js/controller/frontend/autoreload.js'));
}
?>
Chrome mit Auto Login Extention funktioniert :-)
Hi @ Shineson1001, gibt noch einen kleinen Schönheitsfehler. Nach der Anpassung im Code wird der angemeldete Benutzer doppelt angezeigt. Das betrifft alle Benutzer, nicht nur den Kiosk User.
Ich nehme die Anpassungen gleich noch mal raus, um zu schauen ob das wirklich daher kommt.
Hi @cbits68,
<?= sprintf($this->t('Online as %s'), $this->user->need('alias')) ?>
Der Code ist bei dir wahrscheinlich jetzt doppelt in der Datei verhanden .. einfach den letzten rauslöschen.
jep :-) jetzt passt es
Nur als Tip: mit Google Chrome Auto Login funktioniert es auf dem PC. Da Google aber den Chrome nur noch in der 64 Bit Variante bereitstellt, muss es schon mindestens ein Raspberry PI 3 sein. Bei meinem 2er gibt es Ubuntu Mate nur in 32 Bit. Muss mir jetzt mal einen 3er oder 4er borgen für den Test.
hmmm, zu früh gefreut? Irgendwie macht er den Reload jetzt doch nicht nur bei den "Kiosk-" Benutzern, sondern bei allen :-( Dachte es wäre gestern nicht so gewesen, aber wenn ich jetzt mal ein Buchungsfenster offen lasse, sehe ich, dass die Seite reloaded wird und das Buchungsfenster dann weg ist. Die Userprüfung schein im Code unwirksam und autoreload.js grundsetzlich aufgerufen zu werden.
Hi @cbits68.
jo .. mein Fehler
if($pos == 0)
muss if($pos === 0)
heißen
👍 Hab ich auch nicht gesehen🤣
Hi @ Shineson1001 Hi @cbits68 Ich hoffe es geht euch gut. Bitte, ich bin schon ganz konfus. Würdet ihr mir bitte die finale Code so wie sein soll noch einmal schreiben? Ich denke bei autoreload.js hat sich nicht geändert. Vielen Dank im Voraus. Liebe Grüße
Hallo Bakati, kein Problem ... autoreload.js bleibt wie gehabt. in userpanel.online.phtml nach Zeile 5 den folgenden Code einfügen:
` <?php // Usernamen pruefen um evtl. den Kiosk-Mode zu aktivieren $useralias = $this->user->need('alias');
$pos = strpos($useralias, 'Kiosk-');
if($pos === 0)
{
$this->headScript()->appendFile($this->basePath('js/controller/frontend/autoreload.js'));
}
?>`
Liebe Grüße CBITS
Super. Tausend Dank. Liebe Grüße
Hi @cbits68
ich muss dich wieder belestigen. Bei mir funktionierts autoreload leider nicht. Ich henge die complete Code an so wie es bei mir ausschaut. Was ist da falsch?
= sprintf($this->t('Online as %s'), $this->user->need('alias')) ?>
user->need('alias'); $pos = strpos($useralias, 'Kiosk-');
if($pos === 0)
{
$this->headScript()->appendFile($this->basePath('js/controller/frontend/autoreload.js'));
}
?>`
|
user->can('admin.see-menu')): ?> headScript()->appendFile($this->basePath('js/controller/frontend/index.admin.min.js')) ?> | = $this->t('Administration') ?> | = $this->t('My bookings') ?> | = $this->t('My account') ?> | = $this->t('Logout') ?> | ? |
habe einen User mit Alias Kiosk angelegt und firefox in kiosk mode ausgeführt und den Benutzer angelogt. Leider die Seite wird nicht refreshd. Bitte um eure Meinung
Und so schaut es mit autoreload.js aus.
// JavaScript Document
// Alle 60 Sekunden sich selber mit dem aktuellen Tagesdatum aufrufen lassen
$(document).ready(function(){
setInterval(function()
{
start = Date.now();
const dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: '2-digit', day: '2-digit' });
const [{ value: month },,{ value: day },,{ value: year }] = dateTimeFormat.formatToParts(start);
location.href = "?date=" + ${year}-${month}-${day}
;
}, 60000);
});
bei location.href ist ein syntax error
User muss mit Kiosk- beginnen. Bei mir ist der Alias z.B. Kiosk-Clubhaus
Du kannst bei $pos = strpos($useralias, 'Kiosk-'); natürlich auch auch den kompletten Alias reinschreiben. Wenn man mehrere Displays bauen will, dann werden alle die mit Kiosk- starten mit dem autoreload bedient ...
Perfekt, jezt funktionierts bei mir auch. Super tolle Arbeit. Vielen Dank an euch beide. Ganz Liebe Grüße
Unser Platzbelegungsdisplay ist nun auch fertig und muss nur noch an die Wand :-) Ich habe es jetzt doch mit Raspberry Pi OS und Chromium im Kiosk Mode realisiert. Ubuntu Mate und Firefox war mir zu Ressourcen fressend ;-) Da man bei Chromium, bei der ersten Anmeldung des Kiosk Benutzers am Buchungssystem die Anmeldedaten speichern kann, brauchte ich nur noch den Klick auf den Anmeldbutton umzusetzen. Dafür ein kleines Shellscript geschrieben, welche mittels xdotool (mousemove & click 1) dann beim Start des PI den Anmeldebutton verzögert drückt (sleep 15 hat gereicht) Über eine Zeitschaltuhr gehen PI und Monitor dann Morgens um 8 an. Um 20;45 fahre ich den PI über die Crontab sauber runter und um 21 Uhr geht der Strom aus. Ich hoffe das das Display somit "Wartungsfrei" läuft ... Danke nochmal Shineson1001 für die tolle Unterstützung. Gruß CBITS
Hi @cbits68, Danke für die Rückmeldung. Hört sich gut an. Welche Version vom Raspberry Pi nutzt du?
produktiv den 3B, beim Testen habe ich meinen älteren 2B benutzt, der läuft für diese Zwecke auch völlig OK. Beim 3B ist halt schon WLAN & Bluetooth drin und muss dann nicht über USB angeschlossen werden. Daher nehme ich den 3B und habe dann noch ein BT Touchkeyboard im Klubhaus liegen, falls ich doch mal ran muss. SSH ist aber auch aktiviert, so dass ich auch mit Smartphone oder Laptop ran komme. Am Pi habe ich auch einen Resettaster angelötet (kommt man aber nur ran wenn man den Deckel vom Gehäuse abmacht, damit da keiner mal eben draufdrückt und mir die SD Karte zerschießt ;-)
Ich stelle mal Bilder hier ein, wenn es hängt😉 PI ist hinten am Monitor angebracht, so dass man Ihn nicht sieht und auch noch so einfach dran kommt.
Hi @Shineson1001 @cbits68
Hallo an alle, also obwohl ich ein stink normales PC verwende bei mir läuft auch alles perfekt. Danke an euch beiden, habe sehr viel von euch gelernt. Da ihr so gut seid habe ich eine bitte. Ich habe vor Monaten eine Anfrage #277 . Könnt ihr da etwas machen? Das wäre immens wichtig, man sparrt sich sehr viel Zeit.
Vielen Dank
Hallo an Alle, Wenn ich die Seite aufrufen kommt richtigerweise heutige Tag zur Ansicht. Auf ein Terminal lauft die Seite den ganzen Tag um die aktuellen Buchungen zu sehen, auf den Browser läuft auch ein Auto Refresh (Auto Reload ohne Cache). Die Tages Stunden werden problemlos aktualisiert. Das Problem, wenn der Tag vorüber ist springt die Anzeige nicht auf den nächsten Tag. Ich lasse momentan zwei Tage auf dem Monitor anzeigen. Habe auch versucht nur ein Tag oder mehrere Tage leider kein Erfolg. Könnte jemand mir sagen wie ich das Problem lösen kann?
Vielen Dank