Hallo zusammen,
nachdem ich meinem Gaszähler G4 RF1c eine Reed-Kontakt spendiert habe und diesen an GPIO 24 von meinem RasPi überwachen lasse, kommen zwar bei GPIOGaszaehler immer die Readings bei jeder Umdrehung an, aber leider wird der Wert beim HourCounter STATE nicht erhöht. Da bleibt der Wert bei 0 stehen, obgleich auch hier die Readings aktualisiert werden. Im Log-File kommen immer nur die beiden Werte:
2015-12-28_18:14:18 Gasverbrauch countsOverall: 775920
2015-12-28_18:18:33 Gasverbrauch countsPerDay: 0
also der Wert, den ich selber über countsOverall eingegeben habe, und dann der Wert von STATE = 0. Auch nach einem Update und alles löschen und wieder neu eingeben hat keine Besserung gebracht. Jetzt habe ich eine Denkblockade. Hat jemand einen Vorschlag, woran das liegt, dass STATE nicht erhöht?
Gruß schucki
Zeig die benötigten Angaben um dir helfen zu können.
So ist es einfach nur zuwenig und jeder muss raten oder Glaskugel lesen (meine ist heute beim polieren).
Edith: Hier kannst du nachlesen was benötigt wird
http://forum.fhem.de/index.php/topic,16311.0.html (http://forum.fhem.de/index.php/topic,16311.0.html)
Edith1: Nein ich will dich nicht ärgern ich will nur nicht das du nach 3 Seiten immer noch keine Lösung hast weil Angaben fehlen
Hallo Puschel74,
;) ich weiß, dass Deine Hinweise nicht zum ärgern sind.
Ich hoffe, dass ich damit Deine Glaskugel etwas erhellen kann.
Wie ich schon angedeutet habe, habe ich einen Reed-Kontakt nach der Anleitung von Jan/voizchat.de http://voizchat.de/gaszaehler-verbrauch-erfassen-mit-fhem-und-raspberry-gpio/comment-page-3/#comment-75810 (http://voizchat.de/gaszaehler-verbrauch-erfassen-mit-fhem-und-raspberry-gpio/comment-page-3/#comment-75810) installiert, mit dem Ergebnis, dass der Reed-Kontakt am GPIO24
Internals:
DEF 24
EXCEPT_FD 15
NAME GPIOGaszaehler
NR 168
RPI_pin 24
STATE off
TYPE RPI_GPIO
Readings:
2015-12-28 19:57:41 Longpress off
2015-12-28 20:08:02 Pinlevel low
2015-12-28 19:57:41 state off
Fhem:
interfaces switch
Attributes:
active_low yes
direction input
interrupt both
pud_resistor up
room Gaszähler,System
toggletostate yes
immer die Umdrehung der Walze des Gaszählers tastet.
Internals
DEF
24
EXCEPT_FD
15
NAME
GPIOGaszaehler
NR
168
RPI_pin
24
STATE
off
TYPE
RPI_GPIO
Readings
Longpress
off
2015-12-28 19:41:03
Pinlevel
low
2015-12-28 19:55:16
state
off
2015-12-28 19:41:03
GPIOGaszaehler
Attributes
active_low
yes
deleteattr
direction
input
deleteattr
interrupt
both
deleteattr
pud_resistor
up
deleteattr
room
Gaszähler,System
deleteattr
toggletostate
yes
deleteattr
Probably associated with
CN.Gasverbrauch
HourCounter
define CN.Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
attr CN.Gasverbrauch room Gaszähler,System
also ein Impuls kommt an, genauso in dem HourCounter, zu sehen an den roten Einträgen,
Internals:
DEF GPIOGaszaehler:on GPIOGaszaehler:off
NAME CN.Gasverbrauch
NR 169
NTFY_ORDER 50-Gasverbrauch
STATE 0
TYPE HourCounter
VERSION 1.0.1.2 - 24.12.2014
Readings:
2015-12-28 20:00:00 countsOverall 775920
2015-12-28 20:00:00 countsPerDay 0
2015-12-28 20:00:00 pauseTimeEdge 0
2015-12-28 20:00:00 pauseTimeIncrement 12511
2015-12-28 20:00:00 pauseTimeOverall 12511
2015-12-28 20:00:00 pauseTimePerDay 12511
2015-12-28 20:00:00 pulseTimeEdge 0
2015-12-28 20:00:00 pulseTimeIncrement 0
2015-12-28 20:00:00 pulseTimeOverall 0
2015-12-28 20:00:00 pulseTimePerDay 0
2015-12-28 20:00:00 state 0
2015-12-28 17:37:27 tickDay 0
2015-12-28 20:00:00 tickHour 3
2015-12-28 17:37:27 tickMonth 0
2015-12-28 20:00:00 tickUpdated 31
2015-12-28 17:37:27 tickWeek 0
2015-12-28 17:37:27 tickYear 0
2015-12-28 20:00:00 value 0
Helper:
OFF_Regexp GPIOGaszaehler:off
ON_Regexp GPIOGaszaehler:on
calledByEvent
changedTimestamp 2015-12-28 20:00:00
forceClear
forceDayChange
forceHourChange
forceMonthChange
forceWeekChange
forceYearChange
isFirstRun
sdRoundHourLast 1451329200
value 0
cmdQueue:
Attributes:
room Gaszähler,System
aber wie gesagt, es wird das STATE nicht erhöht,
es steht schon von Anfang an auf 0, obgleich es regelmäßig zum triggern kommt. :-(
Ich habe auch den Dummy angelegt, wie in dem Beitrag erwähnt.
define CN.GasverbrauchStd dummy
attr CN.GasverbrauchStd event-on-change-reading .*
attr CN.GasverbrauchStd room Gaszähler,System
In der Log sind dann auch nur die beiden Werte mit dem eingegebenen Wert von mir, und dem STATE Wert 0.
define FileLog_CN.Gasverbrauch FileLog ./log/CN.Gasverbrauch-%Y-%m.log CN.Gasverbrauch:countsOverall:.*|CN.Gasverbrauch:countsPerDay:.*|CN.Gasverbrauch:state:.*
attr FileLog_CN.Gasverbrauch room FileLog,Gaszähler,System
Fotos sind schön und gut aber nicht zielführend ;)
Wir haben im Forum auch User mit einem Screenreader - der kann mWn keine Fotos lesen und diese schliesst du dann von der Hilfe aus.
Am besten ist es du bearbeitest deinen Beitrag nochmal und ersetzt die Fotos gegen Text in Code-Tags (das meinte ich eigentlich auch und dachte das das aus meinem angepinnten Beitrag hervorgeht).
Ja ich weiß - den Code bekommt nur indem man direkt in die fhem.cfg geht aber man bearbeitet dann ja nichts und kann sich das schön per copy&paste in Code-Tags packen ;)
Ein list <Device>
sollte aber auch zielführend sein.
So, und nun schau ich mir mal deine Bilder an.
Edith: Ich hab unseren Wasserzähler per GPIO über einen RasPi eingebunden.
Edith1: Und das list würde dann so aussehen:
Edith2: Ob es dir weiter hilft weiß ich (noch) nicht.
Internals:
DEF 17
EXCEPT_FD 10
NAME Wasserzaehler
NR 112
RPI_pin 17
STATE Verbrauch: 240221.0 Liter
TYPE RPI_GPIO
Readings:
2015-12-28 19:41:21 Counter 240221
2015-12-28 19:44:42 Pinlevel high
2015-12-28 18:59:59 Stundenverbrauch 10
2015-12-26 23:59:59 Tagesverbrauch 227
2015-12-28 19:41:21 Toggle on
2015-12-28 18:59:59 Wert_Stunde 240211
2015-12-26 23:59:59 Wert_Tag 239573
2015-12-28 19:41:21 statCounterDay Min: 239885.0 Avg: 240012.9 Max: 240221.0
2015-12-27 23:59:55 statCounterDayLast Min: 239573.0 Avg: 239700.5 Max: 239885.0
2015-12-28 19:41:21 statCounterHour Min: 240211.0 Avg: 240216.4 Max: 240221.0
2015-12-28 18:59:55 statCounterHourLast Min: 240201.0 Avg: 240206.2 Max: 240211.0
2015-12-28 19:41:21 statCounterMonth Min: 238040.0 Avg: 239193.5 Max: 240221.0 (since: 2015-12-22_16:24:50 )
2015-07-01 23:59:55 statCounterMonthLast Min: 80502.0 Avg: 80585.4 Max: 80692.0
2015-12-28 19:41:21 statCounterYear Min: 238040.0 Avg: 239193.5 Max: 240221.0 (since: 2015-12-22_16:24:50 )
2015-01-01 23:59:55 statCounterYearLast Min: 43213.0 Avg: 43344.9 Max: 43531.0
2015-12-28 19:41:21 state on
Fhem:
interfaces switch
Helper:
_98_statistics Statistik
Attributes:
direction input
interrupt rising
stateFormat {sprintf("Verbrauch: %.1f Liter",ReadingsVal("Wasserzaehler","Counter",0))}
toggletostate yes
Zitat von: Puschel74 am 28 Dezember 2015, 19:27:48
Fotos sind schön und gut aber nicht zielführend ;)
Wir haben im Forum auch User mit einem Screenreader - der kann mWn keine Fotos lesen und diese schliesst du dann von der Hilfe aus.
Am besten ist es du bearbeitest deinen Beitrag nochmal und ersetzt die Fotos gegen Text in Code-Tags
Sorry, daran habe ich nicht mehr gedacht. Ja diese Fachleute möchte ich natürlich nicht von meinem Problem ausschließen, da ich deren Beiträge auch sehr schätze, da habe ich auch schon viel von ihnen gelernt.
Zu Deiner Anbindung von dem Wasserzähler, da will ich ha auch hin, aber bei mir kommen einfach die Readings nicht dazu, dass sie in STATE immer um den Wert 1 erhöht werden, auch nicht die Tageszähler, da tut sich nix, obgleich ich mich an die Anleitung gehalten habe, und auch im Wiki nachgesehen habe und dann noch die Namensgebung auf CN.<device> geändert habe, aber der HourCounter will nicht den Wert addieren, das macht mich etwas stutzig. Ich kann aber auch nicht sagen wieweit mein FHEM 'richtig' läuft, da ich nicht zu der Gilde der Programmierer oder den Elektroniker gehöre. Da aber der Reed-kontakt ja Impulse meldet, wähnte ich mich doch auf dem richtigen Weg.
*grübel*
Hast du Meldungen im Logfile.
Mein Wasserzähler läuft zusammen mit 3 Stück I2C-Sensoren auf einem RasPi mit "Uralt"-FHEM.
Auf die Schnelle kann ich dir auch nicht sagen wie ich den genau eingebunden habe.
Wiki und Google hast du vermutlich sicher schon durch - sorry für die blöde Frage aber sicher ist sicher, wobei ich dir zu Google auch keinen passenden Suchbegriff liefern kann.
Mist, wie nähern uns wieder den 3 Seiten die ich eigentlich vermieden wollte
Edith: Hier mal das define von mir aus der fhem.cfg
define Wasserzaehler RPI_GPIO 17
attr Wasserzaehler direction input
attr Wasserzaehler interrupt rising
attr Wasserzaehler stateFormat {sprintf("Verbrauch: %.1f Liter",ReadingsVal("Wasserzaehler","Counter",0))}
attr Wasserzaehler toggletostate yes
Die Werte für Tag und Stunde kannst du erstmal vergessen - die errechne ich selbst in einem notify das per at getriggert wird - old-school eben da der RasPi schon länger ohne zutun läuft.
Das sehe ich ähnlich wie Du, aber da ich das Wiki und auch etliche Seiten im Forum gelesen habe, war meine letzte Anlaufstelle eben eine eigen Frage zu formulieren zu meinem Problem. Ich habe auch ein Update von FHEM und die Devices gelöscht und in der angegebene Reihenfolge eingegeben, wie in der Anleitung oder Wiki vorgegeben. ;-( Na ja, da mache ich es eben weiter Old School, Block und Bleistift.
Aber einige haben doch das Ding mit wenigen Mitteln zum laufen gebracht. Einfach einen Reed an GPIO hat ja auch geklappt, aber das andere will eben nicht.
Schönen Abend noch.
Gruß schucki
Zitat von: schucki am 28 Dezember 2015, 20:20:36
Aber einige haben doch das Ding mit wenigen Mitteln zum laufen gebracht. Einfach einen Reed an GPIO hat ja auch geklappt, aber das andere will eben nicht.
Hab ich ja auch - du schuldest mir/uns aber noch eine Antwort ;)
ZitatHast du Meldungen im Logfile.
Zitatwar meine letzte Anlaufstelle eben eine eigen Frage zu formulieren zu meinem Problem.
Das ist doch auch völlig ok.
Ich hab ja nie geschrieben das keine Frage gestellt werden darf/soll.
Ich möchte nur vermeiden das wir aneinander vorbei schreiben denn damit ist niemand geholfen.
Zitat von: Puschel74 am 28 Dezember 2015, 20:24:21
Hab ich ja auch - du schuldest mir/uns aber noch eine Antwort ;)Das ist doch auch völlig ok.
Ich hab ja nie geschrieben das keine Frage gestellt werden darf/soll.
Ich möchte nur vermeiden das wir aneinander vorbei schreiben denn damit ist niemand geholfen.
Das ist auch gut so, dass hier jemand auf solche Dinge achtet, sonst würde das ganze Forum zugefüllt werden.
Heute morgen habe ich so was im Log-File stehen:
global verbose 5
2015.12.29 08:05:06 4: HTTP FHEMWEB:127.0.0.1:59622 GET /fhem?XHR=1&inform=type=status;filter=CN.Gasverbrauch;since=1451372400.067;fmt=JSON&fw_id=undefined×tamp=1451372706155
2015.12.29 08:05:07 5: GPIOGaszaehler, in fileaccess: edge
2015.12.29 08:05:07 5: Triggering GPIOGaszaehler (3 changes)
2015.12.29 08:05:07 5: Notify loop for GPIOGaszaehler Pinlevel: low
2015.12.29 08:05:07 5: HourCounter CN.Gasverbrauch Run.577 value:0 changedTimestamp:2015-12-29 08:00:00
2015.12.29 08:05:07 5: Triggering CN.Gasverbrauch (13 changes)
2015.12.29 08:05:07 5: Notify loop for CN.Gasverbrauch countsPerDay: 0
2015.12.29 08:05:07 5: battStatus: not on any display, ignoring notify
2015.12.29 08:05:08 5: rg_battery: not on any display, ignoring notify
2015.12.29 08:05:08 4: HourCounter CN.Gasverbrauch ExecQueue.130 cnt: -1
2015.12.29 08:05:08 5: HourCounter CN.Gasverbrauch Run.801 nextCall:3292 changedTimestamp:2015-12-29 08:05:07
2015.12.29 08:05:08 5: battStatus: not on any display, ignoring notify
2015.12.29 08:05:08 5: rg_battery: not on any display, ignoring notify
2015.12.29 08:05:40 4: Connection closed for FHEMWEB:127.0.0.1:59619: EOF
warum hier ein Battery Status abgefragt wird entzieht sich meiner Kenntnis, ist aber evt ein Parameter, der ein notify scheitern lässt?
Gruß schucki
Hallo Schucki,
da ich meinen Gaszähler in den letzten Tagen auch an Fhem angebunden habe, hier kurz eine Info.
Dein Hourcounter scheint kein Signal zu bekommen.
2015-12-28 20:00:00 state 0
Dein Hourcounter wurde mit dem Stundentakt von 20:00 Uhr rot, aber nicht durch den Impuls am GPIO.
Prüfe hier bitte noch einmal zuerst, ob dein Device GPIOGaszaehler wirklich schaltet. Ich hatte auch etwas fummeln müssen, um die richtige Position für den Reed-Kontakt am Gaszähler zu finden.
Hier für dich zum Vergleich das list meines Hourcounters.
Internals:
DEF GPIOGaszaehler:on GPIOGaszaehler:off
NAME Gasverbrauch
NR 1112
NTFY_ORDER 50-Gasverbrauch
STATE 1.34 m³
TYPE HourCounter
VERSION 1.0.1.2 - 24.12.2014
Readings:
2015-12-29 11:03:04 Gaszaehler.gesamt 1755.95 m³
2015-12-29 11:03:04 countsOverall 175595
2015-12-29 11:03:04 countsPerDay 134
2015-12-29 11:03:04 pauseTimeEdge 3
2015-12-29 11:03:04 pauseTimeIncrement 3
2015-12-29 11:03:04 pauseTimeOverall 46228
2015-12-29 11:03:04 pauseTimePerDay 15197
2015-12-29 11:03:04 pulseTimeEdge 1904
2015-12-29 11:03:04 pulseTimeIncrement 200
2015-12-29 11:03:04 pulseTimeOverall 269109
2015-12-29 11:03:04 pulseTimePerDay 24565
2015-12-29 11:03:04 state 134
2015-12-29 10:59:44 tickChanged 196
2015-12-29 00:00:22 tickDay 2
2015-12-29 11:00:06 tickHour 42
2015-12-27 18:03:32 tickMonth 0
2015-12-29 11:03:04 tickUpdated 415
2015-12-27 18:03:32 tickWeek 0
2015-12-27 18:03:32 tickYear 0
2015-12-29 11:03:04 value 1
Helper:
OFF_Regexp GPIOGaszaehler:off
ON_Regexp GPIOGaszaehler:on
calledByEvent
changedTimestamp 2015-12-29 11:03:04
forceClear
forceDayChange
forceHourChange
forceMonthChange
forceWeekChange
forceYearChange
isFirstRun
sdRoundHourLast 1451383200
value 1
cmdQueue:
Attributes:
room Test
stateFormat {sprintf("%.2f",ReadingsVal("Gasverbrauch","state",0)/100)." m³"}
userReadings Gaszaehler.gesamt {sprintf ("%.2f m³", ReadingsVal("Gasverbrauch","countsOverall",0)/100)}
Viele Grüße
Jens
Hallo Jens
ich habe jetzt nochmal mit einem Magneten den Reed-Kontakt ausgelöst, es kommen die gleiche Readings in CN.GPIOGaszaehler an wie beim drehen des Zählwerks am Gaszähler.
Internals:
DEF 24
EXCEPT_FD 14
NAME CN.GPIOGaszaehler
NR 168
RPI_pin 24
STATE off
TYPE RPI_GPIO
Readings:
2015-12-29 12:50:00 Longpress off
2015-12-29 12:50:23 Pinlevel low
2015-12-29 12:50:00 state off
Fhem:
interfaces switch
Attributes:
active_low yes
direction input
interrupt both
pud_resistor up
room Gaszähler,System
toggletostate yes
also sollte die Position des Reed-Kontakt stimmen.
Wie hast du die GPIO geschaltet? Meine lasse ich beim start von fhem setzten.
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio23; then echo 23 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio24; then echo 24 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio18/direction
echo out > /sys/class/gpio/gpio23/direction
echo out > /sys/class/gpio/gpio24/direction
echo 1 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio17/value
echo 1 > /sys/class/gpio/gpio23/value
echo 1 > /sys/class/gpio/gpio24/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 0 > /sys/class/gpio/gpio23/value
sleep 1
so dass GPIO24 auf high ist. In den Readings von CN.GPIOGaszaehler stehen diese dann auf Pinlevel low. Aber so ist es ja auch bei Jan in der Anleitung vorgegeben. Deshalb habe ich im Moment keine Idee, warum dann im HourCounter nicht gezählt wird.
Habe eben getestet,
Magnet an Reed-Kontakt -> Longpress: on || Pinlevel: high || state: on
Magnet entfernt -> Longpress: off || Pinlevel: low || state: off
trotzdem zählt HourCounter nicht hoch.
Gruß schucki
Hallo Schlucki,
ich glaube du musst vor dem GPIOGaszaehler das "CN." entfernen (also das Device umbenennen). Dein Hourcounter reagiert auf
GPIOGaszaehler:on GPIOGaszaehler:off
Hier noch mein List des GPIO Device (bei mir: GPIOGaszaehler GPIO 23 / bei dir: CN.GPIOGaszaehler GPIO 24)
Internals:
DEF 23
EXCEPT_FD 54
NAME GPIOGaszaehler
NR 1111
RPI_pin 23
STATE on
TYPE RPI_GPIO
Readings:
2015-12-29 13:15:00 Longpress on
2015-12-29 13:32:42 Pinlevel high
2015-12-29 13:14:59 state on
Fhem:
interfaces switch
Attributes:
active_low yes
direction input
interrupt both
pud_resistor up
room Test
toggletostate yes
Bei mir ist der GPIO im Ruhezustand (also Reed-Kontakt nicht ausgelöst) durch das "Attribut pud_resistor up" auf "on" bei Dir ist er laut list "off". Eventuell hast du einen Öffner-Reed-Kontakt.
Viele Grüße
Jens
Zitat von: EIB-Fan am 29 Dezember 2015, 13:49:43
Hallo Schlucki,
Hier noch mein List des GPIO Device (bei mir: GPIOGaszaehler GPIO 23 / bei dir: CN.GPIOGaszaehler GPIO 24)
Internals:
DEF 23
EXCEPT_FD 54
NAME GPIOGaszaehler
NR 1111
RPI_pin 23
STATE on
TYPE RPI_GPIO
Readings:
2015-12-29 13:15:00 Longpress on
2015-12-29 13:32:42 Pinlevel high
2015-12-29 13:14:59 state on
Fhem:
interfaces switch
Attributes:
active_low yes
direction input
interrupt both
pud_resistor up
room Test
toggletostate yes
Das mit CN. steht so leider im Wiki. Zuerst hatte ich es auch anders, aber da es nicht funktionierte änderte ich es wie im Wiki ab. Ist jetzt alles wie von Anfang, nur den Pin auf low. ;-)
Das stört nicht, das ist nur ein anderer GPIO.
Zitat
Bei mir ist der GPIO im Ruhezustand (also Reed-Kontakt nicht ausgelöst) durch das "Attribut pud_resistor up" auf "on" bei Dir ist er laut list "off". Eventuell hast du einen Öffner-Reed-Kontakt.
Das war's was ich wissen wollte, ich habe mein GPIO auf low gesetzt, und jetzt funzt es. :-)
Danke für den Tipp.
Ich werde das mal im WIKI ergänzen. Ich war mir nicht ganz sicher, ob auf low oder high. Für mich war eher klar, da muss am Pin Spannung anliegen, damit gezählt werden kann, da das andere Ende des Kabel auf GND geht. Kommt davon, dass ich das nicht gelernt habe. ;-)
Danke Jens
Gruß schucki
Hat noch jemand das Problem, dass zu exakt jeder vollen Stunde komische Werte im Log auftauchen?
countsOverall: 17
countsperDay: 0