Presence und iPhone / Android

Begonnen von JoWiemann, 07 September 2017, 11:58:59

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Zitat von: en-trust am 03 März 2020, 11:41:56
Die Funktion stammt aus... und wurde in #226 hier gepostet.

https://wiki.fhem.de/wiki/FRITZBOX#Anwesenheitserkennung_.C3.BCber_mehrere_Fritzboxen_oder_AVM_Repeater_und_Fritzbox

Aber auch dort wurde bereits darauf aufmerksam gemacht, dass es NICHT um das HIER behandelte Script etc. geht ;)

https://forum.fhem.de/index.php/topic,76342.msg867803.html#msg867803

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

bbg41crew

Ich hatte folgendes Problem:

der Aufruf der presence.sh mit folgendem Befehl

./presence.sh x.x.x.x x:x:x:x:x

hat bei mir in Putty folgende Fehlermeldung ausgegeben:

/bin/bash^M bad interpreter: No such file or directory

Lösung des Problems war folgende Befehlszeile

sed -i -e 's/\r$//' presence.sh


Hintergrund fand ich auf askubuntu.com

ZitatThe ^M is a carriage return character. Linux uses the line feed character to mark the end of a line, whereas Windows uses the two-character sequence CR LF. Your file has Windows line endings, which is confusing Linux.

Vielleicht hilft das dem ein oder anderen.



MadMax-FHEM

Wie so oft: FALSCHER Editor!
(oder falscher "Weg" des "Holens")

Ein Linux Script ist halt ein Linux Script und KEINE Windows Text Datei ;-)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

bbg41crew

Ein Schicksal das uns Hobby-Code-Zusammenkopierern leider nicht erspart bleibt... ;-). Herzliche Grüße, Dominik

MadMax-FHEM

Zitat von: bbg41crew am 20 März 2020, 10:17:31
Ein Schicksal das uns Hobby-Code-Zusammenkopierern leider nicht erspart bleibt... ;-). Herzliche Grüße, Dominik

Dann empfielt sich drauf zu achten und evtl. das hier zu nutzen/parat zu haben ;) : http://dos2unix.sourceforge.net/

Weil auch das "sed-Zeugs" ist eher schwer für einen "Linux-Unkundigen"...
...und angewendet auf die falsche Datei (am Ende noch mit einem [kleinen] "Verschreibsler") kann schon mal ganz arg was schief gehen...

Viel Spaß noch! Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Wernieman

Dafür gibt es seit Ewigkeiten schon fertige Programme:
dos2unix
unix2dos
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

bbg41crew

Lieben Dank - DOS2UNIX direkt installiert. Jetzt bringt mich allerdings ein anderes Problem zum verzweifeln:

Aufruf des presence.sh scripts mit folgenden Parametern liefert einwandfrei die "1":

./presence.sh x.x.x.x x:x:x:x:x:x

Leider liefert das PRESENCE modul mit folgenden Parametern immer ein absent:

function {CheckPresence("x.x.x.x","x:x:x:x:x:x")} 60 60

Ein Aufruf in der FHEM-Befehlszeile mit folgendem Code liefert ein "0" zurück was die absent-Meldung erklären würde:

{CheckPresence("x.x.x.x","x:x:x:x:x:x")}

Berechtigungen gemäß ls -la:

-rwxrwxrwx  1 fhem  dialout   1387 Mär 21 13:03 presence.sh
-rwxrwxrwx  1 fhem  dialout   3642 Mär 21 13:12 99_myUtils.pm


Berechtigungen für FHEM wie folgt:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
fhem ALL=(ALL) NOPASSWD: /opt/fhem/FHEM/backup.sh, /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan, /usr/sbin/hping3


Wenn ich die Berechtigung für FHEM wie folgt umsetze, funktioniert das Script im FHEM korrekt:

fhem    ALL=(ALL) NOPASSWD: ALL

Ich bin wirklich relativ ratlos warum das Skript mit den beschränkten Rechten nicht funktioniert - hat einer von euch eine Idee?

Viele Grüße,

Dominik


Wernieman

Zitat{CheckPresence("x.x.x.x","x:x:x:x:x:x")}
Ruft das wirklih Dein Script auf? Kannst Du bitte uns mal den Inhalt von CheckPresence geben?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

bbg41crew

Sehr gerne:

CheckPresence ist in meiner 99_myUtils.pm hinterlegt mit folgendem Code:

sub CheckPresence($$)
# Makes sure that PRESENCE works also with Iphone and other devices that go to deep sleep

{
  my ($ip,$mac)= @_;
  my $ret = "";

  $mac = lc($mac);

  $ret = qx( /opt/fhem/FHEM/presence.sh $ip $mac);

  $ret =~ s,[\r\n]*,,g;        # remove CR from return-string

  if ( $ret != 0 && $ret != 1) {
    Log3 "CheckPresence", 2, "CheckPresence: $ret";
    return 0;
  }

  return $ret;

}


Der Code an sich funktioniert auch wenn ich FHEM volle Berechtigung gebe. Nur wenn ich den Code einschränke ergibt sich das Problem.

Wernieman

Da Du (gans) oben dein Script indirekt aufrufst, was passiert bei direktem Aufruf?
/opt/fhem/FHEM/presence.sh $ip $mac
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

bbg41crew

Funktioniert und liefert "1" zurück

nickl@nini-nuc:/opt/fhem/FHEM$ /opt/fhem/FHEM/presence.sh x.x.x.x x:x:x:x:x:x
1

Wernieman

Probiere mal:
fhem   ALL = NOPASSWD: /opt/fhem/FHEM/backup.sh, /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan, /usr/sbin/hping3
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

bbg41crew

Vielen Dank - habe ich jetzt mal angepasst wenngleich ich mich letztlich für eine andere Variante entschieden habe. Hintergrund ist, dass bei mir leider der Deep Sleep Mode nicht zuverlässig verhindert wurde.

Meine aktuelle Lösung ist:

IFTTT checkt Geofence und sendet via Telegram absent oder present an FHEM.

Bin mal gespannt ob das zuverlässiger funktioniert.

is2late

#284
Hi,

bekomme folgende Fehlermeldung:
sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
sudo: /etc/sudoers.d/010_fhem-nopasswd gehört UID 999, sollte UID 0 gehören]


Ich bin nach der Anleitung in #176 vorgegangen (Presence.docx), weil sie mich Anfänger so schön geleitet hat.
Der Inhalt der Datei sudoers.d/010_fhem-nopasswd:

fhem ALL = NOPASSWD: /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan, /usr/sbin/hping3

Hier die Rechte:
-r--r----- 1 root root     36 Apr 29  2019 010_at-export
-r--r----- 1 fhem dialout 111 Apr 29 19:10 010_fhem-nopasswd
-r--r----- 1 root root     27 Okt 18  2016 010_pi-nopasswd


Das Problem wurde wohl weiter oben (Antwort #82) schon besprochen, aber leider verstehe ich die Lösung (#83) nicht.
Kann mir bitte jemand auf die Sprünge helfen?

LG Ingo

PS: Plötzlich ist auch meine Lupusec-Alarmanlage nicht mehr erreichbar.... Parallelität oder Folge?
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox