Piasek32
#raspberrypi #nodejs #firebase #adc #ajax #javascript

Pytanie do ogarniętych mirasów. Chiałbym stworzyć stronę na której wyświetlać się będzie wartość z czujnika analogowego. Mam przetwornik ADC, skrypt w Pythonie zbierajacy dane z czujnika do zmiennej. Mam zahostowany jakiś serwer oparty o node.js w serwisie firebase.

Problem polega na tym że moja wiedza z JavaScript jest praktycznie zerowa. W pythonie biblioteka json pozwala mi wyrzucić aktualną wartość do pliku .json, stamtąd już podobno można ją jakoś pobrać, żeby odświeżała się asynchronicznie bez odświeżania strony XmlHttpRequest?

Problem polega na tym że wartość w .json odświeża mi sie dopiero jak zrobie 'firebase deploy'

Wiem że zostanę zjedzony przez chłopaków co mają AJAX'a w małym paluszku, ja jestem po Elektrotechnice i mam spore braki w programowaniu, ale chciałbym się tego nauczyć.
0
  • Najlepsze
  • Wszystkie komentarze
Lamael
@Piasek32: najprostszy sposób żeby to zrobić to wykorzystać xmlhttprequest żeby pobrać zawartość jsona, a następnie dom, żeby zawartość jsona wpisać do odpowiedniego diva w htmlu. I robić to w pętli - w ten sposób nie da się tego zrobić w pełni asynchronicznie. Jeśli chcesz asynchronicznie to poczytaj sobie o websockets - wtedy Twoja aplikacja w node.js może wpychać aktualizacje do przeglądarki, ale to wymaga napisania większej ilości kodu albo użycia
1
morsisko
@Piasek32: Nigdy nic nie robiłem w firebase, ale normalnie w raspberrypi robisz endpoint np
ip_raspberry/adc/temperature który przy wykonaniu GET zwraca aktualnego jsona z wartością z przetwornika. Teraz na stronie wystarczy że zrobisz asynchroniczny XMLHttpRequest po tego jsona i po sparsowaniu ustawisz dane w odpowiednim miejscu, chyba że zależy ci na niemal zerowym czasie reakcji na zmiany to wtedy jak wyżej, lepsze będą websockety
0
I.....t
I.....t
@Piasek32: jeśli używasz firabase możesz przechowywać dane w firestore a następnie użyć metody onSnaphot na kolekcji która chcesz obserwować co wywoła funkcje przy każdej zmianie danych, możesz uplaodaowac dane do firestore bezpośrednio z pythona
0
Piasek32
@IndieDevArt: czy możesz powiedziec coś więcej? Jaką bibliotekę zaimportować do skryptu pythona? Żeby uploadować te dane?
0
I.....t
I.....t
0
I.....t
I.....t
@IndieDevArt: jak już zrobisz upload to daj znać
0
Piasek32
Właśnie siadam i będę próbować. Jak coś zdziałam to dam znać dzięki za podpowiedź.
0
Piasek32
@IndieDevArt: Ziomeczku jesteś wielki na prawdę. Jaką to ma moc to jest po prostu piękne ja kręcę potencjometrem, a to się zmienia w konsoli firebase'a.
0
I.....t
I.....t
@Piasek32: chcesz stronę z wizualizacja do tego?
0
I.....t
I.....t
moge to zrobic w 15 minut
0
Piasek32
@IndieDevArt: stary jeżeli byłbyś w stanie podesłać źródła do czegoś takiego byłbym Ci niezmiernie wdzięczny, próbuje coś sam sklecić właśnie. Jak mogę Ci się odwdzięczyć?
0
I.....t
I.....t
@Piasek32: https://firebase.google.com/docs/firestore/quickstart - jako srodowisko wybierz Web,
https://firebase.google.com/docs/firestore/query-data/listen - dokumentacja na temat live update,
możesz użyć https://parceljs.org/ jesli nie chce ci się manualnie konfigurować buildu
0
Piasek32
Próbowałem tak jak mówisz według przykładu który wyrzuca do konsoli. Niestety mam jakieś błędy że mam chyba zdublowane Initialize'y bo miałem już jakąś przykładową stronę z tego firebase'a. Dobra spróbuję skorzystać z tych odnośników. Może dzisiaj mi się uda to zmajstrować to pokaże efekty :) Jeszcze raz dzięki za poświęcony czas i za ten content. A tak z ciekawości, czym kolega zajmuje się zawodowo? ;p
0
Piasek32
Ten parcel to widzę też kozackie narzędzie ale to chyba nie wszystko na raz bo mi łeb może eksplodować :D
0
I.....t
I.....t
@Piasek32: jeszcze https://d3js.org/ do wizualizacji
0
I.....t
I.....t
@IndieDevArt: jak coś to możesz pisać na Priv
0
Piasek32
Hehe dzięki, ale Ty chyba serio chcesz żeby mi mózg r-------o ;p
0
I.....t
I.....t
@Piasek32: możesz użyć mojego repozytorium jako referencji, tylko musisz dodać firebase i podmienic dane: https://github.com/JacekRojek/JS_ML, dopiero zacząłem wiec jest w miarę proste
0