Ahoi, habe von einen Bekannten mehrfach die Handsender fürs Garagentor Repariert/Gewartet. Jetzt spinnen die Handsender anscheinend wieder.

Natürlich könnte (und werde ;-)) ich sie (vermutlich) wieder Reparieren, denn diesmal wird nur der Taster hinüber sein:

Hätte ich beim letzten Mal am liebsten direkt mitgetauscht, aber Taster mit langen Schniepel habe ich nicht bzw. weiß nicht wo ich die hingelagert habe :-)

Aber darum soll es gar nicht gehen. Irgendwann flammte die Idee auf, das per Telegram zu regeln. Der allererste Versuch mit UniversalTelegramBot an einen ESP8266 mit Zwei LEDs (Als Relais-Ersatz..) war schnell verwirklicht und hätte auch so direkt übergeben werden können.

Aber da wäre dann alles Hart im Code gewesen. Also zumindest erst einmal der Bot-Token. Um den zu ändern wäre dann immer wieder eine neue Version nötig gewesen. Schlechte Sicherheit. UserID ebenfalls Hart im Code. Gehört sich alles einfach nicht. Schafft kein Vertrauen und birgt, gerade in diesem Fall, ein unglaubliches Potential zur „Schädigung“.

Also musste eine Möglichkeit gefunden werden, die UserIDs und den Bot-Token zu ändern / zu speichern. Erste Idee: EEPROM. Aber nach hundert Zehntausend ~100.000 Änderungen hat sich das. So fiel meine Wahl auf spiffs, das bietet genau das gesuchte. Nach ein paar Tagen kam das geforderte Dual-Relais an.

Nach und nach wuchs der Code. Irgendwann war er aber als Test-Code viel zu groß unübersichtlich und ich entschied mich, den nochmals komplett neu aufzuziehen. Diesmal als Einzelcodes, solche, die nur genau eine Sache gut machen. Also einer für das Lesen des Tokens, einer für ein Webinterface etc. Als dann alle Teilstücke zufriedenstellend liefen knobelte ich sie zusammen. Lief alles bestens.

Bis auf eine Sache, die hat mich ein paar Tage beschäftigt: Bot-Token nicht mehr als festes #define im Code zu haben. Nach ganz viel Fummelei stellte ich dann mal eine Frage beim „Erfinder“ des UniversalTelegramBots mit sehr zufriedenstellender Antwort:
> Use updateToken(„bot12356“) to update the token whenever you need

Beim Bot konnte endlich der Token geändert werden. Hooray \O/

Ein Problem gab es noch:
Die UserIDs. Prinzipiell auch simpel. Aber if else ist mein Kryptonit.
Irgendwann hatte ich auch das überwunden :-D

    if (chat_id != user1String) {
      if (chat_id != user2String) {
        if (chat_id != user3String) {
          if (chat_id != user4String) {
            if (chat_id != user5String) {
              bot.sendMessage(chat_id, „Du nicht!“, „“);
              continue;
            }
          }
        }
      }
    } 

Das Webinterface ist… Nunja. Simpel halt. Es kann genau das, was es können muss. User anlegen/ändern/löschen, Bottoken Anzeigen/ändern/löschen und die Tastdauer vom Relais einstellen. Und das für mich wichtigste; Es werden keinerlei Daten hart im Code gespeichert. Alles wird in Sieben Dateien im spiffs gespeichert: token.txt, tord.txt so wie user1.txt bis user5.txt.





Wer beim Lesen des Codes und dem Zweier-Relais verwundert ist;
Kommunikationsproblem. Dachte, das es für das Tor 2 Taster gibt. Rauf und Runter. Gibt aber nur einen: Tasten > Tor bewegt sich ;-)

So gibt es nun ein Relais fürs Tor und einen für $irgendwas. Licht, Lüfter, WhatEver.

Hier ist der Code im gänze zu finden. Nicht der ordentlichste, aber der tut, was er soll :-)

Die „Hardware“ im schönen gedruckten Gehäuse:

Die Verdrahtung ist natürlich auch recht simpel. Wer im Code über „WifiDeleter()“ gestolpert ist: An D7 hängt auch ein Dupont-Kabel, welches für 0,5-2 Sekunden an GND (am Relais ist noch einer verfügbar) gesteckt die Wifi-Daten löscht und den entsprechenden Assistenten wieder durchlaufen lässt. Ist aber nicht nötig, da das WifiManager-Gedöns halbwegs schlau ist, wie man Hier unter 2a nachlesen kann:
Ist das Wifi nicht mehr vorhanden und/oder erreichbar, startet der Asisstent neu. Praktisch!

So. Was macht das ganze nun?
Zum einen spannt es beim ersten Start einen Accesspoint auf, auf den man sich per Handy verbindet. Dort trägt man die vorhandenen Wifi-Daten ein. Danach über das Webinterface einen Token und die UserIDs eintragen, die man zB vom @GetUsernameID_Bot Bot bekommt. Danach ist das Gerät einsatzbereit.

Ganz eigentlich sollte vor ein paar Tagen die Montage stattfinden, aber da mein Magen-Darm massivste Probleme hatte, musste ich das leider absagen. Wenn alles Montiert ist, gibt es sicherlich auch ein paar Bilder und/oder Videos davon :-)

Ein „Problem“ gibt es in der Tat auch noch, da konnte mir auch der Entwickler nicht helfen;
Wenn das dingen mal nicht erreichbar ist und man mehrfach einen Befehl sendet, werden die ganzen Eingaben abgearbeitet, wenn das dingen wieder erreichbar ist. Allerdings anscheinend nur rund 24 Stunden lang, so circa. Hatte um 17:34 einige nachrichten geschickt, am nächsten Tag um 19:22 wurden die nicht mehr ausgeführt. Aber gut, muss man sich mit Arrangieren. Und wenn man es weiß… :-)

Flattr this!