Din varukorg är för närvarande tom!
Tekniker som hjälper dig skapa ett smartare och tryggare hem.
Övervaka uppvärmning – Del 1 – Övervaka pelletsnivå
Har nu bestämt mig för att övervaka uppvärmningen hemma. Projektet kommer att göras i etapper och beskrivas i detalj allt eftersom jag blir färdig.
Första delen av projektet kommer att fokusera på övervakning av pelletsnivån. Eftersom jag har en Vera Lite som centralt gränssnitt så kommer en Arduinon att rapportera direkt till Veran via Ethernet.
Veran har inte någon enhet som baseras på avstånd, så har jag valt att nyttja en virtuell ljussensorn i Vera istället. Eftersom ljussensorn i Vera visar data som procent så krävdes det omvandling av avstånd till procent.
Detta är resultatet i Vera, Arduinon rapporterar 82% pellets kvar (dvs det är ca 49,2 cm pellets kvar), vid 15% så triggas en scene som skickar ett sms.
Genom att mäta avståndet från ping sensor och matarröret i pelletslagret så fås ett statiskt värde. Jag låter Arduinon mäta avståndet till pelletsen och översätter sedan resultatet till procent med hjälp av avståndet jag mätte tidigare. Data kan nu rapporteras till en ljussensor i Vera.
Nu går det att trigga en scene när pelletsnivån understiger X%. I mitt fall så är det 60cm mellan ping sensor och matarrör. Får jag mindre än 15% pellets så skickas ett sms samt ett mail.
Komponenter
För att skapa enheten som mäter pellets så nyttjade jag följande komponenter:
Arduinon nyttjar följande portar i mitt sketch:
Nätverkskortet: (digitala portar)
- D10
- D11
- D12
- D13
Ping sensor: (digitala portar)
- D7
- D8
Ping sensorn kopplas på följande sätt.
- VCC = +5v Arduino.
- Trig = D8 Arduino.
- Echo = D7 Arduino.
- GND = jord / ground Arduino.
Projekt såg ut på följande sätt när jag kopplat upp det på en labbplatta.
Påbörjar kodning.
Nu börjar jobbet med att få till en funktion som rapporterar in avståndet som procent via Ethernet.
Jag började med att testa en funktionen för att mäta avstånd i Arduino genom att ladda ”ping” sketchen i Arduino applikationen
Funktionen var inte tillräckligt exakt som jag önskade. Jag letade lite på internet och hittade en sketch som gjorde uträkning av avstånd mycket bättre.
Detta är koden jag utgick ifrån: Ping sketch
Förklaring av koden
Koden jag hämtade fungerade riktigt bra, jag behövde inte göra mer än att bygga en funktion av allt och returnera data som procent istället för cm.
Koden jag nyttjar returnerar ”distance”, vilket är allt jag behöver.
- distance = duration/58.2;
Eftersom ”distance” innehåller avståndet i cm så behöver jag bara skapa en formel som översätter avståndet till procent. Jag skapade en variabel som innehåller avståndet i CM ner till matarröret (PelletsMaxNiva).
- float PelletsMaxNiva = 60.0;
Följande beräkning delar avståndet som ping sensorn har registrerat med avståndet till matarröret och multiplicerar det med 100 för att få det som procent.
- float PelletsProcent = distance / PelletsMaxNiva * 100;
- int pelletsProcentStatus = floor(PelletsProcent * 100) / 100;
// The floor() function returns the largest integral value less than or equal to __x, expressed as a floating-point number.
Eftersom jag vill veta hur många procent det är kvar så måste jag vända på resultatet så att 100% innebär att det är fullt med pellets och inte slut.
- int Procentkvar = (100 – pelletsProcentStatus);
Eftersom det kommer att larma i Vera så vill jag inte rapportera värden som är mer än 100% eller mindre än 0%.
Följande rad säkerställer att enbart värden 0-100 samt 200 returneras ur funktionen. 200 är ett värde som nyttjas i felhanteringen.
- if (Procentkvar >= 0 && Procentkvar <= 100){
- return Procentkvar;
- } else {
- return 200;
- }
Nu behöver jag bara rapportera in detta till vera via Ethernet, det gör jag genom funktionen httpLjusRegister(). Jag kommer att skriva mer om detta i kommande inlägg.
void loopen
Jag kontrollerar om min funktion returnerar 200, gör den det så skickas inte någon information till Veran, om annat värde än 200 tas emot så skickas resultatet till Vera.
int pelletsStatus = 0; // nollar tidigare resultatet för att inte riskera att skicka ett gammalt värde.
pelletsStatus = checkPelletsStatus(); // kontrollerar avståndet till pellets och returnerar här antal procent pellets som kvarstår.
if (pelletsStatus == 200){
Serial.println(”vardet som mottogs va felande!”); // Här ska en åtgärd sedan utföras (För tillfället så har jag inte larmsatt felande avläsningar.)
} else {
Här nyttjar jag min funktion för att skicka in via Ethernet till veran. Kommer att förklara denna funktion mer ingående i en annan post inom kort.
httpLjusRegister(71, pelletsStatus); // Skickar data till veran på enhets id 71.
}
Om du själv vill köra koden:
Jag har fetmarkerat texten du behöver ändra för att själv rapportera in data till Vera.
- #include <SPI.h>
#include <Ethernet.h> - #define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
char server[] = ”Address till din vera”; // Skriv här namnet till din vera.
byte mac[] = { 0xDE, 0xAA, 0xBE, 0xEF, 0xFE, 0xED }; // Här kan du välja en annan mac adress.
IPAddress ip(10,10,10,123); // Sätt här ett ip på samma subnät som din vera.
EthernetClient client;
int serverPort = 3480; // Porten på din vera, detta ska vara default så det ska inte behövas ändars. - float loopDelay = 900000; // Vänta X ms innan man åter skickar ett värde till Vera. 900000 = 15 minuter.
- int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
int pelletsStatus = 0; // anger hur många CM pellets som är kvar.
float PelletsMaxNiva = 60.0; // Ange detta med .0 eftersom jag räknar med float längre ner! värdet ska återspegla avståndet till matarröret.
long duration, distance; // Duration used to calculate distance
Följande rad måste även ändras så att du rapporterar in data på rätt enhet i vera. siffran 71 ska ersättas med enhets id på enheten som skapades enligt guiden.
httpLjusRegister(71, pelletsStatus); // Skickar data till veran.
I följande länk står det hur du skapar en virtuell ljussensor i Vera: Guide
Resultat
Följande debug fick jag via serieporten, Jag tycker att det ser rätt så ok ut.
Tyvärr så missade jag att ändra texten i Arduinon, så nu står det: ”Skickade ljus data till vera”
Nu är det bara att skapade en scene i Vera som aktiveras om ”ljuset” understiger 15% och sedan larma på det.
Eftersom jag tidigare har gjort en funktion för att skicka sms med Vera så har jag valt att nyttja det när det blir lite pellets. (guiden finns här).
Jag har kört loggning över natten och fått en graf, för tillfället så stämmer det relativt bra med hur mycket pellets som är precis under sensorn.
Orsaken till att det blir mer pellets några gånger än tidigare i grafen beror på att pellets rasar från kanterna ner mot hålet som mattarröret skapar.
I början så tas det extra mycket pellets precis under sensorn därav ser det ut att gå extra mycket.
Från och med nu har jag full kontroll på hur mycket pellets det finns kvar direkt i Vera. Utöver kontrollen av nivån så får jag en graf som visar mycket pellets det går och när jag fyller på.
Har nu kört Arduinon tills det blev dags att fylla på pellets, när pelletsnivån nådde 15% så fick ett sms att det är dags att fylla på pellets.
Är mycket nöjd med resultatet.
Arduinon kommer att kompletteras med mer komponenter och funktioner i nästa del av projektet. Den kommer även att flyttas och få en mycket mer professionell paketering!
Sketchen för att göra detta själv finns här: PelletsScript
// Markus
I mer än 10 år har Markus Jakobsson delat med sig av erfarenhet inom smarta hem på bloggen. Markus har testa det mesta och lärt sig massor på vägen, kunskaper och erfarenheter han delat med dig här på bloggen.
Favoriter inom smarta hem just nu:
Xiaomi Mi Flora
Raspberry Pi 5
Homey
Home Assistant
Displayen LYWSD03MMC
Hoppas du uppskattade innehållet och fick nytta kunskapen vi delat med oss på Automatiserar.se.
Stort tack för att du tog dig tid att läsa vårt inlägg.
Med vänliga hälsningar Markus Jakobsson
Allt går att automatisera!
Har du precis börjat med smarta hem eller redan kommit en bit på resan? Läs mina dedikerade guider om smarta hem. Dom ger dig kunskaper och insikter som hjälper dig fatta rätt beslut i din resa.
Kommentarer
8 svar till ”Övervaka uppvärmning – Del 1 – Övervaka pelletsnivå”
[…] Nedan är exempel på två grafer från ”dataMine graphing and logging”, datat nedan har rapporteras till Vera från en Arduino som mäter pelletsnivån. Läs mer om projekt här […]
[…] i tiden pelletsbrännaren strulade….. och hur ofta pellets fylldes på. Data kommer från en Arduino och rapporteras till […]
[…] att ha kört pelletsprojektet över ett år utan problem så beslutade jag mig för att konvertera sensorn i Vera till en […]
Superintressant. Jag är intresserad av att göra samma sensor, men som helst skickar resultatet till min Tellstick duo (433mhz). Några av komponenterna du använde finns inte längre på länkarna du lagt upp – vad är en Vera lite?
Tackar
Nu när vintern börjar närma sig så kanske det är dags att göra del två i pellets projektet.Jag tror jag har några 433Mhz sändare och koden kvar sedan jag höll på med min Telldus Duo. Ska se om det är nått som fungerar så fort jag hinner. Vad kör du din tellstick med för OS?
En Vera Lite är en Z-wave kontroller som jag nyttjar i mitt hemautomations system, den är nu ersatt av Vera Edge: https://www.m.nu/vera-edge-p-1699.html
Uppdaterade till länken till Arduino, bra att du sa till.
// Ispep[…] i år gjorde vi ett enkel projekt baserat på Arduino och en distanssensor. Sensorn mäter mycket pellets det finns kvar, när pelletsnivån går under 20 cm skickas SMS/Mail […]
Går det att använda denna guiden och på nåt sätt skicka informationen till en raspberry med domoticz?? Kanske en dum fråga, men hur får du informationen till din vera? Via ethernet kabel eller trådlöst på nåt sätt?
Mvh Björn
Absolut, ändra bara vart datat ska skickas. Ser att jag inte tydligt skrivit ut det i den här guiden, men det är Ethernet jag skickar med.
Kommer inom kort att uppdatera det här projektet, förhoppningsvis med en NodeMCU (ESP8266) som sedan skickar direkt till en MQTT kö och HTTP tjänst.
Guiden nedan visar hur du konfigurerar en RPI för att ta emot via MQTT.
https://www.automatiserar.se/guide-raspberry-pi/#InstallationMQTT// Ispep
Intressanta sensorer på bloggen
Jag har testat många sensorer på bloggen, här ser du några av dom. Är du intresserad av att veta vad vi tycker om respektive sensor så klicka på bilden för att få veta mer.
Vill du lära dig mer om smarta hem
och inte riskera missa några nyheter?
prenumerera då på bloggen via mail.
Taggar:
Gör ditt hem Smartare med några av dessa tillbehör
Jag har testat många enheter som gör min vardag lite enklare och smartare, vissa bra och vissa mindre bra. Många är helt vanliga enheter som fått smarta funktioner eller tekniker installerad. Något som jag sedan försöker använda för att göra familjens vardag enklare och vårt hem smartare. Är du intresserad av att se vad du kan göra med dessa enheter så klicka på bilden för att läsa mer om hur vi upplever den.
Gateway / Kontrollers & mjukvaror
Det finns idag en uppsjö tekniker och enheter på marknaden, tyvärr så finns det inte någon perfekt lösning ännu, utan varje lösning har sina styrkor och svagheter. För att du lättare ska kunna välja vilket spår som passar dig så har jag samlat alla tekniker jag testat och en bra sammanfattning om dom. Utifrån det kan du själv avgöra vad du anser mest lämpat. Är du osäker på vart du ska börja så kolla in min nybörjarguide om smarta hem, där får du tips på vad du ska leta efter och fundera över innan du kör igång.
Lämna ett svar