Vill kunna logga lufttryck, Telldus Live!.

Moderator: Telldus

tronde
Posts: 593
Joined: Thu Jan 18, 2018 11:08 am

Re: Vill kunna logga lufttryck, Telldus Live!.

Post by tronde » Fri Jan 31, 2020 5:15 pm

Dette ser jo bra ut.

Litt merkelig at noen finner på å bruke kilopascal som lufttrykk, for det er som du sier hektopascal som meteorologene bruker. Det kommer jo fra tiden med millibar som er samme tallet. I utgangspunktet er jo hektopascal en bastard siden man vanligvis endrer i trinn på 1000, men det er den historiske koplingen til millibar som er bestemmende her.

Når det gjelder kalibrering, kan du jo legge til eller trekke fra en passende verdi selv hvis du ønsker. 2 hPa er ikke store feilen, og lufttrykket kan endre seg en del, selv over korte avstander. Vet du din egen høyde over havnivået?

Du må gjerne skrive litt når du gjør noe med lyssensoren også. Mitt håp er at flere skal ta sjansen og prøve seg, og nå er det bevist at lufttrykkføler er mulig med enkle midler.

Paxman
Posts: 53
Joined: Thu Jan 18, 2018 11:08 am

Re: Vill kunna logga lufttryck, Telldus Live!.

Post by Paxman » Sun Feb 02, 2020 3:57 pm

Barometern snurrar fortfarande på bra här nu efter några dagar, och jag börjar få en tjusig graf i Live!.

Skärmavbild 2020-02-02 kl. 16.33.24.JPG
Skärmavbild 2020-02-02 kl. 16.33.24.JPG (79.03 KiB) Viewed 1769 times
Som det är nu uppdateras värdet typ var femte minut (ibland dock längre) vilket kanske är lite onödigt. Jag vet att det är "delay" som styr detta, men i koden för mitt lilla projekt finns det fem poster för "delay". Jag kan inte identifiera vad de olika "delay"-posterna gör, och jag funderar på ifall de inte krockar med varandra. Kanske skulle någon eller några av dem kunna tas bort? Så här ser koden ut, och jag har blåmarkerat "delay"-posterna.




#include "PCR800_TX.h" // Use local library

int PCR800_1_ID = 0x3F; // SensorID for sensor #1. 3F is ID. See table above.

PCR800_TX PCR800_TX(2); // Pin 7 on Arduino to radio transmitter data input pin. Change to suit your needs.


#include <Wire.h> // Här startar första tillägget av BMP280
#include <SPI.h>
#include <Adafruit_BMP280.h>

Adafruit_BMP280 bmp; // use I2C interface

Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor(); // Här slutar första tillägget av BMP280

void setup(void)
{

// Serial.println(F("BMP280 Sensor event test")); // Här börjar andra tillägget av BMP280

if (!bmp.begin(0x76)) {
//Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1) delay(10);
}

/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */

// bmp_temp->printSensorDetails(); // Här slutar andra tillägget av BMP280

Serial.begin(9600);
delay(300);

PCR800_TX.setChannel(9); // 1 to 15 is valid. Seems not to be implemented by Telldus
}

void loop(void)
{
sensors_event_t temp_event, pressure_event; // Här börjar tredje tillägget av BMP280

bmp_pressure->getEvent(&pressure_event);


delay(1000); // Här slutar tredje tillägget av BMP280



// Code for sensor # 1

PCR800_TX.setSensorID(PCR800_1_ID); // Sensor ID according to the table shown above. Use hex value. (0x3F). 3F is ID.

PCR800_TX.setConvRainrate (2.54); // This set the conversion factor for the Rain rate value. Divide input value by 2.54 will convert an input value of 1 in this code
// to 0.1 mm in Telldus Live!. A conversion factor that is a multiple of 254 will convert to a metric value.
// A conversion factor that is a multiple of 10 will convert to an imperial value. A conversion factor of 1
// will not convert the input value. Do NOT use a factor = 0.


PCR800_TX.setRainRate((pressure_event.pressure) * 10); //* 10 tillaggt för att få decimalen rätt
// Input value for rain rate. 1 = 0.1mm. Max value is 25397 (2539.7 mm) if the conversion factor is 2.54.
// A larger value will result in an imperial value of more than 9999 being transmitted.
// The value in Telldus Live! will roll over and start again at zero. It makes sense to check for setRainRate =< 25397.
// Because of rounding errors the conversion from mm to inches and back is not perfect.
// You can experience some minor errors of +/- 0.1 to +/- 0.2 for this value in Telldus Live!


PCR800_TX.setConvTotalrain (pressure_event.pressure); // This set the conversion factor for the Total rain value. Divide input value by 0.254 will convert an input value of 1 in this code
// to 0.1 mm in Telldus Live!. A conversion factor that is a multiple of 254 will convert to a metric value.
// A conversion factor that is a multiple of 10 will convert to an imperial value. A conversion factor of 1
// will not convert the input value. Do NOT use a factor = 0.



PCR800_TX.setTotalRain(253999); // Input value for total rain. 1 = 0.1mm. Max value is 253999 (25399.9 mm) if the conversion factor is 0.254.
// A larger value will result in an imperial value of more than 999999 being transmitted.
// The value in Telldus Live! will roll over and start agian at zero. It makes sense to check for setTotalRain =< 253999.


PCR800_TX.setBatteryStatus(true); // true = battery level OK, false = battery level low.



PCR800_TX.buildAndSendPacket(); // The compilation of the data packet sent over radio begins.



delay(1000); // Give receiving end some time before next transmission. 5000 = 5000ms = 5 sec.

// End code for sensor # 1



delay(10000); // Time to next transmission cycle. No need to flood the receiver, so increase value after testing.
// 10000 = 10000ms = 10 sec.


} // end loop


Jag har rensat bort en del kommentarer och serialPrint-poster för att koden ska vara lite enklare att överblicka. Jag har också lagt in kommentarer för där BMP280-sensorns kod är insatt i sändarens kod. Detta för att få lite hjälp när det är dags att ge mig på ljussensor-projektet.

Gällande det "felaktiga" tryckvärdet så tror jag inte att jag kommer göra något åt det. Jag befinner mig (enligt Google Earth) på 40-45 meters höjd över havet, och enligt SMHI sjunker trycket 1 hPa var åttonde meter. Om jag räknar rätt så borde min sensor då visa runt 5 hPa lägre än vad en kalibrerad sensor gör vid havsnivån. Med icke modifierad kod visar min barometer ca 2 hPa lägre, dvs 3 hPa för mycket, vilket jag tycker är försumbart. För mig är ju heller inte exakta värdet viktigt, utan variationen över tid och om då hela kurvan ligger några hPa lägre eller högre spelar ingen roll.

När jag fått min utbytes NANO ska jag försöka mig på att få igång ljussensorn också. Tänker att jag startar en ny tråd om det, och då kommer jag lägga in en länk här för de som är intresserade.

Efter det är det research av batteriförsörjning av dessa sensorer som gäller.

tronde
Posts: 593
Joined: Thu Jan 18, 2018 11:08 am

Re: Vill kunna logga lufttryck, Telldus Live!.

Post by tronde » Mon Feb 03, 2020 4:11 pm

:wave:

PCR800_TX.setRainRate(((pressure_event.pressure)-5) * 10);

Bør gi deg mer nøyaktig trykk, men som du sier er trend det mest viktige.

***

Den første while (1) delay(10); har å gjøre med initialiseringen av BMP280. Er kun 10 ms.

Den for
Serial.begin(9600);
delay(300);
er vanlig å legge inn for å sikre at serieporten starter opp. Er 300 ms (0,3 sek).


delay(1000); // Här slutar tredje tillägget av BMP280
Er vel for at sensoren skal bli ferdig før den leses på nytt. Har trolig ingen hensikt i praksis i denne koden, men gir slik den står ett sek mer delay enn summen av de to siste.


delay(1000); // Give receiving end some time before next transmission. 5000 = 5000ms = 5 sec.
Er en del av den opprinnelige koden med flere sensorer. Var der for å få et opphold mellom hver sensor. Den kan du slette nå. Hvis den blir stående, gjør det ikke noe galt. Total forsinkelse blir ett sekund mer enn det som bestemmes av neste delay (og det for BMP280).



delay(10000); // Time to next transmission cycle. No need to flood the receiver, so increase value after testing.
// 10000 = 10000ms = 10 sec.
Det er denne som gir syklustiden. Er på 10 sekunder, noe som er kortere tid enn hva du behøver. 30000 gir 30 sek, og 60000 gir 60 sek.


Et alternativ er å slette de to siste delayene, og heller øke denne
delay(1000); // Här slutar tredje tillägget av BMP280

til noe mellom 30000 og 60000.

Bruk av delay er egentlig en litt "stygg" måte å forsinke på, men denne koden skal ikke gjøre noe annet enn å lese en sensor og sende verdien over radio med et bestemt tidsintervall, så da funker det helt fint.


***

De fem minuttene i Live!, kommer av at Telldus ikke lagrer kortere tid i et pro abb. Det er 10 min uten pro. Telldus vil reagere på en hurtigere oppdatering hvis en sensor er brukt som trigger i et event, og vanligvis ser man at sensoren oppdaterer i nettleseren selv om verdien ikke lagres.

***

Hvis du skal spare strøm, er det nok enklest med en pro mini slik som beskrevet her http://www.home-automation-community.co ... l-battery/

Den finnes også i 3V utgave. Ulempen med pro mini er at den ikke har USB-seriekonverter innebygget. Det er nevnt FTDI-adapter. Se på det som et generelt navn for den type adapter. Det er utrolig mye skrot å få tak i når man kjøper noe som er oppgitt å være FTDI, og mange av dem blir også blokkert fordi de er piratutgaver. Det står en del å lese om dette på nettet.

Den foreslåtte CP2102 er et mye bedre valg, selv om den også kan være pirat. Det er fornuftig å finne en som har DTR-pinne. Da slipper man problemet med reset før opplasting av kode. Det som står om 3,3V er viktig, men det er dessverre ikke alltid at signalpinnene på adapteret gir ut 3,3V, selv om chippen mates med det. Når det gjelder kinesere og billig elektronikk, er det nesten like mange muligheter for feil, som antallet kinesere... :shock:

Paxman
Posts: 53
Joined: Thu Jan 18, 2018 11:08 am

Re: Vill kunna logga lufttryck, Telldus Live!.

Post by Paxman » Mon Jun 29, 2020 9:20 am

Nu har det ju gått en tid sedan jag fick igång detta, så jag tänkte avlägga rapport om hur det fungerat.

Det korta svaret är att det fungerat helt perfekt! Jag har inte märkt av några problem med signalkrockar och lufttryckskurvan verkar ha varit helt korrekt, vilket gjort att jag kunnat jämföra hur jag mått med variationerna i lufttrycket.

De senaste veckorna har dock ett litet problem uppstått; sensorn slutar sända utan någon uppenbar anledning. Jag får rycka strömmatningen så den bootar om för att väcka den till liv igen. Jag misstänker att det är något i Nanon som strular, så jag tänkte att jag ska ladda in koden igen. Innan jag gör detta tänkte jag bara hör ifall det finns något annat jag kan göra.

Mvh
Paxman

tronde
Posts: 593
Joined: Thu Jan 18, 2018 11:08 am

Re: Vill kunna logga lufttryck, Telldus Live!.

Post by tronde » Tue Jun 30, 2020 2:59 pm

Paxman wrote:
Mon Jun 29, 2020 9:20 am
Nu har det ju gått en tid sedan jag fick igång detta, så jag tänkte avlägga rapport om hur det fungerat.

Det korta svaret är att det fungerat helt perfekt! Jag har inte märkt av några problem med signalkrockar och lufttryckskurvan verkar ha varit helt korrekt, vilket gjort att jag kunnat jämföra hur jag mått med variationerna i lufttrycket.

De senaste veckorna har dock ett litet problem uppstått; sensorn slutar sända utan någon uppenbar anledning. Jag får rycka strömmatningen så den bootar om för att väcka den till liv igen. Jag misstänker att det är något i Nanon som strular, så jag tänkte att jag ska ladda in koden igen. Innan jag gör detta tänkte jag bara hör ifall det finns något annat jag kan göra.

Mvh
Paxman
Hvis den starter opp korrekt etter strømbrudd, er det ikke noe som tyder på at det hjelper å legge inn ny kode, for den må være OK hvis funksjonen er OK.

Det første jeg mistenker hvis det kun er strømbrudd som skal til for å gjenopprette funksjon, er at du har et problem med strømtilførsel. Hvis spenningen går under et visst nivå, kan nanoen bli ustabil og gå i loop. Dette er kjent som "brownout". Nanoen har så vidt jeg vet ingen funksjon som håndterer dette. Det er vanlig i mikroprossessorkretser å ha en slik funksjon som egentlig ikke er noe annet enn en liten krets som aktiverer reset-funksjonen når spenningen går for lav. Det er en del som er spart bort på hobby-kretsene på grunn av pris og plass.

* Har du prøvd med kun å trykke på reset-knappen på nanoen?

Det er vel ikke lagt inn noen lysdiode i den koden som viser når det sendes, men det bør blinke svakt i dioden for TX hvis jeg husker rett. Er det liv i en av diodene når alt er normalt (ikke den som alltid lyser), og mørkt når det er problemer? Hvis det ikke er er lysdiode som blinker, går det an å aktivere den som er på kortet og koplet til pinne 13.

* Har du prøvd med en annen strømforsyning?

* Mater du strøm via USB, eller en av de andre pinnene?

Det kan være litt tidkrevende å lete etter feil hvis det er slik at strømforsyningen er nær grensen, og man ikke har gode instrumenter å måle med, men det er vanligvis til å finne ut av.

Paxman
Posts: 53
Joined: Thu Jan 18, 2018 11:08 am

Re: Vill kunna logga lufttryck, Telldus Live!.

Post by Paxman » Sat Jul 04, 2020 1:42 pm

Hej igen Tronde! Tack för ditt svar. Det dröjde lite att återkomma, men jag ville vänta tills det hängde sig igen...vilket det gjorde inatt.
tronde wrote:
Tue Jun 30, 2020 2:59 pm
Hvis den starter opp korrekt etter strømbrudd, er det ikke noe som tyder på at det hjelper å legge inn ny kode, for den må være OK hvis funksjonen er OK.
Fint, då avvaktar jag med att lägga in koden på nytt.
Det første jeg mistenker hvis det kun er strømbrudd som skal til for å gjenopprette funksjon, er at du har et problem med strømtilførsel. Hvis spenningen går under et visst nivå, kan nanoen bli ustabil og gå i loop. Dette er kjent som "brownout". Nanoen har så vidt jeg vet ingen funksjon som håndterer dette. Det er vanlig i mikroprossessorkretser å ha en slik funksjon som egentlig ikke er noe annet enn en liten krets som aktiverer reset-funksjonen når spenningen går for lav. Det er en del som er spart bort på hobby-kretsene på grunn av pris og plass.

* Har du prøvd med kun å trykke på reset-knappen på nanoen?
Testade det nyss. Röda LED:en blinkade till, men inget mer hände.
Det er vel ikke lagt inn noen lysdiode i den koden som viser når det sendes, men det bør blinke svakt i dioden for TX hvis jeg husker rett. Er det liv i en av diodene når alt er normalt (ikke den som alltid lyser), og mørkt når det er problemer? Hvis det ikke er er lysdiode som blinker, går det an å aktivere den som er på kortet og koplet til pinne 13.
Jag har aldrig noterat ifall dioden blinkar...har dock för mig att jag sett det någon gång. Jag studerade den en stund och vad jag kunde se lyser den med fast grönt sken...fast jag kanske inte väntade tillräckligt länge.
* Har du prøvd med en annen strømforsyning?
* Mater du strøm via USB, eller en av de andre pinnene?
Jag kör med iPhone-laddare till USB på Nanon, som jag precis bytt till en annan för att se vad som händer.
Det kan være litt tidkrevende å lete etter feil hvis det er slik at strømforsyningen er nær grensen, og man ikke har gode instrumenter å måle med, men det er vanligvis til å finne ut av.
Precis...den kan ju fungera flera dagar utan problem. Jag testar med den andra iPhone-laddaren ett tag nu. Fryser Nanon igen får jag testa med en annan USB-kabel för att utesluta den.

Återkommer!

Paxman
Posts: 53
Joined: Thu Jan 18, 2018 11:08 am

Re: Vill kunna logga lufttryck, Telldus Live!.

Post by Paxman » Sun Jul 05, 2020 12:40 pm

Redan inatt hängde den sig igen...och nu börjar jag skönja ett mönster; åtminstone vid tre gånger har hängningen inträffat runt kl 05:05 (05:05, 05:06 samt inatt 05:06). Jag tror (med stark betoning på "tror") att detta problem uppstod i samband med att jag satte en Telldus av/på-plugg i samma fördelardosa som iPhone-laddaren som driver Nanon sitter (pluggen hanterar en schemaläggning av omstart av min TimeCapsule i ett försök att minska dess instabilitet gällande wifi och den bryter givetvis endast strömmen till TCn. Pluggen stänger av strömmen kl 05:00 och slår på den 05:05).

Det känns inte helt orimligt att denna plugg och/eller TCns strömbehov vid omstart kan störa strömförsörjningen av Nanon...speciellt om den är känslig för svajig ström. Nu har jag flyttat Nanon till ett annat eluttag i ett annat rum och testar ifall det gör någon skillnad.

Post Reply