Menü


Mehr...

Software für den Taschenrechner TI-89 von Texas Instruments findet ihr hier.

News

Kommentare zu meiner Seite könnt ihr im Gästebuch, im Blog oder per E-Mail schreiben. Vielen Dank!

Service

Impressum
Kontakt
Links

Statistiken

Besucher:
590406
Druckansicht Textbereich maximieren

Hausüberwachung, Automation und Fernwartung mit der Conrad C-Control

Dieses Projekt ist gerade in der Entwicklung - am Besten öfter mal vorbeischauen!

Das Projekt "Nebenuhrsteuerung mit der C-Control I" war abgeschlossen, die Uhr lief, und die lange im Schrank ein Schattendasein gefristet habende C-Control hatte endlich etwas Sinnvolles zu tun. Aber Moment - hatte sie wirklich was zu tun? Eigentlich für einen Controller oder Prozessor ziemlich wenig. Denn den Großteil der Zeit verbrachte die C-Control beim Steuern der Uhr mit - Warten. Eine Uhr ist ja naturgemäß nichts, bei der wahnsinnig komplexe Operationen durchgeführt werden müssen, und bei einer Nebenuhr muss sowieso immer nur alle Minute mal ein Impuls ausgegeben werden.

Was lag also näher, als den Prozessor zusätzlich ein paar andere Aufgaben erledigen zu lassen, die er quasi nebenbei, als "Zeitvertreib", machen konnte. Wie zum Beispiel die Überwachung verschiedener analoger und digitaler Werte, Aufzeichnung derselbigen in ein Ereignis-Log im EEPROM, und das Beantworten von Anrufen an einem an die RS232-Schnittstelle angeschlossenen Modem zwecks Fernwartung und -Abfrage? Die Idee für den C-Control HomeCommander war geboren.

"Halt!", werden da einige rufen. "So etwas gab es doch schonmal!", und sie werden dabei an den großartigen "Lallus" von Wolfgang Back denken. Dieses Projekt, das damals im WDR-Computerclub ausführlich vorgestellt wurde und viele zum Nachbauen angeregt hat, hat tatsächlich einige Ähnlichkeit mit meinem CCHC. Allerdings hat Wolfgang Back eine weitaus komplexere Schaltung drumherum gebaut: Mit Telefonleitungs-Interface, DTMF-Receiver und gar einem Sprachausgabe-Chip. Er konnte seinen Lallus von überall aus mit einem normalen Telefon anrufen, ihn mit DTMF-Tönen steuern und bekam die Rückmeldungen direkt in Form von Sprache.

Ich gehe jedoch mangels der oben aufgeführten Teile (und Erfahrung damit) einen anderen Weg. Anstatt mir mein eigenes Telefon-Anschaltgerät zu bauen, benutze ich einfach ein Modem, das ich an die RS232-Schnittstelle anschließe. Damit dieses nicht ständig laufen muss, schalte ich es nur dann ein, wenn es wirklich gebraucht wird - dazu verwende ich eines der beiden auf dem Starterboard schon vorhandenen Schließer-Relais. Der Fernzugriff ist so nur zu bestimmten, vorher definierbaren Zeiten möglich. Außerdem muss beim Login eine PIN eingegeben werden. Es ist für die Zukunft noch geplant, die Caller-ID (CLIP-Signal) des Anrufers auszuwerten und nur bei bestimmten, vorher definierbaren Nummern den Anruf überhaupt anzunehmen. Dazu ist ein CLIP-kompatibles Modem nötig (muss die Befehle AT#CID=1 und/oder AT+VCID=1 unterstützen). Da dies jedoch in CCBASIC leider nur mit relativ ausladendem Code zu realisieren ist und ich das Modem sowieso an einem Ausgang meiner Telefonanlage betreiben will, der nur bei bestimmten Anrufern klingelt (CLIP-Filter über Telefonanlagenkonfiguration möglich), habe ich zunächst hierauf verzichtet. Wer Lust hat, dies noch zu implementieren - nur zu! CLIP-kompatible Modems senden bei Anrufen mit CLIP-Signal die Strings "NMBR = " sowie, falls vom Telefonanbieter oder der vorgeschalteten Telefonanlage übermittelt, auch noch "DATE = MMTT" (Datum), "TIME = " und "NAME = ". Im analogen Netz der deutschen Telekom wird leider bisher nur die Nummer (NMBR) übertragen. Viele ISDN- und VoIP-Anlagen (z.B. die FRITZ!Boxen von AVM) senden jedoch stets das aktuelle Datum und Uhrzeit sowie auch den Namen des Anrufers mit, sofern dieser im internen Telefonbuch der Anlage eingetragen ist und die Firmware nicht allzu alt ist.

Natürlich hatte ich zunächst Zweifel, ob all diese Funktionen überhaupt in das 8KB-EEPROM passen würden und wenn doch, ob dann noch viel Platz für das Logbuch bliebe. Doch ich konnte die meisten Funktionen platzsparender programmieren als gedacht, und sogar die komplette Funktionalität von CCCC 1.3 (inklusive Schlagwerk) konnte ich beibehalten!

Das Programm wird gelegentlich noch weiter entwickelt und wurde insbesondere noch nicht komplett getestet (d.h. im Dauerbetrieb mit Fernwartung). Der Uhrenteil aber hat seine Dauertest-Probe schon länger bestanden. Folgende Funktionen laufen schon recht stabil:

Natürlich muss dazu ein Modem an den COM-Port der C-Control angeschlossen werden. Dazu ist ein normales (nicht gekreuztes) Modem-Kabel zu verwenden.

Die Ereignisse werden im Ereignis-Log kodiert mit Ereignistyp (z.B. "Alarmschleife 2 unterbrochen"), Ereignisdaten (je nach Ereignis, z.B. Temperaturwert), Datum und Uhrzeit abgelegt. Jedes Ereignis benötigt dabei 6 Bytes im Log. Die Ereigniscodes sind definierbar, bei der Ausgabe über Remote-Login werden nur die Codes angezeigt. Später ist noch eine Windows-Oberfläche geplant, die dann in der Lage sein wird, anhand einer Tabelle die Ereignisse in Klartext umzuwandeln. Für einen Überblick über die derzeit verwendeten Ereignisse habe ich diese mal in einer Textdatei aufgeführt: CCHC-Events.txt (2KB). Die dort vorhandenen Ereignisse werden auch bereits alle korrekt erkannt und ins Log eingetragen - korrekter Anschluss der diversen Pumpen, Schwimmerkontakte, Alarmschleifen etc. vorausgesetzt. Natürlich sind die Portbelegungen sehr speziell auf meine Fälle angepasst, sicherlich wird jeder seine eigenen Ideen haben, was er damit überwachen will (andere Geräte, weitere Pumpen, Temperaturen etc.). Dies kann man dann im Quellcode entsprechend ändern.

Am besten, ihr schaut euch den Code aber selbst an. Für euren speziellen Zweck und andere Peripherie an den Ports oder andere Modembefehle etc. sind Modifikationen natürlich unvermeidbar. Der Sourcecode darf unter Nennung der Quelle (www.f-schneider.de.vu) weitergegeben werden. Also, viel Spaß beim Experimentieren!

CCHC Version 2.0d (30 KB, 3930 Bytes compiliert): CCHC-20d.bas
» Release-Version des C-Control HomeCommander

CCHC Version 2.1d (27 KB, 3222 Bytes compiliert): CCHC-21d.bas
» Neue Version, in der das Schlagwerk wieder entfernt wurde, um Platz für mehr Log-Einträge zu gewinnen (basiert auf dem Code-Branch von CCCC ab Version 1.4). Außerdem wird der Zeigerstand nicht mehr minütlich gespeichert, um das EEPROM zu schonen (Details siehe Kommentare im Quellcode). Verbesserter DCF-Empfang, Impulslänge per Konstante definierbar
» Empfohlene Version




CCHC Event-Liste (2 KB, Text): CCHC-Events.txt
» Liste der derzeit von CCHC verwendeten Eventcodes (für Ereignis-Log)