smartVISU Widgets

Begonnen von vbs, 29 März 2015, 12:35:12

Vorheriges Thema - Nächstes Thema

der-Lolo

Wenn schon über zusätzliche Buttons gesprochen wird (Heizpause und Frostschutz) - würde ich gerne noch einen Button ins Spiel bringen, mir geht es um die Verknüpfung mit einer Anwesenheitserkennung. Als Icon wären die Anwesenheitstypischen geeignet - oder, wie ich es gerne hätte ein Bluetooth Logo.
Langsam werden es aber ziemlich viele Buttons was mich dazu bringt zu fragen ob man nicht ein Popup überlegen kann...
Quasi einen "Zahnrad" Button um an die Einstellungen wie Heizpause, Frostschutz, Bluetooth - vielleicht auch manu und auto mode oder Boost zu kommen.

Joker

Zitat von: der-Lolo am 22 April 2015, 08:08:05
@Joker - hast Du es ausprobiert? klingt nämlich nicht so wie Du es beschreibst.
Ja, habe ich probiert. Man kann im Widget "erstmal" einstellen was man will.

Zitat von: bgewehr am 22 April 2015, 08:13:36
@Vbs: wenn ich 45* geklickt habe und 1 Sekunde später setzt der Converter das auf 30 zurück, dann bin ich zufrieden. Ihr nicht?
Da bin ich der gleichen Meinung wie vbs, schön würde ich das nicht finden. Aber es ist ja wie schon erwähnt wurde auch nicht so, dass das 1 Sekunde später zurück gesetzt wird. So wie es aussieht wird es dann zurück gesetzt, wenn das Device den Wert übernommen hat (?). Zumindest kann ich bei mir hier problemlos reproduzieren dass der eingestellte Wert außerhalb der Begrenzung für mehrere Minuten im Widget sichtbar ist.

Zitat von: der-Lolo am 22 April 2015, 10:03:58
Wenn schon über zusätzliche Buttons gesprochen wird (Heizpause und Frostschutz) - würde ich gerne noch einen Button ins Spiel bringen, mir geht es um die Verknüpfung mit einer Anwesenheitserkennung. Als Icon wären die Anwesenheitstypischen geeignet - oder, wie ich es gerne hätte ein Bluetooth Logo.
Langsam werden es aber ziemlich viele Buttons was mich dazu bringt zu fragen ob man nicht ein Popup überlegen kann...
Quasi einen "Zahnrad" Button um an die Einstellungen wie Heizpause, Frostschutz, Bluetooth - vielleicht auch manu und auto mode oder Boost zu kommen.
Ich denke da muss man unterschieden zwischen "Buttons"-> Möglichkeit etwas zu verstellen, und "Icons"->Statusanzeige für irgendwas. Ich würde es ganz schick finden, wenn z.B die Statusicons über der Temperaturanzeige und den +/- Buttons sind und die "echten" Buttons unten drunter. Dann weiß man auch eher was man anklicken kann/soll und was nicht :-)
Prinzipiell ist das was Du meinst ja problemlos machbar, das Widget braucht nur ein zusätzliches GAD was den Status abbildet, und im Widget braucht man dann ein basic.symbol, was abhängig davon ein Icon anzeigt.

vbs

Hier mal testweise mit Min/Max-Grenzen für die +/--Tasten. Nur kurz reingehackt, aber ist ja auch nicht überkomplex :)
https://github.com/verybadsoldier/smartvisu-widgets/tree/master/homematic

PS.
Nicht vergessen, das js-File einzubinden.

herrmannj

Zitat von: bgewehr am 22 April 2015, 08:12:10
@Jörg: wie ist Dein Release-Schedule? Wann darf ich plotten?
Hi Bernd,

bin dran aber das Business hält mich auch gut unter Feuer (ohne Moos nix los ... ).
Ich mag keine commitments abgeben die dann wackeln, mindestens 14 Tage.

Sorry. vg
jörg

herrmannj

#64
ZitatDa bin ich der gleichen Meinung wie vbs, schön würde ich das nicht finden. Aber es ist ja wie schon erwähnt wurde auch nicht so, dass das 1 Sekunde später zurück gesetzt wird. So wie es aussieht wird es dann zurück gesetzt, wenn das Device den Wert übernommen hat (?). Zumindest kann ich bei mir hier problemlos reproduzieren dass der eingestellte Wert außerhalb der Begrenzung für mehrere Minuten im Widget sichtbar ist.

Ne, das stimmt so nicht. Das passiert de facto in realtime.

Der Ablauf ist so: wenn im converter der min unterlaufen wird gibt der converter das erst gar nicht an das device weiter sondern setzt seinerseits sofort einen trigger mit min ab der dazu führt das sofort in sv min eingesetzt wird. Da reden wir über Millisekunden, so schnell das ich nichts davon sehen kann.

Wenn das bei Euch anders ist stimmt was nicht - evtl liegt das dann am widget (obwohl ich jetzt nicht wüsste wie) - oder im git stimmt was nicht. In der js console müsste das aber sichtbar sein - der converter soll den Wert sofort angepasst an sv zurück pushen. Max logischerweise analog,

vg
jörg

edit: im git sieht es ok aus, hier ist der Ablauf für min:

if (defined($min) && ($gadval < $min))
{
    my $s = ($reading eq 'state')?'':$reading;
    $gadval = $min;
    main::fhem("trigger $device $s $gadval");
}


Evtl müsste ich da sonst debuggen.

herrmannj

bevor ich jetzt noch ein edit schreib: habt ihr evtl ein min-interval oder so gesetzt ? Das würde den trigger aushebeln ...

Joker

#66
Zitat von: vbs am 22 April 2015, 18:55:46
Hier mal testweise mit Min/Max-Grenzen für die +/--Tasten. Nur kurz reingehackt, aber ist ja auch nicht überkomplex :)
https://github.com/verybadsoldier/smartvisu-widgets/tree/master/homematic

PS.
Nicht vergessen, das js-File einzubinden.

Super, das werde ich nachher mal ausprobieren. Gibts eigentlich irgendeine gute Ressource, wo man sich die Basics von DOM/JavaScript Programmierung reinziehen kann?
Ich bin beruflich Software-Entwickler und würde prinzipiell gerne hier was beitragen bzw. meine Ideen umsetzen. An dem Know-How der prinzipiellen Umsetzung fehlt es also nicht, aber es scheitert einfach dran dass ich beruflich in einer ganz anderen Domäne arbeite- Im konkreten Fall hätte ich z.B. einfach nicht gewusst, wie man an die Werte die man als min/max Temp übergeben hat, im Code wieder ran kommt  :P

Gibt's eine Möglichkeit an den Wert von einem GAD ran zu kommen? Also ob die desired-temp gerade auf on oder off steht, und abhängig davon das Widget anders aussehen zu lassen? Damit könne man den Punkt 3 den ich gestern Abend gepostet habe lösen:
Zitat3. wenn die desired-temp auf on bzw. off steht, dann zeigt das Widget die +/- Buttons und die desired-temp gar nicht mehr an, sondern stattdessen "Frostschutz" oder "Heizpause".

/edit: @herrmannj: Sorry, deinen Post habe ich irgendwie übersehen. Ich wüßte nicht, dass ich irgendwas gesetzt habe. Ich checke es nachher noch mal. Wie gesagt kann ich das definitiv reproduzieren...

cruser1800

Schau dir mal den Timecounter an! Da wir der Wert laufend umformatiert und zurück gegeben!

VG Lutz

Joker

Hi,

Zitat von: herrmannj am 22 April 2015, 19:25:24
Ne, das stimmt so nicht. Das passiert de facto in realtime.

Der Ablauf ist so: wenn im converter der min unterlaufen wird gibt der converter das erst gar nicht an das device weiter sondern setzt seinerseits sofort einen trigger mit min ab der dazu führt das sofort in sv min eingesetzt wird. Da reden wir über Millisekunden, so schnell das ich nichts davon sehen kann.

Wenn das bei Euch anders ist stimmt was nicht - evtl liegt das dann am widget (obwohl ich jetzt nicht wüsste wie) - oder im git stimmt was nicht. In der js console müsste das aber sichtbar sein - der converter soll den Wert sofort angepasst an sv zurück pushen. Max logischerweise analog,

Ich habe das jetzt nochmal probiert. Also ich habe im GAD-Editor für den Set-Wert beim Converter eingestellt:
NumDirect 17, 25

Jetzt habe ich einfach mal drüber hinaus geklickt, im konkreten Fall von 27 auf 27.5. Im Event-Monitor sieht man dann folgendes:


2015-04-22 20:23:34 CUL_HM Bad.Wandthermostat.Climate desired-temp 25
2015-04-22 20:23:34 CUL_HM Bad.Wandthermostat CMDs_pending
2015-04-22 20:23:34 CUL_HM Bad.Wandthermostat.Climate set_desired-temp 25
2015-04-22 20:23:35 CUL_HM Bad.Wandthermostat CMDs_done


Also es wird die 25 rausgeschickt, nicht die 27.5. in der Javascript-Konsole sehe ich nur das:
basic.float] update 'room_bath-bath_thermostatset': [27] base.js:678
[basic.float] update 'room_bath-bath_thermostatset': [27.5] base.js:678


Im Widget bleibt die 27.5 stehen, und zwar wie es aussieht für immer- zumindest sieht man ja im Event-Monitor dass das Gerät den Wert längst übernommen hat, aber während ich das tippe steht im SV immer noch 27.5.
Jetzt habe ich gerade ein Reload der Seite gemacht, und dann steht die 25 da.

Kann ich noch irgendwas ausprobieren um dem auf die Spur zu kommen?

herrmannj

ja, nimm mal den domotiga driver bitte, (temp cache löschen).

Joker

Ok,
also der verhält sich bei mir im Prinzip genauso, der Treiber scheint nur ein wenig gesprächiger zu sein:

[basic.float] update 'room_bath-bath_thermostatset': [26] base.js:678
[basic.float] update 'room_bath-bath_thermostatset': [26.5] base.js:678
[basic.float] update 'room_bath-bath_thermostatset': [27]  base.js:678
[io.domotiga] sending data: {"cmd":"item","id":"bath_thermostat_set","val":"27.0"} io_domotiga.js:164
[basic.float] update 'room_bath-bath_thermostatset': [27] base.js:678

herrmannj

ok, taucht denn der trigger mit der 25 im eventmonitor auf ? Sicher das Du kein min-interval on-change etc gesetzt hast ?

Joker

Zitat von: herrmannj am 22 April 2015, 21:17:24
ok, taucht denn der trigger mit der 25 im eventmonitor auf ?
Da bin ich mir jetzt nicht ganz sicher was Du genau meinst, daher mal ein Event Log, wo ich von 24 auf 26 Grad hochgeschaltet habe. Also geschickt wird maximal 25.
2015-04-22 21:25:55 fronthemDevice myMac disconnected
2015-04-22 21:25:56 fronthemDevice myMac connected
2015-04-22 21:25:56 fronthemDevice myMac protokoll: 0.1
2015-04-22 21:26:01 CUL_HM Bad.Wandthermostat CMDs_pending
2015-04-22 21:26:01 CUL_HM Bad.Wandthermostat.Climate set_desired-temp 24.5
2015-04-22 21:26:02 CUL_HM Bad.Wandthermostat desired-temp: 24.5
2015-04-22 21:26:02 CUL_HM Bad.Wandthermostat CMDs_done
2015-04-22 21:26:02 CUL_HM Bad.Wandthermostat.Climate desired-temp: 24.5
2015-04-22 21:26:02 CUL_HM Bad.Wandthermostat.Climate T: 20.4 desired: 24.5
2015-04-22 21:26:07 CUL_HM Bad.Wandthermostat CMDs_pending
2015-04-22 21:26:07 CUL_HM Bad.Wandthermostat.Climate set_desired-temp 25.0
2015-04-22 21:26:08 CUL_HM Bad.Wandthermostat desired-temp: 25.0
2015-04-22 21:26:08 CUL_HM Bad.Wandthermostat CMDs_done
2015-04-22 21:26:08 CUL_HM Bad.Wandthermostat.Climate desired-temp: 25.0
2015-04-22 21:26:08 CUL_HM Bad.Wandthermostat.Climate T: 20.4 desired: 25.0
2015-04-22 21:26:13 CUL_HM Bad.Wandthermostat.Climate desired-temp 25
2015-04-22 21:26:13 CUL_HM Bad.Wandthermostat CMDs_pending
2015-04-22 21:26:13 CUL_HM Bad.Wandthermostat.Climate set_desired-temp 25
2015-04-22 21:26:14 CUL_HM Bad.Wandthermostat CMDs_done
2015-04-22 21:26:14 CUL_HM Bad.Wandthermostat.Climate T: 20.4 desired: 25.0
2015-04-22 21:26:19 CUL_HM Bad.Wandthermostat.Climate desired-temp 25
2015-04-22 21:26:19 CUL_HM Bad.Wandthermostat CMDs_pending
2015-04-22 21:26:19 CUL_HM Bad.Wandthermostat.Climate set_desired-temp 25
2015-04-22 21:26:20 CUL_HM Bad.Wandthermostat CMDs_done
2015-04-22 21:26:20 CUL_HM Bad.Wandthermostat.Climate T: 20.4 desired: 25.0


ZitatSicher das Du kein min-interval on-change etc gesetzt hast ?
Ach das meintest Du, sorry hab ich nicht richtig verstanden. Doch tatsächlich, da ist was gesetzt:
attr Bad.Wandthermostat.Climate event-min-interval measured-temp:600,desired-temp:600,humidity:600
attr Bad.Wandthermostat.Climate event-on-change-reading .*
attr Bad.Wandthermostat.Climate event-on-update-reading measured-temp,desired-temp,humidity


In der Tat scheint das auch das Problem zu sein, denn wenn ich das rausnehme wird es zurück gesetzt (allerdings erst mit 3s Verspätung, was ja aber klar ist, da bgewehr ja eingebaut hatte dass die Werte erst 3s nach dem letzten Klick geschickt werden.

Kannst Du das mal kurz erklären? Auch wenn ich das raus nehme, sehe ich im Event Monitor nichts anderes, es werden nur mehr Stati gemeldet, aber der desired-temp Status war ja vorher auch schon dabei?

P.S.: @bgewehr: Habe die Änderung mit der Begrenzung min/max im Widget getestet- funktioniert gut bei mir!

herrmannj

gern, am einfachsten mit Beispiel:

max ist 25°

1. sv per button: soll-temp 27.5°,
2. converter: 27,5° > max ? Ja: dann setze "nur" max (soll-temp 25°)
3. converter erzeugt in fhem ein event: soll-temp 25° (das hat genau nur die Aufgabe die Anzeige in sv "geradezu-rücken")
4. converter bekommt das event von fhem: "soll-temp 25°" - schickt an sv
5. sv: soll-temp 25°


Bei Dir unterdrückt "event-min-interval" das event, dh ab 4 ist Ruhe.

vg
jörg


Joker

Ok, danke für die Erklärung!

Sieht man dieses vom Converter erzeugte Event denn im Monitor? Weil wie gesagt, als ich das min-interval rausgenommen habe, habe ich im Eventlog diesbezüglich auch nichts anderes entdeckt wie im oben geposteten Log... Oder ich gucke falsch  :D