Всем здравия!
Для личного пользования занимаюсь изучением и настройкой различных измерялок и моргалок на ESP8266 (жду ESP32 c Ali).
Возникло желание осуществить отказоустойчивый доступ к сети сервера Blynk.
Домашняя ЛВС сеть содержит 3 шлюза:
10.0.1.1 — Основной домашний провайдер
10.0.2.1 — Альтернативный доступ (открытая сеть по соседству)
10.0.3.1 — GSM роутер (резервный канал)
Задача:
Реализовать возможность использовать шлюз для доступа к интернету (серверу) самим устройством, с заданными метриками (приоритетами) и проверкой работоспособности (наличия связи с сервером или/и доступности ping dns).
В программировании не силён, ничего похожего за несколько дней найти не удалось.
Далее по моим представлениями нужно прописать проверку доступности ip адресов и в соответсвии с ней, выбрать адрес с большим приоритетом и назначить его в переменную gateway
Затем, повторить тоже самое с dns сервером.
Прошу помощи написать код для этих тестов, буду проверять все идеи.
Для личного пользования занимаюсь изучением и настройкой различных измерялок и моргалок на ESP8266 (жду ESP32 c Ali).
Возникло желание осуществить отказоустойчивый доступ к сети сервера Blynk.
Домашняя ЛВС сеть содержит 3 шлюза:
10.0.1.1 — Основной домашний провайдер
10.0.2.1 — Альтернативный доступ (открытая сеть по соседству)
10.0.3.1 — GSM роутер (резервный канал)
Задача:
Реализовать возможность использовать шлюз для доступа к интернету (серверу) самим устройством, с заданными метриками (приоритетами) и проверкой работоспособности (наличия связи с сервером или/и доступности ping dns).
В программировании не силён, ничего похожего за несколько дней найти не удалось.
На примере датчика температуры:
/* ESP & Blynk Котельная v001*/
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial
/* Учетные данные Blynk */
char auth[] = "a2xho_gJ-mfvcLdss8FYjPc0X1XE0bJ"; // Blynk Котельная
/* Учетные данные WiFi */
char ssid[] = "Wi-Fi_Home";
char pass[] = "Password1";
/* Определяем конфигурацию сети *
char myDns
char gateway
byte mac[] = {0x3C, 0x61, 0x05, 0xC0, 0xA5, 0x01}; // MAC-адрес Котельная
byte ip[] = {10, 0, 3, 11}; // IP-адрес
byte myDns1[] = {77, 88, 8, 8}; // адрес DNS-сервера Yandex
byte myDns2[] = {8, 8, 8, 8}; // адрес DNS-сервера Google
byte gateway1[] = {10, 0, 1, 1}; // адрес сетевого шлюза metric 1
byte gateway2[] = {10, 0, 2, 1}; // адрес сетевого шлюза metric 2
byte gateway3[] = {10, 0, 3, 1}; // адрес сетевого шлюза metric 3
byte subnet[] = {255, 255, 0, 0}; // маска подсети
/* Задать метрику и скрипт проверки работоспособности по таймеру ip, mydns */
/* TIMER */
#include <SimpleTimer.h>
SimpleTimer timer;
/* DS18B20 Temperature Sensor */
#include <OneWire.h>
#include<DallasTemperature.h>
#define ONE_WIRE_BUS 0 // DS18B20 подключаем к GPIO0 на плате
OneWire oneWire(ONE_WIRE_BUS); // Настраиваем экземпляр oneWire для связи с любыми устройствами OneWire
DallasTemperature DS18B20(&oneWire); // Передаем нашу ссылку oneWire в Dallas Temperature.
float tmp_0; //Хранит числа с плавающей точкой (десятичные дроби). Точность: 6-7 знаков температура до #.###
void setup()
{
Serial.begin(115200); // запускаем последовательный порт
Blynk.begin(auth, ssid, pass);
//Blynk.begin(mac, ip, myDns, gateway, subnet); // инициализация контроллера?
DS18B20.begin(); // Запускаем библиотеку (инициализация датчика)
timer.setInterval(1000L, getSendData);
}
void loop()
{
timer.run(); // Initiates SimpleTimer
Blynk.run();
}
/***************************************************
* Отправка данных сенсоров в Blynk
**************************************************/
void getSendData()
{
DS18B20.requestTemperatures(); // Cчитываем температуру с датчиков, на это требуется 750мс
tmp_0 = DS18B20.getTempCByIndex(0); // Показания для датчика в цельсиях
Serial.print("IP: ");
Serial.println(ip);
// Serial.print("Шлюз: ");
// Serial.println(gateway);
// Serial.print("DNS: ");
// Serial.println(myDns);
Serial.print("Температура: ");
Serial.print(tmp_0);
Serial.println(" °C");
Blynk.virtualWrite(10, tmp_0); //вывод данных на виртуальный пин V10
}
Затем, повторить тоже самое с dns сервером.
Прошу помощи написать код для этих тестов, буду проверять все идеи.