Slider: Reine Anzeige / Farbe dyn. ändern?

Begonnen von M_I_B, 09 November 2016, 08:37:04

Vorheriges Thema - Nächstes Thema

justme1968

das file braucht keine ausführungs rechte.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

M_I_B

#16
... du mich meinen?
Habe ich nicht explizit gesetzt. Alles was ich per SMB auf den PI kopiere erhält genau diese Rechte ...

EDIT:
Ich habe gerade das Update gefahren wegen "Irrer Iwan Slider". Das funktioniert so weit erst mal und macht optisch einen guten Satz nach vorne. Allerdings glaube ich erahnen zu können, warum der Code da drin war, welcher die Probleme verursacht hat?!? Denn jetzt erhalte ich reichlich Fehlermeldungen im FhemLog bei einem ReRead like ...
2016.11.11 10:34:34.859 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at (eval 14243) line 1.
2016.11.11 10:34:39.780 1: PERL WARNING: Argument "" isn't numeric in addition (+) at (eval 14308) line 1.
2016.11.11 10:34:39.781 1: PERL WARNING: Argument "" isn't numeric in numeric lt (<) at (eval 14308) line 1.
2016.11.11 10:34:39.783 1: PERL WARNING: Argument "???" isn't numeric in addition (+) at (eval 14309) line 1.
2016.11.11 10:34:39.783 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 14309) line 1.
2016.11.11 10:34:39.798 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at (eval 14311) line 1.
2016.11.11 10:34:39.799 1: PERL WARNING: Argument "" isn't numeric in addition (+) at (eval 14311) line 1.


... sowie in der UI exakt so viele Fehler wie (modifizierte) Slider vorhanden sind like ...
Usage: setstate <name> <state>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.


... sowie nach einem ReRead in der UI überall die "drei Fragezeichen" an der Stelle, wo vorher der nicht erwünschte Wert stand...

Also so geht es irgendwie nicht wirklich. Leider kann ich mangels Wissen nicht mehr dazu beitragen ...

EDIT2: ... und wenn ich einen Slider nur mit der Maus anklicke, ohne zu schieben, erhalte ich einen "undefiniert", wenn da vorher die Fragezeichen standen...

M_I_B

Zitat von: rudolfkoenig am 11 November 2016, 07:24:55Die {()} Konstrukte (intern SetMagic genannt) funktioniert nur fuer die set und setreading Befehle.
Wuerde fuer attr aber auch nicht viel helfen, weil es beim ausfuehren des Befehls ersetz wird, und nicht bei jede  Abfrage. Ich wuerde ein notify bauen, und damit setList aendern.

...ähhh ja ... Leichter Gesagt als getan; ich probiere seit ne'r Stunde rum und bekomme es nicht gebacken. Aktueller Stand:
define set_RL_HZSi DOIF ([HZSP] or [HYS]) (attr HZSi setList state:rangeslider,20,0.01,80,1,rmin:{([HZSP]-[HYS])},rmax:[HZSP],readonly:1)

Natürlich habe ich noch reichlich andere Versionen und Klammerungen durch, aber keine führte zum Erfolg; ist das erste Mal, das ich versuche, mit einem DOIF das Attribut eines Device zu ändern...

justme1968

die warnungen liegen nicht an der änderung sondern daran das du STATE auf einen leeren string setzt und vermutlich irgendwo anders per Value(..) drauf zugreifst. nimm statt Value(...) besser ReadingsVal('<device>','state',0)

die meldungen beim start kommen daher das setstate nicht mir einem leeren string umgehen kann. der workaround ist stateFormat auf ein html leerzeichen zu definieren: attr <device> stateFormat {'&nbsp;'} statt dem leeren string wie oben vorgeschlagen.


das undefiniert beim klicken ist ein anderer alter fehler (der glaube ich auch schon mal weg war).
@rudi: val wird erst im mousemove initialisiert. das wird hiermit behoben (zeilennummern nicht ganz korrekt):Index: fhemweb.js
===================================================================
--- fhemweb.js (revision 12546)
+++ fhemweb.js (working copy)
@@ -1070,7 +1092,8 @@
     $(newEl).append('<input type="hidden" name="'+elName+
                         '" value="'+currVal+'">');

-  var lastX=-1, offX=0, maxX=0, val;
+  var lastX=-1, offX=0, maxX=0;
+  var val = currVal;

   newEl.activateFn = function() {
     if(currVal < min || currVal > max)
oder man sendet in onmouseup cmd nicht los wenn val === undefined ist. d.h. die maus zuvor nicht bewegt wurde.

das ist eher eine DOIF frage. keine ahnung wie die syntax da ansehen muss.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

M_I_B

#19
Zitat von: justme1968 am 11 November 2016, 22:44:39die warnungen liegen nicht an der änderung sondern daran das du STATE auf einen leeren string setzt und vermutlich irgendwo anders per Value(..) drauf zugreifst. nimm statt Value(...) besser ReadingsVal('<device>','state',0)
Naja, ich mache alles mit DOIF und greife natürlich "schreibend" darauf zurück. Die reinen Anzeige- Slider müssen ja von irgend wo her ihren Wert erhalten, also füttere ich die z.B. bei einem Event eines 1wire- Sensors mit dessen Daten. Value resp. ReadingsVal nutze ich in der Form gar nicht...

Zitat von: justme1968 am 11 November 2016, 22:44:39die meldungen beim start kommen daher das setstate nicht mir einem leeren string umgehen kann. der workaround ist stateFormat auf ein html leerzeichen zu definieren: attr <device> stateFormat {'&nbsp;'} statt dem leeren string wie oben vorgeschlagen.
Ok, das macht Sinn. versuche ich gleich noch eben, bevor ich mal ein Nickerchen mache ;)

EDIT: Nö, die Fehler haben sich nur in Hinsicht auf das Space geändert bei allen Slidern, also unabhängig davon, ob ein Slider einen Sollwert "liefert" oder einen Istwert "empfängt".
2016.11.11 23:41:06.839 1: PERL WARNING: Argument "&nbsp;" isn't numeric in numeric gt (>) at (eval 1001803) line 1.
2016.11.11 23:41:06.840 1: PERL WARNING: Argument "&nbsp;" isn't numeric in numeric lt (<) at (eval 1001803) line 1.
2016.11.11 23:41:06.878 1: PERL WARNING: Argument "&nbsp;" isn't numeric in numeric gt (>) at (eval 1001809) line 1.
2016.11.11 23:41:06.878 1: PERL WARNING: Argument "&nbsp;" isn't numeric in numeric lt (<) at (eval 1001809) line 1.
2016.11.11 23:41:12.855 1: PERL WARNING: Argument "&nbsp;" isn't numeric in subtraction (-) at (eval 1001813) line 1.
2016.11.11 23:41:12.932 1: PERL WARNING: Argument "&nbsp;" isn't numeric in subtraction (-) at (eval 1001834) line 1.
2016.11.11 23:41:13.832 1: PERL WARNING: Argument "&nbsp;" isn't numeric in subtraction (-) at (eval 1001857) line 1.
2016.11.11 23:41:13.890 1: PERL WARNING: Argument "&nbsp;" isn't numeric in subtraction (-) at (eval 1001878) line 1.
2016.11.11 23:41:30.914 1: PERL WARNING: Argument "&nbsp;" isn't numeric in addition (+) at (eval 1001943) line 1.
2016.11.11 23:41:30.915 1: PERL WARNING: Argument "&nbsp;" isn't numeric in numeric lt (<) at (eval 1001943) line 1.
2016.11.11 23:41:30.918 1: PERL WARNING: Argument "&nbsp;" isn't numeric in addition (+) at (eval 1001944) line 1.
2016.11.11 23:41:30.919 1: PERL WARNING: Argument "&nbsp;" isn't numeric in numeric gt (>) at (eval 1001944) line 1.


EDIT2: Hatte gerade die Eingebung ;) Problem gelöst durch explizites Anhängen von :state an jede Definition in den DOIF Abfragen.

Zitat von: justme1968 am 11 November 2016, 22:44:39das ist eher eine DOIF frage. keine ahnung wie die syntax da ansehen muss.
Jupp, dann gehe ich den DOIF'lern mal auf die Nerven mit der Frage ;)

rudolfkoenig

Leeres STATE erzeugt seit gestern keine Warnung mehr (da sie nicht geschrieben wird).
Habe den fhemweb.js Patch eingespielt, aber nicht getestet.