FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Holger S am 07 Januar 2022, 00:56:57

Titel: list mit Filter auf userattribut - Ausgabe anders
Beitrag von: Holger S am 07 Januar 2022, 00:56:57
Hallo,

ich habe ein userattr mit mit dem Namen alexaBefehl angelegt und diesem Attribute den Wert "luftfeuchtigkeit.im.bad" verpasst.

Wenn ich ein

list TYPE=.*:FILTER=alexaBefehl=luftfeuchtigkeit.im.bad

ausführe, wird nicht nur Device-Name sondern alles von diesem Device angezeigt (readings, internals, attributes)

Wenn ich "list" mit einem "Standard Atrribute" verwende, wird nur der Name angezeigt, so wie es sein müsste.

Mache ich was falsch oder ist das so gewollt?

Vielen Dank
Titel: Antw:list mit Filter auf userattribut - Ausgabe anders
Beitrag von: MadMax-FHEM am 07 Januar 2022, 01:59:27
Ist es das einzige Device auf das der Filter passt?
Dann denke ich ist das normal...

Leg mal ein anderes Device an (z.B. einen dummy) packe das als EINZIGES in den Raum Test und lass mal:

list room=Test los ;)

Zitat
Wenn ich "list" mit einem "Standard Atrribute" verwende, wird nur der Name angezeigt, so wie es sein müsste.
kommt dann eine Liste mit Devices auf die das passt: ja -> siehe "oben" / -> nein? das ist komisch...

Gruß, Joachim
Titel: Antw:list mit Filter auf userattribut - Ausgabe anders
Beitrag von: Holger S am 07 Januar 2022, 02:12:16
Hallo,
du hast Recht! war also Zufall mit dem userattr.

Muss den Device Namen zu dem diesem Filter als Variable bekommen. Wie mache ich das, wenn der Filter nur eins findet und dann alles ausgegeben wird.

Danke
Titel: Antw:list mit Filter auf userattribut - Ausgabe anders
Beitrag von: MadMax-FHEM am 07 Januar 2022, 02:23:31
Zitat von: Holger S am 07 Januar 2022, 02:12:16
Muss den Device Namen zu dem diesem Filter als Variable bekommen. Wie mache ich das, wenn der Filter nur eins findet und dann alles ausgegeben wird.

devspec2array

Z.B. in einer Sub in myUtils:
  my @devices = devspec2array("room=Test");

Liefert dann ein Array mit passenden Devices (Liste mit NAME) funktioniert auch, wenn es nur einen Treffer gibt... ;)

EDIT: quick und fix mal eine Test-Sub

sub myTest()
{
  my @devices = devspec2array("alexaBefehl=luftfeuchtigkeit.im.bad");
  my $ActDev = "";
 
  foreach $ActDev (@devices)
  {
    Log3(undef, 1, "myTest   ActDev : $ActDev");
  }
}


Was willst du denn genau tun?
Erahne, dass es was mit Alexa zu tun hat?

Evtl. geht was du willst ja auch komplett anders...

Gruß, Joachim
Titel: Antw:list mit Filter auf userattribut - Ausgabe anders
Beitrag von: Holger S am 07 Januar 2022, 02:40:42
Danke für die schnelle Antwort.

Frage per Alexa Sprachfehl zum Beispiel Luftfeuchtigkeit ab und diese wird dann per speak wieder zur Alexa geschickt und mir ansagt. Habe dazu einen Trigger auf auf das Reading voice von meinen Alexas.

elsif ($Eventwert =~ /voice:.luftfeuchtigkeit.im.bad/) {fhem "set $Namewert speak " . ReadingsVal("TempLuftBad","humidity","nicht gefunden") . "Prozent"}

Das wollte ich jetzt für mehrere Luftfeuchtigkeits-Sensoren machen ohne jedes mal eine Auswertung pro Sensor zu machen.

1. suche das device mit dem userattr alexaBefehl (luftfeuchtigkeit.im.bad)
2. ReadingsVal(Mit Namen des gefunden Device)

Grüße


Titel: Antw:list mit Filter auf userattribut - Ausgabe anders
Beitrag von: MadMax-FHEM am 07 Januar 2022, 02:46:03
Es gibt Module die evtl. tun was du willst: TEERKO, Talk2Fhem, Babble, ...

Denen kannst du einfach den Inhalt des voice-Readings als Input geben und dann Devices entsprechend konfigurieren...
...also sollte so machbar sein.

Hab aber damit nur mal etwas mit TEERKO rumgespielt...

Oder doch mal Custom Skill anschauen.
Ja ist etwas "kompliziert" aber eigentlich auch nur, weil Amazon eben die Oberfläche etc. geändert hat und niemand das Wiki nachgezogen hat.
Viele (wie ich auch) haben/hatten einen Custom Skill und nur noch marginal angapsst (wenn überhaupt), da war es egal wie die Oberfläche aussieht, man hat sich schon zurecht gefunden...
...und Neulinge haben sich durchgefragt und es dann geschafft (und leider nicht mitprotokolliert / Wiki angepsst :-\ ) oder (entnervt) aufgegeben...
Mit dem Custom Skill kannst du alles machen :)

EDIT:
Zitat von: Holger S am 07 Januar 2022, 02:40:42
1. suche das device mit dem userattr alexaBefehl (luftfeuchtigkeit.im.bad)
2. ReadingsVal(Mit Namen des gefunden Device)
Für 1. habe ich oben mal quick&flink einen möglichen Beispielcode ergänzt... Damit sollte 2. ja einfach machbar sein 8)

Na dann viel Erfolg!

Gruß, Joachim
Titel: Antw:list mit Filter auf userattribut - Ausgabe anders
Beitrag von: Holger S am 07 Januar 2022, 18:25:54
Hallo,
danke für die Antwort. Bleibe bei meiner Methode.
Habe es auch hin bekommen.

Kann man mit devspec2array auch den Inhalt (contain) eines Attributes Filtern?

Inhalt vom Attribut alexaBefehl ist:   
"voice: luftfeuchtigkeit im bad"



Zur Zeit ist der Filter so:

my @geraet=devspec2array("alexaBefehl=$Eventwert");

Damit wird das Gerät gefunden wenn der Attribut-Wert eindeutig ist. Kann man auch einen "beinhaltet" String im Attribut-Wert Filtern?
   
Inhalt vom Attribut alexaBefehl ist:
"voice: luftfeuchtigkeit im bad,voice: temperature im bad"

$Eventwert ist:
"voice: luftfeuchtigkeit im bad"

my @geraet=devspec2array("alexaBefehl???????$Eventwert")

Das funktioniert leider nicht:

my @geraet=devspec2array("alexaBefehl=/*$Eventwert/*");

Danke
Hoffe habe es richtig erklärt.

Titel: Antw:list mit Filter auf userattribut - Ausgabe anders
Beitrag von: Holger S am 07 Januar 2022, 22:50:16
Hat sich erledigt:
so gelöst:

my @geraet=devspec2array("TYPE=.*:FILTER=alexaBefehl=.*$Eventwert.*");