So kaufen Sie ein Smart-Home-Gerät und kommen ins Entwicklungsteam (Teil 2) / Sudo Null IT News

Teil 1 ist da

Indem ich freiberuflicher Betatester wurde, bekam ich Zugang zu einer ziemlich anständigen Menge an Leckereien. Entwicklungspläne, frische Firmware und neueste Entwicklungen. Ich beteilige mich auch aktiv an der Diskussion neuer Features. Und manchmal ist es sehr unterhaltsam.

Die Katze ist ein gescheiterter Selbstmord.

Der Antrieb selbst enthält trotz der Tatsache, dass er nur zwei Funktionen ausführt: Öffnen und Schließen, eine ziemlich entwickelte Steuerlogik. Beispielsweise stellt der Benutzer während der anfänglichen Einrichtung die Sicherheitsstufe zum Öffnen und Schließen ein. Und wenn beim Öffnungs- oder Schließvorgang die Kraft diesen Sollwert überschreitet, stoppt der Antrieb und rollt zurück. So organisierter Schutz gegen versehentliches Einklemmen, z. B. Finger.

Und dann fragt eines Tages ein Benutzer in einem Chat: Ist es möglich, den Rollback-Prozentsatz nach dem Kneifen zu erhöhen? Es stellt sich folgendes heraus. Das Fenster war offen. Die neugierige Katze, die auf der Fensterbank saß, steckte ihren Kopf durch den Spalt. Das Fenster begann sich zu schließen. Aus irgendeinem Grund blieb die Katze sitzen. Der Antrieb erkannte das Vorhandensein von Störungen und fuhr zurück, aber nicht genug, damit die Katze ihren Kopf herausziehen konnte. Und für eine Weile saß die Katze mit dem Kopf auf der Straße und beschimpfte die bösen Besitzer mit Katzenflüchen, einem nicht sehr schlauen Haus und einem absolut dummen Fenster, das ihn in eine so hässliche Position brachte.

Und wir haben uns ernsthaft eine Lösung für dieses Problem ausgedacht. Der nächste Vorschlag gewann: Fügen Sie der Einstellung einen “Cat Protection” -Schalter hinzu. Wenn diese Funktion aktiviert ist, läuft der Motor vor Beginn des Schließens zunächst für eine Sekunde als Lautsprecher mit Ultraschallfrequenz. Das Tier sollte erschrocken sein und vor dem kreischenden Fenster davonlaufen. Und erst dann beginnt der Schließvorgang.

Aber es stellt sich heraus, dass das Problem ohne unsere Beteiligung gelöst wurde. Einmal reichte der Katze, um zu verstehen, dass Sie, sobald sich das Fenster zu bewegen beginnt, es sofort von der Fensterbank werfen müssen, um sich nicht zu gefährden. Diese Funktion ist also unrealisiert geblieben.

Bei diesem Fall haben wir festgestellt, dass das Festlegen von Schutzstufen für den Benutzer ein sehr kompliziertes Verfahren ist. Vor allem, wenn man bedenkt, dass sich der Antrieb mit einer von vier festen Geschwindigkeiten bewegen kann – von der niedrigsten und fast geräuschlosen bis zur höchsten. Und für jede Geschwindigkeit muss der Wert des Öffnungs- und Schließschutzniveaus ausgewählt werden. Dann schlug ich vor, eine automatische Kalibrierung durchzuführen. Nach der Installation des Laufwerks drückt der Benutzer eine Taste in den Einstellungen, und das Laufwerk wiederum versucht mit allen vier Geschwindigkeiten, sich zu öffnen und zu schließen. Es liest das maximale Kraftniveau vom Sensor, addiert einen kleinen Prozentsatz dazu (Korrektur für möglichen Wind) und schreibt die erhaltenen Werte in seinen nichtflüchtigen Speicher. Diese Funktion wurde implementiert und in das nächste Update aufgenommen. Und alles begann mit einer zu selbstbewussten Katze.

Äpfel sind alles.

Ja, ich bin ein Apfelbaum. Die ganze Familie nutzt iPhones, Kinder spielen auf iPads und wir sehen uns Filme auf Apple TV an. Mein Smart Home soll auf HomeKit aufbauen. Aber das Laufwerk konnte damals nur MQTT und HTTP-Steuerung verwalten. Ich kaufte eine Himbeere, hob den mqtt-Broker HomeBridge auf und warf alles durch. Ein paar Tage voller Freude und die Himbeere hing. Sie hat regelmäßig rumgehangen. Es war ärgerlich. Ich habe mir dafür ein natives Raspberry Netzteil gekauft. Teuer, cool, aber hat das Problem nicht gelöst. Ich habe die Foren gelesen und die Antwort gefunden – Überhitzung. Gekaufte, geklebte Heizkörper. Es wurde gut. Er warf eine Himbeere hinter den Fernseher, wo eine Steckdose war. Ein paar Tage – der Flug ist normal und friert dann wieder ein. Ich öffnete das Gehäuse – die Heizkörper lösten sich (die Himbeere lag seitlich). Geklebt, horizontal verlegt. Alles scheint sich stabilisiert zu haben. Aber als Systemadministrator von Beruf war mir klar, dass es zur Verbesserung der Zuverlässigkeit notwendig ist, die Anzahl potenzieller Fehlerquellen zu reduzieren. Das heißt, ich wollte das alles unbedingt aus der Kette entfernen und das Laufwerk direkt mit HomeKit verbinden. Die Arbeit in dieser Richtung wurde vom Drivent-Team durchgeführt, aber langsamer, als ich möchte.

Der Antrieb befand sich bereits an seinem rechtmäßigen Platz – am Schlafzimmerfenster, und ich begann mit der Montage eines Sensors, der den CO2-Gehalt und die Temperatur messen und durch Automatisierung in HomeKit dem Antrieb Befehle zum Öffnen und Schließen des Fensters geben konnte.

Frankenstein ist gar nicht so schlecht.

Und ich wurde als solches Monster geboren. Es wurde ein interessantes Projekt gefunden – ESP Easy, das mir half, ohne viel in den Programmierdschungel einzutauchen, dieses Stück Eisen auf den Markt zu bringen und die Werte auszugeben, die ich brauchte – Temperatur, Luftfeuchtigkeit und CO2 – in der gleiche MQTT. Ich habe ein paar Skripte geschrieben – Tag- und Nachthelligkeitsmodi umschalten, die Zeit von Sonnenaufgang und Sonnenuntergang auf dem Bildschirm anzeigen (ich weiß nicht warum, aber es ist cool).

Nun, ich habe mehrere Automatisierungen in HomeKit geschrieben, um das Öffnen des Fensters entsprechend diesen Werten anzupassen. Und es scheint, als ob alles so funktionierte, wie ich es ursprünglich beabsichtigt hatte, aber ich wollte die Himbeeren trotzdem unbedingt loswerden. Durch die funktionierte nicht nur der Antrieb, sondern auch mein Monster.

Wilkommen in der Familie.

Natürlich habe ich Bilder von meinem Monster und eine Beschreibung, wie es funktioniert, mit dem Driven-Team geteilt. Das Gerät ist sehr interessant.

Und so erhalte ich am 3. Januar 2021 ein Angebot, dem Driven-Entwicklungsteam vollständig beizutreten. Und nach meiner Zustimmung war ich sofort verblüfft über die Entwicklung des Konzepts und der Software des Temperatur- und CO2-Sensors, aber bereits in einer ernsthaften Werksversion.

Es begann eine hitzige Diskussion darüber, was und wie er in der Lage sein sollte. Das Maximalprogramm ist, dass er ohne Beteiligung von Smart-Home-Algorithmen das Fenster nach seinen Daten selbstständig einstellen können soll. Damit kann der Anwender einen Antrieb, einen Sensor erwerben und erhält ein fertiges Komplettset für smartes Lüften. Es gibt Schaltflächen darauf – Sie müssen also das Fenster mit ihnen schließen / öffnen können. Es gibt einen Bildschirm und eine Uhr, also müssen Sie einen Zeitplan erstellen. Sie können den Prozentsatz der Fensteröffnung darin beispielsweise auf nicht mehr als 40% begrenzen. Damit die Katze ihren Kopf nicht hineinstecken kann (ja, wir erinnern uns an die Katze und wurzeln für ihre geistige Gesundheit). Alle sprudelten vor Ideen. Über den Namen des neuen Geräts wurde sehr lange diskutiert. Und wir haben bei Driven Air angehalten. Und ich hatte regelmäßig den Gedanken, dass ich unbedingt HomeKit im Laufwerk haben möchte.

Verlässt du dich auf github? Nun ja…

Es scheint – was ist einfacher? Nehmen Sie eine fertige Bibliothek für HomeKit und integrieren Sie diese. Und das tat ich und fing an, eine Shell für Driven Air zu schreiben. Ich nahm die Bibliothek, fügte sie einer teilweise geschriebenen Skizze hinzu, betrachtete den verbleibenden freien Speicher (Haufen) und wurde traurig. Mir wurde klar, dass nicht alles passen wird. Ich brauchte mqtt, einen Webserver zum Konfigurieren des Geräts, HomeKit, UDP zum Steuern des Laufwerks und ein paar Kleinigkeiten. Und ich hatte 81920 Byte RAM. Tschüss, Karl! Ein Kollege schüttete Öl ins Feuer und sagte, dass es unseren Freunden aus einem anderen Projekt nicht gelungen sei, mqtt und HomeKit in esp8266 zusammenzubringen. Und die Firmware wurde in 2 separate Zweige unterteilt. Richtig, dann haben sie es in eines gesteckt, aber einen Schalter in den Einstellungen hinzugefügt – entweder mqtt oder HomeKit. Aber das hat uns nicht gefallen.

Erinnerung an die alten, alten Zeiten. 386 mit 1 Megabyte Speicher, DOS und Buchhaltungsprogramm BEST. Jeden Morgen fing ich mit Anrufen von Buchhaltern an und schrie: „Mein Computer ist wieder kaputt und wählt keine Nummern.“ Sie nähern sich, Sie drücken die Num-Lock-Taste und sie sind glücklich bis zum nächsten Morgen. Es gab keine Einstellung im BIOS, um diesen Schlüssel zu aktivieren. Es war nicht möglich, Großmütter-Buchhaltern beizubringen, diesen Knopf selbst zu drücken. Nun, wissen Sie, ja – “Ich bin kein Informatiker.” Ich flippte aus und schrieb eine 1,5 Kilobyte große exe`shchek, die diese Schaltfläche enthält, und stopfte ihren Start in die bat-Datei des Startprogramms des Buchhaltungsprogramms. Jetzt konnte ich sicher ein oder zwei Stunden zu spät zur Arbeit kommen, und niemand würde ein Wort mit mir sagen. Als ich erkannte, dass das Programm nicht nur für mich nützlich sein könnte, postete ich es auf einer FIDO-Konferenz. Nun, damals gab es noch kein Internet. Anstatt zu loben, regnete es auf mich herab – „na wer schreibt denn so – 1,5 kb für die einfachste Funktion“, „Reißt dem Programmierer die Hände ab“ usw. usw. Ein paar Tage später tauchte in der Konferenz eine com-Datei auf, 150 Bytes lang, die dasselbe tat. “Hier, schau, wie es sein sollte!” Ich flippe aus. Mehrere Tage saß ich da und studierte Assembler, Prozessorbefehle, Interrupts und das Prinzip des Tastaturpuffers. Und hier ist mein Triumph! Ich habe eine .com-Datei gepostet, die Num Lock enthielt und 16 Bytes groß war. Besser und kürzer könnte niemand schreiben. Also kann ich!

Und ich kletterte in den Dschungel. Ich habe eine Reihe verschiedener HomeKit-Bibliotheken ausgegraben, die optimale ausgewählt und sie trotzdem für meine Aufgaben umgeschrieben, wobei ich ein paar überflüssige weggeworfen habe. Glitches entfernt, ein Speicherleck gefunden und geheilt (daran musste ich Spaß haben). Ich habe die gesamte fertige Firmware des Laufwerks durchgesehen, sie im Internet gefunden und eine Reihe von Lifehacks in die Praxis umgesetzt, um Speicherplatz zu sparen. Ein paar Monate Laufen auf einem Rechen brachten ihre Ergebnisse. Bis März 2021 war die Laufwerksfirmware mit nativem Homekit fertig, die mit allen laufenden Diensten und verbundenen Clients (mqtt, Homekit und UDP gleichzeitig) 27600 Byte freien Speicher hatte. Nun, zu diesem Zeitpunkt war die Grundlage für Driven Air geschrieben.

Inzwischen irgendwo auf der anderen Seite des Landes.

Mein Teamkollege @Alex__AW hat die Schaltung entworfen und das Board für das Driven Air entworfen.

Die ersten Boards kamen an, die ersten Exemplare wurden zusammengebaut, die ersten Bugs wurden eingefangen. Ich habe heimlich die Software geschrieben und debuggt, und @Alex__AW hat die Hardware debuggt.

Und so waren Ende Juni 2021 die ersten 10 Exemplare von Driven Air fertig und wurden an freiwillige Tester verschickt.

Die Schaltung wurde bereits ausgefeilt, und wir waren an Feedback von Benutzern interessiert – was ist praktisch, was kann man noch hinzufügen, was muss man an der Software ändern. Während dieser Tests wurden etwa 25 Firmware-Updates veröffentlicht, und im Januar 2022 wurde die offizielle Veröffentlichung von Driven Air angekündigt.

In dieser Zeit hat er gelernt: alle Daten von Sensoren in mqtt und HomeKit auszugeben, sich per Discovery mit Home Assistant zu verbinden, mehrere Laufwerke per UDP zu steuern. Er kann das PID-Fenster nach Temperatur oder CO2 anpassen, einen eingebauten Zeitplan und eine Menge allerlei kleiner nützlicher Funktionen. Das richtige Feedback durchdacht und umgesetzt. Wenn zum Beispiel der Prozess der Steuerung des Fensters durch CO2 im Gange ist und wir uns entscheiden, das Fenster mit der Taste am Antrieb zu schließen, sieht Driven Air diese Störung und stoppt die Anpassung, wobei das Fenster nicht mehr gezogen wird. Eingeführte Temperaturregelung beim Lüften durch CO2 – wenn CO2 immer noch zu hoch ist und die Temperatur unter den eingestellten Wert gefallen ist, dann schließt das Fenster ohne Bedingung und die Anpassung wird nur fortgesetzt, wenn die Temperatur steigt. Die Antriebe können über die Driven Air-Tasten gesteuert werden – öffnen, schließen, öffnen um einen ausgewählten Prozentsatz, Sie können die CO2-Lüftung über die Tasten ein- und ausschalten, den Thermostatmodus einschalten und die gewünschte Temperatur im Raum einstellen. Sogar solche Kleinigkeiten wie das Sperren von Tasten für Kinder, das Einstellen einer beliebigen Bildschirmhelligkeit von 0 bis 100% und das Einstellen der Übergangszeit in den Tag- und Nachtmodus sind durchdacht. Auch die Druckanzeige erfolgt mit einer Höhenkorrektur über dem Meeresspiegel, die der Nutzer in den Einstellungen festlegt. Herausgekommen ist ein voll funktionsfähiges, fertiges Gerät, das individuell genutzt werden kann. Sein volles Potenzial entfaltet er aber gerade in Verbindung mit dem Fensterantrieb Driven.

Und das Driven-Team entwickelt bereits mit meiner Teilnahme weitere, nicht weniger nützliche und interessante Geräte, über die ich im letzten Teil sprechen werde.

Ende zu sein …

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *