void EIoTCloudRestApi::sendParameter(const char * instaceParamId, String value) { WiFiClient client; while(!client.connect(EIOT_CLOUD_ADDRESS, EIOT_CLOUD_PORT)) { debug("connection failed"); wifiConnect(); } String url = ""; // URL: /RestApi/SetParameter/[instance id]/[parameter id]/[value] url += "/RestApi/SetParameter/" + String(instaceParamId) + "/" + value; // generate EasIoT cloud update parameter URL debug("POST data to URL: "); #ifdef DEBUG char buff[300]; url.toCharArray(buff, 300); debug(buff); #endif client.print(String("POST ") + url + " HTTP/1.1\r\n" + "Host: " + String(EIOT_CLOUD_ADDRESS) + "\r\n" + "Connection: close\r\n" + "Content-Length: 0\r\n" + "\r\n"); delay(100); while(client.available()){ #ifdef DEBUG String line = client.readStringUntil('\r'); line.toCharArray(buff, 300); debug(buff); #endif } }
void NetworkManagerHandler::setSettings(const boost::property_tree::ptree &requestPt) { if (requestPt.find("type") != requestPt.not_found()) { NetworkInterfaces::InterfaceSettings settings; settings.interface = _interfaceName; settings.type = requestPt.get<std::string>("type"); settings.autoConnect = requestPt.get<bool>("auto", true); for (boost::property_tree::ptree::const_iterator it = requestPt.begin(); it != requestPt.end(); ++it) { if (it->first != "type") settings.arguments[it->first] = it->second.get_value<std::string>(); } NetworkInterfaces::writeInterfaceSettings(kNetworkInterfacesFile, settings); if (_interfaceName != qpcrApp.wirelessManager()->interfaceName()) { NetworkInterfaces::ifdown(_interfaceName); NetworkInterfaces::ifup(_interfaceName); } else wifiConnect(); } else { setStatus(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); setErrorString("type must be set"); } }
void NetworkManagerHandler::processData(const boost::property_tree::ptree &requestPt, boost::property_tree::ptree &responsePt) { if (_interfaceName == "wlan") { if (qpcrApp.wirelessManager()->interfaceName().empty()) { setStatus(Poco::Net::HTTPResponse::HTTP_METHOD_NOT_ALLOWED); setErrorString("No WIFI interface is present"); JsonHandler::processData(requestPt, responsePt); return; } _interfaceName = qpcrApp.wirelessManager()->interfaceName(); } switch (_type) { case GetStat: getStat(responsePt); break; case SetSettings: setSettings(requestPt); JsonHandler::processData(requestPt, responsePt); break; case WifiScan: wifiScan(responsePt); break; case WifiConnect: wifiConnect(); JsonHandler::processData(requestPt, responsePt); break; case WifiDisconnect: wifiDisconnect(); JsonHandler::processData(requestPt, responsePt); break; default: setStatus(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); setErrorString("Unknown opeation type"); JsonHandler::processData(requestPt, responsePt); break; } }
int Wifi_Connect() { int ret; #ifdef DEBUG_USE return 0; #endif ret = wifiConnect(glSysCtrl.szRemoteIP, glSysCtrl.szRemotePort); if(glSysCtrl.bDebugOpt) { DebugOutput("%s--%d, wifi connect[%s:%s] = [%d]", __FILE__, __LINE__, glSysCtrl.szRemoteIP, glSysCtrl.szRemotePort, ret); } return ret; }
void EIoTCloudRestApi::begin() { wifiConnect(); }
/** * * @param e */ void ICACHE_FLASH_ATTR dispatcher_t::runTask(os_event_t* e) { if(m_FirstRun == true) { m_FirstRun = false; os_printf("{\"jsonrpc\":\"2.0\",\"method\":\"system\",\"params\":{\"code\":1,\"sys\":\"system\",\"msg\":\"start\",\"p1\":null,\"p2\":null,\"n1\":0,\"n2\":0}}\n"); } m_MqttClient.run(m_Seconds); int c = uart0_rx_one_char(); // // TODO: handle too-long interval between indivdual characters - reset parser if interval too long // if(c != -1) { int ret = os()->jsonRpc()->parse(c); if(ret == EJSON_METHOD) { DTXT("%lu dispatcher_t::runTask(): parse() == EJSON_METHOD\n", millis()); if(os_strcmp("mqtt_connect", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; mqtt_connect\n", millis()); mqttConnect(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("mqtt_disconnect", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; mqtt_disconnect\n", millis()); mqttDisconnect(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("mqtt_publish", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; mqtt_publish\n", millis()); mqttPublish(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("mqtt_subscribe", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; mqtt_subscribe\n", millis()); mqttSubscribe(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("mqtt_unsubscribe", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; mqtt_unsubscribe\n", millis()); mqttUnsubscribe(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("wifi_connect", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; wifi_connect\n", millis()); wifiConnect(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("wifi_disconnect", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; wifi_disconnect\n", millis()); wifiDisconnect(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("wifi_scan", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; wifi_scan\n", millis()); wifiScan(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("sys_nop", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; sys_nop\n", millis()); sysNop(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else if(os_strcmp("sys_restart", os()->jsonRpc()->getMethod()) == 0) { DTXT("%lu dispatcher_t::runTask(): parse; sys_restart\n", millis()); sysRestart(os()->jsonRpc()->getParams(), os()->jsonRpc()->getMsgId()); } else { DTXT("%lu dispatcher_t::runTask(): parse; unknown\n", millis()); } os()->jsonRpc()->parseReset(); } else if(ret == EJSON_ERROR) { DTXT("%lu dispatcher_t::runTask(): parse; ret == EJSON_ERROR\n", millis()); } else if(ret == EJSON_RESULT) { DTXT("%lu dispatcher_t::runTask(): parse; ret == EJSON_RESULT\n", millis()); } else if(ret != EJSON_PARSE_INCOMPLETE && ret != EJSON_PARSE_ERR) { DTXT("%lu dispatcher_t::runTask(): parse; ret != EJSON_PARSE_INCOMPLETE && ret != EJSON_PARSE_ERR (%d)\n", millis(), ret); } } #if defined(WITH_TESTCODE) int qos = 0; if(millis() - m_LastRun >= getRunInterval()) { DTXT("%lu dispatcher_t::runTask(): time to publish; freeHeap = %lu\n", millis(), os()->freeHeap()); static char txt[60]; os_sprintf(txt, "{\"seconds\":%lu,\"contact\":\"[email protected]\"}", m_Seconds); for(int i = 0; i < m_MqttClient.getMaxConnections() - 1; ++i) { DTXT("%lu dispatcher_t::runTask(): m_Command = %d, m_Status = %d\n", millis(), m_MqttClient.getCommand(i), m_MqttClient.getStatus(i)); if(m_MqttClient.isReady(i) == 1) { DTXT("%lu dispatcher_t::runTask(): slot %d is connected\n", millis(), i); if(m_MqttClient.publish(i, "fabric/esp8266/seconds", txt, os_strlen(txt), qos, MQTT_RETAIN) != 0) { DTXT("%lu dispatcher_t::runTask(): could not publish\n", millis()); } } } m_LastRun = millis(); ++m_Seconds; } static int x0 = 0; static int x1 = 0; static int x2 = 0; static int x3 = 0; if(x0 == 0 && m_MqttClient.isReady(0) == 1) { if(m_MqttClient.publish(0, "fabric/esp8266/status", "online", 6, qos, MQTT_RETAIN) != 0) { DTXT("%lu dispatcher_t::runTask(): could not publish\n", millis()); } else { ++x0; } } if(x1 == 0 && m_MqttClient.isReady(1) == 1) { if(m_MqttClient.publish(1, "fabric/esp8266/status", "online", 6, qos, MQTT_RETAIN) != 0) { DTXT("%lu dispatcher_t::runTask(): could not publish\n", millis()); } else { ++x1; } } if(x2 == 0 && m_MqttClient.isReady(2) == 1) { if(m_MqttClient.publish(2, "fabric/esp8266/status", "online", 6, qos, MQTT_RETAIN) != 0) { DTXT("%lu dispatcher_t::runTask(): could not publish\n", millis()); } else { ++x2; } } if(x3 == 0 && m_MqttClient.isReady(3) == 1) { if(m_MqttClient.publish(3, "fabric/esp8266/status", "online", 6, qos, MQTT_RETAIN) != 0) { DTXT("%lu dispatcher_t::runTask(): could not publish\n", millis()); } else { ++x3; } } #else if(millis() - m_LastRun >= getRunInterval()) { m_LastRun = millis(); ++m_Seconds; } #endif }