Temperatur logger - dubbel sidigt kretskort

Berätta om dina pågående projekt.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

rickeboy skrev:Tycker inte jag har några jätte problem med PHP... det är snarare hela databas ideerna som gör det klurigt för mig... lyckas inte tänka i dem banorna riktigt... det kommer... jag har inte så brottom...
Har du koll på PHP så är MySQL inte svårt. Det är bra mycket smidigare än att hålla på med textfiler direkt.

"SELECT * FROM tempr_data" för att hämta temperaturdata.
"INSERT INTO tempr_data (datum, sensor_id, tempr) VALUES (now(), '$senor_id', '$tempr')" för att lägga in ett temperaturvärde.

Svårare än så behöver det inte vara.
Det med C och GD verkar MKT bra... frågan om man ska göra att i PHP eller C först eller snarare om man bara ska göra att i C... hmm... fårse imorrn... lutar åt C...
Det är inte så jättekrävande att generera bilden. Du gör det ju bara en gång i timmen eller något sånt. Så du kan gott köra med PHP och GD. Har inte för mig att jag tjänade så mycket att gå över till C. Kanske 2 sekunder för att generera ett diagram.
Åter till varför jag använde en PIC :wink::
som sagt jag hade alla delar hemma...
Jag har också kollat på den sidan med å bara koppla det till COM porten så, har dock inte alla komponenter hemma... personligen tycker jag det förstör halva nöjet dessutom, visst kan man skriva programmet som hanterar det också men det är tycker iaf jag är några gånger klurigare än å bara ta emot seriell data då du vet att den finns i bufferten :) Har en känsla av att min lösning kommer funka några år den också :wink: ser ingen anledning att lägga ner mer tid på hårdvaran så mkt enklare vet jag inte... har väl med "nöjet" å göra igen, smaken är som baken ser detta mer som en utmaning... nu är det dock mjukvara som gäller :)
Helt rätt, håller med dig! Passa på att experimentera så mycket själv som möjligt. Det lär man sig mest på och det är roligast! Oavsett om det gäller hårdvara eller mjukvara.
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

cykze>> Fasen! Du sätter ju griller i huvet på mig! Hehe :lol:
Det är ju C/C++ programmet som ska skriva till tabellen och det är sedan PHP som ska göra diagrammet... hmm... jag har kollat på MySQL++ och det är på tok för krångligt känner jag för ngt sådant här projekt... åtminstone att lära sig eller lyckas använda... hur ska jag göra för att få in värdena i MySQL databasen då? mha C/C++

Håller väl inte med om att bara för att man kan PHP så kan man MySQL men jag är ju inte bättre än att jag kanske ändrar mig då jag kan MySQL också... eller PHP bättre :wink: (tycker själv PHP är väldigt likt C/C++ därför jag gillar att så det känns som om man har att lite lättare då...)

Hade varit gött om du ville förklara lite för mig... t ex hur tabellerna skulle kunna se ut... kod ideer etc... MySQL exemplerna man har kollat på har kanske varit lite för kluriga helt enkelt... som sagt ska sätta mig ner med att imorrn... har jobbat på hemsidan idag...
//Rille
Senast redigerad av rickeboy 15 april 2004, 23:23:00, redigerad totalt 1 gång.
Användarvisningsbild
zeus
Inlägg: 7058
Blev medlem: 17 juni 2003, 22:13:44
Ort: Sthlm.

Inlägg av zeus »

rickeboy skrev:Det är nog vanligare med hemmabyggda programmerare än inte...
Skippa pennorna... kör med fotoresist, OH-"papper", laserskrivare, samt Eagle eller liknande PCB-CAD program...

Oberoende hur mkt jag hatar denna mening så är den faktiskt ganska sann: "Om man inte frågar får man heller inte ngt veta" (innan Google fanns antar jag dock... eller forum som detta :) )
//Rille
Men om man bara ska göra något enkelt, typ tre komponenster orkar jag inte lägga in det i eagle, sen skriva ut och mixra.

Är det mer anvacerade saker kör jag självklart på Eagle + fotoresist, blir även snyggast!

Jo, det är nog sant och det känns som jag lärt mig väldigt sedan innan ef, har ju byggt(efter många om och men) en motordriven soffa med PWM-styrning. O=)
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

rickeboy skrev:cykze>> Fasen! Du sätter ju griller i huvet på mig! Hehe :lol:
Det är ju C/C++ programmet som ska skriva till tabellen och det är sedan PHP som ska göra diagrammet... hmm... jag har kollat på MySQL++ och det är på tok för krångligt känner jag för ngt sådant här projekt... åtminstone att lära sig eller lyckas använda... hur ska jag göra för att få in värdena i MySQL databasen då? mha C/C++

Håller väl inte med om att bara för att man kan PHP så kan man MySQL men jag är ju inte bättre än att jag kanske ändrar mig då jag kan MySQL också... eller PHP bättre :wink: (tycker själv PHP är väldigt likt C/C++ därför jag gillar att så det känns som om man har att lite lättare då...)

Hade varit gött om du ville förklara lite för mig... t ex hur tabellerna skulle kunna se ut... kod ideer etc... MySQL exemplerna man har kollat på har kanske varit lite för kluriga helt enkelt... som sagt ska sätta mig ner med att imorrn... har jobbat på hemsidan idag...
//Rille
Hittade den här kodsnutten som jag skrev då jag kopplade in min första DS18S20-sensor. Det ser dock ut som att jag har tagit lite direkt från docs:en på mysql.com.

Kod: Markera allt

try
{
    Connection con("tempr","localhost","root","");
    Query query = con.query();

    query << "INSERT INTO tempr_data (tempr,datum) VALUES ('"<<_pszTemp<<"',NOW())";

    Result res = query.store(); // "Result res = " kan säkert utelämnas
}
catch (BadQuery er)
{
    //cerr << "Error: " << er.error <<  endl;
    return 1;
}
catch (BadConversion er)
{
    //cerr << "Error: Tried to convert "" << er.data << "" to a ""
    //  << er.type_name << ""." << endl;
    return 1;
}
catch-blocken och try är frivilliga, men bra vid felsökning.

På tok för krångligt? :D

-------------------------------------
När det gäller själva upplägget av databaset så kan du köra med dessa SQL-satser:

CREATE DATABASE tempr;

USE tempr;

CREATE TABLE tempr_data (
ID int(11) NOT NULL auto_increment,
tempen float default NULL,
sensid tinyint(4) default '-1',
datum datetime default NULL,
PRIMARY KEY (ID),
UNIQUE KEY ID (ID)
) TYPE=MyISAM;

Du kan köra dom direkt via mysql-klienten som följer med MySQL. Starta med "mysql -u root -p" och skriv in kommandona ovan.

Enklare och mer överskådligt är att använda ett webbbaserat gränssnitt som t ex phpMyAdmin för att skapa tabellen.

När du väl har skapat tabellen så är det bara att lägga in värden genom t ex C++-koden ovan. Hur du sedan får ut värdena genom PHP sen får du klura på själv. :)
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Tack åter igen... en lagom knuff i rätt riktning...
Kan konstatera att jag redan kör phpMyAdmin... hmm... koden för att slänga in att verkar inte jätte krånlig ändå, vart är det för lib etc du använder då? Är det MySQL++?
Att få ut att med hjälp av PHP tror jag faktiskt att jag kan reda själv ska iaf försöka, annars lär det märkas om inte annat :)

Inte bara jag som är en nattuggla... märker jag :razz: har ju som sagt jobbat med hemsidan och den verkar funka bra nu...

//Rille
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Ja, jag använder MYSQL++ i exemplet ovan. Alternativt kan du använda libbet som följer med MySQL. Men då blir det C istället.

C:

Kod: Markera allt

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <mysql/mysql.h>
/* alla headers behövs inte, men jag orkar inte testa vilka kan tas bort */

int main()
{
MYSQL db;
char buf[1024];

mysql_init( &db );
mysql_real_connect(&db,"localhost","root","","tempr",3306,NULL,0);
snprintf(buf,sizeof(buf)-1,"INSERT INTO tempr_data (tempr,datum) VALUES ('%f',NOW())", fTempr);
mysql_query(&db,buf);

mysql_close(&db);

return 0;
}
gcc -Wall sql.c -o sql -lmysqlclient

-----------------------------------------------------------------

C++:
Ladda hem, kompilera och installera MySQL++.

Kod: Markera allt

#include <mysql++>

int main()
{
    Connection con("tempr","localhost","root","");
    Query query = con.query();

    query << "INSERT INTO tempr_data (tempr,datum) VALUES ('"<<"_pszTemp"<<"',NOW())";

    query.store();

    return 0;
}
gcc -Wall sql++.cpp -o sql++ -lsqlplus


Nu är det nog dags att gå och lägga sig snart. :)
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Jag gjorde tablet så här istället:

Kod: Markera allt

ID   	    int(11)  	      No      auto_increment   	    	    	    	    	    	
sens1  	double 	  	Yes  	NULL  	  						
sens2  	double 	  	Yes  	NULL  	  						
datum  	datetime       Yes     NULL
Har installerat MySQL++... va ganska krångligt... tror det funkar har inte testat med ngn kod ännu... är dock där nu... ska börja skriva classen för att :)

//Rille
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Så där ja... nu har iaf lyckats göra så att programmet slänger in grejorna i databasen :D

Jag kör dock på ditt C exempel cykze... och kompilerar med följande rad...

Kod: Markera allt

g++ -Wall -pedantic -Wno-deprecated -lsqlplus -o tempd tempd.cpp
I vilket fall som helst så funkar det... vilket är grymt roligt... vad som återstår i projektet:
1. Snygga till alla classer (förnärvarande 2 st: tempd och mysqlh) dessa ska helt enkelt bli flera gånger snyggare att titta på... tja... jag ska försöka iaf :wink:
2. Fixa PHP scriptet som ska göra diagrammet... kommer bli grymt intressant :)
3. Slänga ihop allt så att ni kan ta del av att :)
Undertiden: Låta er få reda på hur det går :)

//Rille
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

> g++ -Wall -pedantic -Wno-deprecated -lsqlplus -o tempd tempd.cpp

Hmm, du programmerar i C++, kör "C-koden" för MySQL och länkar med sqlplus. Nu när det finns ett väldigt trevligt C++-lib för MySQL så skulle jag helt klart använda det om jag skriver programmet i C++. Men det får du ju såklart avgöra själv. Men jag tycker att det blir mycket enklare och snyggare med C++ rätt igenom. Väljer du ändå C-varianten så är det "mysqlclient" du ska länka med, inte sqlplus.

Vad ska du med "-Wno-deprecated" till? :)

Kul att se att du har kommit en bit! :)
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Vet att C++ lib:et för MySQL är trevligt... det funkar ju dock inte så bra... dem har ju dessutom gjort ett dåligt jobb då man inte kan installera det utan att patcha och ha sig... installationen går klock rent efter det dock, men sen när man ska börja använda det stötter man på problem, iaf jag... Vet att det är mysqlclient man "ska" köra med... gör det nu... har läst in mig som sejtan under dagen nämligen... va ju några timmar sedan förra inlägget :)

Om det hade funkat hade jag kört med MySQL++ fullt ut... ser ingen mening med å bråka med att nu dock... det funkar ju :wink: , riktigt bra dessutom...

Ska börja med PHP nu hade jag tänkt... se lite hur man öppnar databasen via att, kolla lite hur man får tag i värdena etc... hur man lättast ska göra för att rita ut grafen... dvs hur man ska samla dem i arryerna etc... som sagt... ska ta tag i att nu :)

Tack för all hjälp förresten :) Har gjort allt BETYDLIGT mkt lättare...

//Rille
jensa
Inlägg: 149
Blev medlem: 28 oktober 2003, 18:16:49
Ort: Umeå

Inlägg av jensa »

Jag väntar på att någon ska köra på Ds1820 (eller liknande) kopplad till en AVR med extra minne som den sparar i. Ifall man sedan har datorn avstängd i typ en vecka eller nått så har den endå lyckats såara alla mätvärden och då dumpar man det i en MySQL databas o.s.v.

Kör själv med direkt till burken metoden á la knuts ( http://www.servern.nu/knuts/temp.html )
jensa
Inlägg: 149
Blev medlem: 28 oktober 2003, 18:16:49
Ort: Umeå

Inlägg av jensa »

Fan det blev en dublett! :-/
Senast redigerad av jensa 23 april 2004, 22:10:01, redigerad totalt 1 gång.
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Att du inte själv tar och försöker då?

Hur sparar du och visar dina värden?

Jag har kommit ganska långt på grafritar grejen... det är bara tidsaxlen som gör det hela lite klurigare... fårse om jag inte kommer på ngn lösning idag... ska jobba med att efter maten...

//Rille
jensa
Inlägg: 149
Blev medlem: 28 oktober 2003, 18:16:49
Ort: Umeå

Inlägg av jensa »

Jag gjorde det enkelt och använde "Temp 'o matic" funkar med linux
niclas
Inlägg: 9
Blev medlem: 23 juli 2004, 20:57:13

Inlägg av niclas »

Om du inte vill rita graferna själv kan du lagra mätvärdena i en Round Robin Database (rrdb), http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/. Den kan skapa grafer själv. Du kan även ta en kik på digitemp http://www.digitemp.com för lite hjälp hur man kan skapa databasen, finns några script i tar.gz filen.
Skriv svar