Was am Wochenende zu tun ist: Fernbedienungs-Gegensprechanlage, budgetloses Remapping Nextion, Showdown mit Onlaym



Freitags wird Fiktion hier manchmal als akzeptabel angesehen. Heute ist natürlich nicht Freitag, aber es ist keine Fiktion, sondern drei Mini-Romane, die etwas mit meinem Leben zu tun haben.

Ein hastiger Leser kann sich auch fragen, welche Beziehungen die Gegensprechanlage und den Internetprovider tatsächlich verbinden können. Und es wird richtig sein, denn auch ich bin nicht sofort dazu gekommen.

Aber über alles (Arduino, banale Life Hacks, Telefonstreitigkeiten) in Ordnung.



Sim-sim, mach auf!


Um ehrlich zu sein, ist die Fernbedienung der Gegensprechanlage gemäß meiner Version fast unbrauchbar, und ich habe dies vollständig erkannt, bevor ich überhaupt angefangen habe. Um das Unternehmen zu rechtfertigen, musste ich daher die ganze Vorstellungskraft einsetzen, um ein paar Fälle zu erarbeiten, wie sie sagen.

Zunächst beschloss ich, die Gäste auf diese Weise auf der Veranda aufwärmen zu lassen, wenn ich es noch nicht geschafft hätte, nach Hause zu rennen. Oder ich werde mich nicht besonders darum kümmern, die Schlüssel im Voraus zu bekommen - schließlich können Sie das Telefon einfach so einrichten, dass es einen Befehl zum Öffnen der Tür gibt, wenn ich zum Haus komme.

Für gewöhnliche Menschen klingt es ziemlich wild, aber wie sie sagen, per aspera ad astra.

Und ich wollte wirklich ein paar Relais in dem Gehäuse verwenden, die von Anfang an in der zentralen Steuerung im Leerlauf waren. Die Situation ist in der Tat lächerlich: Zu dieser Zeit gab es nur einen Block für 4 Relais, von denen nur zwei benötigt wurden. Und ich wollte keinen weiteren Monat auf den Zwei-Relais-Block warten, also sammelte ich das, was zur Hand war, und begann mir sofort Sorgen um Redundanz zu machen.

Allerdings zu den Gegensprechanlagen. Im Allgemeinen ist das automatische Öffnen einer Gegensprechanlage keine ausschließliche Sache. Zum Beispiel hier bei Geektimes, Genosse Im Jahr 2013 (als der Dollar 30 war) stellte Cluster nicht nur eine Fernbedienung her, sondern auch einen Anrufbeantworter für Gäste .

Dies ist bei weitem das Coolste, was ich in dieser Klasse gesehen habe.

Aber viel früher Besucher von RadioKota und vielen anderen thematischen Forenhatte Spaß mit Geräten wie "opener" - entsperren Sie die Gegensprechanlage sofort bei einem Anruf.

Ich würde weder das eine noch das andere wiederholen. Das erste - weil es schwierig ist und weil ich bereits einen funktionierenden Controller hatte, dem ich neue Kräfte verleihen wollte. Das zweite aus offensichtlicheren Gründen: Zu viele Details und zu wenig Sinn, ich entschuldige mich, wenn ich die Autoren beleidigt habe.

Sinn natürlich für mich und überhaupt nicht. Das heißt, ich mag das Schema, das jedem, der eine Wohnungsnummer wählt, gastfreundlich die Tür öffnet, kategorisch nicht.

Daher die Grundvoraussetzungen für meinen Öffner:

1) Verwendung einer zentralen Steuerung zur Steuerung über das Internet und das Radio
2) Minimaler Schutz vor unbefugtem Zugriff
3) Minimale Interferenz im Innenraum

Starten Sie



Ich machte mich zunächst mit dem Funktionsprinzip der Gegensprechanlage vertraut, die ich hier ausgeliehen hatte :

Die Röhre funktioniert sehr einfach: Wenn die Röhre verlegt wird, hat sie einen Widerstand von 50 Ohm, wenn die Röhre entfernt wird, beträgt der Widerstand ca. 400 Ohm, wenn die Verriegelungsentriegelungstaste gedrückt wird, wird der Widerstand in Kilo-Ohm gemessen ... Wenn kein Anruf vorliegt, liegt keine Spannung in der Leitung an. Wenn ein Anruf eingeht und das Mobilteil einen großen Strom legt und die Spannung sich als klein von 5 bis 7 V herausstellt, wenn das Mobilteil nicht vorhanden ist und der Widerstand gegen unendlich gerufen wird und die Spannung maximal ca. 15V bei ausgeschalteter Mobilteilspannung ca. 10V. Wenn die Spannungstaste gedrückt wird, beträgt das Maximum ca. 15V - Drücken der Taste entspricht einem Zeilenumbruch.


Im Fall von Digital ist dies etwas anders, da die Dokumentation für das Mobilteil, aber ich hatte KM-2NO (übrigens danke ich Digital für die Veröffentlichung des Schemas):

1. Stromaufnahme im "Talk" -Modus 18-22 mA
2. Die Spannung in der Leitung mit einer am Gehäuse installierten Röhre 1,5–2,5 V
3. Die Spannung in der Leitung mit einer erhöhten Röhre 5,8–6,5 V.


Daher habe ich mich mit dem Schaltplan meiner Pfeife genauer vertraut gemacht:



Und ich habe festgestellt, dass in Bezug auf den Widerstand alles genau gleich ist, und höchstwahrscheinlich unterscheidet sich der Rest der Logik des Digital kaum vom Besuch.

Ich mache darauf aufmerksam, dass meine Modifikation ohne LED ist. Dies stellte sich jedoch als genau richtig heraus, da es aufgrund dieser Tatsache sehr einfach ist, Anrufinformationen an die zentrale Steuerung zu übertragen.

Das heißt: Der Anruf ertönt, die LED „leuchtet“, der Optokoppler leuchtet auf, am Controller-Pin ändert sich der Pegel von hoch nach niedrig.

Also habe ich anstelle der LED meinen 4N35-Optokoppler installiert, dessen Ausgang ich direkt an das Arduino gesendet habe. Nach dem Standardschema aus demselben Internet:



Und da ich mit einem Minimum an Details und verfügbaren Controller-Ressourcen auskommen wollte, von denen sich die digitalen Pins als die wertvollsten herausstellten (Uno hatte nicht genug davon), verwendete ich anstelle eines 10K-Pull-up-Widerstands den eingebauten Arduino-Pull-up-Widerstand.

Bei Anschluss an einen digitalen Pin sieht es folgendermaßen aus:

#define ringPin _

pinMode(ringPin, INPUT_PULLUP);


Bei Anschluss an einen analogen Pin:

#define ringPin _

pinMode(ringPin, INPUT);
digitalWrite(ringPin, HIGH);


Ich beschloss, das Optron vom Mikrocontroller zu platzieren. Ich kann es nicht rechtfertigen, aber ich dachte, dass das Risiko von Fehlalarmen bei möglichen Abholungen geringer ist. Es ist möglich, dass er sich irrt, aber bisher ist alles normal mit Tipps Sie sind nicht da.

Was die Erde im obigen Beispiel betrifft, müssen Sie verstehen: Obwohl die Erde im Diagramm häufig vorkommt, ist dies nicht der Fall - tatsächlich gibt es tatsächlich eine optoelektronische Isolation. Dafür ist er ein Beispiel.

Werde mich los!


Die Entscheidung, die Intercom-Schaltkreise vollständig loszuwerden, kam nicht sofort, sondern unweigerlich. Übrigens erinnerte ich mich sehr an den Fall vor sechs Jahren, als ich beobachtete, wie sich während der Installation eines ACS ein unangenehmer Moment mit einem elektromagnetischen Schloss bildete.

Ich weiß nicht, wie es passiert ist, aber es stellte sich heraus, dass das Schloss irgendwie funktionierte. Das "Kriechen", dann gar nichts, und die Installateure selbst haben sich schon den Kopf gebrochen. Aber am Ende wurde vermutet, dass sie irgendwo (oder so ähnlich) in den Steuerkreisen einen unerwarteten Kurzschluss hatten. Natürlich haben wir alles ohne großen Erfolg überprüft, da sie klar nach den Anweisungen eingestellt waren.

Öl wurde dem Feuer durch die Tatsache hinzugefügt, dass genau das gleiche Schloss in genau der gleichen Konfiguration war, aber es funktionierte gut auf der anderen Etage.

Wie lange, kurz, entschieden sie, dass sich die Angelegenheit in der Tür selbst befand, an der das Schloss angebracht ist. Meiner Meinung nach schlugen sie vor, dass sie beim Einbau in den Anker steckten, der wiederum geerdet war, was zu unerwarteten Auswirkungen auf das Schloss führte (das möglicherweise ein Kontrollschloss für das Gehäuse hatte).

Im Allgemeinen haben sie ziemlich lange und mühsam geklärt. Und ich wollte zu Hause nicht dasselbe wiederholen.

Daher habe ich keine Kabel gespart und die Relaiskontakte auf einfachste Weise angeschlossen:

1) Normalerweise ein Relais geschlossen - in Reihe mit der Aufwärtstaste SW1 (da diese Taste im Normalzustand geschlossen ist)
2) Normalerweise ein anderes Relais öffnen - parallel zur Türöffnungstaste SB1 ( weil diese Schaltfläche normalerweise geöffnet ist)

Relaissteuerkontakte sind natürlich mit den freien (Hurra, sie waren es immer noch) digitalen Pins des Mikrocontrollers verbunden.

Insgesamt ist es leicht vorstellbar, dass sechs Drähte benötigt wurden: zwei für den Optokoppler und vier weitere für das Relais.

Ich entschuldige mich für den Primitivismus der Abbildung:

Von der Gegensprechanlage




Von Arduino




Die Relais sind hier ausschließlich schematisch dargestellt. Da ich wiederhole, habe ich fertige Relaismodule mit voller Füllung verwendet - Optokoppler, Transistoren, Dioden und so weiter. Ich empfehle dringend, keine bloßen Relais an Arduino anzuschließen.

... und ruf mich nicht mehr an!


Bereits zu diesem Zeitpunkt konnte ich das Türtelefon sehr einfach über das Internet oder ein lokales Netzwerk von einem Computer oder Smartphone aus nach folgendem Prinzip

öffnen : 1) Zum Zeitpunkt des Klingelns des Türtelefons wechselt der Controller in den Berechtigungsmodus, um die Tür für 40 Sekunden zu öffnen. Die Zeit wird anhand der Dokumentation für das digitale Türtelefon ausgewählt, wobei angegeben wird, dass die Dauer des Anrufsignals genau 40 Sekunden beträgt.

Das heißt, für eine längere Zeit macht es keinen Sinn, bedingt offen zu bleiben.

2) Nach Empfang eines offenen Befehls über das Internet (HTTP POST) schaltet die Steuerung das Relais nacheinander um. Zunächst öffnet es das Röhrenrelais, das seinen Anstieg simuliert. Nach einer kurzen Pause schließt das Öffnungsknopfrelais und simuliert so sein Drücken. Nachher - lässt die Taste los und legt den Hörer auf.

Der Prüfstand war sehr primitiv:



Es wäre möglich, damit aufzuhören, wenn ich als stolzer Besitzer von KTsDV-12-2 nicht wüsste, wie unpraktisch es ist - jedes Mal, wenn Sie etwas ein- oder ausschalten müssen, um die Fernbedienung oder das Telefon herumzulaufen .

Und insbesondere, wenn ich kürzlich keine Desktop-Wetterstation mit Touchscreen fertiggestellt hätte und das Potenzial offenbar nicht voll ausgeschöpft wäre.



Kurz gesagt, ich habe der Wetterstation schnell (eigentlich nicht) den gebräuchlichsten und vulgärsten 433-MHz-Sender mit Amplitudenmodulation hinzugefügt, der bei Aliexpress für lächerliches Geld verkauft wird.

Infolgedessen ist die Wetterstation zu einem weiteren Kontrollpunkt für die Gegensprechanlage geworden. Wenn also eine Glocke läutet und Sie daneben sitzen, macht es keinen Sinn, das Telefon zu beschädigen, denn direkt vom Bildschirm aus können Sie:

1) Öffnen Sie das Schloss.

2) Nehmen Sie den Hörer ab und langsam (laut Dokumentation dauert das Gespräch 1,5 Minuten gegenüber 40 Sekunden des Anrufs), gehen Sie zur Gegensprechanlage, beantworten Sie und entscheiden Sie, ob Sie öffnen möchten oder nicht.

3) Nehmen Sie den Anruf entgegen (der Controller nimmt ab und sofort "Hängt auf")

Dafür musste ich natürlich den Code und die Schnittstelle der Wetterstation leicht ändern, aber auf dem Weg fand ich heraus, wo es nervige Fehler bei der Anzeige von Grafiken gibt (wie sich herausstellte - ich habe es in meiner DNA, aber das ist eine andere Geschichte).

Die neue Oberfläche sieht jetzt übrigens überhaupt nicht mehr wie HAL aus. Jetzt ist alles so bunt und lustig, dass man nur noch lachen muss. Und Sie sehen, verstehen Sie: Ich habe keine Smoothies getrunken, Hipster haben mich nicht gebissen, es gab keine Lamberseks in der Familie und Material zieht mich an wie nie zuvor in meinem Leben:



Dieser Bildschirm ersetzt die Klimadaten, wenn die Gegensprechanlage klingelt: In diesem Moment gibt die zentrale Steuerung einen Funkbefehl aus, auf den die Wetteranzeige reagiert.

Es mag hier etwas unlogisch sein, aber die Glocke in der Mitte informiert Sie hauptsächlich über den Intercom-Anruf. Durch Drücken (hier unlogisch) wird der Intercom-Sound auf barbarische Weise stummgeschaltet - indem der Vorgang des Anhebens und Absenkens des Mobilteils nachgeahmt wird.

Das Schloss auf der linken Seite ist die Öffnung des Schlosses. Mobilteil rechts - Nehmen Sie den Hörer ab, um den Beginn eines Gesprächs zu simulieren.

Der Bildschirm wechselt nach 40 Sekunden nach Beginn des Anrufs zum Hauptbildschirm und nicht sofort durch Drücken der Symboltaste. Auf diese Weise können Sie mehrmals drücken, wenn der Controller plötzlich keinen Befehl mehr „gehört“ hat, was angesichts des verwendeten Funkkanaltyps nicht ungewöhnlich ist.

Algorithmen


Wie ich bereits erwähnte, war ich zunächst bescheiden und wollte nur eines: die Gegensprechanlage auf Befehl vom Telefon aus und zum Zeitpunkt des Anrufs öffnen.

Aber nachdem ich ein paar Tage gespielt hatte, wurde mir klar, dass es ziemlich langweilig ist, vor der Gegensprechanlage zu stehen und auf den Bildschirm zu stöbern, und es ist viel interessanter, eine „verzögerte“ Öffnung zuzulassen, wenn Sie sich nur dem Eingang nähern. Dann bleibt nur noch die Wohnungsnummer auf der Türtafel zu wählen und voila, die Tür ist offen.

Schließlich dachte ich, dass es in dieser Situation wahrscheinlich sinnvoll ist, ein Öffnungsverbot zu erlassen - im Allgemeinen.

Aber dann riss er sich zusammen, ließ sich dann los, nahm ein nützlicheres Werkzeug, im Volksmund Occams Rasiermesser genannt, und entfernte schnell zusätzliche Wesenheiten. Nämlich: Da ich die Fernbedienung gemacht habe, war es nicht, sie auszuschalten. Daher ist ein Herunterfahren überhaupt nicht erforderlich.

Zweitens stellte sich nach nüchternem (und nicht wie üblichem) Denken heraus, dass es keinen besonderen Unterschied zwischen dem Öffnen durch einen Befehl unmittelbar zum Zeitpunkt des Anrufs oder durch einen bestimmten Befehl gab.

Abschließend möchte ich noch auf die Ergonomie der Steuerung zurückkommen. Je mehr Modi - desto weniger gewöhnliche Menschen werden sie verwenden. Ja, ich bin langweilig, aber als ich mir vorstellte, dass ich drei Modi für verschiedene Anlässe hatte, wurde mir klar, dass ich immer noch einen verwenden würde.

Daher ist der Modus eins und der Befehl eins, und es gibt zwei Prozessoren:

1) Wenn die Gegensprechanlage klingelt, ermöglicht die Steuerung das Öffnen innerhalb von 40 Sekunden nach Beginn des Anrufs

2) Wenn der Öffnungsbefehl zuerst empfangen wird, lässt die Steuerung das Öffnen zu und wartet innerhalb von N Minuten nach Eingang des Befehls auf einen Anruf (dies dient dazu, die Gegensprechanlage für das Öffnen auf dem Weg zum Haus vorzubereiten). Es

gibt zwei Quellen für den Öffnungsbefehl:

1) HTTP POST- eine Anfrage über ein lokales Netzwerk oder das Internet (zum Beispiel: myserver.com/?sim-sim-openup ), d.h. Sie können mindestens von Kuala Lumpur aus öffnen.

2) Der Funkbefehl über die Bedienfelder oder Schaltflächen des Hauses (in meiner Implementierung über die RC-Switch-Bibliothek ).

Und da die gesamte Struktur mit dem Mobilteil verbunden ist, ohne dessen Funktion zu beeinträchtigen, kann die Gegensprechanlage weiterhin auf die übliche Weise verwendet werden (Klingeltelefon-Hi-Hi-Taste), d. H. Inland, nicht in der Lage, die Vorzüge des technologischen Fortschritts einzuschätzen, und nicht verpflichtet sind, sich mit den Details zu befassen.

Plötzliche Boni


Selbst wenn Sie die Türöffnerfunktion nicht verwenden, stellt sich jetzt heraus, dass der Controller regelmäßig benachrichtigt, dass jemand über die Gegensprechanlage an der Eingangstür kratzt. Für mich als neugierige Person sind diese Informationen nicht ohne Interesse - und jetzt erhalte ich sie regelmäßig.

Noch wichtiger ist, dass diese Funktion auch dann weiter funktioniert, wenn Sie das Türsprechgerät mit seinem Schalter ausschalten. Möglicherweise bedeutet dies, dass jetzt die Wahrscheinlichkeit geringer ist, dass die Gegensprechanlage deaktiviert bleibt, wenn Sie plötzlich die Möglichkeit seiner Anrufe vorübergehend ausschließen müssen.

Leider ist die Intercom-Schaltung so beschaffen, dass es beim Ausschalten unmöglich wird, das Schloss fernzusteuern (es scheint, dass die Zentraleinheit glaubt, dass in diesem Fall das Mobilteil unabhängig von seiner tatsächlichen Position „aufgelegt“ ist).

Und Landschaftsbau


Da ich nach minimalen Störungen im Innenraum strebte, musste ich eine Entscheidung treffen, wie die Verbindung zum zentralen Controller hergestellt werden soll, da sich der Controller und das Türtelefon auf verschiedenen Seiten der Tür befanden und der Controller über Strom verfügte, das Türtelefon jedoch nicht.



Am Ende entschied ich, dass es besser ist, das Kabel hinter dem Türrahmen zu spannen und seine Fragmente mit dekorativen Paneelen zu schließen, die auf einem 3D-Drucker gedruckt sind, als eine andere Steckdose mit einem Netzteil zu belegen. Es ist nicht klar, wie das Kabel zum Türhörer-Mobilteil gezogen und der Funkkanal zwischen dem Mobilteil und dem Controller blockiert werden soll.



Und ich denke, dass dies unter meinen Bedingungen die beste Option ist. Ja, und das Relais ging in Betrieb, aber mit einem Funkkanal - wäre wieder in Reserve geblieben.

Nextion neu zuordnen


Als ich über die Desktop-Wetteranzeige sprach (Wetterstation, wenn Sie möchten), erwähnte ich, dass es mir während des Endbearbeitungsprozesses gelungen ist, die Hauptkomponente - den Nextion-Touchscreen selbst - zu beschädigen.

Die Störung hatte keinen Einfluss auf den Betrieb seines integrierten Mikrocontrollers und der Datenanzeige, aber das Touchpanel fiel fast aus. Experimentell habe ich jedoch herausgefunden, dass Sie auf diese Weise die Empfindlichkeit der linken (ungefähr) Hälfte des Bildschirms wiederherstellen können, auch wenn Sie an einer bestimmten Stelle nicht zu viel Druck auf das Nextion-Board ausüben.

Dieser Trick funktioniert instabil und nicht immer, aber oft genug, damit ich es ertragen kann und darüber nachdenke, einen neuen Bildschirm zu bestellen.

Das hat mich natürlich glücklich und traurig gemacht. Zum einen konnte eine teilweise Bedienbarkeit erreicht werden. Andererseits möchte ich ein bisschen mehr mit den Charts spielen. Und dann wurde mir plötzlich klar, in was für eine dumme Falle ich geraten war: Aus irgendeinem Grund war ich besessen davon, den gesamten Bildschirmbereich zu nutzen, wenn ich die „nicht funktionierenden“ Tasten frei auf den Arbeitsbereich übertragen konnte.

Ich verstehe, dass dies für viele wirklich eine banale Entscheidung ist. Aber ich möchte unschuldige Freude mit denen teilen, die wie ich es lieben, bis zum Äußersten zu gehen.

Also habe ich es herausgefunden, die Größe der Tasten leicht verändert, einen neuen virtuellen Steuerkreis in meinen Kopf gezogen und voila! Wir haben die Funktionalität eines teilweise getöteten Displays fast vollständig wiederhergestellt.

Es war:



Es wurde:



Unterwegs musste ich jedoch einen Perfektionisten in mir selbst töten und den ursprünglichen Bildschirm für die Eingabe des Telefon-Eingabetelefons auf einen minimal funktionierenden Bildschirm zurücksetzen:



Live




Wenn technischer Support kein Ale ist


Es scheint, dass es bei all diesen Höhen und Tiefen möglich wäre, zu beenden, wenn nicht für ein Detail: Ich stellte plötzlich fest, dass die Gegensprechanlage (und dahinter der Rest der Automatisierung) beim Zugriff von externen Netzwerken nicht mehr gesteuert wurde.

Das heißt, alle Befehle funktionierten einwandfrei, wenn sie über das Heimnetzwerk und externe Adressen (und nicht gemäß dem internen Typ 192.xxx.xxx.xxx) mit dem Internet verbunden waren, lehnten es jedoch ebenso fehlerfrei ab, von den Netzwerken anderer Betreiber ausgeführt zu werden (ich habe zwei ausprobiert).

Sie sollten sofort verstehen, dass die Befehle über eine HTTP-Anforderung an einen bestimmten externen Port des Routers übertragen werden und von dort bereits an die erforderliche interne IP und den erforderlichen Port umgeleitet werden.

Und dieses Programm hat seit seiner Einführung im Jahr 2013 ohne die geringsten Probleme funktioniert, bis in der aktuellen Version etwas kaputt gegangen ist. Und ich bin mir immer noch sicher, dass es nicht meine Schuld ist. Aber ich weiß nicht, wie ich das überprüfen soll.

Eigentlich wollte ich zuerst bei Beeline schwören, weil ich anfangs dachte, das Problem liege im mobilen Internet. Aber dann riss ich mich zusammen, fand einen anderen Anbieter, versuchte es und fand heraus, dass dadurch das gleiche Problem auftrat.

Dann rief ich Onlaym an und erklärte, so gut ich konnte, das Wesentliche der Behauptungen. Und als Antwort erklärten sie mir im Volksmund:

:
TCP/25 – -;
TCP/135-139, TCP/445 UDP/135-139 – , MS Windows;
TCP/23, TCP/161, UDP/69 UDP/161– .

, , .


Ich bestand wiederum darauf, dass mein Port a) nicht in diesen Bereich fällt, b) nicht wie erwartet funktioniert und c) ich nichts geändert habe.

Wie wäre es mit einer Mauer aus Erbsen?

Nun, was soll ich tun, dann erklärte ich höflich, dass ich, obwohl ich verstehe, dass meine unglücklichen 450 Rubel pro Monat nicht das Wetter für sie tun, von einem solchen Unsinn nach demselben Unsinn suchen werde, aber zumindest funktioniert es.

Als Antwort murmelten sie erneut, dass sie mir IP und dann alle meine Probleme zur Verfügung stellten. Nun meins, entschied ich, dann meins. Und durch eine willensstarke Entscheidung habe ich zuerst die Funktionsfähigkeit des Systems an einem anderen Port (auf eine Einheit verschoben) überprüft - es funktioniert. Und dann hat er in Porter eine flexible Konfiguration der Portnummer vorgenommen, über die das Lenkrad tatsächlich automatisch ist.

Eigentlich zu dem, was ich meine Leiden beschreibe: Ich wollte objektiv wirklich verstehen, wer in einer solchen Situation falsch lag. Weil ich mich wie ein Vollidiot fühle - ich habe den Router neu gestartet und die Einstellungen überprüft (außerdem auf eigene Initiative und nicht auf Aufforderung von „Spezialisten“), und trotzdem haben sie mich in die Hölle geschickt und auf meine krummen Hände hingewiesen.

Aus dem Bildschirm


Zusammenfassend, dass ich für den Bau des Jahrhunderts verwendet habe:

1) KTSDV-12-2 - 1 Stck .
2) Türsprechhörer Digital KM-2NO - 1 Stck.
3) Optokoppler 4N35 - 1 Stck.
4) Flachkabel 10 Adern (sechs verwendet, aber alles - nur für den Fall) - 3 m.
5) Stecker an das Kabel - 2 Stck. Väter und Mütter
6) Selbstgemachtes Wetterdisplay mit Nextion-Touchscreen - 1 Stck .
7) 433-MHz-Sender ( aus einem solchen Kit ) zum Ändern der Wetteranzeige - 1 Stck.
8) 1 kΩ Widerstand für Optokoppler - 1 Stck.

Optionen:

Aktualisierte Oberfläche für Nextion

Testcode (vor der Integration mit KTSDV-12-2 und einer ganzen Reihe von Servicefunktionen, nur um den Gedankengang zu verstehen)
#include <RCSwitch.h> //   http://code.google.com/p/rc-switch/


#define ringTimeOut 40000 //       2094
#define openTimeOut 300000 //    allowOpen        
#define handsetPin A3 //    0
#define openPin A4 //    (1)
#define ringPin 7 //   (3)
#define ringCode 360500 //        
#define doorBell 3395840 //       
#define openCode 255899 //     
#define openDelay 1500 //    
#define handsetDelay 2500 //    
#define txPin 8

unsigned long ringTime, openTime; //    
boolean ring = false;
boolean ringRepeat = false; //       
boolean allowOpen = false; //     

RCSwitch mySwitch = RCSwitch();

//  
void openDoor() {
    
    digitalWrite(handsetPin, LOW);
    delay(handsetDelay);
    digitalWrite(openPin, LOW);
    delay(openDelay);
    digitalWrite(openPin, HIGH);
    digitalWrite(handsetPin, HIGH);
    ring = false; //   
    allowOpen = false; //      
    // sendMail(37); //           
}


void setup() {
  Serial.begin(9600);
  mySwitch.enableTransmit(txPin); //  
  mySwitch.enableReceive(0); //  
  pinMode(handsetPin, OUTPUT); //    
  pinMode(openPin, OUTPUT);
  pinMode(ringPin, INPUT_PULLUP  );
  digitalWrite(handsetPin, HIGH); //  
  digitalWrite(openPin, HIGH);
  Serial.println("Ready");
}

void loop() {
  
  if (digitalRead(ringPin) == LOW && ring == false) { //            
    ring = true; //    
    ringTime = millis();
    // sendMail(36); //     
    mySwitch.send(ringCode, 24);
    Serial.println("Sent ringCode");
    if (ringRepeat == true) { //      
      mySwitch.send(doorBell, 24);
      Serial.println("DoorBell repeat");
    }
    Serial.println("Ring-ring!");
  }

if ((millis() - ringTime) > ringTimeOut && ring == true) { //   40  (   )    
  ring = false; //   
  Serial.println("Ring reset");
  // sendMail(38); //      
}

//   
if (ring == true && allowOpen == true) {
  openDoor(); //  
  Serial.println("Door opened via net");
}

if (ring == false && allowOpen == true) { //  ""   
  if ((millis() - openTime) > openTimeOut) { //       
   allowOpen = false; 
   // sendMail(39); //     
  }
  
}

//   

if (mySwitch.available()) { //
    int value = mySwitch.getReceivedValue();
    if (value != 0) {
      Serial.println(mySwitch.getReceivedValue());
      switch (mySwitch.getReceivedValue()) {
        
        case openCode: //   
          if (ring == true) {
            mySwitch.disableReceive();
            openDoor(); //  
            Serial.println("Door opened via radio");
            mySwitch.enableReceive(0); //   
          }
          break;
    }
    mySwitch.resetAvailable();
  }

//   
}

}






Ich habe die Bilder für die Benutzeroberfläche auf der wundervollen Pixabay- Website aufgenommen .

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


All Articles