Beste Tweakers,
Ik heb sinds kort een AXA remote weten te bemachtigen en wil deze graag aansturen dmv esphome (en uiteindelijk via HA). Nu krijg ik dit echter niet voor elkaar maar vond online wel een (soort van) handleiding om dit via arduino te doen.
De esp / axa zijn als volgt aangesloten.
[img=800,365]undefined[/img]
AXA krijgt voeding van een externe adapter (12V rood/blauw)
ESP krijgt (nog) voeding via een usb kabel.
ESP RX/TX zit aangesloten op LINbus van de AXA remote (middelste 2 aders van de RJ12).
De volgende code is geladen in de esp:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
| /*
* This sketch reads a command through a http connection
* depending on the text received it will send open, stop or close
* commands to the Esp8266. the ESP8266 is connected to the Axa Remote 2.0 electric window opener
*/
#include <ESP8266WiFi.h>
const char* ssid = "ssid";
const char* password = "password";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void setup() {
Serial.begin(19200,SERIAL_8N1);
delay(10);
// Connect to WiFi network
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// Start the server
server.begin();
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
while(!client.available()){
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
client.flush();
// Match the request
int val;
if (req.indexOf("/open") != -1)
open_axa();
else
if (req.indexOf("/close") != -1)
close_axa();
else if (req.indexOf("/stop") != -1)
stop_axa();
else {
Serial.println("invalid request");
client.stop();
return;
}
}
void open_axa() {
Serial.print("O");
delay(20);
Serial.print("P");
delay(20);
Serial.print("E");
delay(20);
Serial.print("N");
delay(20);
Serial.println("\r");
delay(2000);
}
void close_axa() {
Serial.print("C");
delay(20);
Serial.print("L");
delay(20);
Serial.print("O");
delay(20);
Serial.print("S");
delay(20);
Serial.print("E");
delay(20);
Serial.println("\r");
delay(2000);
}
void stop_axa() {
Serial.print("S");
delay(20);
Serial.print("T");
delay(20);
Serial.print("O");
delay(20);
Serial.print("P");
delay(20);
Serial.println("\r");
} |
Ik heb het inmiddels voor elkaar de code in de esp8266 te plaatsen en een webserver te draaien die close / open / stop kan sturen naar de AXA. Als ik via de seriële poort mee kijk zie ik ook dat de code wordt verstuurd. Echter reageert de AXA nergens op, behalve de afstandsbediening.
Ik hoop dat er nog andere tweakers zijn met een soort gelijke setup. Liefst zou ik limbus praten via esphome, maar probeer eerst maar eens hier beweging in te krijgen.