Anwesenheitserkennung Bluetooth PebbleBee

Begonnen von tomster, 06 November 2014, 10:01:16

Vorheriges Thema - Nächstes Thema

micky0867

Hi,

der ESP32 ist ein Dualcore und die beiden Hauptfunktionen laufen in unterschiedlichen Threads auf unterschiedlichen Cores.

Es scheint manchmal zu Disconnects im Wlan zu kommen, da bin ich mir aber nicht sicher, ob es im Zusammenhang mit BLE steht.
Das werde ich weiter beobachten/untersuchen.

Micky

PatrickR

Die Erklärung war IIRC die doppelte Nutzung des Senders/der Antenne, habe das aber zugegebenermaßen nicht mehr parat.

Das Thema Disconnects wäre spannend, vor allem, wie sich das ggf. in FHEM äußert wenn man keinen collectord zwischenschaltet.


Von unterwegs gesendet.
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

mark79

#1067
Zitat von: micky0867 am 06 Januar 2018, 20:34:31
Da mich das Thema nicht losgelassen hat, habe ich mich in den letzten Wochen verstärkt mit dem ESP32s (WROOM-32) auseinander gesetzt.
Die Sourcen sind hier:
https://github.com/micky0867/BLEScanner

Hallo Micky,

ich habe schon deine erste Version mit dem BLE (HM-10) Modul an einem ESP8266 im Betrieb und das läuft seit Monaten stabil.  :)

Habe dann gestern mal versucht das mit einem ESP32 umzusetzen, aber ich krieg das nicht kompiliert.

Den ersten Fehler, konnte ich noch selber lösen, indem ich einfach die drei + Zeichen vor dem const char gelöscht habe.

BLEScanner:14: error: expected unqualified-id before '+' token

+const char* ssid     = "ENTER_YOUR_WIFI_SSID_HERE";

^

BLEScanner:15: error: expected unqualified-id before '+' token

+const char* password = "ENTER_YOUR_WIFI_PASSWORD_HERE";

^

BLEScanner:16: error: expected unqualified-id before '+' token

+const char* hostname = "ENTER_THE_HOSTNAME_HERE";

^

F:\arduino-1.8.5\portable\sketchbook\BLEScanner\BLEScanner.ino: In function 'void WiFiEvent(system_event_id_t)':

BLEScanner:125: error: 'hostname' was not declared in this scope

       WiFi.setHostname(hostname);

                        ^

F:\arduino-1.8.5\portable\sketchbook\BLEScanner\BLEScanner.ino: In function 'void wifiTask(void*)':

BLEScanner:284: error: 'ssid' was not declared in this scope

   WiFi.begin(ssid, password);

              ^

BLEScanner:284: error: 'password' was not declared in this scope

   WiFi.begin(ssid, password);

                    ^

Mehrere Bibliotheken wurden für "WiFi.h" gefunden
Benutzt: F:\arduino-1.8.5\hardware\espressif\esp32\libraries\WiFi
Nicht benutzt: F:\arduino-1.8.5\libraries\WiFi
exit status 1
expected unqualified-id before '+' token


Nur das nächstes Problem, wo ich nicht weiter komme ist das hier:

Archiving built core (caching) in: C:\Users\Mark\AppData\Local\Temp\arduino_cache_379695\core\core_espressif_esp32_lolin32_FlashFreq_80,UploadSpeed_921600_5fa88f8eb788af0a0b44beefc136829a.a
Der Sketch verwendet 1408562 Bytes (107%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.

Globale Variablen verwenden 93284 Bytes (31%) des dynamischen Speichers, 201628 Bytes für lokale Variablen verbleiben. Das Maximum sind 294912 Bytes.
Der Sketch ist zu groß; unter http://www.arduino.cc/en/Guide/Troubleshooting#size finden sich Hinweise, um die Größe zu verringern.
Fehler beim Kompilieren für das Board WEMOS LOLIN32.


Ich habe eine frische Arduino IDE 1.8.5 (portable) aufgesetzt und mit der neusten ESP32 Libary.
Weißt du Rat und benutzt du evtl. was anderes? PlatformIO?


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

micky0867

Zitat von: mark79 am 04 April 2018, 14:21:06
Ich habe eine frische Arduino IDE 1.8.5 (portable) aufgesetzt und mit der neusten ESP32 Libary.
Weißt du Rat und benutzt du evtl. was anderes? PlatformIO?

Hi Mark,

sorry, die Pluszeichen hatten sich eingeschlichen, als ich hektisch meine privaten Wifi Zugangsdaten auf Github entfernt hatte, die ich zuvor versehentlich im Code stehen gelassen hatte ;-)

Ich habe als Board ein Node32s eingestellt, damit passt es.

Allerdings muss ich sagen, dass  ich die Disconnects im Wlan nicht in den Griff bekommen habe.
Wenn Du da was findest bzw. eine Idee hast, wäre das echt super.

Gruß
Micky

mark79

Zitat von: micky0867 am 05 April 2018, 20:08:10
sorry, die Pluszeichen hatten sich eingeschlichen, als ich hektisch meine privaten Wifi Zugangsdaten auf Github entfernt hatte, die ich zuvor versehentlich im Code stehen gelassen hatte ;-)

Ich habe als Board ein Node32s eingestellt, damit passt es.

Allerdings muss ich sagen, dass  ich die Disconnects im Wlan nicht in den Griff bekommen habe.
Wenn Du da was findest bzw. eine Idee hast, wäre das echt super.
Da wäre ich auch hektisch gewesen :D

Ich bekomme es leider nicht kompiliert, daher wird das mit suchen schlecht. Aber das liegt an meiner Arduino IDE.

Der Sketch "BLE Human Presence Detector" von Andreas Spiess lässt sich auch nicht kompilieren. Weil er rummeckert, der Sketch wäre zu groß:
https://github.com/SensorsIot/Bluetooth-BLE-on-Arduino-IDE/tree/master/BLE_Proximity_Sensor

Ich hatte die IDE gestern Abend noch mal neu installiert, nach der Anleitung hier: https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/windows.md
Aber Problem besteht weiterhin, habe auch mehrere Boards getestet.

Ich werde mich die nächsten Tage, da noch mal ran machen...

btw. die Videos von ihm kennst du? https://www.youtube.com/channel/UCu7_D0o48KbfhpEohoP7YSQ/search?query=ble
Der hat so was ähnliches gebastelt über mqtt.

Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

micky0867

Ich habe auch die Anleitung benutzt, allerdings für Linux.
Für die Entwicklung habe ich aber PlatformIO benutzt, weil ich die IDE eleganter finde.
Den Sketch habe ich dann aber auch mit der Arduino IDE geöffnet und kompiliert.

Den BLE_Proximity_Sensor Sketch kann ich auch mit meiner Arduino IDE kompilieren, der Output sieht so aus:
Archiving built core (caching) in: /tmp/arduino_cache_311739/core/core_espressif_esp32_node32s_FlashFreq_80,UploadSpeed_921600_468c93602846210a69ed0642e5176d28.a
Sketch uses 1201102 bytes (91%) of program storage space. Maximum is 1310720 bytes.
Global variables use 72420 bytes (24%) of dynamic memory, leaving 222492 bytes for local variables. Maximum is 294912 bytes.


Micky

mark79

#1071
Hallo Micky,

hast du irgendwas an der BLE Libary verändert, z.B. was nicht benötigt wird, auskommentiert?
Es scheinen sehr viele das Problem in Zusammenhang mit der BLE Libary zu haben, das der Sketch zu groß ist: https://github.com/nkolban/esp32-snippets/issues/441

Da weiß ich aber nicht, was man da deaktivieren kann.. wenn du was verändert hast, wäre es nett wenn du deine BLE Libary Online stellen könntest. Oder hast du eine ältere Libary am laufen?

Ich habe es erstmal etwas unschön gelöst (die Partitionsgrößen vergrößert), damit konnte ich deinen Sketch kompilieren: https://github.com/nkolban/esp32-snippets/issues/441#issuecomment-375795379
Zuvor habe ich es noch auf einem Macbook versucht, Arduino zu installieren und zu kompilieren, aber das ging auch schief.

Der Sketch verwendet 1408510 Bytes (85%) des Programmspeicherplatzes. Das Maximum sind 1638400 Bytes.
Globale Variablen verwenden 93284 Bytes (31%) des dynamischen Speichers, 201628 Bytes für lokale Variablen verbleiben. Das Maximum sind 294912 Bytes.
...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 7281.9 kbit/s)...
Hash of data verified.
Compressed 14128 bytes to 9196...

Writing at 0x00001000... (100 %)
Wrote 14128 bytes (9196 compressed) at 0x00001000 in 0.1 seconds (effective 957.8 kbit/s)...
Hash of data verified.
Compressed 1409664 bytes to 768325...

Writing at 0x00010000... (2 %)
...
Writing at 0x000c8000... (100 %)
Wrote 1409664 bytes (768325 compressed) at 0x00010000 in 12.0 seconds (effective 940.5 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 122...

Writing at 0x00008000... (100 %)
Wrote 3072 bytes (122 compressed) at 0x00008000 in 0.0 seconds (effective 2457.6 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting...


Scanning...
Free heap: 55820
Scanning...
Task bleTask state: 2 free stack: 1160
Task wifiTask state: 2 free stack: 1096
Uptime: 670471
Tags found (MAC, Timestamp, Name, RSSIs):
  fc:f1:36:b9:xx:xx; 661315; ; >-84,-85,-84,-81,-84,<
  18:7a:93:50:xx:xx; 664806; AMISL_C409; >-59,-63,-53,-61,-63,<
  f2:a6:7a:5e:xx:xx; 665098; ; >-73,-72,-74,-73,-73,<

Reconnects: 1
Scanning...


Werde das am WE mal produktiv testen... :)


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

mark79

Ich habe noch mal weiter rum getestet... :)

Ich hatte auch einige WiFi disconnects, bzw. ich habe das ganze erstmal ohne fhem und collectored getestet.
Sondern nur mit einem Ping auf dem ESP32 und die Pingverluste betrugen schon etwa 5-6% innerhalb ein paar Minuten.

Dazu gibt es ein issue bei der BLE Libary von nkolban: https://github.com/nkolban/esp32-snippets/issues/169#issuecomment-341978070

Und es wird empfohlen das hier umzusetzen: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/ArduinoBLE.md

Damit läuft das sehr sehr viel besser, sogar mit einer Scantime von 30 Sekunden:

scanTime = 30; //In seconds
Ping-Statistik für 192.168.1.137:
    Pakete: Gesendet = 302, Empfangen = 299, Verloren = 3
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 1542ms, Mittelwert = 315ms


scanTime = 8; //In seconds
Ping-Statistik für 192.168.1.137:
    Pakete: Gesendet = 410, Empfangen = 409, Verloren = 1
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 1501ms, Mittelwert = 232ms

Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

micky0867

Ich habe auch mal ein Update des gesamten esp32 Verzeichnisses in der Arduino IDE gemacht.
Jetzt komme ich auf 119%   :-X

In PlatformIO habe ich auch ein Upgrade gemacht.
Dort passt der Sketch....vermutlich wird da die ältere Version der ESP32 Umgebung benutzt.

Viel Hoffnung habe ich da gerade wenig  :'(

Micky



mark79

Das erklärt das wohl, ich hatte das 3x probiert und du hattest wohl noch eine ältere BLE lib... :)
Das hilft erstmal dagegen, um den Sketch zu kompilieren: https://github.com/nkolban/esp32-snippets/issues/441#issuecomment-375795379

Und mit dem vorgehen von hier: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/ArduinoBLE.md
läuft dein Sketch bisher sehr gut mit collectord.

Ich habe die neue kompilierte BLE lib online gestellt:
https://www.dropbox.com/s/ng2gmvgbyjee117/ESP32_BLE.ZIP?dl=0e
Dazu aber auch die alte BLE lib entfernen, wie im zweiten Link beschrieben...

Den Speicher könnte man evtl. noch verkleinern, wenn man bei der BLE lib Funktionen raus nimmt, die für den Sketch nicht benötigt werden. Das hatten die im Git empfohlen.

Aber da habe ich nicht wirklich Ahnung von... und ich habe gerade noch eine andere dicke Baustelle: https://forum.fhem.de/index.php/topic,81387.msg794051.html#msg794051
Bin bald soweit, das ich die HM MOD RPI Platine auf ein ESP drauf Pflanze  >:(
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

micky0867

Zitat von: mark79 am 14 April 2018, 01:29:13
Und mit dem vorgehen von hier: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/ArduinoBLE.md
läuft dein Sketch bisher sehr gut mit collectord.

Ich lese aus dem Link
ZitatUpdate: As of 2017-11, the BLE support has been included with the Arduino ESP32 base package.
Das ist seit November im Standard...

Wenn man die BLE Lib anpasst, verpasst man ggf. Neuerung bzw. muss die eigenen Anpassungen immer wieder nachpflegen.
Das ist mal was für lange Winterabende  ::)

Micky

mark79

Hallo Micky,

ich kann nur von meinen Erfahrungen sprechen, mit der aktuellen GIT Version der ESP32 Libary hatte ich ziemlich viele (ping) Paketverluste.
Als ich die aktuelle BLE lib selber kompiliert habe und in meine Arduino IDE rein kopiert habe, hörte das auf.

Ich konnte jetzt noch nicht viel testen, wegen den Umzug auf Rock64 Board. :D Werde das noch mal nachreichen. :)

Was meinst du genau mit disconnects? Bricht das WiFi zusammen und der ESP verbindet sich neu mit dem AP?
Wie oft kommt das vor?

Ich habe im Seriellen LOG ab und zu das hier stehen "Reconnects: 1"..
Aber wenn ich in meiner Fritte, im WiFi Ereigniss Log nachschaue, dann sehe ich dort keine WiFi ab/anmeldung vom ESP32.


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

mark79

Hallo Micky,

mal ein kurzer Status Bericht zu dem ESP32 BLE Scanner Sketch von dir. Das ding rennt bei mir seit Sonntag im Wohnzimmer, ohne ein einzigen WiFi reconnect.

Heißt im Ereignis Log der Fritte unter WLAN habe ich nur einen Eintrag, wo ich den ESP an den Strom angeschlossen habe:
15.04.18 13:35:29 WLAN-Gerät angemeldet (2,4 GHz), 72 Mbit/s, BLEesp32, IP 192.168.2.62, MAC xx:xx:xx:xx:xx:xx.
Seit dem läuft er rund um die Uhr durch und arbeitet brav mit collectored zusammen.


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

micky0867

Zitat von: mark79 am 18 April 2018, 16:01:05
Hallo Micky,

mal ein kurzer Status Bericht zu dem ESP32 BLE Scanner Sketch von dir. Das ding rennt bei mir seit Sonntag im Wohnzimmer, ohne ein einzigen WiFi reconnect.

Heißt im Ereignis Log der Fritte unter WLAN habe ich nur einen Eintrag, wo ich den ESP an den Strom angeschlossen habe:
15.04.18 13:35:29 WLAN-Gerät angemeldet (2,4 GHz), 72 Mbit/s, BLEesp32, IP 192.168.2.62, MAC xx:xx:xx:xx:xx:xx.
Seit dem läuft er rund um die Uhr durch und arbeitet brav mit collectored zusammen.


Viele Grüße
Mark
Hört sich ja gut an!
Das muss ich mal testen!

Thx!
Micky


Gesendet von meinem ONEPLUS A3003 mit Tapatalk


reibuehl

@mark79 : Wo kann man den den von Dir angepassten Code finden und was muss an der Arduino IDE bzw den Libraries geändert werden um das von Dir beschriebene stabile Verhalten zu bekommen?

Ich würde das gerne mal auf meinem ESP32 WROOM NodeMCU ausprobieren.
Reiner.