WhoIsAtHome Status funktioniert nicht

Begonnen von Dirk23, 23 Januar 2013, 22:16:55

Vorheriges Thema - Nächstes Thema

Dirk23

Hallo,

mein erster Post im Forum. Ich nutze schon länger FHEM auf einer FB7390 mit aktueller Firmware (84.05.50) und wollte den WohIsAtHome Status Abfragen. Trotz das ich den Namen meines iPhone geändert habe auf iPhoneDirk (ohne "-" oder "_" oder " ") bleibt der Status ewig auf Abwesend. Das "manuelle" ausführen des FBWlanStat gibt keine Ausgabe und die letzte Änderung des "state" ist Tage her!
Meine fhem.cfg sieht so aus:

define Dirk dummy
attr Dirk icon icoHouse.png
attr Dirk room Homestatus
attr Dirk setList Anwesend Abwesend
define WLAN1 notify WLAN1 {FBWlanStat('DirksiPhone', "Dirk")}
define search_for_MyWLANDeviceName1 at +*00:00:30 trigger WLAN1

Die FBWlanStat Routine habe ich Copy&Paste in die 99_Utils.pm reingepackt und diese sieht so aus

sub
FBWlanStat($$)
{
my ($net_device1)=@_[0];
$net_device1 = $net_device1."\n";
my $number=0;
my $status=0;
my $net_device="";
my $attendance="";
while($number <= 150){$net_device=qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/name);
  if($net_device eq $net_device1){
  $status=qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/active);
  last;}$number++;}
       if ($status == 1) {$attendance="Anwesend";}else{$attendance="Abwesend";}
       if(Value("@_[1]") ne $attendance){
       fhem "set @_[1] $attendance"}}


Ich habe schon einiges gelesen, u.a. das die Prozedur nur funktioniert, wenn fhem als Root ausgeführt wird, aber bei mir läuft es als boxuser99.

Alle bisherigen Anleitungen fhem als Root auszuführen haben nicht geklappt:

chown Root startfhem

oder in der etc/passwd den fhem Eintrag löschen und rebooten.

Hat alles nicht geholfen.

Wenn ich mit nem Terminal zur Fritzbox verbinde kann ich mit den Befehl:

/usr/bin/ctlmgr_ctl r landevice settings/landevice1/name

/usr/bin/ctlmgr_ctl r landevice settings/landevice1/activ

einwandfrei den Namen und Status der Geräte abfragen, wobei "landevice1" tatsächlich mein iPhone ist und als "iPhoneDirk" ausgegeben wird mit active=1 wenn ich im Netz bin.

Hat vielleicht noch jemand eine Idee was ich tun kann? Gerne spiele ich auch das fhem Image neu auf die Fritzbox....


Schon mal danke im voraus

Euer Dirk
Den Beitrag einem Moderator melden

Dirk23

So, nun habe ich es tatsächlich hinbekommen. Mein Homestatus funktioniert. Es war denkbar einfach. Ich habe das startfhem Script angepasst. Die Datei ließ sich einfach über die Fritz.Nas Weboberfläche herunterladen und dann Editieren:


#!/bin/sh

home=/var/InternerSpeicher/fhem

cd $home

trap "" SIGHUP
modprobe cdc_acm
modprobe ftdi_sio
sleep 2

ln -sf $home/FHEM/fhemcmd.sh /var/fhemcmd

PATH=$home:$PATH
export PATH

export LD_LIBRARY_PATH=$home/lib
export PERL5LIB=$home/lib/perl5/site_perl/5.12.2/mips-linux:$home/lib/perl5/site_perl/5.12.2:$home/lib/perl5/5.12.2/mips-linux:$home/lib/perl5/5.12.2

# add user fhem with uid of boxusr80/boxusr99 (== ftpuser)
# Comment/delete everything between START and END to run FHEM as root

## START:fhem-user
id fhem > /dev/null 2>&1
if test "$?" -ne "0"; then
  grep -q 1099 /etc/passwd;
  if test $? -eq "0"; then
    echo "fhem:any:1099:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
  else
    echo "fhem:any:1080:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
  fi
  chown -R fhem FHEM docs log www
  chown fhem . *
  chown root dfu-programmer    
  chmod u+s dfu-programmer
fi
## END:fhem-user

perl fhem.pl fhem.cfg



Interessant dabei ist der Bereich in der die Dateien mit chown dem User fhem übergeben werden. Diesen habe ich völlig auskommentiert und ein paar Zeilen selbst hinzugefügt, so das meine startfhem jetzt so aussieht:

## START:fhem-user
#id fhem > /dev/null 2>&1
#if test "$?" -ne "0"; then
#  grep -q 1099 /etc/passwd;
#  if test $? -eq "0"; then
#    echo "fhem:any:1099:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
#  else
#    echo "fhem:any:1080:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
#  fi
  chown -R fhem FHEM docs log www
  chown root . *
  chown root dfu-programmer    
  chmod u+s dfu-programmer
  chmod root startfhem
#fi
## END:fhem-user
[/i][/b]

Heißt also das die Dateien nicht mehr dem User fhem zugeordnet werden sondern immer root. Nach einem Neustart der Box war mein Homestatus sofort "Anwesend" und nach dem abschalten des WLAN hat er auch auf Abwesend gewechselt.

Ich hoffe, das ich hiermit anderen Usern im Forum helfen konnte.

Euer

Dirk

Brice

Nach dem Update auf iOS 6.1 funktioniert der WhoIsAtHome Status bei mir nicht mehr. Kann das jemand bestätigen?
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Brice

Das iPhone wurde nach dem Update auf iOS 6.1 mit einer weiteren IP nochmals in der Fritzbox angelegt. Den doppelte Eintrag gelöscht und es funktioniert wieder.
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080