GAServer - Schachtüberwachung eines Getränkeautomaten
(mit Logbuch/Bestandsführung/StatusEmail/Fernabfrage)
(Eine Unterseite von http://www.oliver-schlenker.dyndns.org)

Beschreibung:

Diese Seite zeigt, wie ich mit dem AVR-NET-IO-Board der Fa. Pollin (http://www.pollin.de), einer selbst erzeugten Firmware von E2000 (http://www.elektronik2000.de) und einem Purebasic-Programm (http://www.purebasic.de) genannt "GAServer" eine Schachtüberwachung eines Getränkeautomaten realisiert habe. Das Purebasic-Programm frägt zyklisch die Zustände der im Board mitgezählten Schaltbefehle bzw. Schachtentnahmen mit. Es werden von den 8 Schächten der Automaten der Schachtzähler und der jeweilige "Leermeldekontakt" des Schachtes überwacht und zyklisch mitprotokolliert. Es wird ebenfalls noch eine Datei mit den Bestandsveränderungen je Schacht mitgeführt und es ist möglich eine zyklische StatusEmail mit "Schachtzustandsbewertungen" z. B. an die Firma abzusetzen, damit am nächsten Morgen die Disposition des Getränkehandels weiß, was mit auf den LKW muss bzw. was aufgefüllt werden muss. Inzwischen ist es auch möglich über ein Client-Programm genannt "GAClient" eine Fernabfrage der einzelnen Automaten durchzuführen und die Daten entsprechend auszuwerten. Dieses Projekt wird in Zusammenarbeit mit einem Getränkehändler, der hier über meine Webseite bei mir angefragt hatte ob so was machbar sei, durchgeführt.

Meine ersten "Gehversuche" mit der E2000-Logiksoftware/E2000-Firmware findet Ihr unter folgendem Link:

E2000 - alternative Firmware für das AVR-NET-IO
(zur Erstellung autarker Mess- und Steuerungselektronik)


(Um die Grafiken klarer und detaillierter zu sehen, solltet Ihr einen Klick mit der linken Maustaste
auf der entsprechenden Grafik ausführen!)

Hier ein Bild meines auf die E2000-Firmware umgerüsteten AVR-NET-IO-Boards
mit manuellen Tastern zur Simulation der Entnahmekontakte der einzelnen Getränkeschächte:

Im Standard genügt hier das AVR-NET-IO-Board von Pollin, mit einem ATMega644-Controller bestückt und einer kleinen Hilfsplatine zum Herausführen des Sub-D-25poligen Anschlusses, damit man die Schachtschalter gut anschließen kann. Auf dieser Hilfsplatine habe ich 4 der 8 Schaltkontakte und eine kleine Lochrasterplatine mit LEDs für die Schachtleermeldung angeschlossen. Das abgebildete E2000-Add-On-Board (unter dem AVR-NET-IO zu sehen) und das LCD-Display (links) hatte ich an diesem Testboard noch dranhängen und habe daraufhin auch die Firmware im Controller mit LCD-Display-Meldungen versehen. Für einen Betrieb im Getränkeautomaten reicht aber völlig das AVR-NET-O-Board mit einem zusätzlichen Adapterboard (z. B. mit Optokopplern) oder potentialfreien Relaiskontakten zum Abnehmen der Impulse der einzelnen Schachtkontakte des Automaten.

- Pollin Board AVR-NET-IO (Pollin-Nr. 810 058 = Bausatz; Pollin-Nr. 810 073 = fertige Platine)
- MicroController ATMega 644-20PU (Pollin-Nr. 100 996)
 
(dieser ersetzt den Typ ATMega32-16PU, den Pollin auf dem AVR-NET-IO-Board standardmäßig einsetzt)
- guten Kühlköper für den LS7085-Spannungsregler
  (ACHTUNG: der andere Regler LM317 darf nicht mit dem Kühlkörper des LS7805 verbunden werden, da dies
  einen Kurzschluss darstellt.)
- Sub-D-25polige Anschlußplatine (Pollin-Nr. 810 055 = Bausatz)
 
(nur zum Anzeigen der 8 Ausgänge per LED und anschließen von 4 der 8 Eingangskontakte notwendig!)
- stabilisiertes Netzteil 9V oder 12V
 
(ich nehme da gerne Uni-Netzteile mit 800-1000mA; aber "stabilisiert" - ist wichtig!)

Nachdem der obige Hardwareaufbau stand, habe ich mit mit der E2000-Logik-Oberfläche eine Firmware für den ATMega644-Microcontroller erstellt.

Hier mal ein Snapshot der mit E2000 erzeugten Boardfirmware (genannt GAFirmware;
z. Zt. nicht für den Nachbau freigegeben):



Da die E2000-Firmware im Standard über einen eingebauten rudimentären Webserver verfügt, kann man sich die aktuellen Schachtzustände, Schachtleermeldungen und Schachtstartwerte auch über einen Webbrowser direkt anschauen.

Hier mal einen Snapshot dieser Weboberfläche von E2000, mit den Beständen der Schächte 1-8:

Die E2000-Leute stellen für die E2000-Firmware auch noch einen E2000-Designer zum Download zur Verfügung. Damit kann man sich für ein androidfähiges Handy eine eigene Oberfläche designen. Hier habe ich allerdings nur mal "reingeschnuppert" und kann (noch) nicht viel zu diesem Programm sagen!

Anschließend habe ich mir in Purebasic ein Programm namens "GAServer" (=Getränkeautomaten-Server) geschrieben, welches die Daten aus dem Board über das Telnet-Protokoll abfragen kann. Inzwischen habe ich noch einen kleinen Client namens "GAClient" (=Getränkeautomaten-Client) entwickelt. Mit diesem Programm kann man z. B. von der Firma aus, die Zustände der einzelnen Getränkeautomaten über das Internet abfragen und dann für die Disposition bzw. Tourenplanung nutzen. Mit "GAClient" wird über einen Port aus dem Programm "GAServer" die Daten des letzten Logbucheintrags per IP-Adresse/DNS ausgelesen und kann dann recht einfach ausgewertet werden. So kann beispielsweise jeden Morgen eine aktuelle Bestands- bzw. Zustandsabfrage der einzelnen Automaten gefahren werden.

GAFirmware - Eigene und autark arbeitende E2000-Firmware für das AVR-NET-IO-Board:
Die Firmware für das AVR-NET-IO-Board wurde mit der E2000-Logik erzeugt und macht aus dem passiven AVR-NET-IO-Board der Fa. Pollin eine aktive Logik namens E2000-NET-IO. Dadurch übernimmt der Microcontroller auf dem Board nun eigenständige und autarke Funktionen (z. B. das Mitzählen der Schachtentnahmen oder das mitrechnen der Schachtbestände). Auf dieser Firmware setzt dann das GAServer-Programm mit eigenen Abfragen, Visualisierung der Schächte, usw. auf.

GAServer.exe - Server-Software zur Schachtüberwachung des Automaten mit Logbuch+StatusEmail:
Das Programm liest die Startparameter aus einer Datei namens "GAServer.ini" ein. Anschließend erscheint die unten abgebildete Oberfläche. Die Logbuchdaten werden als ASCII-Datei mit einem frei bestimmbaren Feldtrenner auf die lokale Festplatte geschrieben. Das eigentliche Logbuch wird zyklisch um einen Datensatz mit "Automatenkennung", "Datum", "Uhrzeit", "Statusflag", "Schachtinhalt 1-8", "Maximaler Schachtfüllstand 1-8", "Aktueller Schachtfüllstand 1-8" und "Zustand Leermeldekontakt 1-8" erweitert. Parallel dazu wird bei jeder Schachtentnahme eine Bestandsdatei um einen Datensatz mit "Automatenkennung", "Datum", "Uhrzeit", "Schachtnummer", "Schachtinhalt", "Schachtbestand vor Entnahme", "Entnahmemenge" und "Schachtbestand nach Entnahme" erweitert. Ebenfalls wird auch zyklisch eine StatusEmail mit den aktuellen Schachtfüllständen des Automaten und einer Schachtfüllstandsbewertung "GUT" - "BEDENKLICH" - "KRITISCH" an z. B. die Disposition des Getränkehandels abgesetzt. Bei Schachtfehlern wird ebenfalls ein entsprechende FehlermeldungsEmail abgesetzt. Die Logbuchdateien lassen sich mit einem Texteditor öffnen oder in eine Tabellenkalkulation importieren und dort entsprechend auswerten und grafisch aufbereiten.

GAClient.exe - Client-Software zur Fernabfrage der Bestände und Meldungen aus CAServer.exe:
Dieses Programm verbindet sich nach dem Programmstart mit dem "GAServer"-Programm der einzelnen Getränkeautomaten, liest von dort die letzten Logbuchwerte wie Schachtinhalte, Schachtbestände, Schachtbewertungen, Leermeldungen, etc. aus und speichert dann diese Datensätze der einzelnen Automaten in einer lokalen Datei, welche dann für die Disposition und Tourenplanung zur Verfügung steht.

bei GAFirmware (aktuelles Release = V1.5)

bei GAServer.exe (aktuelles Relase = V2.4)

bei GAClient.exe (aktuelles Release = V1.1)


28.04.2013:
Hier handelt es sich mit der GAServer.exe in der Version 1.0 um eine erste Testversion um die generelle Logbuchfunktion zu prüfen. Ich habe hier eine einfache Vorab-GAFirmware Version 0.9 erstellt und benutzt.

29.04.2013: Bei der GAServer-Version 1.1 handelt es sich nur um ein kurzes "Zwischenrelease", welches ebenfalls mit der GAFirmware-Version 0.9 agierte.

30.04.2013:
Hier handelt es sich in der GAServer-Version 1.2 um die erste funktionstüchtige Version, nachdem ich hier noch ein paar kleinere Probleme mit der Passwortabfrage des Boards und dem
automatischen Reconnect der Netzwerkverbindung bei z. B. einem Boardreset behoben hatte.
Die GAFirmware wurde auf Version 1.0 angehoben.

01.05.2013:
Hier habe ich das GAServer-Programm auf die Version 1.3 angehoben, um die Emailfunktion erweitert und kleinere Anpassungen an der Datenstruktur des Logbuches vorgenommen. Der Feldtrenner im Logbuch kann nun frei in der "GAServer.ini"-Datei eingestellt werden. Die GAFirmware wurde auf Version 1.1 angehoben.

04.05.2013: In der GAServer-Version 1.4 habe ich ein Bestandslogbuch eingeführt und kleinere Anpassungen in den Textmeldungen vorgenommen. Die GAFirmware wurde auf Version 1.2 angehoben.

09.05.2013: Bei der GAServer-Version 1.5 habe ich die Möglichkeit geschaffen über die .INI-Datei die max. Anzahl der Netzwerk-Verbindungsversuche und Passwortabfragen auf das E2000-NET-IO-Board einzustellen. Bei GAServer Version 1.5 handelt es sich um die Final-Version der 1er-Version. Die GAFirmware bleibt auf Version 1.2.

10.05.2013: In der neuen Programm-Version GAServer 2.0 läuft nun ein NetzwerkServer mit, der einen freigegebenen Port auf externe Anfragen von der neu hinzu gekommenen Software GAClient 1.0 überwacht. In der Firma wird dann GAClient 1.0 gestartet und frägt dann den letzten Logbuchstatus von allen in der .INI-Datei gelisteten/aktiven Getränkeautomaten über das Internet ab und sammelt diese Werte dann in einer lokalen Logbuchdatei, welche dann recht einfach zur Disposition und Tourenplanung genutzt werden kann. Die GAFirmware bleibt auf Version 1.2.

31.05.2013: In der neuen Programm-Version GAServer 2.1 ist es nun möglich die Versendung einer StatusEmail manuell auszulösen (z. B. für Testzwecke). Zusätzlich ist es nun auch möglich über die GAServer-Oberfläche die 8 Ausgangskontakte des Boards über das Internet zu schalten um hier Zusatzgeräte im Getränkeautomaten zu aktivieren/deaktivieren. Der Schachtstatus hat nun eine "TriState-Meldung" um außer "OK" und "LEER", mit der Meldung "FEHLER", einen möglichen "Schachtklemmer" anzuzeigen. Die GAClient-Software bleibt auf Version 1.0. Die GAFirmware wurde auf die Version 1.4 angehoben.

15.06.2013: In der neuen Programm-Version GAServer 2.2 und GAClient 1.1 wurde ein sog. UnixTimeStamp (=Integerzahl im Sekundentakt mit Start am 01.01.1970 um 00:00 Uhr; weitere Infos siehe: http://de.wikipedia.org/wiki/Unix-Timestamp) hinzugefügt. Dadurch lassen sich die Logbuchdateien einfacher bzw. ohne zusätzliche Zeitumrechnungen in Fremdsystemen/Datenbanken importieren/weiterverarbeiten. Auch die CMNR und TVGNR wird nun an die Logbücher mit übergeben. Die GAFirmware bleibt auf Version 1.4.

11.07.2013: In der neuen Programm-Version GAServer 2.3 werden nun auch bei "Schachtklemmern" pro Schacht entsprechende Fehlermeldungsemails automatisiert verschickt. Die verschiedenen Mailfunktionen "StatusEmail" und "SchachtFehlerEmail" können in der GAServer.ini-Datei entsprechende aktiviert/deaktiviert werden. Programm GAClient bleibt auf Version 1.1 und die GAFirmware bleibt auf Version 1.4.

15.07.2013: In der neuen Programm-Version GAServer 2.4 wurde ein Button zur Abfrage der aktuellen Schachtbestände/-werte bzw. des gesamten Warenwertes im Automaten eingebaut. Ein weiterer Button ohne Funktion habe ich auch mal vorgesehen. Es werden nun Fehlermails UND Leermeldmails pro Schacht automatisiert verschickt. In der GAServer.ini gab es kleinere strukturelle Anpassungen. Programm GAClient bleibt auf Version 1.1 und die GAFirmware bleibt auf Version 1.4.

17.07.2013: Änderung der GAFirmware auf Version 1.5. Mit dieser Firmware werden nach einem Neustart des Programms GAServer 2.4 die initialen Schachtwerte aus dem Board korrekt eingelesen. So wird nun über die GAFirmware beim Programmstart unterschieden ob ein Schacht "leer" ist oder ein Schachtfehler gemeldet wurde. Da über 8 Eingänge quasi 16 Meldungszustände abgefragt werden müssen, wird nun über diese Firmware ein entsprechender Status im Board gesetzt, der bei Programmstart von GAServer 2.4 entsprechend ausgelesen wird. GAServer bleibt auf Version 2.4. GAClient bleibt auf Version 1.1.


Hier mal nun ein Snapshot des Purebasic-Programms "GAServer", welches die Schachtdaten
und -Zustände zyklisch aus dem E2000-NET-IO-Board ausliest und protokolliert:


Und hier noch in der typischen Windows-Luna-Ansicht (von einer älteren Programmversion):

Und hier mal ein Snapshot der Rückmeldung des Purebasic-Programms "GAClient"
nachdem alle Automaten über eine IP-Adresse/DNS abgefragt wurden:

Und hier noch in der typischen Windows-Luna-Ansicht:

(Info: Die PureBasic-Programme wurden von mir unter Windows XP mit SP3 entwickelt und getestet!)

Durch die einfache Portierbarkeit von Purebasic-Quellcodes zwischen Windows-, Apple-, Linux- und Amiga-Systemen dürfte das Programm auch (mit kleinen Anpassungen im Quellcode; z. B. Pfadnamen) auch auf den vorgenannten Betriebssystemen laufen. Auch Windows-Skins wie die Luna-Ansicht von XP wird von Purebasic nativ unterstützt und kann über den Compiler aktiviert/deaktiviert werden.

Da dieses Programm ein spezielles Entwicklungsprojekt, zusammen mit einem Getränkehandel ist, gebe ich hier z. Zt. keine detaillierten Informationen, Vollversionen, Demoversionen, Handbücher, Quellcodes o. ä. raus. Diese Veröffentlichung dient nur dazu um zu zeigen, was mit dem AVR-NET-IO-Board, der E2000-Firmware, der Programmiersprache Purebasic, einer Idee des Getränkehandels und natürlich Zeit so machbar ist.

Fortschritte an an diesem Projekt werde ich von Zeit zu Zeit in der o. g. Programmhistorie veröffentlichen. 

Hier handelt es sich sicherlich nicht um eine Profilösung (z. B. mit Bussystem) für einen Getränkeautomaten, aber ich glaube mir ist hier eine einfache und gute Automatisierungslösung für
Getränkeautomaten, Getränkehandlungen mit Automatenverleih oder Automatenaufsteller im Allgemeinen gelungen. Davon abgesehen belaufen sich die Hardwarekosten für diese Lösung
sicherlich unter 200 Euro/Automat (AVR-NET-IO-Board, Adapterboard und ein kleiner Rechner),
was diese Lösung für "Bastelinteressierte" und "-begeisterte" interessant und umsetzbar macht.
Durch entsprechende Anpassungen kann man die Soft- und Hardware sicherlich auch
für andere Automatenfamilien gut nutzen.

Bei Interesse, Fragen, Wünsche, Anregungen, Lob oder Kritik könnt Ihr mir gerne eine

eMail senden an: Oliver.Schlenker@T-Online.de