Многие инженеры в IT рано или поздно приходят к потребности мониторинга инфраструктуры. Кто-то начитавшись лучших практик, кто-то под давлением руководства, а кто-то получил в наследство огромную не задокументированную инфраструктуру. Где есть cisco, brocade, eaton, apc и вязанка серверного оборудования начиная от маленьких synology, кубиков HP, до монстров NETAP, HP и DELL. И как правило большая часть оборудования управляется головным предприятием. А нам же тоже хочется знать что происходит…
Чего же может хотеть ответственный сотрудник IT? Как выясняется не так уж и много, любителям домашней автоматизации может показаться смешным банальное желание контроля температуры в серверной, а продвинутый сисадмин скажет: пффф… да сейчас в каждом сервере, роутере, коммутаторе не по одной жмене датчиков температуры и вскрытия, ставь систему сбора данных, настраивай и наблюдай. И первые и вторые будут правы. Но собирать данные с живых, подконтрольных, систем это одно, а иметь данные которые не зависят от состояния серверов и доступов к оборудованию в локации, это совершенно другое.
На рынке присутствуют готовые решения которые вполне могут удовлетворить все требования, есть даже отечественные разработки. :-) Но стартовый комплект далеко выходит за бюджет мероприятия. Если рассуждать в рамках одной-нескольких локаций, то да, совершенно нет смысла выдумывать велосипед, достаточно воспользоваться предложениями от
netping,
akvilona ну и конечно же
vutlan, на котором мы и остановились для крупных ЦОД. А вот с малыми локациями вопрос остался открытым.
Постановка задачи:
— минимальный бюджет, затраты на «боевую» единицу,
— простота внедрения,
— поддержка датчиков DS18B20, в идеале шиной,
— сухой контакт,
— ADC,
— универсальное ПО для всех локаций, с возможностью удаленной настройки,
— питание от коммутатора,
— номинальное соответствие политикам компании,
— работа по протоколу SNMPv2 и выше.
Кажется требований не так уж и много, бери старый добрый ESP8266 и используй, но не тут то было, если со стоимостью решения все понятно 2$ плюс обвязка, то с остальными пунктами не всё гладко. Нет особого желания разрабатывать готовое решение с нуля, разводить платы, заказывать их изготовление, а с учетом требования наличия порта Ethernet да еще и с PoE данное мероприятие становится практически нерешаемой задачей. Есть конечно и шилды с ethernet на борту на STM32, но как то с ними не заладилось, да и стоимость конкретного решения не очень то и укладывается в бюджет.
В силу своей страсти к DIY и домашней автоматизации часто поглядывал на готовые шилды на AliExpress и вот наткнулся на платку от компании LILYGO TTGO-T-Internet-POE которая подходила по всем параметрам для данной задачи. Даже немного с избытком, ввиду наличия разъема microSD для карт памяти. Была не была, попробовать можно. Заказал, спустя 20 дней плата была у меня. К сожалению фото упаковки не делал, т.к. не планировал писать обзор… никогда этим не занимался. :-)
Пруф покупки:
Впечатления:
Плата пришла в стандартной пупырчатой упаковке, в комплекте 16-и пиновый разъём и визитка со
сылкой на сайт производителя и благодарностью за доверие. :-) Изготовлена достаточно качественно, нет остатков флюса, каких либо ляпов, детали установлены ровно, пайка качественная. Единственная проблема с которой столкнулся при подключении, это отсутствие разъёма для подключения платы программатора, 6-и пиновый разъём типа «мама» с шагом в 2 мм. Не очень то они распространены в моём хозяйстве.
Технические характеристики TTGO T-Internet-POE:
ESP32-WROVER-B с двухъядерный WiSoC ESP32, 4 Мб флэш-памяти, 8 Мб PSRAM
слот для микро SD карты
2.4 ГГц 802.11b / g / n WiFi 4 и Bluetooth 5.1 через ESP32
10 / 100M Ethernet через LAN8720A Ethernet PHY
16-контактный разъем с UART, SPI, I2C, PWM, I2S, ADC; 3.3 Во вход / выход
последовательный порт через порт USB-C и чип CP2104 USB — TTL (TBC)
6-контактный интерфейс программирования с Tx / Rx, IO0, сброса, 3.3 В и GND
кнопки: BOOT и сброса, 32.768 МГц кварцевый генератор
5 В через порт USB-C
50 В PoE через импульсный трансформатор PA2369NL и HanRun HR861153C совместимый с PoE разъем RJ45
Микросхема SI3404 для управления питанием
70 x 52.3 x 17 мм
26.85 грамм
-40°C до +85°C
Фото с сайта производителя:
Мой экземпляр:
Видно колхозные вмешательства по добавлению разъёма для подключения программатора. :-)
Прошивка и творчество:
Плата поставляется в прошитом виде, «залит» демонстрационный Arduino скетч, который инициализирует Ethernet, SD и тест подключения к Baidu.
Скетч
/*
This sketch shows how to configure different external or internal clock sources for the Ethernet PHY
*/
#include <ETH.h>
#include <SPI.h>
#include <SD.h>
#define SD_MISO 2
#define SD_MOSI 15
#define SD_SCLK 14
#define SD_CS 13
/*
* ETH_CLOCK_GPIO0_IN - default: external clock from crystal oscillator
* ETH_CLOCK_GPIO0_OUT - 50MHz clock from internal APLL output on GPIO0 - possibly an inverter is needed for LAN8720
* ETH_CLOCK_GPIO16_OUT - 50MHz clock from internal APLL output on GPIO16 - possibly an inverter is needed for LAN8720
* ETH_CLOCK_GPIO17_OUT - 50MHz clock from internal APLL inverted output on GPIO17 - tested with LAN8720
*/
// #define ETH_CLK_MODE ETH_CLOCK_GPIO0_OUT // Version with PSRAM
#define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT // Version with not PSRAM
// Pin# of the enable signal for the external crystal oscillator (-1 to disable for internal APLL source)
#define ETH_POWER_PIN -1
// Type of the Ethernet PHY (LAN8720 or TLK110)
#define ETH_TYPE ETH_PHY_LAN8720
// I²C-address of Ethernet PHY (0 or 1 for LAN8720, 31 for TLK110)
#define ETH_ADDR 0
// Pin# of the I²C clock signal for the Ethernet PHY
#define ETH_MDC_PIN 23
// Pin# of the I²C IO signal for the Ethernet PHY
#define ETH_MDIO_PIN 18
#define NRST 5
static bool eth_connected = false;
void WiFiEvent(WiFiEvent_t event)
{
switch (event) {
case SYSTEM_EVENT_ETH_START:
Serial.println("ETH Started");
//set eth hostname here
ETH.setHostname("esp32-ethernet");
break;
case SYSTEM_EVENT_ETH_CONNECTED:
Serial.println("ETH Connected");
break;
case SYSTEM_EVENT_ETH_GOT_IP:
Serial.print("ETH MAC: ");
Serial.print(ETH.macAddress());
Serial.print(", IPv4: ");
Serial.print(ETH.localIP());
if (ETH.fullDuplex()) {
Serial.print(", FULL_DUPLEX");
}
Serial.print(", ");
Serial.print(ETH.linkSpeed());
Serial.println("Mbps");
eth_connected = true;
break;
case SYSTEM_EVENT_ETH_DISCONNECTED:
Serial.println("ETH Disconnected");
eth_connected = false;
break;
case SYSTEM_EVENT_ETH_STOP:
Serial.println("ETH Stopped");
eth_connected = false;
break;
default:
break;
}
}
void testClient(const char *host, uint16_t port)
{
Serial.print("\nconnecting to ");
Serial.println(host);
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("connection failed");
return;
}
client.printf("GET / HTTP/1.1\r\nHost: %s\r\n\r\n", host);
while (client.connected() && !client.available());
while (client.available()) {
Serial.write(client.read());
}
Serial.println("closing connection\n");
client.stop();
}
void setup()
{
Serial.begin(115200);
WiFi.onEvent(WiFiEvent);
SPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS);
if (!SD.begin(SD_CS)) {
Serial.println("SDCard MOUNT FAIL");
} else {
uint32_t cardSize = SD.cardSize() / (1024 * 1024);
String str = "SDCard Size: " + String(cardSize) + "MB";
Serial.println(str);
}
pinMode(NRST, OUTPUT);
digitalWrite(NRST, 0);
delay(200);
digitalWrite(NRST, 1);
delay(200);
digitalWrite(NRST, 0);
delay(200);
digitalWrite(NRST, 1);
ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE);
}
void loop()
{
if (eth_connected) {
testClient("baidu.com", 80);
}
delay(10000);
}
После первого включения пошли эксперименты со своими прошивками, т.к. нет достаточно подробного описания разъёма для программатора и его физического отсутствия на плате мне удалось установить его на верную сторону платы только со второй попытки. Потом я конечно повнимательнее всмотрелся в фото,
хлопнул себя «полбу» выматерился на производителя и плата успешно отозвалась в консоли, приняла на борт мои эксперименты.
Первым делом скрестил скетч с гита производителя со стандартным примером из библиотеки Arduino.
Скетч updater
#include <ETH.h>
#include <WebServer.h>
#include <Update.h>
/*
* ETH_CLOCK_GPIO0_IN - default: external clock from crystal oscillator
* ETH_CLOCK_GPIO0_OUT - 50MHz clock from internal APLL output on GPIO0 - possibly an inverter is needed for LAN8720
* ETH_CLOCK_GPIO16_OUT - 50MHz clock from internal APLL output on GPIO16 - possibly an inverter is needed for LAN8720
* ETH_CLOCK_GPIO17_OUT - 50MHz clock from internal APLL inverted output on GPIO17 - tested with LAN8720
*/
// #define ETH_CLK_MODE ETH_CLOCK_GPIO0_OUT // Version with PSRAM
#define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT // Version with not PSRAM
// Pin# of the enable signal for the external crystal oscillator (-1 to disable for internal APLL source)
#define ETH_POWER_PIN -1
// Type of the Ethernet PHY (LAN8720 or TLK110)
#define ETH_TYPE ETH_PHY_LAN8720
// I²C-address of Ethernet PHY (0 or 1 for LAN8720, 31 for TLK110)
#define ETH_ADDR 0
// Pin# of the I²C clock signal for the Ethernet PHY
#define ETH_MDC_PIN 23
// Pin# of the I²C IO signal for the Ethernet PHY
#define ETH_MDIO_PIN 18
#define NRST 5
WebServer server(80);
static bool eth_connected = false;
void WiFiEvent(WiFiEvent_t event)
{
switch (event) {
case SYSTEM_EVENT_ETH_START:
Serial.println("ETH Started");
//set eth hostname here
ETH.setHostname("esp32-ethernet");
break;
case SYSTEM_EVENT_ETH_CONNECTED:
Serial.println("ETH Connected");
break;
case SYSTEM_EVENT_ETH_GOT_IP:
Serial.print("ETH MAC: ");
Serial.print(ETH.macAddress());
Serial.print(", IPv4: ");
Serial.print(ETH.localIP());
if (ETH.fullDuplex()) {
Serial.print(", FULL_DUPLEX");
}
Serial.print(", ");
Serial.print(ETH.linkSpeed());
Serial.println("Mbps");
eth_connected = true;
break;
case SYSTEM_EVENT_ETH_DISCONNECTED:
Serial.println("ETH Disconnected");
eth_connected = false;
break;
case SYSTEM_EVENT_ETH_STOP:
Serial.println("ETH Stopped");
eth_connected = false;
break;
default:
break;
}
}
void handleNotFound() {
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
message += "Try to go http://IP/";
server.send(404, "text/plain", message);
}
const char* serverIndexU =
"<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>"
"<form method='POST' action='#' enctype='multipart/form-data' id='upload_form'>"
"
<input type='file' name='update'>
-
"
"<input type='submit' value='Update'>
"
"</form>"
"<div id='prg'></div>"
"<script>"
"$('form').submit(function(e){"
"e.preventDefault();"
"var form = $('#upload_form')[0];"
"var data = new FormData(form);"
" $.ajax({"
"url: '/update',"
"type: 'POST',"
"data: data,"
"contentType: false,"
"processData:false,"
"xhr: function() {"
"var xhr = new window.XMLHttpRequest();"
"xhr.upload.addEventListener('progress', function(evt) {"
"if (evt.lengthComputable) {"
"var per = evt.loaded / evt.total;"
"$('#prg').html('progress: ' + Math.round(per*100) + '%');"
"}"
"}, false);"
"return xhr;"
"},"
"success:function(d, s) {"
"console.log('success!')"
"},"
"error: function (a, b, c) {"
"}"
"});"
"});"
"</script>";
void setup() {
Serial.begin(115200);
WiFi.onEvent(WiFiEvent);
pinMode(NRST, OUTPUT);
digitalWrite(NRST, 0);
delay(200);
digitalWrite(NRST, 1);
delay(200);
digitalWrite(NRST, 0);
delay(200);
digitalWrite(NRST, 1);
ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE);
server.onNotFound(handleNotFound);
server.on("/", HTTP_GET, []() {
server.sendHeader("Connection", "close");
server.send(200, "text/html", serverIndexU);
});
server.on("/update", HTTP_POST, []() {
server.sendHeader("Connection", "close");
server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK");
ESP.restart();
}, []() {
HTTPUpload& upload = server.upload();
if (upload.status == UPLOAD_FILE_START) {
Serial.printf("Update: %s\n", upload.filename.c_str());
if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //start with max available size
Update.printError(Serial);
}
} else if (upload.status == UPLOAD_FILE_WRITE) {
/* flashing firmware to ESP*/
if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) {
Update.printError(Serial);
}
} else if (upload.status == UPLOAD_FILE_END) {
if (Update.end(true)) { //true to set the size to the current progress
Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize);
} else {
Update.printError(Serial);
}
}
});
server.begin();
}
void loop() {
server.handleClient();
delay(1);
}
И плата торжественно отозвалась на запрос в в браузере предложив выбрать бинарник для обновления.
Вдоволь наигравшись с тестовым скетчем вернулся к поиску прошивки под данный сабж которая бы удовлетворяла выше обозначенным требованиям. А не тут то было. Всё, что упиралось в работу с SNMP сводилось к жестко заложенной логике работы под устройство. Пришлось вникать и скрестить горку библиотек собрать требуемый набор программного функционала. Я не буду тут описывать тернистый путь к
звёздам данным на сервере zabbix предприятия. Лишь дам
ссылку на готовый проект, который планирую развивать в рамках требуемого функционала. На гите прошивка в бинарном виде которую можно загрузить на данную плату используя приведённый выше Скетч.
Итого:
+ отличная плата для DIY,
+ качественная сборка,
+ серьёзная поддержка производителя, как минимум есть свой сайт с описанием и ссылками на доку в
github,
+ PoE работает,
— разъём для подключения программатора зажали, но это мелочи.
там не то что стек а цельный веб сервер изкаробки
если помотреть прммеры кода в статье то это видно
Дальше рукопись автора обрывается. Увы.
ну и в серьёзных компаниях политика «не включать что попало в свою сеть», эта штука вряд ли соответствует
А по поводу сетей, в серьёзных компаниях используется сегментирование с жестким ACL для устройств жизнеобеспечения зданий, так что чего там на самом деле только нет.
Вот мне тоже на работе ручки выдают по необходимости. И это хорошо! Это удобно! И да, отменяет необходимость носить что-то из дома.
Там было наоборот: «ну нет сейчас у нас коннекторов, нечем обжимать витуху, потом купим… но выж айтишники, неповерю чтоб у вас дома небыло коннекторов, чё, жалко пару штук для дела? Потом купим, возьмёте...»
И так и не покупали…
Так и в контексте температур в серверных:
Какой удаленный мониторинг, встал и ножками протопал до серверной, глазками посмотрел, всё ли в порядке. Два раза в день достаточно. И журнал осмотра ведите. А то ишь, датчики, мониторинг.., а вы чё, на жопе сидеть будите, а может вообще тогда в офис не приезжать, пока датчик не запищит..?
Ну я в такой атмосфере прожил две недели и ушел, что сыграло всем наруку — начальника поимели за большую текучку, я был последней каплей. Начальство сменилось, и зажили они, наверн хорошо.
Телеграм, мыло, смс (с мопедом). Управлять тоже.
Скрипты на любой вкус написать можно.
У меня несколько сотен устройств, из которых половина просто пингуется, а остальные периодически пишут о перегрузке проца, исчерпании места на диске, падении линка на определенном интерфейсе, перегреве и т.д.
Zabbix может ещё и в trap'ы, но у него не очень дружественный интерфейс.
2. WT32-ETH01 + PoE плата + dc12/dc3.3V -> ~930р.
3. LilyGO T-ETH-POE ESP32+LAN8720A -> ~ 1500р.
Ну кому чего… Я пока использую в основном вариант 1 (три раза) и вариант 2(один штук).
Если одну штуку на коленке делаете, то причем тут «предприятие»?
Смешно. Как будто мы о разном железе говорим. Камень и по одно и тоже.
Ну тоесть реальных довода два:
1. Не хочу/Нет времени возиться с этим
2. Не компактно
Ну я не против, каждый своё выбирает.
Я бы тоже взял вариант 3, но мне не подходит под мои отличные корпуса, мне нужно прямоугольное узкое, а не квадратное.
Можно подумать, что камнем всё ограничивается, а обвязка, согласование, защитные цепи какие-то — всё это роли не играет. В итоге если ты не электронщик, программист или сисадмин — лучше цельная плата, над которой электронщик всё же что-то там думал и проектировал, чем модули проводками сцеплять.
Конечно лень возиться — смысл переизобретать велосипед? Всё IT держится на том, что можно чужие разработки взять а не самому все грабли проходить заново, и побеждают именно проекты с наиболее богатым ассортиментом бибилиотек и готовых решений — тот же ардуино — идеальный пример.
Можно в двух словах для чего они применяются?
Пример практического использования?
Спасибо.
Правила сайта гласят:
17.5 Заголовок обзора должен содержать название производителя и название модели товара (если эта информация поможет отличить товар от других похожих товаров), а также назначение товара. Важная информация должна быть размещена ближе к началу заголовка.
Попробуйте угадать, что это такое без помощи Гугла IEK CNT-L620D33V22-30TE…
То, что написали вы — почти понятно, что написал автор — набор букв и цифр.
А если не брезговать, то кое-где и дешевле…
я потратил битый час чтобы подготовить ссылки и все было уничтожены просто неверным движением мышки
Сижу вот и думаю — и дейтвительно чего ради я трачу тут время.
в общем так
минироутеры — дешевле некуда
https://aliexpress.ru/item/item/1005001309042153.html
https://aliexpress.ru/item/item/4000402106999.html
шьется openWRT и получается вполне себе linux
памяти мало, надо расширять
но пример d link 3020 говорит что и с такими ресурсами можно дел совтворить
веротяно фирма www.hlktech.net почувтовала эту тему и наделала модулей и плат для самодельщины
aliexpress.ru/store/345286
платы Onion Omega — из той же оперы
При этом они стоят уже не совмем копеечно и за ти деньги уже можно взять
одноплатник с полноценным debian под arm на карте памяти и гребенкой gpio. Но у них wiFI сделан отдельным модулем, что вызвывает некоторые моменты
Есть вот такая https://aliexpress.ru/item/item/4000865777993.html — и деньги берут и за wifi и за память
orange PI много моделей aliexpress.ru/store/1553371
деньги тоже берут, но в целом выходит дешевле чем всякие nano pi и banana pi и raspberry pi
некоторые выражаются в таком ключе что orange pi это фу
но объективной критики я так и не нашел
То ли дело ARM и полноценная Linux. Ниже @ABATAPA тоже делиться ссылками на OrangePi. И да, с Orange Pi была проблема только в том, что время от времени отваливается WiFi на 30-60 сек, потом восстанавливается «чудесным» образом и без перезагрузки. «Внутренних» причин не нашел. Правда использовал я одну из самых дешевых — Orange Pi Zero H2 256МБ. А вот с Бананой опыт куда получше — Banana Pi M4 (RTD1395 Cortex A53, 1GB DDR, 8GB eMMC) 3 года работает в качестве «контроллера» в гараже (ворота, електроподогрев, 5 беспроводных датчиков (тепм, вода, влажн) и видеокамера)… и работает в паре с BPI NB-BC95 NB-IoT (UART алерты передает по GSM — на момент установки не было свободного модуля на SIM800L, а паять было влом).
Но опять таки — все «фруктовые» это ARM с аналоговыми и цифровыми GPIO, у которого намного больше возможностей и вариантов использования, при чем без прошивок. А любителям, таким как я, именно это и надо )))
ESP32 тоже можно прекрасно использовать без или почти умения програмировать (готовую прошивку разок прошить конечно придется), но все таки еще не для всех задач прошивки понаделали.
OpenWRT же масштабно пилили много людей долгое время, до такого состояния что инетренет можно поднять буквально за пару минут, но малое количество памяти сильно орграничивает. В то же время обычно устройства под openWRT имеют wifi встроенный в чипсет, и по логике — чутоку проще сделать раз и навсегда правильную прошивку для него.
А очень частая беда дешевых одноплатников в том что WiFI там напаян отдельным дешевым модулем, и они вот че то подозрительно часто глючат что на одноплатниках, что на андройдах.
Тем не менее, я когда вижу что естть официальная сборка свежих wrt или armbian считаю что скорее всего все работает в полтыка. Если же прошивка допилена единтвенным анонтимным программистом много лет назад, то это сродни казино — никогда не угадаешь что выпадет и как сильно будет глючить.
ну и с gpio под linux… есть моменты
а вот микроскопические стабилизаторы питания — вполне может быть
а может режм питания неправильный
HLK RM04 сто́ит ~$7.5, с «кроватью» — $10-12.
Ставится OpenWRT, хоть и древний:
Есть и другие модули, на MTK:
Orange Pi Zero с ali сто́ит чуть больше (хотя на распродажах был и по $15), но возможностей больше намного:
А если не брезговать, то какие-нибудь Orange Pi One или первая «малина» на avito — от ~250 и выше.
И даже они позволят сделать желаемое проще, лучше и быстрее.
Есть и другие одноплатники в примерно эту цену.
И это только то, что без переделки (например, из роутеров) и где легко доступны GPIO и есть сеть.
Вы читали написанное?! Все эти платы работают с Linux (разными дистрибутивами).
Из пальца взяли? H2 загоните в низкие частоты — и будет сопоставимо, потому что ESP32 с сетью в сон не загонишь.
И вообще, разница в 2 ватта актуальна для случая, «где есть cisco, brocade, eaton, apc и вязанка серверного оборудования начиная от маленьких synology, кубиков HP, до монстров NETAP, HP и DELL.»?!
Вы смеётесь или просто надо прицепиться к чему-нибудь?
Для настоящего «аудита» что первая, что вторые — одинаковые, без сертификата соответствия они просто не могут стоять. Какие «исходники железного контроллера», о чём Вы?! Никто даже разбираться не будет.
На деле вообще никто на такое внимания не обращает.
И причём тут «дырявое ядро», если мониторинг осуществляется или из сети управления, или из отдельного VRF? А что с «дырявостью» реализации TCP/IP и SNMP на этой плате? Какие гарантии, что её нельзя использовать как рефлектор для DDoS? И какая разница, имеет ли он доступ к «его железному com порту»? Что он с ним сделает? Посмотрит на чёрный minicom/PuTTY? Если он имеет физический доступ к модулю — он имеет физический доступ в LAN, что намного серьёзнее.
А на ESP32 как-то ситуация отличается? Вы уже притягиваете за уши.
Не надо высасывать из пальца аргументы. Ваше устройство имеет право на жизнь, но это больше из разряда «хотелок», а это не поддаётся логике и целесообразности. Я показал другие варианты, с которыми задуманное (и не только) реализовать проще — потому что всё это уже реализовано в Linux.
Но в плане реализации дополнительных, потенциально, привлекающих внимание протоколов, помимо «дырявого» SNMPv2, сетевого стека от espressif тут ничего нет.
Оставьте право на жизнь, я закрываю вопросы в своей трудовой деятельности и просто делюсь с сообществом своими наработками.
Да и с «сертификатами соответствия» тоже отдельная песня — этих стандартов как национальных так и международных вагон и маленькая тележка, причём в разных областях они разные.
В пафоснейшей швейцарской клинике стоят в операционных десткопы с седьмой виндой, отродясь не патченные (потому что локальная сеть изолирована от интернета) — и никаких претензий ни у кого это не вызывает (это реальная ситуация у одного из наших клиентов).
но это же не везде так
А так в одних странах можно и облачные решения в клиниках использовать, а в других только on premise, потому что сети физически разделены (по закону только так можно).
www.friendlyarm.com/index.php?route=product/product&path=69&product_id=212
www.friendlyarm.com/index.php?route=product/product&path=69&product_id=151
или тут еще куча
www.friendlyarm.com/index.php?route=product/category&path=69&page=1
Ну а вообще неплохо, конечно, но слегка напрягает китайский esp32 — ни для чего серьёзнее игрушек и самоделок, мне кажется, использовать его не стоит. Ну как и вообще всё, что программируется из среды arduino.
and High-Efficiency Switching Regulator with Compact Footprint»
Хотя не очень понятно куда даже теоретически с этой конструкции 25 ватт можно девать, но запас карман не тянет…
что можно поиметь за такую цену в принципе:
STMicro разве что не совесм китайская, Alwinner — Китайский, Rockchip — китайский
и все их почему то ставят во вполне серьезное оборудование
Вы много датчиков температуры с эзернет используете? И сколько они стоят?
вовсе не обязательно поднимать WiFi в том же помещении а просто кабель бросить.
если же нужно все таки несколько датчиков в большой территории где повсеместно протянут Ethernet то тоже нет особого смысла подключать их по WiFi хотя бы из-за дальности и стен, а скорость тоже не нужна. ZigBee для такого есть, но не WiFi. взять калькулятор и посчитать что дешевле.
и только в случае если на территории повсеместно протянуть WiFi — есть смысл не заморачиваться.
только вот, да — есть n количество безопасников которые за WiFi конкретно «возьмут за задницу»
Я помню древние времена, времена до эры esp8266, когда была ардуина и Ethernet шилд. И тогда это было жуть как не удобно, провода…
Появились ESP8266 и сразу все безделушки переделались с нуля на wifi сеть. И посидев годы на wifi стало понятно, что в некоторых случаях лучше проводом сделать, тем более, что питание всёравно тянуть. Например в частном доме подключить теплицу или ёмкость с септиком. У меня сервер в подвале стоит, и я через подобную железку пробросил ZigBee стик по Ethernet. И заметил, что иногда по wifi команды подтормаживают, например есть ZigBee кнопка, а к ZigBee шлюзу подключены самоделки-диммеры на ESP8266, и один диммер есть на esp32-LAN. Так вот сама кнопка даёт задержку ~0.10сек, и wifi также. Но иногда появляется задержка аж до секунды, в то время как на Ethernet задержек не наблюдалось. Так что все запотолочные светилища буду переделывать на провод.
Ну и можно вспомнить что Microchip тоже не китайская (как и сожранный им Atmel — а что у нас там в сердце любой классической самоделки?))) ), Renesas совсем не китайская.
Ну а степень «серьёзности» каждый определяет для себя сам. Вон для некоторых, как можно видеть, и сяоми — это серьёзно.
Для игрушек и самоделок китайские контроллеры конечно вполне ок, но тут другой вопрос — что это у вас за игрушки и самоделки с активным PoE? Из пушки по воробьям слегка.
на самом деле есть любители. активного poe
Для самоделок достаточно копеечный активный сплиттер питания поставить (впрочем, для несамоделок тоже — всякие бриджи и панели так питать удобно).
Все главные офисы и производства STM просто у меня в радиусе 1-3 часов езды от дома. И ещё бывал у них в катанском и палермском research centers.
А с китайцами бы были точно.
у esp32 WiFi часть лежит в бинарных библиотеках, без исходников и все под лицензией apache
и неизветвно чего они туда написахали.
Так для беспрводных стеков это обычное дело
Заодно посмотрите про что это.
Да, даже на герберы уже у моего того заказчика прав нет, так что может быть тоже выложу на досуге.
только это, ссылку бы
Забавно, что когда-то (прямо таки не так давно) писатели-фантасты мечтали о том, что всем будут доступны любые знания (и наступит интеллектуальное процветание человечества).
Стали доступны, абсолютно любые.
И выясняется что абсолютному большинству просто лень их искать. Вплоть до того, что лень вбить несколько букв в поисковике, потому что это им сложнее чем один раз кликнуть мышкой…
в общем я уже нашёл слил а досуге посмотрю
Вот у меня сейчас жена получает третье высшее образование — bachelor of computer science в Лондонском Университете. От того что сейчас там можно учиться онлайн оно не становится особо легче, даже наоборот — у них там квизы каждый день практически, а ещё мидтермы и экзамены как обычно, которые никто не отменял. Пинать и забивать весь семестр, а потом учить всё в ночь перед экзаменом, как было заведено в наши студенческие времена, совсем не получится.
То же по юристпруденции, экономике — большинство не работает по специальности. К чему эти полученные знания? На западе наверное не так.
«По специальности» — это определение вообще из прошлого века, когда считалось нормальным заниматься одной работой всю жизнь. Сейчас тоже так можно (хотя всё равно постоянно учиться придется — посмотрите на врачей), но всё-таки стало нормальным менять не только место работы, но и её профиль.
А по конкретике всё просто — по первому высшему жена специалист по древнекитайской философии. Не самая востребованная специальность (да и работа переводчиком с китайского — это максимальная вершина, которую можно достичь с таким образованием, а идти «в науку», особенно в российскую, или в преподавание — это хоронить себя заживо).
Второе высшее мы вообще вместе 10 лет назад получали, когда переехали в Италию, beni culturali в университете Палермо. В результате мало того что могли здесь официально жить и работать (это не так просто, особенно второе), но и выучили итальянский язык до уровня свободного, и заодно узнали хорошо историю и культуру страны, в которой живём (ну и заодно и Рима и древней Греции).
А сейчас жена работает мобильным разработчиком — хорошая специальность, и удалённо удобно работать. Но она сама чувствует, что иногда фундаментальных знаний не хватает. Плюс, официальный диплом университета подобного уровня — это возможность получить и работу соответствующего уровня. Грубо говоря не 50 евро в час получать, а 150. Оно того стоит, как по мне.
Диплом в IT сейчас может быть нужен только для того чтобы получить первую работу, но и это прекрасно обходится правильными сертификациями.
Мне достаточно часто приходится общаться с такими BCs из приличных по австралийским мерках юни (и это на голову лучше чем Лондонская онлайновая хрень) и они после градюэйшена не знают вообще никчего и счастливы работать за практически минимальную зарплату. А вот гикам которые ни в какие юни не ходили но программируют с 13 лет действительно платят 6-значные зарплаты и никого их образование не интересует.
Реально сейчас BSc в IT нужен только для одного — попадания в Graduate программу. Про качество этих градюэйтов я уже говорил. Ну оно еще конечно упоминается в вакансиях как наобходимое условия но ни разу ни я ни меня не спрашивали об образовании. Потому что знают что оно такое.
Но то что вы думаете что ваша жена сможет получать +200К евро в год только потому что она получит BSc это весьма показательно о вашем знании рынка. Точнее о полном его незнании.
Определение серьёзного (не определение, но критерий, да, тот самый) я вам уже дал. И тут размер компании не особо важен, даже часто наоборот — можно работать в каком-нибудь Амазоне и получать там копейки (потому что Безос чувак известный своей прижимистостью).
А что касается того, что вы подменяете критерий необходимого условия на критерий достаточного — вот это действительно показательно.
но слово Китай — единтвеное что обьединяет эту беседу с сайтом по обзору китайских безделушек :)
но вот инетресно стало — а можно было бы с таким образованием в Китае начать работать? Там поди востребованннее будет.
Короче говоря, здесь количество людей в сообществе вытягивает всё, и для той же ардуины есть не просто библиотеки на любой вкус, а обсосаны всё нюансы работы даже для экзотических случаев и всегда есть у кого спросить. ESP — туда же. Да, оно стрёмное. Да, плохо документированное. Но на любой хоть как-то используемый случай вы уже найдёте кого-то, кто покопался и выложил описание или пример.
Ардуино — отличная штука для обучения и макетирования. Но для серьёзных проектов не надо её использовать. Как тем более не надо для них использовать «стрёмное и плохо документированное» (но для ёлочной гирлянды — отчего бы и нет).
Ну и да, и не надо писать веб-фронтенд ни на сях ни на ассемблере, ни даже на питоне. И не надо ничего писать на пхп.
Вы же понимаете, что процентов 70 веб-фронтендов и пишутся на PHP и питоне, а из оставшихся половина — на джаваскрипте? Так и с ардуино — угу, «обучение и макетирование». А по факту — вполне рабочая штука для большинства «штучных» задач.
А что же про «штучные задачи» — то чаще всего под подобными задачами подразумевается работа от клиента, которому нужно сваять сайт уровня фейсбука, или разработать автомобиль тесла, и у клиента есть на это целых 200 евро. Можете начинать. Подобными предложениями (и людьми, готовыми за такие предложения хвататься) забиты сайта типа freelancer.com и upwork.com. И да, у меня не малейших иллюзий нет, на чём там всё это ваяют. Если делать это не на таких «рабочих штуках», то и от голода ласты отбросить можно. Даже учитывая то, что и в индии и в китае еда не особо дорогая.
Впрочем, тогда я не понимаю, при чём там си с ассемблером — на них фронт в принципе не напишешь, разве что если WebAssembly считать — там си применимы.
Фейсбук, если что, на PHP долгое время был, сейчас там сборная солянка, но PHP до сих пор туча. И для корпоративных веб-приложений, как ни странно, что PHP, что Python для бэкэндов очень даже в ходу до сих пор, судя по тем аутсорсерам, где я работал и работаю. Я, правда, скорее со стороны на это смотрю, но цветут и пахнут. Начиная с банальной Magento и заканчивая совсем кастомом.
А штучная задача — она штучная и есть. Вот мониторинг вроде того, что выше — классика, или, вон, куча 3d-принтеров домашних на ардуине (хотя это уже и не совсем штучно), или китайские игрушечные машинки на ней бегают, дроны летают (и игрушки, и всерьёз — у фотографов тех же) и так далее, и тому подобное. Там, в принципе, реальные ограничения-то какие? Отсутствие защиты по ногам, некоторая тормозность (лечится применением того же ESP или STM — всё равно копейки) и возможно вопросы по энергопотреблению — но они есть не всегда и интересны только там, где питаемся от батарейки. Если надо опросить две кнопки, три датчика и выкинуть это по wifi или дёрнуть реле — смысл брать что-то большее?
Вы говорите про сложность задачи, а я говорю про надёжность.
Если вам надо опросить две кнопки, которые отвечают за запуск ракеты (настоящей), и дёргают реле, которое включает зажигание — не надо делать это на китайском esp.
Если вам надо опросить три датчика, снимающих параметры с ядерного реактора и выкинуть их по сети — не надо делать это ни на esp ни через wifi.
Потятно, что это крайние случаи, но я бы даже на этих штуковинах не стал управление гаражных ворот делать.
А игрушечные машинки и домашние принтеры — да пожалуйста. С дронами аккуратнее — если упадёт кому-нибудь на голову — это может вам достаточно дорого обойтись.
www.microsemi.com/product-directory/high-reliability/3651-radiation-tolerant-devices
www.renesas.com/us/en/products/space-harsh-environment
www.ti.com/applications/industrial/aerospace-defense/space/overview.html
так LWIP в инклудах
С другой стороны:
Кто-нибудь может пояснить систему взаимоотношений и иерархии WiFi и ETH? Как рулить тем, другим и обоими сразу (в качестве моста)?
В первую очередь интересует именно взаимоотношения и зависимости WiFi и ETH частей системы.
производитель esp32 сделал пример реализации моста в своем фрейворке esp IDF, без ардуино
с usb драйвером возится довольно заморочно, проще с карты памяти.
а вообще девайсы такие и готовые есть но вроде как они все не дешёвые.
где на этой плате CP2104?
На ali эти платы несколько дороже идут плюс доставка…
Но согласен что в любом случае это выходит неплохая альтерантива рассмативаемой плате, для некоторых задач. А для некоторых — есть платы и подешевле.
Рассматриваемая плата — это МК, а не Linux. То есть, никак не альтернатива, так как они из разных применений (хотя, эти применения изредка пересекаются).
А в топике речь про микроконтроллер, что как бы немного другое.
Ное сли есть что то по времени критичное, то уже приходится… подумать
Что у Вас там по времени критичное? Давайте конкретную практику, а не из пальца.
Я даже не говорю про патчи RT-Linux (ядра с которыми, к слову, нативно доступны во многих дистрибутивах), я про «обычные» ядра, которых хватает в 95% задач (а для большинства — в 99%).
И тут ещё есть фичи, которые можно осуществить только на МК — например, скорость загрузки и меньшее потребление.
Linux более универсален, тут я согласен. Но за эту универсальность надо платить скоростью загрузки, низкой надёжностью, сложностью проекта и т.п.
Из пальца. С чего бы?
Спорим, отдать значение датчика по https и snmp под Linux реализуется проще, чем на ESP и других?
Вы вообще делали на них что-то, отличное от мигания светодиода и управления гирляндой?
На сколько радикально? Пример в секундах если есть опыт. Было бы интересно узнать.
Что из пальца? Надёжность?
Вообще, я про надёжность из-за меньшего количество подвижных частей и компонентов.
На МК не надо microSD карту, не надо держать Linux, не надо проверять файловую систему, не надо следить за обновлениями сторонних утилит, которые даже не используются, не надо ждать так долго загрузку, не надо даже заниматься настройкой пользователей и сервисов, не надо переживать за износ носителя, не надо админить, не надо держать удалённый доступ для пользователей и так далее.
А спорим, что запуск Steam'а и там запуск Ведьмака или типа того на Windows будет проще, чем на ESP32? К чему этот спор? Для каждой задачи — свой инструмент.
На Linux'е? Я даже и этого не делал.
Я смотрю, Вы записываете «в плюсы» всё подряд. А это «не надо» я бы отнёс к минусам.
Вы в роутере проверяете ФС? А там тоже 100% Linux. Слышали про Read Only FS?
Я смотрю, Вы имеете представление о Linux только на десктопе. Скажите, а в своём роутере Вы следите «за обновлениями сторонних утилит»? Такое возможно, если у Вас OpenWRT/etc и установлены сторонние пакеты, но в 99% случаев «прошивка» (а это и есть среда Linux) обновляется монолитно.
Спорно, но пусть дольше на 5 сек. За это Вы получаете все сетевые возможности, которые есть на данный момент в Linux. Оно того сто́ит.
Опять Вы про десктоп…
Так и не переживайте. Что ему в R/O будет? А если Вам надо что-то писа́ть куда-то — то с МК точно так же придётся переживать. А уж если речь идёт о встроенном EEPROM в мк…
Опять Вы о чём-то другом… Мы же говорим об одинаковом функционале, а не о сервере?
Какой «удалённый доступ для пользователей» на датчике?! Хотя даже в этом плюс: зайти root'ом — и можно иметь прямой доступ к датчикам, отлаживать, смотреть логи (которые могут быть в кольцевом буфере в оперативной памяти и не изнашивать накопитель), менять параметры, настраивать и т. д.
Это заметно. Думаю, и на мк дальше готовых проектов не ушли.
1 — сборка, подключение необходимого количества датчиков, в том числе шиной,
2 — универсальная прошивка, минимальная настройка, как то выдача IP, указание параметров для подключения сервера мониторинга, настойка портов,
3 — добавление устройства на сервер, который автоматом опросит все доступные датчики и посторит карту IODов, имен сенсоров взяв значения имен сенсоров с контроллера.
Если устройств 1-10, можно и линукс использовать, настраивая, описывая датчики, либо написать отдельный софт, скрипт или использовать готовые решения (которых я не нашел), но если таких устройств более 10-и а то и под сотню, то решения на полноценной ОС, мягко говоря становится тем еще удовольствием.
Хороший подход. Каждому инструменту — своё применение. И это правильно.
Для каждой задачи нужен правильный инструмент. Не все гвозди надо забивать микроскопом. Часто нести целую ОС на базе Linux'а заводить нет смысла.
Вне зависимости от того слышал или нет, но и ей приходит кирдык иногда. Она в read-only не полностью.
Да.
Для некоторых задач 5 секунд может оказаться слишком долгим.
Не для всех задач оно того сто́ит.
Нет.
Не так сильно. Можно сказать, что вообще не надо переживать.
Не надо додумывать за других. Мой опыт не имеет отношения к тому, что МК — это просто другой инструмент и надо знать его плюсы и минусы, что бы можно было эффективно использовать.
И да, есть много применений, где МК будет намного эффективнее целый системы на Linux'е.
Я Вам сказал, что это решается распаянной памятью. Но Вы полезли в PCIe и USB, совсем не понимая о чём идёт речь.
Вы занимаетесь словоблудием каким-то: какие-то общие очевидные фразы, перескакивание с одного на другое… Речь шла о конкретном «гвозде», конкретной задаче: стеке IP и SNMP.
Я сказал, что это решается проще и лучше в Linux, потому что там едва ли не самая совершенная реализация сетевых функций. И в данном случае это не «забивать микроскопом», а «правильный инструмент». А вот впихивать куцую и дырявую реализацию SNMP (да и IP) в простенький микроконтроллер — это неправильно.
Какой бред. Что значит «не полностью»? Если я запишу во FLASH образ ФС и запрещу (в том числе и аппаратно) запись — что с ней будет?!
Опять какое-то словоблудие об абстрактном. Каких «некоторых», если речь идёт о конкретном применении: опросе данных с датчиков в серверной. Там время загрузки в секундах не играет роли. Некоторые сервера HP/Dell грузятся почти 10 минут ДО загрузки ОС. Тут раз загрузился — и работай непрерывно.
Опять крутите… Каких «всех», если речь о конкретной?!
Ясно. Значит, опыта как такового нет вообще.
Тогда не о чем и говорить, тем более в стиле «а вот не всегда, а вот не для всех...»
Всего хорошего!
На гитхабе на скрине картинка из заббикса, пинг 120мс, почему такой большой, железка так сильно тупит?
сразу виден иной подход
habr.com/ru/post/547044/