EnOcean und Piotek Tracker

Begonnen von Brockmann, 28 Februar 2014, 09:39:08

Vorheriges Thema - Nächstes Thema

krikan

Zitat von: Hauenschild am 27 Mai 2015, 23:32:58
Ich habe einen solchen Tracker und würde den gerne in FHEM einsetzen. Bin aber noch nicht so fit in Sachen FHEM , so daß ich ohne eine Art Basis-Anleitung alleine nicht zurecht kommen würde.
Hallo Hauenschild,
Das Anlernen/Teach-In in Fhem ist davon abhängig, ob der Tracker ein Anlerntelegramm verschicken kann oder nicht.

Wenn er ein Anlerntelegramm verschicken kann (siehe Bedienungsanleitung), müsstest Du nach http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide#4BS-Teach-In vorgehen und erhältst ein Fhem-Device. Bei diesem Device mal das Attribut "verbose" auf 5 stellen und Taste drücken und einige Minuten warten, damit ein paar Anwesenheitstelegramme kommen. Dann den Abschnitt aus dem Log und ein list des Fhem-Device bitte mal posten, damit man sieht, was passiert.

Wenn der Tracker keine Anlerntelegramme verschicken kann, dann bitte das TCM-Device mit "set <TCM_ESP3_0> teach 600" in den learningMode versetzen und eine Taste am Tracker drücken. Bei dem angelegten Fhem-Device bitte das Attribut "subType" auf "occupSensor.01" setzen. Jetzt wie oben: Bei diesem Device mal das Attribut "verbose" auf 5 stellen und Taste drücken und einige Minuten warten, damit ein paar Anwesenheitstelegramme kommen. Dann den Abschnitt aus dem Log und ein list des Fhem-Device bitte mal posten, damit man sieht, was passiert.

Wenn Du soweit gekommen bist, schauen wir weiter. Wenn etwas unverständlich ist, melde Dich bitte.

Gruß, Christian




Hauenschild

Hallo Christian und andere 'Unterstützer',

gaaaaanz vielen Dank für die wertvollen Tips! Ich werde es dieses Wochenende leider nicht schaffen es zu testen. Sobald ich Ergebnisse habe werde ich mich hier aber rückmelden :).

Hauenschild

Hallo Christian,

ich habe jetzt den Piotek Tracker als Fhem-Device angelernt und das Attribut "subType" auf "occupSensor.01" gesetzt sowie das Attribut "verbose" auf 5 gestellt.

Im Log steht dann folgendes:
Zitat2015-06-28_20:42:13 PioTek_Tracker_1 106
2015-06-28_20:42:13 PioTek_Tracker_1 sensor1: 106
2015-06-28_20:42:13 PioTek_Tracker_1 sensor2: 6
2015-06-28_20:42:13 PioTek_Tracker_1 sensor3: 6
2015-06-28_20:42:13 PioTek_Tracker_1 D3: 1
2015-06-28_20:42:13 PioTek_Tracker_1 D2: 1
2015-06-28_20:42:13 PioTek_Tracker_1 D1: 1
2015-06-28_20:42:13 PioTek_Tracker_1 D0: 1
2015-06-28_20:43:13 PioTek_Tracker_1 voltage: 2.1
2015-06-28_20:43:13 PioTek_Tracker_1 motion: off
2015-06-28_20:43:13 PioTek_Tracker_1 off

Bei list erhalte ich diese Daten:
ZitatInternals:
   DEF        00851EBC
   IODev      TCM_ESP3_0
   LASTInputDev TCM_ESP3_0
   MSGCNT     1583
   NAME       PioTek_Tracker_1
   NR         22
   NTFY_ORDER 50-PioTek_Tracker_1
   STATE      off
   TCM_ESP3_0_DestinationID FFFFFFFF
   TCM_ESP3_0_MSGCNT 1583
   TCM_ESP3_0_PacketType 1
   TCM_ESP3_0_RSSI -88
   TCM_ESP3_0_ReceivingQuality bad
   TCM_ESP3_0_RepeatingCounter 1
   TCM_ESP3_0_SubTelNum 3
   TCM_ESP3_0_TIME 2015-06-28 21:05:37
   TYPE       EnOcean
   Readings:
     2015-06-28 20:42:13   D0              1
     2015-06-28 20:42:13   D1              1
     2015-06-28 20:42:13   D2              1
     2015-06-28 20:42:13   D3              1
     2015-06-28 21:05:37   motion          off
     2015-06-28 20:42:13   sensor1         106
     2015-06-28 20:42:13   sensor2         6
     2015-06-28 20:42:13   sensor3         6
     2015-06-28 21:05:37   state           off
     2015-06-28 21:05:37   voltage         2.1
Attributes:
   IODev      TCM_ESP3_0
   room       EnOcean
   subType    occupSensor.01
   verbose    5
Der Tracker sieht ja so aus und hat eine blaue Taste:
(http://www.ehomeportal.de/shop/prodpic/PioTek-Tracker-30s-fuer-HomeMatic-CCU-PM-0010_b_0.JPG)

Wenn ich die blaue Taste drücke passiert so weit ich das erkennen kann garnichts.

Ich habe noch einen zweiten Tracker bei dem ich nicht den subType auf occupSensor.01 geändert habe. Diese Tracker wird automatisch als EnOcean-Device angelegt mit subType4BS. Wenn ich bei diesem Tracker die blaue Taste drücke stellt erscheint bei D2 anstatt einer 1 kurz eine 0.

Wenn ich den Tracker nicht im Haus habe wird das laut Log nichts empfangen. Wennn er dann wieder in Funkreichweite ist sendet er brav jede Minute seine Daten wie folgendes Beispiel zeigt:
Zitat2015-06-28_21:17:54 PioTek_Tracker_2 sensor2: 6
2015-06-28_21:17:54 PioTek_Tracker_2 sensor3: 6
2015-06-28_21:17:54 PioTek_Tracker_2 D3: 1
2015-06-28_21:17:54 PioTek_Tracker_2 D2: 1
2015-06-28_21:17:54 PioTek_Tracker_2 D1: 1
2015-06-28_21:17:54 PioTek_Tracker_2 D0: 1
2015-06-28_21:18:55 PioTek_Tracker_2 107
2015-06-28_21:18:55 PioTek_Tracker_2 sensor1: 107
2015-06-28_21:18:55 PioTek_Tracker_2 sensor2: 6
2015-06-28_21:18:55 PioTek_Tracker_2 sensor3: 6
2015-06-28_21:18:55 PioTek_Tracker_2 D3: 1
2015-06-28_21:18:55 PioTek_Tracker_2 D2: 1
2015-06-28_21:18:55 PioTek_Tracker_2 D1: 1
2015-06-28_21:18:55 PioTek_Tracker_2 D0: 1
.

Ich möchte den Tracker jetzt gerne an mein Schlüsselbund hängen und mit seiner Hilfe bei An- oder Abwesenheit Lichter und Jalousien automatisch schalten. Ich vermute, dass ich das mit dem PRESENCE-Modul verwirklichen kann und würde das mit function versuchen:
define <name> PRESENCE function {...} [<check-interval> [present-ckeck-interval>]].

Jetzt komme ich aber nicht weiter. Auch die Beispiele die ich gefunden habe helfen mir nicht weiter, da ich FHEM-Anfänger bin. Ich würde mich sehr freuen, wenn Du oder jemnad anders mir helfen könnte.

Gruß Frank (Hauenschild)

krikan

Hallo Frank,
das sieht auf die Schnelle schon mal gut aus, obwohl der Tracker sich nicht mMn an EEP A5-07-01 direkt hält bzw. es "erweitert".

D2, dass nach Deinen Angaben den Tastendruck signalisiert, ist mMn laut EEP "not used". Darum funktioniert es auch nicht mit "subType" auf "occupSensor.01". Du solltest das bei dem einen Sensor löschen, damit auch dort die "Rohwerte" auftauchen werden. Ob Klaus eine Anpassung speziell für den Tracker an 10_EnOcean.pm vornehmen möchte, muss er entscheiden. Aber auch so wird es funktionieren.

Den Tastendruck kannst Du durch ein notify auf D2:.0 erkennen und eine gewünschte Reaktion auslösen.
Die Anwesenheitserkennung würde ich über einen watchdog lösen, da ich von PRESENCE keine Ahnung habe.
Wenn Du zu notify bzw. watchdog Code-Beispiele brauchst, melde Dich einfach. Ich würde mir das dann noch einmal in Ruhe anschauen. Bei PRESENCE bitte auf andere hoffen bzw. noch mal separat im entsprechendem Forenbereich nachhaken.

Gruß, Christian

klaus.schauer

An der zusätzlichen Programmzeile für den Taster scheitert es nicht. Bitte mit Entwicklerversion testen, siehe Anlage.

Aus den Logs ist mir nicht klar, ob das Gerät ordnungsgemäß per 4BS Teach-In angelernt war. Falls nicht, bitte mal in der Anleitung des Gerätes nachsehen, wie das gehen könnte und entsprechend ausführen. Falls nicht möglich, manuell setzen:

attr PioTek_Tracker_1 subType occupSensor.01
attr PioTek_Tracker_1 manufID 7FF
attr PioTek_Tracker_2 subType occupSensor.01
attr PioTek_Tracker_2 manufID 7FF


Bitte auch die Readings einmal "putzen":

deletereading PioTek_Tracker_1 .*
deletereading PioTek_Tracker_2 .*

Brockmann

Zitat von: Hauenschild am 28 Juni 2015, 21:36:31
Jetzt komme ich aber nicht weiter. Auch die Beispiele die ich gefunden habe helfen mir nicht weiter, da ich FHEM-Anfänger bin. Ich würde mich sehr freuen, wenn Du oder jemnad anders mir helfen könnte.

Für die Funktion könntest mit ReadingsTimestamp den Zeitpunkt des letzten Status-Updates beim Tracker auslesen, mit der aktuellen Zeit vergleichen und abhängig von der Differenz 0 oder 1 zurückliefern. So sollte sich Presence nutzen lassen.
Alternativ könntest Du mit einem einfachen DOIF auf die Abwesenheit des Trackers reagieren, etwa so:

define DI_abwesend DOIF ([PioTek_Tracker_2]) (set Anwesenheitsdummy "ABWESEND")
attr DI_abwesend waitdel 121
attr DI_abwesend do always

würde ausgeführt, wenn 121 Sekunden lang kein Signal des Trackers mehr empfangen wurde. (Das ist jetzt aber theoretischer Natur, da ich selbst keine Tracker habe.)

obb20a

Hallöchen,

ich hatte mir vor einiger Zeit den PioTracker und den entsprechenden USB-Stick geholt, bin aber erst heute dazu gekommen, das Zeugs mal auszuprobieren.

Vorab zur Infrastruktur:
fhem auf einem MacMini im Keller, strukturierte Cat6-Verkabelung im ganzen Haus.

Benutzte Hardware:
- PioTracker
- EnOcean USB-Stick
- USB-auf-Ethernet Verlängerung (http://www.amazon.de/gp/product/B001TOG6MM)

Zuerst habe ich den entsprechenden Treiber von der Website heruntergeladen, installiert und schon war das entsprechende USB-Device vorhanden.
Danach das ganze wieder ausgesteckt, den USB-Stick im EG mittels dem USB-auf-Ethernet in eine freie Netzwerksteckdose gesteckt - funktioniert !

Mit den in diesem Thread angegeben Tips habe ich nun eine Anwesenheitserkennung wie gewünscht: mit WatchDog und Notify wird der Status eines dummy auf absent oder present gesetzt, mittels notify kann ich eine Lichtszene schalten wenn ich den blauen Knopf drücke.

Mit der Umschiffung der üblichen Klippen (Device::SerialPort nachinstallieren, Regex jedesmal wieder neu lernen, Fehlersuche usw.) war das ganze in ca. 2 Stunden erledigt.  Da ich nicht jeden Tag an meinem FHEM 'rumprogrogramiere braucht's immer etwas, bis alles we geplant funktioniert.

Jetzt ist es natürlich noch zu früh für Langzeitaussagen, aber für's erste (Abwesenheitserkennung mittels Alufolie um den Tracker simuliert) funktioniert alles sehr stabil. Als nächstes dann noch die eigentliche Automatisierung (Licht an/aus bzw. Markise rein), Berücksichtigung mehrerer Tracker ("absent" auch wenn ein Tracker zuhause bleibt weil ich mit der Frau aus dem Haus gehe).

An dieser Stelle also ein fettes Danke ans Forum und "grünes Licht", dass es funktioniert. Für Fragen stehe ich gerne zur Verfügung.

Gruss Stefan


Hauenschild

Hallo Stefan,

ich habe heute erst (kann mich leider zeitlich nur sehr begrenzt mit FHEM beschäftigen) Deinen Beitrag entdeckt und freue mich für Deine Erfolge beim Einsatz der Trecker. Hättest Du Zeit und Lust zu Deinen genannten Beispielen die entsprechenden FHEM-Befehle bzw. Codes zu posten? Ich glaube mir würde das sehr helfen bei der weiteren Umsetzung. Wollte mich jetzt am nächsten freien Wochenende wieder damit beschäftigen. Das heißt außer die Trecker in FHEM anlernen habe ich mangels Zeit noch nichts weiter bewerkstelligen können.

Übrigens habe ich den Hinweis mit der Alu-Folie super gefunden! Ich bin immer zum testen aus dem Haus und 200 Meter die Strasse rauf :P. Werde jetzt natürlich nur noch Alu-Folie verwenden :D!

Gruss Frank.

obb20a

Hallöchen, hier mal einige Details zu der Implementation:

1. Der Tracker
Der PIOTek Tracker sendet alle 30 sec. ein Signal, welches vom Empfänger ausgewertet wird. Es gibt (logischerweise) keinen Abwesenheitsevent, das ausbleiben der Signale ist das Event an sich. Mittels notify wird der eingehende Event vom Tracker-Signal dazu verwendet, den Dummy ("Anwesenheit") auf den Status "present" zu stellen

define anw_Watch notify PioTracker_Stefan.* set Anwesenheit present

2. Der Watchdog
Mittels eines Watchdog prüfe ich, ob das Tracker-Device sich in den letzten 5 min. gemeldet hat. Wenn 5 min lang kein Signal mehr ankommt, wird ein Dummy ("Anwesenheit) auf den Status "absent" gestellt.

define abw_Watch watchdog PioTracker_Stefan 00:05:00 SAME set Anwesenheit absent;; setstate abw_Watch defined

3. DOIF
Die erste Anwendung für meine Implementierung ist das Ausschalten der Lichtsimulation. Normalerweise gehen abends im Haus verschiedene Lichter an. Das hatte bisher zur Folge, dass immer pünktlich im Wohnzimmer eine Lampe angegangen ist, egal ob jemand zuhause war oder nicht.
Mittels DoIF steuere ich nun, dass die Simulation nur dann startet, wenn der Anwesenheitsdummy auf "absent" steht.

define simu_Wohnzimmer_DOIF DOIF ([({sunset()}-1800)] and [Anwesenheit] eq "absent") (set WZ.Dimmer.Cloud 50) \
DOELSEIF \
([([23:00]+int(rand(600)))]) (set WZ.Dimmer.Cloud off)


Dasselbe DOIF schaltet die Lampe dann später wieder ab (um 23:00 Uhr plus minus 10 Minuten)

Hoffe das dieser Beitrag hilft - bei Fragen fragen.

Gruss Stefan

Brockmann

Im Grunde genommen könntest Du Dir notify, dummy und watchdog sparen und im DOIF direkt abfragen, wie lange das letzte Signal des Trackers her ist:


define simu_Wohnzimmer_DOIF DOIF ([({sunset()}-1800)] and [PioTracker_Stefan:state:sec] > 300) (set WZ.Dimmer.Cloud 50)
DOELSEIF ([([23:00]+int(rand(600)))]) (set WZ.Dimmer.Cloud off)


Vorausgesetzt der state wird aktualisiert, sonst eben das entsprechende Reading einfügen.
Nur so eine Idee - viele Wege führen nach Rom.

obb20a

Zitat von: Brockmann am 07 August 2015, 21:29:37
Im Grunde genommen könntest Du Dir notify, dummy und watchdog sparen und im DOIF direkt abfragen, wie lange das letzte Signal des Trackers her ist:


define simu_Wohnzimmer_DOIF DOIF ([({sunset()}-1800)] and [PioTracker_Stefan:state:sec] > 300) (set WZ.Dimmer.Cloud 50)
DOELSEIF ([([23:00]+int(rand(600)))]) (set WZ.Dimmer.Cloud off)


Vorausgesetzt der state wird aktualisiert, sonst eben das entsprechende Reading einfügen.
Nur so eine Idee - viele Wege führen nach Rom.

Ja, aber dann blick' ich beim nächsten Mal gar nicht mehr durch  ;D

Dazu kommt, dass ich ja das "Problem" habe, dass meine Frau auch einen Tracker bekommen soll (welcher Mann träumt nicht davon, seiner Frau einen Tracker umzuhängen ... hehe) und ich dann ein bisschen Programmierlogik brauche um den Status zu klären.

Wenn man dann z.B. zu zweit das Haus verlässt und nur einen Tracker mitnimmt, will ich mit einem Doppeldruck auf die Trackertaste den Status trotzdem auf absent schalten. Wenn man dann später wieder heimkommt, muss das natürlich entsprechend auch wieder mit dem "present" funktionieren.

Mein Problem ist momentan, dass sich der Shize-USB-Stick nach drei oder vier Tagen aufhängt und nur durch ab- und anstöpseln wieder in Gang bringen lässt. Ist bestimmt ein Treiberproblem oder so ... hat jemand eine Idee? Oder anders herum gefragt - hat noch jemand das Problem oder bin ich das ?

S.

Hauenschild

#26
Welchen USB-Stick meinst Du? Den TCM_ESP3_0 EnOcean-Stick? Soweit ich mich erinnern kann (ist schon enige Monate her) hatte ich am Anfang, warum auch immer, ebenfalls Probleme. Ich habe damals FHEM-update gemacht und den Stick neu angelernt. Seitdem läuft der bei mir ohne Probleme "wie geschmiert".

rtv

Darf ich den Thread wiederbeleben und mal in die Runde fragen, wie die Langzeiterfahrungen aussehen?
Reicht die Sendeleistung für die ganze Wohnung?
Welches Intervall nutzt ihr?
Wie lange halten dabei die Batterien?

obb20a

#28
Langzeiterfahrung:

Liegt gut auf meinem Schreibtisch. Nach der Antwort weiter oben werde ich das gute Stück evtl. nochmals anlernen und nochmal probieren.

Wenn's dann immer noch nicht geht, gibt's beim nächsten Mal Kaminanfeuern eine gute Gelegenheit, das Thema zu beenden.  >:( >:( >:(

Hauenschild

Also meine Erfahrungen sind sehr positiv. Unsere Tracker (Frau und Mann jeweils einen) sind 1 1/2 Jahre alt und die Batterien funktionieren tadellos. Das schöne an dem Tracker ist, das er am Schlüsselbund hängt. Und den Schlüsselbund haben wir immer dabei. Ein Handy, welches natürlich auch eine Anwesenheitserkennung ermöglicht, ist dann ab und zu mal doch zu Hause und/oder auf der Ladestation. Außerdem schaltet es sich bei uns in der Erkennung ab, wenn man das Handy z. B. mit auf die Terasse nimmt da der Weg zur Erkennung vom Raspberry mit Bluetooth dann zu weit ist. Einen Schlüsselbund legen wir immer an der gleichen Stelle nicht weit weg vom Raspberry ab. Außerdem kann man mit dem Tracker noch schnell ein Enocean-Licht schalten (blauer Taster am Tracker), wenn man nach Hause kommt. Die Reichweite entspricht dem üblichen Bluetooth-Standard. Bei uns reicht das für 10 Meter mit einer Wand dazwischen.

Also meines Erachtens zur Zeit  die beste Lösung für eine Anwesenheitserkennung, wenn man noch dazu EnOcean im Einsatz hat.