Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Помогите объединить два скетча

Тема в разделе "Общие вопросы по esp8266", создана пользователем Artem_ARM, 7 апр 2019.

  1. Artem_ARM

    Artem_ARM Новичок

    Сообщения:
    2
    Симпатии:
    0
    Приветствую коллеги!)

    Только начал изучать всё что связано с arduino и ESP тд.)

    Помигал светодиодом по управлял реле через веб.

    Сейчас есть потребность совместить два скетча для esp8266 nodemcu в один.

    Первый скетч отправляет данные температуры на сайт второй просто управляет одним реле вкл/выкл.
    Пожалуйста помогите.
    Заранее спасибо.

    Отправка температуры.
    Код (Text):
    1. #include <ESP8266HTTPClient.h>
    2.  
    3. #define BLYNK_PRINT Serial
    4. #include <ESP8266WiFi.h>
    5. #include <BlynkSimpleEsp8266.h>
    6. #include <OneWire.h>
    7. #include <DallasTemperature.h>
    8.  
    9. #define ONE_WIRE_BUS D2
    10.  
    11. OneWire oneWire(ONE_WIRE_BUS);
    12. DallasTemperature sensors(&oneWire);
    13.  
    14. char ssid[] = "xxx"; // Название WiFi сети
    15. char pass[] = "xxx"; // Пароль к WiFi сети
    16.  
    17. void setup () {
    18.   Serial.begin(115200);
    19.   WiFi.begin(ssid, pass);
    20.   while (WiFi.status() != WL_CONNECTED) {
    21.     delay(1000);
    22.     Serial.println("Connecting..");
    23.   }
    24.   sensors.begin();
    25. }
    26.  
    27. void loop() {
    28.   sendTemps();
    29.   delay(60000);    //Send a request every 30 seconds
    30. }
    31.  
    32. void sendTemps()
    33. {
    34.   sensors.requestTemperatures();
    35.   float temp1 = sensors.getTempCByIndex(0);
    36.   float temp2 = sensors.getTempCByIndex(1);
    37.   float temp3 = sensors.getTempCByIndex(2);
    38.   float temp4 = sensors.getTempCByIndex(3);
    39.   char str[200];
    40.   sprintf (str, "Temperatures: t1:%.2f, t2:%.2f, t3:%.2f, t4:%.2f", temp1, temp2, temp3, temp4);
    41.   Serial.println(str);
    42.   if (WiFi.status() == WL_CONNECTED) {
    43.     char url[200];
    44.    
    45.     sprintf (url, "http:xxxxx/?t1=%.2f&t2=%.2f&t3=%.2f&t4=%.2f", temp1, temp2, temp3, temp4);
    46.     Serial.println(url);
    47.  
    48.     HTTPClient http;
    49.     http.begin(url);
    50.     int httpCode = http.GET();  //Send the request
    51.     if (httpCode > 0) {
    52.       String payload = http.getString();
    53.       Serial.println("Sent to server, response: " + payload);
    54.     }
    55.     else {
    56.       Serial.println("http status: " + httpCode);
    57.     }
    58.     http.end();   //Close connection
    59.   }
    60.   else {
    61.     Serial.print("not connected");
    62.   }
    63. }
    Управление реле через веб.
    Код (Text):
    1. #include <ESP8266WiFi.h>
    2. #include <WiFiClient.h>
    3. #include <ESP8266WebServer.h>
    4. #include <ESP8266mDNS.h>
    5.  
    6. #define ledPin 5
    7.  
    8. char ssid[] = "xxxx"; // Название WiFi сети
    9. char pass[] = "xxxxxxx"; // Пароль к WiFi сети
    10.  
    11. ESP8266WebServer server(80);
    12.  
    13. void setup() {
    14.   Serial.begin(115200);
    15.   delay(10);
    16.  
    17.   pinMode(ledPin, OUTPUT);
    18.   digitalWrite(ledPin, 0);
    19.  
    20.   // Connect to WiFi network
    21.   Serial.println();
    22.   Serial.println();
    23.   Serial.print("Connecting to ");
    24.   Serial.println(ssid);
    25.  
    26.   WiFi.mode(WIFI_STA);
    27.   WiFi.begin(ssid, password);
    28.  
    29.   while (WiFi.status() != WL_CONNECTED) {
    30.     delay(500);
    31.     Serial.print(".");
    32.   }
    33.   Serial.println("");
    34.   Serial.println("WiFi connected");
    35.  
    36.  
    37.  
    38.   // Print the IP address
    39.   Serial.println(WiFi.localIP());
    40.  
    41.   server.on("/", [](){
    42.     server.send(200, "text/html", webPage());
    43.   });
    44.  
    45.   server.on("/ledPinOn", [](){
    46.     digitalWrite(ledPin, 1);
    47.     server.send(200, "text/html", webPage());
    48.     delay(100);
    49.    
    50.   });
    51.  
    52.   server.on("/ledPinOff", [](){
    53.     digitalWrite(ledPin, 0);
    54.     server.send(200, "text/html", webPage());
    55.     delay(100);
    56.    
    57.   });
    58.  
    59.   server.begin();
    60.   Serial.println("HTTP server started");
    61. }
    62.  
    63. void loop(void){
    64.   server.handleClient();
    65. }
    66.  
    67. String webPage()
    68. {
    69.   String web;
    70.   web += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>ESP 8266</title><style>button{color:red;padding: 10px 27px;}</style></head>";
    71.   web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">LED ON/OFF</h1><div>";
    72.  
    73.  
    74.   if (digitalRead(ledPin) == 1)
    75.   {
    76.     web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>";
    77.   }
    78.   else
    79.   {
    80.     web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</div>";
    81.   }
    82.   web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"ledPinOn\"><button>ON</button></a>&nbsp;<a href=\"ledPinOff\"><button>OFF</button></a></div>";
    83.  
    84.   // ========REFRESH=============
    85.   web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">REFRESH</button></a></div>";
    86.   // ========REFRESH=============
    87.  
    88.  
    89.   web += "</div>";
    90.   return(web);
    91. }
    Понимаю, что для профи тут делов тут на 5 минут но это пока не про меня.
     
  2. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.127
    Симпатии:
    226
    @Artem_ARM вам не нужно ничего объединять. Первый скетч у вас работает через Blynk. Добавьте к нему управление реле. Тоже через Blynk. Там даже ни чего программировать не надо.
     
  3. Artem_ARM

    Artem_ARM Новичок

    Сообщения:
    2
    Симпатии:
    0
    Blynk как я понял это для смартфона.

    Мне нужно управлять командами типо 192.168.1.135/off или 192.168.1.135/on

    Из браузера с компьютера.
    Своим силами пока не получается
     
  4. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.127
    Симпатии:
    226
  5. svs2007m

    svs2007m Читатель

    Сообщения:
    76
    Симпатии:
    9
    поставь на ПК эмулятор андроид типа NOX. Установи на нем Blynk. Вот тебе и управление с компа
     
  6. Bydenkin

    Bydenkin Новичок

    Сообщения:
    45
    Симпатии:
    2
    @svs2007m
    Вовсе и не обязательно!
    Допустим виртуальная кнопка для включения реле V4.
    Тогда управлять с браузера можно так:
    http://blynk-cloud.com/4675441d696a47c384808aeb2b552c41/update/V4?value=0
    это было выключить реле.
    http://blynk-cloud.com/4675441d696a47c384808aeb2b552c41/update/V4?value=1
    а это включить.
    У меня работает.
    А чтобы полноценно видеть всю картинку и легко управлять - мне дочь помогла сотворить свой сайт. С картинками, кнопками, мнемосхемами.
     
  7. svs2007m

    svs2007m Читатель

    Сообщения:
    76
    Симпатии:
    9
    Если у Вас есть СВОЙ сервер с "белым" IP и Вы разбираетесь в HTTP коде тогда причем здесь Blynk ?
     
  8. Bydenkin

    Bydenkin Новичок

    Сообщения:
    45
    Симпатии:
    2
    @svs2007m
    Сперва яйцо - потом курица!
    Первым был BLYNK. Потом сын на своём личном сервере поселил мой сайт. И буквально на днях дочка помогла мне его оживить. Пока на него не перебрался ... жду симисторы от Китая.
     
  9. svs2007m

    svs2007m Читатель

    Сообщения:
    76
    Симпатии:
    9
    Если сервер не Ваш, то можно записаться в танцевальный кружок и купить бубен ))) Если в Blynk вопрос идентификации ПОЛЬЗОВАТЕЛЯ на сервере со всеми сертификатами паролями шифрами явками и т.д. решен, то Вам на "своем сайте"придется решать этот вопрос самому !!!. Вам это надо ??? с Вашим познание С++ и НТТP ?Просто к Вашему скетчу нужно еще будет прицепить вагон и маленькую тележку )))
     
  10. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.446
    Симпатии:
    173
    Если уж так хотите, то попробуйте так:
    Все из этих двух файлов скопируйте в один.
    Повторяющиеся #include удалите, и разместите их вверху.
    Оставьте по одной void setup (void) и void loop(void), скопировав весь текст из другой. (оставляете весь текст из первой setup и переносите в нее текст из второй setup)
    Тоже и для loop.

    Что делать с дублирующимся текстом
    Код (Text):
    1.   WiFi.mode(WIFI_STA);
    2.   WiFi.begin(ssid, password);
    3.   while (WiFi.status() != WL_CONNECTED) {
    4.     delay(500);
    5.     Serial.print(".");
    6.   }
    7.   Serial.println("");
    8.   Serial.println("WiFi connected");
    думаю догадаетесь.

    Если что не так, покажите скриншоты ошибок компиляции.
     
  11. nikolz

    nikolz Гуру

    Сообщения:
    3.979
    Симпатии:
    426

Поделиться этой страницей