SONOFF-Tutorial: Ein Wi-Fi-Raumtemperaturregler für 10 $
In unserem letzten Blogbeitrag Ubidots steuert . In diesem Fall lernen wir, wie man eine Klimaanlage mit dem SONOFF TH , einer Variante des Originals, die Temperatur- und Feuchtigkeitssensoren enthält. Anhand dieser Messwerte verwenden wir Ubidots , um Ihre Klimaanlage je nach Raumtemperatur automatisch ein- oder auszuschalten.
Überblick
Im Vergleich zu den $ -WiFi-Smart-Plugs auf dem Markt ist der SONOFF eine großartige Alternative für die Umsetzung von Smart-Home- und sogar industriellen IoT Projekten in größerem Maßstab. Darüber hinaus basiert es auf dem beliebten WLAN-Chip ESP8266 und ist daher mit der Arduino-Umgebung und anderen Ressourcen wie unseren ESP-Bibliotheken bei Ubidots .
Der SONOFF wird mit einer eigenen Firmware und mobilen App geliefert, aber wir glauben, dass sein Hauptwert tatsächlich in seinem Formfaktor und Preis liegt. Aus diesem Grund haben wir beschlossen, etwas zu hacken und seine volle Kraft freizusetzen!
Anforderungen
Aufstellen
- Zerlegen Sie das SONOFF-Gerät, um auf die SONOFF-TTL-Pinbelegung zuzugreifen, die wir zum Programmieren des integrierten ESP8266 benötigen. Sie müssen vier Pins anlöten, diese sind im Bild unten dargestellt.
- Verbinden Sie die UARTbee-Pins mit den SONOFF-Pins und folgen Sie dabei dieser Pinbelegung:
UARTbee | SONOFF |
---|---|
VCC | VCC |
TX | RX |
RX | TX |
GND | GND |
Gehen Sie zur Arduino IDE, klicken Sie auf Dateien -> Einstellungen und geben Sie diese URL ein, um auf die ESP8266-Bibliotheken für Arduino zugreifen zu können:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
in das Zusätzliche Boards-Manager-URLs . Dieses Feld unterstützt mehrere URLs und trennt sie durch Kommas, falls Sie bereits andere URLs eingegeben haben.
3. Öffnen Sie den Boards Manager über „Extras -> Board“ und installieren Sie die ESP8266-Plattform. Wählen Sie nach der Installation Ihr ESP8266-Board im „Extras“ > „Board“ .
4. Laden Sie die Ubidots -Bibliothek hier .
5. Klicken Sie nun auf Skizze -> Bibliothek einschließen -> .ZIP-Bibliothek hinzufügen.
6. Wählen Sie die .ZIP-Datei von Ubidots und klicken Sie dann auf „Akzeptieren“ oder „Auswählen“ .
7. Schließen Sie die Arduino IDE und öffnen Sie sie erneut.
Erstellen Sie Ubidots -Events
Wir benötigen zwei Ubidots -Events: eines zum Einschalten des Relais und eines zum Ausschalten:
- in Ihrem Ubidots -Konto zu „Events und klicken Sie dann auf „Neues Event hinzufügen“.
- Wählen Sie die soeben erstellte SONOFF-Datenquelle aus.
- Wählen Sie die Hitzeindex .
- Stellen Sie die Auslösebedingung auf „größer als 25“ oder Ihren gewünschten Hitzeindex ein (SONOFF sendet die Daten in Grad Celsius).
- Wählen Sie den Triggertyp „Variable festlegen“, dann erneut die SONOFF-Datenquelle und dann die „Relaisvariable“.
- Setzen Sie es auf „1“, damit Events die Relay-Variable auf „1“ setzt, wenn die Bedingung erfüllt ist.
- Wiederholen Sie diese Schritte, um ein zweites Ereignis zu erstellen, aber setzen Sie dieses Mal die Bedingung auf „weniger als 20“ und den an das Relais gesendeten Wert auf „0“.
Codierung Ihres SONOFF-TH
Hier ist der Code, der das SONOFF-Gerät ein-/ausschaltet. Um diesen Code zu verwenden, vergessen Sie nicht, WIFISSID, PASSWORT und Ihr Ubidots -TOKEN zu ändern.
Um den Code in den SONOFF hochzuladen, müssen Sie ihn in den Programmiermodus versetzen:
- Verbinden Sie den UARTbee mit dem PC-USB.
- Drücken Sie die SONOFF-Taste und trennen Sie gleichzeitig den USB-Anschluss.
- Während Sie die Taste drücken, schließen Sie den USB-Anschluss erneut an.
/**************************************** * Bibliotheken einschließen ****** **********************************/ #include „ Ubidots .h“ #include „DHT.h“ / **************************************** * Instanzen und Konstanten definieren ***** ***********************************/ #define DHTPIN 14 // mit welchem digitalen Pin wir verbunden sind #define DHTTYPE DHT11 // DHT 11 #define RELAY 12 #define LED 13 const char* UBIDOTS _TOKEN = "..."; // Geben Sie hier Ihr Ubidots -TOKEN ein const char* WIFI_SSID = "..."; // Geben Sie hier Ihre WLAN-SSID ein const char* WIFI_PASS = "..."; // Geben Sie hier Ihr WLAN-Passwort ein char *macAddrs; DHT dht(DHTPIN, DHTTYPE); Ubidots ubidots ( UBIDOTS _TOKEN, UBI_HTTP); /**************************************** * Hilfsfunktionen ****** ********************************/ // Geben Sie hier Ihre Hilfsfunktionen ein /******* ******************************* * Hauptfunktionen ************** **************************/ void setup() { Serial.begin(115200); dht.begin(); ubidots .wifiConnect(WIFI_SSID, WIFI_PASS); pinMode(RELAIS, AUSGANG); pinMode(LED, AUSGANG); digitalWrite(LED, HIGH); ubidots .setDebug(true); // Kommentieren Sie diese Zeile zum Drucken von Debug-Meldungen aus. } void loop() { // Warten Sie zwischen den Messungen einige Sekunden. Verzögerung (2000); // Das Auslesen von Temperatur oder Luftfeuchtigkeit dauert etwa 250 Millisekunden! // Sensorwerte können auch bis zu 2 Sekunden „alt“ sein (es ist ein sehr langsamer Sensor) float h = dht.readHumidity(); // Temperatur als Celsius lesen (Standard) float t = dht.readTemperature(); // Überprüfen Sie, ob Lesevorgänge fehlgeschlagen sind, und beenden Sie den Vorgang vorzeitig (um es erneut zu versuchen). if (isnan(h) || isnan(t)) { Serial.println("Fehler beim Lesen vom DHT-Sensor!"); zurückkehren; } // Wärmeindex in Celsius berechnen (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); ubidots .add("Luftfeuchtigkeit", h); // Ändern Sie Ihren Variablennamen ubidots .add("temperature", t); ubidots .add("heat", hic); bool bufferSent = false; bufferSent = ubidots .send(); // Sendet Daten an ein Gerätelabel, das mit der Geräte-ID übereinstimmt if (bufferSent) { // Etwas tun, wenn die Werte ordnungsgemäß gesendet wurden Serial.println("Vom Gerät gesendete Werte"); } ubidots .getDeviceMac(macAddrs); /* Letzten Wert von einer Variablen als Float über HTTP abrufen */ float setRelay = ubidots .get(macAddrs, "relay"); if (setRelay == 1.00) { digitalWrite(RELAY, HIGH); //Ein Relais digitalWrite(LED, LOW); //Ein LED } if (setRelay == 0.00) { digitalWrite(RELAY, LOW); //Aus-Relais digitalWrite(LED, HIGH); //Aus-LED } Verzögerung(5000); }
- Wenn Sie mit dem Hochladen des Codes fertig sind, trennen Sie UARTbee und SONOFF und schließen Sie dann den DHT11-Sensor an.
Ihr SONOFF ist bereit für den Anschluss an eine 110-240-V-Stromversorgung und an Ihre Klimaanlage.
Alles zusammenfügen
Wir haben dieses Projekt mit einem „SAMURAI Eole Crystal“-Lüfter getestet. Bei diesem Gerät musste zum Einschalten ein Knopf gedrückt werden, nachdem man es an die Steckdose angeschlossen hatte. Deshalb haben wir den EIN/AUS-Knopf so verlötet, dass er immer eingeschaltet ist:
Anschließend haben wir das Gerät wieder zusammengebaut, an die Klimaanlage angeschlossen und fertig!
Einen Schritt weiter gehen…
Ubidots IoT zu erstellen , sowohl im Bildungsbereich als auch im Unternehmen. Um zu erfahren, wie Ubidots Ihrem Unternehmen helfen kann, schauen Sie sich unsere Funktionen oder hinterlassen Sie uns eine Nachricht