Portál AbcLinuxu, 8. května 2025 02:46

Dotaz: gps z mqtt do webové mapy

22.4.2020 18:14 Dave
gps z mqtt do webové mapy
Přečteno: 447×
Odpovědět | Admin
Ahoj, nevím, jestli tady budete někdo vědět, ale za zeptání nic nedám. Přes mqtt tahám v intervalech GPS data
17:06:30 MQT: tele/tasmota11/SENSOR = {"Time":"2020-04-22T17:06:30","GPS":{"lat":49.6576775,"lon":14.8448012,"alt":286.337,"hAcc":5.043,"vAcc":7.095},"FLOG":{"rec":0,"mode":0,"sec":0}}
A chtěl bych to cpát do mapy (třeba google maps nebo seznam), nevíte případně, jak to udělat? Díky díky.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 22.4.2020 19:03 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Viz https://leafletjs.com/examples.html. Udělej statickou HTML stránku a souřadnice vygeneruj do JSON souboru, který pak šoupneš do mapy podle tutoriálu. Mělo by to být jen několik málo řádků Javascriptu.
Hello world ! Segmentation fault (core dumped)
22.4.2020 19:13 Dave
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
super! Moc díky :)
22.4.2020 19:30 Dave
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě mě napadá jedna věc, ale nejsem linuxák, takže potřebuju pomoc. Mám výstup
{"Time":"2020-04-22T17:06:30","GPS":{"lat":49.6576775,"lon":14.8448012,"alt":286.337,"hAcc":5.043,"vAcc":7.095},"FLOG":{"rec":0,"mode":0,"sec":0}}
A potřebuju z toho sestavit url https://maps.google.com?q=49.6576775,14.8448012. Nevím, jak je to složité a jestli to vůbec lze...
Gréta avatar 22.4.2020 20:18 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy

všecko de a neni to jako vo linuxu :O :O :D :D ;D

takle třeba jakoby namaštěný v tamtom javascripru :O ;D

 

//předpokládám že máš string
var input = '{"Time":"2020-04-22T17:06:30","GPS":{"lat":49.6576775,"lon":14.8448012,"alt":286.337,"hAcc":5.043,"vAcc":7.095},"FLOG":{"rec":0,"mode":0,"sec":0}}';

//převedeme string na json objekt
json = JSON.parse(input);  

//nóóóó a uděláme string tý tvý url :D
var url="https://maps.google.com?q="+json.GPS.lat+","+json.GPS.lon;
      
//nakonec vypišeme do webový konzole abysme viděli jestli to jako vubec funguje :O ;D
console.log("url: "+url);
nóóóó a takle třeba uplně stejně v pythonu
import json

input = '{"Time":"2020-04-22T17:06:30","GPS":{"lat":49.6576775,"lon":14.8448012,"alt":286.337,"hAcc":5.043,"vAcc":7.095},"FLOG":{"rec":0,"mode":0,"sec":0}}'
d = json.loads(input)
url="https://maps.google.com?q="+str(d['GPS']['lat'])+","+str(d['GPS']['lon']);
print("url: "+url)
22.4.2020 20:24 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Úplne hlúpy spôsob:
echo '{"Time":"2020-04-22T17:06:30","GPS":{"lat":49.6576775,"lon":14.8448012,"alt":286.337,"hAcc":5.043,"vAcc":7.095},"FLOG":{"rec":0,"mode":0,"sec":0}}' \
| sed -e 's,^.*lat":,https://maps.google.com?q=,' -e 's/"lon"://' -e 's/,"alt".*$//'
Josef Kufner avatar 22.4.2020 23:55 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
To je asi to nejhorší, co s tím můžeš udělat.
Hello world ! Segmentation fault (core dumped)
Jendа avatar 23.4.2020 06:24 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Tohle je blbé že se rozbije když se pořadí klíčů změní (což se jakoby může stát). Lepší je si to nejdřív předzpracovat pomocí jq a až potom dělat to lepení:
echo '{"Time":"2020-04-22T17:06:30","GPS":{"lat":49.6576775,"lon":14.8448012,"alt":286.337,"hAcc":5.043,"vAcc":7.095},"FLOG":{"rec":0,"mode":0,"sec":0}}' | jq ".GPS.lat, .GPS.lon"
23.4.2020 07:49 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Na druhej strane to zafunguje aj keď nemáš jq či keď nechceš na systém ťahať python kvôli dvom riadkom kódu.
22.4.2020 21:02 Dave
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky moc za návrhy a motivaci, mezitím jsem si zatím zbastlil tohle a funguje to :)
#!/bin/bash

gps=$(/usr/bin/mosquitto_sub -h 10.0.10.1 -t +/tasmota11/SENSOR -v -C 1)

lat=`echo $gps | grep -o -P '(?<=lat":).*(?=,"lon)'`
lon=`echo $gps | grep -o -P '(?<=lon":).*(?=,"alt)'`

echo https://maps.google.com?q="$lat","$lon"
22.4.2020 22:06 Dave
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Nevíte ještě, prosím, jak udělat stránku, která se mi přesměruje na tu vygenerovanou adresu, kterou uložím dejme tomu do souboru?
Josef Kufner avatar 23.4.2020 00:26 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Příloha:
Vykašli se na grep a prostě vygeneruj HTML soubor. Gréta už ti ukázalo jak do takového HTML dostat data. Dokonce to jde jednodušeji, neboť JSON je validní JavaScript.
#!/bin/bash
gps=$(...)

cat >mapa.html <<eof
<html>
 ...
<script>
  var gps = $gps;
  ...
</script>
</html>
eof
Tímto dostaneš do výsledného HTML ten kus dat a pak už si s tím můžeš hrát dle libosti. V příloze je celý skript na vygenerování jednoduché mapy se špendlíkem.
Hello world ! Segmentation fault (core dumped)
23.4.2020 07:46 Dave
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Tak tohle je neskutečná pecka... mám se co učit:) Mooooooc díky pánové!
23.4.2020 11:59 JSOB | skóre: 17 | blog: JSOB
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě by šlo ty GPS ukládat do Postgisu a vykreslovat pomocí lizmapu, který má dalších plno funkcí.
25.4.2020 22:07 Vašek
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mě by docelo zajímalo, jestli je možný do těch seznam map cpát souřadnice tak, aby vykreslovaly trasu. Mám GSM GPS a pokud si to vyžádám, posílá mi každou minutu sms se souřadnicema. Ty si přes GSM bránu ukládám do texťáku do sloupce.
Jendа avatar 25.4.2020 22:24 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Vyrob z toho GPX (stačí obalit vhodnými tagy) a pak tohle.
26.4.2020 00:26 Vašek
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Tak jsem gpx vyrobil ručně a funguje to. Nevím si ale rady s tím, jak generovat soubor automaticky. Můžete mi prosím poradit?
26.4.2020 00:43 Vašek
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Příloha:
Tady je gpx soubor a soubor se souřadnicema, do kterého potřebuju dostávat další souřadnice nebo spíš vždycky aktualizovat textovým souborem, kde jsou souřadnice pod sebou:
49.9277237 14.2883905
49.9277363 14.2883125
49.9275056 14.2883530
49.9273289 14.2884425
A po minutě přibývají další.
Josef Kufner avatar 26.4.2020 12:16 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Nauč se programovat. Stačí jen základy. Projdi si nějaký hezký tutoriál (třeba k Pythonu nebo PHP, pokud budeš dělat webové věci) a věnuj tomu jeden víkend. Tento převod z jednoho formátu do jiného je docela hezká úloha do začátku. Je to o jednom cyklu nad řádky souboru a formátování výpisu, což lze spíchnout za minutku či dvě, ale pokud nebudeš chápat základy, tak se nehneš a budeš se zasekávat na trivialitách.
Hello world ! Segmentation fault (core dumped)
Jendа avatar 26.4.2020 12:23 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Nebo shell (což se obecně hodí v rámci schopnosti ovládat efektivně svůj počítač), viz ten můj sed níže.
Josef Kufner avatar 26.4.2020 12:30 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Shell je právě to, co se do začátku vůbec nehodí. Na pochopení sedu je potřeba umět programovat, chápat regulární výrazy, což vyžaduje lehký úvod do gramatik a automatů. Na zvládnutí shellu je potřeba chápat jeho záludnosti, které jsou hned na povrchu. Bez základů programování v něčem kultivovaném si s shellem tak leda vypíchne oko.
Hello world ! Segmentation fault (core dumped)
Jendа avatar 26.4.2020 00:44 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Já prostě vytisknu hlavičku, pak tisknu jednotlivé body a nakonec patičku

Pokud je to v texťáku tak bych udělal tohle (netestováno, možná bude potřeba escapovat nějaké věci v tom sedu):
echo '<?xml version="1.0" encoding="UTF-8" standalone="no" ?><gpx xmlns="http://www.topografix.com/GPX/1/1" creator="" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">'
cat soubor | sed -re 's@^@<wpt lat="@' -e 's@,@" lon="@' -e 's@$@"><name>reality</name><sym>reality</sym></wpt>@'
echo '</gpx>'
Další možnost je použít gpsbabel.
Jendа avatar 26.4.2020 00:48 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Tak dobrý, asi to funguje, jenom se musí dát substituce té čárky/mezery jako první.
26.4.2020 10:14 Vašek
Rozbalit Rozbalit vše Re: gps z mqtt do webové mapy
Děkuju, ale tohle jsem četl x krát, ale prostě nevím, kam to napasovat :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.