Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does this plugin support fritzdect-200 power consumtion readout? #25

Open
DSDV opened this issue Nov 4, 2018 · 15 comments
Open

Does this plugin support fritzdect-200 power consumtion readout? #25

DSDV opened this issue Nov 4, 2018 · 15 comments
Labels

Comments

@DSDV
Copy link

DSDV commented Nov 4, 2018

Hello,
i want to use the Fritz Dect 200 to messure my power consumption for diffrent setups.
at the moment i plan to use 3 devices.
https://en.avm.de/products/fritzdect/fritzdect-200/
does this plugin allow to grab the data of the devices?

with kind regards

PS: sorry for my bad english

@fetzerch
Copy link
Owner

fetzerch commented Nov 4, 2018

Currently fritzcollectd has only rudimentary support of dect devices. Mainly because I don't have any DECT devices for testing here.

The following values are reported to collectd: multimeter power, multimeter energy, switch state and temperature. Currently they are reported as dect-0 ... dect-X, and it's not optimal to find out which is what.

Also there's currently no support for dect devices in my dashboard on grafana.com. But you can add that easily.

@DSDV
Copy link
Author

DSDV commented Nov 4, 2018

Hm .. that seems to be ok 👍
i only want to show how much energy consumtion each of the dect devices report maybe as graph so you can see where the peek times of powerconsumtion are.

if i donate you a dect 200 would that increase your support for that device?

@conrad784
Copy link

I just noticed, the ordering of my devices changed after restart of collectd (dect4 is suddenly dect3). Maybe I will find some time to debug this further, or even implement some kind of name resolution.

@chris-hoe
Copy link

I have a setup with multiple (>10) DECT200 boxes and they're mixed up on every reboot or restart which is quite annoying because you have to do the identification job again (which id is which box) and (even more important) because history data gets wrong when you correct the id-to-box assignment because in influxdb data is organised by the "1-dectX" id and this id is/might be re-assigned to a different device on restart/reboot. Would be great if that's possible to fix as it renders history data useless.

@chris-hoe
Copy link

chris-hoe commented Feb 26, 2020

I've found a simple solution to the DECT200 devices getting mixed up on restart/reboot: I've changed the query that way that fritzcollect adds the AIN to the name instead of the id. This way the id can change (and will) but the values are always logged to the same series because the AIN is constant. I replaced line 80/81:
(ServiceAction('X_AVM-DE_Homeauto:1', 'GetGenericDeviceInfos', 'NewIndex', 'NewIndex', 'dect'),
with:
(ServiceAction('X_AVM-DE_Homeauto:1', 'GetGenericDeviceInfos', 'NewIndex', 'NewAIN', 'dect'),
and the instance names change to something like this "1-dectxxxxx yyyyyy" where xxxxx yyyyyy is the AIN which will never change for a certain DECT200 box.

@jum
Copy link

jum commented Apr 9, 2020

I used 'NewDeviceName' instead of 'NewAIN', this way I can see the device names I have used for the DECT 200 devices.

@DennisCor
Copy link

I've found a simple solution to the DECT200 devices getting mixed up on restart/reboot: I've changed the query that way that fritzcollect adds the AIN to the name instead of the id. This way the id can change (and will) but the values are always logged to the same series because the AIN is constant. I replaced line 80/81:
(ServiceAction('X_AVM-DE_Homeauto:1', 'GetGenericDeviceInfos', 'NewIndex', 'NewIndex', 'dect'),
with:
(ServiceAction('X_AVM-DE_Homeauto:1', 'GetGenericDeviceInfos', 'NewIndex', 'NewAIN', 'dect'),
and the instance names change to something like this "1-dectxxxxx yyyyyy" where xxxxx yyyyyy is the AIN which will never change for a certain DECT200 box.

In wich file I have to edit the code or do I need to reinstall collectd and edit the "init.py"?

@jum
Copy link

jum commented Aug 17, 2020

Just check where fritzcollectd ended up being installed using "pip show fritzcollectd". I used a patch like this for my modification:

diff -u __init__.py.orig __init__.py
--- __init__.py.orig    2020-04-09 17:49:08.000000000 +0200
+++ __init__.py 2020-04-09 18:01:45.000000000 +0200
@@ -78,7 +78,7 @@
           Value('linkdownstreammax', 'bitrate'),
           'NewLayer1UpstreamMaxBitRate': Value('linkupstreammax', 'bitrate')}),
         (ServiceAction('X_AVM-DE_Homeauto:1', 'GetGenericDeviceInfos',
-                       'NewIndex', 'NewIndex', 'dect'),
+                       'NewIndex', 'NewDeviceName', ''),
          {'NewMultimeterPower': Value('power', 'power'),
           'NewMultimeterEnergy': Value('energy', 'power'),
           'NewTemperatureCelsius': Value('temperature', 'temperature'),

@DennisCor
Copy link

Just check where fritzcollectd ended up being installed using "pip show fritzcollectd". I used a patch like this for my modification:

diff -u __init__.py.orig __init__.py
--- __init__.py.orig    2020-04-09 17:49:08.000000000 +0200
+++ __init__.py 2020-04-09 18:01:45.000000000 +0200
@@ -78,7 +78,7 @@
           Value('linkdownstreammax', 'bitrate'),
           'NewLayer1UpstreamMaxBitRate': Value('linkupstreammax', 'bitrate')}),
         (ServiceAction('X_AVM-DE_Homeauto:1', 'GetGenericDeviceInfos',
-                       'NewIndex', 'NewIndex', 'dect'),
+                       'NewIndex', 'NewDeviceName', ''),
          {'NewMultimeterPower': Value('power', 'power'),
           'NewMultimeterEnergy': Value('energy', 'power'),
           'NewTemperatureCelsius': Value('temperature', 'temperature'),

Thanks for your fast response Jum. With "pip show fritzcollectd" I figured out where fritzcollectd is saved. I have no clue how to write a patch. So I changed the "init.py" directly with nano. But now I don't get any Data anymore.
Cancel the change don’t bring it back to work, "sudo apt-get update && sudo apt-get -y upgrade" just like that.
So unfortunately, I think I have to reinstall my system.

@jum
Copy link

jum commented Aug 17, 2020

I would say you changed the white space while editing the python code, and python is very sensitive to white space changes (it is part of the language's syntax). I would try to move the backup copy of that file (before you started editing) in place and try again, really obeying python syntax rules. If you do not have any backup of the file from before editing, you will have to use:

pip install --force-reinstall fritzcollectd

To get back a clean install dir.

@DennisCor
Copy link

DennisCor commented Aug 19, 2020

Now I learned how to make updates with a patch. A Really useful thing, thank you.
But with your diff it won't work nevertheless.
I think it should be
+ 'NewIndex', 'NewDeviceName', 'dect'),
instead of
+ 'NewIndex', 'NewDeviceName', ''), ?

I changed it that way and now it continues collecting data.
In influx/grafana the instance = 1-NameOfMyDect200 apears.
But the values are still saved to instance = 1-dect0 like before !?

And by the way, could someone tell me in wich units the values are ?
Energy = W and Power = Wh ? or is it kW ?

@jum
Copy link

jum commented Aug 19, 2020

Now I learned how to make updates with a patch. A Really useful thing, thank you.
But with your diff it won't work nevertheless.
I think it should be
+ 'NewIndex', 'NewDeviceName', 'dect'),
instead of
+ 'NewIndex', 'NewDeviceName', ''), ?

I changed it that way and now it continues collecting data.
In influx/grafana the instance = 1-NameOfMyDect200 apears.
But the values are still saved to instance = 1-dect0 like before !?

This is exactly the reason why I made that 'dect' string the empty string, I just wanted to use my own chosen name. I have not researched more into the 'NewIndex' thing, as this causes the name to be '1-myName', but this was not really a concern to me as I could easily filter that using a regular expression in Grafana/Influx, where I view my collectd data.

And by the way, could someone tell me in wich units the values are ?
Energy = W and Power = Wh ? or is it kW ?

I used in my graphs for power the label W, and it corresponded pretty much to what was going through when I turned on the electric kettle. I did not graph energy, I believed it to be not important for my usage case.

@DennisCor
Copy link

Now I learned how to make updates with a patch. A Really useful thing, thank you.
But with your diff it won't work nevertheless.
I think it should be
+ 'NewIndex', 'NewDeviceName', 'dect'),
instead of
+ 'NewIndex', 'NewDeviceName', ''), ?
I changed it that way and now it continues collecting data.
In influx/grafana the instance = 1-NameOfMyDect200 apears.
But the values are still saved to instance = 1-dect0 like before !?

This is exactly the reason why I made that 'dect' string the empty string, I just wanted to use my own chosen name. I have not researched more into the 'NewIndex' thing, as this causes the name to be '1-myName', but this was not really a concern to me as I could easily filter that using a regular expression in Grafana/Influx, where I view my collectd data.

You are right, I forgot to reboot. Now everything works the way I want.
Thank you for your help.

@UweBeckert
Copy link

Thanks for the patch. I had also the problem, that the dect numbers changes during night when my FritzBox gets a new DSL connection. I'm very happy to have my own assigned names now in Grafana.

Can this change be made officially in github, @fetzerch ?

I monitor temperature, power consumption and switch state in an own Grafana dashboard. I have also plugged in 2 solar modules into a FritzDect200, so I can see how much power they produce.

@tomikais
Copy link

tomikais commented Aug 12, 2021

Hi @UweBeckert, I also want to do this. Can you please provide/share your Grafana dashboard :-) Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants