Перейти к содержанию
  • Регистрация
  • 0
Pax Beach

Массовые рассылки — Bluetooth, Wi-Fi?

Вопрос

Коллеги, помогите пожалуйста с поиском решения.


Есть зал 100x100 метров, 400-600 человек на борту. На их мобильные устройства (смартфоны, планшеты) нужно принимать раз в секунду различный текст ~120 символов в кодировке UTF8. Можно широковещательно, или P2P.

Сейчас мы выбираем технологию передачи данных в ограниченном помещении большому количеству людей.

От выбора инфраструктуры, понятно, зависит логика мобильных приложений для этой цели. 
 

1. Как лучше выстроить инфраструктуру?
2. Чем лучше рассылать Bluetooth или Wi-Fi (понятно, что GPRS канал в таком скоплении — не вариант, базовая станция не справятся, да и сигнала может не быть)?
3. Сколько точек доступа и каких лучше разместить?
4. На какие нюансы обратить внимание?

 

Сначала я обратился к технологии маячков. Но по многим параметрам маячки здесь не подходят.

Однако, не исключаю возможность широкого вещания по Bluetooth каналу.
Так же возможно использовать технологию тетеринг (tethering), раздавать сигнал через смартфоны раскинутые по залу.
Можно тоже самое организовать, раскидав точки доступа Wi-Fi.
Преимущества той или иной инфраструктуры для меня не очевидны.

 

Может кто-то сталкивался с подобными задачами?

Заранее благодарю за участие в обсуждении.

 

 

 

Изменено пользователем Pax Beach

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

я попробовал недавно тетеринг, но там поиск устройства - целая песня. долгая

хотя когда зацепилось - все работает

но из вопроса неясно, что, все поставят на телефон ваше приложение ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
18 часов назад, krapotkin сказал:

я попробовал недавно тетеринг, но там поиск устройства - целая песня. долгая

хотя когда зацепилось - все работает

но из вопроса неясно, что, все поставят на телефон ваше приложение ?

Да. Смысл в том, что поставят приложение.

А в чем сложность поиска устройства?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

не знаю. тупит секунд иногда 5-10

напрягает очень

у меня электронное табло, а я прыгаю вокруг заведется-не заведется ((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
8 часов назад, krapotkin сказал:

не знаю. тупит секунд иногда 5-10

напрягает очень

у меня электронное табло, а я прыгаю вокруг заведется-не заведется ((

Очень интересно. А как организован этот тетеринг?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

дело-то нехитрое вроде. надо просто придумать протокол

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

и разбудить его может только что-то системное.

либо сервис, бомбящий запросами свой сервер, но это смерть батарейке

вот и остаются самопобудные маячки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От msp888
      Всем привет! 
      У меня уже несколько лет работают приложения под Windows и под Andriod, в которых выполняется обмен данными по локальной сети по протоколу TCP-IP. Теперь вот мне понадобился прием multicast-пакетов по протоколу UDP. Под Windows всё работает замечательно, а вот под Android ничего принять не могу... 
      Подскажите чего не хватает, или дайте ссылку на пример, где уже реализовано подобное...
      Вот выдержки из кода:
      // переменные FSocket:TSocket; FiAR:IAsyncResult; FasyncWE:TMultiWaitEvent; data:TBytes; res:TWaitResult; WifiLock: JWifiManager_WifiLock; MulticastLock: JWifiManager_MulticastLock; ... // регистрация в группе procedure AddMemberShip(MultiAddr, InterfaceAddr:Cardinal); var Mreq:ip_mreq; begin fillchar(Mreq, SizeOf(Mreq), 0); move(MultiAddr, Mreq.IMR_MultiAddr.S_addr, SizeOf(Mreq.IMR_MultiAddr.S_addr)); move(InterfaceAddr, Mreq.IMR_Interface.S_addr, SizeOf(Mreq.IMR_Interface.S_addr)); CheckSocketResult(setsocketoption(FSocket.Handle, IPPROTO_IP, IP_ADD_MEMBERSHIP, Mreq, SizeOf(Mreq)), 'setsockopt:IP_ADD_MEMBERSHIP'); end; ... // permission... ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ACCESS_NETWORK_STATE ACCESS_WIFI_STATE CHANGE_CONFIGURATION CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE INTERNET READ_CALENDAR READ_EXTERNAL_STORAGE WRITE_CALENDAR WRITE_EXTERNAL_STORAGE WAKE_LOCK ... // настройка wi-fi WifiLock.acquire; MulticastLock.acquire; ... // создание и настройка сокета FSocket:=TSocket.Create(TSocketType.UDP); FSocket.Bind(TNetEndpoint.Create(ServerIP, ServerPort)); AddMemberShip(TIPAddress.Create(239, 78, 1, 1).Addr.S_addr, ServerIP.Addr.S_addr); AddMemberShip(TIPAddress.Create(239, 78, 1, 2).Addr.S_addr, ServerIP.Addr.S_addr); AddMemberShip(TIPAddress.Create(239, 78, 1, 78).Addr.S_addr, ServerIP.Addr.S_addr); ... // Прием данных в потоке... FiAR:=FSocket.BeginReceiveFrom; FasyncWE:=FiAR.AsyncWaitEvent; res:=FasyncWE.WaitFor; if res = wrSignaled then data:=FSocket.EndReceiveBytesFrom(FiAR); // Прием  
    • От GMX
      Android 6 MIUI
       ни стандартные примеры не работают, ни попытки что-то свое создать... 
      LastDiscoveredDevices - всегда 0, хотя из настроек устройства находятся. 
      unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Bluetooth, System.Bluetooth.Components, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Bluetooth1: TBluetooth; Label1: TLabel; AniIndicator1: TAniIndicator; procedure Button1Click(Sender: TObject); procedure Bluetooth1DiscoverableEnd(const Sender: TObject); procedure Bluetooth1DiscoveryEnd(const Sender: TObject; const ADeviceList: TBluetoothDeviceList); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.Bluetooth1DiscoverableEnd(const Sender: TObject); begin Label1.Text := IntToStr(Bluetooth1.LastDiscoveredDevices.Count); end; procedure TForm1.Bluetooth1DiscoveryEnd(const Sender: TObject; const ADeviceList: TBluetoothDeviceList); begin Label1.Text := IntToStr(ADeviceList.Count); AniIndicator1.Enabled :=False; end; procedure TForm1.Button1Click(Sender: TObject); begin Bluetooth1.DiscoverDevices(10000); AniIndicator1.Enabled :=True; end; procedure TForm1.FormCreate(Sender: TObject); begin while not Bluetooth1.Enabled do Bluetooth1.Enabled := True; end; end. В разрешениях bluetooth, bluetooth admin, coarse location, fine location включены... 
    • От maax123
      Здравствуйте, подскажите пожалуйста , каким образом можно проверить какие из спаренных устройств bluetooth активны в данный момент. 
    • От Wovan2
      Здравствуйте.
      Пытаюсь через Tethering получить данные с удаленного приложения. Но все реализовано через события, и при наличии нескольких клиентов у меня возникла путаница, какому клиенту, что вернуть.
      Покопался в компоненте профиля и нашел функцию SendCommandWithResponse. По описанию, вроде, то, что мне нужно. Посылаю что-то конкретному профилю и получаю конкретно мне предназначенный ответ. Беда в том, я не нашел как с этим работать. Вообще про команды ничего не нашел, даже не английском.
      Похожих событий на принимающей стороне  не нашел. Ведь вызвать функцию на клиенте - пол дела. Надо чтобы сервер обработал запрос и вернул результат. Или что-то не понимаю.
      Может кто может хотя бы намекнуть в какую сторону искать.
    • От msp888
      Если Wi-Fi на телефоне работает в режиме клиента (подключается к внешней точке доступа), то как с ним работать понятно.
      Если же Wi-Fi на телефоне (ОС Android) работает в режиме персональной точки доступа, то как из программы получить свой ip-адрес и другие параметры сети.
      Кто знает, помогите, желательно исходный код на Delphi.
    • От msp888
      Если Wi-Fi на телефоне работает в режиме клиента (подключается к внешней точке доступа), то как с ним работать понятно.
      Если же Wi-Fi на телефоне (ОС Android) работает в режиме персональной точки доступа, то как из программы получить свой ip-адрес и другие параметры сети.
      Кто знает, помогите, желательно исходный код на Delphi.
       
    • От notricky
      Собственно поступаю я так - передаю по ссылке в процедуру reqReceiveData. 
      procedure TFMain.reqReceiveData(const Sender: TObject; AContentLength, AReadCount: Int64; var Abort: Boolean); begin if not PgbUpdate.Visible then PgbUpdate.Visible := true; PgbUpdate.Max := AContentLength; PgbUpdate.Value := AReadCount; end; Внутри процедуры соотв создается TNetHttpClient и TNetHttpRequest
      В деплое для WIN32 - все работает, показывается прогресс-бар, все скачивается и тд. Однако в деплое для ANDROID при 
      function TFMain.RunRequest(AUrl: String = ''; ARespStream: TBytesStream = nil; OnRcvData: TReceiveDataEvent = nil): TJSONObject; begin ... c := TNetHTTPClient.Create(nil); r := TNetHTTPRequest.Create(nil); ... r.OnReceiveData := OnRcvData; //если закомментировать - все ок. Если нет - то на следующем шаге подвисон. resp := r.Get(url, ARespStream); ... end; зависает. Если закомментировать присвоение процедуры ресива, то все скачивается (только без прогресса). Процедура используется для всех версий: WIN, IOS, ANDROID,MACOS и работает исправно.
      Кто что может сообщить по данному вопросу, вдруг кто сталкивался?
    • От Pax Beach
      Возникла задача обработки телеметрии BLE маячков для построения пространственной карты.
      За пару дней собрал приложение для «ловли» маячков.
      Производится сбор всей телеметрии с маячков, которую обрабатывает компонент TBeacon. Данные можно передать в виде текста в другое приложение или отправить вложением по почте.
       
      Сейчас приложение Можно скачать в Google Play.
      Для платформ Windows качать здесь (SimpleBeaconTelemetry.exe.zip).
       
      Просьба протестировать у себя на устройствах.
      Код элементарный, если кому-то нужен, могу выложить сюда (SimpleBeaconTelemetry.zip).
       
    • От Pax Beach
      В рамках конкурса Device Lab от Google подготовил кейс «Маячки Eddystone для контроля расхода электроэнергии».
      Ознакомиться можно по ссылке — http://singro.ru/eddystone-beacons-electro-energy/ и в ближайшее время на «Хабрахабре».

      С помощью компонента TBeacon решены задачи:
      — поиск ближайших маячков;
      — работа с маячками в сервисе Android; 
      — фильтрация маячков по технологии Eddystone, ссылкам, идентификаторам.
      — привязка маячков к геокоординатам и базе данных приборов учета электроэнергии.
       
      Черпайте идеи и задавайте вопросы.
      Буду рад ответить на них.
       
      UPD:
      Наша работа заняла второе место в конкурсе Google Device Lab. Прочитать об этом можно на хабре.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...