Comments (16)
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.
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.
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.
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.
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.
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.
Oke, alles werkt nu bijna, alleen de ON CONFLIT error blijft terug komen.
from py-goodwe.
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.
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.
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.
from py-goodwe.
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.
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.
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.
hmm, dat zou wel moeten werken. Zou het kunnen dat je nog options als baudrate, etc moet zetten?
from py-goodwe.
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)
- Influxdb Support? HOT 5
- First query works, but then nothing HOT 2
- code stopped working HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from py-goodwe.