Smartvisu Seitenwechsel funktioniert nicht mehr

Begonnen von beSmart, 16 März 2024, 14:46:27

Vorheriges Thema - Nächstes Thema

beSmart

Hallo Forum,

ich bin Smartvisu Anfänger und habe gleich ein kleines Problem.

Wie oben im Betreff beschrieben, funktioniert der Seitenwechsel nicht mehr.
Heißt, bei einem klick auf z.B. die Seite Küche, wird diese zwar geladen aber nicht angezeigt.

Fürs ein besseres Verständnis habe ich 2 Bilder angehängt.
Das erste Bild zeigt die Startseite, dass zweite die Startseite nach einem klick auf "Küche".
An der Url sieht man das die Seite geladen wurde, sie wird aber nicht angezeigt. Wenn man jetzt auf "Aktualisieren" drückt, wird die Seite "Küche" angezeigt. Hat jemand eine Idee wo ich einen Fehler gemacht haben könnte?


Gruß

BeSmart


GammaTwin

Guten Morgen,

ist mir auch aufgefallen. Tritt bei mir aber nicht immer auf, aber oft. Ich weiß auch nicht, wann sich das eingeschlichen hat.

wvhn

#2
Tritt das Problem nur bei der Küche auf, oder auch bei anderen Räumen? Wenn ersteres der Fall ist, kannst Du mir die html-Datei mal per p/n schicken. Anderenfalls wäre der Link auf eine Dropbox mit einer Kopie der gesamten smartVISU-Insatllation hilfreich.

Welchen Browser verwendest Du? Gibt es Fehlermeldungen in der Konsole des Browsers?
Welche PHP-Version ist installiert? Gibt es PHP-Meldungen in der error.log des Webservers?
Welche Fronthem-Version verwendest Du (aus welchem Repository)?

Mir ist das Problem bisher noch nicht begegnet, auch nicht im smartVISU-Forum. Raumnamen mit Punkt (".") sind zwar aus verschiedenen Gründen ungünstig, sollten aber dennoch funktionieren. Das habe ich auch gerade gestetet. Würde dem gerne nachgehen.

Gruß
Wolfram

P.S.: verwendest Du einen anderen fhem-Treiber, als den in smartVISU mitgelieferten?

beSmart

Guten Morgen,

@wvhn: das Problem trat bei allen Räumen auf, habe den Fehler aber gefunden. Trotzdem vielen Dank für das Angebot dich darum zu kümmern.

Ich habe die Html-Datei (Navigation) zur Sicherheit kopiert und dann im Original jeden "Block" von unten beginnend nacheinander gelöscht und immer wieder probiert ob es funktioniert.

Bis zu diesem Block:
<li data-icon="false">
<a href="index.php?page=OG.Eltern">
<img class="icon" src="{{ icon0 }}scene_childs_room.svg" />

<h3>Eltern</h3>

<div class="ui-li-aside">
{{ basic.print('Raumsensor.Schlafzimmer.Temperatur', 'Raumsensor.Schlafzimmer.Temperatur', '°C') }} <br />
{{ basic.print('Raumsensor.Schlafzimmer.Luftfeuchtigkeit', 'Raumsensor.Schlafzimmer.Luftfeuchtigkeit', '%') }} <br />
{{ basic.symbol('Fk.OG.Schlafzimmer', 'Fk.OG.Schlafzimmer', ['Fenster ist zu', 'Fenster ist auf'], ['fts_window_1w.svg', icon1~'fts_window_1w_open.svg'], ['closed', 'open']) }}
</div>
</a>
</li>

Der Block darüber ist von der Sache her der selbe hat nur andere Namen. Beide Blöcke verglichen, sie waren absolut identisch(bis auf die Namen).
Habe dann den Block darüber kopiert, eingefügt und die Namen angepasst. und zack es funktioniert, danach den Rest aus der Sicherung wieder eingefügt und Problem gelöst. Es muss sich irgendwo ein Zeichen oder vielleicht auch Leerzeichen eingeschlichen haben, welches ich auch nach mehrfachen vergleichen übersehen habe und hat diesen nervigen Fehler verursacht.

Gruß besmart

wvhn

@besmart
Prima, dass das gelöst ist. Ich wäre Dir dennoch dankbar, wenn Du mir die defekte navigation.html mal zukommen lassen könntest. Ich würde die gerne mit einem Hex-Editor unter die Lupe nehmen und versuchen zu verstehen, warum jQuery mobile beim Seitenwechsel streikt. Vielleicht kann ich ja den templatechecker erweitern oder ein Tool bauen, das solche Fehler prüft / eliminiert.

Danke und Gruß
Wolfram

GammaTwin

#5
Grüße,

ich weiß nicht, ob meine Situation die gleiche ist. Aber vielleicht ist es ja etwas Ähnliches.

Bedingung: es muss der Cache aktiviert sein. Der Effekt bleibt erhalten, auch wenn man den Cache leert oder diesen zeitweise deaktivierte hatte.

Es betrifft nur Seiten des zweiten Menüeintrags, das "Graphsymbol", siehe Anhang.
Man erkennt die fehlenden Werte an den "---".
Es sind alle Unterseiten betroffen. Werte und smartVISU-Diagramme.
Nach einem Refresh der jeweiligen Seite kommen die Werte.
Du darfst diesen Dateianhang nicht ansehen.

Die Menuseite:
<div id="menu" class="menu">
<a id="menu-rooms" data-ajax="false" href="index.php?page=room_00_index"><img class="icon {{ page starts with 'index' or page starts with 'room' ? 'icon1' }}" src="{{ icon0 }}control_building_all.svg"/></a>
<a id="menu-theme" data-ajax="false" href="index.php?page=theme_00_index"><img class="icon {{ page starts with 'theme' ? 'icon1' }}" src="{{ icon0 }}time_graph.svg"/></a>
<a id="menu-system" data-ajax="false" href="index.php?page=systempage"><img class="icon{% if page == 'systempage' or page == 'config' %} icon1{% else %} icon0{% endif %} }}" src="{{ icon0 }}message_service.svg"/></a>
</div>

Der Idee von beSmart folgend habe ich ebenfalls rumprobiert. Leerzeichen, Tabs und ähnliches. Gespeichert, Cache gelöscht.
Und siehe da, es geht plötzlich. Ohne erkennbare, sinnvolle Änderung. Also Änderungen wieder zurückgenommen. Es geht auch  :o
Aber dann geht wieder nicht mehr. Also habe ich die Zeit gestoppt - von Cache löschen bis es nicht mehr funktioniert. Vorgang mehrfach wiederholt. Die ersten 20 bis 25 Sekunden funktioniert es. Dann nicht mehr.

Mich würde ja interessieren, ob der Fehler bei beSmart dauerhaft weg ist, oder nur zufällig nach dem Löschen des Caches...

Wie gesagt, ich weiß nicht, ob es das selbe Phänomen ist. Zusammenfassung:
  • Cache muss aktiviert sein
  • nur ein Menüpunkt betroffen
  • dort aber alle Unterseiten, inkl. smartVISU-Diagramme
  • kurze Zeit nachdem Leeren des Caches funktioniert es, kommt dann wieder

PS: Jetzt habe ich selbst die 20-25 Sekunden nicht mehr. Keine Ahnung :D
weiters PS: auch die Config-Seite, also das 3. Symbol der Menüleiste ist betroffen. Dort wird die selbe Infobox verwendet und auch dort fehlen die Sonnenaufgangangs- und -untergangszeiten. Die Index.html-Seite ist nicht betroffen.

wvhn

Moin gammaTwin,

Wenn ich Deine Beschreibung richtig interpretiere,funktioniert der Seitenwechsel an sich, also das Seitenlayout wird angezeigt, aber die Werte werden nicht befüllt. Ist das korrekt?

Gibt es Fehlermeldungen in der Konsole der Enwicklertools oder in der error.log des Webservers?
Welche php-Version ist installiert?
Verwendest Du den fhem-Treiber, der mit smartVISU mitgeliefert wird?

Gruß
Wolfram

GammaTwin

#7
Zitat von: wvhn am 23 März 2024, 16:18:40Wenn ich Deine Beschreibung richtig interpretiere,funktioniert der Seitenwechsel an sich, also das Seitenlayout wird angezeigt, aber die Werte werden nicht befüllt. Ist das korrekt?
Genau so. Ich habe inzwischen auch die Inhalte der Seiten testweise getauscht.
{% include 'room_00_content.html' %}Jeweils auf die andere Seite verwiesen. Es sind immer alle Seiten außer die "index.html" betroffen, unabhängig des Inhalts.

Zitat von: wvhn am 23 März 2024, 16:18:40Gibt es Fehlermeldungen in der Konsole der Enwicklertools oder in der error.log des Webservers?
Die Console ist leer.
Im Log des Webservers stehen allerdings bei den beiden Abrufen unterschiedliche Antworten. Siehe unter Deinen Fragen.

Zitat von: wvhn am 23 März 2024, 16:18:40Welche php-Version ist installiert?
8.1

Zitat von: wvhn am 23 März 2024, 16:18:40Verwendest Du den fhem-Treiber, der mit smartVISU mitgeliefert wird?
Ja.


Die Aufrufe der Seite unterscheiden sich. Wechsel und Refresh.

Von index.html auf theme_00_index.html:
Wechsel:
192.168.x.x - - [23/Mar/2024:16:39:43 +0100] "GET /smartVISU/index.php?page=theme_00_index HTTP/1.1" 200 6494 "http://192.168.x.x:802/smartVISU/index.php?page=index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"

Refresh:
192.168.x.x - - [23/Mar/2024:16:41:53 +0100] "GET /smartVISU/index.php?page=theme_00_index HTTP/1.1" 200 6494 "http://192.168.x.x:802/smartVISU/index.php?page=theme_00_index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
Die Zeilen unterscheiden sich in Mitte. Wobei ich denke, dass das nur die Seite ist, von der man kommt, der Vorgänger sozusagen.

Von theme_00_index.html auf index.html:
Wechsel:
192.168.x.x - - [23/Mar/2024:16:41:53 +0100] "GET /smartVISU/index.php?page=theme_00_index HTTP/1.1" 200 6494 "http://192.168.x.x:802/smartVISU/index.php?page=theme_00_index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
192.168.x.x - - [23/Mar/2024:16:57:16 +0100] "GET /smartVISU/index.php?page=room_00_index HTTP/1.1" 200 503 "http://192.168.x.x:802/smartVISU/index.php?page=theme_00_index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
192.168.x.x - - [23/Mar/2024:16:57:16 +0100] "GET /smartVISU/index.php?page=index HTTP/1.1" 200 47535 "http://192.168.x.x:802/smartVISU/index.php?page=room_00_index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"

Refresh:
192.168.x.x - - [23/Mar/2024:16:41:53 +0100] "GET /smartVISU/index.php?page=theme_00_index HTTP/1.1" 200 6494 "http://192.168.x.x:802/smartVISU/index.php?page=theme_00_index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
192.168.x.x - - [23/Mar/2024:16:59:01 +0100] "GET /smartVISU/index.php?page=room_00_index HTTP/1.1" 200 503 "http://192.168.x.x:802/smartVISU/index.php?page=index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
192.168.x.x - - [23/Mar/2024:16:59:01 +0100] "GET /smartVISU/index.php?page=index HTTP/1.1" 200 47535 "http://192.168.x.x:802/smartVISU/index.php?page=room_00_index" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"

Also bei der index.html passiert mehr :D

wvhn

#8
Schau nochmal nach den Log-Einträgen. Der Eintrag von 16:41:53 kommt insgesamt 3 mal vor.
Ist das aus der access.log? Wichtiger wäre die error.log.

Am besten kopierst Du mal Deine gesamte Installation von smartVISU (mit allen Unterordnern) in eine Dropbox o.ä. und schickst mir den Link per P/N. Passwörter löschst Du am besten in der config.ini. Ich habe aktuell keinen Ansatz für die Fehlerursache und müsste das selbst testen.

Wenn Du das nicht möchtest, kannst Du testweise die angehängte root.txt anstelle der ./pages/base/root.html einsetzen und als erstes den Cache löschen. Die Datei verhindert, dass die CSS- und js-Dateien minimiert werden. Das schließt den Minifier als mögliche Fehlerquelle im Betrieb mit Cache aus.

Generell empfehle ich, `data-ajax="false"` aus den Menüs heraus zu nehmen. Sonst zwingt man jQuery mobile, die jeweilige Zielseite komplett neu zu laden und verschenkt den Vorteil der ajax-Navigation im Multipage-Modus, bei der jQuery mobile alle schon einmal aufgerufenen Seiten bis zum nächsten Reload im Speicher behält und sehr schnell umschalten kann.

Gruß
Wolfram

GammaTwin

#9
Grüße,

jetzt wird es etwas komplizierter  8)
Aber der Fehler ist weg. Ich beobachte das aber nochmal ein paar Tage...

Was habe ich gemacht. Die `data-ajax="false"` entfernt. Sollte ein Quickwin werden.
Danach funktionierte die erste Seite nicht mehr. Dies liegt aber an meiner "Konstruktion". Ich wollte (damals) für jeden Menüpunkt eine eigene Indexdatei nutzen und dafür gar nicht mehr die index.html nutzen. Dies sieht man auch in meiner menu.html, siehe einen meiner vorherigen Beiträge
room_00_index.html - für den ersten Menüpunkt
theme_00_index.html - für den zweiten Menüpunkt
Diese Vorgehen hatte aber einen Nachteil. Die Updatebenachrichtigung (falls es eine neue smartVISU-Version gibt) kommt dann nicht. Also habe ich den Inhalt des ersten Menüpunktes wieder in die index.html gepackt und in die room_00_index.html eine Weiterleitung gebaut
/**
* -----------------------------------------------------------------------------
* Inhalt ist in index.html, da sonst Update-Prf nicht funktioniert.
* "menu.html"-PingPong
* -----------------------------------------------------------------------------
*/
<head>
<meta http-equiv="refresh" content="0; URL=index.php?page=index">
</head>
So wollte ich meine Idee im Grunde beibehalten.
Diese Weiterleitung ist auch der Grund, warum sich der Log bei den Abrufen des ersten zu den weiteren Menüpunkten unterscheidet.

Nach dem Entfernen von `data-ajax="false"` funktioniert diese Weiterleitung nicht mehr. Also habe den Menüeintrag des ersten Menüpunktes auf die index.html verändert.
<div id="menu" class="menu">
<a id="menu-rooms" href="index.php?page=index"><img class="icon {{ page starts with 'index' or page starts with 'room' ? 'icon1' }}" src="{{ icon0 }}control_building_all.svg"/></a>
<a id="menu-theme" href="index.php?page=theme_00_index"><img class="icon {{ page starts with 'theme' ? 'icon1' }}" src="{{ icon0 }}time_graph.svg"/></a>
<a id="menu-system" href="index.php?page=systempage"><img class="icon{% if page == 'systempage' or page == 'config' %} icon1{% else %} icon0{% endif %} }}" src="{{ icon0 }}message_service.svg"/></a>
</div>

Und seitdem ist der Fehler weg...
Ich würde jetzt irgendwie das `data-ajax="false"` verdächtigen. Aber mir ist nicht klar, warum das alle Unterseiten betreffen sollte.

Noch zu Deiner Frage, was für ein Log das ist. Es ist der Container Log des Docker-Containers.
Für den Fehler mit den falsch kopierten Log entschuldige ich mich.

wvhn

Gut, dass der Fehler weg ist. Die Updateprüfung kannst Du auf einer Deiner index-Seiten integrieren. Dann brauchst Du die Weiterleitungen nicht:
{{ lib.updatecheck() }}

Danke für die Rückmeldung!
Gruß
Wolfram