Sida 3 av 4
Re: Nickes LCD-projekt.
Postat: 12 jan 2010, 21:34
av MartinF
Uncached tar något längre tid, men innebär väl läsning direkt mot enheten?
Cached borde vara "gamla" data från senaste automatiska avläsning?
Perioden för uppdatering av cachen vet jag inte, kanske går den att ställa in?
Uncached och täta körningar av skriptet borde ge en mera omedelbar respons på tryckknappen?
Re: Nickes LCD-projekt.
Postat: 12 jan 2010, 21:53
av CirruZZ
MartinF skrev:...Uncached och täta körningar av skriptet borde ge en mera omedelbar respons på tryckknappen?
Helt rätt!
Re: Nickes LCD-projekt.
Postat: 12 jan 2010, 23:26
av elf98
owfs pollar inte nätet automatiskt.
Räknarna på lcd-displayen nollas vid läsning.
Re: Nickes LCD-projekt.
Postat: 12 jan 2010, 23:37
av Niklas
Ja, precis.
Läs av uncached och då bör du ju ha resultat där om du har tryckt på knapparna.
Som elf säger så är det ingen som görs automatiskt så att det nollställs.
Jag kom inte på något smidigt sätt att läsa av om någon tryckt på knapparna annat än varje minut. Det kanske går att lösa på något annat sätt så att den läser av oftare men jag vill inte krocka med någon annan avläsning.
Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 11:31
av MartinF
Många utvecklare ogillar GUIs och nu förstår jag lite av varför. Filhanteraren i Ubuntu läser hela tiden av filerna för att se om något ändras, och då nollas LCD:ns counters! Samma sak händer om filen är öppen för läsning i Ubuntus textredigerare. Mina problem orsakades också av att läsning av Counters.0-3 ger en sträng som inleds med en massa blanksteg och därför inte kunde valideras numeriskt. Dessutom är strängens avslutande siffra (till skillnad från många av LCDns skrivbara variabler) inte 0 eller 1, utan 0 eller 2.
Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 11:35
av Niklas
Sen så ökar ju sifforna varje gång man trycker på knappen.
Man får kolla om den är 0 eller inte typ.

Varje tryck plussar på med 2. Reagerar den på tryck och sen släpp kanske?
Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 12:22
av MartinF
Niklas skrev:Sen så ökar ju sifforna varje gång man trycker på knappen.
Man får kolla om den är 0 eller inte typ.

Varje tryck plussar på med 2. Reagerar den på tryck och sen släpp kanske?
I så fall kunde man hålla in en knapp för att tända lyset en kort stund vid behov!
Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 13:33
av MartinF
elf98 skrev:owfs pollar inte nätet automatiskt.
Vad är det då som cachas?
Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 19:32
av elf98
De läsningar man gör cachas.
Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 22:27
av MartinF

Läsningar av vad, cached eller uncashed eller både och?
Är cached värden från förra läsningen av cashed eller av uncashed?
Eller vad är då skillnaden mellan cashed och uncashed?
Finns det någon dokumentation om detta, annat än det kortfattade på owfs hemsida?
Nu blev det mycket frågor på en gång känner jag

.
Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 22:47
av CirruZZ
Om du läser från cashed så får du ett värde. Om du inom den konfigurerade cashtiden gör en läsning igen av cashed så kommer du att få samma värde som tidigare, dvs ingen läsning på 1-wire nätet görs. Om du istället väntar ett tag och läser efter att cashtiden har gått ut så kommer en ny läsning att göras och det värdet sparas i cashen.
Om du istället läser uncashed så kommer OWFS aldrig att ge dig ett cashat värde utan kommer alltid att hämta ett nytt värde från nätet.
Hoppas du blev klokare...

Re: Nickes LCD-projekt.
Postat: 13 jan 2010, 23:10
av MartinF
Kristallklart, tack alla, detta forum är guld värt!
Re: Nickes LCD-projekt.
Postat: 18 jun 2010, 03:35
av Plutonium
Är intresserad av din lcdcal.php

Re: Nickes LCD-projekt.
Postat: 19 jun 2010, 14:31
av Niklas
Plutonium skrev:Är intresserad av din lcdcal.php

Dra in Zends Gdata i nån passande mapp och ändra set_include_path.
Kod: Markera allt
<?php
setlocale(LC_ALL, "sv_SE.ISO8859-1");
$nu = date("y-m-d H:i:s");
function translateDateSE($string) {
$date = array(
"/January/", "/February/", "/March/", "/May/", "/June/", "/July/", "/August/", "/October/",
"/May/", "/Oct/",
"/Monday/", "/Tuesday/", "/Wednesday/", "/Thursday/", "/Friday/", "/Saturday/", "/Sunday/",
"/Mon/", "/Tue/", "/Wed/", "/Thu/", "/Fri/", "/Sat/", "/Sun/"
);
$dateSE = array(
"Januari", "Februari", "Mars", "Maj", "Juni", "Juli", "Augusti", "Oktober",
"Maj", "Okt",
"mandag", "tisdag", "onsdag", "torsdag", "fredag", "lïrdag", "sïndag",
"man", "tis", "ons", "tor", "fre", "lïr", "sïn"
);
return preg_replace($date, $dateSE, $string);}
set_include_path('/adress/till/gdata/ZendGdata-1.9.5/library');
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
$user = 'EPOST_GOOGLEKONTO';
$pass = 'LÖSENORD_GOOGLEKONTO';
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // predefined service name for calendar
$client = Zend_Gdata_ClientLogin::getHttpClient($user,$pass,$service);
$startDate=date("y-m-d H:i");
$endDate=date('Y-m-d', strtotime('+1 days'));
$gdataCal = new Zend_Gdata_Calendar($client);
$query = $gdataCal->newEventQuery();
$query->setUser('default');
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortorder('ascending');
$query->setStartMin($startDate);
$query->setStartMax($endDate);
$eventFeed = $gdataCal->getCalendarEventFeed($query);
// börjar på rad 0
$i = 0;
$rad0text = date("d/m") . " idag " . utf8_decode(translateDateSE(date("l")));
$rad0 = substr($rad0text, 0, 20);
$username="DBANVÄNDARE";
$password="DBLÖSEN";
$database="DATABAS";
mysql_connect("ADRESS",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "UPDATE t_lcd set f_rad0='$rad0', f_rad1=' ', f_rad2=' ', f_rad3=' ', f_datumtid='$nu' where id=2";
mysql_query($query);
// loopa events
foreach ($eventFeed as $event)
{
// räkna upp fil-nummer
$i++;
// kört 4 loops? avbryt
if( $i > 3 )
{
break;
}
// skriv rad 2,3,4
else
{
// hämta ur datum ur google-objekt
foreach ($event->when as $when)
{
// start
$start_data = explode('T', $when->startTime);
$start = explode('.', $start_data[1]);
$start = substr($start[0], 0, 5);
// end
$end_data = explode('T', $when->endTime);
$end = explode('.', $end_data[1]);
$end = substr($end[0], 0, 5);
}
// hämta titel
$title = $event->title->text;
// formatera titel-data
$replace_array = array('Å', 'å');
$title = str_replace($replace_array, "a", $title);
$replace_array = array('Ä', 'ä');
$title = str_replace($replace_array, 'á', $title);
$replace_array = array('Ö', 'ö');
$title = str_replace($replace_array, 'ï', $title);
// sträng-data
$texten = utf8_decode("$start $title");
$string = substr($texten, 0, 20);
$query = "UPDATE t_lcd set f_rad$i='$string' where id=2";
mysql_query($query);
}
}
mysql_close();
?>
Hade problem med locale så jag hittade på en egen lösning.
Sen så skriver jag till en databas som loopscriptet läser ifrån när det skriver till displayen så det sparas till dbn.
Det var länge sen jag skrev det så det kan förstås göras bättre. Har ett separat script för att ta fram "imorgon".
Innan skrev jag direkt till LCDn:
Kod: Markera allt
skriv till fil
$myFile = "/mnt/1wire/FF.830400000100/line20.$i";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $string);
fclose($fh);
Re: Nickes LCD-projekt.
Postat: 19 jun 2010, 15:48
av Plutonium
Tusen tack Niklas!