Över 1200 rader kod senare... Projekt "Friendly clock" ser sitt slut. Kan inte komma på mer info jag vill samla eller visa.
Varnar vid hög vindhastighet. Varnar om barometertrycket faller >= 6 mb inom en timme. Varnar om barometern visar regn eller snö. Varnar om luftpumpen inte ger tillräcklig effekt/stannat. Varnar om internet ligger nere. Varnar om utetempen sjunker >= 5 C inom en timme.
Visar högtider och viktiga dagar som sophämtning, födelsedagar tex. Visar Temperaturer ute, i källarn, uppe, och på vinden. Visar luftfuktighet i källarn, uppe och på vinden. Visar barometertryck nu och förra timmens. Visar alla senaste värden och alla föregående så man kan se om dom höjs eller sjunker. Visar max/min värden på ute/inne tempen per månad. Visar luftpumpens uteffekt i procent + In/ut temp till pumpen och diffen mellan de båda. Visar max/min barometer tryck per månad. Visar slumpade citat från skogstok :-) Visar dagar kvar till lön, om dagar < 5 :-)
Displayen dimmas och högtalaren/sirenen stängs av på natten så den inte stör. Blinkar grönt eller blått varje sekund för +/- grader ute, eller rött vad larm. Sparar alla data till minnet så den tål en omstart. Varje hel/halv timme så spelar den en truddelutt från mario bros.
Month 2 Coldest month out 1- Warmest month out 0+ Coldest month In 18 Warmest month In 22 Airpump 100 % Last Barometer 1038 Barometer Now 1038
Bakslag.. La hela kvällen på att försöka fixa till en Nano i stället för en Mega. Nanon kostar typ 10:-. Megan 60:- kanske.
Visade sig att Nanons minne inte räckte till.. Bla musiken och alla bibliotek för givarna sög musten ur den. Och jag vill kunna presentera mer data eller häkta på fler givare än jag har nu. En bortkastad kväll..
Tillbaks till ruta 1 igen. Sitter o funderar på om jag ska skita i radion och bara använda ett nätverkskort. Med Megan så har jag hur många portar som helst att leka med. Och då kan jag plocka precis vilken data jag vill.. I realtid dessutom..
Sensor : 1 (Outside 1) Temp : -4 C 74 seconds since last update. This took 3.00 milliseconds to execute.
En liten bieffekt blev att jag kan både få "+0" och "-0".
All data skickas nu två ggr. Så nu uppdateras alla givare inom 10 minuter. Har ~30 sek. kvar i cyclen innan data måste postas till webservern, så jag skulle kunna skicka det 3 ggr. Men det duger så länge.
Lödde på 2 meter telefonkabel plus en lysdiod så man ser när den arbetar. Verkade inte påverka räckvidden någonting.
Just nu så kör bara Arduinon en loop som checkar mottagaren. Knappast användbar till något annat just nu.. Hittade en intressant funktion som kollar i fall någonting kommit in. Har det det gjort det så kör vi nått annat tills det trillar in nåt.
Ett avbrott i koden på 65 millisekunder (0.065 sekunder).
Men då trixade o fixade jag ju med en massa annat också. Strippar man koden och plockar bort all debug info så lär tiden sjunka till hälften.
Men varför ramlar värdena in så sporadiskt? Mätte tiden det tar för mottagaren att processa ett värde.. 1-2 millisekunder.. Arduinon i källarn skickar max ett värde varannan sekund.
Sensor : 6 (Pump Out) Temp : 47 C 41 seconds since last update. This took 1.00 milliseconds to execute.
Men efter 77 sekunder så hade alla givarna rapporterat in. Så det är väl ok antar jag.
1 1 1 1 0 1 1
Total run time 75 seconds.
1 1 1 1 1 1 1
Total run time 77 seconds
Nästa försök gick inte lika bra.
1 1 1 1 1 1 1
Total run time 814 seconds.
Inte nästa heller.. Fast jag ökat sänd intervallen till 4 sekunder.
if (vw_get_message(buf, &buflen)) { char Sensor1CharMsg[5] = "", Value[5] = "", Sensor[5] = "", Temp[5] = ""; int Real_Temp = 0, Real_Sensor = 0, i = 0, Sensor1Data = 0; long totaltime = (currenttime - lasttime) / 1000;
lasttime = millis();
for (i = 0; i < buflen; i++) Sensor1CharMsg[i] = char(buf[i]);
Sensor1CharMsg[buflen] = ' '; Sensor1Data = atoi(Sensor1CharMsg); // Gör ett heltal av all mottaget data. itoa(Sensor1Data,Value,10); // Gör en sträng av mottaget data.
sprintf(Sensor, "%c ", Value[0]); // Filtrera ut vilken givare som skickat data. sprintf(Temp, "%c%c ", Value[1], Value[2]); // Filtrera ut tempen.
Real_Temp = atoi(Temp); // Gör om Tempen till ett heltal. Real_Sensor = atoi(Sensor); // Gör om givare till ett heltal.
Serial.print("Sensor : "); Serial.println(Real_Sensor); Serial.print("Temp : "); Serial.print(Real_Temp); Serial.println(" C"); Serial.print(totaltime); Serial.println(" seconds since last update."); Serial.println(""); } }
Sensor 6 är utblåset i luftvärmepumpen, och 7 är tempen brevid pumpen. 1:an är utegivaren.
Värdena verkar trilla in väldigt sporadiskt, men förr eller senare så har jag fångat alla givarna. Ska fixa koden så att tiden för uppdateringen motsvarar respektive givare.