Schemaläggare och DS18S20 - Uppdatera med jämna mellanrum

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Macce
Inlägg: 4301
Blev medlem: 29 maj 2003, 16:40:58

Inlägg av Macce »

Hehe.

Jesper: Det blev lite stökigare här pga en dålig version av owfs på deras hemsida, men kan ta upp hur jag skulle ha kunnat göra det, med bara ett kommando!

wget http://umn.dl.sourceforge.net/sourcefor ... 4p1.tar.gz && tar zxfv owfs* && cd owfs*1 && ./bootstrap && ./configure --enable-owfs && make && make install

Lätt och smidigt, eller hur? :roll:

Det som däremot rockar är GNU/Linux-operativsystemens pakethantering, vill jag t.ex. installera openoffice, skriver jag bara "emerge openoffice" i konsolen.
Hur gör du? Surfar in på openoffices sida (ja, vad var adressen igen), rotar en massa runt och hittar tillsist ett paket du försöker installera?

Nu får cykze agera helpdesk en stund om det behövs. Kommer att vara borta några veckor pga en resa.
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

module-assistant var en trevlig upptäckt. Efter att ha fixat fuse i kärnan så fungerar owfs precis som det ska! :)

Nu ska jag bara undersöka hur man läser av temp-sensorns ID och temperatur.


Macce: Ha det så kul på resan! :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Det här med hur man läser av temp-sensorn med owfs-filsystemet var inte det lättaste. Har inte lyckats komma på hur man gör, trots informationen på http://owfs.sf.net/

Macce skrev tidigare:

"Jag kör owfs , mycket bättre än digitemp
Skapa en fil i som hämtar temperaturerna utan att skriva ut en massa annat trams. För att spara värdena i en textfil lägger du bara > text.txt efter.
T.ex. digitemp [en massa växlar] > temperatur0.txt"


Redan här är jag helt borta. :oops:
Digitemp? Men... det behövde jag väl inte eftersom man kör owfs? Hur skriver man då istället?


"Jag kör ett skript som hämtar temperaturerna mha vixie-cron, men samma borde fungera med de flesta cron-daemons.

Skriver du "crontab -e -u root" får du upp ett nano-fönster för roots crontab. Följande startar skriptet var femte minut, ändra femman till en etta för att få det till varje minut."


Måste jag då ha t.ex crontab också? Räcker det inte med owfs för att läsa av sensorn?


Resultatet av avläsningen kommer att läggas upp på mitt webhotell. Detta för att enkelt kunna läsa av temperaturen på t.ex mobilen, LCD-display, TV mm utan att varje avläsnings-enhet ska behöva göra varsin avläsning av servern dit tempsensorn är kopplad. Kommer även att använda bl.a RRDtool för att kunna se temperatur-historik i en webbläsare.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Har du provat att lista innehållet ('ls') i /mnt/1wire ?

Digitemp ("apt-get install digitemp") är ett program som enbart används för att läsa av temperatursensorer. Om jag minns rätt så har väl du redan provat det tidigare, eller? OWFS fungerar däremot med alla(?) 1-wire-enheter.

Ska du bara läsa av temperaturen fungerar digitemp lika bra.

> Måste jag då ha t.ex crontab också? Räcker det inte med owfs för att läsa av sensorn?

Cron gör ingenting annat än att köra valda program vid valda tidpunkter. Vill du spara undan temperaturvärden till din andra server med jämna mellanrum så lägger du in en sådan rad i din crontab-fil genom crontab-kommandot som Macce visade.
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Om jag går in i /mnt/1wire och kör ls så visas 6st mappar. Med lite ascii-grafik ska jag försöka visa hur det ser ut i dessa mappar:

Kod: Markera allt

bus.0 (denna mapp är tom)

settings
    |
    +--cache (denna mapp är tom)

statistics
    |
    +--bus
    +--cache
    +--directory
    +--errors
    +--read
    +--treads
    +--write

structure
    |
    +--01
    +--02
    +--09
       osv

system
    |
    +--adapter
    +--connections
    +--process

uncache
    |
    +--bus.0
/mnt/1wire/statistics/read innehåller:
bytes
cachesuccess
success
tries.0
tries.1
tries.2
tries.ALL
cachedbytes
calls

nano success (i mappen statistics/read) visar 60. Nästa gång jag visar innehållet står det 64. Gången efter 68. osv.

nano tries.ALL (i mappen statistics/read) visar 20. Nästa gång 22. Gången efter 24. osv.


Som du ser så är det långt ifrån lätt att förstå var sensorns temperatur-värde lagras. http://owfs.sf.net/ har som sagt inte gett någon ledtråd om hur man gör. Eller rättare sagt: De kommandon som står där visar bara katalogstrukturen ovan.

edit: Hittade en utförligare bild av katalogstrukturen här.
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

"Vill du spara undan temperaturvärden till din andra server med jämna mellanrum så lägger du in en sådan rad i din crontab-fil genom crontab-kommandot som Macce visade."

cykze: Men Macce visade bara hur man skriver i crontab, inget om hur jag först plockar fram värdet från owfs.

Det enda jag lyckas plocka fram från owfs är adress, crc8, family, id, osv. Det verkar vara det enda som owfs-guiderna vill visa. Inget om hur man får fram temperaturen.

Finns det någon (förutom Macce som är på semester) som kör owfs och kan berätta hur man gör? Jag blir mycket tacksam för all hjälp jag kan få.

Att owfs skulle vara lättare än Digitemp stämmer säkert, men i dokumentationen för digitemp står det iallafall hur man gör. När det gäller owfs så verkar det som om man ska veta det bara sådär utan vidare. :?
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

jag har aldrig använt owfs men HÄR står det något om :
to see all the temperatures:
grep '.' 1wire/*/temperature
Som då bör skriva ut värdet från alla givare, men har du filer i /1wire/*/temperature/ ? eller finns inte den katalogen?
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

grep '.' 1wire/*/temperature gav bara no such file or directory

Jag har bara en givare inkopplad.
Det finns en fil som heter temperature i 1wire/structure/10/
men skriver jag cat temperature så står det bara:
@, 000000, 000001, ro, 000012
och det stämmer inte med temperaturen här, som för tillfället är 21.19°C eller 70.14°F. (Kopplade in sensorn i Win98-datorn för att kolla detta.)

skriver jag samma kommando igen så står det likadant fast med ett uppocknervänt frågetecken istället för @ i början.


Som jag skrev tidigare så vet jag att temp-sensorn fungerar. Serieporten fungerar också. Men för att utesluta något annat fel så skulle jag vilja verifiera att serieporten (och Linux Debian) har kontakt med temp-sensorn. Hur gör man detta? Sensorns ID ska ju lagras någonstans, men var? Jag har inte hittat 1017A1E900080077 (som är ID'n) någonstans.

Kom igen nu, ni som tycker det är lättare med Linux. :D

"Gäller det bara att få temperaturen loggad till en fil med jämna mellanrum så löses det enkelt med en rad i cron, precis som Macce skrev i början."

cykze: Men Macce skrev ju aldrig hur man gör med owfs. Han skrev bara att han använder owfs, men sedan står det bara hur man ställer in tidsintervallen med crontab.


edit: Nu har jag dubbelkollat att serieporten fungerar, så då är det inget hårdvaruproblem. (Körde en DOS-diskett och skickade ut echo ata>com1 och sånt.)
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

vad får du fram med tree -a 1wire?

EDIT: Har du testat med live-cd'n? Som finns här Kanske kan få igång det genom att testa den (den skall ha stöd för owfs direkt)?
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

tree -a 1wire gav:
tree: command not found.

Nu ska jag testa live-CD'n. Det är nog i princip det enda jag inte testat. :D


edit: Det fungerade utmärkt. Jag ser temperaturen! Behövde inte ändra någonting alls. Klickade bara på OWFS och valde "show all".
Nu gäller det att komma på varför det fungerade här och inte "hos mig". :)

Det jag först lägger märke till är att "min" Linux (Debian) saknar mappen 10.17A1E900080077 som finns direkt under katalogen 1wire på DSL-Linux'en.

edit 2: Adress-mappen (10.17AE90osv..) *ska* finnas även i min installation. I den mappen ska temperature-filen finnas som då ska innehålla temperatur-värdet. Aha! Äntligen fattar jag varför det står cat 1wire/10*/temperature överallt. :D Det kanske är så att den minimalistiska konfigurationen av owfs även orsakade att någon viktig funktion valdes bort.

Såhär ser den nuvarande konfigurationen ut:
./configure --disable-owhttpd --enable-owfs --disable-usb --disable-owserver --disable-owftpd --disable-owcapi --disable-swig --disable-owperl --disable-owpython --disable-owtcl

DSL-Linux (som fanns på CD'n jag testade med) kunde läsas av via nätverket, men det ska inte påverka om adress-mappen skapas eller inte.


Det här blev lite rörigare än jag trodde, men det är väl så det ska vara: Roliga saker bör väl inte var för lätta. :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

De som känner mig brukar säga att jag är så envis. Därför är klockan 3:16 och jag konstaterar glatt:

Jag lyckades! :) 8) :whoho:

Felet var inte parametrarna i ./configure utan att owfs-sajten inte berättade hur man kollar så att owfs och fusermount har kontakt med sensorn. Ni anar inte hur mycket jag har tröttnat på att lusläsa på http://owfs.sf.net/ :D Till slut så lade alla papper med utskrivna guider åt sidan och grävde mig in i sökvägarna tills jag förstod hela uppbyggnaden. Efter några justeringar och slutligen en om-montering av /mnt/1wire så fick jag kontakt med sensorn och då kom adress-mappen upp i /mnt/1wire!

Sedan var det bara att skriva cat /10*/temperature för att se att det var 11.5°C ute. :)

Det här ska jag fira med att ..hm, sova! Det känns som man behöver det efter allt detta. :D


Nästa steg blir att labba med crontab och RRDtool



edit: En fråga: Efter en reboot måste jag köra modprobe fuse och owfs -d /dev/ttyS1 /mnt/1wire, annars är 1wire-mappen tom. Minns inte hur man fixar så att detta körs automagiskt. Det är ju (förhoppningsvis) inte så ofta man behöver starta om servern, men det vore ändå bra om man slapp skriva det manuellt. Så... Hjälp? :)

edit igen: 7st smilies i ett och samma inlägg?! :lol:
..ok, det blev 8st.
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

Hmmm, det var ett par år sen jag körde linux sist. Men i /etc/rc.d/ ligger väl en massa startupscript (i slackware iaf)...

Grattis förresten, jag vet hur det är att försöka få saker att fungera i linux. Kommer ihåg vilka problem jag hade med att bränna min första skiva i linux för 8 år sen
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Tack! :)
Nä, det är inte lätt innan man kommer på hur allt fungerar. Har inte testat bränna en skiva ännu, men förr eller senare så måste jag nog det. :)


Jag hittade ingen rc.d-mapp, men däremot rc.1 rc.2 osv. Men google räddade mig. Sökte på debian startup-script och första träffen var HowTo create a startup script in Debian :) (Borde ha hittat den igår, men hur skärpt känner man sig vid halv fyra på morgonen...) :D

Guiden i länken ovan fungerade perfekt!
Jag gick in i /etc/init.d/ och kopierade reboot (för att ha som mall). Döpte den till jimmy-startup.
Ändrade i filen, sparade och körde chmod 755, bara för att vara säker.
För att Debian ska köra den vid uppstart så knappade jag in:
update-rc.d jimmy-startup defaults 20

Klart!
Vilken bra början på midsommarafton. :)


edit: Länk till min förra DS18S20-tråd (där allting började). Där finns även lite bilder på Macce's temperatur-logger.


edit igen: Nu när alla problem är lösta så börjar det bli riktigt roligt. Har gjort lite script som läser av sensorerna och sparar så resten av datornätverket (det lokala än så länge) har tillgång till värdena. Några displayer (än så länge bara i vardagsrum och sovrum) visar aktuella ute-temperaturen. Snart kommer de även visa min/max-temperaturen som varit under dagen och morgondagens temperatur som hämtas från en väderstation i Målilla. (Det var det närmaste jag lyckades komma.) :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Lite onödigt att göra en ny tråd, så jag fortsätter här. :)

Om jag t.ex har ett script som ser ut såhär:

cat /mnt/1wire/10*/temperature >ute.txt

så blir innehållet i filen såhär:

Kod: Markera allt

      15.3125
dvs 6st mellanslag (eller kanske en tab?) innan siffrorna kommer.
Jag har kollat i hjälpen för cat men inte hittat något sätt att komma förbi det.

Någon som vet? Det vore kul om man slapp köra med t.ex ett perl-script som plockar bort mellanslagen.....
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

CAT skriver bara ut textfilen så som den ser ut. Det ställe du skall leta på isåfall är där tempfilen genereras, d.v.s i 1-wiresystemet.
Skriv svar