Tagungsbeitrag bezüglich Bertl, ESP8266, Programmierung, Server, Kommunikation
Browser basierende Kommunikation
Übersicht der IoT-Kommunikation
In einem Webbrowser oder kurz Browser können mit der URI nach einem "/?" Requests für den Server mitgegeben werden:
http://IP-Address[:Port][/[?][Param1=ParamVal1][&][Param2=ParamVal2] ...
In unserem Fall erfolgt der Aufruf für das m0/m§-Board:
- http://172.16.63.152:80/?M0=SD&chan=01&state=1
mit diesem Request werden am Server die Parameter und Werte der Parameter überprüft und ein definierter String über die serielle Schnittstelle an das M0-Board (Bertl oder M3) geschickt. In unserem Fall: - M0_SD_01_1
Ein einfacher Request ohne Parameter (z.B.: Bertl Move()):
sieht im Server http_bertl_server.ino folgendermassen aus (ab Zeile 880):
if(os_strcmp(pURL_Param->pParam[0], "request")==0) { : else if(os_strcmp(pURL_Param->pParVal[0], "MV")==0) { rparam.request = MV; rparam.requestval = 0; // Execute request & get reply string Server_ExecuteRequest(servertype, rparam, &payld,""); } :
Der obere Request wird im Server http_bertl_server.ino folgendermassen umgesetzt (ab Zeile 1000):
//-------------- Request = SetDigital M0 --------------------- if(os_strcmp(pURL_Param->pParVal[0], "SD")==0){ if(os_strcmp(pURL_Param->pParam[1], "chan")==0) { BertlRequest = "M0_SD_"; BertlRequest += pURL_Param->pParVal[1]; BertlRequest += "_"; } else { BertlRequest = "Invalid Request"; }
und schiesslich werden die Requests in der Funktion Server_ExecuteRequest(...) ausgeführt (ab Zeile 1770):
//------------- Execute valid request --------------------- else { rparam.request = BERTL_REQUEST; rparam.requestval = 0; Server_ExecuteRequest(servertype, rparam, &payld, BertlRequest); }
App-basierende Kommunikation¶
entwickelt mit MIT AppInventor.