DIY draadloze temperatuursensor voor pilight

Door Koffie op zondag 26 januari 2014 16:41 - Reacties (17)
Categorie: -, Views: 9.883

Zoals uit mijn eerdere posts al op te maken is, gebruik ik de Raspberry Pi voor het aansturen van centrale verwarming.

Door een probleem met de electrabuizen in mijn plafond komt de DS18B20 sensor op een onhandige plaats uit : een centraaldoos in het plafond vlakbij een radiator.
Aangezien warme lucht stijgt, de sensor in de buurt van een radiator zit en dit geheel ook nog eens om de hoek van de zithoek hangt (mijn woonkamer is een L vorm) geeft dit een totaal vertekend beeld van de werkelijkheid tov wat de sensor meet.
Hier moest dus iets aan gedaan worden!
Na een weekend prutsen ben ik tot het volgende gekomen:

http://zooi.oostindie.com/images/3362014_01_12_11_tn.43_tn.11_tn.jpg

Nu je zul je direct willen roepen 'maar ik zie niets!' en dat was nu precies de bedoeling ;)
Wat je ziet is een oud fotolijstje met daarachter een breadboard geplakt, Op het breadboard zit een ATtiny84 met een DS18B20 en een 433MHz Superheterodyne RF sender.
De ATtiny is zo geprogrammeerd dat deze elke minuut de temperatuur uitleest en via de RF module de lucht instuurt.
Omdat ik geen zin (en kennis) had een heel nieuw RF protocol te verzinnen voor pilight, heb ik de KaKu_new protocol misbruikt.
Het KaKu_New dimmer protocol bied de optie om een dimstand van 0 t/m 15 te versturen. Als je dus een bepaald ID neemt en daar 2 opeenvolgende unit's van pakt heb je al 2 x 15 waardes om te versturen.
pilight kan out of the box al KaKu_new dimmer ontvangen, dus het is alleen nog een kwestie van het detecteren van de broadcast en deze waarde uit te lezen. Vervolgens deze waarde naar een generic_weather protcol sturen en klaar ben je.

Nu weet ik dat pilight ook diiverse andere weather protocols onderstuend, maar op de een of andere manier krijg ik de output van mijn Alecto weerstation niet op pilight binnen. Aangezien het versturen van de omgevingstemperatuur al in de planning lag voor onze te bouwen module, was dit een mooi begin.

Voor de ATtiny heb je de volgden code nodig:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <OneWire.h> // http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip
#include <DallasTemperature.h> // http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_LATEST.zip
#include <NewRemoteTransmitter.h>

#define txPin 10     // RF TRANSMITTER PIN
const int ledPin = 8;

#define ONE_WIRE_BUS 9

OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance
DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature

void setup() {
    pinMode(ledPin, OUTPUT); // LED
    pinMode(txPin, OUTPUT); // RF sender
}

void loop() {
  int NewUnit;
  int NewId;
  int temperature;

NewRemoteTransmitter transmitter(8934000, txPin, 245,2);
  Blink(ledPin,2);  
  sensors.begin(); //start up temp sensor
  sensors.requestTemperatures(); // Get the temperature
  temperature = sensors.getTempCByIndex(0);
  int RoundTemp = round(temperature);

  if(RoundTemp <= 15) {
    NewId = 1;
  }
  
  if(RoundTemp >= 16) {
    NewId = 2;
    RoundTemp = RoundTemp - 15;
  }  
  
  transmitter.sendDim(NewId, RoundTemp);    
  delay(60000);
}

void Blink(int led, int times){
  for (int i=0; i< times; i++){
    digitalWrite(ledPin,HIGH);
    delay (50);
    digitalWrite(ledPin,LOW);
    delay (50);
  }
}



Deze code zorgt ervoor dat de ATtiny elke minuut de temperatuur uitleest en als KaKu_new dimmer code lucht instuurt.
Wanneer het 6 graden is, word er dus het volgende verstuurd : unit [b]8934000[/b[ id 1 dimlevel 6. Wanner het echter 16 graden is, zal hij het volgende versturen: unit [b]8934000[/b[ id 2 dimlevel 1.

Nu is het een kwestie van een process script draaien op je Raspberry Pi welke alle ontvangen protocollen in de gaten houd, en reageert wanneer er een unit 8934000 voorbij komt.
In een latere post zal ik het process script wat ik voor pilight gebruik uitleggen.

Het eindresultaat ziet er dan zo uit:

Volgende: Raspberry Pi met pilight voor noobs deel 1 01-'14 Raspberry Pi met pilight voor noobs deel 1
Volgende: Het gevecht met het bubbelbad (en hoe de Raspberry Pi won) 01-'14 Het gevecht met het bubbelbad (en hoe de Raspberry Pi won)

Reacties


Door Tweakers user SA007, zondag 26 januari 2014 18:53

Ik zou je code en schema eens goed gaan bestuderen voor energieverbruik, dit is typisch iets wat met de goede code en instellingen ruim een jaar op simpel batterijtje kan draaien.
En denk dat dit draadloos nog een stuk intressanter is dan dan het zo al is.

Door Tweakers user Pataar, zondag 26 januari 2014 19:29

mooie blog(alweer) bij de tweakblogs kijk ik ook altijd eerst of ik koffie zie staan. Echt super leuk!

Door Tweakers user Koffie, zondag 26 januari 2014 20:17

SA007 schreef op zondag 26 januari 2014 @ 18:53:
Ik zou je code en schema eens goed gaan bestuderen voor energieverbruik, dit is typisch iets wat met de goede code en instellingen ruim een jaar op simpel batterijtje kan draaien.
En denk dat dit draadloos nog een stuk intressanter is dan dan het zo al is.
Klopt heb je gelijk in.
Er word nu niets aan het verbruik gedaan, dat kan drastisch naar beneden door onnodige zooi uit te zetten, zo diep mogelijk te laten slapen en de timer op 5 minuten te zetten ipv 1.

Punt is, dit is een werken prototype/proof of concept die ik tegelijkertijd 'in productie' heb genomen voor het aansturen van de kachel. In een later stadium moet dit een standlone kastje worden waar meerdere sensors in zitten (werkend op batterijen).

Wat ik in bovenstaande verhaal ben vergeten: ik had ooit eens een klein plastic kerstboompje (formaat sigarettenpakje) bij een bestelling gekregen. Dit boompje kon middels USB gevoed worden en dan knipperde er wat LEDjes.
Ik heb die USB kabel los geknipt (kerst was alweer voorbij :P ) omdat dit een mooi USB kabeltje was waar maar 2 draadjes uitkwamen. Die heb ik rechtstreeks op het breadboard geprikt.
Het hele gebeuren staat op een laag audio/video dressoir. In dit dressoir staat mijn IPTV decoder welke door de fabrikant zo gebouwd is dat hij vrijwel niet uit kan (Amino). Ook de USB port bleek permanent gevoed te worden. Daar kon dus mooi die kabel in.

Door Tweakers user Godgeneral16, maandag 27 januari 2014 11:57

echt super bedacht dit. ik blijf dit volgen tot het eind. ik wil geen moment missen.

Door Tweakers user roeleboel, maandag 27 januari 2014 21:59

Zou je eventueel een parts-list willen maken? (met evt een shop erbij?)
En wie weet een bedradingsschema?

Probleem dat ik heb:
Voor de attiny84 vind ik binnen de 5 minuten al pakweg 10 verschillende versies, dus daar weet ik al niet goed welke ik zou moeten hebben, laat staan voor de 433MHz zender etc...

Alvast bedankt :)

Door Tweakers user Koffie, maandag 27 januari 2014 22:15

roeleboel schreef op maandag 27 januari 2014 @ 21:59:
Zou je eventueel een parts-list willen maken? (met evt een shop erbij?)
En wie weet een bedradingsschema?

Probleem dat ik heb:
Voor de attiny84 vind ik binnen de 5 minuten al pakweg 10 verschillende versies, dus daar weet ik al niet goed welke ik zou moeten hebben, laat staan voor de 433MHz zender etc...

Alvast bedankt :)
Voor mij projectje heb ik gebruik gemaakt van de ATtiny84 20pu van iPrototype, De RF zender komt van Ebay, deze behandel ik in het vervolg op mijn laatste post : Koffie's tweakblog: Raspberry Pi met pilight voor noobs deel 1
Schema zal ik van de week even maken, maar stelt niet heel veel voor.

Door Tweakers user roeleboel, dinsdag 28 januari 2014 22:16

Hartelijk dank voor de info.

Nog één vraagje (voorlopig toch :) ):
Hoe programmeer je zo een ATtiny84? (welke hardware & software gebruik je hier voor? - ik begrijp dat je die niet zomaar in de usb kan pluggen, vandaar mijn vraag.

Door Tweakers user Koffie, dinsdag 28 januari 2014 22:20

Met deze programmer : http://iprototype.nl/prod...ters/pocket-AVRprogrammer
Ik zal er binnenkort eens wat uitgebreider op ingaan.

Door Tweakers user JorisV, vrijdag 31 januari 2014 16:40

Bedanks voor deze blogjes. Ik wil zelf ook binnenkort eens een RPi kopen en gaan knutselen.
Ik begrijp niet zo goed waarom je het protocol voor een dimmer gebruikt. Pilight heeft toch al een eigen protocol voor deze sensor?
Ik wil zelf ook de temp sensen in combinatie met energie meting, zodat ik kan kijken wat het energieverbruik is in relatie met de temperatuur en dan kan kijken of ik dit kan optimaliseren. Over energie meting lees ik niets bij pilight, maar dat hoeft ook niet draadloos. Ik zet de RPi gewoon in de meterkast.

Door Tom, zondag 4 mei 2014 15:58

wat voor weerstation heb jij?
Ik heb een Alecto ws4500 en die krijg ik ook niet correct op pilight binnen. Dus ga misschien zelf een protocol ervoor maken.
gr tom

Door Ferdinand, maandag 24 november 2014 14:33

Beste Koffie,

kan het zijn dat ik het schema mis ?

Door Tweakers user Koffie, maandag 24 november 2014 14:35

Klopt, is er eigenlijk nooit van gekomen zo te zien :)

Ik ben nu bezig met een nieuwe versie, op basis van een Arduino Nano. Daar zal ik binnenkort even een blogje over posten

Door Ferdinand, dinsdag 2 december 2014 19:15

Koffie,

is het mogelijk om het schema, mocht je het nog hebben, te posten.
Alvast bedankt.

gr. Ferdinand

Door BenPi, woensdag 14 januari 2015 17:06

Hoi Koffie,

Is er inmiddels al wat bekend van de nieuwe Arduino Nano versie ?
Ik ben een tijdje uit de running geweest, maar wil nu toch weer aktief zijn met de hobby.

BenPi

Door Tweakers user Koffie, woensdag 14 januari 2015 21:17

Ik wacht nog heeeel even met posten ;)

Inmiddels ben ik inderdaad over op een Nano, maar ik heb een paar ESP8266 modules besteld die onderweg naar NL zijn.
Met deze modules kun je over wifi pratien ipv RF. Scheelt een boel RF-collisions of andere missers.
Doel is om dan informatie via wifi te verzenden en tevens als wifi<->RF en wifi->IR gateway op te treden : retransmitten van RF en IR code welke via wifi is binnengekomen, en ook RF code opvangen en via wifi doorsturen naar pimatic.

Door Tweakers user BenPi, maandag 19 januari 2015 15:25

Heb jij nog een tip om via pimatic de I2C bus uit te lezen ?

Door Tweakers user lxz, vrijdag 8 mei 2015 22:48

Koffie schreef op woensdag 14 januari 2015 @ 21:17:
Ik wacht nog heeeel even met posten ;)

Inmiddels ben ik inderdaad over op een Nano, maar ik heb een paar ESP8266 modules besteld die onderweg naar NL zijn.
Met deze modules kun je over wifi pratien ipv RF. Scheelt een boel RF-collisions of andere missers.
Doel is om dan informatie via wifi te verzenden en tevens als wifi<->RF en wifi->IR gateway op te treden : retransmitten van RF en IR code welke via wifi is binnengekomen, en ook RF code opvangen en via wifi doorsturen naar pimatic.
Hoi Koffie,

Bedankt voor je uitgebreide posts. Ook ik ben van plan om helemaal over te stappen op pimatic (ipv pilight) en ben erg benieuwd naar je ontwikkelingen met de ESP8266 zoals je hierboven beschrijft.
Ik zou het erg tof vinden als ik mijn huis straks ook vol kan bouwen met draadloze temperatuur-sensoren zonder dat de vele 433 signalen op elkaar gaan storen.

Zit er toevallig nog een blogpost aan te komen hierover? :)

Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier één aanmaken.