Arduino - Anropa hemsida

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Ett problem som jag upptäckte idag när jag körde min sida på pajen. Klockan, den första av dom går två timmar fel, men om jag provar hemma på datorn så går båda rätt.
lcd.jpg
Krockar dessa två kodsnuttar med varandra?

HTML

Kod: Markera allt

<head>
 <script type="text/javascript" src="date_time2.js"></script>
</head>

<span id="date_time"></span><script type="text/javascript">window.onload = date_time('date_time');</script>
JS kod:

Kod: Markera allt

function date_time(id)
{
        date = new Date;
        year = date.getFullYear();
        month = date.getMonth();
        months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec');
        d = date.getDate();
        day = date.getDay();
        days = new Array('Söndag -', 'Måndag -', 'Tisdag -', 'Onsdag -', 'Torsdag -', 'Fredag -', 'Lördag -');
        h = date.getHours();
        if(h<10)
        {
                h = "0"+h;
        }
        m = date.getMinutes();
        if(m<10)
        {
                m = "0"+m;
        }
        s = date.getSeconds();
        if(s<10)
        {
                s = "0"+s;
        }
        result = ''+days[day]+' '+d+' '+months[month]+' '+year+' - '+h+':'+m+':'+s;
        document.getElementById(id).innerHTML = result;
        setTimeout('date_time("'+id+'");','1000');
        return true;
}

För klockan som är statisk så använder jag:

Kod: Markera allt

<?php
date_default_timezone_set('Europe/Stockholm');
$timestamp = time();
$date_time = date("H:i:s", $timestamp);
?>

<?php echo "- Sidan uppdaterades $date_time - ";?>
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Arduino - Anropa hemsida

Inlägg av johano »

Du sätter tidszonen till "Europe/Stockholm" för den "statiska tiden" men inte för den andra. Kan vara det?
Edit: glöm det - svamlade bara...

Men att det har med tidszoner är nog helt klart. Kan vara så att new Date() inte bryr sig om default tidszonen
som time() gör...när det kör i browsern du har på pajen?
/j
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Finns det något bättre sätt att få en klocka som uppdaterar sig där den typ tar tiden från servern och sen snurrar på från det den laddas?

Det klockskriptet jag kör nu hittade jag på någon sida. Har ingen aning om dess "funktion".
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3743
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Mickecarlsson »

Javascript körs på den lokala dator som du visar sidan på, och tar tidszonen från den.
PHP-koden körs på din Pi och sätter tidszonen i koden innan den visar tiden.
Din Pi har helt enkelt fel tidszon i grunden, den står nog på UTC.
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

OK... Då ska vi se om jag inte kan ändra det på något sätt.
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3743
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Mickecarlsson »

sudo dpkg-reconfigure tzdata
Svara på en massa frågor, sen är du klar :D
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Jag har ju dratt in ett "OS" som man styr via en hemsida (lokalt) där man kan lägga upp sidor som ska visas på en skärm. Typ att ha i butiker eller liknande, så jag kommer inte åt någon promt. Eller det kanske jag gör om jag kopplar in ett tangentbord och gör något vid uppstart. Men jag kommer plocka ur minneskortet och editera:
/etc/rc.conf
lägga till: TIMEZONE="Europe/Stockholm"
och hoppas på det bästa. ?
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3743
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Mickecarlsson »

Vad är det för OS? Har du länk till en websida där man kan hitta info om den?
Du borde kunna köra Putty (SSH) mot IP-adressen och logga in på pajen.
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Tror jag löste det. Körde SSH och sudo dpkg-reconfigure tzdata.
:tumupp:
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3743
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Mickecarlsson »

:tumupp:
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Förut när jag velat plocka ut lite info från en hemsida så har jag använt mig av denna kod:

Kod: Markera allt

<?php
$content = file_get_contents('http://www.svt.se/svttext/web/pages/230.html');

preg_match('#britt pund(.*)</span>#', $content, $match);
preg_match('#US-dollar(.*)</span>#', $content, $match2);
preg_match('#1 euro(.*)</span>#', $content, $match3);

$GBP = $match[1];
$USD = $match2[1];
$EUR = $match3[1];

$GBP =  substr($GBP, -8);
$USD =  substr($USD, -8);
$EUR =  substr($EUR, -8);

echo "USD: $USD<br>EUR: $EUR<br>GBP: $GBP";
?>
Nu tänkte jag göra detta på denna sidan: https://www.svt.se/svttext/web/pages/404.html
Så för att skippa alla taggar, för det är många på den sidan så använde jag:

Kod: Markera allt

$content = strip_tags(file_get_contents('http://www.svt.se/svttext/web/pages/404.html'));
istället.

Så nått åt det här hållet:

Kod: Markera allt

<?php
$content = strip_tags(file_get_contents('http://www.svt.se/svttext/web/pages/404.html'));
preg_match('#Varmast(.*)Uppdateras#', $content, $match);
$GBP = $match[1];
echo $GBP;
?>
Men det funkar inte alls. Antar att det är för mycket text?
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3743
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Mickecarlsson »

Inte snyggt, och öppet för massor av fel, men gör vad du vill.
Som vanligt, jag kodar i CLI, du får html-fixa till koden 8)

Kod: Markera allt

<?php
// Hämta sidan 404 från SVT text-tv
$content = strip_tags(file_get_contents('http://www.svt.se/svttext/web/pages/404.html'));
// Gör om strängen till en array
$new_content = explode("\n", $content);
// Ta bort remark på nästa rad för att dumpa arrayn för att se radnummer
// var_dump($new_content);
// Skriv ut de rader som innehåller rubrik och temperatur
// OBS Förustätter att rad 4 - 10 och 12-18 alltid är densamma
echo trim($new_content[4]) . "\n";
echo trim($new_content[5]) . "\n";;
echo trim($new_content[6]) . "\n";;
echo trim($new_content[7]) . "\n";;
echo trim($new_content[8]) . "\n";;
echo trim($new_content[9]) . "\n";;
echo trim($new_content[10]) . "\n";;

echo trim($new_content[12]) . "\n";;
echo trim($new_content[13]) . "\n";;
echo trim($new_content[14]) . "\n";;
echo trim($new_content[15]) . "\n";;
echo trim($new_content[16]) . "\n";;
echo trim($new_content[17]) . "\n";;
echo trim($new_content[18]) . "\n";;
?>
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

:tumupp:
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Nu har jag stött på patrull igen. Försöker plocka ett värde från en sida och sen multiplicera med X (5 i detta fall). Men trots att jag använder float så får jag inte med decimalerna?
Plockar ut:
Senast
12,90

Kod: Markera allt

<?php
$content = file_get_contents('https://www.avanza.se/aktier/om-aktien.html/574898/spectracure');
preg_match('#title="Senast uppdaterad:(.*)</span>#', $content, $match);
$GBP = $match[1];
$GBP =  substr($GBP, 11);

echo $GBP;
$GBPCal = (float)$GBP*5;
echo "<BR>";
echo $GBPCal;
?>
Är det för att det är , och inte . ?
Skriv svar