Vypsání dat na www stránce

Karel.V

Vypsání dat na www stránce
« kdy: 12. 07. 2018, 08:16:57 »
Dobrý den všem tadý.
Bych se chtěl zeptat, když mam v raspberry 5 teplotních čidel.
Hodnotný se ukládají do 5 textových souboru.
Udělal jsem na ně symlink, takže mam na ně přistup z /var/www/
Vypsat hodnoty přes PHP - fread jsem už zkoušel.
Jak složité by bylo ty hodnoty vypisovat tak, aby se třeba co 5 vteřin aktualizovaly?
Děkují Karel.

« Poslední změna: 12. 07. 2018, 09:04:08 od Petr Krčmář »


Rafael Trifon

Re:Jak vypsat data na www strance
« Odpověď #1 kdy: 12. 07. 2018, 09:12:25 »
Bude nutné použít JavaScript. Následující kód refreshne stránku po 5 sekundách (5000 ms), tím by se měly znovu načíst hodnoty za serveru. Čistší by samozřejmě bylo použít AJAX, aby se nenačítala celá stránka, ale pouze data, která se mění. To by se mi však nevešlo do jednoho řádku  :)

Považuj to spíš za takové postrčení k cíli.
Kód: [Vybrat]
<script>
     setTimeout(function(){ location.reload(true)}, 5000);
</script>

Karel.V

Re:Vypsání dat na www stránce
« Odpověď #2 kdy: 12. 07. 2018, 09:19:30 »
A nějaký odkaz, jak na to přes ten AJAX?
Nemusí to být na jednom řádku  ;)

Rafael Trifon

Re:Vypsání dat na www stránce
« Odpověď #3 kdy: 12. 07. 2018, 09:29:59 »
Odkaz např. zde: https://api.jquery.com/jquery.get/
Viděl bych to nějak takto:

Kód: [Vybrat]
<script>
    setInterval(function(){
      $.get( "teplota/cidlo1.php", function( data ) {
          $( "#teplota1" ).html( data );
      });
   }, 5000);
</script>

teplota/cidlo1.php je url, kde bude dostupná teplota z 1. čidla
#teplota1 je id html elementu, kde se bude zobrazovat teplota
Využívá se knihovna jQuery

Boo

Re:Vypsání dat na www stránce
« Odpověď #4 kdy: 13. 07. 2018, 08:48:28 »
Refresh lze udelat i bez JavaScriptu pres html <meta> tag v hlavicce, viz dokumentace: https://www.w3schools.com/tags/att_meta_http_equiv.asp


Vlado

Re:Vypsání dat na www stránce
« Odpověď #5 kdy: 17. 07. 2018, 11:59:08 »
Hlavne to nerieš cez meta http-refresh, to ti obnoví celú stránku a to je trápne. Krok číslo 1. - vieš to ukladať inam? Napríklad do databázy a nie do piatich rôznych súborov? To je totiž nezmysel číslo jedna.

JednorazovyNick

Re:Vypsání dat na www stránce
« Odpověď #6 kdy: 17. 07. 2018, 12:54:28 »
Ahoj, me "tohle bastleni" nedavno taky chytlo :) Ale v mem pripade uplne postacuje meta http-refresh, protoze data z cidel nacitam jednou za pet minut v ruznych intervalech a na te www strance mam data jen z tech cidel. Takze ji necham pomoci meta tagu aktualizovat celou jednou za dve minuty ;) A to jeste premyslim, ze bych interval mereni prodlouzil z peti na patnact minut a refresh www umerne taky. Muzu se zeptat, co a kde meris, ze "potrebujes" aktualizaci co pet sekund? Opravdu me to zajima, protoze me napadlo akorat to, ze delas nejakou sondu na "propecenost steaku", kde jde opravdu o vterinky  ;D

SB

Re:Vypsání dat na www stránce
« Odpověď #7 kdy: 17. 07. 2018, 13:22:35 »
...Krok číslo 1. - vieš to ukladať inam? Napríklad do databázy a nie do piatich rôznych súborov? To je totiž nezmysel číslo jedna.

Pochopil jsem to tak, že v každém souboru je JEDINÁ, aktuální hodnota (soubor může ležet např. v tmpfs). Zde je DB na hovno.

Jenda

Re:Vypsání dat na www stránce
« Odpověď #8 kdy: 17. 07. 2018, 13:56:25 »
Pochopil jsem to tak, že v každém souboru je JEDINÁ, aktuální hodnota (soubor může ležet např. v tmpfs). Zde je DB na hovno.
Pro domácí bastlení to asi nevadí, ale jinak je to nespolehlivé - když přepisuješ obsah souboru, tak se typicky nejdřív zkrátí na nulovou velikost a až potom se v něm objeví nový obsah (lze to obejít tím, že vytvoříš nový soubor celý a pak ho přejmenuješ). Takže tam máš race, kdy ti webserver může naservírovat prázdný soubor.

Vlado

Re:Vypsání dat na www stránce
« Odpověď #9 kdy: 17. 07. 2018, 13:56:46 »
Bez DB musíš preprogramovávať frontend s každým novým čidlom, nemáš históriu teplôt, a pod. Súbor je k hovnu. Obzvlášť zvlášť súbor pre každé čidlo,  obzvlášť s jedinou hodnotou.

souhlas

Re:Vypsání dat na www stránce
« Odpověď #10 kdy: 17. 07. 2018, 13:57:02 »
Ahoj, me "tohle bastleni" nedavno taky chytlo :) Ale v mem pripade uplne postacuje meta http-refresh, protoze data z cidel nacitam jednou za pet minut v ruznych intervalech a na te www strance mam data jen z tech cidel. Takze ji necham pomoci meta tagu aktualizovat celou jednou za dve minuty ;) A to jeste premyslim, ze bych interval mereni prodlouzil z peti na patnact minut a refresh www umerne taky. Muzu se zeptat, co a kde meris, ze "potrebujes" aktualizaci co pet sekund? Opravdu me to zajima, protoze me napadlo akorat to, ze delas nejakou sondu na "propecenost steaku", kde jde opravdu o vterinky  ;D
taky jsem si rikal, ze pri mereni teploty mit refresh 5 vterin je celkem zajimave, ale proc ne, treba pripravuje nejakou platformu, kde jde predevsim o performance ;]

ET

Re:Vypsání dat na www stránce
« Odpověď #11 kdy: 17. 07. 2018, 17:10:33 »
btw: neni to univerzalni reseni a nemam odzkousene, ale opakovaneho obnovovani lze dosahnout i doplnkem do browseru  ;) (kdyby se nechtelo bastlit)

Re:Vypsání dat na www stránce
« Odpověď #12 kdy: 17. 07. 2018, 19:32:06 »
Pochopil jsem to tak, že v každém souboru je JEDINÁ, aktuální hodnota (soubor může ležet např. v tmpfs). Zde je DB na hovno.
Pro domácí bastlení to asi nevadí, ale jinak je to nespolehlivé - když přepisuješ obsah souboru, tak se typicky nejdřív zkrátí na nulovou velikost a až potom se v něm objeví nový obsah (lze to obejít tím, že vytvoříš nový soubor celý a pak ho přejmenuješ). Takže tam máš race, kdy ti webserver může naservírovat prázdný soubor.

Nebo může ten soubor zamykat (ale zase si zadělává na problém, pokud se soubor z nějakého důvodu neodemkne).

andrej

Re:Vypsání dat na www stránce
« Odpověď #13 kdy: 18. 07. 2018, 14:11:08 »
ja by som si spravil staticku stranku, rozdelil ju do dvoch suborov:

zaciatok.html:
Kód: [Vybrat]
<html>
<head>
<meta http-equiv="refresh" content="5">
</head>
<body>
Hodnoty:
<ol>

koniec.html:
Kód: [Vybrat]
</ol>
</body>
</html>

napisal by som jednoduchy spajaci skript

script.sh:
Kód: [Vybrat]
#!/bin/bash
cd /var/www/html/senzory/
cat zaciatok.html > index.html
for FILENAME in val1 val2 val3 val4 val5
do
echo "<li>" >> index.html
cat /var/www/html/senzory/$FILENAME >> index.html
echo "</li>" >> index.html
done
cat koniec.html >> index.html
kde /var/www/html/senzory/val1..5 su tie nalinkovane hodnoty.

Potom by som napisal nekonecny updatovac (ulozit tam kde je script.sh)

updatovac.sh:
Kód: [Vybrat]
while true; do ./script.sh & sleep 5; done
Potom treba len spustit updatovac.sh a v browseri otvorit http://server/senzory/

Vyhody: ziadny javascript na klientovi (meta refresh tag funguje na vsetkom); ziadne desiatky (php) alebo stovky (nodejs, java) megabajtov na aplikacny server na serveri; samostatne konfigurovatelny refresh klientov; samostatne konfigurovatelny refresh suboru na serveri; minimalizmus
Nevyhody: update serveroveho suboru pobezi aj ked ho ziadny klient nebude chciet precitat; potreba spustit updater (da sa nalinkovat do nejakeho systemoveho startup scriptu)

Jenda

Re:Vypsání dat na www stránce
« Odpověď #14 kdy: 18. 07. 2018, 14:54:34 »
Kód: [Vybrat]
while true; do ./script.sh & sleep 5; done

Kód: [Vybrat]
while true; do ./script.sh; sleep 5; donenebo
Kód: [Vybrat]
while sleep 5; do ./script.sh; done.

Tohle tvoje dělá podivnosti se spouštěním na pozadí.