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

HomeWizard P1 As Remote for DSRM-Reader #301

Closed
5 tasks done
RubenDijk opened this issue Dec 2, 2022 · 23 comments
Closed
5 tasks done

HomeWizard P1 As Remote for DSRM-Reader #301

RubenDijk opened this issue Dec 2, 2022 · 23 comments

Comments

@RubenDijk
Copy link

RubenDijk commented Dec 2, 2022

Support guidelines

I've found an issue and checked that ...

  • ... the documentation does not mention anything about my problem
  • ... there are no open or closed issues that are related to my problem

Description

  • DSMR-Reader RPI migration to docker (UnRaid) (Done)
  • I made a full backup of the database. I now want to load this into docker (unraid) How do I do this? (Done)

I have installed the following (Containers)

postgresql13: with user 'dsmrreader' and db 'dsmrdb'
DSMR-Reader: this also starts up.

Now I would like to transfer the db from the rpi so I keep me history. (Solve)

Next point is Homewizard as Remote reader for DSRM-Reader

To make it workt you need to use plugins.


from django.dispatch import receiver

from dsmr_backend.signals import backend_called
import dsmr_datalogger.services.datalogger


# Preverve a low timeout to prevent the entire backend process from hanging too long.
HOMEWIZARD_ENDPOINT = 'http://12.34.56.789:80/api/v1/telegram'
HOMEWIZARD_TIMEOUT = 5


@receiver(backend_called)
def handle_backend_called(**kwargs):
    response = requests.get(HOMEWIZARD_ENDPOINT,
                            timeout=HOMEWIZARD_TIMEOUT)

    if response.status_code != 200:
        print(' [!] HomeWizard plugin: Telegram endpoint failed (HTTP {}): {}'.format(
            response.status_code,
            response.text
        ))
        return

    dsmr_datalogger.services.datalogger.telegram_to_reading(data=response.text)

standalone or receiver it doesn't matter. The log files are filling up in both modes
Mode: Standalone its missing the usb (log)
Mode: Receiver its missing the comm Ser2Net

Expected behaviour

Actual behaviour

Steps to reproduce

Docker info

Install:
OS: Unraid
Container: Postgresql13
Container: DSMR-Reader
@xirixiz
Copy link
Owner

xirixiz commented Dec 2, 2022

Hi, please check the instructions from the readme:
https://github.com/xirixiz/dsmr-reader-docker#features

@xirixiz
Copy link
Owner

xirixiz commented Dec 5, 2022

Were you able to do this?

@RubenDijk
Copy link
Author

No not yet implemented,

I can't get the homewizard p1 meter paired with dsmr.
One talks about a poll_dsmrloggerws_api.py This one I should add. This too is not going quite right.

@xirixiz
Copy link
Owner

xirixiz commented Dec 5, 2022

Ok, I personally don't know much about such a setup. But maybe if you provide some more details about your setup (design) and what you would like to achieve, I guess @dennissiemensma and me will be able to help out.

Liefst in het Nederlands als dat geen probleem is :)

@RubenDijk
Copy link
Author

RubenDijk commented Dec 5, 2022

Dat is geen probleem.

Ondertussen ben ik een stukje verder en komen de eerste waardes binnen.
De volgende voorwaarde moest ik toevoegen aan docker:

DATALOGGER_NETWORK_HOST: IP van de remote
DATALOGGER_NETWORK_PORT: Port van de remote
Container Variable: DSMRREADER_PLUGINS
Container Path: /app/dsmr_plugins/modules/poll_dsmrloggerws_api.py

DATALOGGER MODE (change if P1 port is on this machine to STANDALONE):
deze staat hier nu op standalone (wat verwarrend is)

Als ik de DATALOGGER MODE wijzig krijg ik de volgende log melding:
on handle_backend_called at 0x147f092bcfe0> errored: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
2022-12-05 11:51:25,961 ERROR schedule dispatch_signals 20 | (ConnectionError) <function handle_backend_called at 0x147f092bcfe0> errored: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

Wel krijg ik data binnen.

unraid

@RubenDijk
Copy link
Author

logfile zegt alleen anders.
Hij blijft melding geven dat er geen readings binnen komen
logfile_dsmr

@xirixiz
Copy link
Owner

xirixiz commented Dec 5, 2022

Wanneer de P1 reader aan hetzelfde device gekoppeld is waarop DSMR reader draait, dan moet inderdaad DATALOGGER_MODE standalone zijn. In dit geval moet DATALOGGER_MODE op receiver staan omdat het alleen data ontvangt en er geen directe/lokale verbinding is met de P1 (je werkt immers met een remote logger).

De fout zie je idd ook in de logging terug. De "local" datalogger kan geen data uitlezen. Logisch, want er is geen device gekoppeld. Maar goed, op mijn lijstje stond al om dit een keer wat beter uit te werken en te visualiseren iig. Vragen en/of onduidelijkheden over verschillende setups komen vaker voor. Maar ik heb het gevoel dat je er bijna bent nu :).

@RubenDijk
Copy link
Author

Even een lijstje compleet maken voor wat overzicht.

DSMR-Reader Container install (Unraid OS)
Remote logger = HomeWizard P1 meter (Optie API staat aan en is ook uitleesbaar)

Settings container:

Toegevoegd aan container:
DATALOGGER_NETWORK_HOST: IP van de remote
DATALOGGER_NETWORK_PORT: Port van de remote
Container Variable: DSMRREADER_PLUGINS
Container Path: /app/dsmr_plugins/modules/poll_dsmrloggerws_api.py

Change: DATALOGGER_MODE (from ''standalone'' to ''receiver'')
Zie logfile. Hier uit lijkt dat er geen data binnen komt. Echter lees ik wel gewoon data.

Logfile:

DSMR_Log1

@dennissiemensma
Copy link
Contributor

Gebruik je toevallig deze?

Dit gaat buiten de standaardfunctionaliteit van DSMR-reader om via "plugins". Het is een workaround en is bedoeld als last-resort als geen andere manier mogelijk is.
In dit geval heb je niets aan de datalogger of remote-datalogger van DSMR-reader. Ik vermoed dat je DSMR-reader gewoon als standalone moet draaien met dat script ingeschakeld als plugin.

Echter is die bedoeld voor DSMRloggerWS als ik het terugzoek: dsmrreader/dsmr-reader#1057

Ik weet niet of er iets beschikbaar is voor HomeWizard. In principe is de meeste neutrale oplossing simpelweg iets als ser2net gebruiken, zodat alle P1-readers zoals DSMR-reader en HomeWizard daar zelf hun telegrammen vandaan kunnen halen, zonder elkaar in de weg te zitten. Echter weet ik niet of HomeWizard daar ondersteuning voor heeft.

@dennissiemensma
Copy link
Contributor

Je kunt hooguit dit brouwsel proberen, gebaseerd op het andere script en https://homewizard-energy-api.readthedocs.io/endpoints.html#p1-telegram-api-v1-telegram

DSMRREADER_PLUGINS=dsmr_plugins.modules.poll_homewizard_api

dsmr_plugins/modules/poll_homewizard_api.py

import requests

from django.dispatch import receiver

from dsmr_backend.signals import backend_called
import dsmr_datalogger.services.datalogger


# Preverve a low timeout to prevent the entire backend process from hanging too long.
HOMEWIZARD_ENDPOINT = 'http://12.34.56.789:80/api/v1/telegram'
HOMEWIZARD_TIMEOUT = 5


@receiver(backend_called)
def handle_backend_called(**kwargs):
    response = requests.get(HOMEWIZARD_ENDPOINT,
                            timeout=HOMEWIZARD_TIMEOUT)

    if response.status_code != 200:
        print(' [!] HomeWizard plugin: Telegram endpoint failed (HTTP {}): {}'.format(
            response.status_code,
            response.text
        ))
        return

    dsmr_datalogger.services.datalogger.telegram_to_reading(data=response.text)

Vervang 12.34.56.789:80 door het juiste IP/poort.

@RubenDijk
Copy link
Author

RubenDijk commented Dec 5, 2022

@dennissiemensma,

Inderdaad die heb ik gebruikt. Dat was voor mij de manier om de P1 meter van HomeWizard gekoppeld te krijgen.
Ik kon zo 1,2,3 niet iets vinden wat ik zou moeten instellen voor de HomeWizard P1 meter.

De documentatie is mij ook niet geheel duidelijk of er wel mogelijkheden zijn om de HomeWizard P1 meter gekoppeld te krijgen op een manier waar bij niet zoveel tweak werk nodig is.

De HomeWizard stuurt een API uit op zijn ip:

/Ene5\T210-D ESMR5.0

1-3:0.2.8(50)
0-0:1.0.0(221205210258W)
0-0:96.1.1(4530303438303030303139373631313138)
1-0:1.8.1(004960.558*kWh)
1-0:1.8.2(004673.193*kWh)
1-0:2.8.1(000296.524*kWh)
1-0:2.8.2(000723.940*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(00.437*kW)
1-0:2.7.0(00.000*kW)
0-0:96.7.21(01496)
0-0:96.7.9(00009)
1-0:99.97.0(2)(0-0:96.7.19)(180507213636S)(0000000773*s)(180507203908S)(0000000246*s)
1-0:32.32.0(00007)
1-0:52.32.0(00007)
1-0:72.32.0(00007)
1-0:32.36.0(00000)
1-0:52.36.0(00000)
1-0:72.36.0(00000)
0-0:96.13.0()
1-0:32.7.0(224.0*V)
1-0:52.7.0(220.0*V)
1-0:72.7.0(228.0*V)
1-0:31.7.0(001*A)
1-0:51.7.0(001*A)
1-0:71.7.0(001*A)
1-0:21.7.0(00.085*kW)
1-0:41.7.0(00.240*kW)
1-0:61.7.0(00.111*kW)
1-0:22.7.0(00.000*kW)
1-0:42.7.0(00.000*kW)
1-0:62.7.0(00.000*kW)
0-1:24.1.0(003)
0-1:96.1.0(4730303732303033393735363035353230)
0-1:24.2.1(221205210000W)(03051.452*m3)
!A05D

@RubenDijk RubenDijk changed the title Help with transferring db rpi -> docker container HomeWizard P1 As Remote for DSRM-Reader Dec 5, 2022
@RubenDijk
Copy link
Author

@xirixiz

Backup van de RPI (oude DSMR-Reader) overzetten naar de nieuwe omgeving (UnRaid Containers) is gelukt.

Ik heb het volgende uitgevoerd.

  1. DSMR-Reader container ''Stop''
  2. Postgresql Container console:
  3. su - postgres
  4. psql
  5. CREATE DATABASE dsmrdb;
  6. CREATE USER dsmrreader WITH ENCRYPTED PASSWORD 'dsmrreader';
  7. GRANT ALL PRIVILEGES ON DATABASE dsmrdb TO dsmrreader;
  8. /q
  9. psql -U dsmrreader -d dsmrdb < manual-backup.sql

Vervolgens de DSMR-Reader container weer gestart en alle gegevens/historie is er weer

@xirixiz
Copy link
Owner

xirixiz commented Dec 8, 2022

@dennissiemensma,

Inderdaad die heb ik gebruikt. Dat was voor mij de manier om de P1 meter van HomeWizard gekoppeld te krijgen. Ik kon zo 1,2,3 niet iets vinden wat ik zou moeten instellen voor de HomeWizard P1 meter.

De documentatie is mij ook niet geheel duidelijk of er wel mogelijkheden zijn om de HomeWizard P1 meter gekoppeld te krijgen op een manier waar bij niet zoveel tweak werk nodig is.

De HomeWizard stuurt een API uit op zijn ip:

/Ene5\T210-D ESMR5.0

1-3:0.2.8(50)
0-0:1.0.0(221205210258W)
0-0:96.1.1(4530303438303030303139373631313138)
1-0:1.8.1(004960.558*kWh)
1-0:1.8.2(004673.193*kWh)
1-0:2.8.1(000296.524*kWh)
1-0:2.8.2(000723.940*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(00.437*kW)
1-0:2.7.0(00.000*kW)
0-0:96.7.21(01496)
0-0:96.7.9(00009)
1-0:99.97.0(2)(0-0:96.7.19)(180507213636S)(0000000773*s)(180507203908S)(0000000246*s)
1-0:32.32.0(00007)
1-0:52.32.0(00007)
1-0:72.32.0(00007)
1-0:32.36.0(00000)
1-0:52.36.0(00000)
1-0:72.36.0(00000)
0-0:96.13.0()
1-0:32.7.0(224.0*V)
1-0:52.7.0(220.0*V)
1-0:72.7.0(228.0*V)
1-0:31.7.0(001*A)
1-0:51.7.0(001*A)
1-0:71.7.0(001*A)
1-0:21.7.0(00.085*kW)
1-0:41.7.0(00.240*kW)
1-0:61.7.0(00.111*kW)
1-0:22.7.0(00.000*kW)
1-0:42.7.0(00.000*kW)
1-0:62.7.0(00.000*kW)
0-1:24.1.0(003)
0-1:96.1.0(4730303732303033393735363035353230)
0-1:24.2.1(221205210000W)(03051.452*m3)
!A05D

Wat dit doet (plugin neem ik aan?), is volgens mij Homewizard pollen op de API om de DSMR data op te halen. Ik weet het alleen niet zeker of de dataservice ook moet draaien in de container. Wanneer dat het geval is, dan zal ik iets aan moeten passen zodat er geen check op /dev/ttyUSB* is.

@xirixiz
Copy link
Owner

xirixiz commented Dec 11, 2022

Ik denk dat wanneer je dit volgt (moment dat Zuidwijk inspringt), dan kom je er wel uit vermoed ik.

#303

@RubenDijk
Copy link
Author

Getest.

Update container.
Vervolgens de volgende /mnt/user/appdata/dsmr-reader/modules/poll_dsmrloggerws_api.py en
dsmr_plugins.modules.poll_dsmrloggerws_api verwijderd.

Resultaat: Geen data meer.

ik ga zelf eens kijken of ik iets kan schrijven/toevoegen.
Marcel zijn hardware is geen HomeWizard en zou wel niet het zelfde werken.
Lijkt mij iets in de API afhandeling

@dennissiemensma
Copy link
Contributor

@RubenDijk zie:

En een mogelijk script in de tweede comment direct daaronder:

Het is mij niet duidelijk of dat laatste niet werkt of dat er mogelijk overheen gelezen is. Als de docs van HomeWizard API kloppen, dan zou dat wellicht moeten werken als workaround.

@xirixiz
Copy link
Owner

xirixiz commented Dec 11, 2022

Niet echt helemaal van toepassing in dit issue, maar om verwarring te voorkomen ben ik inmiddels bezig om de configuratiestructuur gelijk te houden op de manier zoals Dennis het heeft opgezet. Dat houdt in dat binnenkort de settings standalone, sender en receiver zullen verdwijnen.

Ik denk dat het hele plaatje dan duidelijker is. Mogelijk maak ik er nog even een tekening bij in Miro oid voor de verschillende setup mogelijkheden.

Maar goed, wat ik al zei, niet specifiek van toepassing op dit issue, maar wellicht nuttige info als toevoeging omdat ik er zelf ook mee aan het worstelen was :)

@dennissiemensma
Copy link
Contributor

dennissiemensma commented Dec 11, 2022

Goeie! Ik denk dat ik daar zelf ook wel wat voor mag documenteren. Een paar jaar geleden waren er minder tools en koppelingen, maar inmiddels is het geen overbodige luxe. Vooral wat wel en niet kan. Ik zal er zelf ook een TODO voor maken.

Update: dsmrreader/dsmr-reader#1769

@RubenDijk
Copy link
Author

RubenDijk commented Dec 11, 2022

ik denk dat het meer een algemeen punt aan het worden is. HomeWizard kunnen uitlezen in DSRM-Reader. (Vraag 1 is dit mogelijk Yes or No)

Wat is hier voor nodig om dit mogelijk te maken ? En zien jullie hier wat in om dit mogelijk te maken?

Zo als het nu is moet er gewerkt worden met plugins en een tweek hier en daar.

@dennissiemensma
Copy link
Contributor

ik denk dat het meer een algemeen punt aan het worden is. HomeWizard kunnen uitlezen in DSRM-Reader. (Vraag 1 is dit mogelijk Yes or No)

Wat is hiet voor nodig om dit mogelijk te maken ? En zien jullie hier wat in om dit mogelijk te maken?

#301 (comment)

@RubenDijk
Copy link
Author

Dus mogelijk met veel handwerk en foutmeldingen in de log.
Word dit nog gebruiksvriendelijk uitgewerkt ?

Zou toch mooi zijn als je de gegevens op de pagina invult van de HomeWizard en het werkt ?
2022-12-11 21_42_39-Dataloggerconfiguratie _ Dataloggerconfiguratie wijzigen _ DSMR-reader

@dennissiemensma
Copy link
Contributor

Het is helaas niet zo triviaal. De slimme meter zelf ondersteunt geen meerdere readers, dus dat is de voornaamste beperking hier.

Ik kan onmogelijk elke externe tool ondersteunen die hetzelfde doet. DSMR-reader is "een tool" om je slimme meter uit te lezen, net zoals HomeWizard.
Als je beiden wilt en HomeWizard geen ser2net of iets ondersteunt als workaround (wat ik vanuit HomeWizard wel weer snap), kom je uit op een script zoals hierboven.

Dat plugin-mechanisme is daarom voor dit soort situaties bedoeld. Voor de edge-cases van koppelingen andere tools geldt overigens hetzelfde:

@xirixiz
Copy link
Owner

xirixiz commented Dec 12, 2022

Ik ben het inderdaad met Dennis eens. Buiten HomeWizard kunnen er nog tal van databronnen zijn.
Je kan het dan ook andersom bekijken, gaat HomeWizard ondersteuning bieden voor DSMR Reader?

Je bent uiteraard altijd vrij om vragen te stellen over alternatieve koppelingen. En zoals je ziet neemt @dennissiemensma, en in dit geval ik, de tijd voor om iemand te helpen. Ondanks exotische setups proberen wij altijd iemand te ondersteunen of iig in de juiste richting te sturen.

Ik verwacht dat je naast de info die er is gegeven het beste nog extra hulp kan zoeken op forums met betrekking tot HomeWizard. Ik denk ook niet dat wij nog extra informatie kunnen verstrekken en zal daarom de ticket sluiten.

Mocht je nog een andere vraag hebben, of misschien toch nog een aanvullende vraag hebben, dan kan je uiteraard altijd een nieuwe ticket aanmaken.

@xirixiz xirixiz closed this as completed Dec 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants