Soubor js dotaz – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Soubor js dotaz – JavaScript, AJAX, jQuery – Fórum – Programujte.comSoubor js dotaz – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vytvořte si vlastní webové stránky. Snadno, rychle a levně přes Saywebpage.com
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Borisek0
Stálý člen
1. 11. 2019   #1
-
0
-

Zdar.

Nějaký jednoduchý PHP a JS jsem si už občas napsal, ale toto je pro mně uplně něco noveho.

Muže mi někdo vysvětlit, proč, když to otevřu, je to jen na jednom řadku?

http://leteckaposta.cz/553284432
http://leteckaposta.cz/881529329

PS: Nepomohl by někdo?

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
2. 11. 2019   #2
-
0
-

#1 Borisek
Interpretr nepotřebuje, aby byl zdroják pěkně formátovaný. Pro zrychlení přenosu a zpracování se skripty často minifikují. Takže typicky existuje čitelná verze kódu, na které se pracuje, a z ní se generuje zhuštěná verze, která se distribuuje.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
2. 11. 2019   #3
-
0
-

Takže žadný editor mi to nesformatuje?

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
2. 11. 2019   #4
-
0
-

Podle názvu bych tipnul, že je to tween.js, takže nic přeformátovávat nemusíš.

Jinak programátosrké editory mívají funkci pro automatické formátování. A existují i online formátovače, hledej formatter, prettyfier, beautifier.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
2. 11. 2019   #5
-
0
-

  

Ja to našel tady  https://github.com/…eries-Canvas

Nepomohl by jste lamě   

<!DOCTYPE html>
<html manifest="demo.manifest"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <title>Canvas Steel</title>
</head>
<body onload="init()" style="background-color:#84a5ed">
    <table>
        <tbody><tr>
            
              
              <canvas id="canvasLinear7" width="140" height="320"></canvas>  
                
                
            </td>
        </tr>
        
        </tbody>
    </table>
    
	<script>
   
   

    function init() {
        

        

        // Define value gradient for bargraph
        var valGrad = new steelseries.gradientWrapper(  0,
                                                        100,
                                                        [ 0, 0.33, 0.66, 0.85, 1],
                                                        [ new steelseries.rgbaColor(0, 0, 200, 1),
                                                          new steelseries.rgbaColor(0, 200, 0, 1),
                                                          new steelseries.rgbaColor(200, 200, 0, 1),
                                                          new steelseries.rgbaColor(200, 0, 0, 1),
                                                          new steelseries.rgbaColor(200, 0, 0, 1) ]);      
     
        linear7 = new steelseries.Linear('canvasLinear7', {
                            width: 140,
                            height: 320,
                            gaugeType: steelseries.GaugeType.TYPE2,
                            titleString: "Thermometer",
                            unitString: "Unit",
                            threshold: 21,
                            lcdVisible: true
                            });
       

        // Start the random update
        
        setInterval(function(){ setRandomValue(linear7, 100); }, 9999);
     
    }

    function setRandomValue(gauge, range) {
        gauge.setValueAnimated(Math.random() * range);
    }
 
</script>
<script src="tween-min.js"></script>
<script src="steelseries-min.js"></script>
</body></html>

Je tam funkce setInterval, ktera vola funkci setRandomValue a ta gneruje hodnotu 0- 100 a podle ni se pohybuje teplota na budiku.

Potřeboval bych uplně odstranit tu funkci setRandomValue a misto ní načitat tu hodnotu ze souboru.

Ted si vypisuji teplotu jen jako hodnotu

<!DOCTYPE html>
<html>
<body>

<div id="demo">Žádná data :(</div>

<script>
function nactiKotel() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
      
    }
  };
  xhttp.open("GET", "shm/teplota_kotel", true);
  xhttp.send();
}

nactiKotel();

setInterval(function () {
  nactiKotel();
}, 10000);
</script>

</body>
</html>
Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
2. 11. 2019   #6
-
0
-

Tak na tom odkazu je vedle tween-min.js i tween.js. Hádej co v něm je.

A pro tuhle úpravu ho vůbec nepotřebuješ číst. Prostě místo náhodné hodnoty nastav tu svoji načtenou.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
2. 11. 2019   #7
-
0
-

To se řekne nastav   

O to se už snažim dlouho,  lama.

To že by do toho stačilo přidat tu moji funkci function nactiKotel() vim ale nějak to nzvladam.

I ten spodní skript mi psal kamoš

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
2. 11. 2019   #8
-
0
-

   

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <title>Canvas Steel</title>
    <script>
        function init() {

            // Define value gradient for bargraph
            var valGrad = new steelseries.gradientWrapper(0,
                100, [0, 0.33, 0.66, 0.85, 1], [new steelseries.rgbaColor(0, 0, 200, 1),
                    new steelseries.rgbaColor(0, 200, 0, 1),
                    new steelseries.rgbaColor(200, 200, 0, 1),
                    new steelseries.rgbaColor(200, 0, 0, 1),
                    new steelseries.rgbaColor(200, 0, 0, 1)
                ]);

            linear7 = new steelseries.Linear('canvasLinear7', {
                width: 140,
                height: 320,
                gaugeType: steelseries.GaugeType.TYPE2,
                titleString: "Thermometer",
                unitString: "Unit",
                threshold: 21,
                lcdVisible: true
            });

            nactiKotel(linear7);
            setInterval(function() {
                nactiKotel(linear7);
            }, 1000);

        }

        function nactiKotel(gauge) {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    var teplota = parseInt(this.responseText); // to mozna neni potreba
                    gauge.setValueAnimated(teplota);
                }
            };
            xhttp.open("GET", "shm/teplota_kotel", true);
            xhttp.send();
        }
    </script>
    <script src="tween-min.js"></script>
    <script src="steelseries-min.js"></script>

</head>

<body onload="init()" style="background-color:#84a5ed">
    <canvas id="canvasLinear7" width="140" height="320"></canvas>
</body>

</html>
Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Expert
2. 11. 2019   #9
-
0
-

#8 Borisek
jj stačí v setinterval nahradit tu funkci setrandomvalue nejakou vlastní kde budeš mít to tvoje načítání ze souboru..

Nahlásit jako SPAM
IP: 185.112.167.–
Borisek0
Stálý člen
2. 11. 2019   #10
-
0
-

Děkují moc   

Je tam ale nějaký problem.

Ten orginal, co jsem tu dal ukazuje na 2 desetina čisla, třeba  54.45.

V souboru teplota_kotel mám jedno 54.4 a zkoučel jsem i vytvořit nový subor teplota_kotel1 a dal do toho 54.45

Když se spustí to vykreslovaní, je to ok.

Ale když se zastaví, zustane hodnota zaokrouhlena 54.00

Nahlásit jako SPAM
IP: 95.173.82.–
Kit+14
Guru
2. 11. 2019   #11
-
0
-

#10 Borisek
Místo parseInt() dej parseFloat().

Nahlásit jako SPAM
IP: 37.188.243.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Borisek0
Stálý člen
2. 11. 2019   #12
-
0
-

Funguje.    

Děkují moc všem.

Nahlásit jako SPAM
IP: 95.173.82.–
Borisek0
Stálý člen
2. 11. 2019   #13
-
0
-

By byla ještě prozba.

Bylo by složite upravit ten spodní čiselník, aby ukazoval jen čisla s jednou desetinou čárkou?

35.4

Nahlásit jako SPAM
IP: 95.173.82.–
Kit+14
Guru
Nahlásit jako SPAM
IP: 37.188.243.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Borisek0
Stálý člen
3. 11. 2019   #15
-
0
-

#14 Kit
Tam je napsane.
Funkce Math.round() vrací hodnotu čísla zaokrouhleno na nejbližší celé číslo.
Nevim, zda jsem to dobře vysvětlil, co bych chtěl.

Připojen obráze
Z toho souboru shm/teplota_kotel si to taha  teplotu na jedno desetine čislo 32.7 ale
vykresluje to na 2 desetiná čisla 32.70

Nahlásit jako SPAM
IP: 95.173.82.–
Kit+14
Guru
3. 11. 2019   #16
-
0
-

#15 Borisek
To je pro tebe takový problém vynásobit číslo deseti, zaokrouhlit a pak zase deseti vydělit?

Nahlásit jako SPAM
IP: 37.188.241.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Borisek0
Stálý člen
3. 11. 2019   #17
-
0
-

No to asi jo, ale ktere?
V tom kodu, co tu dal gna je
var teplota = parseInt(this.responseText);
Tam už se stahuje teplota s jedním desetiným čislem  21.2,25,6,42.5, atd

Tak proč si to přidava tu nulu?

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Expert
3. 11. 2019   #18
-
0
-

#17 Borisek
no popužíváš cizí předdefinovanou šablonu kde je to nějak nadefinovaný, konkrétně jsou tam nějak nadefinovaný parametry pro labelNumberFormat, bude nejspíš potřeba nastavit setFractionalScaleDecimals.

Nahlásit jako SPAM
IP: 185.112.167.–
Borisek0
Stálý člen
3. 11. 2019   #19
-
0
-

Hledat umim, ale co s tým?

this.setFractionalScaleDecimals = function (decimals) {
            fractionalScaleDecimals = parseInt(decimals, 10);
            resetBuffers({background: true});
            init({background: true});
            this.repaint();
            return this;
        };
Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Expert
3. 11. 2019   #20
-
0
-

#19 Borisek
zkusit si s tím pohrát v tom tvým kodu funkce INIT nastavení parametrů pro linear7 přidat tam řádek

fractionalScaleDecimal : X,

za X zkusit dosadit různé hodnoty třeba od 0 do 5 co to bude dělat

Nahlásit jako SPAM
IP: 185.112.167.–
Borisek0
Stálý člen
4. 11. 2019   #21
-
0
-
Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
4. 11. 2019   #22
-
0
-

   

...
lcdVisible: true,
lcdDecimals: 1
Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
4. 11. 2019   #23
-
0
-

Děkují moooooooc všem   

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Expert
4. 11. 2019   #24
-
0
-

#22 gna
#23 Borisek
Já to tak hluboce nezkoumal, nejspíš bych se k tomu po delší době také dostal.

Nahlásit jako SPAM
IP: 185.112.167.–
Borisek0
Stálý člen
5. 11. 2019   #25
-
0
-

#24 MilanL

To nevadí, ještě mam jeden projekt po kterém už dlouho toužím, ale bude lepši Vás nechat trochu odpočinout 

Uvědomují si, že jste úplně vše udělali za mně a moc za to děkují.
Jsem prostě elektrikář, slaboproudař co si hraje s raspi.
Než jsem tu poprosil o pomoc tak jsem si par věci o canvasu přečet a také zkoušel na něj kreslit, ale toto už je úplně jinde, než obyčejné základy.

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Expert
5. 11. 2019   #26
-
0
-

#25 Borisek
V poho od toho ta poradna je. u cizich knihoven když není přesný popis je problém zjišťovat, odpovídající parametr z té struktury.

Také se chystám po novém roce na jeden projektík BLE (low energy bluetooth), zatím jsem neměl volné finance.

Nahlásit jako SPAM
IP: 91.139.9.–
Borisek0
Stálý člen
6. 11. 2019   #27
-
0
-

Mužů ještě poprosit o radu.

Už mam 5 teploměru a funguji.

Mám však ve všech pokojích čidlo SHT31-D, které mi posila jak teplotu, tak vlhkost.
Bych chtěl do toho okna canvas pomoci funkce ctx.fillText nebo ctx.strokeText vykreslit třeba "Obývací pokoj" a pod něj vykreslit dva teploměry titleString: "Thermometer" a titleString: "Humidity".
Nějak mi však u těch teploměru schází nastavení hodnot left a top.
Jsem koukal do toho steelseries.js na tu funkci lineár a neni tam nic.

Bylo by složité tam ty 2 parametry přidat?

Jsem zkoušel vytvořit canvas, do něj vykreslit "Obývací pokoj"  a pod něj 2 canvasy - ty teploměry a nevypadá to moc pěkně.

A vytvořit cavas a do něj vložit 2 canvasy asi také nepujde.

Nebo nějaka rada, jak by jste to vyřešili Vý?

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Expert
6. 11. 2019   #28
-
0
-

#27 Borisek
ahoj,

já bych to zakomponoval do té tabulky v Body, jen záleží jak to chceš uspořádat a upravit ty rozměry (jsou tam 2x Width a Height, jednou jsou nadefinovaný pro webový prvek a podruhé ve scriptu pro canvas.

nejjednodušší by bylo mít místnosti vedle sebe a ty ukazatele pro 1 místnost pod sebou.

do první řádky tabulky dáš textově názvy místností 

do druhé řádky dáš teploty a do třetí vlhkost - jen je třeba zredukovat ty rozměry.

Pokud bys chtěl mít ty ukazatele pro místnost vedle sebe, dáš nejdřív textový prvek s názvem místnosti, pak tabulku 1 řádka 2 sloupečky ve kterých budou ukazatele.

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Expert
6. 11. 2019   #29
-
0
-

#28 MilanL

.. Další místnost => nový text názvu místnosti a nová tabulka.

Na init a aktualizace stačí 1 blok v cyklu podle počtu místností pojmenování prvků si bud očísluješ Teplomer1,...,TeplomerX, Vlhkost1,..,VlhkostX v cyklech init a aktualizace pak budeš na prvky odkazovat "Teplomer" + $i   a "Vlhkost" + $i,

nevím jak máš názvy souborů s tam možná přes nadefinované pole názvů.

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Expert
6. 11. 2019   #30
-
0
-

dodatek na ty objekty Canvasů si asi budeš muset udělat pole

Nahlásit jako SPAM
IP: 91.139.9.–
Borisek0
Stálý člen
12. 11. 2019   #31
-
0
-

Zdravím Vás.
Mohl bych poprosit nějaké info k tomuto.
https://github.com/…r/RrdGraphJS


Zda bych mněl nějakou šanci, jako lama to rozjet?
Jedná se o RRDtool grafy, které už používám par let, ale přes bash skript je co 5 minut ukládám na disk a pak na své stránce vykresluji.

Mám databazi databaze_teploty.rrd a do ni ukládám 3 naměřené hodnoty.

#!/bin/bash
DIR="/media/FlashDisk"
DIR1="/dev/shm"
#set to C if using Celsius
TEMP_SCALE="F"
 
#Barva grafu
VODA_COLOR="#0000FF"
KOTEL_COLOR="#E81123"
VENKU_COLOR="#FFE999"

#deni
rrdtool graph $DIR1/graf_deni.png --start -1d \
--watermark "Borisek" \
--width 800 \
--height 240 \
COMMENT:"\\t\\t\\t\\tAktuální\\t\\t Minimum \\t\\t Maximum\\t\\t Průměr\\n" \
DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
DEF:voda=$DIR/databaze_teplota.rrd:voda:AVERAGE \
DEF:kotel=$DIR/databaze_teplota.rrd:kotel:AVERAGE \
AREA:venku$VENKU_COLOR:"Teplota venku\\t\\t" \
GPRINT:venku:LAST:"%4.1lf C\\t\\t" \
GPRINT:venku:MIN:"%4.1lf C\\t\\t" \
GPRINT:venku:MAX:" %4.1lf C\\t\\t" \
GPRINT:venku:AVERAGE:"  %4.1lf C\\n" \
LINE1:voda$VODA_COLOR:"Teplota voda\\t\\t" \
GPRINT:voda:LAST:"%4.1lf C\\t\\t" \
GPRINT:voda:MIN:"%4.1lf C\\t\\t" \
GPRINT:voda:MAX:" %4.1lf C\\t\\t" \
GPRINT:voda:AVERAGE:"  %4.1lf C\\n" \
LINE1:kotel$KOTEL_COLOR:"Teplota kotel\\t\\t" \
GPRINT:kotel:LAST:"%4.1lf C\\t\\t" \
GPRINT:kotel:MIN:"%4.1lf C\\t\\t" \
GPRINT:kotel:MAX:" %4.1lf C\\t\\t" \
GPRINT:kotel:AVERAGE:"  %4.1lf C\\n" 
Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Expert
12. 11. 2019   #32
-
0
-

#31 Borisek
jestli myslíš ten RRDTOOL a obrázek, nahradit přímým vykreslením do Canvasu z dat v DB, tak by to neměl být problém, dokonce by se to dalo udělat i tak, aby se to interaktivně aktualizovalo. 

Pohledy si pak můžeš udělat různé od průběhu v rámci 1 až několika hodin přes dení, týdení, měsíční po několik let.

Nahlásit jako SPAM
IP: 91.139.9.–
Borisek0
Stálý člen
12. 11. 2019   #33
-
0
-

Ono v tom public je to už hotové, a moc se mi libí to řešeni.

Už několikrát jsem se na to díval a vůbec netuším, kde se u toho zadává cesta k databázi a k datum.

DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \ DEF:voda=$DIR/databaze_teplota.rrd:voda:AVERAGE \ DEF:kotel=$DIR/databaze_teplota.rrd:kotel:AVERAGE \

Přes bash skript umím udělat PNG a načíst na web s různými pohledy.
Zkoušel jsem i přes PHP zavolat ten bash skript s předáváním parametrů a taky funguje.
Toto však  je nej řešení.
Nepomužete?

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
12. 11. 2019   #34
-
0
-

Vždyť je tot am popsané. Jen to tahá obrázky ze serveru.

Takže do img dáš místo graphA třeba rrdgen.php:

data-src-template="rrdgen.php?width={{width}}&amp;height={{height}}&amp;start={{start}}&amp;end={{end}}&amp;zoom={{zoom}}&amp;rand={{random}}"

A v něm třeba budeš generovat ty grafy.

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1051 příspěvků
12. 11. 2019   #35
-
0
-

   

$args = ['start', 'end', 'width', 'height', 'zoom'];
$args = array_map(function($arg) {
    return isset($_GET[$arg]) ? "--$arg " . escapeshellarg($_GET[$arg]) : '';
}, $args);

$command = 'rrdtool graph - ' . join(' ', $args)
         . ' DEF:blabla a dalsi'
         . ' parametry jak chces';
passthru($command);
Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
17. 11. 2019   #36
-
0
-

Tročku menší výpadek  

Kde zadat ten nazev mé databaze je jasne.
Nějak ale nechapu kam s tým druhým.
A dotaz.Napsal jste tu.
"Jen to tahá obrázky ze serveru."
To si jako první ty obrazky někam uklada, a pak teprve je vykreslue?

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
17. 11. 2019   #37
-
0
-

Ten rrdGraphPng v JavaScriptu na straně klienta načte a zobrazí obrázek z adresy zadané v té šabloně s tím, že {{start}}, {{end}} apod v adrese nahradí aktuálními hodnotami. Když změníš období, nebo tím grafem šoupneš, tak to udělá znova s novými hodnotami.

Na straně serveru pak musíš zajistit, aby na té adrese byl požadovaný graf. Takže když v té šabloně je rrdgen.php s parametry, tak to druhé je rrdgen.php, který hodíš na server a bude generovat grafy podle požadovaných parametrů. Vždycky znova, nic se nikam neukládá.

Můžeš to vykoumat jakkoliv jinak, jde jen o princip.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
18. 11. 2019   #38
-
0
-

Tak čučim na to jak pero z gauče a vubec netušim kam s tým.

$args = ['start', 'end', 'width', 'height', 'zoom'];
$args = array_map(function($arg) {
    return isset($_GET[$arg]) ? "--$arg " . escapeshellarg($_GET[$arg]) : '';
}, $args);

$command = 'rrdtool graph - ' . join(' ', $args)
         . ' DEF:blabla a dalsi'
         . ' parametry jak chces';
passthru($command);
Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
18. 11. 2019   #39
-
0
-

V PHP už jsi dělal, tak bys ho mohl poznat. Nebo bys mohl postřehnout, že když to zjevně spouští rrdtool, tak to asi bude to, co generuje ty grafy. Nebo si prostě přečíst, co píšu.

Takže když v té šabloně je rrdgen.php s parametry, tak to druhé je rrdgen.php, který hodíš na server a bude generovat grafy

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
18. 11. 2019   #40
-
0
-

Vzdavam to, toto fakt nedavam.
Ale i tak moc dik za ochotu.

Nahlásit jako SPAM
IP: 95.173.82.–
Borisek0
Stálý člen
18. 11. 2019   #41
-
0
-

Když to spoušti rrdtool, tak by to mělo jit do funkce, kterou vola ten buttom, ale to jsem zkušel a nic.

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
18. 11. 2019   #42
-
0
-

Jaký button? Tak do třetice. V HTML je IMG tag s atributem DATA-SRC-TEMPLATE definujícím adresu obrázku. A JavaScript, který ten obrázek z té adresy podle potřeby načítá.

Takže budeš mít třeba soubor index.html, tak jak je v distibuci rrdGraphPng, a do šablony adresy dáš rrdgen.php

...
...
    <div><img
        style="width:695px;height:238px" class="graph"
        data-src-template="rrdgen.php?width={{width}}&amp;height={{height}}&amp;start={{start}}&amp;end={{end}}&amp;zoom={{zoom}}&amp;rand={{random}}"
    /></div>
...
...

A pak budeš mít ten soubor rrdgen.php

<?php

který nějak produkuje obrázek
...
...
Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
18. 11. 2019   #43
-
0
-

To mi je jasne.

<div><img
        style="width:695px;height:238px" class="graph"
        data-src-template="databaze_teplota.rrd?width={{width}}&amp;height={{height}}&amp;start={{start}}&amp;end={{end}}&amp;zoom={{zoom}}&amp;rand={{random}}"
    /></div>


Ale ja zapasím s tým zbytkem.co jste tu dál..
Jak mu bysvětlit, že v te databazi mam uložen vice dat.

DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \ DEF:voda=$DIR/databaze_teplota.rrd:voda:AVERAGE \ DEF:kotel=$DIR/databaze_teplota.rrd:kotel:AVERAGE \

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
18. 11. 2019   #44
-
0
-

Dal jsem tam jméno PHP skriptu, který rrdtoolem generuje obrázek. Obrázek, obrázek, obrázek. Jen to stahuje obrázky. Je to adresa obrázku. To nerozumí RRD databázi a neřeší to, co na tom obrázku je, kromě toho, že očekává, že bude podle těch parametrů start/end/atd.

Nemusíš tomu vysvětlovat, co v té databázi je. Tak jak jsem ten příkaz napsal... rrdtool blabla a dalsi parametry jak chces. Jen vygeneruj obrázek jaký chceš.

Můžeš použít ten tvůj bashovský skript. Jen ho takhle uprav, aby přijímal parametry:

...
FILE=${1:-$DIR1/graf_deni.png}
START=${2:--1d}
END=${3:-now}
WIDTH=${4:-800}
HEIGHT=${5:-240}

#deni
rrdtool graph "$FILE" \
--watermark "Borisek" \
--start "$START" \
--end "$END" \
--width "$WIDTH" \
--height "$HEIGHT" \
COMMENT... ZBYTEK NECH TAK
JAK TO MAS
...

Ta konstrukce ${X:-Y} znamená, když je nastavené X, tak to bude X, jinak Y. Takže když ten skript bude spuštěn s parametry, tak se vezmou hodnoty těch parametrů, jinak se použijí hodnoty, které jsi tam měl původně a bude to fungovat stejně.

Do IMG dej ten rrdgen.php a v rrdgen.php teda volej ten tvůj shellskript. 

<?php
$command = '/cesta/ktomu/tvemu/skriptu'
         . ' - ' // soubor '-' znamená výpis na standardní výstup místo do souboru
         . ' ' . escapeshellarg(@$_GET['start'])
         . ' ' . escapeshellarg(@$_GET['end'])
         . ' ' . escapeshellarg(@$_GET['width'])
         . ' ' . escapeshellarg(@$_GET['height']);
passthru($command);

A když se ti to bude zdát pomalé (protože spouštění bashe je dementně pomalé), tak ten příkaz pro rrdgen napiš rovnou do toho php skriptu, jak ti celou dobu radím :)

A píšu to z hlavy, možná někde bude nějaká botka. Ale princip je snad konečně jasný.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
20. 11. 2019   #45
-
0
-

Mužu ještě dotaz?

Furt zkoušim nějak zprovoznit ten puvodní.
Je tam.

<div><img
        style="width:695px;height:238px" class="graph"
        data-src-template="databaze_teplota.rrd?width={{width}}&amp;height={{height}}&amp;start={{start}}&amp;end={{end}}&amp;zoom={{zoom}}&amp;rand={{random}}"
    /></div>

Když spustím ten index.html a 2x kliknu levým na tem img, vyskočí mi okno pro stažení té databáze databaze_teplota.rrd.
Když ji dam stáhnout a pak kopírovat stahovaný odkaz, je tam.

http://192.168.1.5:8888/rrdgraph_test/databaze_teplota.rrd?width=695&height=238&start=1574233706&end=1574237306&zoom=1&rand=5sacsi

Nemůže byt tam nějaký kopanec?
I když o tom neuvažují, ale kdybych to náhodou zprovozníl a zpřístupníl zvenčí, je kravina, aby si mohl každý stáhnout tu databázi, ne?

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
20. 11. 2019   #46
-
0
-

Já nerozumím tomu, proč pořád uvažuješ o tom, že bys jako adresu obrázku grafu měl databázi rrd.

Představ si, že máš na serveru obrázek graf.png. Když pak "půjdeš" na http://server/graf.png, tak ti server vrátí jeho obsah a uvidíš ten obrázek.

To dělá i ten rrdgraphpng, načte a zobrazí obrázek na zadané adrese (resp. šabloně adresy). Když budeš mít 

data-src-template="graf.png?start={{start}}&amp;end={{end}}&amp;"

a pak v těch ovládacích prvcích vybereš zobrazení posledních 6 měsíců, tak "půjde" na adresu 

server/cesta/graf.png?start=číslo-znamenající-teď-minus-6měsíců&end=číslo-znamenající-teď

Pak ten graf o polovinu posuneš do prava (tedy o 3 měsíce zpět) a ono to "půjde" na adresu

server/cesta/graf.png?start=číslo-znamenající-teď-minus-9měsíců&end=číslo-znamenající-teď-minus-3měsíce

To se samozřejmě nijak neprojeví a pořád uvidíš to samé, protože graf.png je statický obrázek, pro který ty parametry nic neznamenají. Ale je to hotový obrázek, ten rrdgraphpng ho nezpracovává, negeneruje, prostě dostane od serveru obrázek a ukáže ti ho.

"Trik" je pak v tom, že jako adresu obrázku nezadáš statický obrázek, ale skript, který ta obrazová data bude generovat dynamicky podle požadovaných parametrů start/end/atd. A to bude dělat spouštěním rrdtoolu tak jak se ti zlíbí. Hotovo, konec, můžeš si šoupat s grafama :-)

Na tom, kde máš databázi nezáleží. Když ji nechceš mít přístupnou z webu, tak neměj. K ničemu tam není potřeba.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
21. 11. 2019   #47
-
0
-

Ono jak jste nahoře napsal.

Vždyť je to tam popsané. Jen to tahá obrázky ze serveru.Takže do img dáš místo graphA třeba rrdgen.php:
Tak ja po posral a myslel že tam mam dat tu databazi.

Tak pak už fakt netušim proč mi to nefunguje.

Jedině ještě že mam něco mlbě tady.

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$args = ['start', 'end', 'width', 'height', 'zoom'];
$args = array_map(function($arg) {
    return isset($_GET[$arg]) ? "--$arg " . escapeshellarg($_GET[$arg]) : '';
}, $args);

$command = 'rrdtool graph - ' . join(' ', $args)      
          . 'DEF:venku= /media/FlashDisk/databaze_teplota.rrd:AVERAGE'
          . 'DEF:voda= /media/FlashDisk/databaze_teplota.rrd:voda:AVERAGE' 
          . 'DEF:kotel= /media/FlashDisk/databaze_teplota.rrd:kotel:AVERAGE';
passthru($command);
?>
Nahlásit jako SPAM
IP: 95.173.82.–
Kit+14
Guru
21. 11. 2019   #48
-
0
-

#47 Borisek
Máš tam pomíchány proměnné $arg a $args. Tyto názvy bych ani nepoužíval, protože samotné PHP je používá k jinému účelu.

BTW: Není nic jednoduššího, než místo volání passthru() zavolat var_dump(). Okamžitě se dozvíš, jaké parametry dostane rrdtool. Pokud bys používal metodiku TDD, tak bys to slepování $command vyčlenil do samostatné funkce zcela automaticky, aby se to dalo testovat.

Nahlásit jako SPAM
IP: 46.135.91.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
gna
~ Anonymní uživatel
1051 příspěvků
21. 11. 2019   #49
-
+1
-
Zajímavé
Kit +

#47 Borisek
Ten operátor tečka jen pospojuje ty řetězce. Takže máš ty parametry nalepené jeden za druhým a naopak za těmi rovnítky máš zase nadbytečné mezery.

Takhle by to mohlo fungovat: 

$command = 'rrdtool graph - ' . join(' ', $args)      
         . ' DEF:venku=/media/FlashDisk/databaze_teplota.rrd:AVERAGE'
         . ' DEF:voda=/media/FlashDisk/databaze_teplota.rrd:voda:AVERAGE' 
         . ' DEF:kotel=/media/FlashDisk/databaze_teplota.rrd:kotel:AVERAGE';
header("Content-Type: image/png");
passthru($command);
Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
22. 11. 2019   #50
-
0
-

Tak jak jste to tu dal, tak jsem použil.

data-src-template="rrdgen.php?start={{start}}&amp;end={{end}}&amp;"

Nefunguje to, ale když na ten IMG poklikam, tak mi vyskoči okno, ve kterem je černý obrazek a v něm.napisano.

Obrázek html://192.168.1.5:8888/rrdgraph_test/rrdgen.php?start=1574290800&end=1574294400& nelze zobrazit,protože obsahuje chybu.

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
22. 11. 2019   #51
-
0
-

#50 Borisek
Jo, mě chytly ty mezery a neštudoval jsem jaké parametry tam máš. Ještě by to chtělo LINE nebo něco, co prostě něco vykreslí. Odzkoušej si ten příkaz samostatně a pak ho jen přepiš do PHP.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
3532 příspěvků
26. 11. 2019   #52
-
0
-

   

html://192.168.1.5:8888/rrdgraph_test/rrdgen.php?start=1574290800&end=1574294400&
http://192.168.1.5/…t/rrdgen.php?…
https://192.168.1.5/…t/rrdgen.php?…

Proc tam mas html v adrese?


$command = 'rrdtool ...';
passthru($command);
header("Content-Type: image/png");
- nemel by se ten obrazek vypsat pres echo nebo tak neco?
- a vraci to obrazek png nebo v jinem format, treba jpeg, gif?

- treba, kdyz delam download, tak pouzivam bo_start a ob_clean, aby se mi do kodu obrazku nedostal nejaky parazitni znak 

	
ob_start();

//$root = dirname(__FILE__).'/';	// nefunguje na localhostu
//require_once $root.'exception.php';
//set_exception_handler('defaultExceptionHandler');
//if (!isset($config)) {
//	include_once $root.'config.inc.php';
//	}

header('P3P: CP="CAO PSA OUR"');	// aby session fungovala spravne v iframe v IE
header("Content-Type: text/html; charset=UTF-8");
…… nejaky dalsi php kod

ob_clean(); // smaz vsechno, co zatim slo na screen, echo, print, error hlasky
	header('Content-Description: File Transfer');
	header('Content-Transfer-Encoding: binary');
	header('Content-Encoding: '.$charset);
	header('Content-Type: '.$type.'; charset='.$charset);
	header('Content-Disposition: attachment; filename="'.$file.'"');
	header('Content-Length: '.$size);
	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
	//header("Cache-Control: no-store, no-cache");
	header('Pragma: public');
	header('Expires: 0');
	echo $content;
	exit();

- muzes zkusit pouzit textovy editor a podivat se na text toho souboru? mozna ze tam mas pred zacatkem obrazku parazitni kod, chybovou hlasku. Ja bych to dal do stranky jako link a pak klikl pravym tlacitkem ulozit jako a dal bych tomu priponu txt. 2x klikem na souboru se spusti notepad. Na prvni pohled by melo byt videt, co jsou data obrazku a prednim nebo za nim muze byt nejaky kod.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Borisek0
Stálý člen
26. 11. 2019   #53
-
0
-

Děkují moc, ale i když nerad, ale už jsem to odpískal.
S programováním www stránek znám jen úplně základy a toto je úplně mimo mé znalosti.
První problém, o kterém vím, je v tom rrdgen.php
Jede to na linuxu, takže když ho spustím přes terminal.

https://i.postimg.cc/dQGYgWkC/xx1.png

Připojen obrázek.

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
26. 11. 2019   #54
-
0
-

Máš jako pocit, že v PHP je nějaká magická implementace rrdtoolu? To jen spustí ten příkaz tak, jako bys ho psal v shellu. Tak ho dej dohromady a napiš si ho tam. Ten bashovský skript ti funguje a najednou nevíš, co tam narvat?

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
27. 11. 2019   #55
-
0
-

Tak kvuli raspi jsem začal s lazarem, zkoušel jsem python i bash, ale u žadneho jsem se tak nenatrapil, ale nějak se mi nechce to vzdat.

https://stackoverflow.com/questions/20406429/realtime-image-from-rrd-file-in-php

Uplně ořezaný bash ale funkční
 

#!/bin/bash
DIR="/media/FlashDisk"
DIR1="/home/pi"
 
#deni
rrdtool graph $DIR1/graf_deni.png --start -1d \
--watermark "xxx" \
--width 800 \
--height 240 \
DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
AREA:venku"#FFE999":"Teplota venku\t\t"
<?php
  $options = array(
    "--start", "-1d",
    "--title=xxx",
    "--lower-limit=0",
    "--width=800",
    "--height=240",
    "DEF:venku=/media/FlashDisk/databaze_teplota.rrd:venku:AVERAGE",
    "LINE:tvenku#00FF00:US venku"
      );
  $graphObj = new RRDGraph('-');
  $graphObj->setOptions($options);
  $res = $graphObj->saveVerbose();

  header("Content-type: image/png");
  echo $res['image'];
?>


Tak proč nefunguje sakra toto?
https://i.postimg.cc/…raspiphp.png
Bych řek, že jedíný problem je, že neví kam ten ty data odeslat.

Nahlásit jako SPAM
IP: 95.173.82.–
peter
~ Anonymní uživatel
3532 příspěvků
28. 11. 2019   #56
-
0
-

 Ono ti to pise no argument, protoze mas spatne ten cmd. 

$DIR="/media/FlashDisk"
$DIR1="/home/pi"

$cmd = "rrdtool graph $DIR1/graf_deni.png --start -1d --watermark \"xxx\" --width 800 --height 240 DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE AREA:venku\"#FFE999\":\"Teplota venku\\t\\t\"";
// uvozovky uvnitr stringu ohraniceneho uvozovkami se v php musi zapsat jako zpetne lomitko + uvozovka (pokud to nahodou forko odbouralo. A vsechna zpetna lomitka totez.)

// nebo mozna pujde i
$cmd = <<<EOF
rrdtool graph $DIR1/graf_deni.png --start -1d \
--watermark \"xxx\" \
--width 800 \
--height 240 \
DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
AREA:venku"#FFE999":"Teplota venku\t\t"
EOF;

// echo $cmd; exit(); // --- tak si ten cmd vypis na obrazovku a zkontroluj, zda je stejny jako v shellu
passthru($cmd);
// google = php passthru
// executes a command + when the output from the Unix command is binary data
// which needs to be passed directly back to the browser
// Cili to jenom spusti linuxovy shell kod. Pokud je kod dobre, tak to vrati
// data, ktera zobrazi shell, jinak to vrati error.
// Pokud neumim do php napsat spravne command, tak ho shell nedokaze vykonat.
// Nehlede na to, ze php / slozka / soubor muze byt nastaveny tak, aby neprovedl
// zadny shell. 

// Udelej si test:
$cmd = "ls";
passthru($cmd);
Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Borisek0
Stálý člen
28. 11. 2019   #57
-
0
-

Tak s tohoto jsem už úplný debil.

Je tam 
$cmd = "rrdtool graph $DIR1/graf_deni.png
Proč?
Celou dobu tu řeším, aby se graf načítal přímo do IMG.

Ony se ty teploty ukládají do databáze co 5 minut a také se vždy hned vytvoří ten graf jako PNG.
Připadá mi blbost, aby se graf vytvářel co 5 minut, když se na něj divám třeba jen jednou denně.

Nahlásit jako SPAM
IP: 95.173.82.–
peter
~ Anonymní uživatel
3532 příspěvků
29. 11. 2019   #58
-
0
-

no, ja vychazi z toho, co jsi psal. Ze mas bash prikaz, ktery ti vygeneruje obrazek. V php se bash prikazy spousti pres passthru. Takovy jednoduchy test treba s ls. Pokud ti to neco vypise, tak to v php jde

$cmd = "ls";
passthru($cmd);

V mem pripade mam win/xamp.

$cmd = "dir";
passthru($cmd);

<?php
ob_start();
$cmd = "dir";
ob_clean();
header("Content-Type: text/html; charset=ibm-852");
echo '<pre>';
 
<img src=obrazek.php>

--- obrazek.php ---
<?php
ob_start();
$path = "teplota.png";
ob_clean();
header("Content-Type: image/png");
$data = file_get_content($path); // uloz data obrazku do promenne
echo $data;
exit;
?>

coz je vlastne to, co ti psal uz gna, z cmd bys to ziskal

<img src=obrazek2.php>

--- obrazek2.php ---
<?php
ob_start();
$cmd = "...";
ob_clean();
header("Content-Type: image/png"); // nastav hlavicku requestu, ze posilas prohlizeci obrazek
passthru($cmd); // ziskej a zobraz data obrazku do promenne
?>

<div><?php include 'obrazek3.php'; ?></div>

--- obrazek3.php ---
$path = "teplota.png";
$data = base64_encode(file_get_contents($path));
$src  = 'data: '.mime_content_type($path).';base64,'.$data;
echo '<img src="'.$src.'">';

https://stackoverflow.com/questions/8499633/how-to-display-base64-images-in-html
je tam verze i pro js, css-background

($cmd);
?>

Cili, pokud dokazes bash prepsat do php stringu, tak neni problem.

Mno, ze to teda nechces opakovat, v tom taky problem nevidim. Proste si budes kontrolovat stari souboru a pokud odpovida intervalu, tak kod preskocis.

A dalsi vec, co asi resis, ze ten bash to ulozi do souboru. Tak treba prostudovat ten program, aby ti to poslal na screen, kdyz to nechces do souboru. 
Php zobrazuje obrazek takto:
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Borisek0
Stálý člen
29. 11. 2019   #59
-
0
-

Pry mi to nefunguje, protože nemam v PHP doinstalovane rrd_graph rozšiření.
Jak to doinstalovat?

Nahlásit jako SPAM
IP: 95.173.82.–
Borisek0
Stálý člen
30. 11. 2019   #60
-
0
-

sudo apt-get install -y php-rrd

Nahlásit jako SPAM
IP: 95.173.82.–
Kit+14
Guru
30. 11. 2019   #61
-
0
-

#58 peter
proč tam máš ten ob_start() a ob_clean()? Nikdy jsem ty funkce nepoužil.

Nahlásit jako SPAM
IP: 46.135.12.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Borisek0
Stálý člen
1. 12. 2019   #62
-
0
-

Takže toto funguje.

<?php
$opts = array(
    "--start", "-1d",
    "--title=xxx",
    "--width=800",
    "--height=240",
    "DEF:venku=/media/FlashDisk/databaze_teplota.rrd:venku:AVERAGE",
    "DEF:voda=/media/FlashDisk/databaze_teplota.rrd:voda:AVERAGE",
    "DEF:kotel=/media/FlashDisk/databaze_teplota.rrd:kotel:AVERAGE",
    "AREA:venku#FFE999:Venku",
    "LINE1:voda#0000FF:Voda", 
    "LINE1:kotel#E81123:Kotel"   
	);

$result = rrd_graph('/home/pi/graf.png', $opts);
if ($result === false) {
	echo 'There was an error: ';
	echo rrd_error();
}
else {
	echo 'File successfully created.';
}
?>

Potřeboval bych však misto toho uložení to načist do proměnne a v tom else odeslat do toho IMG.

Jsem zkoušel misto te cesty kam to ma uložit dat proměnnou $data ale Undefined variable: data.
Poradite?

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
1. 12. 2019   #63
-
0
-

Fajn, tak teď máš funkci, která umí jen výpis do souboru? No tak pak načti obsah toho souboru. Jak tě napadlo, že by se to tak nějak prostě vyskytlo v nějakém $data, fakt netuším.

Přes dva týdny tady máš funkční řešení a pořád musíš vymýšlet něco jiného.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
1. 12. 2019   #64
-
0
-

No ale je tu už toho tolik, že jsem s toho něako zmateny.
Furt se řešilo, proč mi to nefunguje, a problem byl, že jsem neměl nainstalovane rozšíření v PHP pro rrdtool.
Ted už mám jistotu, že to funghje.

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
1. 12. 2019   #65
-
0
-

To, co se tu furt řešilo byl to, že není co řešit. Když umíš rrdtoolem vygenerovat graf, tak prostě z PHP funkcí passthru spustíš rrdtool.

Teď jsi přišel s externí knihovnou, kterou samozřejmě musíš nejdřív nainstalovat. A i když vypadá pěkně, tak jsi zase na začátku, že nechápeš ani řádek a chceš, aby ti to někdo rozchodil. Tak si přečti dokumentaci.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
1. 12. 2019   #66
-
0
-

   

Nejsem na začatku. Toto funguje. 

<?php
$opts = array(
    "--start", "-1d",
    "--title=xxx",
    "--width=800",
    "--height=240",
    "DEF:venku=/media/FlashDisk/databaze_teplota.rrd:venku:AVERAGE",
    "DEF:voda=/media/FlashDisk/databaze_teplota.rrd:voda:AVERAGE",
    "DEF:kotel=/media/FlashDisk/databaze_teplota.rrd:kotel:AVERAGE",
    "AREA:venku#FFE999:Venku",
    "LINE1:voda#0000FF:Voda", 
    "LINE1:kotel#E81123:Kotel"   
	);

  $graphObj = new RRDGraph('-');
  $graphObj->setOptions($opts);
  $res = $graphObj->saveVerbose();

  header("Content-type: image/png");
  echo $res['image'];
?>
Nahlásit jako SPAM
IP: 95.173.82.–
Borisek0
Stálý člen
2. 12. 2019   #67
-
0
-

Tak mi to neda a ještě zkoušim to co jste ru dali.

Funguje mi i to co tu dal peter. 

<?php
$DIR="/media/FlashDisk";
$DIR1="/home/pi";

$cmd = "rrdtool graph $DIR1/graf_deni.png \
        --start -1d \
        --watermark \"xxx\" \
        --width 800 \
        --height 240 \
        DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
        AREA:venku\"#FFE999\":\"Teplota venku\\t\\t\"";
//echo $cmd; exit(); 
passthru($cmd);
?>

Ale furt mi to  vytvaři ten graf_deni.png na disku.
Toto pujde nějak pořešit?

Nahlásit jako SPAM
IP: 95.173.82.–
Kit+14
Guru
2. 12. 2019   #68
-
0
-

#67 Borisek
Logicky bych nahradil "$DIR/graf_deni.png" znakem "-". Zkusil jsi to už?

Nahlásit jako SPAM
IP: 46.135.94.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Borisek0
Stálý člen
2. 12. 2019   #69
-
0
-

Takto.  $cmd = "rrdtool graph - \  
Ja to tam cpal v uvozovkach "-"

Ještě poslední dotaz.
U obou těch funkčních co jsem tu dal je jeden problem.
Když to uložim na disk, mam názvy dní a měsicu v češtině.
Když to pošlu do toho HTML, <img src="rrd.php" />, tak to mam v angličtině.

Proč a jak to vyřešit?

 

Nahlásit jako SPAM
IP: 95.173.82.–
peter
~ Anonymní uživatel
3532 příspěvků
3. 12. 2019   #70
-
0
-

"Funguje mi i to co tu dal peter. " - Dik, ale jen jsem zkusil gna reseni popsat trochu jinak. Ono to nekdy pomuze k lepsimu pochopeni, vic podobnych zpusobu. Nebo naopak k vetsimu zmatku :)

Když to uložim na disk, mam názvy dní a měsicu v češtině.
Když to pošlu do toho HTML, <img src="rrd.php" />, tak to mam v angličtině.
… To moc nechapu. Pokud to generuje program v linuxu, win, tak vystup v obrazku lze ovlivnit parametrem nebo nejakym prepnutim jazyka predem. V php totez nebo nastavenim header(). Tusim, ze jsem to nikdy nepouzil, tak spis takovy vyber moznosti z googlu, manual php.net

rrdtool graph … - cestina

SET … cestina
rrdtool graph …

$graphObj->setOptions($opts); // nekde v opt cestina

$lang = 'Czech';
//setlocale(LC_TIME, $lang);
//setlocale(LC_CTYPE, $lang);
//setlocale(LC_ALL, $lang.'.'.$codeset);
//setlocale(LC_ALL, "en_US.UTF-8");
setlocale(LC_ALL, 'Czech_Czech Republic.65001')
date_default_timezone_set('Europe/Prague');
header('Content-Type: text/html; charset=UTF-8');
$graphObj->setOptions($opts);


 

Nahlásit jako SPAM
IP: 193.84.207.–
Borisek0
Stálý člen
3. 12. 2019   #71
-
0
-

To moc nechapu. Pokud to generuje program v linuxu, win, tak vystup v obrazku lze ovlivnit parametrem

<?php
$cmd = "rrdtool graph $DIR1/graf_deni.png \
        --start -1d \
        --watermark \"xxx\" \
        --width 800 \
        --height 240 \
        DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
        AREA:venku\"#FFE999\":\"Teplota venku\t\t\"";
passthru($cmd);
?>

https://postimg.cc/Jtz7FKvM

<?php
$cmd = "rrdtool graph - \
        --start -1d \
        --watermark \"xxx\" \
        --width 800 \
        --height 240 \
        DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
        AREA:venku\"#FFE999\":\"Teplota venku\t\t\"";
passthru($cmd);
?>

https://postimg.cc/DmL6tdXp


Jediný rozdil je že ten první spouštim přes terminal sudo php -f /var/www/test1/index.php  a raspberry je nastavene na češtinu, tedy i terminal komunikuje český

Ten druhý spoušti ta stranka přes IMG
 

 
Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
3. 12. 2019   #72
-
+1
-
Zajímavé
Kit +

   

"LC_ALL=cs_CZ.UTF-8 rrdtool ..."
Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
3. 12. 2019   #73
-
0
-

Jedině co mně napadlo co s tým, tak 

$cmd = "C_ALL=cs_CZ.UTF-8 rrdtool graph - \
        --start -1d \
        --watermark \"xxx\" \
        --width 800 \
        --height 240 \
        DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
        AREA:venku\"#FFE999\":\"Teplota venku\\t\\t\"";

Je to furt EN

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1051 příspěvků
3. 12. 2019   #74
-
0
-

Chybí ti tam L - LC_ALL.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
3. 12. 2019   #75
-
0
-

Děkují moc   

Už mi s toho tak hrabe že aní kopirovat  neumím.   

Nahlásit jako SPAM
IP: 95.173.82.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

SOUBOR.BAT&gt;SOUBOR.EXE — založil wokena

"Mysql dotaz v dotaz" — založil Tomáš Sedlmajer

Soubor — založil cpp

Soubor — založil RePRO

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý