Hinweis: Obwohl JavaScript für diese Website nicht unbedingt erforderlich ist, werden Ihre Interaktionsmöglichkeiten mit den Inhalten eingeschränkt sein. Bitte aktivieren Sie JavaScript für das volle Erlebnis.

Python On Guard

Einleitung

Internetkonnektivität ist allgegenwärtig, findet neue Anwendungen und haucht alten Designs neues Leben ein. In diesem Zeitalter kleiner IC-Geräte mit TCP/IP-Stacks und drahtloser Konnektivität benötigt man keinen eigenständigen PC mehr, um das Web zu nutzen.

VAHNZ Controls entwickelte sein eBukal[1] Fernalarmgerät, um sein Wissen über Mikrocontroller-Schnittstellen und Internetprotokolle zu nutzen und eine innovative Lösung für die Gebäudeautomatisierung zu schaffen.

Remote Event Dial-up Internet Notification

Die Idee entstand aus dem Bedürfnis eines Kunden, die Temperatur der Klimaanlage eines Bürogebäudes während eines langen, heißen Sommers in Portland zu überwachen. Der Hausverwalter des Bürogebäudes wollte benachrichtigt werden, bevor die Temperatur in den Büros unerträglich wurde und die Mieter sich beschwerten. Die Anwendung beschränkt sich nicht nur auf die Erkennung von Temperaturänderungen, sondern wurde auch mit einer Vielzahl von Eingabegeräten wie Näherungsschaltern und Flutsensoren eingesetzt.

Version eins des Designs verwendete DTMF-Töne, um die numerische Nachricht auf dem Telefon des Büroleiters zu hinterlassen. Abgesehen von der Grobheit bei der Entschlüsselung der Bedeutung der Ziffern musste das Anrufgerät auch die Timing-Tücken im Voicemail-System des Empfängers überwinden, um die eine Option zum Hinterlassen des digitalen Feedbacks auszuwählen. Das resultierende System war weder robust noch schön.

Textnachrichten schienen der richtige Weg zu sein, da Nachrichten leicht von jedem Mobiltelefon empfangen werden können. Die meisten Mobilfunkanbieter unterhalten E-Mail-zu-SMS-Gateways, und viele Geräte von der Stange können E-Mail-Nachrichten generieren. Ich war nur durch die Notwendigkeit der Einwahlverbindung eingeschränkt – viele Standorte, die überwachte Geräte enthielten, erwiesen sich als immun gegen Funksignale.

Nachdem ich die Grundidee entwickelt hatte, Textnachrichten zu verwenden, und die Komponenten ausgewählt hatte, musste ich herausfinden, wie die einzelnen Teile zusammenarbeiten sollten.

E-Mail-Nachrichten, die vom eBukal-Gerät kamen, mussten auf dem Server analysiert werden, um den/die zu benachrichtigenden Empfänger und das Online-Logbuch, das den Eintrag erhalten sollte, zu bestimmen. Neue Geräte mussten zur Konfigurationsdatei hinzugefügt werden. Parameter wie Schwellenwert, zu wählende Telefonnummer usw. mussten über die serielle Schnittstelle an eBukal gesendet werden. Eine grafische Benutzeroberfläche (GUI) musste geschrieben werden, damit das Personal vor Ort das Gerät einstellen konnte.

Diagram: eBukal used to monitor water conditions in a basement

So wird eBukal zur Überwachung der Wasserbedingungen in einem Keller verwendet Vergrößern

Ich wusste, wie man Kommandozeilenskripte und PHP für die Servercodierung schreibt und verwendete Perl für CGIs und Visual Basic für die GUI, aber dieses Mal wollte ich es besser machen. Ich wollte es richtig machen.

Python – All-inclusive-Entwicklung plus Plattformunabhängigkeit

Ich hatte Python schon einmal verwendet, und es schien das Potenzial zu haben, die gesamte erforderliche Codierung zu leisten, und es war eine Programmiersprache, die ich gerne benutzte. Ich war mir bei einigen Teilen der Aufgabe, insbesondere beim Erstellen einer grafischen Benutzeroberfläche, nicht ganz sicher, beschloss aber, mich meinen Ängsten zu stellen und auf die Reife von Python, seine leistungsstarken Bibliotheken und die Unterstützung von Drittanbietern zu vertrauen. Der SPE-Editor erwies sich zusammen mit der Interpretiertheit von Python als besonders wertvoll.

A screen shot of the eBukal user interface

Screenshot der eBukal-Messaging-Konfigurationsbenutzeroberfläche, basierend auf wxPython

Nach einigen Versuchen und Irrtümern habe ich das endgültige Konzept mithilfe der folgenden Standardbibliotheken und Module von Drittanbietern festgelegt

  • email, time und ConfigParser – zur E-Mail-Analyse, Telefonnachrichten-Generierung und Logbuch-Eintragung auf der Serverseite
  • cgi und sha – für ein CGI-Modul zur Bearbeitung der Serverkonfigurationsdatei
  • wxPython und wx.xrc – für die GUI, geschrieben in XRCed
  • serial, pickle, ConfigParser und time – für die serielle Kommunikationsbibliothek für den eBukal-Setpoint-Download

Leider gibt es keinen PIC-Compiler, der die Python-Syntax verwendet; wenn ein solches Werkzeug existieren würde, wäre der Kreis geschlossen. Infolgedessen ist der Mikrocontroller-Code in PicBasic Pro geschrieben, einem beliebten kommerziellen Produkt von MicroEngineering Labs, Inc.

Screen shot of the eBukal online log

Screenshot des Online-Ereignisprotokolls von eBukal, mit Warnungen in Rot und informativen Meldungen für tägliche Diagnosen Vergrößern

Das Glücksspiel hat sich ausgezahlt. Das System funktioniert gut und viele Extras konnten hinzugefügt werden: Eine Server-Logging-Funktion, tägliche Diagnosen und Online-Konfiguration. Python lieferte mehr, als ich erwartet hatte, und einige Funktionen wurden aufgrund der Verfügbarkeit der Funktionalität in den verwendeten Bibliotheksmodulen hinzugefügt.

Zusammenfassung

Dies mag vielleicht noch nicht die Killer-Anwendung von VAHNZ Controls sein, aber ich bin der Meinung, dass die Wahl der Programmiersprache Python ein Schritt in die richtige Richtung ist. Die Technologie entwickelt sich ständig weiter, und niemand weiß, was als Nächstes kommt, aber ich bin zuversichtlich, dass Python bereit für die Herausforderung sein wird. Plattformunabhängigkeit ist ein weiterer Aspekt, der für ein gutes Gefühl sorgt – in der heutigen Zeit ist es vielleicht riskanter denn je, alles auf einen einzigen Anbieter zu setzen.

Weitere Informationen finden Sie online bei VAHNZ Controls unter eBukal.vahnzcontrols.com oder kontaktieren Sie info at vahnzcontrols.com.

Über den Autor

Ivan Lehecka ist Gründer von VAHNZ Controls, einem Unternehmen, das bestrebt ist, Intelligenz in die Gebäudeautomatisierung und andere Bereiche zu bringen, wo dies sinnvoll ist.

[1]eBukal ist eine Marke von VAHNZ Controls.