Wir stellen eine "intelligente" Steuerung für die Klimaanlage des ESP8266 her

Der Sommer ist gekommen, mit ihm ist Hitze und auch Zeit, Klimaanlagen einzuschalten. Und wenn Sie moderne Technologien und Smart Home mögen, dann möchten Sie die Klimatisierung irgendwie intelligent (oder zumindest auf moderne Weise) durchführen. Im Folgenden finden Sie eine Reihe von Notizen zu meinem Versuch, das Wetter in ein Haus mit Sprachsteuerung und plattformübergreifender Benutzeroberfläche zu integrieren.

Herausforderung


Es gibt vier Klimaanlagen in der Wohnung, Sie müssen lernen, wie man sie handhabt:

  • Über die Weboberfläche (ich habe es Home Assistant, der sich auf einem separaten Raspberry Pi dreht, aber im Idealfall möchte ich eine einfache Verbindung zu jedem System);
  • Voice (Google Assistant wird dies tun und dann an Alice denken);
  • Skripte;
  • Billig ...

Marktforschung


Native Lösung


Vielleicht werde ich es nicht einmal sagen. Die Entscheidung des Herstellers meiner Klimaanlagen umfasste eine Reihe von Kabeln, mindestens zwei zusätzliche Module für jede Einheit und einen Preis von etwa 200 USD pro Raum. Plus ein proprietäres Protokoll, eine alte Anwendung und all das. Durchstreichen.

Sensibo Himmel


Ungefähr 100 US-Dollar pro Zimmer, funktioniert nativ mit Google Assistant und IFTTT, sieht wunderschön aus, ist aber immer noch etwas teuer.


tado ° - ähnlich (und noch teurer).

Xiaomi Aqara / Mi Home, Broadlink RM Pro / Mini


Universelle IR-Sender, von denen einige theoretisch die erforderlichen Klimaanlagen „out of the box“ unterstützen, mit einer Sünde, die sie in zwei Hälften mit dem Home Assistant integrieren, aber im Allgemeinen - eine mittelmäßige Lösung, obwohl der Preis bereits viel näher an dem erschwinglichen liegt (20-35 USD pro Zimmer, abhängig von den Fähigkeiten) ) Ja, und Bewerbungen auf Chinesisch (in einigen Fällen) sind nicht das, was ich anstrebte.


DIY


Der billigste und flexibelste Weg, über den ich noch mehr sprechen werde.

Komponentenauswahl


Es gibt etwas zu überlegen, aber im Allgemeinen werden wir brauchen:

Eisen


Controller


Wir nehmen dumm ESP8266 und zur Vereinfachung der Firmware und der Stromversorgung werden wir D1 mini verwenden. Wir werden das System natürlich über WiFi verwalten.


IR-Sender


Für den Prototyp werden wir eine einfache IR-LED, einen Widerstand und einen Transistor verwenden und dann darüber nachdenken, wie dies verbessert werden kann.

Temperatursensor


Es macht mehr Spaß damit, Sie können die Zieltemperatur einstellen und automatisch ein- und ausschalten. Um loszulegen, nimm dumm DHT22.


Bildschirm


Wir werden den aktuellen Status des Systems (zum Debuggen) und möglicherweise die aktuelle IP-Adresse anzeigen (wird es nützlich sein?).


Software


IDE


Wir werden alles in der Arduino IDE (mit der ich noch nie gearbeitet habe) mithilfe offener Bibliotheken implementieren.
Viel später, als das Projekt bereits funktionierte, wechselte ich mit dem PlatformIO- Plugin zu Visual Studio Code.

Protokoll


Wir werden mit Home Assistant über MQTT ( PubSubClient- Bibliothek) kommunizieren , weil Es ist ein offenes Protokoll, für das es eine spezielle Komponente gibt .

Die Konfiguration sieht beispielsweise folgendermaßen aus:

climate: - platform: mqtt name: Living Room HVAC modes: - "off" - "auto" - "heat" - "cool" - "dry" - "fan" swing_modes: - "auto" - "off" fan_modes: - "auto" - "low" - "medium" - "high" mode_command_topic: "livingroom/meteo/mode/set" mode_state_topic: "livingroom/meteo/mode" temperature_command_topic: "livingroom/meteo/target/set" temperature_state_topic: "livingroom/meteo/target" fan_mode_command_topic: "livingroom/meteo/fan/set" fan_mode_state_topic: "livingroom/meteo/fan" swing_mode_command_topic: "livingroom/meteo/swing/set" swing_mode_state_topic: "livingroom/meteo/swing" current_temperature_topic: "livingroom/meteo/temperature" 

Management


Die HeatpumpIR- Bibliothek hilft uns, Signale an die Klimaanlage zu senden (das Klimaanlagenmodell ist immer noch fest codiert).

Verschiedenes


Sie benötigen mehr Bibliotheken für den Timer , für die Arbeit mit dem Temperatursensor und mit dem Bildschirm , aber das sind Kleinigkeiten. Wir werden WiFiManager und ArduinoOTA mit der üblichen Geste hinzufügen, um die Firmware über die Weboberfläche und nicht über USB zu aktualisieren.

Prototyp (00)


Wir kaufen zufällige Komponenten auf aliexpress, setzen sie auf einem Wahnbrett zusammen und testen die Idee.


Wir verstehen das:

  • Der Bildschirm wurde zu groß bestellt und hat zu viele Beine.
  • Eine LED trifft nicht sehr weit und ist nicht sehr zuverlässig.

Aber insgesamt funktioniert die Idee! Die „native“ HLK-Komponente wird in der Home Assistant-Oberfläche angezeigt. Dies bedeutet, dass die Steuerung von überall auf der Welt bereits in unserer Tasche ist. Durch die native Integration von Home Assistant in Google Assistant werden Sprachbefehle und Feedback hinzugefügt: Sie können den Assistenten nach der Temperatur im Raum fragen und er antwortet sowohl auf das Ziel als auch auf die aktuelle Temperatur.


Das Ändern der Zieltemperatur, der Blasgeschwindigkeit und des Klimamodus in der Weboberfläche ist ebenfalls vorhanden (und funktioniert vor allem!).


Testprobe (01)


Lassen Sie uns ein paar Komponenten ändern: Bestellen Sie einen kleineren Bildschirm und arbeiten Sie mit I2C (und wir verwenden eine andere Bibliothek).


Wir ersetzen auch die IR-LED durch ein fertiges Modul.


Es stellte sich heraus, dass es sich nicht lohnt, Module mit einer LED (auf dem Foto links) bei aliexpress zu bestellen: Sie enthalten keinen Transistor, und eines der Beine (VCC), die sie haben, ist im Wesentlichen eine Täuschung.

Wenn Sie jedoch ein Modul mit zwei LEDs bestellen (auf dem Foto rechts), sind bereits alle erforderlichen Komponenten vorhanden, und ein solches Modul kann einfach und natürlich angeschlossen werden und endet etwas weiter.

Es war auch Zeit, alles auf meiner Leiterplatte zusammenzufügen ... Es war einer der schwierigsten Momente für eine Person, die niemals Leiterplatten entworfen hat, und sicher habe ich alles falsch gemacht.


Für das Design habe ich EasyEDA verwendet, ich habe fertige Produkte für OSHPark bestellt (auch hier könnte man sicher eine billigere Option finden), und als Ergebnis habe ich so etwas bekommen:


Der Knopf wurde im letzten Moment hinzugefügt und ein Platz dafür wurde völlig zufällig gefunden. Es stellte sich heraus, dass mit der Taste alles ein bisschen mehr Spaß macht. Sie können den Bildschirm nicht immer eingeschaltet lassen (was für OLED schlecht ist), sondern den Status durch Drücken anzeigen.

Nun, es ist schon gut, es bleibt noch der Fall hinzuzufügen. Führen Sie dazu Blender aus, führen Sie eine Reihe von Parallelepipeds aus und wenden Sie eine Reihe von Booleschen Operationen an ...


Und an den 3D-Drucker senden.


Insgesamt stellte sich heraus, dass es billig (weniger als 10 US-Dollar pro Exemplar), flexibel (es funktioniert mit fast jeder Klimaanlage), einfach zu integrieren, per Sprache zu steuern und über das Internet aus einer Entfernung von fünf Metern zu erreichen ist. Im Allgemeinen über das, was ich wollte.

Wie würde das alles ein bisschen besser gemacht werden?

Serienmodell (02)


Es gibt eine Reihe von Richtungen zur Verbesserung des resultierenden Produkts (genauer gesagt Verbesserungsmöglichkeiten, die es ermöglichen würden, ein Experiment in ein Produkt umzuwandeln):

  1. Der Temperatursensor kann kleiner und genauer genommen werden, z. B. BME280, HTU21D oder Si7021, wodurch Sie ihn an denselben Beinen wie den Bildschirm (I2C) aufhängen, die Größe des fertigen Geräts erheblich reduzieren und das Leiterplattenlayout vereinfachen können. In der Praxis stellte sich heraus, dass derselbe BME280 durch die Erwärmung des ESP8266 selbst stark beeinflusst wird und die ausgegebenen Messwerte angepasst werden müssen.

  2. (Es folgt aus dem ersten Absatz) Es ist nicht üblich, den ESP8266 ständig laufen zu lassen. Sie müssen regelmäßig in den Tiefschlaf gehen und nur gelegentlich aufwachen, um Zeugnisse zu senden und Befehle zu empfangen.
  3. (folgt aus dem zweiten Punkt) Normales MQTT ist nicht mehr sehr gut geeignet. Sie müssen MQTT-SN verwenden, damit die Steuerbefehle beim Aufwachen gespeichert und an die Steuerung übermittelt werden.
  4. Durch die Implementierung der oben genannten Elemente können Sie die "verkabelte" Stromversorgung der Batterie ändern.
  5. Die derzeitige Methode zur Befestigung von Bauteilen auf einer Leiterplatte (herkömmliches Löten) ist schwierig zu implementieren und nicht flexibel genug: Es ist sinnvoll, die Header so zu löten, dass dieselben Temperatursensoren wie Handschuhe ausgetauscht werden können.
  6. Schließlich (im Gegensatz zum vorherigen Absatz) sind die fertigen Module trotzdem gut und einfach, aber etwas umständlich. Idealerweise würde anstelle des D1 mini ein bloßer ESP8266 verwendet, und der Temperatursensor, die Taste und die IR-LEDs würden auf eine Platine gelötet ( wie bei seriellen Produkten), was die Größe des Geräts und seinen seriellen Preis verringern würde;
  7. Auf jeden Fall wäre es schön, in die Firmware die Möglichkeit aufzunehmen, Ihr Klimamodell mit einem Klick einfach auszuwählen ...

Fazit


Es war ein herrliches Abenteuer und ich habe viel verstanden. Ich habe zum Beispiel verstanden, warum serielle Geräte so teuer sind und wie viel Aufwand erforderlich wäre, um mit ihnen auf das gleiche Niveau zu kommen. Andererseits habe ich zum ersten Mal in diesem Projekt viel getan (in der Arduino IDE gearbeitet, Leiterplatten bestellt, ein Modell für einen 3D-Drucker erstellt), und diese Erfahrung war von unschätzbarem Wert. Der Quellcode wird jedoch nicht angezeigt: Ich schäme mich für sie :)

Aber ich habe mein Ziel immer noch erreicht, und die billige und flexible Steuerung von Klimaanlagen erwies sich als durchaus erreichbar.

Source: https://habr.com/ru/post/de419963/


All Articles