Forum: Projekte & Code Software zum Steuern des Türschlossantrieb "eqiva eQ-3 Bluetooth Smart Lock"


von Joachim S. (oyo)


Lesenswert?

tcsmaxx schrieb:
> hat jemand zufällig mal analysiert, wo man auf der Platine ein Signal
> abgreifen kann, wann das schloss schließt bzw. öffnet?

Bin nicht 100%ig sicher, ob ich Deine Frage richtig interpretiere, aber 
vielleicht hilft Dir das:
In dem Gerät sind zwei Taster verbaut, über die die Elektronik grob 
weiss, wie der auf der Innenseite steckende Schlüssel, den das Smart 
Lock dreht, gerade steht. Also ungefähr so:

Taster 1 | Taster 2 | Stellung
0        |0         | 0°
0        |1         | 90°
1        |1         | 180°
1        |0         | 270°

Wenn Du an die Kontakte dieser beiden Taster ein Kabel anlötest, sie mit 
zwei Input Pins des ESP verbindet und den Zustand dieser beiden Input 
Pins überwachst, dürftest Du manuelle Drehungen erkennen können, 
zumindest wenn die Drehung über 90° beträgt.
Aber das gilt halt nur für Drehungen an der Türinnenseite, wenn jemand 
das Schloss von aussen öffnet/schliesst, dann dürfte es keine 
Möglichkeit geben, das zu erkennen.

p.s.: Wenn Du einen ESP verwendest - wie versorgst Du den mit Strom?

: Bearbeitet durch User
von tcsmaxx (Gast)


Lesenswert?

Hallo Hendrik,

ich habe diese Code dafür:
1
void SetDoorState(String state) {
2
  if (state == "1") { // OPEN
3
    Serial.println("open");
4
    pinMode(openLock, OUTPUT);
5
    digitalWrite(openLock, LOW);
6
    delay(200);
7
    pinMode(openLock, INPUT);
8
    mqttClient.publish(doorTopic, "open");
9
  }
10
  if (state == "0") { // CLOSE
11
    Serial.println("close");
12
    pinMode(closeLock, OUTPUT);
13
    digitalWrite(closeLock, LOW);
14
    delay(200);
15
    pinMode(closeLock, INPUT);
16
    mqttClient.publish(doorTopic, "close");
17
  }
18
}

An den GPIO's habe ich jew. einen 4k7 Widerstand dran.

VG Maxx

von tcsmaxx (Gast)


Lesenswert?

Hallo Joachim,

vielen Dank für deine Ausführungen! Das werde ich mir mal ansehen :)
Ich verwende ein 5V Netzteil und versorge damit gleich das Schloss.

VG,
Maxx

von Mirko W. (Gast)


Lesenswert?

Ist jemand von euch schon auf dieses Projekt gestoßen? Hier werden die 
Thermostate inkl. Ventilstellung ausgelesen und die ganzen Modi gesetzt:

https://github.com/Heckie75/eQ-3-radiator-thermostat/blob/master/eq-3-radiator-thermostat-api.md

Kann es sein, dass sich hinter dem 'unknown' mode eine Ansteuerung per 
Ventilstellung versteckt?
Ich würd es gerne testen, hab mir die Thermostate aber gerade erst 
bestellt.

von Joachim S. (oyo)


Lesenswert?

Mirko W. schrieb:
> Kann es sein, dass sich hinter dem 'unknown' mode eine Ansteuerung per
> Ventilstellung versteckt?

Halte ich für äusserst unwahrscheinlich. Das "Mode"-Byte von dem Du 
redest, wo etwas von "unknown" steht - das scheinen lediglich 8 Flags zu 
sein, die etwas über den aktuellen Zustand des Thermostats aussagen. Wie 
eben z.B. das höchstwertige Bit, das anzeigt, ob die Batterie leer ist. 
Oder "dst", das vermutlich anzeigt, ob die Uhr auf Sommer-/Winterzeit 
eingestellt ist.

Mir wäre nicht bekannt, dass man bei dem Thermostat das Ventil direkt 
steuern kann. Auch in der Hersteller-App gibt es ja keine derartige 
Option.

> Ich würd es gerne testen, hab mir die Thermostate aber gerade erst
> bestellt.

Preislich sind die Thermostate echt top. Sie haben aber auch einen 
gravierenden Nachteil: Sie haben quasi keinerlei 
Sicherheitsvorkehrungen. Jeder, der in Funkreichweite des Thermostats 
ist, könnte einem das Thermostat theoretisch nach Belieben verstellen. 
Die Hersteller-App täuscht da zwar eine gewisse Sicherheit in Form einer 
PIN vor, aber das ist vereinfacht gesagt reine Verasche.

Anyway: Eigentlich ist das hier der falsche Thread, hier geht es nicht 
um das Heizungsthermostat, sondern um den Türschlossantrieb der gleichen 
Firma.

von tcsmaxx (Gast)


Lesenswert?

Hallo oyo,

habe dein keyble-Tool auf dem RASPi installiert und muss sagen, super 
Arbeit - es funktioniert alles perfekt!!

Ich hatte bisher immer einen ESP verwendet, der mir die Taster am 
Türschlossantrieb 'betätigt'. Das reicht mit aber jetzt nicht mehr aus, 
da ich weitere Geräte an Türen installiert habe, an den ein Knauf sitzt 
und jetzt auch die Türfalle mit eingezogen werden muss.

Kennst du die Portierung deines Codes von Marius Schiffer für den ESP32?

https://github.com/MariusSchiffer/esp32-keyble

Der Entwickler führt das Projekt nicht mehr fort, da er diesen 
Schlossantrieb nicht mehr verwendet.

Ich habe mir den Port mal auf einen ESP32-Cam geflasht und getestet. 
Prinzipiell funktioniert es, aber nicht zuverlässig und der Status des 
Schloss wir immer mit '1' angegeben. Was mir auch noch aufgefallen ist, 
nach jeder Aktion resettet der ESP.

Da du das Protokoll ja selbst komplett Reverse engineered hast, könntest 
du vielleicht mal schauen wo der Bug liegt? :)

Hier mein forked Repository:

https://github.com/tc-maxx/esp32-keyble

BG
MaXX

von Joachim S. (oyo)


Lesenswert?

Hallo,

tcsmaxx schrieb:
> Kennst du die Portierung deines Codes von Marius Schiffer für den ESP32?
>
> https://github.com/MariusSchiffer/esp32-keyble

Kenne ich leider nur in dem Sinne, dass ich um die Existenz des Projekts 
weiss. Näher damit beschäftigt habe ich mich nie, weil ich keine 
persönliche Verwendung dafür hatte.

> Da du das Protokoll ja selbst komplett Reverse engineered hast, könntest
> du vielleicht mal schauen wo der Bug liegt? :)

Meine C/C++-Kenntnisse sind leider minimal. Dass ich die wichtigsten 
Teile des Protokolls mal reverse engineered habe, bringt mir an der 
Stelle vermutlich auch wenig. Das Resetten des ESP nach jeder Aktion 
dürfte ja auch eher nichts mit dem Protokoll zu tun haben.
Ich fürchte, ich würde mehrere Stunden damit verschwenden, recht planlos 
irgendwas herumprobieren, aber das Problem nicht beheben können. :-(

Aktuell verfolge ich nebenbei meinen alten Plan etwas weiter, einen 
eigenen günstigen 3D-druckbaren Türschlossantrieb zu entwickeln, der 
über ZigBee und BLE gesteuert werden kann. Wenn ich das weiter 
durchziehe, muss ich mich demnächst eh tiefer in C/C++ einarbeiten. 
Eventuell würde ich mir esp32-keyble dann nochmal anschauen, aber auch 
das will ich nicht versprechen.

von Hendrik Friedel (Gast)


Lesenswert?

Hallo,

ich kenne das Projekt von Marius, habe es ausprobiert und war in der 
Vergangenheit mit ihm in Kontakt.
Ein Problem ist, dass der der ESP32 wenn er mit der Arduino Umgebung 
genutzt wird nicht BT und WLan gleichzeitig nutzen kann.
Marius wollte das lösen, indem er die Software auf "nativ" ESP32 
portiert. Mein Vorschlag wäre einfach pragmatisch gewesen:
WLAN an - Lauschen bis Kommando
WLAN aus
BT an Kommando per BT absetzen, reaktion abwarten
BT aus
WLAN an, lauschen was über MQTT so gekommen ist und Status über MQTT 
absenden.

Ich denke, mein Ansatz wäre schnell umgesetzt - wenn man sich besser als 
ich auskennt.

Wieviel Aufwand die Portierung ist (und ob es dann funktioniert) weiß 
ich nicht.

Dennoch finde ich die Lösung über einen ESP32 charmanter, da man kein 
Dateisystem auf SD-Karte, keine Software-Updates, kein nix hat.

Gruß,
Hendrik

von Max M. (tcsmaxx)


Lesenswert?

Hallo Hendrik,

ich glaube das funktioniert. Ich habe noch ein paar andere Sachen 
angepasst und jetzt wird nicht mehr resettet und der Lock-Status wird 
auch korrekt ermittelt.

Ich aktualisiere dann mal mein Repository

VG Maxx

von Hendrik F. (henfri)


Lesenswert?

Max M. schrieb:

> ich glaube das funktioniert. Ich habe noch ein paar andere Sachen
> angepasst und jetzt wird nicht mehr resettet und der Lock-Status wird
> auch korrekt ermittelt.
>
> Ich aktualisiere dann mal mein Repository

Hey cool.

Berichte Mal wir es läuft, dann steige ich auch um.

Gruß,
Hendrik

von Max M. (tcsmaxx)


Lesenswert?

Hi, es funktioniert. Ich hab's hochgeladen.

von Hendrik Friedel (Gast)


Lesenswert?

Hallo Max,

ich habe es getestet. Funktioniert - und zwar deutlich schneller als mit 
dem Raspi.

Dann habe ich einige Änderungen vorgenommen:
1) statt numerischer Kommandos habe ich "lock/unlock/open" implementiert
2) Geheimes in eine secrets.h ausgelagert
3) Support für zwei Locks hinzugefügt

Seit (3) funktioniert es nicht mehr.
Magst du dir das mal ansehen?

https://github.com/henfri/esp32-keyble

Gruß,
Hendrik

von Hendrik Friedel (Gast)


Lesenswert?

P.S: hier der Output:

 # Mit MQTT-Broker verbinden...  verbunden!
# Nachricht empfangen: lock
# Topic: SmartlockHintertuer/command
# Lock Number: 1
Schließen
# WiFi detiviert
# Erhalte Semaphore für Sendekommando
# Nonces austauschen
# Suche ...
# Semaphore abgeben
# WiFi aktiviert
# WiFi getrennt, wiederverbinden...
# WIFI: verbinde...
# WIFI: Verbindung wiederhergestellt: SSiD: FriedelNetz
# WIFI: Signalqualität: 96%
# WIFI: IP-Adresse: 192.168.177.63

von Rop09 (Gast)


Lesenswert?

Hallo zusammen,

ich habe mit einem Raspi4 folgendes Problem (siehe Code unten). Die 
connection funktioniert grundsätzlich, aber nicht sehr zuverlässig.

Mit dem Smartphone kann ich auch aus noch weiterer Entfernung problemlos 
auf das Schloss zugreifen, mit dem Raspi aber ist es sehr unzuverlässig.

Wie man unten sieht gibts im Fehlerfall immer einen Disconnected event 
(nach einem Connect), nachdem rein gar nichts mehr passiert und die SW 
in den Timeout läuft, egal wie lange ich ihn stelle.

Wenn es funzt dann meistens sehr schnell nach <5 Sekunden.  Die 
Entfernung vom BLE 4.0 USB Stick (extern, nicht der interne vom RPi4) 
beträgt etwa 7m + ein Wandstück bzw Glastür mit Wandanteil.
Würde ein BLE 5.0 Stick hier verbesserung bringen?
Ist so ein verhalten bekannt?
1
att 00:1a:22:13:6f:77: write: 020001 +0ms
2
  hci push to acl queue: 024700070003000400020001 +8ms
3
  hci flush - pending: 0 queue length: 1 +2ms
4
  hci write acl data packet - writing: 024700070003000400020001 +2ms
5
  simble:event Peripheral 00:1a:22:13:6f:77 : Event "connected" +0ms
6
  simble:info Connected to peripheral 00:1a:22:13:6f:77 +1s
7
  simble:info Discovering peripheral 00:1a:22:13:6f:77... +2ms
8
  hci onSocketData: 011620024700 +8ms
9
  hci   event type = 1 +1ms
10
  hci           cmd = 8214 +0ms
11
  hci           data len = 2 +1ms
12
  hci onSocketData: 040f0400011620 +0ms
13
  hci   event type = 4 +1ms
14
  hci   sub event type = 15 +0ms
15
  hci           status = 0 +0ms
16
  hci           cmd = 8214 +0ms
17
  hci onSocketData: 043e0c043e47000000000000000000 +1ms
18
  hci   event type = 4 +0ms
19
  hci   sub event type = 62 +0ms
20
  hci           LE meta event type = 4 +1ms
21
  hci           LE meta event status = 62 +0ms
22
  hci           LE meta event data = 47000000000000000000 +0ms
23
  hci onSocketData: 0405040047003e +31ms
24
  hci   event type = 4 +0ms
25
  hci   sub event type = 5 +0ms
26
  hci           handle = 71 +0ms
27
  hci           reason = 62 +0ms
28
  hci flush - pending: 0 queue length: 0 +1ms
29
  simble:event Peripheral 00:1a:22:13:6f:77 : Event "disconnected" +44ms
30
  hci onSocketData: 0119040af8c4eff90ff802000000 +16s
31
  hci   event type = 1 +0ms
32
  hci           cmd = 1049 +0ms
33
  hci           data len = 10 +0ms
34
  hci onSocketData: 040f0400011904 +14ms
35
  hci   event type = 4 +0ms
36
  hci   sub event type = 15 +0ms
37
  hci           status = 0 +0ms
38
  hci           cmd = 1049 +0ms
39
Error: Promise did not resolve within 30000 milliseconds
40
  hci set scan enabled - writing: 010c20020001 +12s

von Joachim S. (oyo)


Lesenswert?

Rop09 schrieb:
> Wie man unten sieht gibts im Fehlerfall immer einen Disconnected event
> (nach einem Connect), nachdem rein gar nichts mehr passiert und die SW
> in den Timeout läuft, egal wie lange ich ihn stelle.
>
> Wenn es funzt dann meistens sehr schnell nach <5 Sekunden.  Die
> Entfernung vom BLE 4.0 USB Stick (extern, nicht der interne vom RPi4)
> beträgt etwa 7m + ein Wandstück bzw Glastür mit Wandanteil.
> Würde ein BLE 5.0 Stick hier verbesserung bringen?
> Ist so ein verhalten bekannt?

Ich kann in dem Debug-Log auf Anhieb leider keine Hinweise finden, was 
der konkrete Grund für den Disconnect sein könnte, mir ist das bislang 
auch nicht als häufig auftretendes Problem bekannt. Ich kann Dir daher 
aktuell leider nicht wirklich helfen, sondern nur zwei Sachen sagen, die 
Du mal probieren könntest um mögliche Problemquellen auszuschliessen:

Die interne BLE-Hardware des RPi scheint häufig merkwürdige Probleme zu 
verursachen, aber da Du ja einen externen Stick nimmst, sollte es daran 
ja eigentlich nicht liegen - es sei denn, die Software würde statt des 
externen Sticks in Wahrheit die interne BLE-Hardware verwenden. Du 
könntest also zum einen mal überprüfen, ob auch ganz sicher der externe 
Stick verwendet wird, z.B. weil beim Verbindungsaufbau irgendeine 
Aktivitäts-LED am externen BLE-Stick aufleuchtet oder so.

Ansonsten würde ich den Türschlossantrieb testweise mal vom Schloss 
abmontieren und in unmittelbarer Nähe des RPi platzierst, um eine 
schlechte Funkverbindung als Problemquellen ausschliessen zu können.

von Rop09 (Gast)


Lesenswert?

Danke für die Antwort!
Am internen RPi BT kanns eigentlich nicht liegen, dass ist aufgrund 
einer falschen Config nicht aktiv (hciconfig zeigt auch nur ein Device 
hci0 an, was der externe Stick ist).

Ich werds mal mit näher rangehen versuchen, hab jetzt mal als Workaround 
erstmal einen sehr kurzem 10sec Timeout eingestellt und lasse dann beim 
Fehlschlag sofort wiederholen, das geht einigermassen, kann aber auch 
mal 10 Versuche brauchen bis die Verbindung steht.

von Rop09 (Gast)


Lesenswert?

War leider nicht erfolgreich, auch mit extra bestelltem neuem BLE5 Stick 
und dem Schloss 1m daneben genau das gleiche.
Hier nochmal ein kompletter Log vom Fehlerfall:#
1
hci setting filter to: 1600000020c10800000000400000 +0ms
2
  hci set event mask - writing: 01010c08fffffbff07f8bf3d +7ms
3
  hci set le event mask - writing: 010120081f00000000000000 +0ms
4
  hci read local version - writing: 01011000 +1ms
5
  hci write LE host supported - writing: 016d0c020100 +0ms
6
  hci read LE host supported - writing: 016c0c00 +1ms
7
  hci le read buffer size - writing: 01022000 +0ms
8
  hci read bd addr - writing: 01091000 +0ms
9
  hci onSocketData: 040e0402010c00 +6ms
10
  hci   event type = 4 +0ms
11
  hci   sub event type = 14 +1ms
12
  hci           cmd = 3073 +0ms
13
  hci           status = 0 +0ms
14
  hci           result =  +0ms
15
  hci onSocketData: 040e0402012000 +1ms
16
  hci   event type = 4 +1ms
17
  hci   sub event type = 14 +0ms
18
  hci           cmd = 8193 +0ms
19
  hci           status = 0 +0ms
20
  hci           result =  +0ms
21
  hci onSocketData: 040e0c020110000a7b090a5d0043ec +0ms
22
  hci   event type = 4 +0ms
23
  hci   sub event type = 14 +0ms
24
  hci           cmd = 4097 +1ms
25
  hci           status = 0 +0ms
26
  hci           result = 0a7b090a5d0043ec +0ms
27
  hci set scan enabled - writing: 010c20020001 +0ms
28
  hci set scan parameters - writing: 010b200701100010000000 +1ms
29
  hci onSocketData: 040e04026d0c00 +0ms
30
  hci   event type = 4 +0ms
31
  hci   sub event type = 14 +0ms
32
  hci           cmd = 3181 +1ms
33
  hci           status = 0 +0ms
34
  hci           result =  +0ms
35
  hci onSocketData: 040e06026c0c000100 +0ms
36
  hci   event type = 4 +0ms
37
  hci   sub event type = 14 +0ms
38
  hci           cmd = 3180 +0ms
39
  hci           status = 0 +0ms
40
  hci           result = 0100 +0ms
41
  hci                   le = 1 +1ms
42
  hci                   simul = 0 +0ms
43
  hci onSocketData: 040e07020220001b0008 +1ms
44
  hci   event type = 4 +0ms
45
  hci   sub event type = 14 +0ms
46
  hci           cmd = 8194 +0ms
47
  hci           status = 0 +0ms
48
  hci           result = 1b0008 +0ms
49
  hci le buffer size: length = 27, num = 8 +0ms
50
  hci onSocketData: 040e0a02091000fbafacbb0144 +3ms
51
  hci   event type = 4 +0ms
52
  hci   sub event type = 14 +0ms
53
  hci           cmd = 4105 +0ms
54
  hci           status = 0 +0ms
55
  hci           result = fbafacbb0144 +0ms
56
  hci address = 44:01:bb:ac:af:fb +1ms
57
  noble addressChange 44:01:bb:ac:af:fb +0ms
58
  hci onSocketData: 040e04020c2000 +2ms
59
  hci   event type = 4 +0ms
60
  hci   sub event type = 14 +0ms
61
  hci           cmd = 8204 +0ms
62
  hci           status = 0 +0ms
63
  hci           result =  +0ms
64
  hci onSocketData: 040e04020b2000 +2ms
65
  hci   event type = 4 +0ms
66
  hci   sub event type = 14 +0ms
67
  hci           cmd = 8203 +0ms
68
  hci           status = 0 +0ms
69
  hci           result =  +0ms
70
  noble stateChange poweredOn +5ms
71
  noble scanParametersSet +1ms
72
  simble:info Starting to scan for peripheral... +0ms
73
  hci set scan enabled - writing: 010c20020001 +3ms
74
  hci set scan parameters - writing: 010b200701100010000000 +0ms
75
  hci set scan enabled - writing: 010c20020101 +0ms
76
  hci onSocketData: 040e04020c2000 +2ms
77
  hci   event type = 4 +0ms
78
  hci   sub event type = 14 +0ms
79
  hci           cmd = 8204 +0ms
80
  hci           status = 0 +0ms
81
  hci           result =  +0ms
82
  noble scanStart +4ms
83
  hci onSocketData: 040e04020b2000 +3ms
84
  hci   event type = 4 +0ms
85
  hci   sub event type = 14 +0ms
86
  hci           cmd = 8203 +0ms
87
  hci           status = 0 +0ms
88
  hci           result =  +0ms
89
  noble scanParametersSet +2ms
90
  hci onSocketData: 040e04020c2000 +2ms
91
  hci   event type = 4 +0ms
92
  hci   sub event type = 14 +0ms
93
  hci           cmd = 8204 +0ms
94
  hci           status = 0 +0ms
95
  hci           result =  +0ms
96
  hci onSocketData: 043e1d02010400776f13221a001108094b45592d424c4507ff001a22136f77bb +8s
97
  hci   event type = 4 +0ms
98
  hci   sub event type = 62 +1ms
99
  hci           LE meta event type = 2 +0ms
100
  hci           LE meta event status = 1 +0ms
101
  hci           LE meta event data = 0400776f13221a001108094b45592d424c4507ff001a22136f77bb +1ms
102
  hci                   type = 4 +1ms
103
  hci                   address = 00:1a:22:13:6f:77 +0ms
104
  hci                   address type = public +1ms
105
  hci                   eir = 08094b45592d424c4507ff001a22136f77 +0ms
106
  hci                   rssi = -69 +1ms
107
  gap advertisement = {"localName":"KEY-BLE","manufacturerData":{"type":"Buffer","data":[0,26,34,19,111,119]},"serviceData":[],"serviceUuids":[],"solicitationServiceUuids":[]} +0ms
108
  simble:info   Scanned peripheral 00:1a:22:13:6f:77 (Name:"KEY-BLE", advertised services:[]) +8s
109
  simble:info Peripheral 00:1a:22:13:6f:77 matches filters, stopping scanning +1ms
110
  hci set scan enabled - writing: 010c20020001 +10ms
111
  simble:info Connecting to peripheral 00:1a:22:13:6f:77... +3ms
112
  hci create le conn - writing: 010d2019600030000000776f13221a000006000c000000c80004000600 +6ms
113
  hci onSocketData: 040e04020c2000 +1ms
114
  hci   event type = 4 +0ms
115
  hci   sub event type = 14 +1ms
116
  hci           cmd = 8204 +0ms
117
  hci           status = 0 +1ms
118
  hci           result =  +0ms
119
  noble scanStop +8s
120
  hci onSocketData: 040f0400020d20 +1ms
121
  hci   event type = 4 +1ms
122
  hci   sub event type = 15 +0ms
123
  hci           status = 0 +0ms
124
  hci           cmd = 8205 +1ms
125
  hci onSocketData: 043e13010010000000776f13221a000c000000c80000 +1s
126
  hci   event type = 4 +0ms
127
  hci   sub event type = 62 +1ms
128
  hci           LE meta event type = 1 +0ms
129
  hci           LE meta event status = 0 +0ms
130
  hci           LE meta event data = 10000000776f13221a000c000000c80000 +0ms
131
  hci                   handle = 16 +1ms
132
  hci                   role = 0 +0ms
133
  hci                   address type = public +0ms
134
  hci                   address = 00:1a:22:13:6f:77 +0ms
135
  hci                   interval = 15 +0ms
136
  hci                   latency = 0 +0ms
137
  hci                   supervision timeout = 2000 +0ms
138
  hci                   master clock accuracy = 0 +0ms
139
  att 00:1a:22:13:6f:77: write: 020001 +0ms
140
  hci push to acl queue: 021000070003000400020001 +4ms
141
  hci flush - pending: 0 queue length: 1 +1ms
142
  hci write acl data packet - writing: 021000070003000400020001 +0ms
143
  simble:event Peripheral 00:1a:22:13:6f:77 : Event "connected" +0ms
144
  simble:info Connected to peripheral 00:1a:22:13:6f:77 +1s
145
  simble:info Discovering peripheral 00:1a:22:13:6f:77... +1ms
146
  hci onSocketData: 011620021000 +3ms
147
  hci   event type = 1 +0ms
148
  hci           cmd = 8214 +1ms
149
  hci           data len = 2 +0ms
150
  hci onSocketData: 040f0400021620 +0ms
151
  hci   event type = 4 +0ms
152
  hci   sub event type = 15 +0ms
153
  hci           status = 0 +0ms
154
  hci           cmd = 8214 +0ms
155
  hci onSocketData: 0405040010003e +1ms
156
  hci   event type = 4 +0ms
157
  hci   sub event type = 5 +0ms
158
  hci           handle = 16 +0ms
159
  hci           reason = 62 +0ms
160
  hci flush - pending: 0 queue length: 0 +0ms
161
  simble:event Peripheral 00:1a:22:13:6f:77 : Event "disconnected" +6ms
162
Error: Promise did not resolve within 35000 milliseconds
163
  hci set scan enabled - writing: 010c20020001 +26s

von Hendrik (Gast)


Lesenswert?

Du könntest Mal die esp32 Variante ausprobieren.

von Rop09 (Gast)


Lesenswert?

Hendrik schrieb:
> Du könntest Mal die esp32 Variante ausprobieren.

hab ich mir jetzt auch mal installiert (leicht abgeändert), funktioniert 
aber leider nicht viel besser.

Im Gegenteil, der ESP hängt sich auch oft einfach auf wenn er versucht 
die Verbindung aufzubauen (im eQ3 Teil).

von Joachim S. (oyo)


Lesenswert?

Rop09 schrieb:
> War leider nicht erfolgreich, auch mit extra bestelltem neuem BLE5 Stick
> und dem Schloss 1m daneben genau das gleiche.

Tut mir leid Rop09, damit bin ich jetzt gerade mit meinem Latein 
ziemlich am Ende.
Wobei mich irgendwie verwirrt, dass die ESP32-Version ähnliche Probleme 
zu haben scheint, und auch ungefähr an der gleichen Stelle. Denn ich 
hätte jetzt tendenziell getippt, dass das Problem "unterhalb" von keyble 
steckt, in der für die Bluetooth-Kommunikation zuständigen 
"noble"-Library. Dass die ESP32-Version, die diese Library nicht nutzt, 
ähnliche Probleme an der gleichen Stelle hat, spricht da eher dagegen...

Die letzte Sache, die mir aktuell noch einfällt, bei der ich es aber 
trotzdem für ziemlich unwahrscheinlich halte, dass es etwas an dem 
Problem ändert:
Du könntest testweise mal versuchen, die neue keyble-Codebasis 0.3 zu 
verwenden, weil da ein bisschen was verändert wurde und eine neuere 
Version der "noble"-Library verwendet wird.
Ist allerdings mehr so im Alpha/Beta-Stadium, noch nicht richtig 
dokumentiert, bislang nur per MQTT zu nutzen usw.:

https://github.com/oyooyo/keyble-mqtt

von Rop09 (Gast)


Lesenswert?

Danke, ist dann der nächste Versuch!

Wobei ich beim ESP32 noch nicht ganz sicher bin obs wirklich so schlecht 
ist. Hatte heute mal die Situation dass ganz hervorragend gut 
funktioniert hat, quasi nur 1-2 Sekunden gedauert hat bis das Lock 
reagiert hat und zwar jedesmal!

Nachdem ich dann den ESP wegen ner kleinen Änderung neu geflasht hatte 
wars wieder dann nicht mehr so toll. Gefühlt ist es oft so dass die 
allererste Connection länger dauert, und es danach schnell geht (obwohl 
ja der ESP die BT Connection immer wieder trennt), fast so als ob das 
Schloss meint es wäre noch verbunden...

von Rop09 (Gast)


Lesenswert?

Gerade mal probiert, aber auch nicht erfolgreich:

a) ohne Root ausgeführt:
1
  mqttjs:client _handlePublish: qos 0 +0ms
2
(node:6469) UnhandledPromiseRejectionWarning: Error: noble did not change to the "poweredOn" state within 5000 milliseconds. This usually indicates that either no Bluetooth hardware is available, or that you do not have sufficient permissions for accessing the Bluetooth hardware.
3
    at Timeout.setTimeout [as _onTimeout] (/usr/local/lib/node_modules/keyble-mqtt/node_modules/keyble/utils.js:254:11)
4
    at ontimeout (timers.js:436:11)
5
    at tryOnTimeout (timers.js:300:5)
6
    at listOnTimeout (timers.js:263:5)
7
    at Timer.processTimers (timers.js:223:10)
8
(node:6469) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
9
^C  hci set scan enabled - writing: 010c20020001 +42s
10
  hci onSocketError: EPERM, Operation not permitted +0ms

und daher

b) mit root, aber:
1
/usr/local/lib/node_modules/keyble-mqtt/node_modules/keyble/keyble.js:544
2
                        receive_characteristic.off('data', on_data_received);
3
                        ^
4
5
ReferenceError: receive_characteristic is not defined
6
    at Peripheral.peripheral.once (/usr/local/lib/node_modules/keyble-mqtt/node_modules/keyble/keyble.js:544:4)
7
    at Object.onceWrapper (events.js:277:13)
8
    at Peripheral.emit (events.js:189:13)
9
    at Noble.onDisconnect (/usr/local/lib/node_modules/keyble-mqtt/node_modules/@abandonware/noble/lib/noble.js:245:16)
10
    at NobleBindings.emit (events.js:189:13)
11
    at NobleBindings.onDisconnComplete (/usr/local/lib/node_modules/keyble-mqtt/node_modules/@abandonware/noble/lib/hci-socket/bindings.js:280:10)
12
    at Hci.emit (events.js:189:13)
13
    at Hci.onSocketData (/usr/local/lib/node_modules/keyble-mqtt/node_modules/@abandonware/noble/lib/hci-socket/hci.js:557:12)
14
    at BluetoothHciSocket.emit (events.js:189:13)

von Rop09 (Gast)


Lesenswert?

Mal noch was anderes - ich hab den ESP32 jetzt soweit modifiziert dass 
er recht zuverlässig läuft, und gebe mir zusätzlich noch die RAW Daten 
über MWQTT aus wenn ich den Status abfrage, z.B.:

72 01 0A 00 10 17 00 00

Irgendwo hatte ich gelesen dass da auch die Info über den Batteriestatus 
drin steckt, kanns aber nicht mehr finden welches Bit das war, weiss das 
jemand?

von Hendrik (Gast)


Lesenswert?

Hallo,

Was hast du denn modifiziert?

Magst du nen Pull Request erstellen, damit die Entwicklung weiter geht?

Gruß,
Hendrik

von Rop09 (Gast)


Lesenswert?

Hallo,

ich habs mal gezipped und auf git hochgeladen (bin leider nicht mit der 
Vorgehensweise da vertraut ;)

Was ich geändert habe:

- Wifi reconnect abfolge geändert, ESP reset wenn länger fehl schlägt, 
andere Interfaces verwendet
- MQTT reconnect geändert, weil ich dort den Verdacht habe dass er da 
den Stack zumüllt wenn der Reconnect nicht geht (bei mir wird Nachts 
immer das WLAN unterbrochen für einige Zeit, denk das ist der Zeitpunkt 
wo er sich aufgehängt hat deswegen).
- Scanning parameter geändert, hier bin ich aber noch am probieren
- eQ3 lib, Mutex timeout auf 10s (nicht sicher ob das was bringt, aber 
vorher wars so dass sich der ESP öfter mal im BLE Teil verannt hatte
- Status command über MQTT zur Schlossstatus Abfrage
- Timeout handling falls Schloss nicht antwortet (mit timeout error 
Rückgabe über MQTT)
- RAW data ausgabe über MQTT
Denke das wars soweit, war ziemlich viel Trial&Error anfangs weil der 
ESP sich über nacht immer aufgehängt hatte, macht er damit jedenfalls 
nicht mehr.

Was noch fehtl ist die Batteriezustandsausgabe über MQTT und die 
Scanning parameter setting über MQTT umd da etwas zu experimentieren.

Ist alles nicht sehr schön gemacht, nur funktional ;)

Der ganze Vorgang (MQTT kommando empfange -> BLE connection, Kommando 
ausführen und wieder WLAN verbinden und Status senden) zwischen 7 und 25 
Sekunden, sehr unterschiedlich lange.

Vereinzelt gibts auch noch BLE timeouts (35sec), das liegt denk ich an 
der Platzierung, wobei er andererseits auch durch 3 Wände hindurch mit 
10m Abstand zum Schloss funktioniert...

von Hendrik Friedel (Gast)


Lesenswert?

Hallo,

zippen und Hochladen ist nicht gut...
Die Idee hinter git ist ja, dass die Änderungen nachvollziehbar sind. 
Daher ist es auch am Besten für jede Verbesserung einen Commit 
("Upload") zu machen.

Wenn du dich mit git schwer tust, dann nutz einfach das Web-Interface 
auf github: Du kannst jede Datei "editieren". Es öffnet sich ein Editor 
im Browser. Nachdem du mit einem Problem, welches du behoben hast fertig 
bist (das kann durchaus mehrere Dateien beinhalten, die du ändern 
musst), dann machst du einen Pull-Request. Damit bittest du den 
ursprünglichen Autor deine Änderungen zu prüfen und bei sich zu 
übernehmen.

Ich hoffe, das ist einigermaßen verständlich. Es wäre echt super, wenn 
du dich da reinarbeitest.
Vielleicht mag @tcsmaxx deine Änderungen ja auch manuell aus der Zip 
übernehmen (hast du mal einen Link?).

Gruß,
Hendrik

von Hendrik Friedel (Gast)


Lesenswert?

Hallo,

wo hast du die Zip denn hochgeladen?
Ich wollt mir das gerade mal ansehen.

Gruß,
Hendrik

von Max M. (tcsmaxx)


Lesenswert?

Hi@all,

ich habe die Änderungen ungetestet bei mir im Repository committed.

https://github.com/tc-maxx/esp32-keyble

von Hendrik Friedel (Gast)


Lesenswert?

Hallo,

vielen Dank.
Für die Zukunft wäre es allerdings wünschenswert, wenn alle mit git 
arbeiten und Änderungen in kleinen Happen kommitten, so dass man sehen 
kann, was miteinander zusammenhängt und welchen Zweck hat.

Gruß,
Hendrik

von Adrian K. (adriankan)


Lesenswert?

Hallo tcsmaxx,

sehr interesannte Ansatz.
Das habe ich gleich ausprobiert mit wemos mini32, leider ohne Erfolg.
Woran merke ich es ob der ESP mit der EQ3 verbunden ist?
Des weiteren weiss nicht was man hie richtige einträgt:
#define ADDRESS "xxx"
#define USER_KEY "xxxx"
#define USER_ID 2
#define CARD_KEY "M001A2213XXXXXXXXXXXXX"
Eine Erklärung im Netz habe ich leider nicht gefunden.
Aus dem IObroker / npn Forum ein paar Ansetze, aber??

LG

von Al O. (cyber83)


Lesenswert?

Da gehören user, mac und key, den du mit keyble beim registrieren mit 
dem schloss aushandelst, hinein.

von Max M. (tcsmaxx)


Lesenswert?

@adriankan,
hier ist dazu alles erklärt: https://github.com/oyooyo/keyble

von Adrian K. (adriankan)


Lesenswert?

danke,
 habe die Anleitung verfolgt.
auch NPN und das System geupdatet.
aber, nach dem :
keyble-registeruser -n ABC-q XXXXXXXXXX
bekomme ich nur die Infos:
Registering user on Smart Lock with address "00:1a:YX:13:XX:a9", card 
key "1576b7256401XXXXXXXXXfc97a36" and serial "QEQ0XXX2"...

und weiter nichts
da fehlt noch:
User registered. Use arguments: --address 01:XX:XX:67:89:ab --user_id 1 
--user_key ca78aXXXXX31414359e5e7cecfd7f9e
Setting user name to "ABC"..

wie kann das Problem lösen.
aktuell habe ich Node.js v12.22.1  // bei 14 ging da gar nicht

was fehlt da noch?

von Joachim S. (oyo)


Lesenswert?

Adrian K. schrieb:
> danke,
>  habe die Anleitung verfolgt.
> auch NPN und das System geupdatet.
> aber, nach dem :
> keyble-registeruser -n ABC-q XXXXXXXXXX
> bekomme ich nur die Infos:
> Registering user on Smart Lock with address "00:1a:YX:13:XX:a9", card
> key "1576b7256401XXXXXXXXXfc97a36" and serial "QEQ0XXX2"...
>
> und weiter nichts
> da fehlt noch:
> User registered. Use arguments: --address 01:XX:XX:67:89:ab --user_id 1
> --user_key ca78aXXXXX31414359e5e7cecfd7f9e
> Setting user name to "ABC"..

Schalte mal die Debug-Ausgabe ein, indem Du vor den 
"keyble-registeruser"-Befehl noch ein "DEBUG=* " davorsetzt. keyble 
liefert leider so gut wie keine Fehlermeldungen, wenn etwas nicht wie 
erwartet funktioniert.

von Adrian K. (adriankan)


Lesenswert?

Hallo,

habe jetzt den Fehler, glaube ich, gefunden.

Der EQ3 soll sich weniger als 0,5m entfernt vom Raspi befinden.

Danke noch mal für Untestüzung.

von John L. (johnli)


Lesenswert?

Ist eine Video-Demo verfügbar?

von Thomas (type0n)


Lesenswert?

Hi,

ich habe mal mit der ESP32 Umsetzung von tscmaxx/Rop09 rumgespielt.

Hier findet Ihr was dabei herausgekommen ist:

https://github.com/lumokitho/esp32-keyble

- AP Mode zum Konfigurieren der WLAN Verbindung (AutoConnect)
- Webinterface zum hinterlegen der MQTT Zugangsdaten und der 
Schlossparamter
- RSSI Signalstärke des Schlossantriebs
- Battery Status
- Toggle Funktion
- Weitere MQTT Endpunkte (Batterie/Zustand/Signalstärke)
- Boot Button des ESP32 toggelt das Schloss
- Partitionsatabelle angepasst
- OTA Update via BIN upload
- Hardkodierte Zugangsdaten entfernt
- Einheitliche Ausgaben über Serial

Eine Anleitung findet Ihr bei GIT. Gucked mal drüber, ob man damit etwas 
anfangen kann.

Schönen Abend!

von Hendrik (Gast)


Lesenswert?

Wow Danke!

Ich hatte Mal versucht, zwei Schlösser zu unterstützen. Dabei bin ich 
gescheitert - hab ich weiter oben etwas zu geschrieben.
Du scheinst dich gut auszukennen :-)
Hast du eine Idee?

Ich werde deine Variante Mal probieren.

Gruß,
Hendrik

von Thomas (type0n)


Lesenswert?

Hi Hendrik,

ich denke, dass es möglich ist mehrere Schlösser nacheinander 
anzusprechen.
Dazu müssten halt die Daten für die weiterern Schlössern hinterlegt 
werden und entsprechend weitere Topics.  Fraglich ist hierbei die 
Koordination von aussen und aus meiner Sicht auch die Reichweite des 
ESP. Bei einer Investition von rund 5€ für den ESP, weiter 5€ für ein 
Netzteil und einem USB Kabel/Adapter, kommt man so auf rund 10€ für eine 
BLEtoWiFi Bridge pro Schlossantrieb. Bestellt man in China ist man mit 
nur 5€ dabei.
Falls hier tatsächlich Bedarf besteht guck mir das mal an.

Ich warte mal auf euer feedback.

Was mir definitiv noch fehlt ist, das Registieren eines Benutzers, damit 
die Bridge völlig eigenständig arbeiten kann. Das hat bei mir momentan 
höhere Priorität.

Schönen Gruß
Thomas

von Joachim S. (oyo)


Lesenswert?

Thomas F. schrieb:
> - AP Mode zum Konfigurieren der WLAN Verbindung (AutoConnect)
> - Webinterface zum hinterlegen der MQTT Zugangsdaten und der
> Schlossparamter
> - RSSI Signalstärke des Schlossantriebs
> - Battery Status
> - Toggle Funktion
> - Weitere MQTT Endpunkte (Batterie/Zustand/Signalstärke)
> - Boot Button des ESP32 toggelt das Schloss
> - Partitionsatabelle angepasst
> - OTA Update via BIN upload
> - Hardkodierte Zugangsdaten entfernt
> - Einheitliche Ausgaben über Serial

Hut ab - was Du da an Features auflistest, das klingt verdammt 
vielversprechend!

Mir ist gerade aufgefallen, dass ich die diversen ESP32-Ports in der 
keyble-Dokumentation bislang gar nicht erwähnt habe. Wenn ich das 
nächste Mal was committe, werde ich da mal einen entsprechenden 
Abschnitt einfügen und dann vermutlich ganz besonders Deinen Fork 
empfehlen, weil der auf den ersten Blick am ausgereiftesten und 
einsteigerfreundlichsten klingt.

Einen grossen Teil der Vorarbeit haben ja andere geleistet, die daher 
ebenfalls erwähnt werden sollten. Da ich mich mit den ESP32-Ports 
bislang nicht selbst wirklich befasst habe, fehlt mir gerade so ein 
bisschen der Überblick, wer da alles beteiligt war: gibt es ausser
MariusSchiffer, tcs-maxx und lumokitho noch jemanden, der nennenswert 
zur Entwicklung der ESP32-Version beigetragen hat und daher erwähnt 
werden sollte?

von Thomas (type0n)


Lesenswert?

Hallo Joachim,

der Stand mit dem ich gestartet bin war der von RoP09 welcher, als Zip 
von tc-maxx in seinen Fork hochgeladen wurde. Somit ist RoP09 als Quelle 
zu nennen. Er hat zwar nun wohl eine GIT account, aber der ist leider 
leer.

Ich hatte mich schon vor Deinem Ansatz mit den Antrieben beschäftigt 
(ganz weit oben in Thread) mittels Tasker auf einem Android Telefon. 
Dann ruhte das eine Weile und ich habe mich mit Deiner letzten Umsetzung 
vor dem Umbau beschäftigt. Diese habe ich auf meine Bedürfnisse 
angepasst (mehrer Schlösser gleichzetig über mehrere BLE USB Sticks, zur 
Zeit 5) und auf einem Pi Zero laufen. Dazu musste ich auch an simble 
einige wenige Änderungen durchführen. Mittlerweile recht stabil. Sobald 
ich das mal "aufgeräumt" habe lade ich auch diese Version mal bei GIT 
hoch.

Angefixt wurde ich durch tc-maxx, als dieser eine recht stabile ESP32 
Version herausgebracht hat. Ich finde den Ansatz mit einer Bridge pro 
Schloss doch schon sehr charmant. Da wird die Lücke zum viel teureren 
NUKI schon etwas kleiner. Hauptsächlich deshalb, weil alles lokal läuft.

Nochmal großen Dank an alle, die so gute Vorarbeit geleistet haben!

Gruß
Thomas

von Hendrik (Gast)


Lesenswert?

Hallo,

das mit den mehreren Locks hat keine Priorität. Natürlich sind die ESP 
preiswert. Aber ich habe das Problem, sie unterzubringen. Da mein 
Raspi-Zero es geschafft hat, zwei Locks zu bedienen (Reichweite OK will 
ich damit sagen), hatte ich die Hoffnung auch nur einen ESP unterbringen 
zu müssen - und da hätte ich in einer Taster-Dose / UP Dose Platz für 
einen ESP32. Zur Not könnte man zwei nackte ESP32 (d.h. nicht auf so 
einem Dev-Board) unterkriegen. Aber da weiß ich nicht, wie ich sie 
flashe. Da müsste ich mich mal erkundigen.

Ich müsste auch erstmal prüfen, ob der Empfang in der UP Dose noch 
ausreichend ist.

Ich habe gerade mal deine Firmware geflasht. Sie hat mich dann auch 
gleich mit ihrem Web-Interface begrüßt (ich hatte leider vergessen den 
Flash zu löschen, daher waren die Credentials noch da).
Nach dem Konfigurieren der MQTT und Schloss-Einstellungen war aber dann 
Schicht:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
[E][Preferences.cpp:49] begin(): nvs_open failed: NOT_FOUND
[E][WiFiSTA.cpp:221] begin(): connect failed!

Woran kann das liegen?

Gruß,
Hendrik

von Hendrik (Gast)


Lesenswert?


von Thomas (type0n)


Lesenswert?

Hallo Hendrik,

versuch mal bitte den Flash zu löschen. Dein ESP wird eine andere 
Partitionierung haben. Durch die Erweiterungen die ich eingebaut haben 
war es nötig, die Partitionierung zu ändern. Also Flash vollständig 
löschen, dann sollte das klappen.

Schönen Gruß
Thomas

von Al O. (cyber83)


Lesenswert?

Hallo Thomas,

gibts auch die Möglichkeit per json HTTP stati abzufragen?
Ich wollte gerade auf github dazu eine frage aufmachen, aber ich denke 
das hast bei deinem projekt leider nicht aktiv?

So wie ich es im code sehe wird wifi disconnected beim connecten zum 
schloss - gibts dafür keine Alternative? :-/

LG Alois

von Hendrik Friedel (Gast)


Lesenswert?

Hallo,

ich habe es jetzt soweit geschafft das Gerät zu konfigurieren. Es ist im 
WLAN und spricht mit dem MQTT Broker.
Ein Verbesserungsvorschlag: Den Port hatte ich unter MQTT freigelassen, 
annehmend, dass dann der Default genommen wird. Das hat zu einer 
Endlosschleife (connection refused) geführt und ich musste neu flashen, 
da das Webinterface nicht erreichbar war.

Das Schloss habe ich aber noch nicht schalten können:
SmartlockHintertuer/task working
SmartlockHintertuer/state timeout
SmartlockHintertuer/task waiting
SmartlockHintertuer/rssi 107
SmartlockSchuppen/action lock
SmartlockHintertuer/task lock
SmartlockHintertuer/task unlock
SmartlockHintertuer/task 0
SmartlockHintertuer/task 1
SmartlockHintertuer/task close
SmartlockHintertuer/task 3
SmartlockHintertuer/task 3
SmartlockHintertuer/task 3
SmartlockHintertuer/task 2


Wie du siehst, wusste ich zunächst nicht, welche Payloads ich senden 
musste. Das habe ich dann hoffentlich dem Sourcecode richtig entnommen.

Das Schloss hat sich aber nicht bewegt.

Der Rssi vom Lock wird ja angezeigt. Was können wir daraus schließen? 
Nur dass eine Verbindung besteht, oder auch dass die Credentials ok 
sind?
Ich bin eigentlich recht sicher, dass die Stimmen, da ich sie auf dem 
Raspi so verwendet habe...

Gruß,
Hendrik

von Thomas (type0n)


Lesenswert?

Hallo Alois,

eine Kommunikation über http ist nicht vorgesehen, alles wird über MQTT 
gesteuert. Via Arduino ist mir keine Möglichkeit bekannt WiFi und BLE 
gleichzeitig stabil zu betreiben. Hier müsste man auf Espressif-IDF 
portieren, da bin ich aber nicht im Thema. Daher der Wechsel von WiFi zu 
BLE und zurück. Daran habe ich nichts verändert, das ist so geblieben 
wie bei RoP09.

Schönen Gruß
Thomas

von Thomas (type0n)


Lesenswert?

Hallo Hendrik,
kurz zum Port. Ich halte nichts von default Ports, jede Netzwerkumgebung 
ist anders, daher ist die Porteingabe nötig. Mal gucken, ob ich das als 
Pflichfeld behandeln kann.

Num zum ansprechen der Bridge.

das Bridge published auf:
- "DeinTopic"/battery
- "DeinTopic"/rssi
- "DeinTopic"/status
- "DeinTopic"/task

Die Bridge subscribed auf:
- "DeinTopic"/command

Du musst also mit einem MQTT Client der mit deinem Broker (identisch mit 
dem in der Bridge hinterlegten) vebunden ist auf:

"DeinTopic"/command/X publishen

Zur Zeit gehen folgende Werte
- 1 zur Statusabfrage
- 2 zum Aufschließen
- 3 zum Abschließen
- 4 zum Öffnen (Aufschließen und Falle wird gezogen)
- 5 zum Umschalten (bei abgeschlossen auf und bei aufgeschlossen zu)

Willst Du also aufschließen sendest Du:
"DeinTopic"/command/1

Guck mal im GIT Readme, da ist das erklärt.

Falls Dein ESP einen Boot Button hat, kannst Du damit testen, ob eine 
Verbindung besteht, weil dadurch umgeschaltet wird.

Der RSSI deutet darauf hin, wie gut die BLE Verbindung ist. Bei 107 ist 
das Schloss entweder sehr weit entfernt, es gibt Störquellen in der Nähe 
(z.B. WiFI/Bluetooth/BLE/ZigBee/Z-Wave/MiWi/Loxone Air etc. alles im 
2,4GHz Band), oder Hindernisse (Gipskarton/Metall/Beton/Naturstein ect.) 
zwischen Bridge und Lock. Aus meiner Erfahrung ist alles was Wasser 
speichern kann tödliche für Funkverbindungen! Eine 20cm Bentonwand 
funktioniert besser als eine einzige Lage Gipskarton.

Schönen Gruß
Thomas

: Bearbeitet durch User
von Hendrik (Gast)


Lesenswert?

Hallo,

danke, ich habe jetzt schalten können!
Ich habe das in der Readme übersehen, sorry.
Zwischendurch hatte ich nochmal das Problem, dass er die WLAN 
Credentials wieder vergessen hat... Keine Ahnung woran das nun lag.

Gruß,
Hendrik

von Hendrik (Gast)


Lesenswert?

Hallo,

ich hatte den ESP jetzt einen Tag nicht angeschlossen. Jetzt hab ich ihn 
heute wieder eingesteckt und er meldet sich nicht über mqtt.
Also den seriellen Monitor dran:

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded

[E][WiFiSTA.cpp:221] begin(): connect failed!

Empfang ist (hier, wo ich jetzt den seriellen Monitor hab) aber top. Es 
kann durchaus sein, dass der Empfang am Einbauort nicht gut war.
Vergisst er dann die Credentials wieder?

Ich hab mich dann mit dem AP verbunden:
[E][WebServer.cpp:633] _handleRequest(): request handler not found
[E][WebServer.cpp:633] _handleRequest(): request handler not found
[E][WebServer.cpp:633] _handleRequest(): request handler not found
[E][WebServer.cpp:633] _handleRequest(): request handler not found
[E][WebServer.cpp:633] _handleRequest(): request handler not found
[E][WebServer.cpp:633] _handleRequest(): request handler not found
# WIFI: connected to SSiD: XNetz
# WIFI: connected!
# WIFI: signalquality: 78%
# WiFi connected to IP: 192.168.177.27
# Connect to MQTT-Broker...
# Connected!
# published SmartlockHintertuer/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...

Die Lock und MQTT-Settings hatte er noch.

Gruß,
Hendrik

von Thomas (type0n)


Lesenswert?

Hi Hendrik,

ich gehe mal von mehreren Punkten aus, die hier zusammenkommen.

Ist die Spannungsversorgung vom ESP stabil und ausreichend? Wenn der ESP 
mit einem "schlechten" Netzteil verbunden ist, kommt es zu 
unvorhersehbarem Verhalten. Ich habe beim testen ähnliches Verhalten 
festgestellt, bei mir lag es an zu wenig Saft für den ESP. Also aktiven 
Hub benutzen.

Wie weit ist das Schloss entfernt?

Was kommt beim Broker an?

Bist Du 1:1 der Anleitung bei GIT gefolgt?
Zur Zeit gibt es so gut wie kein Errorhandling.

Wie sieht deine Netzwerkstruktur aus?
Ein Router, mehrere Router, APs etc.

Laut dem Seriallog, gehe ich von falschen Zugangsdaten aus. Tückisch 
sind hier die Passwortfelder, hier muss jedes mal das Kennwort 
eingetragen werden. Wie geschrieben, noch keine Fehlerbehandlung im 
Programm.

Ich schlage mal vor, das Du wie folgt vorgehst:

ESP vollständig löschen.
Browsercache leeren, alternativ über Inkognito/Privaten Modus verbinden.

KeyBLEBridge Netzwerk löschen, ich gehe mal davon aus, dass Du mit 
Windows unterwegs bist?

Erneut flashen. Nutzt Du Platformio?

Den ESP dort in Betrieb nehmen, wo er auch später eingesetzt werden 
soll. Falls das Verhalten mit z.B. mehreren Netzen mit gleichem Namen 
zusammenhängt.

Im Bestfall alles mit Seriallog.

Zum AP verbinden.
Zugang zum eigenen Netz eintragen, mit fester IP, also DHCP aus!
Netzmaske und DNS nicht vergessen, DNS1 sollte Dein Router sein, als 
DNS2 kannst Du z.B. google nehmen 8.8.8.8

Vorab checken, ob die IP tatsächlich frei ist, nicht das sich 2 Geräte 
die IP teilen.

Reboot ESP.

Verbindung über die von Dir gewählte IP herstellen.

KeyBLE und MQTT Daten eintragen, speichern und dann Reset ausführen.

Prüfen, ob weiterhin ein AP aufgespannt wird, bzw. ob der ESP mit dem 
Netz verbunden ist.

Am Broker prüfen, ob und wann die letzten Nachrichten eingegangen sind.

Über den Boot Button einen toggle ausführen.

Ping mal das Modul dauerhaft an, um zu sehen, ob es zu Netzabbrüchen 
kommt, bzw. ob überhaupt eine Antwort kommt.

Was Für ein ESP Modul benutzt Du eigentlich?

Ich denke, dass sind schon mal viele Punkte die Du bitte prüfen kannst.

Schönen Gruß
Thomas

: Bearbeitet durch User
von Hendrik (Gast)


Lesenswert?

Hallo Thomas,

danke für deine ausführliche Antwort.

> Ist die Spannungsversorgung vom ESP stabil und ausreichend?
Am PC hatte ich das Problem bisher nicht. Das Netzteil schafft 2A. Das 
sollte ja reichen.

> Wie weit ist das Schloss entfernt?
Ca. 2-3m, aber auch ein wenig Beton dazwischen.

> Was kommt beim Broker an?
Wenn das Problem besteht: Gar nix. Aber ansonsten:
SmartlockHintertuer/command 2
SmartlockHintertuer/command 3
SmartlockHintertuer/command 4
SmartlockHintertuer/task working
SmartlockHintertuer/state unknown
SmartlockHintertuer/task waiting
SmartlockHintertuer/battery true
SmartlockHintertuer/rssi -82
SmartlockHintertuer/command 3
SmartlockHintertuer/task working
SmartlockHintertuer/state locked
SmartlockHintertuer/task waiting
SmartlockHintertuer/battery true
SmartlockHintertuer/rssi -77
SmartlockHintertuer/command 2
SmartlockHintertuer/task working
SmartlockHintertuer/state unknown
SmartlockHintertuer/task waiting
SmartlockHintertuer/battery true
SmartlockHintertuer/rssi -72
SmartlockHintertuer/task working
SmartlockHintertuer/state timeout
SmartlockHintertuer/task waiting
SmartlockHintertuer/rssi 0
SmartlockHintertuer/task working
SmartlockHintertuer/state unknown
SmartlockHintertuer/task waiting
SmartlockHintertuer/battery true
SmartlockHintertuer/rssi -79
SmartlockHintertuer/command 3
SmartlockHintertuer/task working
SmartlockHintertuer/command 3
SmartlockHintertuer/command 3
SmartlockHintertuer/command 3


> Bist Du 1:1 der Anleitung bei GIT gefolgt?
Gerade nochmal gecheckt. Ja. Ich habe mal mit und mal ohne DHCP 
probiert.


> Wie sieht deine Netzwerkstruktur aus?
Mehrere APs (Unifi) und ein Router (FritzBox).

> Laut dem Seriallog, gehe ich von falschen Zugangsdaten aus. Tückisch
> sind hier die Passwortfelder, hier muss jedes mal das Kennwort

Das kann sein, aber dann liegt es nicht in meiner Verantwortung: Es hat 
alles funktioniert. Dann habe ich den ESP eine Nacht nicht verwendet und 
dann funktioniert es nicht mehr.
Ich könnte mir höchstens vorstellen, dass die Daten kurrumpiert wurden.
Ein print der keyble.json nach dem Start wäre gut.


> KeyBLEBridge Netzwerk löschen, ich gehe mal davon aus, dass Du mit
> Windows unterwegs bist?

Den AP hab ich immer in Android konfiguriert. Und da ist übrigens das 
Wlan Passwort im Autocomplete. Einen Tippfehler kann ich auch deshalb 
ausschließen.

> Erneut flashen. Nutzt Du Platformio?
Ja.

> Den ESP dort in Betrieb nehmen, wo er auch später eingesetzt werden
> soll. Falls das Verhalten mit z.B. mehreren Netzen mit gleichem Namen

Das kann ich machen. Das waren tatsächlich unterschiedliche APs.

Im Bestfall alles mit Seriallog.

> DNS2 kannst Du z.B. google nehmen 8.8.8.8

Genau den hatte ich tatsächlich genommen.

> Vorab checken, ob die IP tatsächlich frei ist, nicht das sich 2 Geräte
> die IP teilen.

Die FritzBox hat die .27 jetzt für den ESP reserviert.


> Was Für ein ESP Modul benutzt Du eigentlich?
NodeMCU

Gruß,
Hendrik

von Hendrik (Gast)


Lesenswert?

Hallo,

ich hab den ESP jetzt mal an seinen Zielort gepackt --> keine Verbindung 
mehr.
Ich hab mich dann mit dem AP verbunden und bin auf SSID gegangen. Da 
wurde mir mein Netz angezeigt, allerdings mit Signalstärke N/A. Etwas 
später mit der Signalstärke 16%.
Ich hab ihn dann nochmal an den Rechner angeschlossen und bin dann an 
den Zielort gegangen:
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
# WIFI: connected to SSiD: X
# WIFI: connected!
# WIFI: signalquality: 76%
# WiFi connected to IP: 192.168.177.27
# Connect to MQTT-Broker...
# Connected!
# published SmartlockHintertuer/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...
!!! Lockstatus -1 - timeout !!!
# Done!
# WiFi enabled
# WiFi disconnected, reconnect...

Es kann also durchaus an der Signalstärke liegen.

ABER: Ich hatte das Problem auch schon in Blickverbindung mit dem AP.
Ich habe das Gefühl, dass er nach der Situation oben die Credentials 
gerne vergisst.

Zudem: Ich sitze jetzt in Sichtweite des AP und sehe weiter:
# WiFi enabled
# WiFi disconnected, reconnect...

Gruß,
Hendrik

von Hendrik (Gast)


Lesenswert?

So, ich habe jetzt 15 min gewartet und es tat sich nix (kein 
Re-Connect).
Dann ein Reset
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
[E][WiFiSTA.cpp:221] begin(): connect failed!


Wenn ich mich mit dem AP verbinde, sagt er "Please click on gear to 
setup WiFi"
Mein Netz findet er. 58%
Er fragt NICHT nach dem Wlan Passwort.
Er hat die anderen Einstellungen noch (IP, KeyBLE)

Komisch...

Gruß,
Hendrik

von Thomas (type0n)


Lesenswert?

Hi Hendrik,

hier muss ich mal näher forschen, woran das was Du beschreibst liegt. 
Bis jetzt kann ich das hier nicht nachstellen.

Erneut, Passwörter müssen jedesmal neu eingegeben werden. Es gibt kein 
Errohandling und keine Prüfung der Eingaben. Es wird also zur Zeit an 
keiner Stelle nach etwas gefragt.

Im Bedarfsfall sende ich dir mal eine fertige BIN zum Upload via OTA.

Geh mal bitte in die AutoConnectDefs.h und entferne die Kommentierung 
von
#define AC_DEBUG
Das aktiviert serielles Debuging von AutoConnect.

Gleiches machst Du bitte mal in der PageBuilder.h mit #define PB_DEBUG

Das aktiviert serielles Debuging von PageBuilder.

Damit kommen über Serial Debug Infos von AutoConect und PageBuilder.
Mal gucken ob man das damit eingrenzen kann.

Schönen Gruß
Thomas

P.S. Ich danke dir für Deinen Testeinsatz! Sei aber bitte so nachsichtig 
und betrachte das, was zur Zeit da ist nicht als fertiges Produkt, 
sondern frühe Alpha. Hier spielen sehr viele Faktoren zusammen.

: Bearbeitet durch User
von Thomas (type0n)


Lesenswert?

Hi Hendrik,
hier mal ein Beispiel log von eine vorher geeerten ESP nach Anleitung 
bei GIT und eingeschaltetem Debuging:
1
---Starting up...---
2
---AP Settings---
3
---AP IP: 192.168.4.1---
4
---AP SSID: KeyBLEBridge---
5
[AC] Element<style> not registered
6
[AC] style<7> of /keyble_setting created
7
[AC] *noname placed on /keyble_setting
8
[AC] style<7> of /keyble_setting loaded
9
[AC] Element<MqttServerName> not registered
10
[AC] MqttServerName<4> of /keyble_setting created
11
[AC] *noname placed on /keyble_setting
12
[AC] MqttServerName<4> of /keyble_setting loaded
13
[AC] Element<MqttPort> not registered
14
[AC] MqttPort<4> of /keyble_setting created
15
[AC] *noname placed on /keyble_setting
16
[AC] MqttPort<4> of /keyble_setting loaded
17
[AC] Element<MqttUserName> not registered
18
[AC] MqttUserName<4> of /keyble_setting created
19
[AC] *noname placed on /keyble_setting
20
[AC] MqttUserName<4> of /keyble_setting loaded
21
[AC] Element<MqttUserPass> not registered
22
[AC] MqttUserPass<4> of /keyble_setting created
23
[AC] *noname placed on /keyble_setting
24
[AC] MqttUserPass<4> of /keyble_setting loaded
25
[AC] Element<MqttTopic> not registered
26
[AC] MqttTopic<4> of /keyble_setting created
27
[AC] *noname placed on /keyble_setting
28
[AC] MqttTopic<4> of /keyble_setting loaded
29
[AC] Element<KeyBleMac> not registered
30
[AC] KeyBleMac<4> of /keyble_setting created
31
[AC] *noname placed on /keyble_setting
32
[AC] KeyBleMac<4> of /keyble_setting loaded
33
[AC] Element<KeyBleUserKey> not registered
34
[AC] KeyBleUserKey<4> of /keyble_setting created
35
[AC] *noname placed on /keyble_setting
36
[AC] KeyBleUserKey<4> of /keyble_setting loaded
37
[AC] Element<KeyBleUserId> not registered
38
[AC] KeyBleUserId<4> of /keyble_setting created
39
[AC] *noname placed on /keyble_setting
40
[AC] KeyBleUserId<4> of /keyble_setting loaded
41
[AC] Element<save> not registered
42
[AC] save<8> of /keyble_setting created
43
[AC] *noname placed on /keyble_setting
44
[AC] save<8> of /keyble_setting loaded
45
[AC] Element<discard> not registered
46
[AC] discard<8> of /keyble_setting created
47
[AC] *noname placed on /keyble_setting
48
[AC] discard<8> of /keyble_setting loaded
49
[AC] /keyble_setting on hands
50
[AC] Element<caption> not registered
51
[AC] caption<9> of /keyble_save created
52
[AC] *noname placed on /keyble_save
53
[AC] caption<9> of /keyble_save loaded
54
[AC] Element<parameters> not registered
55
[AC] parameters<9> of /keyble_save created
56
[AC] *noname placed on /keyble_save
57
[AC] parameters<9> of /keyble_save loaded
58
[AC] Element<clear> not registered
59
[AC] clear<8> of /keyble_save created
60
[AC] *noname placed on /keyble_save
61
[AC] clear<8> of /keyble_save loaded
62
[AC] /keyble_save on hands
63
[AC] Deserialize:EmptyInput
64
# /keyble.json failed to load
65
[AC] Current:
66
[E][Preferences.cpp:49] begin(): nvs_open failed: NOT_FOUND
67
[AC] Preferences begin failed to import AC_CREDT
68
[AC] WiFi.config(IP=0.0.0.0, Gateway=0.0.0.0, Subnetmask=0.0.0.0, DNS1=0.0.0.0, DNS2=0.0.0.0)
69
[E][WiFiSTA.cpp:221] begin(): connect failed!
70
[AC] WiFi.begin() failed
71
[AC] SoftAP configure 192.168.4.1, 192.168.4.1, 255.255.255.0 
72
[AC] SoftAP KeyBLEBridge/eqivalock Ch(1) IP:192.168.4.1 
73
[AC] http server started
74
[AC] DNS server started
75
[AC] s_rc placed on /_ac/update
76
[AC] cap placed on /_ac/update
77
[AC] bin placed on /_ac/update
78
[AC] update placed on /_ac/update
79
[AC] js placed on /_ac/update
80
[AC] bin placed on /_ac/update_act
81
[AC] result placed on /_ac/update_act
82
[AC] dvo placed on /_ac/update_act
83
[AC] rc placed on /_ac/update_act
84
[AC] dvc placed on /_ac/update_act
85
[AC] /_ac/update on hands
86
[AC] /_ac/update_act on hands
87
[AC] Host:,/connecttest.txt,ignored
88
[E][WebServer.cpp:633] _handleRequest(): request handler not found
89
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
90
[AC] Host:www.msftconnecttest.com,/connecttest.txt,ignored
91
[E][WebServer.cpp:633] _handleRequest(): request handler not found
92
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
93
[AC] Host:192.168.4.1,/_ac,generated:/_ac, allocated
94
[PB] HTTP_GET /_ac
95
[AC] Host:192.168.4.1,/_ac,already allocated
96
[PB] Chunked, HEAD CSS_BASE CSS_TABLE blk:1270 CSS_LUXBAR blk:1270 blk:1270 MENU_PRE blk:1270 MENU_AUX MENU_POST ESTAB_SSID WIFI_MODE WIFI_STATUS LOCAL_IP GATEWAY NETMASK SOFTAP_IP AP_MAC STA_MAC CHANNEL DBM CHIP_ID CPU_FREQ FLASH_SIZE FREE_HEAP blk:1153
97
[AC] Host:192.168.4.1,/connecttest.txt,ignored
98
[E][WebServer.cpp:633] _handleRequest(): request handler not found
99
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
100
[AC] Host:www.msftconnecttest.com,/connecttest.txt,ignored
101
[E][WebServer.cpp:633] _handleRequest(): request handler not found
102
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
103
[AC] Host:www.msftconnecttest.com,/connecttest.txt,ignored
104
[E][WebServer.cpp:633] _handleRequest(): request handler not found
105
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
106
[AC] Host:www.msftconnecttest.com,/connecttest.txt,ignored
107
[E][WebServer.cpp:633] _handleRequest(): request handler not found
108
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
109
[AC] Host:www.msftconnecttest.com,/connecttest.txt,ignored
110
[E][WebServer.cpp:633] _handleRequest(): request handler not found
111
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
112
[AC] Host:www.msftconnecttest.com,/connecttest.txt,ignored
113
[E][WebServer.cpp:633] _handleRequest(): request handler not found
114
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
115
[AC] Host:www.msftconnecttest.com,/_ac/config,generated:/_ac/config, allocated
116
[PB] HTTP_GET /_ac/config
117
[AC] Host:192.168.4.1,/_ac/config,already allocated
118
[PB] Chunked, HEAD CSS_BASE CSS_ICON_LOCK blk:1270 CSS_UL CSS_INPUT_BUTTON blk:1270 CSS_INPUT_TEXT blk:1270 CSS_LUXBAR blk:1270 blk:1270 MENU_PRE MENU_AUX MENU_POST blk:1270 LIST_SSID [AC] 4 network(s) found, 769 buf
119
SSID_COUNT HIDDEN_COUNT blk:1270 CONFIG_IP blk:1270 blk:238 
120
[AC] Host:192.168.4.1,/connecttest.txt,ignored
121
[E][WebServer.cpp:633] _handleRequest(): request handler not found
122
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
123
[AC] Host:www.msftconnecttest.com,/connecttest.txt,ignored
124
[E][WebServer.cpp:633] _handleRequest(): request handler not found
125
[AC] Detected application, www.msftconnecttest.com, 0.0.0.0
126
[AC] Host:www.msftconnecttest.com,/_ac/connect,generated:/_ac/connect, allocated
127
[PB] HTTP_POST /_ac/connect
128
[AC] Host:192.168.4.1,/_ac/connect,already allocated
129
[PB] Chunked, REQ [AC] Queried SSID:LuMoKiTho24
130
HEAD CSS_BASE CSS_SPINNER blk:1270 CSS_LUXBAR blk:1270 blk:1270 MENU_PRE blk:1270 MENU_POST CUR_SSID blk:648 
131
[AC] WiFi.config(IP=192.168.1.55, Gateway=192.168.1.1, Subnetmask=255.255.255.0, DNS1=192.168.1.1, DNS2=8.8.8.8)
132
[AC] WiFi.begin(LuMoKiTho24,KENNWORT) ch(13)....................established IP:192.168.1.55
133
[AC] DNS server stopped
134
[AC] Maintain SoftAP
135
[E][Preferences.cpp:49] begin(): nvs_open failed: NOT_FOUND
136
[AC] Preferences begin failed to import AC_CREDT
137
[AC] LuMoKiTho24 credential saved

Ab hier sind die WLAN Zugangsdaten eingetragen
1
[AC] Event<17> handler registered
2
# WIFI: connected to SSiD: LuMoKiTho24
3
# WIFI: connected!
4
# WIFI: signalquality: 100%
5
# WiFi connected to IP: 192.168.1.55
6
# Please fill in MQTT and KeyBLE credentials first!
7
[AC] STA lost connection:63
8
[AC] STA connection restored
9
[AC] Host:192.168.4.1,/connecttest.txt,ignored
10
[E][WebServer.cpp:633] _handleRequest(): request handler not found
11
[AC] Detected application, www.msftconnecttest.com, 192.168.1.55
12
[AC] Host:www.msftconnecttest.com,/_ac/result,generated:/_ac/result, allocated
13
[PB] HTTP_GET /_ac/result
14
[AC] Host:192.168.4.1,/_ac/result,already allocated
15
[PB] Chunked, RESULT [AC] Redirect to http://192.168.4.1
16
[AC] Leaves:5[ms]
17
[PB] Send canceled
18
[AC] Host:192.168.4.1,/_ac/success,generated:/_ac/success, allocated
19
[PB] HTTP_GET /_ac/success
20
[AC] Host:192.168.4.1,/_ac/success,already allocated      
21
[PB] Chunked, HEAD CSS_BASE CSS_TABLE blk:1270 CSS_LUXBAR blk:1270 blk:1270 MENU_PRE blk:1270 MENU_AUX MENU_POST ESTAB_SSID WIFI_MODE WIFI_STATUS LOCAL_IP GATEWAY NETMASK CHANNEL DBM blk:859 
22
[AC] Host:192.168.1.55,/keyble_setting,generated:/keyble_setting, allocated

Ab hier wird zu den MQTT und KeyBLE Zugangsdaten gewechselt
1
[PB] HTTP_GET /keyble_setting
2
[AC] Host:192.168.1.55,/keyble_setting,already allocated
3
[PB] Chunked, HEAD AUX_TITLE CSS_BASE CSS_UL blk:1270 CSS_INPUT_BUTTON CSS_INPUT_TEXT blk:1270 CSS_LUXBAR blk:1270 blk:1270 AUX_CSS MENU_PRE blk:1270 MENU_AUX MENU_POST ENC_TYPE AUX_ELEMENT [AC] CB in AHEAD /keyble_setting
4
[AC] Deserialize:EmptyInput
5
# /keyble.json failed to load
6
blk:1270 AUX_URI blk:1122 
7
[AC] Host:192.168.1.55,/keyble_save,generated:/keyble_save, allocated
8
[PB] HTTP_POST /keyble_save
9
[AC] Host:192.168.1.55,/keyble_save,already allocated
10
[PB] Chunked, HEAD AUX_TITLE CSS_BASE CSS_UL blk:1270 CSS_INPUT_BUTTON CSS_INPUT_TEXT blk:1270 CSS_LUXBAR blk:1270 blk:1270 AUX_CSS MENU_PRE blk:1270 MENU_AUX MENU_POST ENC_TYPE AUX_ELEMENT [AC] fetch /keyble_setting,elements stored
11
[AC] CB in AHEAD /keyble_save
12
[AC] JSON buffer size:1952
13
blk:1270 AUX_URI blk:249 
14
[AC] Host:192.168.1.55,/keyble_setting,generated:/keyble_setting, allocated
15
[PB] HTTP_POST /keyble_setting
16
[AC] Host:192.168.1.55,/keyble_setting,already allocated

Ab hier werden die Zugangsdaten gespeichert
1
[PB] Chunked, HEAD AUX_TITLE CSS_BASE CSS_UL blk:1270 CSS_INPUT_BUTTON CSS_INPUT_TEXT blk:1270 CSS_LUXBAR blk:1270 blk:1270 AUX_CSS MENU_PRE blk:1270 MENU_AUX MENU_POST ENC_TYPE AUX_ELEMENT [AC] fetch /keyble_save,elements stored
2
[AC] CB in AHEAD /keyble_setting
3
[AC] MqttServerName<4> of /keyble_setting loaded
4
[AC] MqttPort<4> of /keyble_setting loaded      
5
[AC] MqttUserName<4> of /keyble_setting loaded  
6
[AC] MqttUserPass<4> of /keyble_setting loaded  
7
[AC] MqttTopic<4> of /keyble_setting loaded     
8
[AC] KeyBleMac<4> of /keyble_setting loaded     
9
[AC] KeyBleUserKey<4> of /keyble_setting loaded
10
[AC] KeyBleUserId<4> of /keyble_setting loaded 
11
# /keyble.json loaded
12
blk:1270 AUX_URI blk:1270 blk:24 
13
[AC] Host:192.168.1.55,/keyble_save,generated:/keyble_save, allocated
14
[PB] HTTP_POST /keyble_save
15
[AC] Host:192.168.1.55,/keyble_save,already allocated
16
[PB] Chunked, HEAD AUX_TITLE CSS_BASE CSS_UL blk:1270 CSS_INPUT_BUTTON CSS_INPUT_TEXT blk:1270 CSS_LUXBAR blk:1270 blk:1270 AUX_CSS MENU_PRE blk:1270 MENU_AUX MENU_POST ENC_TYPE AUX_ELEMENT [AC] fetch /keyble_setting,elements stored
17
[AC] CB in AHEAD /keyble_save
18
[AC] JSON buffer size:1952
19
blk:1270 AUX_URI blk:249 
20
[AC] Host:192.168.1.55,/keyble_setting,generated:/keyble_setting, allocated
21
[PB] HTTP_POST /keyble_setting
22
[AC] Host:192.168.1.55,/keyble_setting,already allocated
23
[PB] Chunked, HEAD AUX_TITLE CSS_BASE CSS_UL blk:1270 CSS_INPUT_BUTTON CSS_INPUT_TEXT blk:1270 CSS_LUXBAR blk:1270 blk:1270 AUX_CSS MENU_PRE blk:1270 MENU_AUX MENU_POST ENC_TYPE AUX_ELEMENT [AC] fetch /keyble_save,elements stored
24
[AC] CB in AHEAD /keyble_setting
25
[AC] MqttServerName<4> of /keyble_setting loaded
26
[AC] MqttPort<4> of /keyble_setting loaded
27
[AC] MqttUserName<4> of /keyble_setting loaded
28
[AC] MqttUserPass<4> of /keyble_setting loaded
29
[AC] MqttTopic<4> of /keyble_setting loaded
30
[AC] KeyBleMac<4> of /keyble_setting loaded
31
[AC] KeyBleUserKey<4> of /keyble_setting loaded
32
[AC] KeyBleUserId<4> of /keyble_setting loaded
33
# /keyble.json loaded

Ab hier werden die Zugangdaten verwendet und ein Reset durchgeführt
1
blk:1270 AUX_URI blk:1270 blk:24 
2
[AC] Host:192.168.1.55,/_ac/reset,generated:/_ac/reset, allocated
3
[PB] HTTP_GET /_ac/reset
4
[AC] Host:192.168.1.55,/_ac/reset,already allocated
5
[PB] Chunked, HEAD UPTIME BOOTURI RESET UPTIME blk:551
6
[AC] Event<17> handler released
7
[AC] Portal stopped
8
[AC] Reset
9
ets Jun  8 2016 00:22:57
10
11
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
12
configsip: 0, SPIWP:0xee
13
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
14
mode:DIO, clock div:2
15
load:0x3fff0018,len:4
16
load:0x3fff001c,len:1044
17
load:0x40078000,len:10124
18
load:0x40080400,len:5828
19
entry 0x400806a8
20
---Starting up...---
21
---AP Settings---
22
---AP IP: 192.168.4.1---
23
---AP SSID: KeyBLEBridge---
24
[AC] Element<style> not registered
25
[AC] style<7> of /keyble_setting created
26
[AC] *noname placed on /keyble_setting
27
[AC] style<7> of /keyble_setting loaded
28
[AC] Element<MqttServerName> not registered
29
[AC] MqttServerName<4> of /keyble_setting created
30
[AC] *noname placed on /keyble_setting
31
[AC] MqttServerName<4> of /keyble_setting loaded
32
[AC] Element<MqttPort> not registered
33
[AC] MqttPort<4> of /keyble_setting created
34
[AC] *noname placed on /keyble_setting
35
[AC] MqttPort<4> of /keyble_setting loaded
36
[AC] Element<MqttUserName> not registered
37
[AC] MqttUserName<4> of /keyble_setting created
38
[AC] *noname placed on /keyble_setting
39
[AC] MqttUserName<4> of /keyble_setting loaded
40
[AC] Element<MqttUserPass> not registered
41
[AC] MqttUserPass<4> of /keyble_setting created
42
[AC] *noname placed on /keyble_setting
43
[AC] MqttUserPass<4> of /keyble_setting loaded
44
[AC] Element<MqttTopic> not registered
45
[AC] MqttTopic<4> of /keyble_setting created
46
[AC] *noname placed on /keyble_setting
47
[AC] MqttTopic<4> of /keyble_setting loaded
48
[AC] Element<KeyBleMac> not registered
49
[AC] KeyBleMac<4> of /keyble_setting created
50
[AC] *noname placed on /keyble_setting
51
[AC] KeyBleMac<4> of /keyble_setting loaded
52
[AC] Element<KeyBleUserKey> not registered
53
[AC] KeyBleUserKey<4> of /keyble_setting created
54
[AC] *noname placed on /keyble_setting
55
[AC] KeyBleUserKey<4> of /keyble_setting loaded
56
[AC] Element<KeyBleUserId> not registered
57
[AC] KeyBleUserId<4> of /keyble_setting created
58
[AC] *noname placed on /keyble_setting
59
[AC] KeyBleUserId<4> of /keyble_setting loaded
60
[AC] Element<save> not registered
61
[AC] save<8> of /keyble_setting created
62
[AC] *noname placed on /keyble_setting
63
[AC] save<8> of /keyble_setting loaded
64
[AC] Element<discard> not registered
65
[AC] discard<8> of /keyble_setting created
66
[AC] *noname placed on /keyble_setting
67
[AC] discard<8> of /keyble_setting loaded
68
[AC] /keyble_setting on hands
69
[AC] Element<caption> not registered
70
[AC] caption<9> of /keyble_save created
71
[AC] *noname placed on /keyble_save
72
[AC] caption<9> of /keyble_save loaded
73
[AC] Element<parameters> not registered
74
[AC] parameters<9> of /keyble_save created
75
[AC] *noname placed on /keyble_save
76
[AC] parameters<9> of /keyble_save loaded
77
[AC] Element<clear> not registered
78
[AC] clear<8> of /keyble_save created
79
[AC] *noname placed on /keyble_save
80
[AC] clear<8> of /keyble_save loaded
81
[AC] /keyble_save on hands
82
[AC] MqttServerName<4> of /keyble_setting loaded
83
[AC] MqttPort<4> of /keyble_setting loaded
84
[AC] MqttUserName<4> of /keyble_setting loaded
85
[AC] MqttUserPass<4> of /keyble_setting loaded
86
[AC] MqttTopic<4> of /keyble_setting loaded
87
[AC] KeyBleMac<4> of /keyble_setting loaded
88
[AC] KeyBleUserKey<4> of /keyble_setting loaded
89
[AC] KeyBleUserId<4> of /keyble_setting loaded
90
# /keyble.json loaded
91
[AC] Current:LuMoKiTho24
92
[AC] WiFi.config(IP=192.168.1.55, Gateway=192.168.1.1, Subnetmask=255.255.255.0, DNS1=192.168.1.1, DNS2=8.8.8.8)
93
[AC] WiFi.begin()........established IP:192.168.1.55
94
[AC] http server started
95
# WIFI: connected to SSiD: LuMoKiTho24
96
# WIFI: connected!
97
# WIFI: signalquality: 96%
98
# WiFi connected to IP: 192.168.1.55
99
# Connect to MQTT-Broker...
100
# Connected!
101
[AC] s_rc placed on /_ac/update
102
[AC] cap placed on /_ac/update
103
[AC] bin placed on /_ac/update
104
[AC] update placed on /_ac/update
105
[AC] js placed on /_ac/update
106
[AC] bin placed on /_ac/update_act
107
[AC] result placed on /_ac/update_act
108
[AC] dvo placed on /_ac/update_act
109
[AC] rc placed on /_ac/update_act
110
[AC] dvc placed on /_ac/update_act
111
[AC] /_ac/update on hands
112
[AC] /_ac/update_act on hands

MQTT und WLAN Verbindungen sind aufgebaut
1
# published SmartLock/task/working
2
# WiFi disabled
3
Hier wir die initiale Abfrage des Schlossantriebes gestartet
4
5
*** get state ***
6
# Nonce exchange
7
# Searching ...
8
# Found device: 00:1a:22:09:8d:70
9
# RSSI: -80
10
# Connecting in tick
11
# Connecting...
12
# Connected in tick
13
[E][BLERemoteCharacteristic.cpp:287] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
14
# sendMessage end.
15
# Sending actual fragment: 800201221CF8203B28B5BB0000000000
16
# Fragment Data: 800301D5D897E95A2BF1E80010170000
17
# Nonce exchanged
18
# sendMessage called again...
19
# Cryptdata length: 8
20
# Cryptdata length: 8
21
# Authentifizierungswert berechnen...
22
# fertig...
23
# sendMessage end.
24
# Sending actual fragment: 808247E03D6DF455510B00017C61AB9F
25
# Fragment Data: 80834CBA7BDDB10097B50001880AE019
26
# Auth value: 880AE019
27
# Cryptdata length: 8
28
# Crypted data: 4CBA7BDDB10097B5
29
# Authentifizierungswert berechnen...
30
# fertig...
31
# Decrypted: 71010A0010170000
32
# New state: 2
33
# Done!

Ab hier wird BLE getrennt und WLAN aufgebaut
1
# Disconnected!
2
# WiFi enabled
3
# WiFi disconnected, reconnect...
4
[AC] Current:LuMoKiTho24
5
[AC] WiFi.config(IP=192.168.1.55, Gateway=192.168.1.1, Subnetmask=255.255.255.0, DNS1=192.168.1.1, DNS2=8.8.8.8)
6
[AC] WiFi.begin()......established IP:192.168.1.55
7
# WIFI: connected to SSiD: LuMoKiTho24
8
# WIFI: connected!
9
# WIFI: signalquality: 98%
10
# WiFi connected to IP: 192.168.1.55
11
# MQTT disconnected, reconnect...
12
# Connect to MQTT-Broker... 
13
# Connected!

WLAN und MQTT vebunden
Rückgabe vom Schloss veröffentlichen
1
# published SmartLock/state/unlocked
2
# published SmartLock/task/waiting
3
# published SmartLock/battery/1
4
# published SmartLock/rssi/-80
5
# waiting for command...
In diesem Status verbleibt der ESP bis er von außen über 
"DeinTopic/command" getriggert wird.

von Hendrik (Gast)


Lesenswert?

Hi Thomas,

danke, das probiere ich morgen.

> P.S. Ich danke dir für Deinen Testeinsatz! Sei aber bitte so nachsichtig
> und betrachte das, was zur Zeit da ist nicht als fertiges Produkt,
> sondern frühe Alpha. Hier spielen sehr viele Faktoren zusammen.

der Dank liegt auf meiner Seite!
Bisher übererfüllt das Alle Erwartungen ;-)

von Hendrik (Gast)


Lesenswert?

Hallo Thomas,

ich habe die Logs jetzt erzeugt.
Darin sind ja auch sensitive Daten enthalten. Kann ich sie dir per Mail 
schicken?
Du erreichst mich unter 
[erste_drei_buchstaben_meines_Vorname]_mail@web.de.

Viele Grüße,
Hendrik

von Thomas (type0n)


Lesenswert?

Hi Hendrik,

ich habe dir eine E-Mail gesendet.

Gruß
Thomas

von Max M. (tcsmaxx)


Lesenswert?

Hi Thomas,

gute Arbeit :) Das Web Frontend kommt sehr geschmeidig ;)

Ich habe es mal kurz ohne erreichbares Schloss in der Nähe getestet und 
nach dem ich alles konfiguriert habe läuft der Connect zum  MQTT-Broker 
in der Dauerschleife. Ohne Schloss sollte ja normalerweise nicht 
vorkommen, aber vielleicht doch mal, wenn die Batterie leer ist. Kannst 
du das auch nachvollziehen?
1
# WIFI: connected to SSiD: tcM
2
# WIFI: connected!
3
# WIFI: signalquality: 90%
4
# WiFi connected to IP: 192.168.88.59
5
# Connect to MQTT-Broker...
6
# Connected!
7
# published SmartLock/task/working
8
# WiFi disabled
9
# Nonce exchange
10
# Searching ...
11
!!! Lockstatus -1 - timeout !!!
12
# Done!
13
# WiFi enabled
14
# WiFi disconnected, reconnect...
15
# WIFI: connected to SSiD: tcM
16
# WIFI: connected!
17
# WIFI: signalquality: 88%
18
# WiFi connected to IP: 192.168.88.59
19
# MQTT disconnected, reconnect...
20
# Connect to MQTT-Broker...
21
# Connected!
22
# published SmartLock/state/timeout
23
# published SmartLock/task/waiting
24
# published SmartLock/rssi/0
25
# waiting for command...
26
# MQTT disconnected, reconnect...
27
# Connect to MQTT-Broker...
28
# Connected!
29
# MQTT disconnected, reconnect...
30
# Connect to MQTT-Broker...
31
# Connected!
32
# MQTT disconnected, reconnect...
33
# Connect to MQTT-Broker...
34
# Connected!
35
# MQTT disconnected, reconnect...
36
# Connect to MQTT-Broker...
37
# Connected!
38
# MQTT disconnected, reconnect...
39
# Connect to MQTT-Broker...
40
# Connected!
41
...

von Thomas (type0n)


Lesenswert?

Hallo Max,

ich danke Dir für deinen Hinweis, bis jetzt gibt es noch kein 
Errorhandling.
Bei mir haben sich nun unregelmäßige reboots gezeigt. Nur kann ich noch 
nicht genau sagen woher die kommen. Ich spiele hier zur Zeit mit dem 
Espressif Debugger herum, mal gucken, ob ich das eingrenzen kann. Bis 
jetzt ist mein Verdacht, dass es an der nicht richtig abgebauten BLE 
Verbindung zum Schloss liegt. Hierzu befinden sich ja in Deinem/RoP09s 
Repo noch einige todos. Ziel ist es zwar mittelfristig eine stabile 
Version zu bekommen, ich bin aber weitehin auch an eine Coexistence 
Variant dran, wo nicht mehr zwischen WiFi und BLE gewechselt werden 
muss. Da habe doch noch einige Ideen, was man machen könnte. Wenn das 
Wetter mal schlechter ist, setzte ich mich dran.

Schönen Gruß
Thomas

von Hendrik (Gast)


Lesenswert?

Hallo,

so, zur hellen Jahreszeit hatte ich wenig Lust mich dem Schloss zu 
widmen.
Wie ist denn eure Erfahrung mit der Software von Thomas bisher?

Mein RasPi hat das Zeitliche gesegnet und jetzt überlege ich, ob ich den 
repariere, oder zwei ESPs nehme...
Beim ESP war bisher aber auch der WLAN Empfang nicht gut und (dadurch?) 
crashte er regelmäßig.

Gruß,
Hendrik

von Hendrik (Gast)


Lesenswert?

P.S: Hat jemand Erfahrungen mit ESP32 mit externer WLAN Antenne? Bringt 
das was?

von Al O. (cyber83)


Lesenswert?

Hendrik schrieb:
> P.S: Hat jemand Erfahrungen mit ESP32 mit externer WLAN Antenne? Bringt
> das was?

Ich hab einem esp8266 eine externe antenne verpasst. Nur so ein kleines 
stumpel mit ca. 10cm, ohne irgendwelche dbi angaben. Hat von vorher -92 
(mit glück) auf -75 gehoben.

von Diginix (Gast)


Lesenswert?

Hallo Joachim @oyo, hallo Thomas @type0n, halle Max @tcsmaxx

hat einer von euch eine Ahnung was das Problem mit keyble in Verbindung 
mit nodeJS 14 sein könnte?
https://github.com/oyooyo/keyble/issues/37

Danke und Gruß
Thomas

von TiTo (Gast)


Lesenswert?

Hallo,

ich bin zwar ein absoluter Noob was das Thema EQ-3 Türschlossantrieb 
KeyBLE angeht.
Aber hat schon jemand versucht ein ESP8266 D1 mini direckt mit dem 
Platine des Türschlosses zu verbinden?
Es gibt ja diese HomeKit ESP8266 Firmware für dieses.
So würde man nicht den Weg über die Bluetoothschnittstelle gehen, diese 
aber auch nicht kaputt machen oder zerstören, sondern man könnte diese 
weiter nutzen wenn man mag.

Das Schloss würde so gesehen ein Update (WiFi-Funktion) bekommen und 
direkt mit HomeKit verbunden werden können. Der ESP8266 D1 mini könnte 
sogar im Gehäuse selber untergebracht werden und wäre somit unsichtbar. 
Das Borad kann sogar so verstaut werden, das man mit einer 
Nadel/Büroklammer oder ähnliches an den RESET Button und mit einer 
kleinen Ausfräsung an der Rückseite an den Micro-USB-Port zum 
programieren zu kommen kann.

Ich weiß ich bin nicht der überflieger was die Arduino IDE angeht, aber 
ich habe die ESP8266 HomeKit Firmware schon soweit gebracht das diese 
mit meiner Schaltzentrale (HomeKit) keinen Fehler mehr anzeigt.

Ich habe nur leider ein paar probleme was den Bedienknöpfe in der 
Home-App angeht. Diese Sollen in drei Stellungen Fix sein. Stand jetzt 
ist leider, dass ich dort einen Balken von 0-100% habe, was mir nicht 
weiter hilft!

Ich muss noch folgendes einstellen bzw. programmieren:

-DeepSleep Modus

-HomeKit Bedienung

-die Datenverbindung zwischen dem ESP8266 D1 mini und der 
KeyBLE-Platine,
 dazu muss ich noch die richtigen Befehle herraus finden damit das 
Schloss
 die einfachsten dinge wie: Schließen, Entriegeln und Öffnen der Tür 
tut.

vielleicht kann mir bei meinen Vorhaben einer unter die Arme greifen

Einen schönen Abend noch.

TiTo

von Hendrik Friedel (Gast)


Lesenswert?

Ja, das hat schon jemand geschafft. Ich bin aber gescheitert.
Meinen Versuch und die Quelle zu dem, der es geschafft hat habe ich im 
knx-user-forum.de dokumentiert.

Ich weiß nicht, was an der Bluetooth Schnittstelle kaputt gehen sollte.

Gruß,
Hendrik

von TiTo (Gast)


Lesenswert?

Hallo,

danke das Du dich meldest. Meinst du diesen Beitrag wo jemand die 
Druckschalter mit dem ESP8266 verbunden hatte um so das Schloss auf und 
zu zusperren?
Diesen Beitrag hatte ich mir voller Erwartung durchgelesen.
Aber da ich nicht bereit bin, ein Kabel zur Tür zu ziehen, um so eine 
Strom Versorgung zu realisieren, schied dieser Weg für mich aus.
Meine Vorstellung ging eher dahin das ESP8266 direkt an den Datenport 
des Türschlosses anzulöten um dort direkt die Befehle zu geben und Strom 
zu bekommen. Deswegen muss das ESP unbedingt auch in den DeepSleep mode 
um Akku Kapazität zu sparen.
Weil alles was direkt am Schloss passiert "sollte es" nicht 
verschlüsselt sein, denke ich zumindest.... kann aber auch etwas naiv 
von mir gedacht sein....

von TiTo (Gast)


Lesenswert?

Hallo,
leider ist mein vorhaben gescheitert. Das ist leider was die direkte 
integration angeht schade, aber leider nicht zu ändern.
Was mir allerdings während der ganzen Spielereien aufgefallen ist, ist 
das dass Türschloss immer nur den ersten Befehl ausführt, dann noch eine 
gewisse Zeit ansprechbar ist.
Wenn man jetzt allerdings eine Zeit lang wartet und zum Beispiel vom 
Einkaufen wieder Heim kommt (ca. eine Stunde), die Tür soll öffnen, tut 
es aber nicht. Wenn ich aber bei Haus verlassen die Homebridge neu 
starte und dann Heim kehre, öffnet Sie ohne Probleme die Tür.
Wäre es machbar  diese Funktionen "timeout" und/oder 
"auto_disconnect_time" in die Homebridge zu integrieren? So dass man der 
Bridge sagen kann das Sie die Verbindung nach der eingestellten Zeit 
trennen soll und nicht wartet bis das Schloss die Verbindung trennt?
Oder wäre es sogar möglich dem Plugin nach dem die Verbindung getrennt 
wurde einen internen Neustart oder ähnliches zu integrieren?
Wenn man die Homebridge manuell neu startet, dann steht dort 
"cashclear",
soll wohl das Plugin aus dem Arbeitsspeicher löschen um diverse Fehler 
aus zu Märzen, könnte man diese Funktion vielleicht nutzen um das nach 
jedem gesendeten Befehl zu machen?

Hoffe das hier jemand der Mitwirkenden vielleicht noch aktiv ist.
Ich selber kann leider Plugins nicht Programmieren!
Das sind nur Sachen die mir nach dem ganzen herum spielen mit dem 
ESP8266 aufgefallen waren.

TiTo

von Daniel (Gast)


Lesenswert?

Liebe Leute,

ich weiß, der Beitrag ist etwas älter, aber dennoch gibt es aktuell noch 
keine sinnvollen (Preis/Leistung) Alternativen.
Aber hier gibt es eine ziemlich schöne Lösung. Mit ein wenig 
Bastelerfahrung
absolut umsetzbar.

https://ingenier.wordpress.com/2018/02/17/eqiva-key-ble-eq-3-bluetooth-mit-wlan-nachruesten/

Liebe Grüße,
Daniel

von Hendrik (Gast)


Lesenswert?

Hallo,

ich habe ein Schloss, dessen Drehrichtung nicht dem Default entspricht. 
In der App habe ich das natürlich entsprechend eingestellt, aber leider 
vergisst das Schloss diese Einstellung recht häufig.
Kennt jemand das Problem?

Joachim S. schrieb:
>> Sag mal, wäre es möglich die Konfiguration des Smart-Locks über keyble
>> zu bearbeiten? z.B. pairing-modus aktivieren/deaktivieren, Drehrichtung
>> auswählen usw.
>> Plannst du es zu realisieren?
>
> Möglich wäre es - das gehört aber zu den Features, die ich grundsätzlich
> zwar gerne unterstützen würde, die derzeit aber so niedrige Priorität
> für mich haben, dass ich sie in der nächsten Zeit vermutlich eher nicht
> implementieren werde.

Ich wäre dir sehr dankbar, wenn man die Drehrichtung konfigurieren 
könnte.
Dann könnte ich diese Einstellung einmal am Tag ans Schloss senden...

Gruß,
Hendrik

von earlmanni (Gast)


Lesenswert?

Registriert euch bei Nuki und werbt 10 Freunde, dann bekommt Ihr das 
Nuki für 49,- und habt noch einen Haufen Zubehör gratis. Ich ein Ihr 
nicht alles an Zubehör braucht verkauft es und das Smart Lock wäre sogar 
gratis.

von earlmanni (Gast)


Lesenswert?

Registriert euch bei Nuki und werbt 10 Freunde, dann bekommt Ihr das 
Nuki für 49,- und habt noch einen Haufen Zubehör gratis. Wenn Ihr nicht 
alles an Zubehör braucht verkauft es und das Smart Lock wäre sogar 
gratis.

von OmmyT (Gast)


Lesenswert?

@oyo
Vielen, vielen Dank für Deine Arbeit.
keyble hat mir und meiner "Bastel-Home-Automation" ein großes Stück 
weitergeholfen!

Ich (Jahrgang 74 und 8- und 16Bit erfahren ;-)) bin selbst 
Software-Entwickler (aber nur auf .NET- und php-Basis) und weiß somit 
Deine Arbeit durchaus zu schätzen.

von Diginix (Gast)


Lesenswert?

Thomas F. schrieb:
> https://github.com/lumokitho/esp32-keyble

Hi @type0n Da keyble direkt unter nodeJS 14 bei mir fast gar nicht mehr 
funktioniert, würde ich gern deine ESP32 Lösung testen.
Wie bzw. mit was wird der ESP denn mit deinem Code geflasht?
Bisher hatte ich nur mit .bin Dateien zu tun. Brauche ich 
Arduino/platformio?
Was gebe ich der Software von deinem Git Projekt?

Danke und Gruß
Thomas

von Adrian K. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe es im letzten Jahr erfolgreich den eq3 Antrieb in der 
Kombination mit einem Fingerprint R503 installiert und im Betrieb 
genommen.
Da wo ich die WIFI Verbindung dauerhaft behalten wollte habe ich für den 
eq3 lock einen separaten ESP32 spendiert, der wiederum per UART vom 
andern ESP mit R503 mit befehlen versorgt.
Eine letzte Anpassung des Codes habe ich Ende Februar durchgeführt.
Dann im April wollte ich es ein Update verpassen, mit ein paar 
Verbessunrungen.
Leider ist es mir nicht gelungen, habe ständig beim kompilieren 
Fehlermeldung bekommen.
error: static assertion failed: portGET_ARGUMENT_COUNT() result does not 
match for 0 arguments
ringbuf_type_t' has not been declared

Dann habe ich mit vor Versionen versucht, das gleiche Ergebnis. VSC neu 
installiert -- negativ
Direkt vom Github runtergeladen -- negativ
Eine ältere Version vom Platformio (vom letztem Jahr) -- negativ.
Auf einem anderem Rechner neu installiert  -- negativ

Was hat sich geändert?
Ein Fehlerprotokoll habe ich angehängt.
Vielen Dank für Eure Unterstuzung

von tomg1970 (Gast)


Lesenswert?

Habt ihr einen Tipp wie ich das Türschloss in Home Assistant nutzen 
könnte

von Hendrik (Gast)


Lesenswert?

Keyble und mqtt

von tomg1970 (Gast)


Lesenswert?

Habt ihr einen Tipp wie ich das eqiva Türschloss in Home Assistant 
nutzen kann

von Tom (tomg1970)


Lesenswert?

Habt ihr einen Tipp wie ich das eqiva Türschloss in Home Assistant 
nutzen kann?

von Steamengine (Gast)


Lesenswert?

Hallo zusammen,
ich habe es vielleicht überlesen oder was auch immer.
Die KeyBLE Credentials, also KeyBLE UserKey und User ID muss ich bei der 
ESP32 Version oder dieser hier eingeben. Doch woher nehme ich diese 
Information?

Für Hilfe diesbezüglich wäre ich sehr dankbar...... hilfe.....

von Steamengine (Gast)


Lesenswert?

Hallo nochmal. Ich habe jetzt einige weitere Informationen gefunden.
Den "KeyBLE User Key" muss man durch die mitgelieferte Karte ermitteln. 
Die Karte zum Beispiel mit ZBAR --> ZBarimg scannen und den mittleren 
Teil (Von hinten nach dem Abschneiden der im Klartext auf der Karte 
befindlichen Seriennummer 32 Zeichen) als Key verwenden. Ich habe dann 
noch die Buchstaben in lowercase geändert. Die KeyBLE User ID sollte 
wahrscheinlich die nächste freie sein. Bei Zero (0) wird angefangen zu 
zählen.
Dann muss ich wohl den ESP32 nach dem Speichern neu starten während das 
Schloss im Paring-Mode ist....

von Udo (Gast)


Lesenswert?

Hallo

ich habe mir einen Eqiva Antrieb gekauft und den node Installiert finde 
den
in nodered nicht .

node red sagt auch "Installiert" kann ihn aber nicht finden ,für eine 
schnelle Rückmeldung wäre ich Dir Dankbar ,ansonsten schicke ich den 
Antrieb zurück.



Gruß

Udo

von Michi (Gast)


Lesenswert?

Servus alle zusammen,

gibt es eine moeglichkeit keyble auf eine arduino/raspberry pi pico zu 
starten?
Oder auf einem ESP32? Ich habe den githublink gefunden aber habe keine 
Ahnung wie ich es umsetzen kann.

Kann mir jemand weiterhelfen?

von Hendrik (Gast)


Lesenswert?

Für den ESP ist hier im Thread eine eigene Software verlinkt (nicht 
keyble)

von Michi (Gast)


Lesenswert?

ich kriege folgende fehlermeldung beim kompilieren, weiss jemand wo das 
problem liegt?
platformio und esp32

*** [.pio/build/esp32dev/lib749/ESP32 BLE 
Arduino/BLEAdvertisedDevice.cpp.o] Error 1
*** [.pio/build/esp32dev/lib749/ESP32 BLE Arduino/BLEAdvertising.cpp.o] 
Error 1
In file included from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLEDescriptor.h:16,
                 from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLECharacteristic.h:17,
                 from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLECharacteristic.cpp:15:
.pio/libdeps/esp32dev/ESP32 BLE Arduino/src/FreeRTOS.h:61:28: error: 
'ringbuf_type_t' has not been declared
  Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT);
                            ^~~~~~~~~~~~~~
In file included from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLERemoteDescriptor.h:18,
                 from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLERemoteCharacteristic.h:18,
                 from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLERemoteService.h:16,
                 from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLEClient.h:19,
                 from .pio/libdeps/esp32dev/ESP32 BLE 
Arduino/src/BLEScan.h:17,
                 from lib/eQ3/eQ3.h:4,
                 from src/main.cpp:6:
.pio/libdeps/esp32dev/ESP32 BLE Arduino/src/FreeRTOS.h:61:28: error: 
'ringbuf_type_t' has not been declared
  Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT);
                            ^~~~~~~~~~~~~~
*** [.pio/build/esp32dev/lib749/ESP32 BLE 
Arduino/BLECharacteristic.cpp.o] Error 1
*** [.pio/build/esp32dev/src/main.cpp.o] Error 1
======================================= [FAILED] Took 2.44 seconds 
=======================================

 *  The terminal process "platformio 'run', '--target', 'upload', 
'--target', 'monitor', '--environment', 'esp32dev'" terminated with exit 
code: 1.
 *  Terminal will be reused by tasks, press any key to close it.

von Michi (Gast)


Lesenswert?

Gibt es vielleicht eine schritt fuer schritt installationsanleitung fuer 
den esp32?

von Michi (Gast)


Lesenswert?

Ich habe nun die richtige versionen von den bibliotheken finden koennen 
und kriege jetzt folgende fehlermeldung:
Building in release mode
Retrieving maximum program size .pio/build/esp32dev/firmware.elf
Checking size .pio/build/esp32dev/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project 
Inspect"
Error: The program size (2026637 bytes) is greater than maximum allowed 
(1966080 bytes)
RAM:   [==        ]  19.7% (used 64692 bytes from 327680 bytes)
Flash: [======*** [checkprogsize] Explicit exit, status 1
====]  103.1% (used 2026637 bytes from 1966080 bytes)

platformio.ini schaut bei mir so aus:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_ldf_mode = deep
lib_deps =
  ESP32 BLE Arduino @ 2.0.0
  AutoConnect @ 1.3.4
  PageBuilder @ 1.5.3
  PubSubClient
board_build.partitions = partitions_ble.csv

Hat jemand eine idee wie es weitergehen soll? Waere sehr dankbar fuer 
die antwort

von Patrick (dahype)


Lesenswert?

Hallo

Ich versuche nun seit 2 Wochen meinen extra gekauften ESP32 zu flashen, 
bekomme es nicht hin.
Im Platformio erhalte ich ständig nur Fehlermeldungen.
Nur Erase klappt, aber kein Build usw.. bzw er startet zu Compilieren 
und wirft dann Fehlermeldungen aus.

Hoffe mir kann jemand helfen, bin echt schon am verweifeln! Nächte 
schlage ich mir um die Ohren mit probieren :-(

von Patrick (dahype)


Lesenswert?

Hendrik schrieb:
> Für den ESP ist hier im Thread eine eigene Software verlinkt (nicht
> keyble)

Für den ESP32? Das wäre Klasse. Finde leider nichts.
Nur Keyble und das lässt sich mit Platformio nicht installieren :-(

Vielen Dank

von Patrick (dahype)


Lesenswert?

Thomas F. schrieb:
> Hi,
>
> ich habe mal mit der ESP32 Umsetzung von tscmaxx/Rop09 rumgespielt.
>
> Hier findet Ihr was dabei herausgekommen ist:
>
> https://github.com/lumokitho/esp32-keyble


Wie lässt sich das Projekt auf den ESP32 flashen ohne Platformio (Denn 
damit klappt es nicht)? Vielen vielen Dank für Hilfe.

von Hendrik F. (hendrik_f)


Lesenswert?

Doch, mit platformio klappt es.

Gruß,
Hendrik

von Patrick (dahype)


Lesenswert?

Hendrik F. schrieb:
> Doch, mit platformio klappt es.
>
> Gruß,
> Hendrik

Ich erhalte beim Build immer zahlreiche Fehler.
Auf GIT gibt es auch andere User welche seit Ende 2022 mit Platformio 
nicht mehr flashen können :-(

Eine Idee an was es liegen könnte?

Danke

lib/eQ3/eQ3_util.cpp:1:10: fatal error: hwcrypto/aes.h: No such file or 
directory
 #include <hwcrypto/aes.h>
          ^~~~~~~~~~~~~~~~
compilation terminated.
Compiling .pio\build\esp32dev\FrameworkArduino\Esp.cpp.o
*** [.pio\build\esp32dev\lib05b\eQ3\eQ3_util.cpp.o] Error 1
======================================================================== 
=================  [FAILED]

: Bearbeitet durch User
von Patrick (dahype)


Lesenswert?

Hendrik F. schrieb:

Wäre dir für einen Tipp dankbar, woran es bei mir hakt.
Habe heute ganze Nacht durchprobiert, komm immer zum gleichen Fehler :-(

von Marius S. (lauch42)


Lesenswert?

Die AES-Funktionen sind Teil von mbedtls geworden.
Einfach hwcrypto/aes.h durch mbedtls/aes.h ersetzen.

Damit und mit Entfernen der mittlerweile in der Core-Arduino Library 
inkludierten BLE Library klappt es (also den Eintrag in platformio.ini 
entfernen).

Interessant wäre, ob man die Library in ESPHome einbinden könnte. Ich 
denke das wäre auch mit Abstand am einfachsten zu benutzen, und 
Home-Assistant ist ja dafür nicht zwingend erforderlich.
Da ich nach Umzug den Antrieb wieder in Benutzung habe, könnte ich das 
auch ganz gut gebrauchen, da müsste ich mich aber erstmal wieder 
einlesen.
Von meinem Code wurde ja garnicht soviel geändert :-)

von Patrick (dahype)


Lesenswert?

Ich habe nun auf GIT von Marius den entscheidenden TIPP erhalten!
Konnte nun erfolgreich compilieren.

Die Platformio.ini musste ich noch abändern

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_ldf_mode = deep
lib_deps =
  ESP32 BLE Arduino @ 2.0.0
  AutoConnect @ 1.3.4
  PageBuilder @ 1.5.3
  PubSubClient
board_upload.flash_size = 8MB
board_upload.maximum_size = 8388608
board_build.partitions = default_8MB.csv

Die hwcrypto/aes.h muss durch mbedtls/aes.h ersetzt werden!


Konnte nun erfolgreich flashen.

Jedoch bekomme ich den ESP32 nicht im Wlan angezeigt.
Hätte ich da noch wo Anpassungen vorm Build durchführen müssen?

: Bearbeitet durch User
von Patrick (dahype)


Lesenswert?

Wrote 2032576 bytes (1252792 compressed) at 0x00010000 in 30.0 seconds 
(effective 542.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
======================================================================== 
=================  [SUCCESS]

Build erfolgreich auf den ESP32 geflashed, aber es erscheint kein AP, 
daher kein Wifi das lautet " KeyBLEBridge "

Wo kann hier das Problem liegen?

Danke für Hilfe

von Hendrik F. (hendrik_f)


Lesenswert?

Ausgabe an der seriellen Konsole?

von Patrick (dahype)


Lesenswert?

Hendrik F. schrieb:
> Ausgabe an der seriellen Konsole?

Ich habs. Danke. Ich musste

board_build.partitions = no_ota.csv

in der ini einfügen :-)

: Bearbeitet durch User
Beitrag #7358568 wurde vom Autor gelöscht.
von Patrick (dahype)



Lesenswert?

Marius S. schrieb:
> Die AES-Funktionen sind Teil von mbedtls geworden.
> Einfach hwcrypto/aes.h durch mbedtls/aes.h ersetzen.
>
> Damit und mit Entfernen der mittlerweile in der Core-Arduino Library
> inkludierten BLE Library klappt es (also den Eintrag in platformio.ini
> entfernen).
>
> Interessant wäre, ob man die Library in ESPHome einbinden könnte. Ich
> denke das wäre auch mit Abstand am einfachsten zu benutzen, und
> Home-Assistant ist ja dafür nicht zwingend erforderlich.
> Da ich nach Umzug den Antrieb wieder in Benutzung habe, könnte ich das
> auch ganz gut gebrauchen, da müsste ich mich aber erstmal wieder
> einlesen.
> Von meinem Code wurde ja garnicht soviel geändert :-)

Besten Dank. Es wäre Klasse wenn du dich wieder näher damit beschäftigen 
könntest.
Ich kann zwar das Schloss über den Boot Button des ESP32 nun steuern, 
aber bekomme die Daten nichts in MQTT des Home Assistant. Zufällig eine 
Idee?

Im Webinterface bekomme ich die Daten eingelesen.

Ich habe mir 4 Schlösser gekauft und möchte die gerne in HAS einbinden.
Nutze auch einen Wasserzaehler Al on the Edge sowie einen Stromzähler 
ebenfalls per MQTT Broker. Beides kein Problem.

Besten Dank für einen Tipp!

von Hendrik F. (hendrik_f)


Lesenswert?

Kann die Software mehrere schlösser?
Oder planst du vier esps?

Mit den Informationen wird dir keiner helfen können.
Guck Mal, was an debug Infos in der Konsole kommen.

von Patrick (dahype)


Lesenswert?

Ich plane schon 4 einzelne ESP32. Zuerst habe ich mir aber eben nur 
einen geholt um das ganze mal zu testen. Für mich ist/war Platformio 
neuland, musste mich erst einlesen. Aber Schlussendlich habe ich es nun 
wenigstens hinbekommen. Für einen Newbie in der Sache schon mal ein 
Erfolg. Mit Tasmota und co, kenne ich mich schon eher aus. Auch am PI 
habe ich von PiHole bis zu Nas Server im Einsatz. 90 Smart Home Devices 
hab ich schon in Home Assistant eingebunden mit Shellys und co.

Aber hier stehe ich an was die MQTT Daten betrifft. Sie kommen im HAS 
einfach nicht an.

Weiteres Problem ist das wenn ich auf das Zahnrad Klicke um eine 
Einstellung zu ändern, sich der ESP32 aufhängt und nicht mehr 
ansprechbar ist (Im DHCP Modus). Hier hilft dann nur neu flashen. Dies 
tritt auf wenn der ESP32 auf DHCP gesetzt ist.
Solange man hier nichts ändert oder ändern möchte nach der 
Ersteinrichtung bleibt der ESP32 online und ich kann auch über den Boot 
Point das Schloss triggern. Sobald man aber im WebIF aufs Zahnrad kickt, 
hängt er sich auf ist aber weiterhin mit der IP Online und sendet 
offensichtlich laut Router auch Daten, reagiert aber auch nicht mehr 
aufs manuelle triggern des Boot Points.

Ebenfalls verliert er wenn ich den AP auf Statisch Setze nach paar 
minuten den AP und hängt wieder im Einrichtungs AP SSID  "KeyBLEBridge" 
und ich muss den AP wieder neu konfigurieren. Jedoch bei Statisch kann 
ich zumindest die ersten minuten bis er die Verbindung verliert, 
jederzeit die Config im WebIF ändern..

Daher belasse ich ihn im DHCP Modus. Hier bleibt er zumindest Online. 
Port ist freigegeben und auch sonst habe ich mit der Fritzbox den ESP32 
erstmal auf eine Fixe IP gesetzt.

Hauptproblem ist aber eben das die Daten nicht im MQTT Broker ankommen.
In neuen HAS Versionen braucht man ja angeblich nach FAQ keine YAML 
Config mehr. Hab trotzdem testweise eine gesetzt. Aber auch hier, 
Fehlanzeige.

Wie könnte ich nun an die Debug Infos über die IP kommen?
Ohne den ESP32 an den PC an stecken zu müssen. Denn sobald ich ihn vom 
Strom  nehme, komm ich nicht mehr aufs WebIF. Daher gleiches Verhalten 
wie oben erwähnt im DHCP Modus.

von Hendrik F. (hendrik_f)


Lesenswert?

Wie gesagt: Guck Mal debug Infos übers USB Kabel.

Und wegen Mqtt Guck Mal nach einem Windows Mqtt Monitor.

von Patrick (dahype)


Lesenswert?

---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
# WIFI: connected to SSiD: DaHype xxxxxx
# WIFI: connected!
# WIFI: signalquality: 100%
# WiFi connected to IP: 192.168.1.178
# Connect to MQTT-Broker...
# Connected!
# published keyble/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...
# Found device: 00:1a:xxxxxx
# RSSI: -75
# Connecting in tick
# Connecting...
# Connected in tick
[ 21431][E][BLERemoteCharacteristic.cpp:289] retrieveDescriptors(): 
esp_ble_gattc_get_all_descr: Unknown
# sendMessage end.
# Sending actual fragment: 800200E4E86CDFF4D365C90000000000
# Fragment Data: 80030079DCCF457CABD09E0010170000
# Nonce exchanged
# sendMessage called again...
# Cryptdata length: 8
# Cryptdata length: 8
# Authentifizierungswert berechnen...
# fertig...
# sendMessage end.
# Sending actual fragment: 8082B918C35B2DA98318000139EC7AD2
# Fragment Data: 80837F8008CC1C5ABB260001FC2C28A9
# Auth value: FC2C28A9
# Cryptdata length: 8
# Crypted data: 7F8008CC1C5ABB26
# Authentifizierungswert berechnen...
# fertig...
# Decrypted: 70010B0010170000
# New state: 3
# Done!


Im MQTT Explorer unter Windows wenn ich mich mit dem HAS verbinde., 
erscheint der ESP32 als Topic keyble.
Wenn ich manuell triggere über den Boot Point, ändert sich auch der 
Status im MQTT Explorer. Daher hier ist alles korrekt.
Nur im HAS selbst ist keinerlei Spur von einer Entität :-(

: Bearbeitet durch User
von Hendrik F. (hendrik_f)


Lesenswert?

Dann ist das ein Has Problem.
Da kenne ich mich nicht aus.

von Patrick (dahype)


Lesenswert?

Da es mit HAS aktuell nicht klappt, wäre es möglich das man Lock und 
unlock in das Web Interface einbaut? Wäre für mich eine alternative, da 
ich per dyndns darauf zugreifen könnte von unterwegs. Ist dies funktion 
einzubauen mit großem Aufwand verbunden? Die Schlösser werden momentan 
wohl wieder vermehrt gekauft und es wäre echt toll wenn jemand da 
Projekt weiter Entwickeln kann...

von Hendrik F. (hendrik_f)


Lesenswert?

Du willst dein Schloss ohne Passwort ins Internet stellen?

Das HAS Problem sollte doch lösbar sein.

von Patrick (dahype)


Lesenswert?

Naja ist ja nicht direkt öffentlich zugänglich. Nur mit meinen Login 
Daten, und selbst dann müsste jemand davon vor Ort wissen bzw vor Ort 
sein wenn er Kriminelle Absichten hätte. Und selbst in dem Fall, erhalte 
ich von der Kamera und vom Kontaktschalter der Alarmanlage sofort eine 
Benachrichtigung oder je nach Uhrzeit wird sogar ein Alarm ausgelöst.

Ich hoffe das sich das mit HAS lösen lässt, muss aber erst jemanden 
finden der Ahnung davon hat. Denn anscheinend findet der Broker 
"selbstgemachte" Lösungen nicht mehr automatisch und die Einbindung in 
die yaml wurde in HAS auch vor paar Versionen geändert und passt nun 
nicht mehr wie auf git beschrieben. Somit scheitert es wohl am richtigen 
Sensor Eintrag in der yaml.
Auch abgesehen von DNS, wäre es super wenn man im Web Interface das 
Schloss triggern könnte.

: Bearbeitet durch User
von Patrick (dahype)


Lesenswert?

Habe für MQTT Hilfe erhalten! Es lag bzw liegt daran, das der Broker wie 
vermutet die Entitäten nicht automatisch findet. Noch dazu wurde wie man 
den Sensor in die YAML einbindet, vor kurzem in HAS geändert. Daher es 
ist ein neues Format nutwendig. Nun wird der Sensor gefunden und ich 
kann über HAS öffnen und schließen. Aber sehr unzuverlässig. Hin und 
wieder klappts, dann wieder nicht.

Das Problem ist, das sich der ESP32 nach kurzer Zeit immer wieder 
aufhängt. Daher ich komme nicht mehr auf die IP weder Statisch noch 
DHCP. Er sendet aber weiter, macht aber Timeouts im HAS und manuell 
triggern über den Boot Knopf klappt dann auch nicht mehr. Nach ein und 
ausstecken erfängt er sich hin und wieder. Oft verliert er aber auch 
einfach meine AP Einstellungen. Daher er hängt wieder im Einrichtungs AP 
fest.

Jemand dazu eine Idee was ich in der Main Config ändern könnte, damit 
dies nicht mehr der Fall ist?
Im Log sehe ich bei den Problemen nur das er ständig Wifi trennt, 
verbindet...

Habe 100% WLAN Signal. Daran kanns also nicht liegen. AP schon 
getauscht, auch daran liegts nicht.

von Hendrik F. (hendrik_f)


Lesenswert?

Zeig mal das log

von Patrick (dahype)


Lesenswert?

Ich hab derzeit extra einen anderen Router als Test AP eingerichtet. 
Tritt aber wie geschrieben auch auf anderen Access Points auf.

P192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
# WIFI: connected to SSiD: Test
# WIFI: connected!
# WIFI: signalquality: 62%
# WiFi connected to IP: 192.168.1.178
# Connect to MQTT-Broker...
# Connected!
# published keyble/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...
# Found device: 00:1a:xxxxxx
# RSSI: -79
# Connecting in tick
# Connecting...
# Connected in tick
[  6795][E][BLERemoteCharacteristic.cpp:289] retrieveDescriptors(): 
esp_ble_gattc_get_all_descr: Unknown
# sendMessage end.
# Sending actual fragment: 80020010ADB4781142787A0000000000
# Fragment Data: 8003007558BC13BE9A3A2D0010170000
# Nonce exchanged
# sendMessage called again...
# Cryptdata length: 8
# Cryptdata length: 8
# Authentifizierungswert berechnen...
# fertig...
# sendMessage end.

assert failed: xQueueGenericSend queue.c:832 (pxQueue->pcHead != ((void 
*)0) || pxQueue->u.xSemaphore.xMutexHolder == ((void *)0) || 
pxQueue->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle())


Backtrace: 0x4008380d:0x3ffe7bb0 0x40094f29:0x3ffe7bd0 
0x4009a539:0x3ffe7bf0 0x400959de:0x3ffe7d20 0x400feb65:0x3ffe7d60 
0x400fee1d:0x3ffe7f40 0x4023cb22:0x3ffe7f60 0x400d6b6d:0x3ffe7f80 
0x400d755d:0x3ffe7fd0 0x400d5975:0x3ffe7ff0 0x400d6519:0x3ffe80a0 
0x40131f76:0x3ffe80f0 0x4013271d:0x3ffe8110 0x4015aaa1:0x3ffe8160 
0x4015cc13:0x3ffe8180




ELF file SHA256: c92c274d1e0b063c

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
# WIFI: connected to SSiD: Test
# WIFI: connected!
# WIFI: signalquality: 64%
# WiFi connected to IP: 192.168.1.178
# Connect to MQTT-Broker...
# Connected!
# published keyble/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...
*** toggle ***
# Found device: 00:1a:xxxxxxxxxx
# RSSI: -64
# Connecting in tick
# Connecting...
# Connected in tick
[ 16079][E][BLERemoteCharacteristic.cpp:289] retrieveDescriptors(): 
esp_ble_gattc_get_all_descr: Unknown
# sendMessage end.
# Sending actual fragment: 800200D60CAA4E16F4EC6E0000000000
# Fragment Data: 800300A2A851F6FD66A7840010170000
# Nonce exchanged
# sendMessage called again...
# Cryptdata length: 8
# Cryptdata length: 8
# Authentifizierungswert berechnen...
# fertig...
# sendMessage end.

assert failed: xQueueGenericSend queue.c:832 (pxQueue->pcHead != ((void 
*)0) || pxQueue->u.xSemaphore.xMutexHolder == ((void *)0) || 
pxQueue->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle())


Backtrace: 0x4008380d:0x3ffe7b50 0x40094f29:0x3ffe7b70 
0x4009a539:0x3ffe7b90 0x400959de:0x3ffe7cc0 0x400feb65:0x3ffe7d00 
0x400fee1d:0x3ffe7ee0 0x4023cb22:0x3ffe7f00 0x400d6b6d:0x3ffe7f20 
0x400d755d:0x3ffe7f70 0x400d5975:0x3ffe7f90 0x400d6519:0x3ffe8040 
0x40131f76:0x3ffe8090 0x4013271d:0x3ffe80b0 0x4015aaa1:0x3ffe8100 
0x4015cc13:0x3ffe8120




ELF file SHA256: c92c274d1e0b063c

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
# WIFI: connected to SSiD: Test
# WIFI: connected!
# WIFI: signalquality: 68%
# WiFi connected to IP: 192.168.1.178
# Connect to MQTT-Broker...
# Connected!
# published keyble/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...
*** toggle ***
# Found device: 00:1a:xxxxxxxxxxx
# RSSI: -64
# Connecting in tick
# Connecting...
# Connected in tick
[ 10112][E][BLERemoteCharacteristic.cpp:289] retrieveDescriptors(): 
esp_ble_gattc_get_all_descr: Unknown
# sendMessage end.
# Sending actual fragment: 800200F447832CC7D801190000000000
# Fragment Data: 800300BFD75A591D61E2B00010170000
# Nonce exchanged
# sendMessage called again...
# Cryptdata length: 8
# Cryptdata length: 8
# Authentifizierungswert berechnen...
# fertig...
# sendMessage end.
# Sending actual fragment: 80827B62F6539C1F1A7600013C0DD8ED
# Fragment Data: 808386410CAA559A8E1F000110127DFE
# Auth value: 10127DFE
# Cryptdata length: 8
# Crypted data: 86410CAA559A8E1F
# Authentifizierungswert berechnen...
# fertig...
# Decrypted: 70010A0010170000
# New state: 2
# Done!
# Disconnected!
# WiFi enabled
# WiFi disconnected, reconnect...
Rebooting...
ets Jul 29 2019 12:21:46
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
[  1490][E][WiFiSTA.cpp:317] begin(): connect failed! 0x300a


Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
# WIFI: connected to SSiD: DaHype SmartHome Devices
# WIFI: connected!
# WIFI: signalquality: 100%
# WiFi connected to IP: 192.168.1.178
# Connect to MQTT-Broker...
# Connected!
# published keyble/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...
*** toggle ***
# Found device: 00:1a:xxxxx
# RSSI: -63
# Connecting in tick
# Connecting...
# Connected in tick
[ 17150][E][BLERemoteCharacteristic.cpp:289] retrieveDescriptors(): 
esp_ble_gattc_get_all_descr: Unknown
# sendMessage end.
# Sending actual fragment: 800200BAAA0BB643C2ED2F0000000000
# Fragment Data: 8003005DA1CF162EFB4DCD0010170000
# Nonce exchanged
# sendMessage called again...
# Cryptdata length: 8
# Cryptdata length: 8
# Authentifizierungswert berechnen...
# fertig...
# sendMessage end.

assert failed: xQueueGenericSend queue.c:832 (pxQueue->pcHead != ((void 
*)0) || pxQueue->u.xSemaphore.xMutexHolder == ((void *)0) || 
pxQueue->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle())


Backtrace: 0x4008380d:0x3ffe84d0 0x40094f29:0x3ffe84f0 
0x4009a539:0x3ffe8510 0x400959de:0x3ffe8640 0x400feb65:0x3ffe8680 
0x400fee1d:0x3ffe8860 0x4023cb22:0x3ffe8880 0x400d6b6d:0x3ffe88a0 
0x400d755d:0x3ffe88f0 0x400d5975:0x3ffe8910 0x400d6519:0x3ffe89c0 
0x40131f76:0x3ffe8a10 0x4013271d:0x3ffe8a30 0x4015aaa1:0x3ffe8a80 
0x4015cc13:0x3ffe8aa0




ELF file SHA256: c92c274d1e0b063c

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4
---Starting up...---
---AP Settings---
---AP IP: 192.168.4.1---
---AP SSID: KeyBLEBridge---
# /keyble.json loaded
# WIFI: connected to SSiD: DaHype SmartHome Devices
# WIFI: connected!
# WIFI: signalquality: 100%
# WiFi connected to IP: 192.168.1.178
# Connect to MQTT-Broker...
# Connected!
# published keyble/task/working
# WiFi disabled
*** get state ***
# Nonce exchange
# Searching ...
*** toggle ***
# Found device: 00:1a:xxxxxx
# RSSI: -68
# Connecting in tick
lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
# Connecting...
# Connected in tick
[ 11088][E][BLERemoteCharacteristic.cpp:289] retrieveDescriptors(): 
esp_ble_gattc_get_all_descr: Unknown
# sendMessage end.
# Sending actual fragment: 800200EC1E777431B1A0170000000000
# Fragment Data: 80030063C6BE2CBF99B96F0010170000
# Nonce exchanged
# sendMessage called again...
# Cryptdata length: 8
# Cryptdata length: 8
# Authentifizierungswert berechnen...
# fertig...
# sendMessage end.
# Sending actual fragment: 8082E2063A5720E78301000190625CFE
# Fragment Data: 808377C30FFADA660F3F0001C1218916
# Auth value: C1218916
# Cryptdata length: 8
# Crypted data: 77C30FFADA660F3F
# Authentifizierungswert berechnen...
# fertig...
# Decrypted: 70010A0010170000
# New state: 2
# Done!
# Disconnected!
# WiFi enabled
# WiFi disconnected, reconnect...
# WIFI: connected to SSiD: DaHype SmartHome Devices
# WIFI: connected!
# WIFI: signalquality: 100%
# WiFi connected to IP: 192.168.1.178
# published keyble/task/working
# WiFi disabled
*** toggle ***
!!! Lockstatus -1 - timeout !!!
# Done!
# WiFi enabled
# WiFi disconnected, reconnect...
# WIFI: connected to SSiD: DaHype SmartHome Devices
# WIFI: connected!
# WIFI: signalquality: 100%
# WiFi connected to IP: 192.168.1.178
# MQTT disconnected, reconnect...
# Connect to MQTT-Broker...
# Connected!
# published keyble/state/timeout
# published keyble/task/waiting
# published keyble/battery/1
# published keyble/rssi/-68
# waiting for command...
# published keyble/task/working
# WiFi disabled
*** toggle ***

: Bearbeitet durch User
von Hendrik F. (hendrik_f)


Lesenswert?

1
Rebooting... ets Jul 29 2019 12:21:46 rst:0xc (SW_CPU_RESET),boot:0x13



Versuch Mal eine bessere Stromversorgung (Kabel und Netzteil)

Sonst vielleicht den Flash auf 40 MHz stellen

https://github.com/espressif/arduino-esp32/issues/3510

von Patrick (dahype)


Lesenswert?

Danke. Das war auch gestern schon mein Gedanke wegen der 
Stromversorgung.
Ich habe schon 4 Netzteile durchprobiert. Unter anderem ein PI 4 
Netzteil mit 3A und 5,1V. Sowie auch andere. Verhalten überall gleich.

Mit den 40Mhz werde ich gleich mal versuchen. Danke

von Hendrik F. (hendrik_f)


Lesenswert?

Auch mal das Kabel tauschen...

Hier gibt's mehr dazu

https://www.esp32.com/viewtopic.php?f=12&t=11439&start=30

von Patrick (dahype)



Lesenswert?

Kabel und Netzteil sind OK. Es schaut nun gut aus!
Der entscheidende Tipp von dir mit 40Mhz war wohl das ausschlaggebende.
Bleibt noch etwas abzuwarten, aber derweil schaut es vielversprechend 
aus.

; set frequency to 40MHz
board_build.f_flash = 40000000L

von Hendrik F. (hendrik_f)


Lesenswert?

Super!

Vielleicht machst du nen Pull Requests mit deinen Änderungen.

von Patrick (dahype)


Lesenswert?

Hendrik F. schrieb:
> Super!
>
> Vielleicht machst du nen Pull Requests mit deinen Änderungen.

Ich hab noch ein paar Änderungen durchgeführt welche User in den Issue 
beschrieben hatten. Werde es aber erstmal paar Tage laufen lassen und 
wenn es wie gewünscht funktioniert, werd ich das bei git mitteilen.

Danke dir jedenfalls für den Entscheidenden Tipp. Auf das wäre ich nie 
gekommen. Vorher hätte ich noch den ESP32 aus dem Fenster geworfen.

Wenns gut läuft, werd ich mir noch 3 Stk holen bzw eventuell sogar noch 
ein weiteres Schloss für die Gartenhütte. Somit würde ich dann 4 Stk 
extra ansteuern mit je einem ESP32.

Da die Schlösser derzeit im Warehouse Deal günstig zu bekommen sind, 
hätte ich dann für 4Stk inkl ESP und Netzteil 250€ investiert! Quasi 
nicht mal der Preis was ein Nuki ohne Bridge kosten würde....

von Patrick (dahype)


Lesenswert?

So. Nun melde ich mich nochmals. 14 Stunden lief alles völlig 
problemlos. Dann wie aus dem Nichts lieferte keine Daten mehr und war 
wieder im KeyBLEBridge. Musste also den AP wieder manuell setzen.

Wie könnte ich den Problem auf die schliche kommen? Im Log ist nichts 
großartiges zu sehen. Nur das disconnect steht und danach Connected 
KeybleBridge. Also der Einrichtungs AP.

Mit dem WLAN ist und war definitv alles ok.

Jetzt würde ich gerne probieren meine AP direkt zu setzen in der config. 
Also hardcoding wie ich gelesen habe, nur weiß ich nicht wo und was ich 
in der Main Datei einfügen muss. Hoffe das kann mir jemand beantworten.

Danke

von Hendrik F. (hendrik_f)


Lesenswert?

Zeig mal das log vom Zeitpunkt wo das Problem entstand.

von Patrick (dahype)


Lesenswert?

Mit den Verbesserungen von corgan auf git, scheint es nun zu laufen.
Bin da immer noch etwas vorsichtig und stellt sich erst in paar Tagen 
heraus. Aber es schaut gut aus :-)

https://github.com/lumokitho/esp32-keyble/pull/7/files/b71b3d9ecf78a8fab9e15a74550d66f0782be88b

: Bearbeitet durch User
von Michi O. (michi_o)


Lesenswert?

Hi alles zusammen, ich kriege folgende fehlermeldung mit platformio

Building FS image from 'data' directory to 
.pio/build/esp32dev/spiffs.bin
error: can't read source directory
*** [.pio/build/esp32dev/spiffs.bin] Error 1

Hat da wer ideen?

von Michi O. (michi_o)


Lesenswert?

Wenn ich aber einfach auf kompilieren und hochladen klicke - startet der 
esp nicht
ELF file SHA256: f4d36c5aec79c1e9

E (830) esp_core_dump_flash: Core dump flash config is corrupted! 
CRC=0x7bd5c66f instead of 0x0
Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4

von Hendrik F. (hendrik_f)


Lesenswert?

Klingt, als fehlen beim Kompilieren Daten.
Source komplett heruntergeladen?

von Michi O. (michi_o)


Lesenswert?


von Michi O. (michi_o)


Lesenswert?

Habe nun auf einem anderen PC Platformio installiert und kriege die 
gleiche fehlermeldung wenn ich Build Filesystem Image anklicke

Building FS image from 'data' directory to
.pio/build/esp32dev/spiffs.bin
error: can't read source directory
*** [.pio/build/esp32dev/spiffs.bin] Error 1

von Patrick (dahype)


Lesenswert?

Michi O. schrieb:
> Habe nun auf einem anderen PC Platformio installiert und kriege die
> gleiche fehlermeldung wenn ich Build Filesystem Image anklicke
>
> Building FS image from 'data' directory to
> .pio/build/esp32dev/spiffs.bin
> error: can't read source directory
> *** [.pio/build/esp32dev/spiffs.bin] Error 1

Du brauchst nur einen leeren Ordner anlegen der data heißt.
Oder du ladest die keyble zip von git, entpackst sie, und erstellst dort 
gleich den Data Ordner, bevor du das Projekt in Platformio öffnest.

Dann klappts einwandfrei. Habe selbst lange nach einer Lösung gesucht 
als ich Anfangs immer die Fehlermeldung hatte.

LG

von Patrick (dahype)


Angehängte Dateien:

Lesenswert?

data Ordner erstellen. Danach läufts ohne spiffs fehler.

von Hendrik F. (hendrik_f)


Lesenswert?

Es wäre echt super, wenn ihr die Änderungen und Vorschläge, die ihr habt 
als pull request auf github stellt.
Sonst sucht sich der nächste doof.

von Al O. (cyber83)


Lesenswert?

nach 5 Jahren ist bei mir nun das erste Smartlock kaputt.
Aber nicht kaputt-kaputt, sondern so, dass ich fast daran verrückt 
geworden wäre.
Ich nehme an, dass die kontaktschalter, die die umdrehungen des 
schlüssels reistrieren und messen, am kaputtwerden sind bzw. zumindest 
einer davon sehr unzuverlässig ist.
das hat zur auswirkung, dass das schloss zB statt aufzusperren eine 
runde zuviel dreht, folglich dann die falle zurückzieht, bis der 
drehmomentschutz des schlosses "stopp" sagt.
damit vergisst das schloss aber in welcher position es sich gerade 
befindet. wenn man nun sperren drückt wird eine halbe runde zu wenig 
gedreht. daraus resultierend wurde bei mir dann nicht abgesperrt.

ich dachte zuerst an konfigurationsfehler, dann an softwarefehler (ja, 
immer wenn man vor dem schloss steht funktioniert es richtig!), aber 
schlussendlich kann ich beides absschließen, da das neue schloss das 
alte, richtige verhalten zeigt.
Mechanischen defekt kann ich ausschließen, das schloss innen ist sauber, 
leichtgängig, auch der schlüssel.

ich werde beizeiten (vermutlich kommenden winter erst, das sind typische 
winterprojekte bei mir) die platine auslöten und dann die beiden 
Kontakttaster durchmessen bzw. tauschen versuchen.

falls jemand das gleiche problem bekommt. ersatzschloss anschaffen.
ich hatte hier grob geschätzt von februar bis november täglich 2 bis 3 
öffnen / schließzyklen. macht ca. 600 bis 900 pro jahr, rechnen wir mit 
700 (wochenende, urlaub, ...) und ca. 5 jahre sind 3500 
schlossbewegungen. die Kontakttaster bekommen 4 impulse pro runde, also 
10.000 bis 12.000 als lebensdauer - klingt nach einem plausiblen wert.

LG

von Christian E. (emron)


Lesenswert?

Hallo,

ich hab mal eine Frage bezüglich des keyble-Scripts 
(https://github.com/oyooyo/keyble). Ich probiere dies auf einem 
Raspberry zu installieren.

Jedoch bei der Eingabe von:
npm install --update --global --unsafe-perm keyble

geht der Ladebalken bis ganz nach hinten, es wird aber keine 
Fertigmeldung gegeben und der Raspberry wird voll ausgelastet, sodass 
man den Prozess mit STRG+C (hab bis zu 15 Mins gewartet) abbrechen muss.

Ich habe es mit einem Raspberry 3+, Raspberry 4 und Raspberry Zero 2 
getestet, jedes mal das gleiche Problem.

Ist das Problem bekannt bzw. was könnte den Fehler verursachen?

Viele Grüße
Christian

von Patrick (dahype)


Lesenswert?

Ich suche täglich seit Monaten nach einer Lösung warum der ESP32 nach 
ein paar Stunden die Verbindung verliert und dann wieder im AP des 
keyble hängt. Wenn ich den AP dann neu einwähle, läuft es wieder für 
paar Stunden völlig Problemlos. Daher der Auto Connect zum Wifi Netzwerk 
funktioniert nicht.

Ich möchte daher die Wifi Daten von meinem AP direkt integrieren damit 
der ESP32 sich immer damit verbindet.

Leider kann oder will mir niemand in anderen Foren helfen. Bin da echt 
am verweifeln, da ich täglich 3x die Daten neu eingeben muss damit das 
Schloss paar Stunden funktioniert!

Hoffe das ihr mir hier sagen könnt wie ich das sogenannte Hardcoding  in 
der Maindatei? eintragen kann?

// 
---[SetupWiFi]---------------------------------------------------------- 
-----
void SetupWifi()
{
  digitalWrite(LED_GPIO,LOW);

  if (Portal.begin())
  {
   if (WiFi.status() == WL_CONNECTED)
   {
     Serial.println("# WIFI: connected to SSiD: " + WiFi.SSID());
     digitalWrite(LED_GPIO,HIGH);
   }
   int maxWait=100;
   while (WiFi.status() != WL_CONNECTED) {
    Serial.println("# WIFI: checking SSiD: " + WiFi.SSID());
    delay(500);

    if (maxWait <= 0)
        ESP.restart();
      maxWait--;
  }
  Serial.println("# WIFI: connected!");
  Serial.println("# WIFI: signalquality: " + 
String(GetWifiSignalQuality()) + "%");
  Serial.println("# WiFi connected to IP: " + 
WiFi.localIP().toString());
  digitalWrite(LED_GPIO,HIGH);
  }
}

von Hendrik F. (henfri)


Lesenswert?

Lass dochmal einen Rechner am USB Port und Guck, was auf der seriellen 
Schnittstelle geloggt wird.

Der Codeblock von dir gibt nur Infos raus.

von Patrick (dahype)


Lesenswert?

Eben nicht wirklich was. Nur das disconnect steht sobald er die 
Verbindung zum AP verliert. Der Auto Connect funktioniert also nicht. 
Gehe ich manuell aufs Web Interface von keyble und wähle mich neu in den 
AP ein, ist wieder alles OK für paar Stunden.

Daher möchte ich den AP von Keyble entfernen und meine Daten von meinem 
AP eintragen damit er sich automatisch mit diesen verbindet.

Ein User im Git hat vor monaten mal geschrieben das er es beheben konnte 
mit Hardcoding.

"I made it work by hardcoding credentials under Portal.begin(SSID,PASS)"

Hätte diesen schon mehrmals versucht zu erreichen, aber leider keine 
Antwort oder Reaktion.

Dies würde ich eben gerne umsetzen, nur scheittert es hier an meinen 
Fähigkeiten und in Foren bekam ich dazu leider auch keine Hilfe wo/was 
in der main einzutragen ist :-(

: Bearbeitet durch User
von Hendrik F. (henfri)


Lesenswert?

Ein komplettes Log würde schon helfen...
Ich vermute, der ESP startet neu. Das würde man sehen...

schick Mal nen Link zu deinem code

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Marius S. schrieb:
> Die AES-Funktionen sind Teil von mbedtls geworden.
> Einfach hwcrypto/aes.h durch mbedtls/aes.h ersetzen.
>
> Damit und mit Entfernen der mittlerweile in der Core-Arduino Library
> inkludierten BLE Library klappt es (also den Eintrag in platformio.ini
> entfernen).
>
> Interessant wäre, ob man die Library in ESPHome einbinden könnte. Ich
> denke das wäre auch mit Abstand am einfachsten zu benutzen, und
> Home-Assistant ist ja dafür nicht zwingend erforderlich.
> Da ich nach Umzug den Antrieb wieder in Benutzung habe, könnte ich das
> auch ganz gut gebrauchen, da müsste ich mich aber erstmal wieder
> einlesen.
> Von meinem Code wurde ja garnicht soviel geändert :-)
Hi,
Gibt es was neue bezüglich esphome?
Hast du dich schon damit befaßt?
Grüß

von Dirk (digaus)



Lesenswert?

Danke schonmal an alle die diese großartige Vorarbeit geleistet haben.

Habe eine erste Version für esphome geschrieben auf Basis der ESP32 
Version.

Diese findet ihr hier:

https://github.com/digaus/esphome-components-eqiva


Aktuell funktioniert die Ansteuerung via Services.

Initiales Pairing, um den User Key zu bekommen, ist ebenfalls möglich. 
Weiterleiten des aktuellen Status habe ich noch nicht umgesetzt.

Diese Version hier ist als alpha zu sehen und wurde lediglich am 
Schreibtisch getestet.

Mein Ziel ist es mein HMIP Schloss durch dieses zu ersetzen und direkt 
mit einem ESP32 anzusteuern welcher an einen Fingerprint angeschlossen 
und in meiner Klingel integriert ist.

Hierfür habe ich eigens ein ESP32-Board entwickelt, welches direkt mit 
dem Fingerprint in eine Klingel integriert werden kann.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Dirk schrieb:
> Habe eine erste Version für esphome geschrieben auf Basis der ESP32
> Version.

Das klingt ja super!

Kannst Du ganz knapp beschreiben wie man das Pairing machen muss?

von Dirk (digaus)


Lesenswert?

Philipp C. schrieb:
> Dirk schrieb:
>> Habe eine erste Version für esphome geschrieben auf Basis der ESP32
>> Version.
>
> Das klingt ja super!
>
> Kannst Du ganz knapp beschreiben wie man das Pairing machen muss?

Einfach den Pair Service aufrufen und dort den Card Key eintragen, den 
man bekommt wenn man den QR Code scannt. (Zuvor natürlich warten, bis 
das Schloss verbunden ist und dann noch 5 Sekunden den öffnen Knopf 
gedrückt halten um das Pairing zu aktivieren)

Gleichzeitig die Logs vom ESP anzeigen. Dort wird dann der user_key und 
die user_id geloggt.

von Artur K. (artur_k638)


Lesenswert?

Hi, danke für dein Projekt.
Habe es ausprobiert, aber iwie startet mein esp32 nicht richtig nach dem 
Flaschen. Iwas mache ich falsch!?

von Hendrik F. (henfri)


Lesenswert?

Ja bestimmt.

von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Hi, danke für dein Projekt.
> Habe es ausprobiert, aber iwie startet mein esp32 nicht richtig nach dem
> Flaschen. Iwas mache ich falsch!?

Welchen ESP32 hast du denn?

von Artur K. (artur_k638)


Lesenswert?

Welche Version von esphome benutzt ihr?

von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> Artur K. schrieb:
>> Hi, danke für dein Projekt.
>> Habe es ausprobiert, aber iwie startet mein esp32 nicht richtig nach dem
>> Flaschen. Iwas mache ich falsch!?
>
> Welchen ESP32 hast du denn?

AZDelivery ESP32 D1 Mini

Hatte eine mit ble proxy, habe da code Teile von dem Projekt 
hinzugefügt. Nach dem Flaschen startet er nicht, bzw zeigt was komisches 
im log, also nicht was normalerweise in log von esphome ist.
Versuche es noch mal exakt das was bei dir ist. Mal sehen.

von Hendrik F. (henfri)


Lesenswert?

Artur K. schrieb:
> startet er nicht, bzw zeigt was komisches im log,

Und ist das geheim?

von Artur K. (artur_k638)


Lesenswert?

Hendrik F. schrieb:
> Artur K. schrieb:
>> startet er nicht, bzw zeigt was komisches im log,
>
> Und ist das geheim?

Natürlich nicht. Habe gerade es nicht zu Hand. Wenn ich es später noch 
mal probiere, poste ich es sofort.

von Artur K. (artur_k638)


Lesenswert?

Also, noch mal versucht, alles sauber geschrieben, hats geklappt. nur 
wenn ich bluetooth_proxy:
  active: true
einfüge, sag er mir
RAM:   [==        ]  17.9% (used 58652 bytes from 327680 bytes)
Flash: [==========]  100.9% (used 1851057 bytes from 1835008 bytes)
Error: The program size (1851057 bytes) is greater than maximum allowed 
(1835008 bytes)
*** [checkprogsize] Explicit exit, status 1

obwohl
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
werden nur 2mb benutzt? es sind doch knapp 1,8mb. verstehe ich was 
falsch?

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Artur K. schrieb:
> Also, noch mal versucht, alles sauber geschrieben, hats geklappt.

Ich musste bei mir auf dem ESP32 auch alles was ich davor laufen hatte 
rauswerfen, damit es drauf passt.

Dann hat es aber super geklappt. Vielen Dank!

Wäre es auch möglich mehr als einen dieser Antriebe an einem ESP32 zu 
betreiben?

von Dirk (digaus)


Lesenswert?

Philipp C. schrieb:
> Artur K. schrieb:
>> Also, noch mal versucht, alles sauber geschrieben, hats geklappt.
>
> Ich musste bei mir auf dem ESP32 auch alles was ich davor laufen hatte
> rauswerfen, damit es drauf passt.
> Dann hat es aber super geklappt. Vielen Dank!
> Wäre es auch möglich mehr als einen dieser Antriebe an einem ESP32 zu
> betreiben?

Benutze als Basis den esp_32_ble_client von esphome. Der kann soweit ich 
das sehe nur eine Verbindung gleichzeitig.

Man könnte das natürlich alles noch selber programmieren. Halte ich aber 
für nicht so sinnvoll ^^


Ich hab leider aktuell das Problem, dass mein ESP32-C3 beim Verschlüssen 
abschmiert :/

Bin am überlegen, ob ich es Mal mit dem esp-idf Framework probiere 
anstelle des Arduino.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Dirk schrieb:
> Benutze als Basis den esp_32_ble_client von esphome. Der kann soweit ich
> das sehe nur eine Verbindung gleichzeitig.

Man kann dann ja einfach einen weiteren ESP32 verwenden.

Dirk schrieb:
> Ich hab leider aktuell das Problem, dass mein ESP32-C3 beim Verschlüssen
> abschmiert :/

Auf dem Tisch (ohne Schloss am Motor) funktioniert es bei mir mit einem 
D1.

von Hendrik F. (henfri)


Lesenswert?

Hallo,

ich fänd es auch super, wenn mehrere Schlösser möglich wären.
Ich verstehe die Limitierung auf eine Verbindung gleichzeitig, aber war 
es nicht so, dass man ohnehin die Verbindung nur kurz aufbauen sollte, 
um die Batterien des Schloss zu schonen?

Wenn man dann mehrere Schlösser hat muss man doch nur die Verbindung zu 
dem gerade gewählten Schloss aufbauen.

Gruß,
Hendrik

von Dirk (digaus)


Lesenswert?

Philipp C. schrieb:
> Dirk schrieb:
>> Benutze als Basis den esp_32_ble_client von esphome. Der kann soweit ich
>> das sehe nur eine Verbindung gleichzeitig.
>
> Man kann dann ja einfach einen weiteren ESP32 verwenden.
> Dirk schrieb:
>> Ich hab leider aktuell das Problem, dass mein ESP32-C3 beim Verschlüssen
>> abschmiert :/
>
> Auf dem Tisch (ohne Schloss am Motor) funktioniert es bei mir mit einem
> D1.

Jo mit nen normalen ESP32 klappt es bei mir ja auch :)

Der ESP32-C3 hat aber ne RISC-V CPU und keine XTensa wie der normale

Dafür kann unterstützt er nativ USB und ist kompakter :)

von Dirk (digaus)


Angehängte Dateien:

Lesenswert?

Hendrik F. schrieb:
> Hallo,
>
> ich fänd es auch super, wenn mehrere Schlösser möglich wären.
> Ich verstehe die Limitierung auf eine Verbindung gleichzeitig, aber war
> es nicht so, dass man ohnehin die Verbindung nur kurz aufbauen sollte,
> um die Batterien des Schloss zu schonen?
>
> Wenn man dann mehrere Schlösser hat muss man doch nur die Verbindung zu
> dem gerade gewählten Schloss aufbauen.
>
> Gruß,
> Hendrik

Wollte eine möglichst schnelle Reaktion haben. Deshalb aktuell die 
dauerhafte Verbindung.

Du hast mich aber zum Nachdenken gebracht.

Man könnte es ja so umsetzen, dass man einstellen kann, wann eine 
dauerhafte Verbindung erfolgen soll.

So könnte man die Verbindung z.B. trennen, wenn alle Personen zu Hause 
sind allgemeiner einfach Nachts.

Dies würde dann ja auch Energie sparen. Wenn ich das dann umsetze kann 
ich auch einen Service definieren, der die aktuell festen Parameter 
übernimmt.

So könnte man dann auch zwei Schlösser steuern via Home Assistant.


Hab es jetzt auch mit einem ESP32-C3 am laufen und die flash size 
nochmal verkleinert.

von Dirk (digaus)


Lesenswert?

Hab die Änderungen einmal gepushed.

Wer Speicher sparen möchte kann das Framework auf esp-idf ändern. 
Dadurch spart man ca. 20%

ESP lief bei mir jetzt 6 Stunden durch ohne Verbindungsverlust.

Zwischendurch auch immer wieder Finger scannen lassen ohne Probleme.

Lediglich gerade eben hat er einige Sekunden gebraucht bis das Schloss 
reagiert hat. Könnte aber natürlich auch am Schloss gelegen haben, da 
beide Befehle nach einigen Sekunden doch ausgeführt wurden obwohl ich 
keine Message queue eingebaut habe.

von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> Hab die Änderungen einmal gepushed.
>
> Wer Speicher sparen möchte kann das Framework auf esp-idf ändern.
> Dadurch spart man ca. 20%
>
> ESP lief bei mir jetzt 6 Stunden durch ohne Verbindungsverlust.
>
> Zwischendurch auch immer wieder Finger scannen lassen ohne Probleme.
>
> Lediglich gerade eben hat er einige Sekunden gebraucht bis das Schloss
> reagiert hat. Könnte aber natürlich auch am Schloss gelegen haben, da
> beide Befehle nach einigen Sekunden doch ausgeführt wurden obwohl ich
> keine Message queue eingebaut habe.

Was ist das für ein fingerscanner?

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Dirk schrieb:
> Wollte eine möglichst schnelle Reaktion haben. Deshalb aktuell die
> dauerhafte Verbindung.

Das finde ich auch gerade richtig klasse. Bei der ursprünglichen Lösung 
mit dem Pi war es immer etwas irritierend, wenn man den Pin am 
Tastenfeld eingeben hat und erst einmal nichts passierte.
Dafür wechsel ich gern öfter die Batterie ;)

von Dirk (digaus)


Angehängte Dateien:

Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
>> Hab die Änderungen einmal gepushed.
>> Wer Speicher sparen möchte kann das Framework auf esp-idf ändern.
>> Dadurch spart man ca. 20%
>> ESP lief bei mir jetzt 6 Stunden durch ohne Verbindungsverlust.
>> Zwischendurch auch immer wieder Finger scannen lassen ohne Probleme.
>> Lediglich gerade eben hat er einige Sekunden gebraucht bis das Schloss
>> reagiert hat. Könnte aber natürlich auch am Schloss gelegen haben, da
>> beide Befehle nach einigen Sekunden doch ausgeführt wurden obwohl ich
>> keine Message queue eingebaut habe.
>
> Was ist das für ein fingerscanner?

Grow R503 den ich auseinander gebaut habe :)
Gibt's auch bei Amazon, falls man nicht auf AliExpress warten kann ;)

Kombiniert am Ende in einer Klingel

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> Grow R503 den ich auseinander gebaut habe :)
> Gibt's auch bei Amazon, falls man nicht auf AliExpress warten kann ;)
>
> Kombiniert am Ende in einer Klingel
Danke, möchte meine fingerabdruckleser in Doorbird (ekey) ersetzen. Da 
kann man bißchen testen. Wie zuverlässig ist der?

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> Hab die Änderungen einmal gepushed.
>
> Wer Speicher sparen möchte kann das Framework auf esp-idf ändern.
> Dadurch spart man ca. 20%
>
> ESP lief bei mir jetzt 6 Stunden durch ohne Verbindungsverlust.
>
> Zwischendurch auch immer wieder Finger scannen lassen ohne Probleme.
>
> Lediglich gerade eben hat er einige Sekunden gebraucht bis das Schloss
> reagiert hat. Könnte aber natürlich auch am Schloss gelegen haben, da
> beide Befehle nach einigen Sekunden doch ausgeführt wurden obwohl ich
> keine Message queue eingebaut habe.

Hi, heisst dass es jetzt immer Verbindung getrennt wird? Und ich habe 
gesehen dass du
external_components:
  source:
geändert hast, wenn ich es jetzt richtig verstehe, muss ich immer 
aktuellen Ordner von Github lokal kopieren?
Framework kann ich ja Arduino lassen, weil will nicht neu flashen, will 
nur als OTA machen.
Grüß

von Artur K. (artur_k638)


Lesenswert?

Batterie als sensor wäre noch sehr gut, ich bin noch nicht gut in 
esphome, ich sehe es in Log aber wie man es rausholt, habe noch nicht 
rausgefunden.

von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
>> Hab die Änderungen einmal gepushed.
>> Wer Speicher sparen möchte kann das Framework auf esp-idf ändern.
>> Dadurch spart man ca. 20%
>> ESP lief bei mir jetzt 6 Stunden durch ohne Verbindungsverlust.
>> Zwischendurch auch immer wieder Finger scannen lassen ohne Probleme.
>> Lediglich gerade eben hat er einige Sekunden gebraucht bis das Schloss
>> reagiert hat. Könnte aber natürlich auch am Schloss gelegen haben, da
>> beide Befehle nach einigen Sekunden doch ausgeführt wurden obwohl ich
>> keine Message queue eingebaut habe.
>
> Hi, heisst dass es jetzt immer Verbindung getrennt wird? Und ich habe
> gesehen dass du
> external_components:
> source:
> geändert hast, wenn ich es jetzt richtig verstehe, muss ich immer
> aktuellen Ordner von Github lokal kopieren?
> Framework kann ich ja Arduino lassen, weil will nicht neu flashen, will
> nur als OTA machen.
> Grüß

ah sorry Pfad muss der alte dein von GitHub.

Lokal zeige ich auf den lokalen pfad damit ich nicht immer pushen muss 
um was zu testen.

Aktuell behält er noch die Verbindung. Ich werde aber noch einbauen, 
dass man diese trennen kann.


Bzgl Batterie wird es auch noch eingebaut. Lock Status ist ja auch noch 
nicht drin in HA. Packe da dann noch Rssi, Batterie und Status rein.

von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
>
> ah sorry Pfad muss der alte dein von GitHub.
>
> Lokal zeige ich auf den lokalen pfad damit ich nicht immer pushen muss
> um was zu testen.
>
> Aktuell behält er noch die Verbindung. Ich werde aber noch einbauen,
> dass man diese trennen kann.
>
>
> Bzgl Batterie wird es auch noch eingebaut. Lock Status ist ja auch noch
> nicht drin in HA. Packe da dann noch Rssi, Batterie und Status rein.

das habe ich mir gedacht, habe ich noch gelassen.
wegen Batterie, wie geht es überhaupt? frage nur weil ich es für mich 
persönlich interessant finde.

von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
>> Hab die Änderungen einmal gepushed.
>> Wer Speicher sparen möchte kann das Framework auf esp-idf ändern.
>> Dadurch spart man ca. 20%
>> ESP lief bei mir jetzt 6 Stunden durch ohne Verbindungsverlust.
>> Zwischendurch auch immer wieder Finger scannen lassen ohne Probleme.
>> Lediglich gerade eben hat er einige Sekunden gebraucht bis das Schloss
>> reagiert hat. Könnte aber natürlich auch am Schloss gelegen haben, da
>> beide Befehle nach einigen Sekunden doch ausgeführt wurden obwohl ich
>> keine Message queue eingebaut habe.
>
> Hi, heisst dass es jetzt immer Verbindung getrennt wird? Und ich habe
> gesehen dass du
> external_components:
> source:
> geändert hast, wenn ich es jetzt richtig verstehe, muss ich immer
> aktuellen Ordner von Github lokal kopieren?
> Framework kann ich ja Arduino lassen, weil will nicht neu flashen, will
> nur als OTA machen.
> Grüß

Habe soeben lokal die connect Funktion implementiert.

Braucht dann doch recht lange bis er sich verbunden und den Befehl 
ausgeführt hat. Sind so 12 Sekunden.


Damit sollte man aber auch verschiedene Schlösser ansprechen  können.

Denke für mich werde ich es so umsetzen, dass falls alle daheim sind der 
ESP die Verbindung trennt.

Sobald die Tür geöffnet wird oder eine Person nicht zu Hause ist der ESP 
eine Verbindung herstellt.

Artur K. schrieb:
> Dirk schrieb:
>> ah sorry Pfad muss der alte dein von GitHub.
>> Lokal zeige ich auf den lokalen pfad damit ich nicht immer pushen muss
>> um was zu testen.
>> Aktuell behält er noch die Verbindung. Ich werde aber noch einbauen,
>> dass man diese trennen kann.
>> Bzgl Batterie wird es auch noch eingebaut. Lock Status ist ja auch noch
>> nicht drin in HA. Packe da dann noch Rssi, Batterie und Status rein.
>
> das habe ich mir gedacht, habe ich noch gelassen.
> wegen Batterie, wie geht es überhaupt? frage nur weil ich es für mich
> persönlich interessant finde.

Habe ich mir noch nicht angeschaut ^^
Gibt leider wenig bis gar keine Doku. Ich schaue immer in anderen 
Komponenten nach, wie diese das umgesetzt haben 😅

von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
>
Ja das stimmt, konnte auch nichts finden. Für mich wäre nur akkustand 
wichtig.
Eine dauerhafte Verbindung waren in meinen Fall von Vorteil. Könnte man 
dann später auswählen ob man trennen möchte oder nicht?

von Thomas (type0n)


Lesenswert?

Hey @digaus!

Schön das sich hier erneut etwas bewegt!

Deine Umsetzung setzt ja auf Home Assistant auf. Sowohl damit, als auch 
mit ESPHome habe ich leider keine/kaum Erfahrung.

Soweit ich deinen Code überblicke, könnte man den API Teil von HA 
rausnehmen und durch einen MQTT Broker ersetzte. Nun frage ich mich, ob 
man die von dir in HA genutzen/bereitgestellten Services des 
Schlossantriebs ohne die API über eine eingehende MQTT Nachricht 
aufrufen bzw. den Status via MQTT veröfftlichen könnte?

Damit könnte man dann auch ohne HA das Schloss ansprechen.

Hättest Du da bitte eine Tipp für mich?

Schönen Gruß
type0n

von Dirk (digaus)


Lesenswert?

Thomas schrieb:
> Hey @digaus!
> Schön das sich hier erneut etwas bewegt!
> Deine Umsetzung setzt ja auf Home Assistant auf. Sowohl damit, als auch
> mit ESPHome habe ich leider keine/kaum Erfahrung.
> Soweit ich deinen Code überblicke, könnte man den API Teil von HA
> rausnehmen und durch einen MQTT Broker ersetzte. Nun frage ich mich, ob
> man die von dir in HA genutzen/bereitgestellten Services des
> Schlossantriebs ohne die API über eine eingehende MQTT Nachricht
> aufrufen bzw. den Status via MQTT veröfftlichen könnte?
> Damit könnte man dann auch ohne HA das Schloss ansprechen.
> Hättest Du da bitte eine Tipp für mich?
> Schönen Gruß
> type0n

Esphome funktioniert auch standalone.


MQTT kann einfach mit dem MQTT Client eingebunden werden:

https://esphome.io/components/mqtt.html#on-message-trigger

Hab die Version auf GitHub mit der connect und disconnect Funktion 
aktualisiert.

Mac Adresse kann man leider nicht via template weitergeben. Man muss 
also mehrere Connect services definieren wenn man mehrere Schlösser 
verwenden möchte.

von Thomas (type0n)


Lesenswert?

Hallo nochmal!

Ich habe mal etwas herumprobiert und konnte den API Teil gegen eine MQTT 
Broker Verbindung ersetzen (yaml ist völlig neu für mich).

Den Aufruf der Service Funktionen habe ich auch hinbekommen.
Durch einen MQTT Subscriber Sensor bekomme ich externe Befehle zum ESP 
und kann damit bis jetzt lock/unlock/open/status auslösen.

Jetzt fehlen nur noch Pairing und Batteriestatus, dann wäre diese Lösung 
für mich schon fast voll einsatzfähig!

Am Broker sehe ich nun mehrere Topics. Ohne die, die ich eingefügt habe 
published der ESP das Topic status und debug.

Via debug kommt alles an, was auch über den Logger geht.
Darin sind dann auch aktueller Status und Batteriestatus enthalten.

Wenn der Status bei jeder Änderung gepublished werde könnten, könnte man 
auch die manuelle Bedienung erkennen.

Wenn dabei auch noch der Batteriestatus kommt, optimal!

Hat da jemend eine Idee wie man das realsieren/wo man da ansetzen 
könnte?

Schönen Gruß
type0n

von Dirk (digaus)


Lesenswert?

Thomas schrieb:
> Hallo nochmal!
> Ich habe mal etwas herumprobiert und konnte den API Teil gegen eine MQTT
> Broker Verbindung ersetzen (yaml ist völlig neu für mich).
> Den Aufruf der Service Funktionen habe ich auch hinbekommen.
> Durch einen MQTT Subscriber Sensor bekomme ich externe Befehle zum ESP
> und kann damit bis jetzt lock/unlock/open/status auslösen.
> Jetzt fehlen nur noch Pairing und Batteriestatus, dann wäre diese Lösung
> für mich schon fast voll einsatzfähig!
> Am Broker sehe ich nun mehrere Topics. Ohne die, die ich eingefügt habe
> published der ESP das Topic status und debug.
> Via debug kommt alles an, was auch über den Logger geht.
> Darin sind dann auch aktueller Status und Batteriestatus enthalten.
> Wenn der Status bei jeder Änderung gepublished werde könnten, könnte man
> auch die manuelle Bedienung erkennen.
> Wenn dabei auch noch der Batteriestatus kommt, optimal!
> Hat da jemend eine Idee wie man das realsieren/wo man da ansetzen
> könnte?
> Schönen Gruß
> type0n

Nicht so eilig, kommt alles noch 😉

Pairing geht aber schon. Gibt dafür den pair Service. Kannst du dir aus 
der yaml abschauen.

von Dirk (digaus)


Lesenswert?

Thomas schrieb:

> Wenn der Status bei jeder Änderung gepublished werde könnten, könnte man
> auch die manuelle Bedienung erkennen.
> Wenn dabei auch noch der Batteriestatus kommt, optimal!
> Hat da jemend eine Idee wie man das realsieren/wo man da ansetzen
> könnte?
> Schönen Gruß
> type0n

Habe es so eben aktualisiert. Status und Batteriezustand werden jetzt 
über die Sensor Komponente ausgegeben.

Werde da wahrscheinlich noch die User ID und den User Key vom Pairing 
Prozess mit ausgeben

Beispiel steht in der yaml :)

: Bearbeitet durch User
von Dirk (digaus)


Lesenswert?

Hat hier noch jemand das Problem, dass das Schloss beim öffnen nicht von 
alleine stoppt? Hört sich dann richtig brutal an wie er versucht immer 
weiter zu drehen obwohl es nicht mehr geht.

Muss dann die Batterie entfernen ...

Hab das Schloss nämlich soeben das erste mal montiert. Getestet mit der 
iOS App...

Ist es vllt einfach Pech und ich habe ein defektes erwischt?

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
>
> Habe es so eben aktualisiert. Status und Batteriezustand werden jetzt
> über die Sensor Komponente ausgegeben.
>
> Werde da wahrscheinlich noch die User ID und den User Key vom Pairing
> Prozess mit ausgeben
>
> Beispiel steht in der yaml :)
in Zeile 35 schimpft er wegen number "Unknown value 'number', valid 
options are 'bool', 'int', 'float', 'string', 'bool[]', 'int[]', 
'float[]', 'string[]'."

und ist es richtig, dass es 2 mal service: connect gibt?

passt nicht in esp32 4mb

Error: The program size (1836437 bytes) is greater than maximum allowed 
(1835008 bytes)
*** [checkprogsize] Explicit exit, status 1

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Wer kann mir sagen was das bedeuten soll?
Log:
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:6608
load:0x40078000,len:15060
ho 0 tail 12 room 4
load:0x40080400,len:3816
entry 0x40080698
I (29) boot: ESP-IDF 4.4.5 2nd stage bootloader
I (29) boot: compile time 19:23:39
I (29) boot: chip revision: v3.1
I (32) boot.esp32: SPI Speed      : 40MHz
I (37) boot.esp32: SPI Mode       : DIO
I (41) boot.esp32: SPI Flash Size : 4MB
I (46) boot: Enabling RNG early entropy source...
I (51) boot: Partition Table:
I (55) boot: ## Label            Usage          Type ST Offset   Length
I (62) boot:  0 otadata          OTA data         01 00 00009000 
00002000
I (70) boot:  1 phy_init         RF data          01 01 0000b000 
00001000
I (77) boot:  2 app0             OTA app          00 10 00010000 
001c0000
I (85) boot:  3 app1             OTA app          00 11 001d0000 
001c0000
I (92) boot:  4 nvs              WiFi data        01 02 00390000 
0006d000
I (100) boot: End of partition table
I (104) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=44fe4h 
(282596) map
I (215) esp_image: segment 1: paddr=0005500c vaddr=3ffbdb60 size=04c64h 
( 19556) load
I (222) esp_image: segment 2: paddr=00059c78 vaddr=40080000 size=063a0h 
( 25504) load
I (233) esp_image: segment 3: paddr=00060020 vaddr=400d0020 size=105fc4h 
(1073092) map
I (622) esp_image: segment 4: paddr=00165fec vaddr=400863a0 size=16e98h 
( 93848) load
I (675) boot: Loaded app from partition at offset 0x10000
I (675) boot: Disabling RNG early entropy source...
I (686) cpu_start: Pro cpu up.
I (687) cpu_start: Starting app cpu, entry point is 0x40082180
I (0) cpu_start: App cpu up.
I (703) cpu_start: Pro cpu start user code
I (703) cpu_start: cpu freq: 160000000
I (703) cpu_start: Application information:
I (707) cpu_start: Project name:     eqiva-lock
I (713) cpu_start: App version:      2023.11.6
I (718) cpu_start: Compile time:     Dec  4 2023 19:22:45
I (724) cpu_start: ELF file SHA256:  7f5fa95f0b16a391...
I (730) cpu_start: ESP-IDF:          4.4.5
I (735) cpu_start: Min chip rev:     v0.0
I (739) cpu_start: Max chip rev:     v3.99
I (744) cpu_start: Chip rev:         v3.1
I (749) heap_init: Initializing. RAM available for dynamic allocation:
I (756) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (762) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (768) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (774) heap_init: At 3FFCB9F0 len 00014610 (81 KiB): DRAM
I (780) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (787) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (793) heap_init: At 4009D238 len 00002DC8 (11 KiB): IRAM
I (801) spi_flash: detected chip: generic
I (804) spi_flash: flash io: dio
I (810) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.

von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
>> Habe es so eben aktualisiert. Status und Batteriezustand werden jetzt
>> über die Sensor Komponente ausgegeben.
>> Werde da wahrscheinlich noch die User ID und den User Key vom Pairing
>> Prozess mit ausgeben
>> Beispiel steht in der yaml :)
>
> in Zeile 35 schimpft er wegen number "Unknown value 'number', valid
> options are 'bool', 'int', 'float', 'string', 'bool[]', 'int[]',
> 'float[]', 'string[]'."
> und ist es richtig, dass es 2 mal service: connect gibt?
> passt nicht in esp32 4mb
> Error: The program size (1836437 bytes) is greater than maximum allowed
> (1835008 bytes)
> *** [checkprogsize] Explicit exit, status 1

Jap zweiten Service entfernen. Hab's auch angepasst.

Bzgl Code size lässt sich nicht viel machen. Der BLE Stack verbraucht 
hier sehr viel Speicher. Da hilft es nur das Framework auf esp-idf 
umzustellen so wie es auch in der Beispiel yaml ist.

Damit verbraucht er nur 81% des Speichers.

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> Bzgl Code size lässt sich nicht viel machen. Der BLE Stack verbraucht
> hier sehr viel Speicher. Da hilft es nur das Framework auf esp-idf
> umzustellen so wie es auch in der Beispiel yaml ist.

ok dann muss ich wohl mit Kabel flashen. Danke

von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
>> Bzgl Code size lässt sich nicht viel machen. Der BLE Stack verbraucht
>> hier sehr viel Speicher. Da hilft es nur das Framework auf esp-idf
>> umzustellen so wie es auch in der Beispiel yaml ist.
>
> ok dann muss ich wohl mit Kabel flashen. Danke

Warum? Geht doch auch ganz normal via OTA?

von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> Warum? Geht doch auch ganz normal via OTA?

Oooo habe mal gelesen, dass wenn man framework ändert, muss man komplett 
neu flashen. Gut zu wissen, Danke

von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
Könnte man nicht bei battery Status statt 1 und 0, true und false 
benutzen?

von Dirk (digaus)


Angehängte Dateien:

Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
> Könnte man nicht bei battery Status statt 1 und 0, true und false
> benutzen?

Hab's jetzt generell auf text_sensor umgestellt. So ist es auch 
sprechender. Zusätzlich zum Lock Status und Batterie wird jetzt auch 
noch der BLE Status mit angezeigt/ausgegebenen

: Bearbeitet durch User
von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Nachdem es beim ersten Test so gut lief habe ich mir noch so ein Schloss 
besorgt.

Leider funktioniert es bei mir in der aktuellsten Version gar nicht 
mehr.

Der ESP32 scheint immer wieder zu crashen:

WARNING esphome-web-350990: Connection error occurred: [Errno 104] 
Connection reset by peer
INFO Processing unexpected disconnect from ESPHome API for 
esphome-web-350990
WARNING Disconnected from API
WARNING Can't connect to ESPHome API for esphome-web-350990: Error 
connecting to ('192.168.2.66', 6053): [Errno 111] Connect call failed 
('192.168.2.66', 6053) (SocketAPIError)
INFO Trying to connect to esphome-web-350990 in the background

von Dirk (digaus)


Lesenswert?

Philipp C. schrieb:
> Nachdem es beim ersten Test so gut lief habe ich mir noch so ein
> Schloss besorgt.
> Leider funktioniert es bei mir in der aktuellsten Version gar nicht
> mehr.
> Der ESP32 scheint immer wieder zu crashen:
> WARNING esphome-web-350990: Connection error occurred: [Errno 104]
> Connection reset by peer
> INFO Processing unexpected disconnect from ESPHome API for
> esphome-web-350990
> WARNING Disconnected from API
> WARNING Can't connect to ESPHome API for esphome-web-350990: Error
> connecting to ('192.168.2.66', 6053): [Errno 111] Connect call failed
> ('192.168.2.66', 6053) (SocketAPIError)
> INFO Trying to connect to esphome-web-350990 in the background

Nutzt du esp-idf?

Ansonsten nimm mal "scan_parameter" raus.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Dirk schrieb:
> Nutzt du esp-idf?
>
> Ansonsten nimm mal "scan_parameter" raus.

Der erste Versuch war noch mit Android, aber das scheint nun nicht mehr 
zu passen und ich bin auf esp-idf gegangen.

Ich probiere es mal ohne scan_parameter

Edit: Das hat nichts gebracht. Es sieht so aus, als würde der Aufruf des 
pair services zuverlässig den crash auslösen.

: Bearbeitet durch User
von Dirk (digaus)


Lesenswert?

Philipp C. schrieb:
> Dirk schrieb:
>> Nutzt du esp-idf?
>> Ansonsten nimm mal "scan_parameter" raus.
>
> Der erste Versuch war noch mit Android, aber das scheint nun nicht mehr
> zu passen und ich bin auf esp-idf gegangen.
> Ich probiere es mal ohne scan_parameter
> Edit: Das hat nichts gebracht. Es sieht so aus, als würde der Aufruf des
> pair services zuverlässig den crash auslösen.

Jo sorry pair hab ich kaputt gemacht.

Funktioniert in der neusten Version wieder. 🙃

Wichtig, keine user_id bzw user_key mitgegeben wenn man pairen möchte.

Diese werden jetzt auch mit zurück geliefert und man sich diese in der 
Weboberfläche anzeigen lassen beim pairen :)

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> Hab's jetzt generell auf text_sensor umgestellt. So ist es auch
> sprechender. Zusätzlich zum Lock Status und Batterie wird jetzt auch
> noch der BLE Status mit angezeigt/ausgegebenen

Wie pushe ich neue Komponenten? Der zeigt mir Platform not found: 
'text_sensor.eqiva_key_ble'.

von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
>> Hab's jetzt generell auf text_sensor umgestellt. So ist es auch
>> sprechender. Zusätzlich zum Lock Status und Batterie wird jetzt auch
>> noch der BLE Status mit angezeigt/ausgegebenen
>
> Wie pushe ich neue Komponenten? Der zeigt mir Platform not found:
> 'text_sensor.eqiva_key_ble'.

https://esphome.io/components/external_components.html#external-components-refresh

von Artur K. (artur_k638)


Lesenswert?

Dirk schrieb:
> 
https://esphome.io/components/external_components.html#external-components-refresh

Oh stimmmt, darauf noch nicht gekommen, danke

Hätte einen Vorschlag, möchtest du nicht einen lock component einbauen?

: Bearbeitet durch User
von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Dirk schrieb:
>>
> 
https://esphome.io/components/external_components.html#external-components-refresh
>
> Oh stimmmt, darauf noch nicht gekommen, danke
> Hätte einen Vorschlag, möchtest du nicht einen lock component einbauen?

Ja definitiv :)

Bin gerade noch dabei die Einstellungen zu implementieren. Dann bräuchte 
man die App nicht mehr ;)

Edit: und Einstellungen erfolgreich getestet :)

Man kann jetzt Drehrichtung, Schlüsselposition und Anzahl Drehung 
einstellen.

Mache eben noch nen Service dann pushe ich das 🙃

: Bearbeitet durch User
von Hendrik F. (henfri)


Lesenswert?

Unglaublich, wie es voran geht.

Funktionieren schon zwei Schlösser? Dann könnte ich meinen Raspi Zero in 
Rente schicken.

von Dirk (digaus)


Lesenswert?

Hendrik F. schrieb:
> Unglaublich, wie es voran geht.
> Funktionieren schon zwei Schlösser? Dann könnte ich meinen Raspi Zero in
> Rente schicken.

Sollte möglich sein indem du erst disconnect und dann connect mit den 
passenden Parametern aufrufst.

D.h. gesteuert wird immer das aktuell verbundene Schloss.


Habe das Anpassen der Einstellungen jetzt auch veröffentlicht (muss hier 
die lock_turns noch validieren, nicht dass einer was anderes als 1-4 
einträgt)

von Hendrik F. (henfri)


Lesenswert?

Hm, planst du denn noch meherere Schlösser voll zu integrieren?

So wie es jetzt ist, wäre ja immer nur ein Schloss - und dessen Status - 
im Gui sichtbar, oder?

Wünschenswert wäre, wenn mehrere Schlösser hinsichtlich ihres Status - 
und auch aktuierbar - wären und wenn diese in einem konfigurierbaren 
Zyklus abgefragt würden (z.B. Status update alle 300s sowie unmittelbar 
nach jedem Kommando).

Gruß,
Hendrik

von Dirk (digaus)


Lesenswert?

Hendrik F. schrieb:
> Hm, planst du denn noch meherere Schlösser voll zu integrieren?
> So wie es jetzt ist, wäre ja immer nur ein Schloss - und dessen Status -
> im Gui sichtbar, oder?
> Wünschenswert wäre, wenn mehrere Schlösser hinsichtlich ihres Status -
> und auch aktuierbar - wären und wenn diese in einem konfigurierbaren
> Zyklus abgefragt würden (z.B. Status update alle 300s sowie unmittelbar
> nach jedem Kommando).
> Gruß,
> Hendrik

Was ist denn dein Ziel? Möchtest du nur die Stati der Schlösser sehen 
oder möchtest du diese auch ansteuern?

Wenn ansteuern wie sieht da der Usecase aus? Ist das zeitkritisch?


Man könnte es so anpassen, dass man eine Liste an mac/user_id/user_key 
mit gibt und dann bei jedem Aufruf nen Parameter hinzufügen mit der Mac 
Adresse.

Wäre ziemlicher Aufwand das so zu programmieren.

Würde da wahrscheinlich eher auf einen zweiten ESP gehen, auch in Bezug 
auf die BLE Reichweite.

von Hendrik F. (henfri)


Lesenswert?

Hallo,

der Usecase ist, dass ich zwei Schlösser in unmittelbarer Nähe habe, so 
dass beide leicht von einem ESP ansteuerbar sind.
Ich bin da so wie ich das oben lese nicht der Einzige.
Ich verstehe aber, wenn das zu viel Aufwand ist.

Ich hatte es mir so vorgestellt, dass der ESP wirklich zwei/N Schlösser 
in HA darstellt, so dass HA gar nicht merkt, dass ein ESP zwei Schlösser 
ansteuert - und v.a. meine Frau nicht :-)

Das bedeutet natürlich, dass der ESP eine Kommunkiationsqueue braucht 
für die Funk-Kommandos.

Das Ansteuern ist nicht so zeitkritisch - wir nutzen es v.a. um die 
Schlösser abzuschließen wenn wir es vergessen haben. Wenn du aber eine 
so gute Arbeit machst, dass man die App nicht mehr nutzt, kann ich mir 
vorstellen, dass man auch HA zum aufschließen nutzt. Dann wäre es 
natürlich blöd, wenn es lange dauert - mit der App dauert es aber auch 
mehrere Sekunden.

> Man könnte es so anpassen, dass man eine Liste an mac/user_id/user_key
> mit gibt und dann bei jedem Aufruf nen Parameter hinzufügen mit der Mac
> Adresse.

Siehe oben: Ich hätte gedacht, dass man einfach mehere Schlösser 
"emuliert".

Übrigens: Der Status ist in meinen Augen nicht besonders wichtig, da er 
eh unzuverlässig ist: Wenn die Tür nicht zu ist, und das Schloss aber 
"abschließt" dann bringt das garnix. Deshalb habe ich einen Taster im 
Türrahmen, der vom Riegel gedrückt wird.

Gruß,
Hendrik

von Hendrik F. (henfri)


Lesenswert?

Hallo,

beim Installieren bekomme ich einen Fehler:

> Failed config
>
>eqiva_key_ble: [source /config/esphome/esphome-web-8bf1d4.yaml:96]
>
>  value must be at most 8.
>  id: key_ble

Habe ich da etwas falsch verstanden?

Gruß,
Hendrik

von Dirk (digaus)


Lesenswert?

Hendrik F. schrieb:
> Hallo,
> beim Installieren bekomme ich einen Fehler:
>> Failed config
>> eqiva_key_ble: [source /config/esphome/esphome-web-8bf1d4.yaml:96]
>> value must be at most 8.
>> id: key_ble
>
> Habe ich da etwas falsch verstanden?
> Gruß,
> Hendrik

Poste mal deine yaml

Die max 8 habe ich bei user_id hinterlegt aber nicht bei der id


Edit: ok du lässt die user\id weg das sollte auch möglich sein

Schaue es mir an

: Bearbeitet durch User
von Artur K. (artur_k638)


Lesenswert?

Hi, wie ist es eigentlich momentan. Besteht dauerhafte Verbindung? Wenn 
nicht wich lasse ich es dauerhaft verbunden?

von Dirk (digaus)


Angehängte Dateien:

Lesenswert?

Hendrik F. schrieb:
> Hallo,
> beim Installieren bekomme ich einen Fehler:
>> Failed config
>> eqiva_key_ble: [source /config/esphome/esphome-web-8bf1d4.yaml:96]
>> value must be at most 8.
>> id: key_ble
>
> Habe ich da etwas falsch verstanden?
> Gruß,
> Hendrik

Hab's gefixed


Übrigens könntest du dir die beiden Schlösser in der yaml definieren mit 
nem Lock Template (siehe Foto)

von Dirk (digaus)


Lesenswert?

Artur K. schrieb:
> Hi, wie ist es eigentlich momentan. Besteht dauerhafte Verbindung?
> Wenn nicht wich lasse ich es dauerhaft verbunden?

Ja ist dauerhaft verbunden.

Hab auch vergessen beim manuellen disconnect die Daten rausschmeißen. 
Dadurch verbindet er sich denke ich immer wieder mit dem zuletzt 
verbundenen.

von Hendrik F. (henfri)


Lesenswert?

Hallo,

der Fix funktioniert.
Mir fehlt jetzt noch etwas Dokumentation. Ich weiß nicht, wie ich jetzt 
die Bedienung mache (ich finde das Gerät nicht unter meinen Entitäten).

> Übrigens könntest du dir die beiden Schlösser in der yaml definieren mit
> nem Lock Template (siehe Foto)

D.h. ich würde den Part aus deinem Screenshot zweimal einfügen (mit 
unterschiedlichem Namen)?

Und dann gäbe es zwei Entitäten für das Schloss?

Gruß,
Hendrik

von Dirk (digaus)


Lesenswert?

Hendrik F. schrieb:
> Hallo,
> der Fix funktioniert.
> Mir fehlt jetzt noch etwas Dokumentation. Ich weiß nicht, wie ich jetzt
> die Bedienung mache (ich finde das Gerät nicht unter meinen Entitäten).
>> Übrigens könntest du dir die beiden Schlösser in der yaml definieren mit
>> nem Lock Template (siehe Foto)
>
> D.h. ich würde den Part aus deinem Screenshot zweimal einfügen (mit
> unterschiedlichem Namen)?
> Und dann gäbe es zwei Entitäten für das Schloss?
> Gruß,
> Hendrik

Hab ein Beispiel hochgeladen und den Code nochmal aktualisiert.

Kann es natürlich nicht testen, da ich nur ein Schloss habe.

Mit den beiden Lock Templates sollten aber beide Schlösser in HA 
auftauchen


Für schneller Verbindung kannst du die scan window auf 300ms setzen

Aber bedenke, gleichzeitig ausführen wird zu Problemem führen :)

: Bearbeitet durch User
von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Hier geht es ja ab :) Bei jedem Install gibt es eine neue Version

Leider startet mein ESP seit der letzten offenbar gar nicht mehr. Es 
geht nicht mehr bis zum logger :(

von Dirk (digaus)


Lesenswert?

Philipp C. schrieb:
> Hier geht es ja ab :) Bei jedem Install gibt es eine neue Version
> Leider startet mein ESP seit der letzten offenbar gar nicht mehr. Es
> geht nicht mehr bis zum logger :(

esp-idf?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.