Всичко над 5-ия знак след десетичната запетая в десетични GPS-координати е безсмислено и спокойно може да се ореже.
В нашите ширини това дава ок. 3 метра линейна разлика в позицията, което е и максималната точност на стандартно гражданско GPS устройство.
Говорейки за оптимизация на предаваните данни, може да се пипне и времето - примерно да се предава като unix time.
_________________ Бутам след осмата бира
Съб Мар 27, 2021 4:02 pm
lz1fw
Регистриран на: 28 Юли 2010 Мнения: 713 Местожителство: София
dido написа:
Всичко над 5-ия знак след десетичната запетая в десетични GPS-координати е безсмислено и спокойно може да се ореже.
В нашите ширини това дава ок. 3 метра линейна разлика в позицията, което е и максималната точност на стандартно гражданско GPS устройство.
Говорейки за оптимизация на предаваните данни, може да се пипне и времето - примерно да се предава като unix time.
Всичко е така и всичко е правилно. За целите на конкретното мое забавление (щеше ми се да мога да напиша проучване, ама на този етап ще е глупаво) обаче са важни детайлите, дори когато те видимо нямат практическа стойност. Затова ми изглеждат ценни неформатираните дълги цифри, получавани от GPSlogger.
Относно времената - към момента в базата се записват цели четири времена и всяко едно от тях си тежи на мястото. Примерно за една и съща точка в един запис от базата има
time = 2021-03-28 10:10:11
timestamp = 1616915411
timeUTC = 2021-03-28T07:10:11.000Z
startTimeStamp = 1616915323
Както вече казах, за забавлението ми са ми необходими детайли. Всичко се записва в базата данни на сървъра, но на външния потребител доста детайли ще бъдат спестени. Предполагам, че така се прави във всички подобни бази данни.
Нед Мар 28, 2021 11:01 am
Николай_K
Регистриран на: 03 Фев 2021 Мнения: 129
lz1fw написа:
На тези GPS модули даните са трудни за разчитане.
Напротив, това си е стандартния NMEA протокол, който се декодира лесно - Quectel L86. Има възможност за доста настойки.
lz1fw написа:
Като гледам - работиш за Юри и Виктор. Имаш ли повиквателен знак?
Нямам повиквателен знак. Имам конструкторски клас "С" и после конструирането ми стана занаят, но не можах да се "зарибя" в комуникациите.
Защо unix time?
Пон Мар 29, 2021 12:49 pm
djogobg
Регистриран на: 28 Дек 2016 Мнения: 106
Ето и инструкциите за приложението, което намерих.
Преди всичко искам да кажа, че едно приложение на телефона не може да замести главата на раменете. Също, тъй като не съм правил аз приложението, а само работния поток, който приема, оценява и праща смс, не знам, дали няма да ви източат данните. Доколкото съм в сферата на ИТ и имам опит с програмиране, аз се доверявам на това приложение, но това си е лично моя преценка. Отделете време и се запознайте с често задаваните въпроси, както и с документацията на страницата на създателите на приложението: https://llamalab.com/automate/doc/faq.html
Тъй или иначе, за всеки достъп, който трябва, ще бъдете попитани. Като цяло трябват три достъпа: да може да приема, чете и изпраща СМС, да може да чете файлове от устройството(за да заредите модулите) и да може да достъпва ГПС. Останалите достъпи, дори и да ги иска, спокойно можете да ги откажете.
Ето и стъпките:
1. Инсталирайте си приложението "Automate"от PlayStore, няма го за iPhone.
https://drive.google.com/file/d/1_5TupzdAV_jiXRLzpSrPQgZZZ4H5bfBN/view?usp=sharing
3. Отворете новоинсталираното приложение "Automate". Вътре ще има списък с предварително сложени модулчета(flow на английски, но лирически нека ги наричаме модули). Аз ги поразчистих и моят списък изглежда така(ако един модул не е стартиран няма какво да ви притеснява, така че може да си ги оставите):
https://drive.google.com/file/d/1j-Yxucj-7f1CYJJOBNJAazzt2AgdlIJQ/view?usp=sharing
7. С натискане върху модула, ще влезете в неговото меню. Тук важни са бутонът за стартиране горе и бутонът за редакция - долу. Ако директно изберете бутонът за стартиране, ще се зареди приготвеният от мен работен поток, който чака дума "gpslocate" или "Gpslocate" получена като СМС от който и да е номер. При полуаване на този смс, ако е пуснат ГПС приемника, ще върнете обратно СМС с координати, точност на локацията в метри, процент батерия и линк към google maps. Ако ГПС приемника не е пуснат, ще върнете обратно СМС с процент батерия и съобщение, че ГПС не е пуснат.
https://drive.google.com/file/d/1g49npgpp_3lJbgkZk-SLIF5x8XW2yVCe/view?usp=sharing
8. Ако сте избрали бутон за редакция ще видите следната картинка.
8.1. Ако натиснете на оградения в зелено елемент, ще може да ограничите номерата, които ще могат да задействат потока чрез СМС(примерно само някой близък).
8.2. Ако натиснете на някой от оградените в червено елементи, ще можете да промените кодовите думички, които са разрешени в потока.
8.3. Ако искате, може да клонирате този поток и да си поиграете, да направите по-обхватен поток с допълнителни блокове. Аз съм го направил доста минималистичен с идеята а не се харчи много батерия(макар и не за сметка на точността на локацията, всеки път взима свежа позиция) и да няма много неща, които да се объркат.
8.4. Промените на елементите трябва да бъдат потвърждавани с apply, а промените в модула/потока се запазват автоматично, така че при излизане от него не се губят.
https://drive.google.com/file/d/1lPpwET9nIGSZxSKOYxZAYikJVQCb9v8l/view?usp=sharing
9. Ето този екран ще се появи, когато стартирате модула. Оградено в червен правоъгълник е съобщението, на кой елемент в момента е заседнал потокът. Очевидно в момента чака смс. Няма проблем да излезете от приложението, то ще върви на заден план(run in background)
https://drive.google.com/file/d/1TLfVNsLvfxc8mpmvQMoyE_xwPdYiJXdN/view?usp=sharing
12. Ако след успешен СМС влезете в приложението и в модула, ще видите в лог файла, кои стъпки са минали. Ако сами сте си пратили СМС-а за локиране не се чудете, че потокът е стартиран два пъти - нали освен съобщението с gpslocate сте получили и съобщение с координати, което сте пратили на себе си в отговор.
https://drive.google.com/file/d/1V9ILadU-ROER95ieTjHKXMf1-LpEL7To/view?usp=sharing
13. За да спрете модула, е достатъчно или от лентата с нотификации да изберете "stop all" или да влезете в приложението и в модула и да го спрете от там.
Ако разцъкате настройките на самото приложение можете да ограничите колко СМС-а могат да се пращат на 12 часа, за да не ви набъбне сметката.
Също така, може да се направи модул, който на всеки 30 минути(или друг период от време), да изпраща СМС с координати на определен номер. Това вече ще товари батерията и сметката доста, но е възможно да се направи.
Надявам се а съм бил полезен, при въпроси ще отговарям, доколкото мога.
Пон Мар 29, 2021 10:35 pm
dido
Регистриран на: 03 Яну 2007 Мнения: 6374
Николай_K написа:
Защо unix time?
С 8 символа предаваш време като дата и час с резолюция 1 секунда.
Има също предимства ако ще ползваш времето машинно - да смяташ отмествания, да сравняваш времена и прочее.
_________________ Бутам след осмата бира
Вто Мар 30, 2021 11:41 am
Николай_K
Регистриран на: 03 Фев 2021 Мнения: 129
dido написа:
Николай_K написа:
Защо unix time?
С 8 символа предаваш време като дата и час с резолюция 1 секунда.
Има също предимства ако ще ползваш времето машинно - да смяташ отмествания, да сравняваш времена и прочее.
Предавам датата и часа с 6 байта във вида 0xYYMMDDHHMMSS. Ако трябва юникс време - сървъра да си го смята.
Вто Мар 30, 2021 5:16 pm
lz1fw
Регистриран на: 28 Юли 2010 Мнения: 713 Местожителство: София
Николай_K написа:
dido написа:
Николай_K написа:
Защо unix time?
С 8 символа предаваш време като дата и час с резолюция 1 секунда.
Има също предимства ако ще ползваш времето машинно - да смяташ отмествания, да сравняваш времена и прочее.
Предавам датата и часа с 6 байта във вида 0xYYMMDDHHMMSS. Ако трябва юникс време - сървъра да си го смята.
Малко се позагубихте в материята.
UNIX датата се изписва с десет символа (цифри). Пример: 30.03.2021 18:00:00 се изписва като 1617127200 в UNIX формат.
Ако 30.03.2021 18:00:00 преобразуваме като UNIX дата (1617127200) и я предадем като шестнайсетично число, то ще е 0x60636720 и ще заеме четири байта.
Вто Мар 30, 2021 5:55 pm
Николай_K
Регистриран на: 03 Фев 2021 Мнения: 129
lz1fw написа:
Николай_K написа:
dido написа:
Николай_K написа:
Защо unix time?
С 8 символа предаваш време като дата и час с резолюция 1 секунда.
Има също предимства ако ще ползваш времето машинно - да смяташ отмествания, да сравняваш времена и прочее.
Предавам датата и часа с 6 байта във вида 0xYYMMDDHHMMSS. Ако трябва юникс време - сървъра да си го смята.
Малко се позагубихте в материята.
UNIX датата се изписва с десет символа (цифри). Пример: 30.03.2021 18:00:00 се изписва като 1617127200 в UNIX формат.
Ако 30.03.2021 18:00:00 преобразуваме като UNIX дата (1617127200) и я предадем като шестнайсетично число, то ще е 0x60636720 и ще заеме четири байта.
Ха на бас, че не можеш да а предадеш шестнайсетично. Байтовете са наистина 4.
Вто Мар 30, 2021 6:29 pm
lz1fw
Регистриран на: 28 Юли 2010 Мнения: 713 Местожителство: София
Николай_K написа:
lz1fw написа:
Николай_K написа:
dido написа:
Николай_K написа:
Защо unix time?
С 8 символа предаваш време като дата и час с резолюция 1 секунда.
Има също предимства ако ще ползваш времето машинно - да смяташ отмествания, да сравняваш времена и прочее.
Предавам датата и часа с 6 байта във вида 0xYYMMDDHHMMSS. Ако трябва юникс време - сървъра да си го смята.
Малко се позагубихте в материята.
UNIX датата се изписва с десет символа (цифри). Пример: 30.03.2021 18:00:00 се изписва като 1617127200 в UNIX формат.
Ако 30.03.2021 18:00:00 преобразуваме като UNIX дата (1617127200) и я предадем като шестнайсетично число, то ще е 0x60636720 и ще заеме четири байта.
Ха на бас, че не можеш да а предадеш шестнайсетично. Байтовете са наистина 4.
Губиш баса. Шестнайсетичното число "60636720" го предавам като текст от раз и без всякакви проблеми.
Вто Мар 30, 2021 6:36 pm
dido
Регистриран на: 03 Яну 2007 Мнения: 6374
Загубихте се и двамата май.
Складира се в 4 байта. По SPI, CAN, I2C, serial или каквото си харесате там може да си го предадете с 4 байта.
По http без значение какъв е физическия пренос, може да се предаде с 8 символа - както писах.
Клетъчните мрежи едва ли някога ще покрият напълно най-слабо населените места, които са по-интересни за планинарите.
За щастие се появяват и други възможности, благодарение на които някои спътникови услуги постепенно стават доста по-достъпни за масовия потребител. Например Swarm мрежата, макар и все още не напълно изградена, вече може да бъде използвана. Месечният абонамент е $5 и включва 750 съобщения от по 192 байта. Комуникационното устройство не е особено скъпо ($119), размерите и теглото му са съпоставими с тези на кибритена кутийка, харчи 22 μA (3.3V) в спящ режим, 30-35 mA (3.3V) при приемане на данни, 888-939 mA (3.3V) при излъчване, и има вграден GNSS приемник:
Би могло да бъде създадено удобно за планинари проследяващо устройство използващо услугите на мрежа като Swarm, което при това би могло да бъде и доста по-достъпно, например, в сравнение с хардуера и услугите на SPOT (€120.53 + €11.95 месечен абонамент), и да осигурява (някой ден) съпоставимо добра свързаност и локализиране в пресечени местности. Ех мечти, мечти...!
_________________ "Caminante son tus huellas el camino y nada más;
caminante, no hay camino, se hace camino al andar." -- Antonio Machado
Сря Мар 31, 2021 12:46 am
lz1fw
Регистриран на: 28 Юли 2010 Мнения: 713 Местожителство: София
dido написа:
Загубихте се и двамата май.
Складира се в 4 байта. По SPI, CAN, I2C, serial или каквото си харесате там може да си го предадете с 4 байта.
По http без значение какъв е физическия пренос, може да се предаде с 8 символа - както писах.
и тримата се загубихме... а по http може да се предаде и с по-малко символи без загуба на прецизност.
Сря Мар 31, 2021 9:59 am
Николай_K
Регистриран на: 03 Фев 2021 Мнения: 129
lz1fw написа:
Губиш баса. Шестнайсетичното число "60636720" го предавам като текст от раз и без всякакви проблеми.
Да, ама не! "60636720" е стринг.
Сря Мар 31, 2021 10:43 am
lz1fw
Регистриран на: 28 Юли 2010 Мнения: 713 Местожителство: София
Николай_K написа:
lz1fw написа:
Губиш баса. Шестнайсетичното число "60636720" го предавам като текст от раз и без всякакви проблеми.
Да, ама не! "60636720" е стринг.
На никого не му пука. Имаш данни в точка А. Задачата е да стигнат без загуби в отдалечена точка Б за време В. В точка А данните тръгват като шестнайсетично число, в точка Б са получени като същото шестнайсетично число.
Останалото е даскалски манталитет за късане по изпити.
Сря Мар 31, 2021 10:57 am
vladofff
Регистриран на: 26 Апр 2011 Мнения: 3039
lz1fw написа:
Николай_K написа:
lz1fw написа:
Губиш баса. Шестнайсетичното число "60636720" го предавам като текст от раз и без всякакви проблеми.
Да, ама не! "60636720" е стринг.
На никого не му пука. Имаш данни в точка А. Задачата е да стигнат без загуби в отдалечена точка Б за време В. В точка А данните тръгват като шестнайсетично число, в точка Б са получени като същото шестнайсетично число.
Останалото е даскалски манталитет за късане по изпити.
Може би няма да е проблем, ако става дума за едно нещо, ако са милиард и една данни обаче, след събирането им на едно място дали няма да се губи време и ресурс за парсването им от стринг в съответен друг тип.
Веднъж ми правиха забележка, че съм използвал такъв подход - имах проблеми с дата/тайм формати от/към база данни ми въртеше номера. След като ми писна, направих точно това простовато действие - данните през .ToString() и нещата се оправиха... Само, че после се забавял процеса, защото при парсването обратно в нужния тип се искало време, а това можело да се избегне. Да не би това да е проблемът?
Не Можете да пускате нови теми Не Можете да отговаряте на темите Не Можете да променяте съобщенията си Не Можете да изтривате съобщенията си Не Можете да гласувате в анкети