Ich habe vor einiger Zeit begonnen fhem auf meiner Fritzbox zu nutzen. Lediglich aber mit einfachem Auslesen meiner Heizkörper Regler. Jetzt bin ich auf einen Raspberry umgestiegen und wollte ein wenig mehr machen. Mein erstes Projekt ist natürlich mit meiner geringen Erfahrung gleich eine Hausnummer.
Ich habe mir auf dem Raspi mal das galileo Projekt installiert. Damit kann ich durch den USB 4.0 dongle meinen tracker finden, auslesen und die Daten hochladen. Ich würde das Program jetzt allerdings ungern über einen cron mehrfach laufen lassen. Lieber wäre is mir eine Abfrage via fhem ein zu binden.
Idee sieht etwa so aus:
- alle 10 sek abfragen ob der Tracker gefunden wurde
- falls der Tracker gefunden wurde kann die Abfrage runtergefahren werden - etwa alle 60 sek
- einmal pro Stunde soll der Tracker auch synchronisiert werden, da dieser Prozess auch länger dauert als nur die Suche
- wird der Tracker nicht mehr gefunden geht es zurück auf Los
Hilfe wäre in alle Richtungen willkommen. Ab Besten natürlich zuerst ne Idee wie ich damit starten könnte. Galileo starte ich entsprechend mit Parametern über die Shell, allerdings bekomme ich die Ausgabe direkt auf den Monitor - Datei geht aber wohl auch.
Gruß .. Maxl
Hab am Wochenende mal bisschen rumgebastelt und habe mittlerweile eine Erkennung via PRESENCE und schalte damit entsprechend zeit verzögert über den watchdog das WLAN ein und aus. Meine Programmier Kenntnisse sind nicht die Besten, deswegen bin ich für Feedback gerne offen.
In fhem wird der Fitbit Tracker mit PRESENCE definiert. Entsprechend gibt es dazu einen Shell Aufruf, der 1 oder 0 zurück geben muss. Das galileo Programm zum Auslesen des Trackers ist in Python und befindet sich in der aufgerufenen Lib. Das kurze Skript presence.py mit den wichtigsten Funktionen habe ich selbst erstellt. Die Abfrage findet bei Abwesenheit alle 10Sek, bei Anwesenheit alle 60Sek statt. Danke dabei schon mal an das PRESENCE Modul
define Fitbit PRESENCE shellscript "sudo /usr/bin/python /usr/local/lib/python2.7/dist-packages/galileo/presence.py" 10 60
Das Skript sucht nach Trackern, wenn meine MAC Adresse gefunden wurde wird der Rückgabewert auf 1 gesetzt (sollte entsprechend noch um weitere Tracker erweitert werden können, allerdings mache ich hier schon einen BREAK, da mir der eine meine reicht). Falls die MAC Adresse nicht überein stimmt geht der Rückgabe Wert auf 0 - zur Sicherheit. Wegen Abwesenheit und kein Tracker gefunden wird ist der Wert initial natürlich auf 1.
from galileo.dongle import FitBitDongle
from galileo.tracker import FitbitClient
import uuid
dongle = FitBitDongle()
dongle.setup()
fitbit = FitbitClient(dongle)
FitBitUUID = uuid.UUID('{ADAB0000-6E7D-4601-BDA2-BFFAA68956BA}')
presence = 0
for tracker in fitbit.discover(FitBitUUID):
if tracker.id == [XX, XX, XX, X, XX, XX]:
presence = 1
break
else:
presence = 0
print presence
Trotz Anwesenheit habe ich ab und zu einen toggle auf abwesend feststellen können, deswegen habe ich im watchdog den Wert für WLAN Ausschalten pauschal mal auf 30 Sek gesetzt. Einschalten ist auf 15 Sek, allerdings habe ich noch keine Test wie es sich in dieser Richtung auswirkt - kann aber denke mal auch Null sein.
Momentan fehlt mir jetzt noch:
- das komplette auslesen des Trackers, also galileo bei Anwesenheit in bestimmten Abständen einmal komplett ausführen.
- YAMAHA Receiver einschalten wenn ich längere Zeit Abwesend war und dann Anwesend (unnötige Schaltvorgänge vermeiden)
- HM Heizungssteuerung: Heizung in Nachtmodus (absent), Auto (present) - würde hierbei aber gerne die Schaltung umgehen können für Vorheizen auf dem Heimweg
Hi,
klingt interessant.
Kannst Du mal bitte ine paar links posten, z.B. welcher tracker, wo gibts den und was kostet der, welches Galileo-Projekt, idealerweise link zu einer Installationsanleitung usw.
Danke+Gruß, Uli
Hi,
klingt wirklich interessant, kannst du was zur Reichweite sagen? Ich habe einen Polar Loop der ebenfalls Bluetooth 4.0 LE unterstützt und mal ein wenig mit dem hcitool gespielt aber unterschiedliche Ergebnisse zur Erreichbarkeit gesehen.
Hast du mehrere Bluetooth Dongles in der Wohnung die du "scannen" lässt oder reicht bei dir ein Dongle um die kompl. Wohnung abzudecken?
@UliM:
Ich denke es geht um das Projekt hier: https://bitbucket.org/benallard/galileo
Die Fitbit-Tracker sind eigentlich weit verbreitet und z.B. bei Amazon erhältlich. Der Flex ist am weitesten verbreiet, der Charge HR wohl das Gremium-Model im Moment. Hier mal eine Übersicht (http://www.amazon.de/s/?_encoding=UTF8&camp=1638&creative=19454&field-keywords=fitbit&linkCode=ur2&sprefix=fitbit%2Caps&tag=renblo07-21&url=search-alias%3Daps&linkId=4BSSIKAWTJ4KUOMQ)
Sorry, irgendwie habe ich keine Benachrichtigung beommen. Ja, es geht um das Projekt von Banallard. Einfach mal nach "galileo fitbit" googeln, da gibt es installations hinweise und auch die libary.
ich bin in einer recht kleinen Wohnung (52qm). Den BT Dongle habe ich recht mittig positioniert. Empfang geht dabei bis zur Haustüre Mit dem Original Dongle. ich bin noch in der Testphase, aber wenn ich nah genug an der Haustüre stehe erkennt er mich. Allerdings habe ich noch kleine Aussetzer Z.b. nachts. Letzte Nacht waren es 4. Da er bei Abwesenheit aber nach 10 sek schon wieder sucht zeigt er mich sofort wieder anwesend. Ich bin am überlegen dies mit einem 15sek watchdog noch zu umgehen, verzögert aber die gesamte Schaltung.
Die anderen genannten Punkte habe ich auch bereits umgesetzt. Bei absent geht nach 2 min Heizung und WLAN aus. Bei Present geht alles wieder an. Mein Receiver geht auch an wenn ich länger als 30min absent war. Außerdem wird bei present der Tracker alle 2h komplett ausgelesen.
Für größere Wohnungen oder Häuser müsste man sich mal schlau machen wie es mit einem anderen leistungsstärkeren BT Dongel ausschaut. Außerdem weiß ich auch noch das bei einem normalen Start von galileo die Empfangsleistung zurück gegeben wird. Vielleicht kann man hier mehrere Dongles einsetzen und entsprechend genauer die Position bestimmen ( Stockwerk übergreifend). Ist für mich allerdings momentan nicht notwendig und mir fehlt das entsprechende Haus dazu :-).
Hallo Maxl,
mich würde interessieren, ob du schon weiter gekommen bist? Kannst du aus dem dump schon mehr Parameter auslesen?
Ich habe Probleme mit dem Charge HR und Galileo 0.4.3. Nr mit der 0.5dev läuft es ...
Würde mich echt interessieren, da ich ähnliches vorhabe, ich jedoch auch den Puls brauche!
Danke!
Gruß aus Wien
noch etwas, wie schaut die Syntax deiner TrackerID aus? Komme nicht zurecht damit ...
Danke für die schnelle Antwort. Vl. ist es ein Empfangsproblem, dass du ztw. außerhalb des Empfangsbereiches bist von deinem RPi mit dem Tracker. Wie gibst du die Syntax ein? Byte für Byte unter "AE", "34", ...?
Danke!
Hi Robert
ich glaube da kann ich dir nicht weiter helfen. Da müsstest du dich eher an das galileo Projekt wenden. Ich rufe nur das Program auf und breche ab wenn die TrackerID meines Trackers gefunden wurde. Das Skript gibt dann eine 1 an fhem zurück und sieht mich somit als present an.
Die Daten selbst lasse ich nur alle 2h durch einen kompletten Programmdurchlauf synchronisieren.
Momentan funktioniert das ganze bei mir auch nicht ganz. Gerne setzt er mich mitten in der Nacht auf abwesend und bleibt in diesem Status. Ich bin noch nicht darauf gekommen ob es an dem Program liegt oder mein Tracker durch die viele Abfragerei Probleme macht. Seither habe ich mich auch nicht weiter darum gekümmert
Gruß Maxl
define Fitbit PRESENCE shellscript "sudo /usr/bin/python /usr/local/lib/python2.7/dist-packages/galileo/presence.py" 10 300
define FitbitSync at +*02:00:00 {if (Value("Fitbit") eq "present") {system ("/usr/local/bin/galileo &")}}
Hoppala,
Wollte noch den Quellcode hinzufügen hab aber den falschen Post gelöscht.
Welche Syntax meinst du. Wenn galileo startet sucht er tracker. Bei mir hatte ich die MAC Adresse meines Trackers zurückgegeben - zwar in dezimal, war mir aber egal. Wenn der Wert überein stimmt breche ich ab und gebe eine 1 zurück. Das heißt für fhem present. Auslesen des Trackers findet dann nicht mehr statt. Dafür habe ich den zweiten Aufruf alle 2h wenn ich anwesend bin.
In deinem Post im März schreibst du presence.ly mit ...
for tracker in fitbit.discover(FitBitUUID):
if tracker.id == [XX, XX, XX, X, XX, XX]:
und das XX war meine Frage.
Danke dir!
Liebe Grüße Robert
Ah jetzt verstehe ich. Ja, das ist die MAC Adresse als Array. Ich habe sie mir zu Beginn einfach mal ausgeben lassen. Interessanter weiße war sie in dezimal und nicht hex. Hat mich weiterhin aber nicht interessiert da ich ja eh nur abgleiche ob die richtige MAC gefunden wurde. Sonst springt er auf jeden Tracker an
Warum verwendet ihr nicht das blescan.pl Script?
http://forum.fhem.de/index.php/topic,28753.msg296092.html#msg296092 (http://forum.fhem.de/index.php/topic,28753.msg296092.html#msg296092)
weil ich auch den puls brauche!
Liebe Grüße Robert
Hallo zusammen,
vielleicht stehe ich gerade auf dem Schlauch, aber wie bekomme ich denn die UUID heraus?
MAC Adresse ist kein Problem, aber die UUID?
Gruß,
Tobi
Hi Tobi,
Frag mich bitte nicht was die UUID genau ist, aber soweit ich verstanden habe: einfach übernehmen. :)
Gruß .. Maxl
Hi,
ich denke es ist die USB UUID des Bluetooth dongles.
Ich kann auch syncen, aber das script scheint nicht zu funktionieren.
Irgendwas passt mit der MAC Adresse nicht. Trage ich nur die "X" ein, läuft das script durch.
Gruß,
Tobi
Hi Tobi
Mach mal ein print auf die gefundene MAC Adresse. Bei mir war sie in Dezimal und nicht Hex. Ich suche dann einfach nach dieser. Ich war nur zu faul das Array umzurechnen und dann zu vergleichen :-)
Maxl
Hi Maxl,
die mac habe ich, wird angezeigt beim sync. Gebe ich sie aber ein, in dem Format aa, bb, cc, dd, ee, ff wird gemeckert...
Was genau meinst du mit print?
Gruß,
Tobi
tracker.id am Bildschirm ausgeben. Ansonsten ist es als Array richtig angegeben. Bei mir hat er nämlich beim printen die MAC in dezimal ausgegeben. Die hab ich dann genommen
Hi,
scheine zu blöd zu sein...
Kannst mir den kompletten Befehl schicken?
Wobei ich nicht glaube, dass es helfen wird, da ich die mac ja kenne.
Gruß,
Tobi