Как отправить данные на ESP8266? - PullRequest
0 голосов
/ 08 октября 2018

Я хочу отправить данные на ESP8266 для работы с моими моторами.Мне просто нужно отправить строку 00 или 10 или 01, это зависит от того, какую кнопку я нажму.Так это должно выглядеть так: http://ipaddress:port/00 Итак, я нашел этот код.Я изменил его, чтобы он мог работать с моей программой.Поэтому я устанавливаю приложение на свой телефон и подключаюсь к точке доступа ESP8266.Затем я отправляю (нажимаю на кнопку) значение (00 или 10 или 01).Esp получают эту строку.НО, когда я хочу нажать вторую кнопку (чтобы изменить строку), он НЕ будет отправлять ее.Код застрял, и я думаю, что он ждет ответа или что-то в этом роде.Но я не хочу resposne от моего Arduino (ESP8266), я просто хочу отправить данные воображаемо ...

View.OnClickListener btnSetClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String value;
            if (view== btnSet) {
               value = "/10";
            } else if(view == btnMinus) {
                value = "/01";
            } else {
                value = "/00";
            }
            Toast.makeText(SettingsActivity.this, "OnClick", Toast.LENGTH_LONG).show();
            String PORT = editPort.getText().toString();
            String serverIP = editIp.getText().toString() + ":" + PORT + value;
            textInfo1.setText(serverIP);

            TaskEsp taskEsp = new TaskEsp(serverIP);
            taskEsp.execute();

private class TaskEsp extends AsyncTask<Void, Void, String> {

    String server;

    TaskEsp(String server){
        this.server = server;
    }

    @Override
    protected String doInBackground(Void... params) {

        final String p = "http://"+server;

        runOnUiThread(new Runnable(){
            @Override
            public void run() {
                textInfo1.setText(p);
            }
        });

        String serverResponse = "";
        String port = null;
        //HttpURLConnection httpURLConnection = p;

        try {


            HttpURLConnection httpURLConnection = (HttpURLConnection) (new URL(p).openConnection());
            if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
            runOnUiThread(new Runnable(){
                @Override
                public void run() {
                    textView.setText("Try");
                }
            });
                InputStream inputStream = null;
                inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader =
                        new BufferedReader(new InputStreamReader(inputStream));
                serverResponse = bufferedReader.readLine();
                httpURLConnection.disconnect();
                inputStream.close();
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        } catch (IOException e) {
            e.printStackTrace();
            serverResponse = e.getMessage();
        }
        runOnUiThread(new Runnable(){
            @Override
            public void run() {
                textView.setText("return");
            }
        });
        return serverResponse;
    }

    @Override
    protected void onPostExecute(String s) {
        textInfo2.setText(s);
        textView.setText("PostExc");
    }
}

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я делаю то же самое, но с другим подходом,

В этом случае я создаю объект JSON, в который я добавляю все отклики на клики в качестве значений в JSON, и этот JSON публикуется ввеб-сервер, размещенный на ESP8266.

на стороне ESP. Я анализирую этот JSON из WebServer и получаю от него значения.

У меня похожий проект, в котором я управляю релеИз приложения Android Вы можете перейти на эту ССЫЛКА для подробного описания.

0 голосов
/ 09 октября 2018

Вы можете использовать другой подход к этому:

  1. Вы можете использовать библиотеку aRest.Это поможет вам представить функции arduino / ESP как API
  2. Реализовать простое приложение для Android, которое подключается к ESP и отправляет необходимые данные.

Я написал учебник, объясняющий, какотправить данные из приложения Android.Вы можете посмотреть здесь и здесь

Если вы ищете пример того, как реализовать веб-сервер на ESP и реализовать приложение Android для обмена данными, вы можетесм. мой пост здесь

...