[gelöst] Dummy: setlist pct:on,off - im state soll aber nur die Zahl ohne pct st

Begonnen von heikoh81, 22 März 2020, 18:08:08

Vorheriges Thema - Nächstes Thema

heikoh81

Hallo zusammen,

Für einen Dummy habe ich
attr setList pct:on,off
gesetzt, damit ich auch numerische Werte über Alexa diktieren kann (so wie an verschiedenen Stellen hier vorgeschlagen).

Allerdings erscheint dann in readings state "pct 35".
Alle meine darauf aufbauenden Routinen erwarten aber nur die Zahl 35.

Wie bekomme ich es hin, dass im state nur die Zahl erscheint?

Viele Grüße,
Heiko

juemuc

Hallo,

ich habe dies über ein userReadings "pct" gelöst.

pct {ReadingsNum($name,"state","0")}


Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

rudolfkoenig

@heikoh081: "damit ich auch numerische Werte über Alexa diktieren kann" ist auf dem ersten Blick verwirrend. pct:on,off sagt FHEM, dass die Argumente zu pct on oder off sein sollten. Das wird nicht strikt geprueft, per Kommandozeile (und damit Alexa) werden auch andere Werte zugelassen, aber in FHEMWEB kann man nur on und off auswaehlen. Ich wuerde eher pct:slider,1,1,100 setzen, allerdings habe ich das mit Alexa nicht getestet.

@juemuc: wenn ich dieses Attribut setze, dann kriege ich einen zusaetzlichen Reading pct mit dem Wert 38. Um den Wert in state zu haben, wuerde ich
attr Dummy state {ReadingsNum($name,"state","0")}
setzen

juemuc

Ja, das zusätzliche Reading war gewollt  ;D

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

heikoh81

Danke für eure schnellen Antworten.

Zitatattr Dummy stateFormat {ReadingsNum($name,"state","0")}
ist genau das, was ich benötige.

pct:slider,1,1,100
habe ich übernommen; im state erscheint eine reine Zahl aber nur in Verbindung mit oben genanntem stateFormat.

Viele Grüße,
und bleibt alle gesund,
Heiko

heikoh81

Ich muss den Beitrag nochmal eröffnen.

Ich möchte, dass mein Dummy über Alexa folgende Werte annehmen kann:
Standby On Off 10 20 30
Diese Werte sollen in den state geschrieben werden.
Standby ist eine Zwischenstufe und wird nie über Alexa diktiert, nur "an", "aus", "10 Prozent", "20 Prozent", "30 Prozent".

Problem bei
attr Dummy stateFormat {ReadingsNum($name,"state","0")}
ist, dass zwar die Zahlen tatsächlich nur als Zahlen erscheinen, dafür aber bei
Standby On Off
immer eine 0 erscheint.
Dadurch funktionieren bereits bestehende, nachgelagerte DOIFs nicht mehr.
Da ich gerade 136 Dummies von HA Bridge auf FHEMConnecotr umstelle, ist die Änderung der DOIFs keine Option, vielmehr müssen die Dummies die Werte so darstellen, wie ich das bisher hatte.

Viele Grüße,
Heiko

heikoh81

Wenn ich das DOIF so umbaue:
[Dummy:"10"]
statt
[Dummy] eq "10"
wird das pct in "pct 10" ignoriert, so dass es wie gewünscht funktioniert.

Nun würde mich aber, falls möglich, schon interessieren, ob man das pct im state nicht auch direkt im Dummy wegfiltern kann.

Wenn ich FHEM Connector richtig verstehe, brauche ich in der setList das pct:, damit Alexa überhaupt Zahlen annimmt.
Gebe ich stattdessen "on off 10 20 30" an, akzeptiert Alexa die Zahlen als Befehl nicht.

Viele Grüße,
Heiko

rudolfkoenig

Falls es reicht, das Internal STATE zu setzen, dann sollte Folgendes funktionieren:
attr Dummy stateFormat { my $s=ReadingsVal($name,"state","0");; $s =~ s/pct //;; $s}


Falls auch das Reading state umgebaut werden soll, dann:
attr Dummy userReadings state { my $s=ReadingsVal($name,"state","0");; $s =~ s/pct //;; $s}

heikoh81

Vielen Dank.
Mit diesen beiden attr funktioniert es wie gewünscht.

Viele Grüße,
Heiko

heikoh81

Hallo zusammen,

nun,  1 Jahr später (wow, Tempus fugit), möchte ich im state nicht nur den String "pct" entfernen, sondern auch den String "RGB".
Wie müsste ich diese Ausgangsbasis ergänzen?

attr Dummy stateFormat { my $s=ReadingsVal($name,"state","0");; $s =~ s/pct //;; $s}

Viele Grüße,
Heiko

TomLee

So ?

{ my $s=ReadingsVal($name,"state","0");$s =~ s/pct //;$s =~ s/RGB //;$s}

Aus Interesse kannst du mal ein List von dem Dummy zeigen ?

Gruß

Thomas

heikoh81

Zitat von: TomLee am 15 März 2021, 22:21:08
Aus Interesse kannst du mal ein List von dem Dummy zeigen ?


Internals:
   FUUID      5e07713f-f33f-2a61-8ac4-660474e5586fc0d6
   NAME       AlexaLichtSchlafzimmerBett
   NR         3883
   STATE      off
   TYPE       dummy
   READINGS:
     2021-03-16 18:06:28   state           off
Attributes:
   alexaName  Licht Schlafzimmer Bett
   comment    ohne Farbsteuerung:
setList pct:slider,1,1,100

mit Farbsteuerung:
pct:slider,1,1,100 RGB:colorpicker,RGB

aus stateFormat den String pct entfernen:
{ my $s=ReadingsVal($name,"state","0"); $s =~ s/pct //; $s}
   group      Alexa
   room       Homematic
   setList    pct:slider,1,1,100 RGB:colorpicker,RGB
   sortby     2101
   webCmd     RGB:RGB ff0000:RGB 00ff00:RGB 0000ff:toggle:on:off


Ist ein Dummy für den Alexa Fhem Connector.
Ich versuche, eine RGBW-Lightify-Lampe via zigbee2mqtt anzusteuern.

Wenn die setList nur pct:slider,1,1,100 enthält, dann ist der state des Dummys z.B. "pct 50".
Allerdings habe ich bei meinen heutigen Tests festgestellt, dass "pct 50" gar nicht mehr erscheint, sobald ich die setList um RGB:colorpicker,RGB ergänze.
Wenn ich "Alex, stelle Licht Schlafzimmer Bett auf 50% sage", wird im Dummy auch der RGB-Wert verändert, und nicht mehr der pct-Wert gesetzt.
In der Lampe wird das gar nicht umgesetzt.

Ich habe auch noch die Probleme, dass brightness bis 255 geht, bei Alexa = 100% folglich nicht mal 50% der Leuchtkraft erreicht werden.

Bin momentan etwas ratlos, wie ich das umsetze, dass ich sowohl dimmen als auch die Farbe per Sprache setzen kann.

Viele Grüße,
Heiko

heikoh81

Ich habe für mein Problem im letzten Beitrag ein neues Thema gestartet, da es off topic zu dieser Problemstellung ist.
https://forum.fhem.de/index.php/topic,119632.0.html
Das Umschreiben des state ist gelöst.

justme1968

man kann sich das leben deutlich einfacher machen wenn man nicht versucht alles mögliche in state zu quetschen sonder eigene readings verwendet. dasfür gibt es im dummy readlingList. eigene und richtig benannte readings machen auch die alexa konfiguration einfacher oder sogar überflüssig.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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