Hallo,
ich betreibe meinen FHEM auf einem BananaPro und habe u.a. einen selbst gebauten Ferrariszähler über das Modul RPI_GPIO eingebunden.
Das funktioniert so weit. Zuerst habe ich (nach der Gaszähleranleitung unter http://voizchat.de/gaszaehler-verbrauch-erfassen-mit-fhem-und-raspberry-gpio/ ) das Modul Hourcounter zur Auswertung der Scheibenumläufe verwendet.
Dieses Modul ist aber anscheinend in der Genauigkeit auf 1 Sekunde beschränkt und bei hoher Stromentnahme kommt es nicht mehr mit.
Ich will das ganze jetzt über Dummy Variablen berechnen und habe in RPI_GPIO ein event-on-change für Pinlevel definiert.
So bekomme ich noch 2 Events / Scheibenumdrehung.
In der Commandref steht, dass man hier auch Regular Expressions verwenden kann.
Wie müsste ein event-on-change für Pinlevel aussehen, damit ich nur noch bei Pinlevel low einen Event bekomme?
Ich hab schon viel gegoogled aber irgendwie steh ich da auf dem Schlauch :(
vielen Dank vorab
Gruß Harald
Hallo,
dann Poste doch mal die Events, die gemeldet werden. Die sollten doch im Eventmonitor angezeigt werden. Wenn die Eventmeldungen unterschiedlich sind, kann man eine ausschließen mit einem Vergleich. Sind die Meldungen gleich, wirst Du wohl die Zahl mit einem UserReading durch 2 teilen müssen.
Gruß Christoph
Hallo,
so schauen die Events im Monitor aus:
2015-10-23 16:49:58 RPI_GPIO EnergieZaehler Pinlevel: low
2015-10-23 16:50:02 RPI_GPIO EnergieZaehler Pinlevel: high
das event-on-update attribut sieht so aus:
event-on-update-reading Pinlevel
Das ist mein Problem: Kann ich in dieser Definition noch sowas wie Pinlevel:low angeben?
Danke und Gruß
Harald
ZitatThis attribute takes a comma-separated list of reading:interval:method:function quadruples. You may use regular expressions for reading.
Bezieht sich auf reading, nicht auf event. Du kannst wenn Du 2 Pinlevel hättest Pinlevel(1|2) schreiben. "regular expressions" bezieht sich meines Wissens nicht auf den Inhalt des Readings.
Wenn Du einen Dummy beschreiben willst könntest Du ein DOIF verwenden:
mydi DOIF ([RPI_GPIO EnergieZaehler:Pinlevel] eq "low") (set myDummy {([myDummy] +1)})
do always
Hallo,
versuche mal ".low" (natürlich ohne die "). Soweit ich weiß steht der Punkt für beliebige Zeichen.
Im Netz gibt es RegExp Tester. Da kannst Du den Text eingeben und sehen, was bei Deiner RegExp raus kommt. Schaust Du hier http://www.regexr.com.
Dein String müsste auch gehen, wenn Du ein Leerzeichen nach dem : machst.
Gruß Christoph
Hallo Ellert,
vielen Dank für den Tip, mit dem DOIF funktioniert es allerdings mit einer kleinen Änderung:
define pinLow DOIF ([EnergieZaehler:Pinlevel] eq "low") (set MomVerbr {([MomVerbr] +1)})
statt
define pinLow DOIF ([RPI_GPIO EnergieZaehler:Pinlevel] eq "low") (set MomVerbr {([MomVerbr] +1)})
Das RPI_GPIO vor dem EnergieZaehler mochte er nicht, da kam die Fehlermeldung "either timespec HH:MM:SS or Perlcode"
@Christoph: Deine 2 Varianten haben nicht funktioniert; es kam zwar keine Fehlermeldung aber es wurde auch kein event mehr generiert.
nochmal Danke für euere Unterstützung
Gruß
Harald