Batterie-Icon anzeigen (s. Bilder)

Begonnen von Invers, 21 Januar 2014, 23:27:21

Vorheriges Thema - Nächstes Thema

justme1968

im wiki war noch mehr doppelt. habe korrigiert.

das sollte aber auch nicht wirklich ein problem machen. die readingsGroup hält das alles jeweils für den namen eines devices und da es das aber ziemlich sicher nicht gibt wird nichts damit gemacht.

kurz dahinter ...<%sani_heating>, < >,<Act>,<Soll>... war noch ein leerzeichen zu viel.
                                                  ^
du kannst in der sub vor dem return noch einLog 3, $ret;einfügen. dann steht im log was für kommandos generiert werden.

ansonsten sind die pfeile nur aktiv wenn die neue temperatur >=18 und <=24 grad ist.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Paul

Klappt doch alles. Eine Frage habe ich als Laie weshalb kann ich nicht das File Icon farbig darstellen ?

Hatte in der myUtils probiert $icon = "control_arrow_down"; in $icon = "Control_arrow_down@red"; zu ändern, bekomme aber beim abspeichern eine Fehlermeldung.

Der Gedanke war bei drücken Farbwechsel und bei "Eingang" der Solltemperatur wieder weiß. Damit man vor Umstellung sehen kann das eine Aktion ansteht.

Da ich aber kein Programierer bin weiß ich nicht ob das überhaupt darstellbar ist.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

justme1968

versuch es mal mit$icon = "Control_arrow_down\@red";

wenn die die farben dynamisch machen willst musst du zusätzlich zu desired-temperature noch measured-temp auslesen und beide vergleichen.

ich hab aber keine FHT und kann es nicht selber probieren weil ich nicht weiss wie die dinger reagieren.

das gilt auch für das zwischendurch anzeigen der eingestellten temperatur. vermutlich muss man dazu ein extra reading anlegen und dann dieses auch noch anzeigen so lange es da ist und sobald desired und dieses gleich sind es wieder löschen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Invers

Falls du die Sache mit der Gradzahl in der Überschrift meinst, habe ich eine theoretische Idee.
Desired  Temp ist ja bekannt und wenn man klickt, wird ja dazu ein wert + oder - gerechnet. Dieser errechnete Wert kann angezeigt werden und bleibt da einfach so lange stehen, bis etwas anderes geklickt wird.
5 Grad mehr bedeutet halt 5 mal + klicken und dann die entsprechende Gradzahl dazu addieren zur Solltemperatur. Das kann dann nach 6 Minuten wieder gelöscht werden, weil dann der FHT selber seine aktualisierte Anzeige zur Verfügung stellt.
Nun weiss ich nur nicht, wie man das programmiert.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

ja. so in etwa. ich weiss nur nicht genau wie das mit der desired-temp genau funktioniert.

was genau passiert bei einem set desired-temp? der wert wird nur gesendet und das reading bleibt erst mal unverändert und ändert sich erst wenn eine antwort kommt? wie lange dauert das?

die reihenfolge und das timing sind wichtig um es zum laufen zu bekommen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Paul

#50
Hallo Andre, danke ja dein Code  mit dem \. Klappt.
Nur leider nicht so wie ich es mir vorgestellt habe, sondern alle Pfeile werden sofort eingefärbt und nicht erst dann wenn einer gedrückt wird (und nur dann der eine)

Hallo Invers, leider klappt das nicht wenn man z.B. die Temperatur um 3 Grad erhöhen will 3mal auf den Pfeil zu drücken. Du erhöhst die desired-Temperatur +1 bei drücken. Beim zweiten drücken hat sich die desired-Temperatur aber nicht geändert also bleibt es bei desired-Temperatur + 1.

gerade getestet

3mal gedrückt

Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Invers

Das dauert bei mir im Schnitt 5 Minuten.
Ich glaube, dass die reihenfolge nicht so die Rolle spielt. Ich habe auf den Pfeil 5mal geklickt und bekam nach etwa 5 Minuten 5 Grad mehr angezeigt. Man kann also getrost einfach zur desired-temp dazuaddieren und anzeigen.
Wenn man dann die Anzeige nach etwa 6 Minuten wieder löscht, ist man auf der sicheren Seite. Vielleicht könnte man, wenn man Perfektionist ist, diese 6 Minuten auch einstellbar machen, dann könnte das ja jeder anpassen, wie er es braucht.

Variante 2 wäre, man löscht die Anzeige nicht wieder, dann muss man nur das Klicken "entprellen", also alle Pausen zwischen den Klicks auf 0,5 Sekunden begrenzen. Klickt einer langsamer, wird für 6 Minuten gesperrt.
Aber darüber müsste man nochmal nachdenken, ist noch etwas unausgegoren. Man muss aber jeden Klick sofort zählen und anzeigen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

#52
deswegen die frage wie genau das ding reagiert.

wenn es diese verzögerung gibt braucht man noch ein extra reading zum zählen.

damit geht dann auch das zeitweise einblenden.

also z.b. zum zählen target-temp auslesen und damit rechnen und mit setreading schreiben. zusätzlich desired-temp setzen. target-temp löschen sobald desired-temp kommt und gleich ist.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Invers

@Paul
Hatte ich gestern auch probiert. War mir eigentlich sicher, dass die Klicks geschickt werden. Dann muss ich das nochmal probieren und den Plan ändern. Dann würde das ja mit den Pfeilen gar nicht gehen. Man müsste ja dann bei einer Erhöhung um 3 Grad mindestens 15 Minuten investieren. Dann schicke ich lieber meine Frau zum Hochdrehen.LOL
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

@justme1968
Ja, das ist genial. Weil ich noch nicht so viel Erfahrung habe, hatte ich an die Readings nicht gedacht. Dann könnte man ja sogar vernünftig rechnen, egal, ob der Pfeil um 0,5 oder 20 Grad erhöht. Man könnte immer zuaddieren.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

siehe edit oben. mit der änderung gehen auch die pfeile wieder.

ich schau mir das morgen an.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Paul

Also bei mir klappt das nicht mit 3mal drücken = + 3 Grad.

Bin leider kein Programierer , mE bräuchte man noch eine Variable=desired-Temp, die bei drücken +1 gesetzt wird, und nach einer gewissen Zeit wieder desired-Temp annimmt? Schön wäre es auch wenn bei drücken eines Pfeils sich die Farbe ändert bis sich die Desired-Temp am FHT eingestellt hat.
Super wäre Variable - desired-Temp < 3 gelb Variable - desired-Temp >= 3 rot.

Ich weiß wunschdenken
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Invers

@Paul
Ja, du hast Recht, Ich habe ja gestern viel probiert und geklickt, da weiss man nicht mehr so genau.
Dann geht das so gar nicht.


@All
Neuer Gedankengänge.
Man schreibt die Klicks in eine Variable. Ist die Pause zwischen den Klicks länger als 30 Sekunden, sperrt man die Pfeile für 5 Minuten und rechnet die Variable mit der Solltemp zusammen und schickt sie dann an den FHT und schreibt den neuen errechneten Sollwert in die Überschrift. Nach Ablauf der Sperrfrist wird die Überschrift gelöscht, was gleichzeitig den Vorteil hat, dass der Nutzer weiss, wann er wieder klicken kann. Variable leeren und fertig.

Das scheint mir in der Programmierung schon sehr komplex und ich weiss nicht, ob es sich lohnt.
Wenn die Pfeile allerdings wirklich nur um den Wert eines Klicks erhöhen können, was ja bewiesen ist, dann sind sie leider nicht wirklich brauchbar. Eine Werteliste aber auch nicht wirklich, weil dadurch die Anzeige immer breiter wird. Womit wir wieder bei der Auswahlliste wären. :-)
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

lass mich das morgen mal probieren. ich glaube es ist einfacher als es aussieht.

gute nacht :)
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

probier mal die angehängte version. die änderungen sind eigentlich recht klein. was jetzt geht:

- die pfeile sind blau bzw. rot wenn sie innerhalb des wertebereichs sind
- zwischen den pfeilen wird die gerade eingestellte temperatur gezeigt
- drei sekunden nach dem letzten klick wird der eingestellte wert gesendet und die zahl zwischen den pfeilen verschwindet

ich schau mal ob ich die zahl nach dem senden bis zum empfang der eingestellten temperatur in einer anderen farbe anzeigen kann.

der teil für die pfeile in der readingGroup definition muss so ausschauen:...,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired.*>,desired.new,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired.*>,...

und das muss auch noch dazu:attr <rg> valueStyle {($VALUE eq "00")?'style="visibility:hidden"':''}

und das muss in 99_myUtils:sub
myUtils_HeizungUpDown($$)
{
  my($DEVICE,$CMD) = @_;

  my $icon = $CMD;
  my $VALUE = ReadingsVal($DEVICE,"desired-new","20" );
  $VALUE = ReadingsVal($DEVICE,"desired-temp","20" ) if( !$VALUE || $VALUE == 0 );
  my $link;

  if( $CMD eq "up" ) {
    $icon = "control_arrow_upward";
    $VALUE += 1;

    if( $VALUE <= 24 ) {
      $icon .= "\@red";
      $link = "setreading $DEVICE desired-new $VALUE";
    }
  } elsif( $CMD eq "down" ) {
    $icon = "control_arrow_downward";
    $VALUE -= 1;

    if( $VALUE >= 18 ) {
      $icon .= "\@blue";
      $link = "setreading $DEVICE desired-new $VALUE";
    }
  }

  my $notify = "notifyHeizungUpDown";
  if( !defined($defs{$notify}) ) {
    CommandDefine(undef, "$notify notify .*:desired-new.* { myUtils_HeizungUpDownNotify(\$NAME,\$EVTPART1); }"  );
  }

  my $ret = "%$icon";
  $ret .= "%$link" if( $link );

  return $ret;
}
sub
myUtils_HeizungUpDownNotify($$)
{
  my($DEVICE,$VALUE) = @_;

  return if( $VALUE == 0 );

  my $at = "triggerHeizungUpDown_$DEVICE";
  CommandDelete(undef, $at) if( defined($defs{$at}) );
  CommandDefine(undef, "$at at +00:00:03 {my \$v = ReadingsVal(\"$DEVICE\",\"desired-new\",undef);fhem(\"set $DEVICE desired-temp \$v\") if( \$v ); fhem(\"setreading $DEVICE desired-new 00\");}" );

  return undef;
}


im angehängten file steht noch mal das gleiche damit beim kopieren nichts schief geht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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