New FHEM Tablet UI

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

Vorheriges Thema - Nächstes Thema

swinni

@Sash.sc
Ein paar Seiten vorher findest du die Info:
http://forum.fhem.de/index.php/topic,34233.msg339731.html#msg339731

Einfach das entsprechende Verzeichnis löschen und dann dem httpsrv Eintrag in deiner fhem.cfg

Schade eigentlich...Tablet UI läuft bei mir seit Monaten stabil und perfekt und ist so einfach zu individualisieren...

RasPi 1 B+ mit HMLan: 3x HM-SEC-SD,  5x HM-SEC-SCo, 1x HM-SEC-SC-2 und mit CUL433 Clone für IT-Steckdosen sowie ein Surfstick für SMS-Benachrichtigung per gammu.
Frontend im Einsatz: TabletUI für Wandtablet und zusätzlichen Anpassungen für Smartphones

mircoby

Hallo,
ich möchte gerne mit einem "switch" ein MAX! Thermostat zwischen Automatik und Manuellem Betrieb umschalten. Grundsätzlich funktioniert dies mit folgenden Kommandos:

set wz_Wandthermostat desiredTemperature auto
set wz_Wandthermostat desiredTemperature 5


mit folgender Konfiguration wird das Symbol des Switch beim Laden mit dem richtigen Status angezeigt:

<div data-type="switch"
        data-icon="fa-car"
        data-device="wz_WandThermostat"
        data-cmd="set desiredTemperature"
        data-get="mode"
        data-get-on="auto"
        data-get-off="manual"
        data-set-on="auto"
        data-set-off="5"
        class="cell small">
</div>


Allerdings wird beim Anklicken des Switches folgendes Kommando gesendet:

set desiredTemperature wz_Wandthermostat auto

<Device> und <command> sind also vertauscht.

Habe zum test mal folgendes gemacht:

        data-device="desiredTemperature"
        data-cmd="set wz_WandThermostat"


Mir ist bewusst, dass dies nicht korrekt sein kann, allerdings wird mit dieser Konfiguration der korrekte Befehl abgesetzt, jedoch der Symbolstatus falsch wiedergegeben, was klar ist da es kein Device mit dem Namen "desiredTemperature" gibt...

Meine Frage wäre nun, wie ich den Parameter data-cmd beschreiben muss um den gewünschten Befehl absetzen zu können.

Vielen Dank vorab Gruß
Mirko
FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR

mircoby

Ich gebe mir die Antwort selbst, es kann so einfach sein...

<div data-type="switch"
       data-icon="fa-car"
       data-device="wz_WandThermostat"
       data-cmd="set"
       data-get="mode"
       data-get-on="auto"
       data-get-off="manual"
       data-set-on="desiredTemperature auto"
       data-set-off="desiredTemperature 5"
       class="cell small">
</div>
FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR

ChrisK

Zitat von: setstate am 04 Oktober 2015, 22:24:28
Da niemand darauf antwortet oder eine Lösung anbieten will  8) , habe ich das Simplechart-Widget etwas angepasst.
$min und $max kann man jetzt mit in data-caption als Platzhalter einbauen:

data-caption="min:$min°C max:$max°C"
Sehr schön!

Ich habe mir noch eine $cur eingebaut, um die aktuelle Temperatur mit anzuzeigen:
data-caption="Schlafzimmer - $cur°C [$min°C-$max°C]"

In der widget_simplechart.js aus dem (ab Zeile 271):
                caption=caption.replace('$min',Math.min.apply(null, vals))
                                .replace('$max',Math.max.apply(null, vals));

das hier machen:
                caption=caption.replace('$min',Math.min.apply(null, vals))
                                .replace('$max',Math.max.apply(null, vals))
                                .replace('$cur',vals[vals.length-1])
                                ;

Das war's schon ;)

Nobby1805

Zitat von: setstate am 07 Oktober 2015, 20:20:35
:D Doch unter   :D
:-[ OK, dann werde ich auch das Wiki mal überarbeiten ;)
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

Deathevn

Hallo zusammen,

erst einmal vielen Dank für das Tablet UI. Der Ansatz über HTML und CSS gefällt mir persönlich sehr gut und ist für mich sehr zugänglich im Vergleich mit anderen Frontends.

Aktuell habe ich allerdings ein Verständnis-Problem mit simplechart:
<div data-type="simplechart" data-logdevice="myDBLog" data-logfile="HISTORY" data-columnspec="Thermostat_Wohnzimmer_Clima:measured-temp"></div>

Ich versuche zu meinen Homematic Thermostaten aus der DBLog die gemessene Temperatur darzustellen.
Analog zu einem Vorposter habe ich aus dem "preprocessed input" der SVG-Diagramme folgende Zeile ausgewertet:
get myDBLog HISTORY INT 2015-10-08_00:00:00 2015-10-09_00:00:01 Thermostat_Wohnzimmer:measured-temp

Weiter unten findet sich noch folgender Eintrag:
Thermostat_Wohnzimmer:measured-temp:::

aus welchem ich den columnspec laut Commandref geschlossen habe.
Ausprobiert habe ich folgende Varianten:

  • Thermostat_Wohnzimmer_Clima:measured-temp
  • Thermostat_Wohnzimmer:measured-temp
  • Thermostat_Wohnzimmer_Clima:measured-temp::int:

und weitere verschiedene Umbauten des Ausdrucks.

Ergebnis ist immer das Selbe - siehe Screenshot.

Könnt ihr mir hier weiterhelfen?

Viele Grüße
Martin

ChrisK

Zitat von: Deathevn am 08 Oktober 2015, 09:40:48
Könnt ihr mir hier weiterhelfen?
Ich habe es mit diesem Attribut hinbekommen:
data-columnspec="4:meas.*:1:int"
Hab ich von setstates Beitrag hier

Deathevn

Hi Chris,

leider führt das auch nicht zum Erfolg.
Sollte der String nicht eigentlich auch nur auf ein LogFile matchen?
Die 4 findet sich ja so gar nicht in der Datenbank wieder.

Viele Grüße
Martin

ChrisK

Zitat von: Deathevn am 08 Oktober 2015, 10:32:06
Sollte der String nicht eigentlich auch nur auf ein LogFile matchen?
Die 4 findet sich ja so gar nicht in der Datenbank wieder.
Hi Martin,

sorry, hab das mit der DB komplett überlesen.
Meine Charts gucken alle auf filelogs, kann also nicht wirklich weiterhelfen.
Aber zum Glück bin ich ja nicht der einzige hier ;)

amunra

Zitat von: Deathevn am 08 Oktober 2015, 09:40:48
Könnt ihr mir hier weiterhelfen?
Damit sollte es funktionieren (tut es zumindest bei mir):

<div data-type="simplechart"
data-device="myDBLog"
data-logdevice="myDBLog"
data-logfile="HISTORY"
data-columnspec="Thermostat_Wohnzimmer_Clima:measured-temp"
data-minvalue="0"
data-maxvalue="30">
</div>

mircoby

Zitat von: mrbreil am 11 September 2015, 20:06:00
Ich habe ein kleines Problem damit wie ich das reload Widget benutze.
Habe es laut wie laut Bespiel eingefügt:

<div data-type="reload" data-device="RELOAD" data-get="action" data-reload-on="1" data-reset-to="0"></div>

Wie starte ich jetzt eine Aktualisierung der Seite?
Stehe vor der gleichen Frage, gibt es eine Antwort darauf?

Habe ein dummy RELOAD angelegt, wenn ich dieses manuell mit 0 oder 1 beschreibe tut sich nichts. Lasse ich den teil data-get="action" weg, wird bei RELOAD=1 zyklisch, endlos aktualisiert, bis RELOAD=0 gesetzt wird.

Was ich damit vor habe:
Ich verwende ein Popup für die Temperatur / Betriebsart Einstellung eines MAX! Thermostats.
- Schalte ich die Betriebsart mit einem Switch um, ändert sich sofort das Symbol, leider jedoch nicht das Label welches die Betriebsart anzeigt. (PopUpTempBetriebsartAsynchron.png)
- Um dieses zu aktualisieren muss ich das Popup schließen, einen Page Reload machen und das Popup erneut öffnen. (PopUpTempBetriebsartSynchronNachReload.png)

Meine Idee ist nun das Reload Widget dafür zu verwenden. Passt das oder geht dies Eleganter? Würde mich ebenfalls über Beispielcode freuen wie das umsetzbar wäre.
FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR

setstate

Warum lässt du das Label nicht auf eine Device + Reading schauen, was den aktuellen Betriebsmode enthält.
Mit Longpoll wird das dann sofort aktualisiert.

Deathevn

Zitat von: amunra am 08 Oktober 2015, 18:05:48
Damit sollte es funktionieren (tut es zumindest bei mir) [...]

Super, danke!
Mit fehlte das data-device, würde auch meinen, dass ich das auch in den vorherigen Beiträgen nicht gesehen hatte und bin auch davon ausgegangen, dass man es hier nicht benötigt.
Jetzt funktioniert es jedenfalls.

Viele Grüße
Martin

Gunther

Ich wollte mir gerade eine Userdemo hier (https://github.com/knowthelist/fhem-tablet-ui) runterladen (bin eingeloggt).
Leider ist in den heruntergeladenen html-Dateien nicht der richtige Code enthalten. Mache ich etwas falsch?
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

mircoby

Zitat von: setstate am 08 Oktober 2015, 23:05:29
Warum lässt du das Label nicht auf eine Device + Reading schauen, was den aktuellen Betriebsmode enthält.
Mit Longpoll wird das dann sofort aktualisiert.
Im Prinzip habe ich das so,  <meta name="longpoll" content="1">

<div data-type="label"
       data-device="wz_WandThermostat"
       data-get="mode"
       class="inline cell top-space-2x big">
/div>


Dies funktioniert auf der normalen Website, jedoch nicht bei einem geöffnetem Popup. Dieses muss ich erst schließen, einen PageReload machen und das Popup neu öffnen, dann stimmts.

FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR