New FHEM Tablet UI

Begonnen von setstate, 22 Februar 2015, 23:37:24

Vorheriges Thema - Nächstes Thema

the ratman

@kvo1

vielen dank! funktioniert.
jetzt hab ich endlich was, was ich ansehen. ausprobieren und testen kann.
→do↑p!dnʇs↓shit←

Stril

Hallo!

Es wurde schon mehrfach kurz angesprochen und ich wollte fragen, ob es hier irgendeine Chance gibt:

Der FHEM-eigene Webserver ist für mich nicht unproblematisch. Die Performance ist nicht der Hit und manchmal ist ein Reload gar nicht möglich trotz starker Hardware.
Wäre es irgendwie möglich, Tablet UI auf einem eigenständigen Apache-Server laufen zu lassen, der im Hintergrund die Daten vom FHEM-Webserver holt?

Danke und Gruß
Phil

roman1528

Zitat von: Stril am 15 Januar 2016, 11:21:00
Hallo!

Es wurde schon mehrfach kurz angesprochen und ich wollte fragen, ob es hier irgendeine Chance gibt:

Der FHEM-eigene Webserver ist für mich nicht unproblematisch. Die Performance ist nicht der Hit und manchmal ist ein Reload gar nicht möglich trotz starker Hardware.
Wäre es irgendwie möglich, Tablet UI auf einem eigenständigen Apache-Server laufen zu lassen, der im Hintergrund die Daten vom FHEM-Webserver holt?

Danke und Gruß
Phil

Moin.

Ich denke da wäre es interessanter den FHEM-Webserver umzugestalten. Da sollten sich die Entwickler von FHEM dran setzen einen besseren WebServer zu integrieren. So hat man wieder alles in einem System, man muss sich nicht mit der installation und konfiguration von anderer Software rumschlagen und hat weniger zusatzlast auf dem System.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Stril

Hallo!

Ich finde es schon sympathisch, wenn der Webserver der Visualisierung abgekapselt werden kann. Das macht das Ganze schön flexibel und man hat als Abfallprodukt die Sicherheitsfunktionen von Apache im Köcher.

Phil

drhirn

Hi!

Könnte man den Thread da irgendwann mal beenden und bei neuen Fragen einen neuen erstellen? Versuch schon seit Wochen, die ganze Unterhaltung zu lesen, aber 247 Seiten sind dann doch schon etwas unübersichtlich. Da gehen Fragen und v.a. die brauchbaren Antworten irgendwie unter.

Danke!
Stefan

hillbicks

Zitat von: Stril am 15 Januar 2016, 12:07:20
Hallo!

Ich finde es schon sympathisch, wenn der Webserver der Visualisierung abgekapselt werden kann. Das macht das Ganze schön flexibel und man hat als Abfallprodukt die Sicherheitsfunktionen von Apache im Köcher.

Phil

Faende ich ebenfalls gut, aber das ist wohl ein FeatureRequest der so bald nicht kommen wird. :)

Zufaelligerweise experimentiere ich grade mit mod_cache_disk im Apache als reverse proxy rum, das ist gefuehlt schon besser, allerdings ist das immer noch von einem richtig schnellen Seitenwechsel mit pagetab entfernt. Ich hab trotzdem mal einen Post im Wuensch Dir was Forum aufgemacht, falls der eine oder andere da vielleicht seinen Senf zu abgeben will ;)

http://forum.fhem.de/index.php/topic,47486.0.html

Was diesen Thread angeht kann ich mich dem Wunsch nur anschliessen, mittlerweile fast 3700 Antworten. Bei der Anzahl an Antworten waere mittlerweile ein eigene kategorie unter Frontends angebracht, sofern die Forensoftware hier die Moeglichkeit bietet. Scheint ja mittlerweile mit Abstand das beliebteste Frontend zu sehen, was nicht verwunderlich ist.

Gruss

Stril

#3696
Zitat von: Stril am 14 Januar 2016, 08:17:26
Hallo!

Ich habe leider ein Problem mit structure in Verbindung mit der TabletUI:

<div data-type="switch" data-device='AlleLichterEG' class="cell">

AlleLichterEG ist eine structure, die alle Licht-Aktoren enthält und auch laut FHEM korrekt nur zwischen on und off wechselt:

Starte ich Tablet UI und der Status ändert sich in FHEM, wechselt auch die Icon Farbe. ABER: Drücke ich im Browser auf Aktualisieren oder wechsle zeitweise auf einen anderen Pagetab, wird meistens "off" statt "on" angezeigt.

Hallo!

Ich habe jetzt mit der Brechstange zumindest einen Teilerfolg:


+*00:00:15 {
my $AlleLichterEGV = Value("AlleLichterEG");;
{fhem "trigger AlleLichterEG $AlleLichterEGV "}
}


--> Alle 15 Sekunden wird der aktuelle Status "angetriggert --> Tablet UI zeigt dann den korrekten Status der structure. Warum das aktuell jedoch nicht automatisch passiert, ist mir absolut unklar...


Leider habe ich das Problem auch bei anderen Readings (z.B. beim Callmonitor). Dort tauchen auch alte Werte auf, wenn ich nicht die Änderung immer mal wieder über "trigger" oder "setreading" bestätige. Gibt es hier irgendeinen Caching Mechanismus?

Phil

kvo1

@setstate

könntest Du bitte     im widget_weather.js

"Schneeschauer":                'chance_of_snow.png',

ergänzen, fällt mir bei jedem update raus !

Danke

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

luetty

Hallo zusammen,

auch Ich bin begeistert von der Tablet UI. Mit einigen Stunden Arbeit und Dank dieses Forums bin ich auch schon auf einem guten Weg.

Ich habe allerdings 2 Dinge, die ich gerne umsetzen würde, weiß aber nicht wie ich da weiterkomme. Vielleicht hat ja jemand einen Tipp für mich.

1.) Ich zeige den BatterieStatus des Tablets an (AMAD), dass funktioniert auch. Ich möchte aber, dass ein "Label" blinkt, wenn die Stromzufuhr aktiv ist, dass Tablet somit geladen wird. Dass Reading dafür gibt aber nur 0 oder 1 aus. Bei 0 würde ich gerne überhauptnichts anzeigen, sobald Stromzufuhr aktiv und Reading=1 wollte ich den Text "...lädt" anzeigen lassen.
Aktuell blinkt bei mir die "1", wenn Stromzufuhr und die "0" wenn keine Stromzufuhr. Ich habe aber die Farbe des off-Readings auf den Hintergrund gesetzt, sodass man die blinkende 0 nicht sieht. Ich finde dass keine schicke Lösung. Gibt es da Möglichkeiten per "data-substitution", im Sinne "wenn 1, dann "...lädt", ansonten "" ?
Sicherlich kann man dass über entsprechende Dummys machen, aber wäre dies der einzige Weg? Wie macht Ihr soetwas?

1.b) Ähnliches Szenario bei u.a. der Lautstärkesteuerung meines Receivers. get & set liegen auf Volume, aber wie schaffe ich es, dass dieses Widet nur angezeigt/ bedienbar ist - wenn der Receiver auch eingeschaltet ist (=anderes Reading)?

2.) zu guter Letzt: mein Weihnachtsbeleuchtungsszenario. Ich würde gerne die Switches für die "WeihnachtsProgramme" (Strukturen in FHEM) nur in den Monaten 11,12 und 1 anzeigen. Ich denke, ich muß mir hier mein eigenes JS basteln oder auch wieder über entsprechende Dummys in FHEM gehen? Hat jemand soetwas ähnliches vielleicht in Betrieb.

vielen Dank für Eure Antworten
luetty

setstate

Ich denke, ich muss den Widgets noch die Parameter hide und hide-value verpassen.
Damit kann man dann ein Reading benennen und den erwarteten Wert zum Unsichtbarschalten.
Das wurde schon öfters gefragt.

luetty

#3700
Hi setstate,

dass fänd ich natürlich klasse!  :D
Ich hatte erst die Idee eine Art HideShowWidget zu basteln, welches man dann um dass eigentliche Widget legt und somit die Anzeige/ Unsichtbarkeit steuern kann. Wäre natürlich kein echtes Widget, aber eine Möglichkeit. Dein Vorschlag ist natürlich sauberer! Es gibt ja auch dass Javascript-Widget - mit dem soetwas sicher auch möglich ist -, dass habe ich aber noch nicht ans fliegen gebracht.

Bin aber zu neu in dem Thema und freue mich über jeden Beitrag den ich hier lesen und nachvollziehen kann  8)

DANKE
luetty


aloz77

Riesendank an alle Macher von Tablet UI.  ;)

Ich habe für lange Texte (z.B. Unwetterwarnung) nach eine Implementierung von einer Laufschrift gesucht, aber nicht gefunden. Mit meinen rudimentären jQuery-Kenntnissen habe ich mir dann folgende Lösung selbst zusammengebastelt.

/* Make CSS for a marquee */
.marquee {
    position:absolute;
    overflow: hidden;
    white-space: nowrap;
}


function marquee()
  {
    $(".marquee").each(function marquee_each(index,obj) {
   
    $(this).hide();
    marqueeStartX=$(this).parent().width();
    marqueeSizeX =$(this).width();

    if (marqueeSizeX==0 || marqueeStartX==0)
    { marqueeOffsetX=0;
    marqueeSpeed  =1000; // Fake a pause
    }
    else
    { marqueeOffsetX=marqueeSizeX+marqueeStartX;
    marqueeSpeed  =marqueeSizeX*20;
    }

    $(this).css({"margin-left": marqueeStartX+"px"});
    $(this).show();
    $(this).animate({'marginLeft' : "-="+marqueeOffsetX+"px"},marqueeSpeed,"linear",marquee_each);
  });
  }


Das funktioniert zumindest in Chrome auch sehr nett. Ich weiß nur nicht, wie ich die Funktion marquee() nach jedem initPage() ausführen lassen kann, ohne die letztere editieren zu müssen. Hat jemand einen Tipp, wie man eigene Handler einbinden kann?

kvo1

bin gerade am verzweifeln  :(
Ich lasse mir das Wetter für den aktuellen Tag anzeigen. Innerhalb der Anzeige soll/gibt es einen Link (Woche) welcher ein
popup-Fenster öffnen soll (tuts auch) und innerhalb dieses popup möchte ich dann per "swiper" die Vorhersage für die nächsten
Tage darstellen. Der aktuelle tag erscheint auch noch , aber das scrollen scheint nicht zu gehen !?
Gewollt ? oder liegt das an mir ?" (häng den code mal als Anhang ran, ist recht lang.

Wäre total happy wenn mir jemand einen Tip geben kann !
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

drhirn

Zitat von: Stril am 15 Januar 2016, 12:07:20
Ich finde es schon sympathisch, wenn der Webserver der Visualisierung abgekapselt werden kann. Das macht das Ganze schön flexibel und man hat als Abfallprodukt die Sicherheitsfunktionen von Apache im Köcher.

Ich hab da mal drüber nachgedacht. Eigentlich sind ja - im Falle TabletUI - alles nur AJAX-Abfragen. Man müsste nur die URL ändern.

Hab's auch gerade ausprobiert und dazu die TabletUI-Files auf einen anderen Webserver gelegt. Dann noch die URL zu FHEM in den betreffenden HTML- und JS-Dateien geändert.
Soweit ich das nach kurzen Tests sagen kann, funktioniert das problemlos.

Mir scheint sogar, die fhem-tablet-ui.js wäre dafür ausgelegt, auf einen anderen Server/Verzeichnis zu zeigen.

url: $("meta[name='fhemweb_url']").attr("content") || "/fhem/",

bzw. in der neuen Version

fhem_dir=$("meta[name='fhemweb_url']").attr("content")||"/fhem/";


Da müssten man dann nur noch fhemweb_url definieren und hätte alles, was man braucht. Haut bei mir aber noch nicht so richtig hin.

waschbaerbauch

Wie ich schon geschrieben hatte. Ich habe einen LAMPP (Apache) auf das System gebracht, die Sourcen unter '/opt/lampp/htdocs/fhem/www/tablet' abgelegt. Die Seiten werden auch angezeigt, leider ohne die Werte welche aus dem FHEM sonst gefüllt werden. Es erscheint nur eine nackte Schablone. Meine Frage ist halt, wie bekomme ich das Konstrukt dazu sich vom FHEM (Port 8083) die Werte zu holen und sie auf dem Webserver (Port 80) anzuzeigen ohne den internen Webserver von FHEM zu nutzen?