mini-web Modul, Erweiterung mit einem 64kB SRAM


Die Arbeiten mit der Gastherme und der Abspeicherung der Daten ist gut, hat aber den Nachteil, da die Auswertung nur einmal im Monat vorgenommen wird, sind die Ergebnisse im Schnitt 2 Wochen alt.

Lösung: Ein web-Interface mit einem mini-web Modul.

Die Wahl viel auf das Modul mini-web-Server von Ullrich Radig, es funktioniert hervorragend und mit einem minimalen Leistungsbedarf von wenigen Watt. Für meine Zwecke musste es allerdings erweitert werden, da ich die Temperaturen der Heizungsanlage usw. überwachen wollte.

mini-web server
Der mini-web Server.

Der Input der Messdaten war ein kleineres Problem, da ich verschieden Anlagen mit einem seriellen Interface auf Basis des seriellen Protokolls betreibe. Die Heizungsüberwachung wurde erweitert und schleift alle empfangenen Daten über USART weiter an das mini.web Modul. Quittungen sind nicht notwendig, die Daten werden einfach oft genug gesendet.

Der mini-web Server hat ein serielles Interface für die Fehlersuche und Überwachung. Dieses wollte ich nicht benutzen. Der Input für die 600 Bout Daten der Heizungsüberwachung wurde mit einem Software USART Empfänger realisiert. Dazu wird er SV2 Interface Stecker benutzt.

Schaltung Serial Input, 20mA Strom Pegel mit Optokoppler.

Das intern RAM war für meine Zwecke zu klein. Aus einem alten mainboard hatte ich ein paar SRAM Chips mit 64kB. 14 Datenleitungen liefert das SV1 Interface am mini-web board. 8 Datenleiten In-/Output am C-Port, 6 Steuerleitungen am D-Port. Da ich den Webserver an einer kleinen USV betreibe, sind die Daten
bei einem kleinen Stromausfall geschützt.

Für die 16 Bit-Adresse wurden eine Port Erweiterung notwendig, dazu 2 Signale Data und shiftclock, sowie ein Signal für die Freischaltung der Ausgänge der beiden Schiftregister.

Innen
Der Mini web Server von Innen, nicht besonders schön aber funktioniert. Rechts oben ist ein Vorregler der 12V auf ca, 7,5 V reduziert.
Der 5V Regler auf dem "mainboard"  wäre sonst überlastet da dort kein Platz für einen größeren Kühlkörper ist. Grund ist der SRAM Chip
der in Ruhe 20mA, in der Spitze 150mA benötigt. Links unten der SRAM Chip mit den beiden Shiftregistern.

Drei Leitungen sind für den 64kB SRAM Chip notwendig:
Auf Chip enable sollte man nicht verzichten da sich dies im Stromverbrauch bemerkbar macht. Die Anzahl der Signale passt zum SV1 Steckplatz.
.
Schaltung mit dem 64kB Chip UM61512AK-15 und 2*74HC4094, gedruckte Schaltung.

Folgende Original Dateien von der oben genannten Webseite mit der Version V1.2.7 wurden erweitert oder neu dazugefügt.

FilesZu welchem Zweck
main.c für die Initialisierung Soft-Usart, in der mainloop eine Abfrage auf die empfangnen Zeichen, dazu noch eine Timerabfrage.
cmd.c, cmd.hDump, Patch und TRACE Kommandos um den SRAM Speicher zu lesen bzw. zu ändern.
httpd.c, httpd.h Erweiterung des interfaces für die html-Seiten, insbesonde die % Abfrage nach zu ersetzenden html Inhalt.  
timer.c Interrupt 1 sek mit einem event flag  für die main loop
webpage.hweb Seiten, css und javascript files
config.hEigene Adresse und #define...
makefilefiles zum compilieren
frame.c
basis.c und sram.c mit config.h  verbinden
.\abc\basisc, ..\abc\basis.h Prüfzeichen Berechnung,  BIT0  bis BIT7 Definitionen. (neu)
..\abc\sram.c, ..\abc\sram.h SRAM Speichertest und  read/write Zugriff . (neu)
sram_util.c, sram_util.h SRAM Verwaltungs Routinen, Soft-USART Routinen, Decodierung der Daten über Soft-USART. (neu)

Zuerst hatte ich mit einem java-applet eine grafik Ausgabe realisiert, für eine einfache Balkenausgabe mit 33 Werten war das auch ok, aber Temperaturkurven mit 5*360 Messwerten waren damit nicht realisierbar. Die zu übertragene Datenmenge mit dem Parameter Overhead war zu groß. Der zweite Grund für einen Umstieg auf eine neue Technologie war aktuell die java-applet Unsicherheit. Bei jedem Besuch der Seite sollte man seine Zustimmung zur Ausführung geben...

Seit 2 Wochen ist die Realisierung mit dem HTML5 Elemente <canvas>  und javascript fertig und funktioniert zufriedenstellend. Firefox und Google Crome können dies auswerten, "rühmliche" Ausnahme: Unter XP der Mcrosoft Browser, für Win7 gibt es einen besseren MS Browser, das ist Service ...
 
Hier meine Seiten des mini-web Servers, modifiziert zu statische Daten. Beispiel für die Realisierung.

Anbei meine geänderten und erweiterten Source Dateien.
Meine Dateien aus dem Verzeichnis ..\abc\

Wenn man die Temeraturdaten für eine Heizungsanlage grafisch mit einer genügenden Genauigkeit darstellen will, benötigt man mindestens je Minute einen Messwert.
Die Übersicht über 24h bekommt die Daten m 5 Minuten Raster, zur Feinauswertung sind je Tag 4*6h auswählbar. Auch mit Javascript gibt es Limits, mit den jeweils  360 Messdaten je Temperatursensor ist es meiner Ansicht nach ausreichend.  

5 verschieden Temperatursignale werte ich aus, je Minute sind das 5*2 = 10 Byte. Je Tag sind das 14400 Bytes. Ich verwende dafür großzugig 16kB für heute und 16kB für gestern. Da sind schon mal 32kb Weg. Die Temperatur Daten werden mit 2 Bytes im ASCII Code abgespeichert, so geht das füllen der html Seite schneller. Je angeforderter Variable  werden 12 Messwerte eingetragen. Die ASCII Codierung ist ein mod. base64 Code, ein "=n"  Wert wird als missing value interpretiert. Bei Tageswechsel wird der neue Speicherbereich auf missing value gesetzt. Um der main-loop Zeit für andere Aufgaben zu lassen, wird dies in kleinen Schritten vorgenommen.

Für die Regenmengen habe ich langfristig mehr interesse, je Tag 2 Byte * 366 = 732Bytes. Zur Vereinfachung benutze ich 1K mal 4 = 4kB Speicher für 4 Jahre.

Ein paar Bytes noch für die Verbauchsdaten Gas und Strom für 18 Monate, wobei zur Zeit nur noch der Strom funktioniert da mir die Mainova ein Ei gelegt hat mit einem neuen Gaszähler. Ich habe verstanden, die wollen sich das Geschäft nicht verderben lasen, da sie zumindest für große Kunden entsprechendes selber anbieten.

Update: 23.2.2013             Reinhard Alfons Lidzba 2013       Kontakt