mark0100 / omniklogger

Omniklogger is a listener service for data messages from Omnik solar inverters.
GNU General Public License v3.0
1 stars 1 forks source link

Issue met Omnik script #5

Closed eterpstra closed 2 years ago

eterpstra commented 2 years ago

Hallo Mark,

Zoals aangegeven op het forum, bij deze mijn probleem:

Heb het script geinstalleert op een odroid C4 debian.

Bij het starten van het script krijg ik de volgende error:

root@xxx:/home/xxx/omniklogger# nano omniklogger.log
root@xxx:/home/xxx/omniklogger# python omniklogger.py
Traceback (most recent call last):
  File "omniklogger.py", line 66, in <module>
    serial = str.encode(config.get('inverter', 'serial'))
TypeError: descriptor 'encode' requires a 'str' object but received a 'unicode'

Ben zelf niet een programmeur dus weet niet echt waar ik het moet zoeken.

mark0100 commented 2 years ago

Hallo eterpstra,

De melding zegt dat het veld 'serial' (onder het kopje 'inverter') in het bestand config.ini niet goed gelezen kan worden.

Heb je de config-template.ini file gecopieerd naar config.ini en het serial id aangepast aan jouw systeem? Zo ja kun je dan jouw config.ini bestand hier uploaden want er is dan iets raars mee. Let hierbij wel op dat je de laatste twee velden (Pvoutput apikey en sysid) eerst maskeert want dit zijn geheime sleutels die je niet hier wilt publiceren!

eterpstra commented 2 years ago

Hi,

Ja klopt die zal ik weglaten. Hierbij mijn config:

[general]
# General:enabled_plugins
# Choose which outputs to use
# Possible options: MysqlOutput,PVoutputOutput,ConsoleOutput,CSVOutput,InfoOutput,RawMessageOutput
enabled_plugins = ConsoleOutput, InfoOutput

[inverter]
# Serial number of your Omnik inverter
serial = 60242xxx

#log temperature of inverter for pvoutput
use_temperature = true

# Note: domain name is required for localIP because otherwise the listener may bind
# to the localhost interface instead of the public interface
[UDPListener]
localIP     = 192.168.1.125
localPort   = 20001

[mysql]
# These settings are only required if you use the MysqlOutput plugin
host = 127.0.0.1
user =
pass =
database =

[csv]
disable_header = false

[pvout]
# These account settings can be found at http://pvoutput.org/account.jsp
apikey = 8xxxxxx
sysid  = 32xxx
mark0100 commented 2 years ago

Het serial id van je inverter zou een string moeten zijn die begint met 'NLD'. Kun je dit nog eens kontroleren in de configuratie van je omvormer of je wel het juiste serial id hebt?

eterpstra commented 2 years ago

Hmmm ik dacht dat het gewoon het serienummer was wat ik uit het display heb uitgelezen. Hij heeft nu geen DC spanning meer dan zal ik dat morgen moeten bekijken.

mark0100 commented 2 years ago

Volgens mij heb je nu het serial id van de wifi module van de omvormer in config.ini staan. Laat maar weten als het morgen nog niet werkt.

eterpstra commented 2 years ago

Nee het gaat hier om het serienummer van de omvormer zelf. Ik heb ook het python script van wouter getest, en daar krijg ik hem wel mee uitgelezen (in zijn geval is het config.cfg). Echter krijg ik pvoutput daar niet voor elkaar.

mark0100 commented 2 years ago

Als je zeker weet dat dit het goede serial id van je omvormer is dan kun je ook nog proberen om enkele of dubbele quotes om de string heen te zetten.

eterpstra commented 2 years ago

Maar is het nodig dat NLD ervoor komt te staan?

Als ik het script van Wouter doe, dan krijg ik met Livestats.py de volgende resultaten:


/Omnik-Data-Logger# python LiveStats.py
2022-10-03 10:45:17,692 DEBUG Importing output plugin ConsoleOutput
2022-10-03 10:45:17,694 INFO connecting to 192.168.1.125 port 8899
2022-10-03 10:45:18,140 INFO ID: NLDN4020133S1052
2022-10-03 10:45:18,140 DEBUG Run pluginConsoleOutput
ID: NLDN4020133S1052
E Today:  3.01   Total: 34474.0
H Total: 39218   Temp:  34.5
PV1   V: 183.8   I:  4.2
PV2   V: 290.4   I:  4.8
PV3   V:    -1   I:   -1
L1    P:  1928   V: 241.1   I:  7.9   F: 50.08
L2    P:    -1   V:    -1   I:   -1   F:    -1
L3    P:    -1   V:    -1   I:   -1   F:    -1

NLDN4020133S1052 dus ook gebruikt en in config.ini gezet, maar dit werkt ook niet (zelfde melding)

mark0100 commented 2 years ago

Heb je geprobeert om quotes er omheen te zetten?

Zo ja en als dit niet heeft geholpen, kun je dan eens kijken of je config.ini wel een echt 'plat' tekstbestand is.

eterpstra commented 2 years ago

Hoe kan ik dat controleren? (heb niet zo heel veel kennis van scripts namelijk)

eterpstra commented 2 years ago

Kan hem ook even helemaal verwijderen en opnieuw proberen

mark0100 commented 2 years ago

Je kunt op de command-line in de directory van omniklogger het volgende commando geven: file config.ini

Als het goed is krijg je dan als resultaat: "config.ini: ASCII text"

Welk programma gebruik je om config.ini te bewerken?

eterpstra commented 2 years ago

Ja dat klopt. Ik krijg hetzelfde terug. Ik gebruik nano.

Hmm ik zie nu inderdaad dat het serienummer wat begint met 602 het serienummer is van wifi stick. Ik zie het echter ook op display staan.

Kan ik het serienummer dan aan de zijkant vinden samen met NLD? Is dit een langere string?

mark0100 commented 2 years ago

Het serienummer van je omvormer kun je in de online configuratie van je omvormer vinden. Maar in het stukje logging van Wouter's script dat je hier hebt gepost zie ik dat jouw serienummer is: NLDN4020133S1052

eterpstra commented 2 years ago

Helaas maar dat lukt ook niet. Ook niet met aanhalingstekens of andere quotes

mark0100 commented 2 years ago

Wat is het resultaat als je het volgende commando uitvoert: file --mime-encoding ./config.ini

En welke versie van python gebruik je? Dit kun je eenvoudig zien door het volgende commando uit te voeren: python --version

eterpstra commented 2 years ago
/omniklogger$ file --mime-encoding ./config.ini
./config.ini: us-ascii
 python --version
Python 2.7.16
mark0100 commented 2 years ago

Ah dat verklaard het probleem. Je python versie is te oud. Je moet minimaal versie 3.6 installeren om omniklogger te gebruiken.

Zie de installatie instructies op de hoofdpagina van omniklogger.

eterpstra commented 2 years ago
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd
De statusinformatie wordt gelezen... Klaar
python3 is reeds de nieuwste versie (3.7.3-1).
python3 staat ingesteld op handmatig geïnstalleerd.
0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd 

Kan ik om 1 of andere manier 2.6 naar 3.7 omschakelen?

mark0100 commented 2 years ago

Zie hiervoor de Debian/Python documentatie. Ik gebruik zelf geen Debian dus daar kan ik je niet echt bij helpen. Maar wat je zou kunnen proberen is omniklogger te starten met: python3 omniklogger.py

eterpstra commented 2 years ago

Ja dat lijkt nu gelukt! Ik zie geen foutmeldingen meer:


root@edijkstra:/home/edijkstra/omniklogger# python3 omniklogger.py
root@edijkstra:/home/edijkstra/omniklogger#

Log:

2022-10-05 09:01:09,698 INFO Importing output plugin: ConsoleOutput
2022-10-05 09:01:09,700 INFO Importing output plugin: PVoutputOutput
2022-10-05 09:01:09,842 INFO Waiting 10 seconds before startup...
2022-10-05 09:01:19,853 ERROR Create/bind Socket Error: [Errno 99] Cannot assign requested address
mark0100 commented 2 years ago

Aan de logging te zien heb je nu nog een probleem met je domain name/ip adres en/of port nummer wat is geconfigureerd in config.ini. Misschien is deze poort al in gebruik. Probeer eens een ander poortnummer.