Git Product home page Git Product logo

Comments (16)

borft avatar borft commented on August 18, 2024

Welke versie van Postgres draai je? in principe zou die binary package prima moeten werken.

ik zie helemaal geen line 88 ;) zou je op de regel voor de cur.execute() een print(f'query: {query} / values: {json.dumps(values, indent=4)}') kunnen toevoegen?

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

Ik heb zelf de MQTT er tussen gestopt, die werkt goed, vandaar dat de line wat verder naar beneden zit :)
Wellicht dat het met de oude versie van postgresql te maken heeft: postgres (PostgreSQL) 9.3.25
Toevoegen van stukje code heeft deze foutmelding:

Traceback (most recent call last):
File "run.py", line 88, in
print(f'query: {query} / values: {json.dumps(values, indent=4)}')
File "/var/packages/py3k/target/usr/local/lib/python3.8/json/init.py", line 234, in dumps
return cls(
File "/var/packages/py3k/target/usr/local/lib/python3.8/json/encoder.py", line 201, in encode
chunks = list(chunks)
File "/var/packages/py3k/target/usr/local/lib/python3.8/json/encoder.py", line 429, in _iterencode
yield from _iterencode_list(o, _current_indent_level)
File "/var/packages/py3k/target/usr/local/lib/python3.8/json/encoder.py", line 325, in _iterencode_list
yield from chunks
File "/var/packages/py3k/target/usr/local/lib/python3.8/json/encoder.py", line 438, in _iterencode
o = _default(o)
File "/var/packages/py3k/target/usr/local/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.class.name} '
TypeError: Object of type datetime is not JSON serializable

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

Als ik trouwens het stukje ON CONFLICT er even tussen uit haal krijg ik deze foutmelding
psycopg2.errors.UndefinedTable: relation "sems" does not exist

from py-goodwe.

borft avatar borft commented on August 18, 2024

ah, dat laatste verklaart het probleem. je moet de tabellen nog even aanmaken, de queries daarvoor staan in examples/db.sql.

die kan je uitvoeren als volgt:

psql -U postgres -h localhost database < examples/db.sql

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

Ah, daar had ik idd niet aan gedacht.
Krijg je (zonder de ON CONFLICT) deze foutmelding....
Traceback (most recent call last): File "run.py", line 89, in <module> cur.execute(query, values) psycopg2.errors.NumericValueOutOfRange: numeric field overflow DETAIL: A field with precision 4, scale 1 must round to an absolute value less than 10^3.

dit zijn de waardes:
{
"sample": "2022-01-14 15:07:24.733549",
"voltage_dc_1": 265.2,
"current_dc_1": 0.2,
"voltage_dc_2": 198.8,
"current_dc_2": 0.3,
"voltage_dc_3": 6553.5,
"current_dc_3": 6553.5,
"voltage_dc_4": 6553.5,
"current_dc_4": 6553.5,
"voltage_ac_1": 231.2,
"voltage_ac_2": 6553.5,
"voltage_ac_3": 6553.5,
"current_ac_1": 0.9,
"current_ac_2": 6553.5,
"current_ac_3": 6553.5,
"frequency_ac_1": 49.98,
"frequency_ac_2": 655.35,
"frequency_ac_3": 655.35,
"power_ac": 143,
"status": "NORMAL",
"temperature": 4.1,
"yield_today": 1.2,
"yield_total": 1281.6,
"working_hours": 1879,
"power_dc_1": 53.04,
"power_dc_2": 59.64,
"net_frequency_1": 49.98,
"net_frequency_2": 655.35,
"net_frequency_3": 655.35
}

from py-goodwe.

borft avatar borft commented on August 18, 2024

Ik denk dat het komt, omdat je geen 3 fase omvormer hebt (Die heb ik wel), waardoor de default waardes voor de spanning niet passen. In de code staat een list db_fields, je zou kunnen proberen daaruit voltage_ac_2 en voltage_ac_3 weg te halen en hetzelfde voor current_ac_2 en current_ac_3.

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

Oke, alles werkt nu bijna, alleen de ON CONFLIT error blijft terug komen.

from py-goodwe.

borft avatar borft commented on August 18, 2024

ja, die laatste is lastig. Postgres 9.3 is meer dan 8 jaar oud... ;) die ondersteunt de ON CONFLICT clause niet. Mag ik voorstellen dat je PG upgrade naar iets dat minder oud is? ;) Vanaf versie 9.5 zou het moeten werken. Ter referentie, de huidige versie van Postgres is 14!

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

Yep, ben ik mij van bewust. Nadeel is dus oude NAS, waar het bijna onmogelijk op is om iets goed te updaten. DOCKER werkt bijvoorbeeld al niet...

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

met wat kunst en vliegwerk postgresql 11 er naast kunnen installeren. Dus de database loopt nu vol!
Ik draai nu ook de push_status en push_output, maar er wordt weinig naar pvoutput gestuurt (api en site-id staan goed)
bij push_output krijg ik helemaal niks te zien
bij push_status alleen: got 0 rows

from py-goodwe.

borft avatar borft commented on August 18, 2024

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

Had het nog niet aan de praat, heb idd nog geen p1 toegevoegd. Mijn p1 reader is alleen een netwerk reader via port 8088 van de p1 reader komen de telegrams binnen. Ik weet niet of ik de ook kan gebruiken met p1.py?

from py-goodwe.

borft avatar borft commented on August 18, 2024

niet zonder aanpassingen, maar een http request doen en de output daarvan parsen is neit al te moeilijk. Heb je ergens een specificatie van het protocol (of welk type is het precies)? Allicht dat ik even wat kan proberen.

Het script doet niet heel meer dan:

  • seriele port openen
  • wachten op een telegram
  • telegram parsen
  • data in de database opslaan

De eerste 2 stappen vervangen door een http request zou niet heel moeilijk moeten zijn.

from py-goodwe.

FutureCow avatar FutureCow commented on August 18, 2024

het werkt via rfc2217: COM over TCP/IP een soort telnet verbinding.
Volgens mij zou die via pyserial moeten/kunnen werken, ik heb rfc2217://ip:port geprobeerd, maar dat werkte helaas niet.

from py-goodwe.

borft avatar borft commented on August 18, 2024

hmm, dat zou wel moeten werken. Zou het kunnen dat je nog options als baudrate, etc moet zetten?

from py-goodwe.

borft avatar borft commented on August 18, 2024

Een andere optie is socat waarmee je, op basis van rfc2217 een lokale seriele port kan maken (ik gebruik hier iets vergelijkbaars voor mijn zwave netwerk). Vervolgens kan je het p1 script tegen die seriele port laten praten.

from py-goodwe.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.