Switch mit data-set-on auf reading?

Begonnen von MarcoE, 23 Februar 2017, 14:53:21

Vorheriges Thema - Nächstes Thema

MarcoE

Hallo,
ich versuche gerade einen switch zu bauen für meinen Heizkörperthermostat. Der Switch soll beim Betätigen den Wert aus Wohnzimmer night-temp (bzw der andere auf day-temp) auslesen und mittels set desired-temp setzen.
In irgendeinem Thread hier habe ich etwas in der Art und Weise gesehen:

<div data-type="switch"
        data-device="Wohnzimmer"
        data-set="desired-temp"
        data-get="desired-temp"
        data-set-on="<Wohnzimmer>:<day-temp>"
        data-get-on="22.0"
        data-lock="desired-temp"
        data-lock-on="22.0"
        data-lock-off="!22.0"
        data-icon="fa-sun-o"
        class="cell top-align"></div>


Das gleiche wäre dann beim data-get-on und beim data-lock-on bzw die Invertierung beim data-lock-off benötigt.
Das ganze wird dann benutzt für zwei switches- einen um die Raumtemperatur (desired-temp) auf die "night-temp" bzw. die "day-temp" zu setzen.

Geht das so? Oder vielleicht so ähnlich?
Der Lock ist leider nötig, damit im eingeschalteten Zustand der Switch nicht betätigt werden kann und dann einen off schickt und die Heizung komplett ausschaltet.

Danke und viele Grüsse,
Marco

jemu75

Hallo Marco, da hatten wir wohl fast zeitgleich die selbe Überlegung. Schau mal hier, was setstate dazu für einen Lösungsansatz hat. https://forum.fhem.de/index.php/topic,67787.0.html

sinus61

data-set-on="[Wohnzimmer:day-temp]"

Das würde im Prinzip funktionieren, aber zumindest bei HM Thermostaten hat das Reading nicht das richtige Format. Da steht dann "21 C" drin, erwartet wird aber "21.0". Vom Prinzip her kann man so aber einen Reading Wert weiterreichen.

MarcoE

#3
Hallo,
super. Das
data-set-on="[Wohnzimmer:day-temp]"
ist genau was ich gesucht habe. Bei FHT80B funktioniert das auch (und ist einfacher als per userreading und notify).
Nur: beim data-set-on geht es aber nicht beim data-get-on (beim data-lock-on habe ich noch nicht getestet).
Schade das wäre dann echt super und trivial gewesen.

Viele Grüsse,
Marco

MarcoE

#4
Hallo,
ich bin endlich mal dazu gekommen an meinem UI weiter zu machen. Allerdings habe ich mit dem switch immer noch so meine Probleme. So funktioniert es:

<div
       data-type="switch"
       data-device="Badezimmer"
       data-set="desired-temp"
       data-get="desired-temp"
       data-set-on="[Badezimmer:day-temp]"
       data-get-on="22.0" data-lock="desired-temp"
       data-lock-on="22.0" data-lock-off="!22.0"
       data-icon="fa-sun-o" >
</div>


Ist aber eben unschön hier die Werte für data-get-on, data-lock-on und data-lock-off tatsächlich als Zahl eintragen zu müssen. Schöner wäre es natürlich so:

<div
       data-type="switch"
       data-device="Badezimmer"
       data-set="desired-temp"
       data-get="desired-temp"
       data-set-on="[Badezimmer:day-temp]"
       data-get-on="[Badezimmer:day-temp]"
       data-lock="desired-temp"
       data-lock-on="[Badezimmer:day-temp]"
       data-lock-off="![Badezimmer:day-temp]"
       data-icon="fa-sun-o" >
</div>


Aber sobald ich in data-get-on statt des Werts den Ausdruck verwende erscheint nicht einmal mehr der switch im UI.
Hat einer von euch eine Idee, was ich da machen könnte? Die Idee dahinter ist es eine andere Art von Thermostat zu haben (siehe Bild)
Oder eben wie im verlinkten Thread per notify (wäre aber einiges aufwändiger daher hoffe ich immer noch auf diesen Weg).


Danke und viele Grüsse,
Marco

setstate

#5
Ich habe eine Update gemacht, jetzt wird das so unterstützt

Eventuell fehlt noch ein

data-get-off="!on"

Damit das selbständige Ausschalten erfolgt

Und es muss

data-lock-off="!on"

heißen. Bedeutet "alles außer der Wert von lock-on"

MarcoE

Hi,
Zitat von: setstate am 04 August 2017, 02:04:08
Ich habe eine Update gemacht, jetzt wird das so unterstützt
Klasse. Ich habe per update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt und shutdown restart das dann auch eingespielt.
Nur leider geht es nicht.
Sobald ich nur den data-get-on vom Wert auf die Variable umstelle lädt auf der ganzen Seite kein einziges Icon mehr (nicht mal mehr die Icons im Homestatus werden geladen). Sobald ich die Änderung wieder rückgängig mache (auf Wert zurück) werden die Icons geladen.
Was kann da schieflaufen?

Danke und viele Grüsse,
Marco

PS hier noch der geht Zustand:

<div
         data-type="switch"
         data-device="Badezimmer"
         data-set="desired-temp"
         data-get="desired-temp"
         data-set-on="[Badezimmer:night-temp]"
         data-get-on="18.0"
         data-lock="desired-temp"
         data-lock-on="18.0"
         data-lock-off="!18.0"
         data-get-off="!18.0"
         data-icon="fa-moon-o"
         class="cell top-align">
</div>


geht nicht:

<div
         data-type="switch"
         data-device="Badezimmer"
         data-set="desired-temp"
         data-get="desired-temp"
         data-set-on="[Badezimmer:night-temp]"
         data-get-on="[Badezimmer:night-temp]"
         data-lock="desired-temp"
         data-lock-on="18.0"
         data-lock-off="!18.0"
         data-get-off="!18.0"
         data-icon="fa-moon-o"
         class="cell top-align">
</div>


setstate

Gibt es Fehlermeldungen in der Web Console?

MarcoE

Das sagt die Console:
Try to init plugin: switch
jquery.min.js:2 jQuery.Deferred exception: Cannot read property 'val' of null TypeError: Cannot read property 'val' of null
    at r.fn.init.$.fn.matchingState (http://zarafa:8083/fhem/ftui_eval/js/fhem-tablet-ui.js:1969:49)
    at HTMLDivElement.<anonymous> (http://zarafa:8083/fhem/ftui_eval/js/widget_famultibutton.js:522:42)
    at Function.each (http://zarafa:8083/fhem/ftui_eval/lib/jquery.min.js:2:2815)
    at r.fn.init.each (http://zarafa:8083/fhem/ftui_eval/lib/jquery.min.js:2:1003)
    at String.<anonymous> (http://zarafa:8083/fhem/ftui_eval/js/widget_famultibutton.js:510:18)
    at Function.each (http://zarafa:8083/fhem/ftui_eval/lib/jquery.min.js:2:2815)
    at Object.update (http://zarafa:8083/fhem/ftui_eval/js/widget_famultibutton.js:508:11)
    at http://zarafa:8083/fhem/ftui_eval/js/fhem-tablet-ui.js:1320:40
    at i (http://zarafa:8083/fhem/ftui_eval/lib/jquery.min.js:2:27983)
    at fireWith (http://zarafa:8083/fhem/ftui_eval/lib/jquery.min.js:2:28749) undefined


Das taucht aber nur auf in der nicht funktionierenden Version. In der anderen sieht die Console gut aus.
Viele Grüsse,
Marco

setstate

Okay, es sieht so aus, als ob der Wert nicht im Cache gefunden wird. Das Abo sollte aber angelegt werden, habe ich extra eingebaut.
Erstelle mal testweise ein Label daneben, was das Reading night-temp anzeigt. Dann müsste der Wert auch für den Switch verfügbar sein.

MarcoE

Wenn ich einfach (im nicht funktionierenden Zustand) ein entsprechendes Label hinzufüge passiert nichts. Nehme ich aber dann den funktionierenden Zustand (mit Wert statt Variable) wird das Label angezeigt. Danach kann ich im switch dann umstellen auf variable statt wert und es funktioniert (auch nachdem ich das label wieder gelöscht habe).

setstate

Durch die Aktion ist der Wert jetzt im Cache. Es war nicht gegeben, welche Widget zuerst dran ist. Vermutlich Switch vor Label. Dadurch trat der Fehler wieder auf.

Ich werde mal zuhause nachschauen, warum das indirekte Reading nicht bekannt ist.

Jojo11

Hallo,

seit dem letzten update (2.6.17) werden bei mir (code seit Monaten unverändert) einige switches und label nicht mehr angezeigt. Alles andere geht noch. Kann das damit zusammenhängen?

Schöne Grüße
Jo

MarcoE

Hi,
Zitat von: setstate am 04 August 2017, 11:38:38
Ich werde mal zuhause nachschauen, warum das indirekte Reading nicht bekannt ist.
konntest du schon herausbekommen, was da schief läuft?

Danke und viele Grüsse,
Marco

setstate

Ich habe keinen Fehler gefunden. Referenzierte Readings erscheinen in der jsonlist Anfrage an FHEM ohne das man Hilfs-Label verbauen muss. Die Anfrage sieht man sehr gut in den Entwicklertools des Browsers unter Netzwerk...

MarcoE

Zitat von: setstate am 09 August 2017, 10:10:43
Ich habe keinen Fehler gefunden. Referenzierte Readings erscheinen in der jsonlist Anfrage an FHEM ohne das man Hilfs-Label verbauen muss. Die Anfrage sieht man sehr gut in den Entwicklertools des Browsers unter Netzwerk...
hm. Und wie kann man dann den bei mir aufgetretenen Effekt erklären? Der Fehler war ja in der Chrome Console sichtbar und nach Verwendung des Labels weg. Auf anderen Devices funktioniert die Seite weiterhin nicht...

Danke und viele Grüsse,
Marco

MarcoE

Hi,
gibt es irgendwas was ich tun/liefern kann um das Problem zu lösen?

Danke und viele Grüsse,
Marco

Achim

Hallo,

seit dem letzten Update werden bei mir die Symbole der Mülltonnen nicht mehr angezeigt. Hängt dies evtl. auch mit den hier beschriebenen Änderungen zusammen? Meine Definition dafür ist:
<div data-type="symbol"
data-background-icon="none"
data-device="myAbfall"
data-get="muellkalender_Biotonne_tage"
data-off-color="#606060"
data-get-on='["off","^[01]$","^[1-9][0-9]|[2-9]$"]'
data-icons='["fa-trash-o warn","fa-trash-o warn blink","fa-trash-o warn"]'
data-colors='["Saddlebrown","Saddlebrown","Saddlebrown"]'
class="largeplus autohide"
></div>


Die Web-Console (Firefox auf Windows) bringt folgende Meldung (ich kenne mich da nicht aus und weiß nicht ob das weiterhilft):
ZitatUnbekannte Eigenschaft 'speak'.  Deklaration ignoriert.  fhemSVG.css:14:6
Unbekannte Eigenschaft '-moz-osx-font-smoothing'.  Deklaration ignoriert.  fhemSVG.css:23:24
Unbekannte Eigenschaft 'speak'.  Deklaration ignoriert.  fhem-tablet-ui.css:73:9
Unbekannte Eigenschaft '-moz-osx-font-smoothing'.  Deklaration ignoriert.  fhem-tablet-ui.css:80:27
Unbekannte Eigenschaft '-moz-box-shadow'.  Deklaration ignoriert.  fhem-tablet-ui.css:270:19
Fehler beim Verarbeiten des Wertes für 'display'.  Deklaration ignoriert.  fhem-tablet-ui.css:492:11
Fehler beim Verarbeiten des Wertes für 'display'.  Deklaration ignoriert.  fhem-tablet-ui.css:991:13
Fehler beim Verarbeiten des Wertes für 'display'.  Deklaration ignoriert.  fhem-tablet-ui.css:1025:13
Fehler beim Verarbeiten des Wertes für 'white-space'.  Deklaration ignoriert.  fhem-tablet-ui.css:1653:16
Fehler beim Verarbeiten des Wertes für 'white-space'.  Deklaration ignoriert.  fhem-tablet-ui.css:1654:16
Fehler beim Verarbeiten des Wertes für 'white-space'.  Deklaration ignoriert.  fhem-tablet-ui.css:1655:16
Fehler beim Verarbeiten des Wertes für 'display'.  Deklaration ignoriert.  fhem-tablet-ui.css:1662:13
Fehler beim Verarbeiten des Wertes für 'width'.  Deklaration ignoriert.  fhem-tablet-ui.css:2528:11
Fehler beim Verarbeiten des Wertes für 'width'.  Deklaration ignoriert.  fhem-tablet-ui.css:2529:11
Fehler beim Verarbeiten des Wertes für 'height'.  Deklaration ignoriert.  fhem-tablet-ui.css:2531:12
Fehler beim Verarbeiten des Wertes für 'height'.  Deklaration ignoriert.  fhem-tablet-ui.css:2532:12
Fehler beim Verarbeiten des Wertes für 'width'.  Deklaration ignoriert.  fhem-tablet-ui.css:2540:11
Fehler beim Verarbeiten des Wertes für 'width'.  Deklaration ignoriert.  fhem-tablet-ui.css:2541:11
Fehler beim Verarbeiten des Wertes für 'height'.  Deklaration ignoriert.  fhem-tablet-ui.css:2543:12
Fehler beim Verarbeiten des Wertes für 'height'.  Deklaration ignoriert.  fhem-tablet-ui.css:2544:12
Unbekannte Eigenschaft 'appearance'.  Deklaration ignoriert.  fhem-tablet-ui.css:2627:14
Unbekannte Pseudoklasse oder Pseudoelement '-ms-expand'.  Regelsatz wegen ungültigem Selektor ignoriert.  fhem-tablet-ui.css:2632:8
Unbekannte Eigenschaft '-moz-osx-font-smoothing'.  Deklaration ignoriert.  font-awesome.min.css:4:586
Unbekannte Eigenschaft 'speak'.  Deklaration ignoriert.  openautomation.css:12:9
Unbekannte Eigenschaft '-moz-osx-font-smoothing'.  Deklaration ignoriert.  openautomation.css:20:27
Base dir: /fhem/tablet/  fhem-tablet-ui.js:2063:1
initPage: Timer gestartetfhem-tablet-ui.js:626
initPage: 130.53msfhem-tablet-ui.js:682
initPage: Timer gestartetfhem-tablet-ui.js:626
get jsonlist2: Timer gestartetfhem-tablet-ui.js:780
Fehler beim Verarbeiten des Wertes für 'display'.  Deklaration ignoriert.  swiper.min.css:15:416
Unbekannte Eigenschaft '-moz-box-lines'.  Deklaration ignoriert.  swiper.min.css:15:1035
Unbekannte Eigenschaft '-moz-background-size'.  Deklaration ignoriert.  swiper.min.css:15:2295
Unbekannte Eigenschaft 'appearance'.  Deklaration ignoriert.  swiper.min.css:15:5376
Fehler beim Verarbeiten des Wertes für 'background-image'.  Deklaration ignoriert.  swiper.min.css:15:7369
Fehler beim Verarbeiten des Wertes für 'background-image'.  Deklaration ignoriert.  swiper.min.css:15:7809
Fehler beim Verarbeiten des Wertes für 'background-image'.  Deklaration ignoriert.  swiper.min.css:15:8253
Fehler beim Verarbeiten des Wertes für 'background-image'.  Deklaration ignoriert.  swiper.min.css:15:8694
initPage: 905.97msfhem-tablet-ui.js:682
get jsonlist2: 669.26msfhem-tablet-ui.js:786
read jsonlist2: Timer gestartetfhem-tablet-ui.js:787
read jsonlist2: 1.53ms

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

setstate

Wenn gar nichts mehr angezeigt wird, liegt dass vermutlich am class='autohide' .
Wenn es kein Reading "muellkalender_Biotonne_tage" beim Device "myAbfall" gibt, wird das Element versteckt.

Wenn ich den Code bei mir reinkopiere und mein "ftuitest" Dummy und Reading "state" eintrage, funktioniert alles.
Auch mit einem "setreading ftuitest muellkalender_Biotonne_tage 5" und data-get="muellkalender_Biotonne_tage" klappt es.

setstate

Zitat von: MarcoE am 11 August 2017, 13:22:37
Hi,
gibt es irgendwas was ich tun/liefern kann um das Problem zu lösen?

Danke und viele Grüsse,
Marco

Beim data-get-on klappt es nur ohne die [ ],
data-get-on="ftuitest:night-temp"

und

         data-lock-off="!on"
         data-get-off="!on"


anstatt

         data-lock-off="!18.0"
         data-get-off="!18.0"

MarcoE

#20
Hi,
Zitat von: setstate am 15 August 2017, 01:48:47
Beim data-get-on klappt es nur ohne die [ ],
data-get-on="ftuitest:night-temp"
hm leider nicht. data-lock-on habe ich jetzt fix auf "18.0" belassen.
Solange ich data-get-on auch auf "18.0" setze geht es.
Ändere ich es entweder auf Arbeitszimmer:night-temp oder [Arbeitszimmer:night-temp] bekomme ich folgende Fehlermeldung in der console:
Uncaught TypeError: Cannot read property 'val' of null
    at r.fn.init.$.fn.matchingState (fhem-tablet-ui.js:1969)
    at HTMLDivElement.<anonymous> (widget_famultibutton.js:522)
    at Function.each (jquery.min.js:2)
    at r.fn.init.each (jquery.min.js:2)
    at String.<anonymous> (widget_famultibutton.js:510)
    at Function.each (jquery.min.js:2)
    at Object.update (widget_famultibutton.js:508)
    at Object.<anonymous> (fhem-tablet-ui.js:285)
    at Function.each (jquery.min.js:2)
    at Object.update (fhem-tablet-ui.js:282)

und dann werden keinerlei Icons mehr angezeigt.

Viele Grüsse,
Marco

PS: der Vollständigkeit halber:

<div data-type="switch"
        data-device="Arbeitszimmer"
        data-set="desired-temp"
        data-get="desired-temp"
        data-set-on="[Arbeitszimmer:night-temp]"
        data-get-on="Arbeitszimmer:night-temp"
        data-lock="desired-temp"
        data-lock-on="18.0"
        data-lock-off="!on"
        data-get-off="!on" 
        data-icon="fa-moon-o"
        class="left-align cell small">
</div>
<div data-type="label" data-device="Arbeitszimmer" data-get="measured-temp" data-unit="%B0C%0A" class="top-align cell large"></div>

liefert die obengenannte Fehlermeldung

setstate

in meiner Version fange ich den Fehler schon ab. Ich habe das Update jetzt hochgeladen ...

MarcoE

Zitat von: setstate am 15 August 2017, 19:55:05
in meiner Version fange ich den Fehler schon ab. Ich habe das Update jetzt hochgeladen ...

Vielen Dank! Jetzt funktioniert es!

Viele Grüsse,
Marco

MarcoE

Hallo,
hast du was an dem Verhalten der Buttons geändert? Nun senden meine Buttons nichts mehr...
Mein Coding sieht weiterhin so aus:

<div
       data-type="switch" 
       data-device="Wohnzimmer"
       data-set="desired-temp"
       data-get="desired-temp"
       data-set-on="[Wohnzimmer:night-temp]"
       data-get-on="Wohnzimmer:night-temp" 
       data-lock="desired-temp"
       data-lock-on="Wohnzimmer:night-temp"
       data-lock-off="!on"
       data-get-off="!on"
       data-icon="fa-moon-o"
       class="left-align cell">
</div>

Sobald ich den data-set-on wieder auf einen fixen Wert umstelle funktioniert es aber nicht mit dem verwendeten Konstrukt.

Viele Grüsse,
Marco