Gaszähler Verbrauch erfassen mit FHEM und Raspberry GPIO

30 Oktober 2014 von Jan Keine Kommentare »

Heute will ich euch kurz und einfach zeigen wie Ihr euren Gasverbrauch mit FHEM erfassen könnt.

Ein paar Voraussetzungen müssen dafür erfüllt sein:

  1. FHEM muss auf einem RaspberryPI laufen
  2. Der Gaszähler gibt Impulse rauß (Wie man das erkennt, kommt gleich)
  3. Man kann/will ein Kabel vom Raspberry zum Gaszähler verlegen
  4. Ein wenig Bastelgeschick

Zuerst solltet ihr schauen ob der Gaszähler überhaupt Impulse ausgibt. Meist ist dies an einer kleinen Aufschrift unterhalb des Zählers zu sehen. Dort sollte dann in etwa stehen “1 imp = 0,01m3″

Impuls Häufigkeit

Impuls Häufigkeit

 

Der Gaszähler gibt den Impuls über einen Magneten im Zählwerk aus. Also immer wenn 10 Liter Gas verbraucht wurden gibt es einen Impuls. 1 m3 Gas sind dementsprechend 100 Impulse, oder bei meinem Anbieter derzeit auch ca. 77 Cent… :-)

Mit einem Reedrelais kann man die Impulse abgreifen. Dafür ist meistens irgendwo im Gehäuse eine Einbuchtung in der man das Reedrelais einkleben kann. (Bitte so kleben das es Rückstandsfrei wieder entfernbar ist! Der Gaszähler ist nicht euer Eigentum!) Ich habe dazu Panzertape Heißkleber verwendet.

Als Reedrelais verwende ich diesen:

Meder MK14-1A66B

Meder MK14-1A66B

TIPP: Um zu überprüfen ob der Reedkontakt richtig sitzt und bei der Umdrehung schließt, kann man an die beiden offenen Enden einfach ein Multimeter anschließen und dieses auf Durchgangsprüfung stellen. Mit jeder Umdrehung des Zählers muss das Multimeter nun einen Durchgang anzeigen.

 

Gaszähler mit Reedrelais

Gaszähler mit Reedrelais

 

Nun muss das eine Kabelende des Reedrelais mit dem GPIO Port des Raspberry verbunden werden. Ich nutze für den Gaszähler GPIO23. GPIO23 ist PIN 16 bei der B Revision des PI.

Das andere Kabelende geht an GND (Masse). Dies ist PIN 6 bei der B Revision.

GPIO Ports des RaspberryPI

GPIO Ports des RaspberryPI

Zieht das Reedrelais nun an, bekommt der Raspberry über den GPIO einen Impuls.

Soweit die technische Seite zum Herstellen der Verbindung. Nun folgt der Softwareteil.

 

Der PI bzw. das Linux System muss wie in der FHEM Reference hier beschrieben vorbereitet werden.

Wir sind auf der Shell des PI eingeloggt. (Lokal oder per SSH spielt keine Rolle)

Der Benutzer “fhem” muss der Gruppe “gpio” hinzugefügt werden, damit FHEM später auch Zugriff auf die GPIO Ports hat.

sudo adduser fhem gpio

sudo reboot

 

Da wir später ein bestimmtes Attribute setzen wollen, brauchen wir noch wiringPi. Das bekommen wir durch folgende Kommandos:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install git-core

git clone git://git.drogon.net/wiringPi

cd wiringPi

./build

 

Bei älteren Linux Distributionen müssen außerdem die Rechte korrekt gesetzt werden. Dies muss bei jedem Start des System passieren. Fügt dazu einfach in der /etc/rc.local folgende Zeilen hinzu.

echo 23 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/virtual/gpio/*
chown -R fhem:root /sys/class/gpio/*

 

Durch ein abschließendes

sudo reboot

beenden wir unsere Arbeit in der Konsole und widmen uns FHEM.

 

In FHEM müssen wir zuerst den GPIO Port als Device definieren. Wir verwenden GPIO Port 23.

define GPIOGaszaehler RPI_GPIO 23

attr GPIOGaszaehler direction input

attr GPIOGaszaehler active_low yes

attr GPIOGaszaehler interrupt both

attr GPIOGaszaehler pud_resistor up

attr GPIOGaszaehler toggletostate yes

Das Device wird zuerst mit dem State ??? angelegt. Dieser State muss sich nach der ersten Umdrehung des Zählers verändern (Kurz auf ON danach auf OFF) Tut er das nicht, fehlen dem Linux Benutzer “fhem wahrscheinlich die Zugriffsrechte auf die GPIO-Ports. Löst das Rechte Problem und kontrolliert ob Ihr die Schritte in der Shell korrekt durchgeführt habt.

So muss der funktionierende Port aussehen

So muss der funktionierende Port aussehen

 

Danach geht es weiter mit dem Modul “HourCounter”. HourCounter ist ein mächtiges Modul zum Zählen verschiedener Zustände. Es werden auch Pausen zwischen den Zuständen gezählt. Wir wollen erstmal nur zählen um den Gasverbrauch zu plotten.

define Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off

Das Device “Gasverbrauch” muss nun mit jeder Umdrehung des Gaszählers seinen State um 1 erhöhen.

HouerCounter hat schon ein wenig was gezählt

HouerCounter hat schon ein wenig was gezählt

 

Als nächstes erstellen wir eine LogFile um den Verbrauch aufzuzeichnen. Ich speichere meine Logfiles immer Monatsweise. Außerdem reichen uns hier die Readings “countsOverall”  und “countsPerDay” aus dem HourCounter.

define FileLog_Gasverbrauch FileLog ./log/Gasverbrauch-%Y-%m.log Gasverbrauch:countsOverall:.*|Gasverbrauch:countsPerDay:.*|Gasverbrauch:state:.*

* Alles in eine Zeile!

 

Sobald ein paar Daten im Log stehen, können wir einen SVG Plot erstellen. So kann es aussehen:

Gasverbrauch Plot

Gasverbrauch Plot

 

Zum Abschluss noch 2 Tipps:

  1. Mit “set Gasverbrauch countsOverall 374317″ könnt ihr den aktuellen Zählerstand eingeben. Dies würde einem realen Zählerstand von 3743,17 m3 entsprechen.
  2. Mit “addLog” lassen sich Plot Abrisse vermeiden, dadurch sieht es später schöner aus. Wie das funktioniert, könnt Ihr hier nachlesen.

 

Ich hoffe Euch hat dieser Beitrag gefallen und Ihr könnt etwas damit anfangen. Natürlich würde ich mich auch über ein kleines Feedback in den Kommentaren freuen!

 

Beim nächsten mal zeige ich Euch wie man einen Analogen Stromzähler mit Drehscheibe loggen kann!

Views – 103

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Richtiges Lüften mit Homematic & FHEM Schimmelrisiko senken [Anleitung]

16 Oktober 2014 von Jan Keine Kommentare »

Die kalte Jahreszeit kommt wieder und mit ihr in vielen Wohnungen und Häusern die Schimmelprobleme.

Durch zu hohe Luftfeuchtigkeit innerhalb der Räume, meistens im Schlafzimmer, Badezimmer und Keller, kommt es in den Ecken der Räume, eben dort wo es besonders kalt ist, zur Kondensatbildung und somit häufig auch zum Schimmel.

Wenn die absolute Luftfeuchtigkeit draußen höher ist als drinnen, wäre lüften allerdings kontraproduktiv da man sich sonst mehr Feuchtigkeit in die Wohnung holt.

Homematic bietet mit den beiden Temperatur- /Luftfeuchtigkeitsensoren “HM-WDS10-TH-O” und “HM-WDS40-TH-I” die Möglichkeit, die Temperatur und Luftfeuchte am Aufstellungsort zu messen. FHEM nutzen wir um die gelieferten Daten auszuwerten, zu protokollieren und verschiedene Aktionen umzusetzen.

Außenfühler für Temperatur und Luftfeuchtigkeit

Außenfühler für Temperatur und Luftfeuchtigkeit

Um genaue Außenwerte zu erhalten sollte der Sensor an der Nordseite des Gebäudes angebracht werden.

Die Innensensoren werden im jeweiligen Raum der zu überwachen ist angebracht. (Nicht in Heizungsnähe)

Nachdem die Sensoren mit FHEM gepaired sind geht es ans eingemachte.

Die Sensoren heißen bei mir:

TempAussen

TempSchlafzimmer

TempKeller

TempDachboden

TempWohnzimmer

TempBad

Was soll realisiert werden?

  1. Der jeweilige Taupunkt muss errechnet werden
  2. Der Taupunkt außen wird mit dem Taupunkt innen verglichen
  3. Wenn der Taupunkt außen niedriger als der Taupunkt innen ist darf gelüftet werden und andersherum
  4. Die “HM-OU-LED16″ LED-Status-Anzeige soll dies signalisieren (Grün = Lüften ok; Rot = nicht lüften; Orange = Zu hohe Luftfeuchtigkeit)
  5. Bei zu hoher Luftfeuchtigkeit soll eine Nachricht an die Bewohner per Pushover verschickt werden
  6. Zu hohe Luftfeuchtigkeit wird erreicht, wenn der Taupunkt nur noch 3°C unter der Zimmertemperatur liegt.

Wir werden hauptsächlich das FHEM Hilfsmodul DEWPOINT verwenden.

 

Zuerst müssen wir zwei Devices anlegen, damit die Sensoren um das Reading “dewpoint” und der State  um den Wert “D:” erweitert wird.

Dies machen wir pauschal für alle Sensoren die Temperatur und Feuchtigkeitswerte liefern:

define dew_state dewpoint dewpoint .* T H D
define dew_all dewpoint dewpoint .* temperature humidity dewpoint

In FHEM sieht der State von den Geräten dann wie folgt aus:

Dewpoint in FHEM

Dewpoint in FHEM

 

Danach lassen wir mit einem AT im 10 Minuten Rythmus den Vergleich zwischen Taupunkt Außen und Innen vergleichen und schalten dann die LED Anzeige oder wenn es richtig kritisch wird lassen wir eine Pushover verschicken:

define LueftungSkript at +*00:10:00 {

my $dewAussen=ReadingsVal("TempAussen","dewpoint","100"); 

my $dewSchlaf=ReadingsVal("TempSchlafzimmer","dewpoint","0"); 
my $tempSchlaf=ReadingsVal("TempSchlafzimmer","temperature","0")-3; 

my $dewKeller=ReadingsVal("TempKeller","dewpoint","0")-1; 
my $tempKeller=ReadingsVal("TempKeller","temperature","0")-3; 

my $dewBad=ReadingsVal("TempBad","dewpoint","0"); 
my $tempBad=ReadingsVal("TempBad","temperature","0")-3; 

my $dewWohn=ReadingsVal("TempWohnzimmer","dewpoint","0"); 
my $tempWohn=ReadingsVal("TempWohnzimmer","temperature","0")-3; 

my $dewDach=ReadingsVal("TempDachboden","dewpoint","0"); 
my $tempDach=ReadingsVal("TempDachboden","temperature","0")-3; 


fhem("set LED_10 led red") if ($dewAussen > $dewSchlaf && Value("LED_10") ne "red" );;  
fhem("set LED_10 led green") if ($dewAussen < $dewSchlaf && Value("LED_10") ne "green");;  
fhem("trigger SchimmelSchlaf") if ($dewSchlaf > $tempSchlaf);; 
fhem("setstate SchimmelSchlaf defined") if ($dewSchlaf < $tempSchlaf);; 

fhem("set LED_09 led red") if ($dewAussen > $dewKeller && Value("LED_09") ne "red");;  
fhem("set LED_09 led green") if ($dewAussen < $dewKeller && Value("LED_09") ne "green");; 
fhem("trigger SchimmelKeller") if ($dewKeller > $tempKeller);; 
fhem("setstate SchimmelKeller defined") if ($dewKeller < $tempKeller);; 

fhem("set LED_11 led red") if ($dewAussen > $dewBad && Value("LED_11") ne "red");;  
fhem("set LED_11 led green") if ($dewAussen < $dewBad && Value("LED_11") ne "green");; 
fhem("trigger SchimmelBad") if ($dewBad > $tempBad);; 
fhem("setstate SchimmelBad defined") if ($dewBad < $tempBad);; 

fhem("set LED_12 led red") if ($dewAussen > $dewWohn && Value("LED_12") ne "red");;  
fhem("set LED_12 led green") if ($dewAussen < $dewWohn && Value("LED_12") ne "green");; 
fhem("trigger SchimmelWohn") if ($dewWohn > $tempWohn);; 
fhem("setstate SchimmelWohn defined") if ($dewWohn < $tempWohn);; 

fhem("set LED_13 led red") if ($dewDach > $tempDach && Value("LED_13") ne "orange");;  
fhem("set LED_13 led green") if ($dewDach < $tempDach && Value("LED_13") ne "green");; 
 
}

Achtung! Hier haben wir einen Offset für den Keller bei der Lüftungsanzeige eingebaut. Die Wände und Böden im Keller sind meist deutlich kälter als die Umgebung. Wenn der Taupunkt außen nur unwesentlich höher ist als drinnen, haben wir so eine Sicherheitsreserve für unsere Kellerwwände! Die Pushoverbenachrichtigung soll versendet werden wenn die Raumtemperatur nur noch 3° C über dem Taupunkt liegt. So haben wir auch hier eine Reserve!

Homematic LED-Anzeige

Homematic LED-Anzeige

Watchdogs für die Pushover Meldung anlegen:

define SchimmelKeller watchdog SchimmelKeller 00:00:02 Schimmelkeller set PushoverJan msg ‘Keller Feuchtigkeit’ ‘Luftfeuchtigkeit im Keller zu hoch!’ ” 0 ”

Dieser Watchdog muss für jeden Raum angelegt werden, für den später eine Nachricht verschickt werden soll.

Das LueftungSkript triggert die Watchdogs später nur, so dass auch nur eine Meldung verschickt wird und nicht alle 10 Minuten. Sobald die Feuchtigkeit wieder im grünen Bereich ist, wird der Watchdog wieder geschärft, so dass er erneut auslösen kann.

Man könnte auch anstatt einer Pushover-Mitteilung z.B. eine Steckdose mit angeschlossenem Luftentfeuchter einschalten und eine gewisse Zeit laufen lassen, oder eine dezentrale Raumlüftung mit Wärmerückgewinnung. Alles ist möglich!

 

Man kann auch die Dewpoints der einzelnen Räume in einem Log plotten und später als SVG Grafik anschauen. Damit kann man dann ein Gefühl dafür bekommen ob man richtig und effizient lüftet. Denn je niedriger der Taupunkt, desto weniger Feuchtigkeit in der Luft desto weniger Schimmelrisiko desto angenehmere Luft! :)

FHEM SVG Grafiken zur Temperatur und Luftfeuchtigkeit inkl. Taupunkt

FHEM SVG Grafiken zur Temperatur und Luftfeuchtigkeit inkl. Taupunkt

Die unteren Graphen könnt ihr einfach direkt aus dem Logfile selbst erstellen. Für den Taupunkt Verlauf müsst Ihr eine neue Logfile anlegen, wo NUR der jeweilige Dewpoint erfasst wird.

define FileLog_Dewpoints filelog ./log/DewPoints-%Y-%m.log .*.:.*dewpoint.*

Sobald die Logfile die ersten Werte hat, könnt ihr daraus wieder die SVG Grafik erstellen.

 

Falls Ihr Fragen habt, oder ich irgendwas nicht deutlich genug erklärt habe – Schreibt bitte ein Kommentar. Ich Antworte umgehend!

Views – 217

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

1000km auf der Simson Schwalbe – Der Film Teil 2

18 Juli 2014 von Jan Keine Kommentare »

Da sind wir wieder.

André und ich sind letzte Woche aufgebrochen um den zweiten Teil meiner Tour vom letzten Jahr zu fahren, da es ja letztes Jahr nicht so recht geklappt hat.

Außgerüstet mit reichlich Antihistaminika und einem Schafsfell gegen den schmerzenden Arsch ging es los. Nach 4 Tagen war die Fahrt überstanden – Aber seht selbst:

 

Views – 248

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

(Simson) Metall entrosten / Rost entfernen mit Essig [Anleitung]

26 April 2014 von Jan 3 Kommentare »

Da das Metall oder Chrom bei den alten Mopeds meistens schon recht angefressen ist, gibt es eine einfach aber effektive Möglichkeit den oberflächigen Rost zu entfernen.

Essig!

Essig!

 

Die Teile werden einfach für 48 Stunden in Essig eingelegt. Dadurch löst sich der Rost ab ohne das das Metall angegriffen wird. Ich habe damit schon Schrauben, Drehwirbel und sonstiges Zeugs rostfrei bekommen.

Hier möchte euch die Entrostung von Blinkerhaltern einer S50/s51 zeigen.

Vorher:

Blinkerhalter vor dem Entrosten

Blinkerhalter vor dem Entrosten

Danach:

Blinkerhalter nach dem Entrosten

Blinkerhalter nach dem Entrosten

 

Anleitung:

Ihr braucht:

  • Essig
  • Etwas zum entrosten
  • eine Kunststoffschale
  • 240er Nassschleifpapier
  • Etwas Öl

1. Die zu entrostenden Teile werden in die Plastikschale gelegt und die Schale anschließend soweit mit Essig gefüllt, dass die Teile komplett bedeckt sind.

Blinkerhalter komplett mit Essig bedeckt

Blinkerhalter komplett mit Essig bedeckt

 

2. Die Schale mit dem rostigen Metall und dem Essig für 48 Stunden stehen lassen. Am besten ist ein zu verschließendes Gefäß, damit der Essig nicht verdunstet.

Der Essig löst den Rost ab

Der Essig löst den Rost ab

 

3. Nach dem der Essig den Rost gut angelöst hat, mit dem Nassschleifpapier die fester sitzenden Reste sorgfältig abschleifen. Zwischendurch immer mal wieder das zu entrostende Bauteil in dem Essig abspülen.

Abgeschliffener Rost

Abgeschliffener Rost

 

Fertig entrostet

Fertig entrostet

Fertig entrostet

Fertig entrostet

 

4. Nach dem die letzten Reste abgeschliffen wurden, das nun geschliffene Bauteil unter Wasser abspülen um den Essig zu entfernen und anschließend mit Öl einreiben.

Geöltes Bauteil

Geöltes Bauteil

5. Das Bauteil kann nun neu lackiert oder direkt verbaut werden. Schrauben müssen übrigens nicht geschliffen werden. Dort reicht es, sie in Essig einzulegen und anschließend abzuspülen und zu ölen.

Blinkerhalter nach dem Entrosten

Blinkerhalter nach dem Entrosten

 

Viel Spaß beim nachmachen!

Views – 573

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

FHEM und Homematic Video Demos

18 Februar 2014 von Jan 1 Kommentar »

Heute Abend habe ich mal auf die Schnelle drei kurze Homematic Demo Videos aufgenommen, um zu zeigen was man in Verbindung mit FHEM alles realisieren kann. Dies sind natürlich recht einfach Umsetzungen, allerdings benutze ich diese Funktionen tagtäglich! :)

 

Begrüssung durch das Haus nach der Ankunft

 

Rollo der Terassentür automatisch öffnen und Licht einschalten

 

Licht per Doppeldruck auf Taster ein oder ausschalten

Views – 716

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)