Raspberry Gaszaehler auslesen mit Reedkontakt

Moin,

ich hab hier einen Raspi im Nebengebaeude wo schon eine USB Cam dran ist, nun hat mein freundlicher Gasversorger den Gaszaehler gewechselt. Auf Nachfrage haben Sie mir auch kostenfrei ein Modul mitgebracht zum auslesen. (Impulsnehmer IN-Z61)

Das ist ein ganz normaler Reedkontakt und kein S0, der Gaszaehler gibt alle 0,001 m³ einen Impuls.
Diesem Impuls wuerde ich gern auf einen GPIO legen und mit IPS auswerten.

Hat da jemand eine Loesung fuer mich? Mit Linux kenne ich mich soweit aus, dass ich Sachen installieren und einrichten kann. Nur mit dem Auswerten und Uebertragen tu ich mich schwer.

Gruß Benny

Das einzige was mir auf die Schnelle einfällt wäre, dass Du auf dem Raspberry ein Skript laufen hast, welche eine Variable bei jedem Impuls hochzählt, und welches diese Variable dann auf einer Webpage darstellt. Diese Webpage kannst Du dann per IPS Skript (Curl oder sowas) auswerten.

genau so oder auch etwas anders hab ich´s mir theoretisch vorgestellt… ja aber dann kommt die Praxis und fragt mich „wie willst du das machen?“ :wink:

ansich ist es ja nur ein Hochzaehlen, das kann man nicht zufaellg direkt in die IPS DB schreiben? wobei mir das lokal erstmal lieber waere um es dann evtl. ueber Modbus per IPS abzuholen oder so. (Raspi haengt per WLAN dran, nicht dass da mal ein paar Werte floeten gehen)

Dann brauch ich nur noch ein Skript welches die Impulse auf den Verbrauch umrechnet, das sollte an der Aktion wahrscheinlich das einfachste sein.

Problem ist: GPIO auswerten-> wo auch immer hinschreiben-> wie auch immer per IPS abholen

EDIT: kann ich nicht ueber eine Dateifreigabe das irgendwie mit IPS auswerten? Ich meine die Auswertung meiner Wetterstation funktioniert ja auch so, nur eben lokal auf dem IPS Server. (txt Datei wird ausgewertet)
Am einfachsten waere doch, dass der Raspi die Impulse zaehlt und in eine Datei schreibt und ich dann per Dateifreigabe einfach dem IPS sage dass es die Zahl aus der Datei nimmt und damit rechnen soll.

Problem ist dann immer noch: GPIO auswerten-> wo auch immer hinschreiben

Direkt in die IPS DB geht IMHO nicht. Du könntest auch in eine lokale Raspi SQL DB schreiben und dann per IPS Skript abholen.

Du holst die Daten dann bspw alle 30s ab und schaust wieviele Impulse dazu gekommen sind. Dann kannst Du alles rechnen.
Aber: Viel genauer wäre bspw das IPS-868 system.

Ich muss erst mal los… siehe oben, hatte noch was im Edit.

Du kannst auch eine Textdatei nehmen, über die der IPS Server per CIFS zugreifen kann. Aber warum der Aufwand?
IPS-EKM-868und gut is.

Vielleicht weil er den Raspi schon hat ?

Wie man nun den raspi dazu bringt auf die GPIO zu reagieren weiß ich nicht, geht aber sicher. Gibt in den entsprechenden Foren ja viele Projekte.
Ich würde lokal am Raspi zählen (per Perl Script) und das Ergebnis in einer Datei speichern. Um die SD Karte zu schonen evtl nur in längeren Abständen die Datei uptaten.
Die Datei dann regelmäßig von IPS abholen und den Inhalt entsprechend auswerten.

Bisl Aufwand aber durchaus machbar.

gruß
bb

naja, ich hab eine Aufgabe und kauf mir ein geeignetes System. Ich versuche ja auch nicht mit meinem PC (den habe ich schon) die Lufttemperatur über ein 10m langes Ausskabel zu messen. :smiley:

Hallo,
Du kannst die Eingänge am Pi mit dem Tool WiringPi abfragen.

nähere Informationen hier: http://www.rn-wissen.de/index.php/Raspberry_PI:_GPIO#Via_WiringPi

Die Daten kannst Du in eine SQLite DB reinschreiben. Diese kannst Du dam am IPS abfragen. Alternativ geht auch MySQL, PostgreSQL etc. aber wenn der Strom ausfällt kann die DB beschädigt werden. Bei der SQLite DB ist die Wahrscheinlichkeit geringer.

Gruß

Back to square1 :slight_smile:

Hallo Benny,

wenn du auf die aktuelle IPS Version 3.0 updaten möchtest, kannst du den Raspberry Pi einfach und sauber über die neue JSON-RPC Schnittstelle integrieren indem du bei einem GPIO Eingangssignal deinen IPS bspw. via CURL (oder python oder…) mit einem Http Post Request mit entsprechendem JSON Payload auf eine beliebige IPS Funktion (z.B. Scriptaufruf oder Variablenupdate) Triggerst. Funktioniert wunderbar.

http://www.ip-symcon.de/service/dokumentation/entwicklerbereich/datenaustausch/

Gruss
Johannes

Yupp, das geht gut. Ich hab das aber absichtlich nicht erwähnt, da es vermutlich wohl sinnvoll ist die Events local am Pi zu zählen und nur zu gewissen Zeiten an IPS zu senden/abzuholen.
So können keine Impulse verlorengehen wenn mal das Lan oder IPS down ist.
Das ist bei kontinuierlich steigenden Zählern doch wichtig.

gruß
bb

uj, soviel Input, danke.
IPS 3.0 hab ich schon seit der Beta drauf, sollte ich mal in der Signatur aendern seh ich grad.

eine Kombination aus JSON-RPC und lokalem Puffer wuerde mir am besten gefallen, geht diese Kombi auch? Evtl. alle 100 Impulse an IPS uebermitteln.
Ich glaube aber, dass ich das allein nicht zum laufen bekomme.
Werde im Netz mal nach Beispielen suchen, evtl. finde ich da was.

Naja meine Einstellung zur Technik ist genau andersrum, ich kann es nicht leiden wenn sich diese langweilt oder ich nur 12% vom Umfang nutze…

schau ich mir an

Ja, das geht relativ einfach, indem du die Impulse bspw. in einer lokalen Variable im speicher oder einem file auf dem pi hochzählst und dann nur alle hundert Impulse einen http Post request zum IPS sendest. Wirklich ausfallsicher ist das dann natürlich auch nicht. Der pi bzw. der Prozess, der die Impulse behandelt kann auch mal ausfallen, genauso wie das LAN, der IPS oder auch die Stromversorgung. Dann gehen impulse verloren. In diesen Fällen wäre dann ab und an eine ‚manuelle‘ Kalibrierung der IPS Variable mit dem absoluten Gaszählerstand ein pragmatischer Ansatz.

Es gäbe auch noch weitere coole Lösungsvarianten, z.b. leichtgewichtiges Messaging mit zuverlässiger Nachrichtenübermittlung. Dies wäre jedoch sicher für diesen Anwendungsfall ein wenig mit Kanonen auf Spatzen geschossen :wink:

ok, dass in der Reihe mal was ausfallen kann nehme ich in kauf.
Falls das mal passiert kann man evtl. das Problem beheben
falls das oefter passiert tausche ich die Hardware
falls es mich nervt, kommt es ab und fertig, die Rechnung fuer das Gas kommt auch so…

manuelles kalibrieren, wuerde ich nicht schlimm finden, wenn es nicht zu oft vorkommt.

los, gib schon her, das bebilderte HowTo :slight_smile:

@andromeda1: hilf mir bitte wenn du kannst

ich habe gestern 3h verbracht um eine rote und gruene Led im Wechsel blinken zu lassen, bzw. konnte ich die Farbe auch aendern wenn ich auf einen kleinen Taster gedrueckt habe. WAHNSINN 3h, das erzeugte immer wieder Kopfschuetteln.

Das faengt mit der leicht verwirrenden PIN Belegung an und hoert mit Anleitungen im Netz auf welche nicht funktionieren oder immer wieder von anderen Sachen sprechen, oder mit anderen Modulen/Sprachen geloest wurden und hoert sicher mit meinem Neueinstieg auf.

Dazu ist mir aufgefallen, ich hab es mit Python probiert, dass das Script immer laufen muss dass das funktioniert. (was ja auch Logisch ist) Jedenfalls hatte ich das die ganze Zeit in der Konsole laufen.
Gibt es da eine Moeglichkeit das auch im Hintergrund abzufragen? Oder ein bessere Loesung, ist ja nun eigentlich kein riesen Ding was ich da vorhabe.

Zumindest habe ich jetzt die Standard Ein-/Ausgabe verstanden, nun muss mein Taster Input noch in eine Datei, da hab ich aber schon was im Netz gefunden, dann geht´s weiter.

Steig doch auf PoKeys56e um. Da hast Du eine Software namens PoBlocks und per Drag&Drop schiebst Du Dir die Schaltung auf dem Bildschirm zusammen. Das ist so einfach wie ein Lernbaukasten von Kosmos für Kinder.

hab ich auch noch hier liegen, der ist wirklich 10x Logischer als die anderen Sachen. (ein Arduino liegt hier auch noch)
Aber ich wollte jetzt fuer die Kleinigkeit nicht den Pokeys da rueber haengen, der soll mal sinnvollere Aufgaben erledigen (Alarmanlage, Temperatur, Klingelanlage).

Was fehlt denn noch konkret? Ich glaube du hast das Wesentliche schon gelöst :slight_smile:

Hier ist eine kurze Anleitung, das Python Script relativ einfach mit dem tool supervisord beim Systemstart im Hintergrund zu starten: http://stackoverflow.com/questions/13953268/daemonizing-a-python-script-in-debian.
Oder auch klassisch und etwas aufwändiger mittels Start/Stop Shellscript und Eintrag in /etc/init.d http://jimmyg.org/blog/2010/python-daemon-init-script.html

Wenn du den Zustand des Impulszählers in einer Datei vorhalten und auslesen willst, würde ich mit Python wahrscheinlich das pickle Modul verwenden. http://docs.python.org/2/library/pickle.html.

Hoffe das hilft etwas weiter :wink:

Also…mit meiner Homematic Tasterschnittstelle in meinem hier in der Community geposteten Gaszählerprojekt ist das alles easy und stabil realiesierbar gewesen und sehr stabil. HM hast Du ja…nur falls dies eine Option für Dich ist.

Gruss
B71