New FHEM Tablet UI

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

Vorheriges Thema - Nächstes Thema

johannes1984

Hey,

hat schon jemand von euch über die New Tablet UI das LightScenes Modul "eingebunden"?

LG Johannes
RPi Version B, HMLAN, ZWave USB Stick, CUL

StG (DD)

Hallo Mario,

eventuell habe ich einen Bug gefunden, ob in der Tablet-UI oder im FHEM, das kann ich nicht beurteilen.

Ausgangssituation:
Meine Temperatursensoren werden via "pilight_temp" Modul empfangen. Die Sensoren senden ihre Werte dreistellig, ohne Komma. Also bei 22,9°C kommen 229°C an. Luftfeuchte ebenso.

FHEM-Konfig:
Mittels stateFormat habe ich das in FHEM formatiert:

attr tmp_gaestezimmer stateFormat { sprintf("%s %s", ReadingsVal("tmp_gaestezimmer","temperature",0)/10, ReadingsVal("tmp_gaestezimmer","humidity",0)/10) ; }

Nun steht im Internals.STATE: 19.2 63

Tablet-UI-Konfig:

<div data-type="label" data-device="tmp_gaestezimmer" data-unit=" %B0C%0A" data-part="1" class="darker small inline"></div>
<div data-type="label" data-device="tmp_gaestezimmer" data-unit=" %" data-part="2" class="darker small inline"></div>


Das Problem:
Beim Start der GUI werden die Temperaturen ordentlich angezeigt. Wird ein Sensor aktualisiert, dann wird plötzlich wieder dreistellig angezeigt und auch anstelle der Luftfeuchte ebenfalls die Temperatur.

Meine Vermutung
Das Attribut "State" gibt es zwei mal. Einmal unter Internals und einmal in den Readings. Der einzige Unterschied ist die Groß/Kleinschreibung. Kann es sein, dass bei neuen Werte das Readings.state angezeigt wird?

Hast Du einen Lösungsvorschlag? Ein explizit angegebenes  data-get="STATE" hat auch nicht geholfen.

Danke Dir für die tolle GUI. VG, Stephan

nesges

Zitat von: johannes1984 am 09 Mai 2015, 15:53:44
hat schon jemand von euch über die New Tablet UI das LightScenes Modul "eingebunden"?

Ich sehe da jetzt nicht so die Herausforderung - was schwebt dir denn genau vor?

nesges

Zitat von: StG (DD) am 09 Mai 2015, 22:34:01
Meine Vermutung
Das Attribut "State" gibt es zwei mal. Einmal unter Internals und einmal in den Readings. Der einzige Unterschied ist die Groß/Kleinschreibung. Kann es sein, dass bei neuen Werte das Readings.state angezeigt wird?

Bei longpoll gillt: Entscheidend ist, was im Event steht. Kannst du bitte einmal im Eventmonitor schauen wie der STATE-Wert dort gemeldet wird?

johannes1984


Zitat von: nesges am 09 Mai 2015, 22:37:03
Ich sehe da jetzt nicht so die Herausforderung - was schwebt dir denn genau vor?

Dachte, da gäbe es vielleicht ein schönes fertiges Modul. :-)

Korrigiere mich bitte, wenn ich falsch liege, aber dann würde ich das über einen Dummy und notify oder DOIF in FHEM lösen und den dummy dann im Tablet UI darstellen?!

LG Jo


Gesendet von meinem iPhone mit Tapatalk
RPi Version B, HMLAN, ZWave USB Stick, CUL

nesges

Ich benutze LightScene selbst nicht, von daher bin ich vielleicht nur eingeschränkt phantasiefähig - aber eigentlich will man LightScenes im Frontend nur noch einschalten, oder? Das wäre in der einfachsten Form zb so ein Push-Widget:

<div data-type="push"
        data-device="LS"
        data-set="scene SCENE"></div>

johannes1984

Ich teste das mal ;-)


Gesendet von meinem iPhone mit Tapatalk
RPi Version B, HMLAN, ZWave USB Stick, CUL

StG (DD)

Zitat von: nesges am 09 Mai 2015, 22:41:44
Bei longpoll gillt: Entscheidend ist, was im Event steht. Kannst du bitte einmal im Eventmonitor schauen wie der STATE-Wert dort gemeldet wird?


2015-05-09 23:02:30 pilight_ctrl pilight rcv_raw: {"code":{"id":1316,"temperature":190,"humidity":630,"battery":1},"origin":"receiver","protocol":"alecto_ws1700","uuid":"0341-91-45-48-554848","repeats":1}
2015-05-09 23:02:30 pilight_temp tmp_gaestezimmer 190
2015-05-09 23:02:30 pilight_temp tmp_gaestezimmer temperature: 190
2015-05-09 23:02:30 pilight_temp tmp_gaestezimmer humidity: 630


So kommt es im FHEM-eventmonitor an, von den States sehe ich da gar nix :( .

setstate

Hallo Stephan,

das ist aber schade. Da hast du gerade das mit dem stateFormat so toll hin bekommen und nun ist das nicht mit im Event-Publishing drin.
Evtl. müssen wir doch im FTUI die Berechnung (/10) anbieten oder hat noch jemand einen anderen Vorschlag, um ohne viel Aufwand, aus 229 22,9 zu machen?

Thorsten Pferdekaemper

Zitat von: setstate am 09 Mai 2015, 23:20:55Evtl. müssen wir doch im FTUI die Berechnung (/10) anbieten oder hat noch jemand einen anderen Vorschlag, um ohne viel Aufwand, aus 229 22,9 zu machen?
Vielleicht mit userReadings?
Gruß,
   Thorsten
FUIP

nesges

#1390
Zitat von: StG (DD) am 09 Mai 2015, 23:05:20

2015-05-09 23:02:30 pilight_temp tmp_gaestezimmer 190

So kommt es im FHEM-eventmonitor an, von den States sehe ich da gar nix :( .

Die Zeile, die ich stehen gelassen habe ist "STATE", da hab ich mich falsch ausgedrückt. Doof ist, dass da der unformatierte Wert gesendet wird. Da wirst du auch so einfach nichts dran ändern können. Was geht: notify, der den formatierten Wert in ein dummy schreibt und diesen dummy in FTUI lesen - ist aber natürlich keine schöne Lösung. Oder was Thorsten schreibt (userReadings)!

Zitat von: setstate am 09 Mai 2015, 23:20:55
jemand einen anderen Vorschlag, um ohne viel Aufwand, aus 229 22,9 zu machen?

Dazu könnten wir eine Funktion in widget_widget anlegen, mit der eine Formel aus einem Attribut auf den Wert angewendet wird. Die Funktion wird in den abgeleiteten Widgets in update() aufgerufen. "ohne viel Aufwand" ist das allerdings nicht ;) Und eigentlich bin ich auch kein Freund davon das UI Werte berechnen zu lassen. Es sollte die Aufgabe des Backends sein, vernünftige Werte zu liefern.

johannes1984

Zitat von: nesges am 09 Mai 2015, 22:56:13
Ich benutze LightScene selbst nicht, von daher bin ich vielleicht nur eingeschränkt phantasiefähig - aber eigentlich will man LightScenes im Frontend nur noch einschalten, oder? Das wäre in der einfachsten Form zb so ein Push-Widget:

<div data-type="push"
        data-device="LS"
        data-set="scene SCENE"></div>


Hey,

damit funktioniert es super. Danke für den Denkanstoß.

LG Jo
RPi Version B, HMLAN, ZWave USB Stick, CUL

viegener

#1392
Zitat von: andreas_r am 09 Mai 2015, 15:31:05
ich hätte eine kleine Frage: Ich würde gerne mein Rollo mit drei Befehlen steuern: auf, ab und stop (um in der Mitte anzuhalten).

Gibt es eine Möglichkeit, das Ganze auch (zB mit dem Circle Menu) inkl. dem Stopbefehl darzustellen, aber gleichzeitig auch den Zustand des Rollos zu zeigen? Ich habe die Circlemenu ALternative bisher immer nur als statisches Icon dargestellt bekommen.


@Andreas: Ich habe für meine Rolläden ein komplexes Setup bestehend aus einem Slider, Label und drei Buttons für Auf/Stop/Ab angelegt,
Das ganze sieht bei mir etwa so aus:

(http://forum.fhem.de/index.php?action=dlattach;topic=34233.0;attach=31945;image)

Und im HTML etwa so:


  <div class="left">
    <div data-type="label" class="">Links</div>
    <div data-type="slider" data-device='roll_wz_1' data-get="STATE" data-min="0"  data-max="100" data-on='(on|closed|down)' data-off='(open|off)'  class="mini small" >  </div>
    <div data-type="label" data-device="roll_wz_1" data-get="STATE" class=""></div>
    <div class="triplebox-v small top-space">
      <div data-type="push" data-device="roll_wz_1" data-icon="fa-chevron-up" data-background-icon="fa-square-o" data-set="off" class="small"> </div>
      <div data-type="push" data-device="roll_wz_1" data-icon="fa-minus" data-background-icon="fa-square-o" data-set="stop" class="narrow small"> </div>
      <div data-type="push" data-device="roll_wz_1" data-icon="fa-chevron-down" data-background-icon="fa-square-o" data-set="on" class="narrow small"> </div>
    </div>
  </div>
  <div class="left">
    <div data-type="label" class="">Rechts</div>
    <div data-type="slider" data-device='roll_wz_2' data-get="STATE" data-min="0"  data-max="100" data-on='(on|closed|down)' data-off='(open|off)'  class="mini small" >  </div>
    <div data-type="label" data-device="roll_wz_2" data-get="STATE" class=""></div>
    <div class="triplebox-v small top-space">
      <div data-type="push" data-device="roll_wz_2" data-icon="fa-chevron-up" data-background-icon="fa-square-o" data-set="off" class="small"> </div>
      <div data-type="push" data-device="roll_wz_2" data-icon="fa-minus" data-background-icon="fa-square-o" data-set="stop" class="narrow small"> </div>
      <div data-type="push" data-device="roll_wz_2" data-icon="fa-chevron-down" data-background-icon="fa-square-o" data-set="on" class="narrow small"> </div>
    </div>
  </div>


Dazu muss im CSS aber auch noch die triplebox definiert werden:


.triplebox-v {
    min-height: 100x;
    max-height: 100px;
    min-width: 52px;
    max-width: 52px;
}

.triplebox-v [data-type]{
    margin-top:-4px;
    margin-bottom:-4px;
}


Ich verwende aber bei mir einen etwas modifzierten Slider, damit es eher zur Bewegungsrichtung der Rolläden passt (Also Oben min / Unten max). Es sollte aber erstmal auch so gehen.

Ich kann meinen Slider aber auch in Github bereitstellen, wenn gewünscht.

Gruss,
Johannes

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

StG (DD)

#1393
Guten Morgen Mario,

da hast Du Recht, das Backend sollte die richtigen Werte liefern. Ich schau mir die zwei anderen Vorschläge an und melde mich, ob's geklappt hat. Wird wohl aber heute leider nix werden. Einen schönen Sonntag Euch :)

@Viegener: Sieht prima aus, so stelle ich mir das auch vor, habe vorgestern meine ersten Rollladen mit Motor und Homematic versorgt und nun versuche ich es in FHEM hübsch zu machen.

Stephan

nesges

Zitat von: viegener am 10 Mai 2015, 01:03:42
Ich verwende aber bei mir einen etwas modifzierten Slider, damit es eher zur Bewegungsrichtung der Rolläden passt (Also Oben min / Unten max). Es sollte aber erstmal auch so gehen.
Ich kann meinen Slider aber auch in Github bereitstellen, wenn gewünscht.

Vielleicht können wir dem Standard-Slider ja eine Option verpassen, mit der die Richtung umgekehrt wird. Deine Anpassung würde mich auf jeden Fall interessieren.