Schritt 2: Arduino code
Initialisierung
Nur die WDT (WatchDogTimer) und RFM-Bibliotheken enthalten sind. Die WDT wird verwendet, für den Fall, dass die Arduino hängt irgendwo und mit der WDT würde es von selbst zurücksetzen. Aber mit dieser Box die Arduino nie selbst bis heute verloren.
Der Code sollte ist angebracht und ziemlich geradlinig. Es wird angenommen, dass Sie wissen, dass Sachen mindestens auf halbem Weg es zu lesen.
Der Arduino Code könnte vertraut aussehen, wie es hat aus verschiedenen Quellen kopiert, modifiziert und zusammengestellt.
Erhalten Sie auf die NodeID nicht allzu wählerisch. halten Sie es 2 stellen, da Sie wahrscheinlich nicht mehr als 90 Knoten in Ihrem Haus haben. Ändern Sie nicht die Anzahl der Ziffern, oder du musst es ändern praktisch überall später.
Definieren Sie das Frequenzband, wie Sie durch das Modul, das Sie gekauft haben. Die ChannelFreq kann nach den Standards angepasst werden müssen, wo Sie leben; die Zahl wird in Hertz.
// RFM69#define NODEID 21 //unique for each node on same network Floor&Room&Node#=X&XX&X#define NETWORKID 666 //the same on all nodes that talk to each other#define GATEWAYID 1#define FREQUENCY RF69_433MHZ#define ENCRYPTKEY "1234567890ABCDEF" //exactly the same 16 characters/bytes on all nodes!#define ChannelFreq 434520000
Die Message-Struktur muss auf Ihr gesamtes Netzwerk identisch sein
typedef struct { // Radio packet formatint nodeID; // node identifierint devID; // device identifierint cmd; // read or write long intVal; // integer payloadfloat fltVal; // floating payloadchar payLoad[32]; // string payload} Message;
Die Knöpfe waren nicht direkt befestigt, die 3.3V, sondern die Arduino-Daten-Pins damit sie ein- und ausgeschaltet werden konnten, wie gewünscht.
Auch gibt es viele Variablen, Zeitstempel, Status und früheren Status der Tasten zu speichern.
Setup
Offensichtlich sind die Pin-Modi "out" für Power und "in" für die Taste. Die Tasten blinken zu zeigen, dass der Setup-Phase beendet, dann sie in ihrem normalen Zustand übergehen.
Schleife
Zuerst prüft die Arduino, ob es einen Befehl aus dem OH-Server empfangen. Der Befehl wird außerhalb der Schleife-Code analysiert.
Dann der Status der Tasten werden gelesen, wenn der Status seit der letzten Iteration geändert. Beachten Sie, dass nichts bis jetzt gesendet wird.
Je nach Status der Taste, das Relais öffnet oder schließt an das Gerät ein- und ausschalten.
Danach ändern Sie die Schaltflächenfarben je nach ihrem Zustand. Mehr Sinn machte es für mich zu machen, so anstatt sie direkt während der Knopf-lesen-Status zu ändern.
In der Nähe am Ende der Schleife wird der Status des Relais zurück zu den OH-Server sowie den Status der blauen Taste gesendet. Rote und grüne Status werden nicht gesendet zurück, als sie von den Status des Relais gesteuert werden
Die Signalstärke (RSSI) sind an den OH-Server geschickt, um die Signalstärke für beide Richtungen wissen: ab und an das RFM-Gateway.
Beachten Sie, dass es eine Pufferzeit "StateChangeInterv" im Code. Das steht für die lustigen Jungs, die kommen zu Ihnen nach Hause, sehen nach, wie viele Male ein-/ausschalten die Sicherung durchbrennt, oder die Kaffeemaschine nach oben in Rauch... Die Variable (hier auf 2,5 Sek. eingestellt) wird verhindert, dass eine Änderung des Status für 2,5 Sekunden. Die Maschine kann daher erst nach dieser Variable Zeit wechseln; und Menschen werden verlieren schnell das Interesse...
Der BlueBlink wird nur von dem OH-Server initiiert, 30 Minuten, bevor die Maschine ausschalten soll. Der blaue blinkende Taste, es verwandelt sich in eine veraltete blau und die Ausschaltzeit soll auf der nächsten 00 oder 30 Minuten nach der vollen Stunde bewegen. Natürlich 30 Minuten vor dem Ausschalten, kehrt das blinken.