Нужно подкорректировать скетч. Отправка MAC адреса на SDCard

KokoWRX
Offline
Зарегистрирован: 22.05.2021

Всем привет! Есть ttgo t-display, подключена флешка. Меня есть скетч заготовка, mac адреса отображает в сериал, а на карту не могу настроить запись. Кто может помочь дописать код, чтобы собирались mac адреса устройств находящихся в радиусе действия wifi(желательно уникальных, которых еще не записано на карту, если это возможно) и записи их на карту. Так же на встроенный дисплей нужно вывести информацию о заряде батареи и желательно, сколько собрано уникальных адресов. У. Меня есть заготовка, mac адреса отображает в сериал, а на карту не могу настроить запись. За вознаграждение. Срок сегодня, завтра до обеда

#include "freertos/FreeRTOS.h"
#include "esp_wifi.h"
#include "esp_wifi_types.h"
#include "esp_system.h"
#include "esp_event.h"
#include "esp_event_loop.h"
#include "nvs_flash.h"
#include "driver/gpio.h"

//Display
#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI();       // Invoke custom library



#define LED_GPIO_PIN                     5
#define WIFI_CHANNEL_SWITCH_INTERVAL  (500)
#define WIFI_CHANNEL_MAX               (13)

char mactxt[2];

uint8_t level = 0, channel = 1;

static wifi_country_t wifi_country = {.cc="RU", .schan = 1, .nchan = 13}; //Most recent esp32 library struct

typedef struct {
  unsigned frame_ctrl:16;
  unsigned duration_id:16;
  uint8_t addr1[6]; /* receiver address */
  uint8_t addr2[6]; /* sender address */
  uint8_t addr3[6]; /* filtering address */
    
  unsigned sequence_ctrl:16;
  uint8_t addr4[6]; /* optional */
} wifi_ieee80211_mac_hdr_t;

typedef struct {
  wifi_ieee80211_mac_hdr_t hdr;
  uint8_t payload[0]; /* network data ended with 4 bytes csum (CRC32) */
} wifi_ieee80211_packet_t;

static esp_err_t event_handler(void *ctx, system_event_t *event);
static void wifi_sniffer_init(void);
static void wifi_sniffer_set_channel(uint8_t channel);
static const char *wifi_sniffer_packet_type2str(wifi_promiscuous_pkt_type_t type);
static void wifi_sniffer_packet_handler(void *buff, wifi_promiscuous_pkt_type_t type);

esp_err_t event_handler(void *ctx, system_event_t *event)
{
  return ESP_OK;
}

void setup() {
  // initialize digital pin 5 as an output.
  Serial.begin(115200);
  delay(10);
  wifi_sniffer_init();
  pinMode(LED_GPIO_PIN, OUTPUT);

  //Настройки дисплея
  tft.init();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  tft.setTextSize(2);
  tft.setTextColor(TFT_WHITE, TFT_BLACK);
  tft.setCursor(5, 5);
  tft.println(F("WiFi Scaner"));
}

void wifi_sniffer_init(void)
{
  nvs_flash_init();
  tcpip_adapter_init();
  ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) );
  wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
  ESP_ERROR_CHECK( esp_wifi_set_country(&wifi_country) ); /* set country for channel range [1, 13] */
  ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) );
  ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_NULL) );
  ESP_ERROR_CHECK( esp_wifi_start() );
  esp_wifi_set_promiscuous(true);
  esp_wifi_set_promiscuous_rx_cb(&wifi_sniffer_packet_handler);
}

void wifi_sniffer_set_channel(uint8_t channel)
{
  esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE);
}

const char * wifi_sniffer_packet_type2str(wifi_promiscuous_pkt_type_t type)
{
  switch(type) {
  case WIFI_PKT_MGMT: return "MGMT";
  case WIFI_PKT_DATA: return "DATA";
  default:  
  case WIFI_PKT_MISC: return "MISC";
  }
}

void wifi_sniffer_packet_handler(void* buff, wifi_promiscuous_pkt_type_t type)
{
  if (type != WIFI_PKT_MGMT)
    return;

  const wifi_promiscuous_pkt_t *ppkt = (wifi_promiscuous_pkt_t *)buff;
  const wifi_ieee80211_packet_t *ipkt = (wifi_ieee80211_packet_t *)ppkt->payload;
  const wifi_ieee80211_mac_hdr_t *hdr = &ipkt->hdr;

  printf(    
    "%02x:%02x:%02x:%02x:%02x:%02x\n",
    /* ADDR2 */
    hdr->addr2[0],hdr->addr2[1],hdr->addr2[2],
    hdr->addr2[3],hdr->addr2[4],hdr->addr2[5]
  );
  }

void loop() {
   //Дисплей Главный Экран
//  tft.fillScreen(TFT_BLACK);
//  tft.setTextSize(2);
//  tft.setTextColor(TFT_WHITE);
//  tft.setCursor(5, 5);
//  tft.println(F("WiFi Scaner"));

   //Serial.print("inside loop");
  delay(1000); // wait for a second
  
  if (digitalRead(LED_GPIO_PIN) == LOW)
    digitalWrite(LED_GPIO_PIN, HIGH);
  else
    digitalWrite(LED_GPIO_PIN, LOW);
  vTaskDelay(WIFI_CHANNEL_SWITCH_INTERVAL / portTICK_PERIOD_MS);
  wifi_sniffer_set_channel(channel);
  channel = (channel % WIFI_CHANNEL_MAX) + 1;
  
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

KokoWRX пишет:
Срок сегодня, завтра до обеда

А потом что?  Вангуешь, что к тебе придут одинаковые люди в серых пальто, и внимательно глядя в глаза, строго спросют: "А зачем ты, Кока, матьтваю, секретные MAC-адреса собираешь?"

KokoWRX
Offline
Зарегистрирован: 22.05.2021

В РФ, насколько мне известно, нет запрета на сбор MAC адресов телефонов и других девайсов. По крайней мере я такого не нашел.

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

KokoWRX пишет:

В РФ, насколько мне известно, нет запрета на сбор MAC адресов телефонов и других девайсов. По крайней мере я такого не нашел.

Ну это вы не нашли. А те люди быстро найдут, у них большие возможности.

Тут вон один дед на свою. корову маячёк прицепил, чтоб следить, где пасётся, так его чуть не посадили, нарушение прав животного,  хорошо президент вмешался.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ТС, ну если назвал срок, озвучь бюджет. 

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Это называется wi-fi радар, и это законно в РФ, у одного из моих клиентов был такой.

https://hot-wifi.ru/radar/

https://wifiradar.ru

Но смысл быстро теряется, айфоны-макбуки рандомизируют мак-адрес, в последних андроидах тоже можно включить, в следующем андроиде будет включено по умолчанию.

KokoWRX
Offline
Зарегистрирован: 22.05.2021

я не знаю сколько это займет времени, предполагаю, что для профи минут 30. Пара тыщ за знания и 30 минут времени это норма?

sadman41
Offline
Зарегистрирован: 19.10.2016

Много что-то. Думаю, что минут пять. Пару кнопок нажать.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Много что-то. Думаю, что минут пять. Пару кнопок нажать.

естественно, щёлкнуть в ПО роутера сканирование WI-FI )))

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

KokoWRX пишет:

я не знаю сколько это займет времени, предполагаю, что для профи минут 30. Пара тыщ за знания и 30 минут времени это норма?

Ну тогда ищете такого профи. Вы понимаете, что можно написать, а можно написать и проверить(отладить) ? За написать вы заплатили, щедро... А за проверить ?

KokoWRX
Offline
Зарегистрирован: 22.05.2021

Мне надо хотя бы дописать часть, чтобы MAC, который уже собирается, записывался на SD.Без отладки и т.д.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

То есть вам не нужен работоспособный код? Вы меня рассмешили :) 

KokoWRX
Offline
Зарегистрирован: 22.05.2021

brokly пишет:

То есть вам не нужен работоспособный код? Вы меня рассмешили :) 

Если по делу нечего написать, то мимо пожалуйста, если есть варианты помочь, то лс или propaints@yandex.ru, там обсудим. Судя по последним топикам в разделе, тут больше тролей, чем исполнителей. Я более чем понятно написал, чтобы согласиться или отказаться от задачи.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Я тебе как раз по делу пишу. Вот я тебе за твои две тыщи напишу код и он не будет у тебя работать, дальше что ?

Cудя по твоему поведению и апломбу работать он точно не будет, ибо ты не совсем вменяем если умудряешься сунуть нос на форум и начать сраться со всеми подряд. И лички тут нет. И писать я тебе не буду, у тебя денег нет оплатить мою работу и ума, что бы ее понять. 

Да и на всякий случай, ты тут ни о чем, что бы кому либо говорить о "мимо". Пойми сначала, мимо это тут ты :)

KokoWRX
Offline
Зарегистрирован: 22.05.2021

brokly пишет:

Я тебе как раз по делу пишу. Вот я тебе за твои две тыщи напишу код и он не будет у тебя работать, дальше что ?

Cудя по твоему поведению и апломбу работать он точно не будет, ибо ты не совсем вменяем если умудряешься сунуть нос на форум и начать сраться со всеми подряд. И лички тут нет. И писать я тебе не буду, у тебя денег нет оплатить мою работу и ума, что бы ее понять. 

Да и на всякий случай, ты тут ни о чем, что бы кому либо говорить о "мимо". Пойми сначала, мимо это тут ты :)

Неуважаемый, судя по разделу "Ищу Исполнителя", я как раз там, где надо. Ты бы лучше работой занялся, чем чужие деньги считать. Я сюда пришел, так как не обладаю знаниями для данной работы и готов заплатить за проделанную работу ровно столько, о чем договоримся с исполнителем. Расписал подробно, на какой платформе делаю, скинул код, что на данный момент имею. Чё блен еще надо? Сказал, что надо сделать бесплатно? Глаза открой. Но за 3 дня никто даже примерно не смог обозначить ни сколько это реально займет времени, ни сколько это стоит. Только тролинг и не более. Спасибо, не актуально.

b707
Offline
Зарегистрирован: 26.05.2017

KokoWRX пишет:

Но за 3 дня никто даже примерно не смог обозначить ни сколько это реально займет времени, ни сколько это стоит. Только тролинг и не более. Спасибо, не актуально.

это значит, что ваша работа за обьявленные деньги никого не заинтересовала

KokoWRX
Offline
Зарегистрирован: 22.05.2021

b707 пишет:

KokoWRX пишет:

Но за 3 дня никто даже примерно не смог обозначить ни сколько это реально займет времени, ни сколько это стоит. Только тролинг и не более. Спасибо, не актуально.

это значит, что ваша работа за обьявленные деньги никого не заинтересовала

Так в том то и дело, что я не объявлял бюджет, так как не знаю, сколько это может стоить.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

KokoWRX пишет:

Так в том то и дело, что я не объявлял бюджет

Так обьяви. 

KokoWRX
Offline
Зарегистрирован: 22.05.2021

DetSimen пишет:

KokoWRX пишет:

Так в том то и дело, что я не объявлял бюджет

Так обьяви. 

Уже не актуально. Задача выполнена, расходимся.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Тут сложность в ценообразовании ;))). В есп32 есть необычная фишка ремаппинга пинов любых. Это приводит новичков в ступор с вопросом: "как сделать второй SPI (для SD карты). У ТС на первом SPI экран. Если он поймет или посмотрит примеры работы двух SPI, то сделает сам. Тут деньги можно брать только за ссылку в Гугл! ;))) Остальное стандартные примеры.

KokoWRX
Offline
Зарегистрирован: 22.05.2021

wdrakula пишет:
Тут сложность в ценообразовании ;))). В есп32 есть необычная фишка ремаппинга пинов любых. Это приводит новичков в ступор с вопросом: "как сделать второй SPI (для SD карты). У ТС на первом SPI экран. Если он поймет или посмотрит примеры работы двух SPI, то сделает сам. Тут деньги можно брать только за ссылку в Гугл! ;))) Остальное стандартные примеры.

Я в ардуино как бэ совсем новичок, в кодинге не силен особо, обычно смотрю как сделано у других и переделываю под свои задачи, и при этом флэшку к есп32 прикрутил за 30 минут. Сложность возникла только в работе с данными, как из одного формата, перевернуть в другой, чтобы в понятном виде записывалось на флешку.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

 К этой плате примеров как дерьма за баней,  там ничего "прикручивать" не надо, все давно прикручено.  И сложность тут одна - быдлозачазчик :)