Pages: 1 2 [3]   Go Down
Author Topic: SmartStrip - Controllo prese elettriche da web  (Read 3259 times)
0 Members and 1 Guest are viewing this topic.
Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Beh sì, l'ho scritto anche qualche post fa! Ho fatto un po' di confusione. La piattaforma di sviluppo principale è una DINo (quindi tipo Arduino Pro + ENC28J60), ma usavo anche una Uno con shield Wiz5100, che però ho dovuto passare a una Mega proprio perché il binario non ci stava più. Se leggi qualche post fa do anche qualche dettaglio in più.

Comunque sulla Uno + Wiz5100 *dovrebbe* starci quando aggiungerò il supporto per usare un termistore come sensore di temperatura al posto del DS18B20 (la libreria OneWire e la stessa Dallas portano via parecchio spazio). Vorrei anche rendere proprio del tutto opzionale il supporto a tale sensore, perché non è detto che serva a tutti. E magari aggiungere il supporto ad un timer per chi preferisce avere prese temporizzate. Insomma, di idee ne ho, di tempo poco. Se qualcuno volesse aiutare...

Comunque grazie per avere provato il frutto del mio lavoro. Come vedi era ben lungi dalla perfezione, ma grazie a te e agli altri che hanno commentato, ora è migliorato smiley.

@tuxduino: Se non compilasse avrei già corretto l'errore... Per inciso, la tua soluzione non è detto che funzioni, perché da qualche parte potrei chiamare get_get_parameter() con un argomento che non è const, per questo ho proposto una soluzione alternativa, che fa sì che la chiamata funzioni con argomenti const e non const. Comunque vedrò di fare chiarezza, i cast piacciono poco anche a me.
« Last Edit: November 27, 2012, 08:46:19 am by SukkoPera » Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Diciamo che il 18b20 per me è indispensabile in quanto ho idea di utilizzarlo per gestire la temperatura in casa e se ci riesco lo vorrei espandere circa ad 8 zone.
ho cercato un po in rete e a livello di precisione (.5 gradi) e a livello di distanza su bus semplice, anzi teoricamente forse funziona a 2 fili) puo fare 25 metri e non credo che esista un sensore migliore di questo ad un prezzo accettabile (sono ben accette delle smentite, ma bisogna rimanere sotto i 10 euro a sensore)
per quanto riguarda l' aiuto nessun problema, le modifiche o implementazioni ti terro al corrente.
Ciao
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep, nella modalità "parasite power" il 18b20 funziona a due fili, pur con alcune limitazioni (principalmente la velocità di lettura, ma nel tuo caso non dovrebbe essere un problema critico). Però potresti prendere in considerazione anche i DHT11/22, che ti permettono di misurare anche l'umidità, vedi qua: http://learn.adafruit.com/dht.

Comunque il tuo progetto è interessante, discutiamone insieme! Sarei ben lieto di lavorarci.
Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ce li ho gia, non servono a niente, leggono +- un grado, non hanno i decimali, ovvero dopo la virgola è sempre 0 quindi o leggono 20 o 21 e per un termostato ambiente nonè sufficiente come precisione, al massimo potrebbe andare bene il mezzo grado.
comunque oggi è arrivato il 18b20 e adesso lo provo.
i dht11 si leggono in 250ms, questo?
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per quel che ne so, il DHT11 si legge massimo una volta al secondo, e può ritornare dati vecchi di qualche secondo. Quanto impieghi la lettura in sé non lo so. Credo comunque che il DS18B20 sia più veloce e più preciso (e io l'ho pure pagato meno!). Così, a naso (quindi non fidarti, potrei dire castronerie, dai un occhio al datasheet), credo si parli di qualche decina di ms, che diventano centinaia se alimentato in parasite power.

Mi piacerebbe tanto scrivere una libreria che astragga l'uso dei vari DHT11, DS18B20, termistori, ecc, tramite un'unica interfaccia, ma ogni astrazione porta via spazio in RAM e flash, che sulle nostre MCU sono le risorse principali smiley-sad.
« Last Edit: November 27, 2012, 09:43:52 am by SukkoPera » Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, provato adesso e molto piu veloce del dht11 che costa il quadruplo ma hanno la basetta con il connettore(2 li ho pagati 20€ il ds18b20 3.50€ solo chip)
secondo me si puo leggere anche una decina di volte al secondo anche perche, credo, che questo bus una volta inizializzato sia di sola lettura per il micro e i sensori che sono collegati sparano continuamente la lettura sincronizzandosi fra di loro?

per la seconda parte adesso come adesso non contare su di me, riesco a malapena a far partire uno sketch gia funzionante!
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@tuxduino: Se non compilasse avrei già corretto l'errore...

Naturalmente smiley Sottolineavo lo stupore O_o che mi prende quando un pezzo di codice mette in crisi quelle che fino a quel momento sembravano certezze smiley-grin

Per inciso, la tua soluzione non è detto che funzioni, perché da qualche parte potrei chiamare get_get_parameter() con un argomento che non è const, per questo ho proposto una soluzione alternativa, che fa sì che la chiamata funzioni con argomenti const e non const.

I due casi non sono simmetrici. Ciò che è proibito (tenendo sempre a mente il dubbio esposto prima) è "rilassare" i vincoli, non aumentarli. Spiego meglio:

Code:
void f1(const char* buf) {  // codice... }
void f2(char* buf) { // codice...  }

La dichiarazione di f1 garantisce che la memoria puntata da buf non verrà alterata. Quindi se le passi uno string literal ("CIAO") va bene, se le passi un buffer dichiarato const char*, va bene, ma se gli passi un char*... va bene uguale smiley perché comunque non avverranno modifiche.

Invece la dichiarazione di f2 indica che potrà esserci accesso in scrittura alla memoria puntata da buf. Quindi se hai un const char* il compilatore dà errore, perché si tratterebbe di passare un buffer dichiarato di sola lettura (const) ad un codice che dichiara che potrà modificarne i contenuti (il fatto che poi ciò avvenga realmente all'interno della funzione è irrilevante).

In soldoni la get_get_param() è di tipo f2. Se la trasformi in f1 aggiungendo const all'argomento, poi va bene in tutti i casi.

Comunque vedrò di fare chiarezza, i cast piacciono poco anche a me.

Concordo.

E aggiungo che tutto 'sto mio pippone su const/non const ha il solo scopo di discutere per approfondire, per il solo gusto di imparare qualcosa di nuovo.

smiley
Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora ti confermo che con ide 1.0.1 tutto ok mentre con la 1.0.2 ritornano fuori un sacco di errori.
non sono una cima ma un po riesco a districarmi.
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@tuxduino: Giusto, hai perfettamente ragione. Spesso faccio casino col const, e confondo i vari tipi di dichiarazione smiley-sad.

@bacconi: Ci do un occhio ASAP!
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Finalmente ci ho capito qualcosa! Il problema del const non l'ho mai incontrato perché si verifica solo sull'IDE 1.0.2, e finora avevo sempre usato l'1.0.1.

La soluzione è stata effettivamente quella proposta da tuxduino, nella funzione già segnalata e in un'altra di Panic. Ho appena fatto commit e push delle modifiche, per cui da questo momento SmartStrip dovrebbe essere 100% compatibile con l'IDE 1.0.2, grazie della segnalazione e relativa soluzione smiley-wink.
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

go man! smiley
Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti. provo a postare ma da molte parti non posso rispondere o aprire un nuovo thread.
Sono riuscito a far funzionare una piccolo sketch con interfaccia web (webduino) e sono arrivato ad un buon punto.
volevo ottimizzare la visione sul browser del telefono, in quanto di default e ad ogni refresh le dimensioni sono troppo piccole.
ho provato a cercare ma sinceramente non so nemmeno con precisione cosa.
se qualcuno mi puo aiutare..
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La sezione principale è chiusa.
Puoi aprire i nuovi post nella sezione Generale, in Hardware e in Software.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: 1 2 [3]   Go Up
Jump to: