[Android] WheelLog - приложение для моноколес, теперь и Inmotion.

Автор palachzzz, 07 Авг. 2017 в 16:58

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

palachzzz

Исходники вилога на гитхабе, ссылка на первой странице этой темы, там есть все протоколы, проще всего использовать от гота или кинга, но чтобы приложение поняло что это за колесо - нужен БТ модуль от Кинга / Гота (на тех же чипах), т.к. детект протокола осуществляется по анонсируемым характеристикам устройства (решение кривое, но в целом работает). Модули bt le нужны, вряд-ли они у вас завалялось. Если будут вопросы по реализации протоколов можно в личку
Ninebot Z10#1 pro mod - 9000+ км | Z10#2 - 1900+ км на дикой покрышке
GW Tesla 1260Wh mod - 3000+ км (у жены)
Inmotion V5F Black (480Wh mod) & White (480Wh mod) - у детей | Inmotion V8 1050Wh mod - 6000+ км (на пенсии)

serg.k

#631
А вот вопрос интересный предлагаю обсудить. Кто чем логи обрабатывает? Какие особенности выявляет?

Я пока только загрузчик написал для Octave, если кому интересно:
(UPD: поправил загрузку из-за тормозов при переаллокации)
Спойлер

function x = csvreadhdr(fn);
 
  f = fopen(fn, 'rt');
 
  s = fgetl(f);
  n_str = -1;
  while ischar(s),
   s = fgetl(f);
   n_str = n_str + 1;
  end
 
  frewind(f);
 
  s = fgetl(f);
  field_names = csvreadhdr_split_str(s,',');
  n = numel(field_names);
  data = cell(n, n_str);
 
  i = 1;
  s = fgetl(f);
  while ischar(s),
    data(:, i) = csvreadhdr_split_str(s,',');
    i = i + 1;
    s = fgetl(f);
  end
   
  fclose(f);
 
  x = struct();
  for i = 1:n,
    x = setfield(x, field_names{i,1}, csvreadhdr_convert({data{i,:}}));
  end
endfunction


function sc = csvreadhdr_split_str(s, sep);
  det = s == sep;
  n = sum(det);
  ind = [0 find(det)];
  sc = cell(n, 1);
  for i = 1:n,
    sc{i,1} = s((ind(i)+1):(ind(i+1)-1));
  end;
endfunction

function x = csvreadhdr_convert(c);
  q = c{1,1};
  if (sum(q == '-') == 2) && (sum(q == 'e') == 0) && (sum(q == 'E') == 0),
    % day
    x = nan(size(c));
    for i = 1:numel(c)
      s = csvreadhdr_split_str([c{1,i} '-'], '-');
      x(1,i) = datenum(str2num(s{1,1}), str2num(s{2,1}), str2num(s{3,1}));
    end
  elseif sum(q == ':') == 2,
    % time in units of days
    x = nan(size(c));
    for i = 1:numel(c)
      s = csvreadhdr_split_str([c{1,i} ':'], ':');
      x(1,i) = (str2num(s{1,1}) + str2num(s{2,1})/60 + str2num(s{3,1})/3600) / 24;
    end
  elseif ~isempty(str2num(q)),
    % genegal numbers
    x = nan(size(c));
    for i = 1:numel(c)
      x(1,i) = str2num(c{1,i});
    end
  else
    x = c;
  end
endfunction

Пример использования (построить графики):
x = csvreadhdr('/home/user/InmotionV8/logs/V8-30/2018_10_24_19_43_03.csv');
t = (x.date + x.time) .* 24 .* 60; t = t - t(1);
figure; plot(t, x.speed, '-b', t, x.voltage, '-g', t, x.current, '-r'); grid on; zoom on;

Результат:
Спойлер



Теперь хочется что-то более интересное запилить  ;-)
Что вообще интересного в этих логах люди ищут, какие взаимосвязи выявляют?



LEE4ER

Цитата: serg.k от 01 Нояб. 2018 в 02:16Что вообще интересного в этих логах люди ищут, какие взаимосвязи выявляют?
Если про готвей, то самое частое и очевидное, это поведения при продавах или каких-то пограничных состояниях. Отслеживается просадка напряжения, текущий ток и скорость. При этом нужно сравнивать с предыдущими значениями напряжения и тока, т.к. готвей пишет фвзный ток и если он резко скаканет, а напряжение упадет не очень сильно по отношению к соседним метрикам, то это значение мощности не точное и требует уточнения по отношению к соседним.
Ну а больше там особо смотреть нечего, если мы про готвей))
В общем я за порядок, но начинать с себя не вижу смысла :pardon:

serg.k

Цитата: LEE4ER от 04 Нояб. 2018 в 02:14Если про готвей
У меня Inmotion V8, стараюсь ездить аккуратно. Я и v3 ни разу не продавил за несколько лет, не то что v8. А вот airwheel Q3 - да, было один раз. Не понравилось :-)
На счёт логов. Вот, например, оценку состояния батареи никто не пробовал делать?

koloax

Цитата: Кулибин от 26 Окт. 2018 в 23:13Для справки Xiaomi Mi Note 3 6/64Gb идеально работает с Inmotion v8
Странно у меня вообще перестал коннектиться с недавнего времени, хотя с родным работает без проблем.

palachzzz

Цитата: serg.k от 04 Нояб. 2018 в 21:41На счёт логов. Вот, например, оценку состояния батареи никто не пробовал делать?
Только в ручную, но на v8 это затруднительно, т.к. напряжение компенсированное передается
Ninebot Z10#1 pro mod - 9000+ км | Z10#2 - 1900+ км на дикой покрышке
GW Tesla 1260Wh mod - 3000+ км (у жены)
Inmotion V5F Black (480Wh mod) & White (480Wh mod) - у детей | Inmotion V8 1050Wh mod - 6000+ км (на пенсии)

Андрей01

@palachzzz хотелось бы попросить  дополнить функцию вибрации в Alarm settings (при превышении установленной скорости, тока или температуры) показом уведомления(notification). Нужно добавить возможность получать уведомление(notification) одновременно с вибрацией, тогда можно будет пользоваться многими дешевыми смарт часами. То есть при превышении установленной скорости телефон вибрирует и появляется уведомление, при снижении скорости ниже установленной оно исчезает, уведомления легко транслируются на смарт часы и часы таким образом будут вибрировать при превышении скорости. В идеале дать выбор: 1. показывать одно уведомление и держать его пока скорость превышена. 2. каждые пол секунды показывать и убирать уведомление, снова показывать и убирать... тогда часы будут вибрировать все время пока превышена скорость. второй вариант предпочтительней. Тогда каждый у кого есть, например, Mi Band сможет знать о превышении скорости/тока/температуры.

marvv

Цитата: Андрей01 от 20 Нояб. 2018 в 12:14В идеале дать выбор........................о превышении скорости/тока/температуры.
в идеале тогда есть смысл продумать, кол-во показов/скрытий уведомлений для разных превышений ;)

analyt

Цитата: serg.k от 21 Окт. 2018 в 20:44
Для связи с колесом используется технология BLE. Она есть в спецификации blutooth начиная с 4.0. Однако, BLE требует специфической аппаратной части, поэтому, даже если в прошивке телефона/планшета версия blutooth >= 4.0, но BT модуль (микросхема) не поддерживает BLE, то связи не будет. К сожалению, это можно достоверно узнать только опытным путём.
а вот как быть в такой ситуации - после перехода на 8 андроид программа коннектится сразу после запуска легко, а после потери соединения (по расстоянию, к примеру) и паузы в 5-10 минут соединения приходится восстанавливать вручную. Если пауза была короткая - с минуту, то автосоединение срабатывает само.
На предыдущих версиях андроида 6 и 7 можно было довольно долго ходить вдали от колеса и по приближении к нему соединение всегда восстанавливалось.
колесо Gotway Monster.
Я так понимаю что система сама "гасит" блютуз в целях энергосбережения ? тогда можно ли продлить период ожидания ?

advocate

Почитал и тихо охреневаю. Я тут один не знаю, как вообще открыть эти настройки в приложении? Три экрана, меняем смахиванием. А настройки то где?  :wf:
v8 - 1800км., продолжаем.
v10F - 400 км, продолжаем

Deimos

[user]advocate[/user], как вы шторку сверху вниз тяните, так у тут -- с самого левого края -- тянем вправо... И, очудо!.. многовсякихплющек, вдруг :)
Kingsong 16S ==> `12000 km, Inmotion V11 ==> 6000 km

Elsick

Всем привет, надоели глюки родного приложения кинсонг, а новое даже не на английском, а хочет мои контакты читать и звонки названивать. Что за мода пошла!?
А всего-то хотелось писки настраивать.
Вот я немного допилил Wheellog.
Все изменения только для KS. Добавлены ползунки настройки писков и распознавание ответов от колеса и обновление этих ползунков.
У меня вроде работает - пишите что не так.
Если владельцы других колес потестят - будет здорово.
Ks-16s

palachzzz

Цитата: Elsick от 09 Март 2019 в 18:46
Всем привет, надоели глюки родного приложения кинсонг, а новое даже не на английском, а хочет мои контакты читать и звонки названивать. Что за мода пошла!?
А всего-то хотелось писки настраивать.
Вот я немного допилил Wheellog.
Все изменения только для KS. Добавлены ползунки настройки писков и распознавание ответов от колеса и обновление этих ползунков.
У меня вроде работает - пишите что не так.
Если владельцы других колес потестят - будет здорово.
Ну наконец то кто то это сделал)))  :dance:
Кодом поделитесь?) если оно не ломает остальные колеса, добавлю в общую ветку.
Ninebot Z10#1 pro mod - 9000+ км | Z10#2 - 1900+ км на дикой покрышке
GW Tesla 1260Wh mod - 3000+ км (у жены)
Inmotion V5F Black (480Wh mod) & White (480Wh mod) - у детей | Inmotion V8 1050Wh mod - 6000+ км (на пенсии)

Никола Питерский

Привет знатокам, приобрел недавно V8, попытался подключиться через родное приложение и получил отказ "не действительное имя пользователя или пароль" . Блютуз к колесу подключается, все по инструкции делаю но увы...  Установил  приложение Wheeilod, сразу подключилось. По настройкам полазил чуть-чуть.
Английским  не почти владею. Подскажите пожалуйста, через это приложение можно менять цветовую схему на колесе? И если можно то как? Как включать и выключать фару и подсветку понял, а что то с цветовой схемой делать возможно?
Заранее благодарю, за советы.
   

Elsick

#644
[user]palachzzz[/user],  Все на гитхабe, последний форк.
Решил немного подождать с pull request, пока кто нибудь ещё не потестит. Это мой дебют андроид разработки.
Ks-16s

borisvit

#645
так как же все таки общаться с приложением не зная английского языка? может кто нибудь поможет с переводом (описанием функций) меню настроек? выложите пожалуйста! буду просто счастлив (почему то кажется, не я один)!

Никола Питерский

Тоже поддерживаю. Маленькая шпоргалга очень поможет.

Elsick

Яндекс переводчик или гугл, делаете скриншот экрана и открываете в программе переводчика.

Ks-16s