Ab / anwesendheitserkennung via Bluetooth

Begonnen von Anno74, 27 Dezember 2017, 19:24:36

Vorheriges Thema - Nächstes Thema

Anno74

Hallo,

ich habe mir nun einen Rasperyy Pi3 zugelegt und möchte diesen nun in Betrieb nehmen. Ich bin in Sachen Raspberry... Fhem etc. ein Neuling und für mich ist alles böhmische Dörfer. Von daher verzeiht mir bitte meine vielleicht ziemlich simplen Fragen. Ich habe mir natürlich den Beitrag über erste Schritte durchgelesen, aber irgendwie blick ich da nicht richtig durch.

Aber nun zum Thema.

Hardware:

Raspberry Pi 3
Gigaset G-Tag
Hausautomatisierung -> Loxone in Verbindung mit KNX & Dali.

Auf dem RPI ist Debian installiert und FHEM. Ich möchte nun erreichen das wenn ich Zu Hause bin, die Anlage einiges einschaltet und wenn ich halt die Wohnung verlasse, das dann einiges abgeschalten wird. In der Hausautomatisierung klappt das bereits. Ich bräuchte
halt nun einen Impuls oder ein Signal 1 oder 0 je nachdem ob ich daheim bin oder nicht. Dieser Impuls soll halt kommen wenn sich der GigaSet G Tag anmeldet oder abmeldet. Sprich wenn er über Bluetooth erreichbar ist oder nicht.

Dazu habe ich in FHEM die Datei "99-myUtils.pm" erstellt und folgenden Code hinten angehangen.

sub UDP_Msg($$$)
{
my ($dest,$port,$cmd) = @_;
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => $port,
PeerAddr => $dest
) or die "Could not create socket: $!\n";
$sock->send($cmd) or die "Send error: $!\n";
return "send $cmd";
}

Laut Google soll die Routine einen Befehl an Loxone senden, den ich dann dort abfragen kann.
Aber wie mache ich nun die Anwesendheitserkennung und stosse Fhem an dies an Loxone zu senden?

Im Internet findet man viele Ansätze dazu, aber irgendwie blicke ich da nicht durch :-(
Könnte mir bitte das mal jemand erklären?

Ich wäre sehr dankbar.
Liebe Grüße Alex

Amenophis86

Hallo Anno74 und willkommen im Forum.

Ich bitte dich Codezeilen immer in Codetags schreiben (das #-Symbol bei den Smilies). Bezüglich deiner Frage mit G-Tags hast du dir mal das Wiki zur Anwesenheit angesehen? Da gibt es viele Beispiele. Ansonsten ist es immer gut die betroffenen Geräte mittels des list-Befehls im Beitrag beizufügen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

dev0

Im gezeigten Code fehlt noch das Schließen des Socket und die() ist auch keine gute Idee.

Anno74

Zitat von: dev0 am 27 Dezember 2017, 20:01:52
Im gezeigten Code fehlt noch das Schließen des Socket und die() ist auch keine gute Idee.

Okay, das sehe ich jetzt auch. Da war der Beitrag im Netz Fehlerhaft :-/ Wie ich das ändern kann, das weiss ich :-)

Danke

Anno74

Zitat von: Amenophis86 am 27 Dezember 2017, 19:31:37
Hallo Anno74 und willkommen im Forum.

Ich bitte dich Codezeilen immer in Codetags schreiben (das #-Symbol bei den Smilies). Bezüglich deiner Frage mit G-Tags hast du dir mal das Wiki zur Anwesenheit angesehen? Da gibt es viele Beispiele. Ansonsten ist es immer gut die betroffenen Geräte mittels des list-Befehls im Beitrag beizufügen.

Hallo,

Okay, das mache ich das nächste mal :-)

Den Beitrag im Wiki hatte ich gesehen. Aber die reden da von mehreren Möglichkeiten. Ich habe mir dann den Artikel mit dem Presence Modul näher angeschaut. Aber dort wird halt nicht erklärt wo ich wie die Define Anweisungen hinschreiben muss (sind ja eigentlich nur 2 Stück). Versuche ich die Fhem.cfg zu öffnen bekomme ich folgende Fehlermeldung

You can enable saving this file by setting the editConfig attribute, but read the documentation first for the side effects.

Und auch blicke ich nicht durch, wie wenn zum Bsp. Fhem dann die Anwesendheit mitbekommt, er dann die Daten nach Loxone per UDP sendet :-/ Dazu müsste ja die Routine in der 99_myUtils.pm angestubst werden.

Kannst Du mir da mal bitte ein wenig Licht ins Dunkel bringen? Wie gesagt, ich habe noch nie etwas mit Perl, Debian, RPI, etc. zu tun gehabt. Ich schau da drauf wie ein Kleinkind auf ein Riesen Lolli

Aber BTW.... Ich sehe hier die Smileys und kein #. Wie geht das genau mit den Code einfügen?

Liebe Grüsse Alex




Amenophis86

Nicht in die cfg schreiben, dafür gibt es keinen Grund. All deine Fragen zu define und wie man etwas anlegt werden im Anfänger PDF beschrieben. Auch deine restlichen Fragen lass darauf schließen, dass du noch nicht verstanden hast, was Events / Trigger / Device etc sind. Daher bitte nochmals die Grundlagen ordentlich studieren damit das auch klappt. Da müsste ich wirklich bei Adam und Eva anfangen und dafür gibt es das Einsteiger PDF, dass ich das nicht machen muss :) Ich rate mal, dass du deine Sachen von meintechblog hast, so wie es sich liest.

Über den Smilies gibt es verschieden Buttons und auch einen mit einer #. Direkt links neben der Sprechblase und rechts neben der Tabelle.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Anno74

Hallo,

naja da kann ich ja lange probieren :-/ Das Anfänger PDF habe ich auch schon einmal auf gehabt und zu meiner Schande nur überflogen. Aber dort war beschrieben wie ich Devices in Räume etc. anlege. Aber das brauch ich doch meines Erachtens nicht, da ich ja kein Gerät ansprechen möchte sondern nur eine UDP Nachricht an Loxone senden. Aber ich seh schon, ich muss noch viel lernen und das PDF mal studieren. Aber derzeit habe ich Probleme mit dem Installieren von lepresenced. Erstmal muss das funktionieren, danach kann ich mich weiter nach vorn arbeiten :-)

Das ich gewisse Dinge von meintechblog habe, das stimmt. Ich hoffe nur das ich bis jetzt alles richtig gemacht habe :-/ Ist halt alles neu und für mich ziemlich kompliziert :-(

Das mit der'# habe ich nun gesehen. Irgendwie sah ich den Wald vor lauter Bäumen nicht :-/

LG Alex

Anno74

Hallo,

also ich habe mir gestern das Tutorial mal näher geführt. So einigermassen habe ich das verstanden. Auch habe ich mir den Wiki Artikel durchgelesen und habe es nun einmal probiert. Folgendes habe ich gemacht

Ein Device angelegt, wie folgt ( Nicht wundern Testweise habe ich die Adresse vom Handy genommen. Wird später ersetzt gegen die vom G Tag.)



define MeinGtAG PRESENCE lan-bluetooth xx:xx:xx:xx:xx:xx IPvomRPI:5333    120



Danach habe ich das Device einen Raum zugeordnet.
Nach einem Klick auf dem Eventmonitor bekomme ich folgendes angezeigt


2017-12-28 08:52:04 PRESENCE MeinHandy presence: absent
2017-12-28 08:52:04 PRESENCE MeinHandy daemon: lepresenced V0.83
2017-12-28 08:52:04 PRESENCE MeinHandy model: lan-lepresenced
2017-12-28 08:52:04 PRESENCE MeinHandy rssi: unreachable
2017-12-28 08:52:34 PRESENCE MeinHandy absent
2017-12-28 08:52:34 PRESENCE MeinHandy presence: absent
2017-12-28 08:52:34 PRESENCE MeinHandy daemon: lepresenced V0.83
2017-12-28 08:52:34 PRESENCE MeinHandy model: lan-lepresenced
2017-12-28 08:52:34 PRESENCE MeinHandy rssi: unreachable
2017-12-28 08:53:04 PRESENCE MeinHandy absent
2017-12-28 08:53:04 PRESENCE MeinHandy presence: absent
2017-12-28 08:53:04 PRESENCE MeinHandy daemon: lepresenced V0.83
2017-12-28 08:53:04 PRESENCE MeinHandy model: lan-lepresenced
2017-12-28 08:53:04 PRESENCE MeinHandy rssi: unreachable
2017-12-28 08:53:34 PRESENCE MeinHandy absent
2017-12-28 08:53:34 PRESENCE MeinHandy presence: absent
2017-12-28 08:53:34 PRESENCE MeinHandy daemon: lepresenced V0.83
2017-12-28 08:53:34 PRESENCE MeinHandy model: lan-lepresenced
2017-12-28 08:53:34 PRESENCE MeinHandy rssi: unreachable


Soweit ich das verstanden habe, sagt mir das ja, das dass Handy nicht erreichbar ist.
Muss ich noch etwas anderes irgendwo einstellen? Denn scheinbar macht FHem ja den Scan nach Bluetooth Geräten!
Auch ist mir noch ein Rätsel ( Was aber auch nicht in dem Tutorial erklärt war, wie ich Fhem nun anstosse, die Sub UDP_Msg in der 99_myUtils.pm anzustossen. Irgendwie muss ich das doch über das Notify machen?

Kann mir jemand mal bitte einen Denkanstoss geben?

Liebe Grüße Alex

Amenophis86

Korrekt, dein Handy ist nicht erreichbar. Jetzt die Frage soll es so sein? Wenn nein, ist es über Bluetooth überhaupt sichtbar?

Zu Notify: Du musst auf das von entsprechende Event Triggern und dann das Notify den entsprechenden Befehl absetzen. Das Notify kann man recht einfach mit dem Eventmonitor anlegen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Gasmast3r

Hy ich bin der meinung das die Handy's nicht per Lepresenced gefunden werden können (können zwar Bluetooth LE aber nur selber finden) auf dem standart Bluetooth weg sind die zu sehen aber das ist keine gute lösung.

G-tag's ist einfach die beste lösung meiner meinung nach.

Gesendet von meinem SM-G950F mit Tapatalk

Entschuldige das ich DOOF FRAGE aber ich habe Psychische Probleme und Leide an ADHS mit Kognitiver-Hyperaktivität.

Anno74

Hallo,

natürlich soll es nicht mit dem Handy funktionieren, sondern mit dem GTAG. Mit dem Handy habe ich nur Testweise ausprobiert. Jetzt ist mein GTAG da. Ich habe die Define Anweisung hinterlegt und beobachte nun den Event Monitor.



2017-12-28 16:30:22 PRESENCE myGTag daemon: lepresenced V0.83
2017-12-28 16:30:22 PRESENCE myGTag model: lan-lepresenced
2017-12-28 16:30:22 PRESENCE myGTag rssi: unreachable
2017-12-28 16:30:52 PRESENCE myGTag absent
2017-12-28 16:30:52 PRESENCE myGTag presence: absent
2017-12-28 16:30:52 PRESENCE myGTag daemon: lepresenced V0.83
2017-12-28 16:30:52 PRESENCE myGTag model: lan-lepresenced
2017-12-28 16:30:52 PRESENCE myGTag rssi: unreachable
2017-12-28 16:31:22 PRESENCE myGTag absent
2017-12-28 16:31:22 PRESENCE myGTag presence: absent
2017-12-28 16:31:22 PRESENCE myGTag daemon: lepresenced V0.83
2017-12-28 16:31:22 PRESENCE myGTag model: lan-lepresenced
2017-12-28 16:31:22 PRESENCE myGTag rssi: unreachable
2017-12-28 16:31:52 PRESENCE myGTag absent
2017-12-28 16:31:52 PRESENCE myGTag presence: absent
2017-12-28 16:31:52 PRESENCE myGTag daemon: lepresenced V0.83
2017-12-28 16:31:52 PRESENCE myGTag model: lan-lepresenced
2017-12-28 16:31:52 PRESENCE myGTag rssi: unreachable
2017-12-28 16:32:22 PRESENCE myGTag absent
2017-12-28 16:32:22 PRESENCE myGTag presence: absent
2017-12-28 16:32:22 PRESENCE myGTag daemon: lepresenced V0.83
2017-12-28 16:32:22 PRESENCE myGTag model: lan-lepresenced
2017-12-28 16:32:22 PRESENCE myGTag rssi: unreachable


Er findet den G Tag auf Krampf nicht :-( Wenn ich Putty aufmache und dort folgendes eingebe



sudo hcitool lescan


bekomme ich angezeigt "Set Scan parameters failed: input/output error
Danach gebe ich folgendes ein


sudo hciconfig hci0 down
sudo hciconfig hci0 up
sudo hcitool dev
sudo hcitool lescan



Nun listet er mir alles Bluetooth Geräte auf. Auch den GTAG!

Aber im Event Monitor steht er nach wie vor als Absent da

Woran kann das denn liegen? So langsam verzweifel ich hier :-/

Was dann die Msg absenden angeht. Naja ich weiss nicht wie ich das Notify definieren muss. Aber eine Rechere ergab folgende 2 Möglichkeiten.


Variante 1
define OnOffToLoxone notify .*:(on|off) {OnOffToLoxone("$NAME")}

Variante 2

attr myGTAG event-on-change-reading state
define myGTAGAbsent notify myGTAG:absent "wget -q -O - 'URL für Aus Befehl'"
define myGTAGPresent notify myGTAG:present "wget -q -O - 'URL für Ein Befehl'"


Bei Variante 1 muss ich ja die Routine onOfftoLoxone in der 99_myUtils.pm hinterlegen, die dann die senden Routine anstupst.

Welche der beiden Varianten wäre denn besser?

Sorry für die blöden (vielleicht auch simplen Anfängerfragen).

LG Alex

Amenophis86

Also wichtig ist, dass immer nur einer auf Bluetooth zugreifen darf, entweder du über den Befehl hcitool, oder lepresenced. Keine anderer darf zur gleichen Zeit danach suchen. Ist das der Fall? Hast du lepresenced mal mit der Debugausgabe gestartet (Im Wiki müsste dafür ein Beispiel sein meine ich) und geschaut was es sagt, bzw. mal in das Log auf dem Pi für lepresenced geschaut oder verbose auf 5 gestellt?

Bezüglich des Notify, es gibt oft kein besser/schlechter. Ich schlage dir vor versuch beide Varianten, schau was passiert und ob es deinen Vorstellungen entspricht. Nur so lernst du auch etwas dabei, sollte etwas nicht gehen, dann kannst du gerne fragen. Und keine Angst vor Fragen, solange man erkennt, dass du selbst erst versucht hast es zu lösen, die Frage klar formulierst bzw. die Fehler benennst und keinen fertigen Code erwartest  :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Anno74

Hallo,

also das immer nur eine Instanz zugreifen darf das habe ich schon mitbekommen in einen anderen Thread hier im Forum. Ich habe ja wie gesagt nach dem Scan mit hcitool immer danach das Modul neu gestartet. Also mit hciconfig hci0 down /up.
Er hatte mir bei jeden Scan den G Tag angezeigt :-/
Ich habe aber nun mal die App vom GTag auf dem Handy installiert. Der GTag wurde einmal unter Bluetooth angezeigt, aber seitdem nicht wieder. Auch kann sich die App mit dem GTag nicht verbinden. (Hinzufügen klappt nicht!)
Ich habe dann mal am Handy Bluetooth abgeschalten und bin an den PC gegangen. Habe im Fhem das Device gelöscht. Habe den RPI mal Stromlos gemacht und wieder unter Strom gesetzt. Also einen Neustart.
Nun habe nachdem der RPI hochgefahren ist, mich kurz in die WEB Oberfläche von FHEM eingeloggt, danach Putty gestartet. Habe mich dort auf den RPI eingeloggt und folgenden Befehl ausgeführt


sudo hcitool lescan
--> Fehlermeldung Set Scan parameters failed: Inputz/output error
sudo hciconfig hci0 down
sudo hciconfig hci0 up
sudo hcitool dev
sudo hcitool lescan



hier wird der GTag nun auch nicht mehr aufgelistet. Ich denke mal das der GTag irgend eine Macke hat.

Ich werde morgen mal das Ding umtauschen gehen, danach probiere ich weiter. Entweder das klappt dann oder ich lasse es bleiben und muss mir halt etwas anderes einfallen lassen um die Erkennung zu machen. Kann ja nicht sein, das ich seit gestern Abend versuche und versuche und nicht einmal eine simple define Anweisung hinbekomme. Wenn es bei mir schon daran scheitert brauche ich den Rest erst garnicht zu versuchen. Scheinbar bin ich zu naiv dafür oder das Zeug ist zu hoch für mich.

Dennoch ein grosses Danke an alle die mir versucht haben zu helfen.

Liebe Grüße Alex

Amenophis86

Mmmmh kommt mir komisch vor, kann auch nicht sagen woran es liegt, dafür fehlt mir das Wissen. Ich würde das Thema mal ins Board Unterstüzende Dienste verschieben, dort sollen laut Maintainer.txt Themen zu Presence hin. Vielleicht kann man dir da helfen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Gasmast3r

#14
Hy ich hatte am Anfang auch Schwierigkeiten.

so habe ich das gemacht

define Sven_Cam PRESENCE lan-bluetooth 7C:2F:80:AD:C7:ED 192.168.178.113:5333 10 60
attr Sven_Cam userattr Bewohner Bewohner_map Sven Sven_map structexclude
attr Sven_Cam Bewohner structure_Bewohner
attr Sven_Cam Sven structure_Sven
attr Sven_Cam event-on-change-reading state
attr Sven_Cam room Anwesenheit

habe ein extra ZEROPI für lan-lepresenced

bei dir

define (dein Name) PRESENCE lan-bluetooth (deine G-Tag Mac Adresse) 127.0.0.1:5333(diese ip nehmen da es auf dem selben pi läöuft) 10 60 (10/60 ist der zeit intervall der abfrage)




define Licht_AN DOIF ([?dein Twiligt:light] < 5 and [dein name ] eq "present") (set dein Aktor)

danach am besten den pi neustarten und sehen das keine andere anwendung auf Bluetooth zugreift
Entschuldige das ich DOOF FRAGE aber ich habe Psychische Probleme und Leide an ADHS mit Kognitiver-Hyperaktivität.