Hi,
hier eine kurze Anleitung zur Nutzung von ESP32 Modulen als BLE Scanner. Das ganze gibts schon ziemlich lange mit Raspis. Mit den ESPs gehts deutlich leichter.
Danke an @ralf für die Anleitung im anderen Thread.
Als Hardware benötigt ihr einen ESP32, am besten den D1 mini, denn dieser hat eine micro usb Buchse fürs flashen der Firmware und zur Stromversorgung. Gibts zum Beispiel beim großen Fluß von AZ Delivery für gute €6,- pro Stück.
Als Firmware verwenden wir tasmota in der bluetooth Version: tasmota32-bluetooth.bin
http://ota.tasmota.com/tasmota32/
Das flashen ist sehr einfach mit dem Tool ESP-Flasher.
ESP per usb an den Computer, Flasher erkennt automatisch den Port. Firmware Datei von oben auswählen und flashen.
Anleitung: ESP32 (beta) - Tasmota
Tool: Releases · Jason2866/ESP_Flasher · GitHub
Nach dem ersten Booten strahlt der ESP ein WLAN aus. Verbinden und die Zugangsdaten des eigenen WLANs eingeben (Nach Netzwerk suchen, ganz oben verwenden!). Danach startet der ESP automatisch neu und man kann in der Konsole des ESP Flashers das erfolgreiche Verbinden des ESP mit dem eigenen WLAN verfolgen und dort auch gleiche die erhaltene IP Adresse sehen (alternativ im Router nachsehen).
Jetzt gehts es im Browser weiter. IP Adresse des ESP eingeben.
Auf der Oberfläche Configuration → Bluetooth auswählen und bluetooth aktivieren.
Dann MQTT auswählen und den Symcon Server eintragen.
Ich habe sowohl den Namen als auch den Topic geändert, damit ich mich in Symcon leichter tue.
Im jetzigen Zustand sendet der ESP nur sehr selten Informationen nach Symcon. Deswegen passen wir das noch weiter an. Wir legen Regeln fest. Ich habe 3 Stück erstellt, die für mich gut funktionieren. Das kann man bestimmt noch straffen und an die persönlichen Bedürfnisse anpassen.
Main Menu → Console
Nach jeder Eingabe enter drücken
Rule1 ON System#Boot DO iBeacon 1 endon
Ich will nicht so viele Nachrichten, deshalb scanne ich nur nach bestimmten beacons. Das ist optional.
Die mac-Adressen werden ohne Punkte eingeben.
Rule2 ON System#Boot DO BLEAlias MACadresse1=Name1 MACAdresse2=Name2 endon
Und jetzt sagen wir noch, dass wir nur bestimmte wollen und spielen noch mit der Abwesenheitszeit.
Rule3 ON System#Boot DO Backlog iBeaconPeriod 60; iBeaconOnlyAliased 1; BLEMaxAge 60 endon
Möglicherweise bootet der ESP nach Eingabe einer neuen Regel. Da müsst Ihr aufpassen ob die Console auch den Eingang der Regel bestätigt.
Noch sind die Regeln nicht aktiviert und wieder nach jeder Eingabe enter:
Rule1 1
Rule2 1
Rule3 1
Ausschalten der Regeln dann mit Rule1 0 wieder möglich. Überschreiben der Regel auch jederzeit möglich.
Jetzt über Main Menu → Restart
Die Einbindung und Auswertung des Topics in Symcon nur als Beispiel (nicht geprüft, möglicherweise mit Fehler):
Das Skript sollte unterhalb der Kategorie des Scanners sein. Der Topic den ihr braucht ist /SENSOR.
Auslösendes Ereignis ist dann Änderung der Variablen Value unterhalb von SENSOR.
<?php
$sensor_id = IPS_GetInstanceIDByName('SENSOR',IPS_GetParent($_IPS['SELF']));
$value_id = IPS_GetVariableIDByName('Value',$sensor_id);
$J = GetValue($value_id);
$o = json_decode($J,true);
$name = $o["IBEACON"]["NAME"];
$state = $o["IBEACON"]["STATE"];
$InsID = @IPS_GetInstanceIDByName("Status",IPS_GetParent($_IPS['SELF']));
if ($InsID === false)
{
$InsID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetName($InsID, "Status");
IPS_SetParent($InsID, IPS_GetParent($_IPS['SELF']));
}
CreateVar($name,0,$state);
function CreateVar($Name,$Typ,$Value) {
global $InsID;
$Id = @IPS_GetVariableIDByName($Name,$InsID);
if ($Id === false)
{
$Id=IPS_CreateVariable($Typ);
IPS_SetParent($Id,$InsID);
IPS_SetName($Id,$Name);
}
if ($Value == 'ON') SetValue($Id,true);
if ($Value == 'OFF') ISetValue($Id,false);
}
?>
Viel Spaß, Sebastian