Tablet UI über anderen Port erreichbar machen

Begonnen von Svnm, 14 Juli 2016, 10:39:54

Vorheriges Thema - Nächstes Thema

Svnm

Hallo,
ich wollte mir gerne die Tablet UI installieren, diese soll aber über einen anderen Port erreichbar sein (d.h. nicht 8083, 8084 oder 8085). Sinn dahinter ist, dass ich die Tablet-UI nur mit rudimentären Schalt- und Anzeigemöglichkeiten ausstatten möchte, welche man ohne Authentifizierung im internen Netzwerk aufrufen kann. Die Standardports von FhemWEB sind mittels Apache-Reverse-Proxy und Passwort-Schutz (.passwd-Datei) abgesichert. Nun soll also ein weiterer Port ohne Passwort-Schutz ins Leben gerufen werden.
Im Wiki wird kurz erwähnt, dass diese Option möglich ist
Allerdings wird nicht weiter erläutert, welche Schritte man machen muss, um das Ziel zu erreichen. Einen Apache habe ich installiert.
ZitatMit wenigen Anpassungen ist es auch möglich das UI auf anderen Webservern (Apache, u.a.) zu betreiben, dann kann FHEM und UI auch auf getrennten Systemen ausgeführt werden.
Es wäre hervorragend, wenn mir jemand in diesem Punkt eine Hilfestellung geben könnte.  :)

devil77

Na wenn Du schon einen Apache als reverse im Einsatz hast brauchst Du doch bloß eine weitere site für FTUI konfigurieren.
Den Port kannst Du selber festlegen und auch den Passwortschutz kannst Du rausnehmen. Schon hast Du doch was Du benötigst.

klausw

Der Nutzer der FTUI, auch wenn sie abgespeckt ist, hat aber trotzdem vollen Zugriff auf FHEM.
Du könntest eine FHEMWEB Instanz auf einem weiteren Port anlegen, die nur im lokalen Netz erreichbar ist. In dieser könntest du auch die FTUI nutzen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Svnm

Vielen Dank für eure Antworten.
Es ist also nicht möglich, nur die FTUI zur Verfügung zu stellen oder habe ich das jetzt falsch verstanden? Erstelle ich nämlich in Fhem eine neue WEB-Instanz, kann ich die Tablet-UI und auch die "normale" Oberfläche von Fhem über den extra Port erreichen. Das wollte ich eigentlich nicht.
Eigentliches Ziel von mir ist es, dass man nur die FTUI einsehen kann, ohne, durch abändern der URL, auf die normale Fhem-Seite zu gelangen.

Ich habe schon versucht, das Verzeichnis von /opt/fhem/www/tablet/ nach /var/www/tablet zu kopieren, wobei die Seite dann aber nicht richtig dargestellt wird: Layout, Bilder, Logos und Funktionen sind nicht vorhanden. Nur schwarzer Text auf weißen Hintergrund.

klausw

Zitat von: MMeier67 am 14 Juli 2016, 20:31:20
Ich habe schon versucht, das Verzeichnis von /opt/fhem/www/tablet/ nach /var/www/tablet zu kopieren, wobei die Seite dann aber nicht richtig dargestellt wird: Layout, Bilder, Logos und Funktionen sind nicht vorhanden. Nur schwarzer Text auf weißen Hintergrund.
den Ordner pgm musst du auch kopieren...schau mal in deinen index.html, da stehen oben links auf Dateien drin. Diese sollten alle vorhanden sein.
FTUI ist nur ein Frontend (das javascript läuft direkt im Browser). Es greift auf FHEM zu
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Svnm

Ah, ok. Die Pfade habe ich alle in der index.html-Datei angepasst. Die Seite wird nun richtig dargestellt. Leider kann keine Verbindung zu Fhem hergestellt werden. Es erscheint alle 10 Sekunden die Meldung: Disconnected from FHEM. Retry to connect in 10 seconds.
Wenn ich im Browser die Seite untersuche, wird mir alle 10 Sekunden folgende Meldung angezeigt (siehe Anhang). Die angegebene IP-Adresse ist allerdings falsch.

klausw

ich finde es seltsam, das eine lokale Ip-Adresse aufgerufen wird.
Poste doch mal den Inhalt des html Files
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Svnm

Hallo,

ich habe nun die Zeile
<meta name="fhemweb_url" content="http://127.0.0.1:8083/fhem">
in die index.html hinzugefügt (hatte ich vergessen :o). Jetzt wird zwar nicht mehr die lokale IP aufgerufen, das Verbindungsproblem besteht weiterhin:
Disconnected from FHEM. Retry to connect in 10 seconds.

Ich poste mal den oberen Teil der index.html, da im unteren ja nicht interessantes mehr steht:
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <meta name="widget_base_width" content="116">
    <meta name="widget_base_height" content="131">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="longpoll" content="1"> <!-- 1=longpoll;0=shortpoll every 30sec -->
    <meta name="debug" content="0"> <!-- 1=output to console;0=no output -->
<meta name="fhemweb_url" content="http://127.0.0.1:8083/fhem">

    <link rel="stylesheet" href="lib/jquery.gridster.min.css" />
    <link rel="stylesheet" href="css/fhem-tablet-ui.css" />
    <link rel="stylesheet" href="lib/font-awesome.min.css" />
    <link rel="stylesheet" href="lib/jquery.toast.min.css" />

    <!-- define your personal style here, it wont be overwritten  -->
    <!-- link rel="stylesheet" href="/fhem/tablet/css/fhem-green-ui.css" / -->
    <link rel="stylesheet" href="css/fhem-tablet-ui-user.css" />

    <script src="../pgm2/jquery.min.js" defer></script>
    <script src="lib/jquery.toast.min.js" defer></script>
    <script src="lib/jquery.gridster.min.js" defer></script>
    <script src="js/fhem-tablet-ui.min.js" defer></script>

    <!-- Remove this line to enable for usage with WebViewControl
    <script defer>var wvcDevices = {'12345': 'Tablet'}; var wvcUserCssFile="webviewcontrol.css"</script>
    <script src="../pgm2/cordova-2.3.0.js" defer></script>
    <script src="../pgm2/webviewcontrol.js" defer></script>
    <!-- End for WebViewControl -->

    <title>FHEM-Tablet-UI</title>
</head>


Ich habe es schon mit 127.0.0.1 oder localhost versucht. Leider funktionierte keins von beiden.
Ich setzte parallel noch einen Apache Reverse Proxy ein, damit man nur mit vorheriger Anmeldung an Fhem weitergeleitet wird (HTTPS-Verbindung).
Hier funktioniert die Konfiguration mit ProxyPass / http://127.0.0.1:8083/ einwandfrei.
Das ganze läuft alles auf einem einzigen System.

phil82

Hi,

dein Vorhaben wird in der Form vermutlich nicht funktionieren.
TabletUI ist "nur" eine "Webseite" mit JavaScript, die im Browser des Clients läuft. Der Browser/Client benötigt weiterhin Zugriff auf FHEM.
Wenn du also das TabletUI per Apache ohne Authentifizierung bereitstellst, dann muss der Browser/Client trotzdem auf den geschützen Bereich von FHEM zugreifen.

Mit fhemweb_url kannst du die URL aus Sicht des Clients zu deiner FHEM-Installation vorgeben (ähnlich wie die Integration eines Bilder oder einer CSS-Datei in einer HTML-Seite). Mit "fhemweb_url=http://127.0.0.1:8083/fhem" sagt du dem Client also, dass FHEM auf dem gleichen Gerät läuft, wie der Client/Browser. Ich vermute mal, dass dem nicht so ist.
fhemweb_url muss also auf die FHEM-Installation verweisen, also auf den Raspberry, Router, Server, den "Apache Reverse Proxy" oder wo auch immer FHEM läuft und erreichbar ist.
Da in der Regel FHEM und TabletUI i.d.R. über den gleichen Port laufen, bzw. die HTML-Seite und JS-Dateien über den gleichen Port bereitgestellt werden, reicht ein fhemweb_url=/fhem

Also eine "Abschottung" der Fhem-Instanz ist so nicht wirklich möglich. Ich wüsste auch nicht, dass sowas "vernünftig" geht.

Deine Fehlermeldung vom 15 Juli 2016 kommt wahrscheinlich daher, dass entweder FHEM nur per Authentifizierung erreichbar ist oder dein Browser den Zugriff von der verschlüsselten https-Seite auf eine nicht verschlüsselte http-Seite ablehnt.
Aufgrund der Fehlermeldung vermutlich letzteres.




Svnm

Hallo,

vielen Dank für Deine sehr ausführliche Antwort und die damit verbundene Zeit, die Du dir für mein Anliegen genommen hast.
Ich weiß nun, was Sache ist und werde es dementsprechend bei der Standardkonfiguration belassen.
Jetzt habe ich auch endlich verstanden, wie fhemweb_url arbeitet.  :)