Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Das Haus soll erkennen ob jemand da ist, und in dem Fall das Haus schlafen schicken bzw. aufwecken.
Die Hardware ist auf Bluetooth Low Energy (BLE) ausgelegt und scannt keine älteren Bluetooth 2.0 - Geräte

Hardware

1 x Bluetoothmodul 4.0 - HM-10                 / 15€ / Link
1 x Arduino Nano Original oder Nachbau   / 5€ / Link
1 x W5100 Ethernet Modul                         / 10€ / Link
1 x Gigaset G-Tag für jeden Benutzer        / 20€ / Link // 16€ im 5er Pack / Link

Gesamtpreis bei mir 3 User + 2 Module ca. 100€

Wie es funktioniert

Das Bluetooth-Modul scannt nach einer vorgegeben Zeit nach neuen Bluetooth-Geräten.
Dabei wird bei der Wiederholung der Suche unterschieden ob sich bereits jemand im Haus befindet oder nicht.
Zeit 1 - niemand anwesend - z.B. alle 20 Sekunden wird gescannt (damit ein Bewohner schnell erkannt wird wenn er nach Hause kommt)
Zeit 2 - jemand anwesend - z.B: alle 10 Min. wird gescannt (so wird die Batterie der G-Tags geschont)

Wird nun ein User erkannt, schaltet dich das Haus sofort auf "wach".
Wird kein User mehr erkannt wird nach einer einstellbaren Zeit das Haus "schlafen" geschickt.
Zeit 3 - Zeit bis Abschaltung - z.B. das Haus bleibt noch 30 Min. wach bevor es schlafen geht. (Somit wird vermieden das es zu oft ein und aus geht)

Wir ein G-Tag der anwesend war nicht mehr gefunden, wird immer noch ein zweites Mal nachgefragt ob er wirklich weg ist.
Somit wird vermieden das es nur um einen kurzen Verbindungsabbruch handelt.

Alle Daten werden per UDP gesendet.

Es muss je User ein UDP-Eingang angelegt werden und die MAC-Adresse zur Erkennung eingetragen werden.
Um einen Scan zu starten muss ein UDP-Ausgang angelegt werden, Befehl EIN 000.

Schaltung

Stromversorung
5V --> VIN  /  GND --> GND
Alle 3 Geräte sind auf 5V ausgelegt, somit können alle die gleichen Versorungspannung nutzen.

Ethernet --> Arduino
5V --> 5V  /  GND --> GND  /  MO (Mosi) --> 11  /  MI (Miso) --> 12  /  SCK --> 13  /  SS --> 10

Bluetooth HM10 Modul --> Arduino
5V --> 5V  /  GND --> GND  /  TX --> 7  /  RX --> 8

Verkabelung

Ich nutze ein Ethernetkabel + 5V als extra Leitung
Es ist auch möglich ein PoE zu nutzen, aber aufgrund von Platz habe ich mich für eine extra Leitung entschienden.

Software

Arduino
Da die Softserial bei Arduino im Standard nur 64 Zeichen puffert, wir aber min. 128 Zeichen brauchen muss man hier eine kleine Änderung vornehmen.
Ich Empfehle dazu eine Portable Version von Arduino nur für diesen Zweck anzulegen.
Im Arduino-Verzeichnis unter \hardware\arduino\avr\libraries\SoftwareSerial\ in der Datei SoftSerial.H folgendes ändern und speichern

alt
#define _SS_MAX_RX_BUFF 64 // RX buffer size

neu
#define _SS_MAX_RX_BUFF 128 // RX buffer size

Arduino + Loxone
Beispiel-Dateien siehe weiter unten bei Anhänge

Screenshot

 

Modul fertig aufgebaut


Um den Sensor so aufzubauen ist etwas Lötarbeit nötig, kann aber von jedem der schon man gelötet hat gebaut werden.

Empfehlung

Es macht Sinn 2 der Module zu bauen um eine höhere Abdeckung zu erreich.
Ich habe auf der West und Ost-Seite je ein Modul montiert, so erkennt er User auch Garten oder in der Garage.
Die Software der Loxone ist für 2 Module und 3 User gemacht, das zweite Modul kann aber ohne Problem herausgenommen werden.

Anhänge

Arduino_Anwesenheit_Beispiel.rarAnwesenheit.Loxone

 

 

 

48 Kommentare

  1. Danke schonmal für das How-To! Könntest du noch ein paar Infos zu dem Dosen-Einsatz/Platine hinzufügen. Ich sehe da noch eine Klemme auf dem Bild und wie genau die Versorgung jetzt passiert? Also hast du dort sowohl Netzwerk als auch 5V Versorgung hingelegt? Gäbe es auch noch andere Möglichkeiten, die du dir angeschaut hast? Also z.B. Funk o.ä.?

  2. Der Einsatz besteht aus einer einfachen Euroloch-Paltine (zugeschnitten).
    Die Klemme ist für die 5V Versorgungspannung.
    Sicher gibt es noch andere Möglichkeiten z.B. Enocean PicoTracker, allerdings hat mich der Preis abgeschreckt.

    Wenn interesse da ist kann ich auch einer Version mit WLAN bauen.

     

  3. Kann man auch mehr wie 2 machen bzw Zonen z,b, Garage Haus?

  4. So viel du willst, es ist nur eine IP und ein UDP-Port nötig.
    Die Module sollten aber alle ungefähr zur gleichen Zeit abfragen das die G-Tags wieder in den Sleepmode gehen und nicht ständig aufwachen (Batterie-Lebensdauen!)

  5. so richtig wird mir noch nicht klar wie ich die Hardware aufbaue und dann softwaremäßig aufsetze? Kannst du das genauer beschreiben?

    1. hb14 sagt:

      Hallo, Haben Sie es geschafft , eins von diesen zu bauen?
  6. Was genau ist nicht klar?
    Beispiel-Dateien angesehen?

  7. Ich hab kein Plan bisher vom Thema Arduino... Mir wird nicht ganz klar was die Voraussetzungen sind, um das so umzusetzen.sowohl HW- als auch SW-seitig

     

  8. http://www.instructables.com/id/Arduino-All-in-One-Getting-Started-Guide/

    Hier kannst dich mal etwas einlesen, dann wird es schnell klar...

  9. hb14 sagt:

    Hi, Could have two users and a dog added. The dog will need to have a different set of details ie dont want him controlling the heating but do want to know if he leaves the house.
    Thanks

    Huw 

  10. It is possible...

    You have to program a second part of hous is sleeping or awake...

     

  11. hb14 sagt:

    Ok great deed is amazing news. Would I be able to PM you?

  12. Tobias Bach sagt:

    Vielen Dank für das interessante Howto. Hab mir gleich die Komponenten bestellt (sind leider noch in der Post, kann daher noch nicht Live testen).

    Bei der Ansicht der Beispieldateien sind mir zwei Dinge aufgefallen:

    1.) Kann es sein, dass im Arduino sketch beim Befehl   sendUDP("Scan aktiv"); noch die Modulnummer fehlt? Der virtuelle UDP-Eingang der  Loxone hört bei Deiner Beispielconfig ja auf "Scan aktiv 1" bzw. "Scan aktiv 2", oder?

    2.) Der Tr Eingang (Signal "M Anwesenheit - Scan BT") am Baustein Verzögerter Impuls für "Gast 1" (unten auf Blatt Erkennung 1/2) ist invertiert. Warum?

    Hast Du bzgl. WLan schon was gebaut?

    Danke - Grüße Tobias

     

     

  13. 1.

    Die Nummer nach Scan aktiv kommt bei mir davon das ich 2 Geräte im Einsatz habe.

    Das kannst du im Sketch einfügen oder auch nicht je nach dem wie viele Geräte du einsetzten willst.

    Nur die Befehlserkennung im MS muss so eingestellt werden wie der Arduino das sendet.

     

    2.

    Das mit dem Gast ist mir noch gar nicht aufgefallen, das soll so sein wie bei allen anderen. Scheint versehentlich passiert zu sein.

     

    Werde das ganze mal säubern (Zwinkern), Danke für den Hinweis.

     

  14. Dominik sagt:

    Hallo,

    Die Idee ist genial und super umgesetzt. Ich bin gerade dabei nachzubauen...

    Ich komme leider mit dem Arduino bzw. HM-10 BT nicht weiter:

    // Bluetooth-Geraete suche
    void scanbt()
    {
    sendUDP("Scan aktiv");
    Serial.println("//Suche BT-Device//");
    bluetooth.print("AT + DISC?"); // BT-Devices suchen
    delay(5000); //Wartezeit zur Auswertung
    if (bluetooth.available() > 0)
    {
    btrd = bluetooth.readStringUntil('\n');
    x = Serial.parseInt();
    String btrd2 = btrd;
    // Unnoetige Zeichen entfernen
    btrd2.replace("OK+DISCSOK+DIS0:", "");
    btrd2.replace("OK+DIS0", "");
    btrd2.replace("OK+DISCE", "");
    String btrd_clean = btrd2;

    // wenn kein Device gefunden wurde
    if (btrd_clean == "OK+DISCS")
    {
    Serial.println("kein BT Device");
    sendUDP("kein BT Device");
    } else {
    Serial.println(btrd_clean);
    sendUDP(btrd_clean);
    }
    }
    else
    {
    Serial.print("Fehler... Keine Daten vom BT-Modul");
    sendUDP("Fehler... Keine Daten vom BT-Modul");
    }
    clearAll();
    }

    Ich kann bspw. per iPhone mit dem Modul verbinden (LED leuchtet dann dauerhaft) und sehe auch entsprechende Daten. Auch "AT" bekommt ein positives Signal. Allerdings springt er in der o.g. Schleife immer direkt auf "Fehler... Keine Daten vom BT-Modul". 

    Sowohl mein Phone sendet ein Signal und hier liegt ein Gigaset G-Tag.

    Hat jemand eine Idee was ich noch probieren und testen könnte?

    Danke!

     

    1. Das heißt das die Antwort des BT Modul 0 Zeichen enthält.
      Kommunikation zwischen Modul und Arduino testen. RX TX richtig?

  15. Dominik sagt:

    Die scheint zu stimmen. 

    // BT-Modul Setup
    bluetooth.print("AT"); // check ob Modul arbeitet Antwort muss "OK" sein
    if (bluetooth.find("OK")) {
    Serial.print("BT Modul OK ...");
    sendUDP("Anwesenheit BT-Modul ...OK");
    } else {
    Serial.print("BT Modul Error ...");
    sendUDP("Anwesenheit BT-Modul ...FEHLER");

    "AT" liefert "OK" zurück. TX (2), RX (3) ist korrekt. 

    Anwesenheit_Ethernet_01.ino.ino

    Muss man hier was  weiteres beachten?

    DANKE!

  16. Dominik sagt:

    Kurze Frage ... Welche Software-Version nutzt Du auf dem HM-10? 53x?

    1. Kann ich dir nicht sagen, die aktuellste zu Zeitpunkt als ich den Artikel geschrieben habe.

  17. f.hien sagt:

    Hallo zusammen! hab das Projekt gelesen und als Interessant befunden um unsere Auto auszuwerten! allerdings habe ich keinen festen Ethernetanschluss in der Garage, aber einen AccessPoint deswegen würde ich dieses System gerne mit WLAN betreiben! habt ihr das versucht! Allerdings bin ich im Bereich Arduino der absolute Neuling.

     

    MFG

    1. Ich habe gerade bei Amazon ein WLAN Modul bestellt... Mal sehen wie gut das geht.

      Was willst genau mit Auswerten? Ob das Auto in der Garage steht?
      Dann muss der Empfäger am besten mittig an der Garagendecke angebracht werden da die Autos ja das Signal des G-Tag schwächen.

  18. f.hien sagt:

    Zum einen würde ich gerne auswerten ob die Autos da sind, zum anderen auch beim heranfahren die Alarmanlage ausschalten etc.

    Problem ist das ich die Garage nur dann in den Alarm kreis aufnehmen kann wenn im Haus bin also wenn die Autos da sind!

    Das ein öffnen des Garagen Tors ja die Alarmanlage auslöst wenn sie aktiv ist.

    1. Die Reichweite von BLE-Tags ist natürlich begrenzt, beim heranfahren würde bedeuten das sich der Empfänger am besten an der Garagenwand befinden sollte.
      ...oder sogar aussen um das Auto möglichst für zu erkennen.

      Ich melde mich wenn das WLAN-Modul da ist...

  19. f.hien sagt:

    DAs wäre echt spitze von dir, vielleicht kann ich dann dieses Problem auch noch lösen.

     

    MFG

  20. f.hien sagt:

    Hallo Dieter hab das ganze nun mal soweit nachgebaut, was mir noch nicht ganz klar ist wo stelle ich die IP des Moduls ein!

    Habe das ganze nun mal per Ethernet versucht. Das WLAN Modul liegt hier ist aber noch nicht in gebrauch.

    Du trägst ja in dein Ardunio Programm die MAC Adressen der einzelnen G-Tags ein, die IP des MS und zwei Ports richtig?

  21. Nein, die MAC ist wie es auch darüber steht für das Netzwerk (W5100).

    Die MACs für die G-Tags kommen im MS in die Befehlserkennung zum jeweilen User.

    1. f.hien sagt:

      Okay aber mir ist das ganze immer noch nicht ganz klar sollte nicht auf der Serial Monitor irgendetwas zu sehen sein.
      Hab einen einfachen Nano genommen dieser Blink fröhlich vor sich hin wenn ich dein Programm hochladen kommt auch keine Fehlermeldung. Vielleicht hast diesbezüglich noch weitere Informationen für mich.

  22. Ja sollte, die IP oder DHCP failed sollte zu sehen sein und dann macht er erst weiter wenn der UDP Befehl vom Miniserver kommt.

     

     

  23. f.hien sagt:

    Wo hast du denn die info zu diesem Projekt her! Hast du den nano noch irgendwie vorbereitet? habe das ganze nun zwei mal kpl. durch geschaut keine Reaktion auf dem Monitor in der Ardunio Software. Kein eintrag im DHCP-Server nicht.

  24. Info zu dem Projekt? Nirgendwo! Habe ich mir selber ausgedacht.

    Hier kannst du mal versuchen ob dein BLE-Modul überhaupt arbeitet

    http://blog.blecentral.com/2015/05/05/hm-10-peripheral/

     

     

  25. f.hien sagt:

    Hallo zusammen, ich habe gerade mal die Module bei meinem Versuchsaufbau einzeln getestet da gehen Sie aber im Programm hast nicht funktioniert.

    Nach dem ich mir das Programm von Dieter noch mal angeschaut habe habe ich festgestellt das du SoftwareSerial bluetooth(2, 3); // TX, RX eingestellt hast, mit diesen Einstellungen hat er bei mir nichts gemacht.

    Nach dem du ja in deinem Verkabelungsplan 7 und 8 angegeben hast, hab ich dies auch so um gestellt.

    Danach bekomme ich auch im Monitor etwas angezeigt.

     

    @Dieter hat es einen bestimmten grund für diese Programmierung

  26. Woher hast du das mit 2,3. In der hier angehängten Datei ist "SoftwareSerial bluetooth(7, 8); // TX, RX"
    Komme jetzt nicht ganz mit? Kann es sein das du das File von Dominik genommen hast, der hat 2,3 drin?

  27. f.hien sagt:

    Stimmt hatte die Falsche Datei Warum auch immer. Sorry noch mal für die vielen Fragen, aber eine hätte ich noch hattest du das ganze auch mal mit einem Handy getestet? also Mac Adresse vom Handy rein?

  28. Ja habe ich, aber leider kommt beim Scan keine MAC von Handys. Das liegt daran das die meisten Handys per default nicht sichtbar sind.
    Weder iPhone noch Android hat funktioniert.

     

     

    1. f.hien sagt:

      Okay na dann schon wieder was gelernt! dann muss ich doch bis morgen warten! bis der G-tag kommt!

       

      Hast du noch mehr so Spannende Entwicklungen für die Loxone auf Lager?

       

      MFG

      1. Ich baue immer wieder was selber... Luftqualität, 1Wire Sensoren, gerade arbeite ich an meinem Zysternen Füllstand Sensor und an der Integration won Max2Play an die Loxone.
        Also immer viele Projekte... (Zwinkern)

  29. f.hien sagt:

    Nun ist mein Gtag gekommen! wie hast du denn die Mac Adresse von diesem raus gebracht?

    1. Handy...
      Android https://play.google.com/store/apps/details?id=com.bluemotionlabs.bluescan
      Apple https://appsto.re/de/tyAzE.i

      Oder... du siehst sie auch am Serialmonitor des Arduino oder am UDP Monitor in der Loxone.

  30. Tobias Bach sagt:

    Kann man auch den Batteriestatus des G-Tag auslesen? Die Smartphone Apps können dies ja offensichtlich.

     

  31. Welche App kann das?
    Wo steht bei dir der Batteriestatus des G-Tag?

    1. Tobias Bach sagt:

      Z.B. die von Dir verlinkte -> Apple https://appsto.re/de/tyAzE.i

      Im Datenblatt des HM-10 ist folgendes zu finden:

      Battery information has included in scan response data package

      Außerdem gibt es ein AT-Kommando "AT+BATT?"

  32. Keine der App zeigt den Batt-Level des G-Tag. Der G-Tag kann aber über die Service UUID 0x180F abgefragt werden.

    Mit AT+BATC? kann ein Batterie-Monitor eingeschaltet werden, der ist dafür gedacht wenn das HM-10 Modul als iBeacon mit Batt betrieben wird.
    AT+BATT? ist nicht dafür da um andere Geräte abzufragen, sondern gibt seinen eigenen Status weiter. Deswegen wird auch nur 1x je Stunde gemessen und der Wert kann dann abgefragt werden.

    Leider gibt der klassische AT+DISC? nur die MACs der Devices wieder zurück.

    1. Tobias Bach sagt:

      Ok, ich denke das liegt am G-Tag. Die App an sich kann schon den Batterie Level (über 0X180F) anzeigen. Allerdings ist das Feld beim G-Tag leer. Hab das gestern ausprobiert. Prinzipiell scheint das aber schon möglich, der HM-10 im iBeacon Modus kann seinen Batterie Status ja auch senden.

      1. Der G-Tag kann den Batt-Status schon senden... Nur der HM-10 verarbeitet den nicht... Zumindest wüsste ich nicht wie...
        Das mit 0X180F habe ich gelesen, das heißt eben das der Batt-Status im G-Tag implementiert ist.

  33. f.hien sagt:

    @ Dieter hast du schon Erfahrungen mit dem ESP8266 und der Anwesendheitserkennung?

    1. Leider nein, Zeit fehlt noch. hoffe das ich es bis zum WE schaffe...

  34. Dieter, könnt ihr die Diskussion in einem Forumsthread weiterführen? Optimalerweise im Artikel einen Link zum Thread ergänzen, wo man Fragen stellen kann.  

  35. f.hien sagt:

    @ Dieter, bist du schon mal zum Testen mit dem ESP8260 gekommen! ICh versuche, das hier schon die ganze Zeit allerdings will dieser an meinen ardunio nicht so recht funktionieren! und Ohne im Lua Script bekomme ich keine Verbindung zum HM-10