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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
int cycle_counter=0; int old_garage=0; int old_entry=0; int old_movement_1=0; int old_movement_2=0; int old_button_1=0; int old_button_2=0; char buf[80]; // Функция отправки HTTP-запроса на сервер void sendHTTPRequest() { Serial.println(buf); } void setup() { pinMode(4, INPUT); // Датчик гаражной двери на 7-ый пин old_garage=digitalRead(4); pinMode(5, INPUT); // Датчик въездных ворот на 8-ый пин old_entry=digitalRead(5); pinMode(6, INPUT); // Датчик движения 1 old_movement_1=digitalRead(6); pinMode(7, INPUT); // Датчик движения 2 old_movement_2=digitalRead(7); pinMode(8, INPUT); // Кнопка пульта 1 old_button_1=digitalRead(8); pinMode(9, INPUT); // Кнопка пульта 2 old_button_2=digitalRead(9); Serial.begin(115200); // Скорость консольного порта 115200 (пригодится для отладки) } void loop() { int valid_sensor=0; delay(100); // задержка в 0.1 сек. cycle_counter++; if (cycle_counter>600) { cycle_counter=0; } //GARAGE GATES SENSOR Serial.println("G"); int current_garage=digitalRead(4); //Serial.println(current_garage); if (current_garage!=(int)old_garage) { old_garage=(int)current_garage; sprintf(buf, "GET /objects/?object=sensorGarage&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_garage); sendHTTPRequest(); } //ENTRY GATES SENSOR Serial.println("E"); int current_entry=digitalRead(5); //Serial.println(current_entry); if (current_entry!=(int)old_entry) { old_entry=(int)current_entry; sprintf(buf, "GET /objects/?object=sensorEntry&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_entry); sendHTTPRequest(); } //MOVEMENT 1 SENSOR Serial.println("M1"); int current_movement_1=digitalRead(6); //Serial.println(current_movement_1); if (current_movement_1!=(int)old_movement_1) { old_movement_1=(int)current_movement_1; sprintf(buf, "GET /objects/?object=sensorMovement1&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_movement_1); sendHTTPRequest(); } //MOVEMENT 2 SENSOR Serial.println("M2"); int current_movement_2=digitalRead(7); //Serial.println(current_movement_2); if (current_movement_2!=(int)old_movement_2) { old_movement_2=(int)current_movement_2; sprintf(buf, "GET /objects/?object=sensorMovement2&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_movement_2); sendHTTPRequest(); } //REMOTE BUTTON 1 Serial.println("R1"); int current_button_1=digitalRead(8); if (current_button_1!=(int)old_button_1 && current_button_1==1) { delay(2000); int current_button_1=digitalRead(8); if (current_button_1==1) { // long press sprintf(buf, "GET /objects/?object=remoteButton1&op=m&m=statusChanged&status=%i HTTP/1.0", 2); } else { // click sprintf(buf, "GET /objects/?object=remoteButton1&op=m&m=statusChanged&status=%i HTTP/1.0", 1); } old_button_1=(int)current_button_1; sendHTTPRequest(); } //REMOTE BUTTON 2 Serial.println("R2"); int current_button_2=digitalRead(9); if (current_button_2!=(int)old_button_2 && current_button_2==1) { delay(2000); int current_button_2=digitalRead(9); if (current_button_2==1) { // long press sprintf(buf, "GET /objects/?object=remoteButton2&op=m&m=statusChanged&status=%i HTTP/1.0", 2); } else { // click sprintf(buf, "GET /objects/?object=remoteButton2&op=m&m=statusChanged&status=%i HTTP/1.0", 1); } old_button_2=(int)current_button_2; sendHTTPRequest(); } } |
2 thoughts on - Код прошивки Arduino (без модуля ethernet) для MajorDoMo
Как он пошлет хттп через сериалпорт?)
ArduinoGW. Программа подключается к выбранному COM-порту, считывает информацию, поступающую с него и при обнаружении строк, обозначающих вызов HTTP-запросов, перенаправляет эти запросы на указанный сервер сети.