NEWS
MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32
-
@giuseppes
Ich bin gespannt was daraus wird. Willst du deine Arbeit in Form eines eigenen Adapters oder eines Skripts veröffentlichen oder wie hast du das geplant?Was mein Problem mit den Datenpunkten angeht habe ich mir jetzt ein Workaround gebastelt. Und zwar kann man bei den Einstellungen im Sonoff Adapter einen Haken bei "für Tele/SENSOR" setzen. Daraufhin werde weitere Datenpunkte angelegt. In einem der Datenpunkte wird die Mac Adresse und in einem Datenpunkt wird der Gerätename zum soeben aktualisierten RSSI Wert geschrieben. Mit einem einfachen Blockly kann ich nun nach meinen Geräten filtern und den zugehörigen RSSI-Wert in einen eigens angelegten Datenpunkt mit meinem Gerätenamen schreiben. Je mehr Geräte und Shellys ich verwende desto umfangreicher wird das ganze natürlich aber mit 2 Shellys und 3 BLE-Geräten funktioniert das aktuell zuverlässig und noch übersichtlich. Da der Scan meiner Gtags zuverlässig funktioniert bin ich übrigens nicht darauf angewiesen zusätzlich mein Handy zu Scannen, dieses Problem umgehe ich somit. Über das Gtag will ich erstmal global erkennen ob jemand zuhause ist. Die Raumanwesenheit will ich dann wie geplant über das MiBand realisieren.
Ich denke mit deiner Lösung wird es alles einfach werden aber so versuche ich jetzt erstmal einen Start für mich zu finden. Wenn es bei dir dann läuft werde ich später sicherlich umswitchen. Als nächstes werde ich aber erstmal versuchen die originale Shelly Firmware von einer meiner originalen Shelly zu speichern, damit ich per Flash auch wieder zurück in den Ur-Zustand komme, bevor ich jetzt alle meine Shellys mit Tasmota bespiele. Somit könnte ich dann auch im Nachgang deine Lösung in mein System einbinden.
-
@utze86
Das mit den zusätzlichen States im Sonoff Adapter hatte ich auch gefunden. Nur bekam ich dort sync Probleme, manchmal stimmte die MAC bzw der Name nicht zum rssi. Aber da hatte ich noch nicht gefiltert.Das was ich gerade programmiere, wird über den mqtt Adapter von ioBroker absolut simpel nutzbar sein. Das funktioniert auch schon einwandfrei. Ich persönlich könnte es jetzt schon verwenden. Wenn ich es aber zur Verfügung stelle, dann müssen noch die oben genannten Punkte rein. Wifi Config wird dann auch über Access Point einstellbar sein. Hatte den allgemeinen Programmieraufwand etwas unterschätzt, daher komme ich gerade in einen zeitlichen Engpass. Ab Freitag fahre ich für knapp zwei Wochen weg. Danach kann ich weiter machen. Versuche den morgigen Tag noch effizient zu nutzen.
-
@giuseppes
Na dann wünsche ich dir in dem Sinne schöne Feiertage und eine erholsame Reise. -
Hi, ich habe mir vor Weihnachten ein MiBand 7 bestellt, was ich bisher leider nicht per Bluetooth über Tasmota mit den Shellys finden konnte. Nach etwas Recherche bin ich auf das hier gestoßen:
Wenn ich den Befehl BLEAddrFilter 1 in die Console eingeben wird das MiBand 7 ohne Probleme gefunden. Die Info kommt sicherlich etwas spät aber möglicherweise hilft dir das ebenfalls bei deiner Problematik weiter, dass du deine Pixel Watch bzw. die Amazfit GTS 4 Mini nicht findest.
Morgen werde ich "BLEAddrFilter 1" als Rule anlegen und dann wird das MiBand 7 hoffentlich regulär nach jedem Boot gefunden. Ich habe bisher keine Messung durchgeführt, aber das MiBand 7 wird gefühlt genau so häufig erkannt wie das MiBand 4
VG und einen guten Rutsch!
-
@utze86
Das wird wahrscheinlich die Ursache sein. Müsste ich mal testen, wenn ich wieder daheim bin. Wäre tatsächlich "etwas spät", aber natürlich danke für diese Info. Meine Pixel Watch habe ich ja inzwischen verkauft, da wäre es aber wie beim Smartphone eine random MAC Adresse. Die wurde über UUID gefunden, da kann man aber nicht filtern. Für meine aktuelle Uhr, die GTS4 Mini, könnte es aber sehr wahrscheinlich helfen. Ich hatte allerdings bei Tasmota das Problem, dass der Schalter Eingang sehr spät auslöste, wenn dieser als "detached" eingestellt wurde. Aber da, wo ich die Shelly für Rollläden einsetze, könnte ich evtl Tasmota reaktivieren.Müsste nochmals testen, wie synchron alle Signale eingehen, sodass dann der Sonoff Adapter für die Steuerung genutzt werden kann.
Ich gehe aber davon aus, dass ich mein angefangenes Projekt für die Shelly trotzdem zu Ende bringe. Da fehlt nicht mehr viel...Danke für die Info und auch dir schonmal einen guten Rutsch.
-
@utze86
Wie nun erwartet, hatte es mit Tasmota und "BLEAddrFilter 1" funktioniert. Meine GTS4 Mini wird alle 3-7 Sekunden gefunden. Werde aber zwei Nachmittage darauf verwenden, mein Tool fertigzustellen. Da klappt's deutlich häufiger und meine Hoffnung ist, dass ich für Rollläden eine Auto-Kalibrierung integrieren kann. -
@giuseppes
Gut, dass das schonmal klappt. Ich habe inzwischen weitere Shellys mit Tasmota verbaut und Werte aktuell die Signale aus. Das klappt bei 4 Stk. soweit schon ganz gut. Ich habe allerdings noch keine Abhängigkeiten festgelegt um meine Geräte/Beleuchtung hier zu steuern.Ich bin gespannt wie dein Tool läuft. Sag mal Bescheid wenn du soweit bist. Ich habe es inzwischen geschafft die Firmware von einer meiner Shellys zu sichern. Allerdings konnte ich dann von einem anschließend zurück geflashten Shelly nicht wieder auf Tasmota zurück. Der ESP Flasher zeigt mir hier immer eine Fehlermeldung. Ich kann mir aber gut vorstellen, dass die Anschlüsse am Shelly durch des gefummel mittlerweile so genudelt sind, dass ich kein anständigen Kontakt mehr zum flashen hinbekomme. Grundsätzlich komme ich aber wieder auf die originale FW zurück und bin daher schon sehr auf dein Tool gespannt. Ließe sich das Tool denn auf die Plus 1 Shellys anwenden/übertragen oder wird das "nur" auf deinen Plus 2 PM laufen?
-
@utze86
Grundsätzlich müsste das Tool auch auf Plus 1pm Modelle laufen. Es geht ja um den esp32, dieser ist in allen Plus Modellen verbaut. Konfiguration der Pins (Ein- und Ausgänge) sind simpel zu konfigurieren. Habe selbst keinen Plus 1pm, daher wäre es praktisch, wenn du es dann für mich testen könntest. Denke, dass ich diese Woche fertig werde. Komme nicht immer dazu zu programmieren, daher zieht sich das etwas. -
@utze86
Übrigens, zum Flashen habe ich mir das hier gegönnthttps://www.tindie.com/products/voltlog/voltlink-cp2102n-usb-serial-adapter-programmer/
Hatte zunächst selbst etwas gebastelt, aber es war immer viel Fummeln bis es klappte. Mit diesem Teil funktioniert es super.
-
@giuseppes
Okay das Teil ist schon praktisch. Werde mal sehen ob ich es mir auch zulege. Bisher geht das mit dem Flashen ganz gut aber man merkt nach ein paar mal hin und her, dass die Kontakte am Shelly durch sind.Gerne werde ich das Tool testen, sag einfach bescheid wenn du soweit bist. Ich hab übrigens den ganzen infachen shelly Plus 1 ohne PM. Sollte aber wie du schon sagst kein Problem sein. Bezüglich des Einrichtens der Ein- und Ausgänge würde ich mich dann ggf. Bei dir melden.
-
@utze86
Habe die erste Version hochgeladen:https://github.com/gsicilia82/ShellyNimBLE
Bin gespannt, wie gut deine MiBand7 gefunden wird. Bei mir ist es total kurios: Meine GTS4 Mini wird bis auf wenige Ausnahmen in 1-3 Sekunden gefunden. Meine MiBand6 aber nur alle 4-8 Sekunden...
Bin mit dem Projekt noch nicht ganz fertig. Etwas Komfort bei Shelly Plus2PM will ich noch ergänzen (Leistungsmessung wegen autom. Rollo-Kalibrierung).
[Ich will nachher auch prüfen ob ich einen Shelly OTA direkt flashen kann. Dank Github steht ein Link mit der Firmware zur Verfügung. Aber wahrscheinlich wird so etwas direkt unterbunden...
https://github.com/gsicilia82/ShellyNimBLE/releases/download/0.0.1/firmware.bin]
EDIT: Schade, klappt leider nicht mit OTA aufspielen auf original Firmware -
@giuseppes
So ich habe heute einen Shelly mit der firmware.bin geflashed. Ich komme über den AP auch auf die Maske zur Eingabe der WIFI-Daten, etc. Im Anschluss erhalte ich die Meldung:soweit so gut. Allerdings finde ich den Shelly anschließend nicht über meine Fritzbox. Ein Blick ins WLAN zeigt mir dann, dass der Shelly wieder im AP Mode ist. Also habe ich mal die Logs ausgelesen. Nach dem Flashen mit ESPtool erhalte ich immer die folgende Einträge:
[12:01:27]rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[12:01:27]invalid header: 0x3b666972
[12:01:27]invalid header: 0x3b666972
[12:01:27]invalid header: 0x3b666972
[12:01:27]invalid header: 0x3b666972
[12:01:27]invalid header: 0x3b666972
[12:01:27]invalid header: 0x3b666972
[12:01:27]invalid header: 0x3b666972
[12:01:27]invalid header: 0x3b666972
[12:01:27]ets Jul 29 2019 12:21:46
[12:01:27]nach dem Flashen mit dem ESPFlasher erhalte ich folgende Einträge:
[12:03:47]
[12:03:47]devMode or deviceName is empty, starting CaptivaPortal
[12:03:47]Setting up AP Mode
[12:03:47]
[12:03:47]Brownout detector was triggered
[12:03:47]
[12:03:47]ets Jul 29 2019 12:21:46
[12:03:47]
[12:03:47]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[12:03:47]configsip: 188777542, SPIWP:0xee
[12:03:47]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[12:03:47]mode:DIO, clock div:2
[12:03:47]load:0x3fff0030,len:1184
[12:03:47]load:0x40078000,len:12784
[12:03:47]load:0x40080400,len:3032
[12:03:47]entry 0x400805e4
[12:03:48]Das ganze liest sich für mich nach nem Bootloop. Ich habe keine Ahnung wie das mit deiner Firmware zusammenhängen kann, bei den anderen FW's hatte ich das Problem bisher aber noch nicht. Probleme mit nem Bootloop hatte ich sonst immer nur am Anfang als ich immer die falsche Version von Tasmota geflashed habe. Da hatte sich damals allerdings nichtmal der AP aufgebaut.
-
@utze86
Hmmm, ich habe immer mit Platformio geflasht. Ich muss es wohl auch mit dem esptool testen. Eine Möglichkeit könnte sein, dass die Firmware nicht vollständig 4MB groß ist, die ich aus Platformio genommen habe.
Ich werde heute Abend mal mit dem esptool am Shelly 2pm testen und mich melden. Danke schonmal für den Test und die Rückmeldung.Edit:
Kurios finde ich auf jeden Fall, dass das Captive Portal kam und es erst danach nicht weiter ging.
Möglich ist dass die Partition für die Speicherung der Werte (nvs) quasi nicht existiert, weil die Firmware unvollständig sein könnte. -
@giuseppes
Wo du es grade sagst. Ich habe die Firmware über den Link gezogen:https://github.com/gsicilia82/ShellyNimBLE/releases/download/0.0.1/firmware.bin
Die Datei ist bei mir aber nur ca. 900KB groß.
-
@utze86
Damit flashed man nur die App Partition. Das wird der Fehler sein. Ich werde schauen, wie ich eine 4MB Firmware aus Platformio bekomme. Bin mit Platformio auch noch kein Profi, habe erst mit diesem Projekt damit angefangen. Aber durch die Integration in vscode ist es echt genial.
Falls ich es damit nicht schaffe, setze ich mein Shelly zurück und lese das Image über esptool aus. -
@utze86
Habe nun ein 4MB image unter dem selben Release hochgeladen. Es gibt firmware_update und firmware_full unter dem letzten Release. *_full enthält alle Partitionen. Habe es nun als Backup von meinem Shelly entnommen. Das Flashen auf einen anderen Shelly war erfolgreich. Bin also recht optimistisch für deinen Versuch.
Wie das in platformio geht, ist mir noch ein Rätsel; aber das esptool kann ich wohl auch für das mergen benutzen. Sind für mich gerade viele Lern-Baustellen gleichzeitig -
@giuseppes
Hab die Datei geladen und es nochmal mit dem ESPTool versucht. Zunächst erase_flash ausgeführt und im Anschluss write_flash ausgeführt. Habe leider wieder das gleiche Problem, aber das log sieht minimal anders aus, beachte die Ausdrücke in "dick":[20:45:21]
[20:45:21]devMode or deviceName is empty, starting CaptivaPortal
[20:45:21]Setting up AP Mode
[20:45:21]
[20:45:21]Brownout detector was triggered
[20:45:21]
[20:45:21]ets Jul 29 2019 12:21:46
[20:45:21]
[20:45:21]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[20:45:21]configsip: 188777542, SPIWP:0xee
[20:45:21]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[20:45:21]mode:DIO, clock div:2
[20:45:21]load:0x3fff0030,len:184
[20:45:21]load:0x40078000,len:12592
[20:45:21]load:0x40080400,len:2724
[20:45:21]entry 0x40080594
[20:45:21]EDIT: Hattest du mit Platformio oder ESPTool auf den anderen Shelly geflashed?
-
@utze86
Mein Vorgehen war wie folgt:- erase flash über platformio an ShellyA
- flashen über platformio
- auslesen komplett Image über esptool
- erase flash von ShellyB
- flashen des Image auf ShellyB
- einrichten des Shelly, ohne Probleme
Erklären kann ich mir die Fehler bei dir nicht. Dachte esp32 ist esp32...
Setzt du die korrekte Konfiguration für den Shelly 1 beim Einrichten? Da wo "optional" steht? Aber selbst "keine Konfig" dürfte nicht zu Fehlern führen.Evtl bestelle ich mir einen Shelly Plus 1PM. Könnte ein altes Modell ersetzen. Aber Schritt für Schritt. Für Shelly 2pm habe ich die Leistungsmessung am laufen. Sobald ich die automatische Kalibrierung der Rollläden umgesetzt habe, widme ich mich dem Shelly 1.
-
@utze86
Zum Fehler brownout triggered habe ich online einen Thread gefunden. Problem wurde behoben durch korrekte Baudrate. Diesen Befehl hatte ich benutzt:esptool.py --baud 115200 write_flash 0x0 firmware_full.bin
-
@giuseppes
okay, baud habe ich beim flashen nicht mit einbezogen, da mir der Befehl nichts gesagt hat. Ich werde morgen nochmal versuchen mit baud zu flashen. Wofür wird baud genau benutzt? Weißt du das?