Version 1030 der Zisternenmessung jetzt auf github

Version 1030 der Zisternenmessung jetzt auf github

Ich bin endlich mal dazu gekommen und habe die ganzen Sourcen für die Zisternmessung mit dem ESP8266 mit einer ordentlichen readme auf github gestellt. Die Version 1030 ist dort auch als Release bereits für den NodeMCU und Wemos D1 vorkompiliert verfügbar.

Hier findet ihr das Github-Repository: https://github.com/diefenbecker/zisternenmessung

Aber auch bei den Funktionen gibt es Neuigkeiten. Die Version 1030 unterstützt jetzt einen schaltbaren Ausgang an D4 mit dem z.B. eine Pumpe über eine Relais-Platine angesteuert werden kann. Gesteuert wird das über zwei prozentuale Werte die in der Konfigurationsseite zu finden sind.

Hier die bin-Datei zum direkten Download:

http://www.bubux.de/heimautomatisierung/ota/zisterne_aktuell.bin

Viel Spaß damit! Das kommende Wochende verspricht wettertechnisch ja den Einsatz der Zisterne…

Gruß

Chris

Zisternenfüllstandsmessung mit Time Of Flight-Sensor

Zisternenfüllstandsmessung mit Time Of Flight-Sensor

Mit Version 1028 der Software zur Messung des Zisternenfüllstandes, kommt neben dem HC-SR04 Ultraschallsensor noch ein zweiter alternativer zu nutzender Sensor dazu. Diesmal ein Time Of Flight (ToF) Laser-Entfernungsmesser vom Typ VL53L0XV2. Die erste Version der Software ist allerdings noch Beta und ich würde mich auf Rückmeldungen zu dem neuen Sensor freuen!

In der Webseite der Software kann in den Einstellungen zwischen den beiden Sensoren gewählt werden. Neu ist zudem noch der frei wählbare Name für den Sensor welcher auf der Sensor-Webseite oben links angezeigt wird. Hiermit kann man nun beim Einsatz mehrerer Sensoren in verschiedenen Zisternen unterscheiden oder auch einen Öltank-Füllstandssensor korrekt benennen.

Der ToF-Sensor besitzt eine I2C-Schnittstelle und wird an die gleichen PINs wie der Ultraschallsensor angeschlossen. Es geht aber nicht mit beiden Sensoren parallel, sondern nur der eine oder der andere!

Der ToF-Sensor wird wie folgt angeschlossen:

D1SCL
D2SDA
3,3-5VVCC
MasseGND

Die beiden übrigen Anschlüsse bleiben frei.

Hier gibt es die neue Version zum Download:
http://www.bubux.de/heimautomatisierung/ota/zisterne_1028.bin

Hier findet ihr die vorherigen Artikel zur Zisterne mit den grundlegenden Anleitungen und Anschlussschema.

Gruß
Chris

Füllstandsmessung der Zisterne mittels ESP8266 (NodeMCU) und Ultraschallsensor

Update vom 14.06.2020 hier

Heute nochmal ein Update bzw. eine vollständige Zusammenfassung zur Messung des Füllstands der Zisterne mittels Ultraschall. Ich habe den Sketch für den ESP8266 (den ich immer noch in Form eines NodeMCU betreibe) mal etwas aufgebohrt.

Zu den alten Artikeln geht es hier und hier.

Im folgenden werden alle notwendigen Schritte beschrieben um die Firmware auf den ESP8266 zu flashen und den Sensor in Betrieb zu nehmen.

Benötigte Hardware

Die benötigte Hardware besteht aus einem NodeMCU mit ESP8266 und einem HC-SR04 Ultraschallsensor. Die Beschaltung folgt weiter unten.

NodeMCU
HC-SR04 Ultraschallsensor

Dann noch ein mindestens vieradriges Kabel und ein Gehäuse zur Unterbringung des Ultraschallsensors in der Zisterne z.B. eine kleine Aufputzdose aus dem Baumarkt.

Mehr lesen
Füllstandmessung der Zisterne (2ter Ansatz)

Füllstandmessung der Zisterne (2ter Ansatz)

 

Die aktuelle Trockenheit zum Anlass genommen, habe ich den schon länger nicht mehr funktionierenden Füllstandsensor der Zisterne von Homematic gegen eine Eigenbaulösung ausgetauscht. Leider scheint der eigentlich recht teure Homematic-Sensor “Hm-Sen-Wa-Od” den klimatischen Gegebenheiten in der Zisterne auf Dauer nicht gewachsen zu sein. Zudem hatte ich immer Empfangsprobleme bzw. war es auch extrem nervig das Ding zu eichen. Jedenfalls hat der Sensor an Undichtigkeit gelitten und hat seinen Dienst eingestellt.

Oxidiertes Homematic Funkteil

Die Bilder zeigen die Platine, nachdem ich sie von Grünspan befreit hatte. Speziell das Funkmodul sieht etwas mitgenommen aus.

Da ich nicht nochmal soviel Geld zur Füllstandmessung der Zisterne ausgeben wollte, musste eine andere Lösung her.

Mehr lesen

Webseite zur Darstellung der Sensordaten

Webseite zur Darstellung der Sensordaten

Da ich in der letzten Zeit sehr oft bezüglich der Erstellung einer Webseite zur Darstellung der Sensordaten (Heizung, Strom, Wasser, Gas, …) angesprochen wurde, habe ich mich entschlossen eine abgespeckte Variante meiner internen Webseite zu veröffentlichen. Die Webseite nutzt eine ältere Version der Metro UI-Oberfläche als “Framework” zur Darstellung der HTML-Seiten, sowie pChart zum Zeichnen der Graphen in den Detailansichten.

Meine Implementierung ist schon etwas älter und auch mit der Zeit gewachsen. Da es sich bei dieser Webseite um ein recht überschaubares Projekt handelt und ich mit dem Ergebnis zufrieden bin, habe ich mir nie die Mühe gemacht die Seite generischer zu gestalten. Daher muss bei nötigen Anpassungen der Code direkt geändert werden und es gibt auch keine Trennung von HTML und PHP, keine durchgehende allumfassende Fehlerbehandlung, evtl. “unschönes” HTML usw.

Der Code soll als Anregung und Grundlage für eine eigene Seite dienen…nicht mehr, nicht weniger. Wem´s ausreicht kann es natürlich auch 1:1 übernehmen. Positiv an meiner Lösung finde ich immer noch die Flexibilität in den Auswertungen die direkt auf der Datenbank mittels SQL ausgeführt werden können.

Die Startseite

Übersicht Webseite Sensordaten

Die Startseite wird mittels “Meta-Refresh” alle 180 Sekunden neu geladen und dient der Übersicht der wichtigsten Sensordaten. Mit Klick auf die (verlinkten) Boxen gelangt man jeweils zu einer detaillierteren Übersicht der Sensordaten. In der Übersicht werden keine komplizierten Datenbankauswertungen gemacht. Hier werden die Snapshot-Tabellen mit den aktuellen Werten ausgelesen und einige SQL-Aggregat-Funktionen genutzt. Das ging auch auf einem alten Raspi einigermaßen schnell. Das hängt natürlich von den Tabellengrößen in den Datenbanken ab. Da bei mir einige Tabellen mit den Jahren relativ groß geworden sind (~500k Zeilen), bin ich irgendwann auf einen Odroid umgestiegen.

Mehr lesen

Richtiges Lüften

[avatar user=”Olli” size=”100″ align=”left” /]

Richtiges Lüften spart Energie und verhindert Feuchtigkeitsschäden. Eine hygienisch einwandfreie Raumluftqualität ist unverzichtbar für die Gesundheit und das Wohlbefinden der Bewohner.

Was können wir tun?

Kurz und kräftig lüften (Stoßlüften), und das täglich 3 – 5 mal, konsequent und regelmäßig. Kippen des Fensters im Winter unbedingt vermeiden, da sonst Fensterlaibungen und Fenstersturz auskühlen. Es kann in weiterer Folge zur Kondensation der warmen Raumluft an den ausgekühlten Bauteilen und zur Bildung von Tauwasser kommen, was in Folge Schimmelpilz entstehen lassen kann.

Grundprinzipien:

Stosslüften (Händisches PRINZIP) je kälter die Außentemperatur, umso kürzer der Lüftungsvorgang (wegen der ver- stärkten Temperaturdifferenz!)

  • im Hochwinter etwa 4 – 7 min
  • in der Übergangszeit 8 – 15 min
  • im Sommer 20 – 30 min

(bei ganz geöffnetem Fenster) Bereits mäßiger Wind reduziert diese Zeiten auf ungefähr die Hälfte, beim Querlüften durch mehrere Zimmer reichen ca. 3 Minuten.

 

Lueften_gross

Tipp zum Lüften:
Richtiges Lüften in der Heizperiode

  • Mehrmals täglich bei geschlossenem Heizkörperventil lüften.
  • Beschlagene Scheiben durch zu hohe Luftfeuchtigkeit sind ein Hinweis, dass gelüftet werden soll.
  • Große Wasserdampfmengen nach Duschen, Baden und Kochen gehören sofort nach Außen gelüftet.
  • Türen zu unbeheizten Räumen geschlossen halten! (Kein Mitheizen durch andere Räume)
  • Sie können bis zu 20% an Heizkosten durch richtiges Lüften sparen, indem Sie konsequent Stoßlüften.

Richtiges Lüften von Kellerräumen im Sommer Achten Sie in den heißen Sommermonaten besonders auf die Lüftungsweise ungedämmter Keller (Altbau). Lüften Sie nur, wenn es draußen kühler ist als im Keller – also in den frühen Morgenstunden. An ganz heißen Sommertagen, in denen die Luft auch nachts kaum abkühlt, bleibt der Keller am besten ganz zu.

 

Kontrollierte Wohnraumlüftung

Besonders beim Niedrigenergiehaus kann mit einer Lüftungsanlage der Energieverbrauch effizient gesenkt werden. Bei Passivhäusern geht es ohnehin nicht ohne Installation einer seriös geplanten Lüftungsanlage. Die verbrauchte Luft wird dabei über einen Wärmetauscher geleitet, die Wärme der Abluft wird an die frische Zuluft übertragen.
Übrigens: Eine Lüftungsanlage ist keine Klimaanlage. Während bei der Klimaanlage die Gebäudekühlung im Vordergrund steht, geht es bei der Lüftungsanlage um die Sicherstellung der hygienisch notwendigen Frischluftzufuhr.
Zentrale Lösung:zws-lueftung
Dezentrale Lösung:
dezentrale_lueftungsanlage_01
Vorteile bei Verwendung einer Lüftungsanlage:

  1. Es herrschen immer hygienische Luftverhältnisse im Haus. Sogar bei Windstille oder im Winter im Schlafzimmer, wo üblicherweise kaum ausreichend gelüftet werden kann, werden Schadstoffe, Feuchtigkeit und CO2 (Kohlendioxid) abtransportiert.
  2. Die Zuluft ist in allen Räumen sauberer. Gerade an stark befahrenen Straßen oder im Stadtbereich wird viel Straßenstaub vom Filter zurückgehalten. Für Allergiker kann die durch den Filter reduzierte Pollenbelastung hilfreich sein. Unter ungünstigen Bedingungen kann es bei Fensterlüftung sein, dass Luft aus Bad oder Küche durch das Haus gedrückt wird – dies wird mit Lüftungsanlagen vermieden.
  3. Weniger Lärmbelästigung von außen. Gerade an stark befahrenen Straßen wird die Lärmbelästigung stark reduziert, da trotz geschlossener Fenster gelüftet werden kann. Für eine erholsame Nachtruhe ist dies sehr vorteilhaft.
  4. Weniger Energieverbrauch. Über den Wärmetauscher kann die in der Abluft enthaltene Wärme an die Zuluft abgegeben werden. Dadurch wird weniger Energie zur Aufheizung der Frischluft benötigt.
  5. Komfortsteigerung: Im Sommer kann mit der Zuluft etwas gekühlt werden, keine Belästigung durch Insekten, Reduzierung von Geruchsbelästigung, keine Zugluft beim Lüften, keine Bauschäden durch falsches Lüften,…
  6. Die Fenster können natürlich trotzdem geöffnet werden. Die Fensterlüftung ist insbesondere außerhalb der Heizperiode empfehlenswert, da der Strom für den Ventilator eingespart werden kann. In der Heizperiode sollten die Fenster aber möglichst geschlossen bleiben.

Frau mit Schimmel und Händen an OhrenSchimmelbildung

Schimmel hat gewöhnlich nicht eine Ursache allein, meist kommen eine schlechte Wärmedämmung und falsche Lüftungs- und Heizgewohnheiten zusammen.

 

  • Schimmelsporen sind überall im Raum. Um jedoch austreiben zu können, benötigen Sie Feuchte und wenig bis gar keine Luftbewegung ( z.B. hinter Einbaukästen).
  • Je wärmer die Luft ist, umso mehr Wasserdampf kann sie aufnehmen. Das bedeutet, dass sich die Luft an kalten Oberflächen (z.B. auf Außenwänden, in Ecken und an Fensterscheiben) abkühlt und sich dort der Wasserdampf in Form eines feinen Wasserfilms niederschlägt. (Vergleich: kalte Flasche aus Kühlschrank in Raum stellen – Flasche beschlägt).
  • Eine Ursache können mangelnde Wärmedämmung bzw. Wärmebrücken sein, die die Wärme wesentlicher schneller nach außen leiten.
Tipp zur Schimmelvermeidung:

  • Lüften reduziert die Luftfeuchtigkeit am wirkungsvollsten. An kritischen Stellen muss eine Luftzirkulation möglich sein. Möbel von der Außenwand etwas abrücken (ca. 3 – 5 cm ) und Lüftungsöffnungen in den Blenden vorsehen. Kritisch sind z.B. Einbauschränke an Außenwände gestellt.
  • Sofort nach dem Duschen oder Baden lüften, damit der Feuchtigkeit möglichst wenig Zeit bleibt, im Raum zu bleiben und in die Materialien einzudringen. Die Badezimmertür geschlossen halten, damit die Feuchtigkeit nicht in andere Räume wandern kann (vor allem nicht in wenig beheizte Räume).
  • Um die Entstehung von Schimmelpilzen dauerhaft zu verhindern, muss die Feuchtigkeitsursache (relativ niedere Oberflächentemperatur und (oder) hohe Luftfeuchtigkeit) vermieden werden.
  • allgemeiner TIPP: Messen Sie die Raumtemperatur und die Luftfeuchte mittels einem Thermo- bzw. Hygrometer. Durch dieses Messinstrument haben Sie stets eine Übersicht über Ihr Raumklima.
  • Im Winter soll die relative Luftfeuchtigkeit (bei 20°C Raumtemperatur) 65% nicht überschreiten.

 


Logo Twitter

 follow me https://twitter.com/EU_EnergyCOACH

Wer die Energieeffizienz seines Hauses verbessern möchte, sollte besonders seine Heizung unter die Lupe nehmen. Heizungs-Check (DIN 4792; DIN EN15378)

[avatar user=”Olli” size=”100″ align=”left” link=”file” /]

Mit dem freiwilligen Check des Heizungsfachhandwerks wird erstmals die gesamte Heizungsanlage sozusagen „auf Herz und Nieren” untersucht. Das Alter der Heizung, eine mögliche Kesselüberdimensionierung, die Dämmung von Leitungen und die Funktionstüchtigkeit von Thermostatventilen spielen beispielsweise eine wichtige Rolle bei der Bewertung. Der Fachmann kann auf dieser Grundlage sinnvolle Modernisierungsmaßnahmen vorschlagen. Schon niedrig investive Maßnahmen steigern die Energieeffizienz der Heizungsanlage.

Will der Hausbesitzer allerdings die optimale Energieeffizienz im Haus erzielen, dann sollte die fortschrittliche Brennwerttechnik mit Erdgas oder Heizöl zum Einsatz kommen. In Verbindung mit Solarthermie, lassen sich somit bis zu 40 Prozent der Heizkosten einsparen. Aber auch Zentralheizungen, die mit Wärmepumpen, Holz oder Pellets betrieben werden, bieten wirtschaftliche Lösungen.

Die Inspektion erstreckt sich über:

  • Abgasverlust
  • Wärmeverluste über Kesseloberfläche
  • Wärmeverluste über das Abgassystem der Heizung
  • Brennwertnutzung
  • Überdimensionierung des Heizungskessels
  • Heizkesselregelung
  • Hydraulischer Abgleich der Heizungsanlage
  • Überdimensionierung der Heizpumpe
  • Dämmung der Rohrleitung
  • Regelungseinrichtungen der Heizkörper

Pro untersuchtem Bereich vergibt der Fachhandwerker eine bestimmte Anzahl von Punkten. Je höher diese Zahl, umso weiter ist die Heizung vom energetischen Idealzustand entfernt. Viele Punkte bedeuten also ein besonders großes Verbesserungs-potenzial. Die Kosten des Heizungs-Check`s für ein Einfamilienhaus belaufen sich je nach Region zwischen 100€ und 250€ und nimmt ca. 1,5 Stunden Zeit in Anspruch! Wenn im Nachgang aus dem Heizungsscheck ein Auftrag für den Installateur entsteht, kann in der Regel dieser Betrag in Abzug gebracht werden.

Entwickelt wurde der Test für Heizungsanlagen von der VdZ in Zusammenarbeit mit dem Zentralverband Sanitär Heizung Klima (ZVSHK) und dem Institut für Technische Gebäudeausrüstung Dresden. In ersten Feldtests wurden laut VdZ bereits die häufigsten Verursacher von unnötigen Energiekosten identifiziert: schlecht eingestellte Brenner, überdimensionierte Heizkessel, ungeregelte Heizungspumpen sowie zu alte Thermostate an den Heizkörpern.

Bei größeren Mehrfamilienhäusern oder gar Gewerbeeinheiten sind spezielle Kenntnisse erforderlich. Diese bieten daher Ingenieur- oder Planungsbüro`s oder Messdienstleister an. Da es sich hier in der Regel nicht um Standardanlagen handelt, sich die eingesetzte Technik nicht nur auf die Heizenergie beschränkt, greift der einfache Heizungs-Check hier nicht.

Neben den benannten Punkten der Inspektion, werden auch:

  • Lüftungsanlagen
  • Kälte- und Klimaanlagen
  • Wärmerückgewinnungssysteme
  • Trinkwassererwärmungsanlagen
  • Druckerhöhungsanlagen
  • Hausautomatisation
  • etc.

bewertet und für den Kunden und die Immobilie zugeschnittene Konzepte erstellt. Daraus resultiert auch das sich der Preis für solche Ingenieurtechnische Leistungen zwischen 1.500€ und 30.000€ bewegen kann.

 

Anbei die Broschüre der Vereinigung der Deutschen Zentralheizungswirtschaft e.V.

          VdZ_HC_Leitfaden_090210

 

 


Logo Twitter

 follow me https://twitter.com/EU_EnergyCOACH

c´t Schlagseite 8/2015

Eben lag die neue c´t im Briefkasten. Die Schlagseite ist mal wieder wunderbar und paßt gut zu den Themen in diesem Blog.

Über Sinn und Unsinn bei der Heimautomatisierung kann man ja vortrefflich diskutieren. Wenn für das Aufwecken des Tablet/Handy, dem Öffnen der App oder Intranet-Seite und anschliessendem Klick auf “Licht Wohnzimmer an” mehr Zeit benötigt wird als den Lichtschalter an der Wand zu betätigen, ist man meistens schon am Ziel der (intelligenten) Hausautomation vorbei geschossen…

Vor- und Rücklauf vom Kachelofen mittels 1-wire Temperatursensoren messen

Unser Kachelofen von Brunner hat einen Wärmetauscher (HKD2.2) und versorgt damit den Wasserspeicher im Keller mit warmem Wasser. Aus diesem wird dann die Fußbodenheizung und das Warmwasser versorgt. Die Steuerung des Kachelofens übernimmt die EAS (Elektronische Abbrandsteuerung). Leider hat Brunner in der EAS keine mir bekannte Schnittstelle um die verschiedenen Temperaturen, die Statis der Abbrandsteuerung oder den Schalter der Kachelofentüre abzufragen.

IMG_5564

Die Abbrandsteuerung selber ist unabhängig von der eigentlichen Hydraulik zum Anschluss des Kachelofens an den Warmwasserspeicher. Hier nutzen wir eine Steuerung der Fa. ÖkoCentro mit einer SHR 10-Steuerung von EnergieControl. Aber auch diese hat keine mir bekannte Schnittstelle die man einfach abfragen kann.

IMG_7931

Als eine einfache Möglichkeit zumindest schon mal die Vorlauf- und Rücklauftemperatur zu messen, dachte ich an 1-Wire Temperatursensoren der Firma DALLAS (DS18B20). Diese sind günstig (z.B. 1,85€ bei Reichelt) und einfach am Raspberry PI zu implementieren. Die Vorbereitungen zur Nutzung der 1-Wire Sensoren ist nicht aufwändig und schnell passiert.

Sollen die 1-wire Sensoren nur parasitär versorgt werden, folgendes in der Shell eingeben um das entsprechende Kernelmodul zu laden:

sudo modprobe w1-gpio

oder wenn ein Pullup zur externen Stromversorgung genutzt wird, folgendes Kommando:

sudo modprobe w1-gpio pullup=1

Sollen Temperaturen über 70°C gemessen werden, wird zwecks der Genauigkeit der Sensoren die zusätzliche Stromversorgung mittels Pullup-Widerstand angeraten.
Mehr zum Thema Anschlussarten gibt es z.B. hier.

Unabhängig ob Pull-Up oder nicht wird noch ein weiteres Kernelmodul benötigt:

sudo modprobe w1-therm

Ab der Kernelversion 3.18.3 muss noch eine Anpassung gemacht werden. Die Kernelversion wird wie folgt bestimmt:

uname -r

Ist die Kernelversion > 3.18.3 muss in der Datei

/boot/config.txt

folgende Zeile eingefügt werden

# activating 1-wire with pullup
dtoverlay=w1-gpio-pullup

Ich habe die Sensoren mit separater Versorgung am Raspberry Pi angeschlossen. Wie das funktioniert, ist im Internet in verschiedensten Foren etc. zu lesen. Ich hatte mal eine kleine Platine rs232_raspi.fzz mit einem MAX3232 für eine RS232-Schnittstelle für das M-Bus-Projekt in Fritzing aufgebaut. Da hat auch noch der eine 4.7K Widerstand und eine Steckerleiste für 1-wire drauf gepaßt (oben Links zu sehen).

fritzing_1wire_rs232

Sind die Kernelmodule geladen, alle Konfigurationen gemacht und alles angeschlossen, sollten die 1-wire Sensoren nach einem Neustart des Raspberry PI unter

cd /sys/bus/w1/devices

auftauchen.

Die Sensoren werden z.B. per “cat” mit folgendem Befehl ausgelesen

cat 28-000005db9cea/w1_slave

Das Ergebnis sollte dann ähnlich wie folgt aussehen:

08 03 4b 46 7f ff 08 10 9e : crc=9e YES
08 03 4b 46 7f ff 08 10 9e t=48500

Die Temperatur wird hinter dem “t=” in der zweiten Zeile ausgegeben. Um diese Temperatur z.B. mit PHP abzufragen und für weitere Verarbeitung nutzen zu können, folgendes PHP-Code-Schnipsel

[cc lang=”php”]

[/cc]

Die Temperatur schreibe ich dann per Script, welches 10-minütig per Cron aufgerufen wird, in eine MySQL-Datenbank und stelle das Ergebnis in einer Webseite dar.

kachelofen_webseite

Soviel zum Thema 1-wire. Die größere Herausforderung wird es aber, an die Werte der EAS heran zu kommen. Diese sind in soweit auch interessanter, als das diese Steuerung den Abbrand überwacht und informiert ob das Feuer heiß genug ist (>450°C) um den geregelten Abbrand zu starten, zu heiß (>750°C) und eine Gewisse Panik zu erzeugen, der Abbrand beendet ist und Holz nach gelegt werden könnte oder die Türe des Kachlofens nicht richtig geschlossen ist.

Ein Anfang ist aber gemacht und die EAS eine neue Herausforderung.

Gruß
Chris

M-BUS – Wasserzähler

Von einem Freund habe ich einen M-Bus (Meter-Bus) Wasserzähler und einen Wärmemengenzähler bekommen. Der M-BUS ist ein Feldbus der über eine Zweidrahtleitung über sehr lange Strecken genutzt werden kann. Ein M-BUS Master fragt dabei alle Slaves im Strang oder Stern ab. Die Slaves werden teilweise vom M-Bus-Master mit Spannung versorgt. Mehr Details im Wiki.

Techem Wärmemengenzähler Techem Wasserzähler

Der M-Bus-Master sollte in meinem Fall aus dem Raspberry und einem Pegelwandler bestehen. Pegelwandler gibt es fertig von verschiedenen Herstellen (Relay, Wachendorff). Diese sind aber, je nachdem für wieviele Slaves sie ausgelegt sind, relativ teuer.

Mein erster Ansatz war daher der Selbstbau eines Pegelwandlers inkl. RS232-Schnittstelle zum Anschluss an den Raspberry Pi. Im Netz gibt es verschiedene Beschreibungen einer einfachen Schaltung und einige wenige Forumseinträge die sich mit dem Selbstbau eines Pegelwandlers bzw. generell mit M-Bus beschäftigen. Leider habe ich in keinem Forum eine Diskussion gefunden die bis zu einem funktionierenden System verfolgt wurde. Egal, ich habe es trotzdem mal versucht…

 

Selbstbau Pegelwandler

Auf der Platine ist der Pegelwandler inkl. einer RSA232 Schnittstelle die aus einem MAX3232 besteht. Die +/-15 Volt für den Pegelwandler habe ich mittels DCDC-Wandler IH0515S der Fa. XP Power erzeugt. Dieses Bauteil kann man z.B. bei Farnell beziehen. Dann das Ganze auf Lochraster zusammen gelötet und mit dem Raspi und dem Wärmemengenzähler verbunden.

IMG_7707 IMG_7708

max3232Lochrasterplan

Damit der Raspberry das M-Bus Protokoll versteht bzw. auch den Pegelwandler korrekt anspricht, habe ich die Bibliotheken von rSCADA genutzt. Die Quellen liessen sich problemlos auf dem Raspberry kompilieren. Im Ergebnis wurden verschiedene Binaries erzeugt um mit Slaves im Bus zu kommunizieren.

Meine ersten Versuche waren jedoch nicht von Erfolg gekrönt. Es wurde kein M-Bus-Gerät gefunden. Bei der Fehlersuche habe ich zuerst die serielle Schnittstelle separat getestet und mit Minicom über den Raspberry mit einem anderen Linux-Rechner kommuniziert. Das hat funktioniert. Die weitere Fehlersuche z.B. am M-Bus-Ausgang sind allerdings am fehlenden Oszilloskop gescheitert, da das Multimeter mich nicht wirklich weiter brachte.

Etwas niedergeschlagen habe ich dann nach drei Tagen erfolgloser Fehlersuche nochmal nach fertigen Pegelwandlern gesucht und ein relativ preiswertes Gerät gefunden und kurzerhand gekauft. Damit fiel die Fehlerquelle “Pegelwandler” schon mal weg.

 

Versuch mit gekauftem Pegelwandler

Der neue Pegelwandler benötigt zum Anschluss an den Raspberry Pi auch eine RS232 Schnittstelle. Um mir diesmal das Löten zu ersparen, hab ich erstmal den kompletten Versuchsaufbau auf einem Breadboard gesteckt. Der Pegelwandler läuft mit einer Spannung von 12-24 V DC weshalb ich den DCDC-Wandler aus dem ersten Versich auch nicht benötige.

IMG_7739

Die Binaries von rSCADA unterscheiden zwischen TCP- und seriell angeschlossenen M-Bus-Pegelwandlern. Da meiner seriell angeschlossen ist, benutze ich “mbus-serial-scan” um nach angeschlossenen Slaves im Bus zu suchen.
Als Argumente übergebe ich “-d” für den Debugmodus, “-b 2400” um 2400 Baud zu nutzen und “/dev/ttyAMA0” als serielle Schnittstelle des Pi.

Zu meiner Überraschung wurde direkt ein Slave (der Wasserzähler) erkannt. Sehr schön…

pi@raspberry2 ~/libmbus-0.8.0/bin $ ./mbus-serial-scan -d -b 2400 /dev/ttyAMA0
Scanning primary addresses:
0 [2014-12-13 13:59:21] SEND (005): 10 40 00 40 16
[2014-12-13 13:59:21] RECV (001): E5

Found a M-Bus device at address 0
1 [2014-12-13 13:59:22] SEND (005): 10 40 01 41 16
2 [2014-12-13 13:59:22] SEND (005): 10 40 02 42 16
3 [2014-12-13 13:59:22] SEND (005): 10 40 03 43 16
4 [2014-12-13 13:59:22] SEND (005): 10 40 04 44 16
5 [2014-12-13 13:59:23] SEND (005): 10 40 05 45 16
6 [2014-12-13 13:59:23] SEND (005): 10 40 06 46 16
7 [2014-12-13 13:59:23] SEND (005): 10 40 07 47 16
...

Hat man alle angeschlossenen M-Bus-Geräte per Scan identifiziert, können mit einem weiteren Programm die Daten des Gerätes ausgelesen werden. Auch hier gibt es wieder das Argument “-d” für den Debugmodus, “-b” zur Einstellung der Baudrate, das Device der seriellen Schnittstelle und die vom Scan ermittelte Device-Nummer. Im Fall meines Wasserzählers ist das die “0”. Die Daten der Slaves werden in einer einfachen XML-Struktur zurück geliefert.

./mbus-serial-request-data -d -b 2400 /dev/ttyAMA0 0
[2014-12-13 14:06:46] SEND (005): 10 5B 00 5B 16
[2014-12-13 14:06:47] RECV (084): 68 4E 4E 68 08 00 72 12 37 16 46 68 50 49 07 B6 00 00 00 0C 14 53 42 00 00 8C 10 12 35 53 42 00 0B 3B 00 00 00 8C 20 14 53 42 00 00 8C 30 14 00 00 00 00 04 6D 21 0F CD 1C 4C 14 02 00 00 00 42 6C BF 1C 42 EC 7E DF 1C 0A 92 2A 00 10 0A 92 2B 00 10 3E 16
mbus_frame_print: Dumping M-Bus frame [type 4, 84 bytes]: 68 4E 4E 68 08 00 72 12 37 16 46 68 50 49 07 B6 00 00 00 0C 14 53 42 00 00 8C 10 12 35 53 42 00 0B 3B 00 00 00 8C 20 14 53 42 00 00 8C 30 14 00 00 00 00 04 6D 21 0F CD 1C 4C 14 02 00 00 00 42 6C BF 1C 42 EC 7E DF 1C 0A 92 2A 00 10 0A 92 2B 00 10 3E 16



46163712
TCH
73

Water
182
00
0000



Instantaneous value
Volume (1e-2  m^3)
4253
2014-12-13T14:06:47



Instantaneous value
Volume (1e-4  m^3)
425335
2014-12-13T14:06:47

...

Da es auf Anhieb funktioniert hat, habe ich die serielle Schnittstelle auf Lochraster gebannt und der Pegelwandler wird mittels kleinem 12V-Netzteil betrieben. Dann Raspberry Pi, Pegelwandler und Platine im Netzwerkschrank verstauen…

MAX3232

 

Software

Den Stand des Wasserzählers protokolliere ich nun einmal täglich um 23:59 Uhr. Das wird per Cronjob und einem kleinen PHP-Script erledigt. Warum PHP? Weil ich zu ungeduldig war und das schnell umsetzen wollte und schon das ein oder andere ähnliche PHP-Script fertig hatte.

Das Script ruft das Binary wie oben erklärt per shell_exec auf. Ab dem XML-Teil parse ich die Ausgabe und extrahiere die relevanten Informationen die dann in eine MySQL-Tabelle geschrieben werden.

[cc lang=”php”]
‘));
$xmloutput = new SimpleXMLElement($xmloutput);
$zaehlerID=$xmloutput->SlaveInformation->Id;
$zaehlerStand=$xmloutput->DataRecord[1]->Value/10000;

$mysqlhost=””;
$mysqluser=””;
$mysqlpwd=””;
$connection=mysql_connect($mysqlhost,$mysqluser,$mysqlpwd) or die (“Verbindungsversuch fehlgeschlagen”);
$mysqldb=””;
mysql_select_db($mysqldb,$connection) or die(“Konnte die Datenbank nicht waehlen.”);
$sql = “INSERT INTO wasserzaehler (timestamp,zaehlerid,zaehlerstand) VALUES (CURRENT_TIMESTAMP,$zaehlerID,$zaehlerStand)”;
$query = mysql_query($sql) or die(“Anfrage 1 nicht erfolgreich”);
?>;
[/cc]

Da ich auf meiner Webseite aber nicht nur den absoluten Wasserverbrauch darstellen möchte sondern auch den Tagesverbrauch, kommt folgendes SQL zum Einsatz. Hier werden die Einträge aus zwei aufeinanderfolgenden Zeilen subtrahiert um die Differenz zum Vortag zu bestimmen.

SELECT 
    CASE DATE_FORMAT(wz1.timestamp,'%w')
	WHEN 0 THEN 'Sonntag'
	WHEN 1 THEN 'Montag'
	WHEN 2 THEN 'Dienstag'
	WHEN 3 THEN 'Mittwoch'
	WHEN 4 THEN 'Donnerstag'
	WHEN 5 THEN 'Freitag'
	WHEN 6 THEN 'Samstag'
    ELSE 'fehler' END,
	wz1.zaehlerstand - IFNULL(wz2.zaehlerstand, 0) AS verbrauch
    FROM wasserzaehler wz1
    LEFT JOIN wasserzaehler wz2
    ON wz2.timestamp = (
	SELECT MAX(timestamp)
	FROM wasserzaehler wz3
	WHERE wz3.timestamp < wz1.timestamp
   )
ORDER BY wz1.timestamp

Das Ergbnis sieht dann wie folgt aus. Ich war etwas erschreckt wieviel Wasser man an machen Tagen verbraucht!

wasserzaehler_screenshot

 

Selbstgebauter Pegelwandler

Da ich ja nun weiß das es generell funktioniert und der Fehler meiner ersten Lösung definitiv im selbstgebauten Pegelwandler liegt, werde ich den Versuch mit dem Selbstbau demnächst nochmal angehen.

 

Sobald der Wärmemengenzähler in den Wasserlauf des Kachelofens eingebaut ist, werde ich nochmal einen kurzen Beitrag schreiben. Das Prinzip des Auslesens ist ja analog zum Wasserzähler aber vielleicht gibt es in den zurückgelieferten Daten unterschiede.

 

Viel Spaß mit dem M-Bus!

Chris