21-06-2019, 22:17
Dzień dobry,
Poszukuję pomocy w napisaniu skryptu dla Arduino, który będzie wymieniał się danymi z serwerem za pomocą WebSocket'a przez moduł GSM A6 z użyciem komend AT, czy w ogóle jest to możliwe?
Narazie zebrałem informacje na temat, że najpierw trzeba otworzyć połączenie za pomocą request'a, który ma wyglądać tak:
Protokół WebSocket został zaprojektowany tak, aby dobrze współpracował ze starszą infrastrukturą internetową. Używa uzgadniania zgodnego z HTTP, aby ustanowić połączenie między klientem a serwerem. Proces uruchamiania połączenia WebSocket rozpoczyna się od wysłania przez klienta GET HTTP za pomocą pola WebSocket „Upgrade”. Po połączeniu inicjowane są przełączniki komunikacji do dwukierunkowego protokołu binarnego w przeciwieństwie do protokołu HTTP.
GET /INDEX HTTP/1.1
Host: testgolang.cba.pl
Connection: Upgrade
Upgrade: websocket
Origin: http://testgolang.cba.pl
Jeśli serwer obsługuje WebSocket's, odpowiada odpowiedzią UPGRADE HTTP.
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
W tym momencie gniazdo TCP używane do komunikacji HTTP jest przetwarzane w celu wykorzystania do połączenia z WebSocket, a każda ze stron może rozpocząć wysyłanie danych. WebSocket's używają tych samych portów co HTTP - 80 dla HTTP i 443 dla HTTPS.
Zaczynam od kodów z request'em i teraz będę próbował napisać kod, który będzie wymieniał się informacjami z serwerem za pomocą WebSocket, może macie pomysły jak ten kod napisać?
Poszukuję pomocy w napisaniu skryptu dla Arduino, który będzie wymieniał się danymi z serwerem za pomocą WebSocket'a przez moduł GSM A6 z użyciem komend AT, czy w ogóle jest to możliwe?
Narazie zebrałem informacje na temat, że najpierw trzeba otworzyć połączenie za pomocą request'a, który ma wyglądać tak:
Protokół WebSocket został zaprojektowany tak, aby dobrze współpracował ze starszą infrastrukturą internetową. Używa uzgadniania zgodnego z HTTP, aby ustanowić połączenie między klientem a serwerem. Proces uruchamiania połączenia WebSocket rozpoczyna się od wysłania przez klienta GET HTTP za pomocą pola WebSocket „Upgrade”. Po połączeniu inicjowane są przełączniki komunikacji do dwukierunkowego protokołu binarnego w przeciwieństwie do protokołu HTTP.
GET /INDEX HTTP/1.1
Host: testgolang.cba.pl
Connection: Upgrade
Upgrade: websocket
Origin: http://testgolang.cba.pl
Jeśli serwer obsługuje WebSocket's, odpowiada odpowiedzią UPGRADE HTTP.
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
W tym momencie gniazdo TCP używane do komunikacji HTTP jest przetwarzane w celu wykorzystania do połączenia z WebSocket, a każda ze stron może rozpocząć wysyłanie danych. WebSocket's używają tych samych portów co HTTP - 80 dla HTTP i 443 dla HTTPS.
Kod:
#include <SoftwareSerial.h>
SoftwareSerial GSM(3,2);
void setup() {
GSM.begin(115200);
Serial.begin(115200);
Serial.println("Start...");
GSM.println("AT+CSQ");
updateSerial();
GSM.println("AT+CGATT=1");
updateSerial();
GSM.println("AT+CIPSTART=\"TCP\",\"testgolang.cba.pl\",80");
updateSerial();
delay(2000);
GSM.println("at+cipsend=80","GET /index.php?a=okok HTTP/1.1");
delay(2000);
updateSerial();
}
void loop() {
updateSerial();
}
void updateSerial(){
delay(2000);
while(Serial.available())
GSM.write(Serial.read());
while(GSM.available())
Serial.write(GSM.read());
}
Zaczynam od kodów z request'em i teraz będę próbował napisać kod, który będzie wymieniał się informacjami z serwerem za pomocą WebSocket, może macie pomysły jak ten kod napisać?