Kaffe timer och radio, Arduino, Logitech Harmony och openHAB (2 / 3 steg)
Steg 2: Arduino kod
Initiering
Endast WDT (WatchDogTimer) och RFM biblioteken ingår. WDT används om Arduino hänger någonstans och med WDT det skulle återställa av sig själv. Men med denna box, Arduino aldrig förlorade sig förrän nu.
Koden är kopplad och bör vara ganska rakt fram. Det förutsätts att du vet att saker åtminstone till hälften läsa den.
Arduino koden kanske bekant ut som det har kopierat från olika källor, ändrat och sätta ihop.
Inte får alltför kräsen på NodeID; hålla det 2 siffror eftersom du förmodligen inte kommer att ha mer än 90 noder i ditt hus. Inte ändra antalet siffror eller du kommer att behöva ändra det praktiskt taget överallt senare.
Definiera frekvensbandet som ges av modulen du köpt. ChannelFreq kan behöva justeras till standard där du bor; numret är i Hertz.
RFM69
#define NODEID 21 //unique för varje nod på samma nätverk golv & rum & nod #= X och XX & X
#define NETWORKID 666 //the samma på alla noder som pratar med varandra
#define GATEWAYID 1
#define frekvens RF69_433MHZ
#define ENCRYPTKEY "1234567890ABCDEF" //exactly de samma 16 tecken/byte på alla noder!
#define ChannelFreq 434520000
Meddelandestruktur måste vara samma i hela nätverket
TypeDef struct {/ / Radio paketformat
int nodeID; nod-ID
int devID; enhets-ID
int cmd; Läs eller skriv
lång intVal; heltal nyttolast
float fltVal; flytande nyttolast
char nyttolast [32]; sträng nyttolast
}-Meddelande.
Knapparna var inte direkt kopplad till de 3.3V, men till Arduino data stift så de kunde kopplas på och av som önskat.
Det finns även många variabler att lagra tidsstämplar, status och tidigare-status av knappar.
Setup
Uppenbarligen pin-lägena är "out" för makt och "i" för-knappen-press. Knappar blinkar visar att installationsfasen slutförts då de passerar in i sitt normala tillstånd.
Loop
Arduinoen kontrollerar först om det fick ett kommando från OH-servern. Kommandot analyseras utanför loop-koden.
Sedan status för knapparna är läsa om status ändrats sedan den senaste iterationen. Observera att inget skickas förrän nu.
Beroende på status för knapparna, relä öppnar eller stänger växla kaffemaskinen på eller av.
Efter att ändra knappen färger beroende på deras tillstånd. Det gjorde mer meningsfullt för mig att göra det så istället för att ändra dem direkt under knappen-Läs-status.
Nära slutet av slingan är status för reläet skickas tillbaka till OH server samt status på den blå knappen. Röda och gröna status inte skickas tillbaka som de kontrolleras av status för reläet
Signal styrkan (RSSI) skickas till OH-server för att få veta signalstyrkan för båda riktningarna: från och till RFM gateway.
Observera att det finns en buffert tid "StateChangeInterv" i koden. Detta är skrivet för roliga killar som kommer till ditt hem att se efter hur många gånger/på byta säkringen kommer att blåsa, eller kaffemaskinen gå upp i rök... Variabeln (här in 2,5 sek) förhindrar en förändring av status för 2,5 sekunder. Maskinen kan därför växla endast efter variabeln senare. och människor kommer att förlora intresse mycket snabbt...
BlueBlink initieras endast av OH servern 30 minuter innan maskinen är tänkt för att stänga av. Genom att trycka på den blå blinkande knappen, den ändras till en gammal blå och switch off tid är tänkt för att gå till nästa 00 eller 30 minuter över. Naturligtvis 30 minuter före avstängning, blinkandet återkommer.