Hi,
ich programmiere gerade eine Anwesenheitskontrolle (mittels DOIF wird aus den unifi-modul das last_seen ausgewertet), die Stati funktionieren alle perfekt. Die Stati werden einem Dummy zugewiesen, die als userattr noch "name" besitzen, die die Kurzform des Namens hat.
ein presence-dummy heißt z.B. Person.Friedhelm, hat als userattr noch name=Friedhelm, damit ich das später schick machen kann.
Nun möchte ich das ganze in meinen TelegramBot einbauen, dazu habe ich einen Befehl "/personen" definiert und so implementiert:
if($msgText eq "/personen"){
my @persons = devspec2array("Person.*");
my $msg = "Personen:\n";
if (@persons > 0 and defined($defs{$persons[0]})){
foreach (@persons){
my $presence = InternalVal($_, "STATE", undef);
my $id = InternalVal($_, "NAME", undef);
my $person = ReadingsVal($_, "name", "nobody");
$msg .= "$person ($id) is $presence\n";;
}
}
fhem_bot_response("$msg\n","/hauptmenue");
}
als Antwort bekomme ich immer:
nobody (Person.Friedhelm) is present (oder absent).
wieso klappt das auslesen des userattr nicht?
hier mal ein Dump meines dummys:
defmod Person.Friedhelm dummy
attr Person.Friedhelm userattr name
attr Person.Friedhelm name Friedhelm
attr Person.Friedhelm room Personen
oder hab ich irgendwo ein Denkfehler?
vielen Dank,
Friedhelm
Hallo Friedhelm,
wie der Name schon sagt ->
AttrVal für attr
ReadingsVal für Readings
;D
Gruß Otto
Kaum macht man's richtig, funktionierts .. ;D
Ich überleg, ob ich dafür nicht einen wrapper baue, das ist ja furchtbar nervig, 3 Methoden, um "eigenschaften" von "sachen" auszulesen ..
Dank dir!
Sind ja unterschiedliche "Sachen" ;-) Setzt du auf "gelöst"? (Subject des ersten Posts editieren und [Gelöst] vorne dran schreiben)
so unterschiedlich kann man es sehen - ich finde es logisch. Und ich habe es nicht gemacht ;D