extarct s3 data with decompression
This commit is contained in:
parent
933f895a67
commit
5813ecfee3
|
@ -1,18 +1,16 @@
|
||||||
#!/usr/bin/python3 -u
|
#!/usr/bin/python2 -u
|
||||||
# coding=utf-8
|
# coding=utf-8
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
import socket
|
import socket
|
||||||
import sys
|
import sys
|
||||||
import typing
|
import gobject
|
||||||
|
|
||||||
from gi.repository import GLib as glib
|
|
||||||
import signals
|
import signals
|
||||||
import config as cfg
|
import config as cfg
|
||||||
|
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
from dbus.mainloop.glib import DBusGMainLoop
|
||||||
from pymodbus.client import ModbusSerialClient as Modbus
|
from pymodbus.client.sync import ModbusSerialClient as Modbus
|
||||||
from pymodbus.exceptions import ModbusException, ModbusIOException
|
from pymodbus.exceptions import ModbusException, ModbusIOException
|
||||||
from pymodbus.other_message import ReportSlaveIdRequest
|
from pymodbus.other_message import ReportSlaveIdRequest
|
||||||
from pymodbus.pdu import ExceptionResponse
|
from pymodbus.pdu import ExceptionResponse
|
||||||
|
@ -25,10 +23,8 @@ from python_libs.ie_dbus.dbus_service import DBusService
|
||||||
if False:
|
if False:
|
||||||
from typing import Callable, List, Iterable, NoReturn
|
from typing import Callable, List, Iterable, NoReturn
|
||||||
|
|
||||||
RESET_REGISTER = 0x2087
|
|
||||||
SETTINGS_SERVICE_PREFIX = 'com.victronenergy.settings'
|
|
||||||
INVERTER_SERVICE_PREFIX = 'com.victronenergy.vebus.'
|
|
||||||
|
|
||||||
|
RESET_REGISTER = 0x2087
|
||||||
|
|
||||||
|
|
||||||
def init_modbus(tty):
|
def init_modbus(tty):
|
||||||
|
@ -186,7 +182,6 @@ def publish_aggregates(service, signals, battery_statuses):
|
||||||
continue
|
continue
|
||||||
values = [s.get_value(battery_status) for battery_status in battery_statuses]
|
values = [s.get_value(battery_status) for battery_status in battery_statuses]
|
||||||
value = s.aggregate(values)
|
value = s.aggregate(values)
|
||||||
|
|
||||||
service.own_properties.set(s.dbus_path, value, s.unit)
|
service.own_properties.set(s.dbus_path, value, s.unit)
|
||||||
|
|
||||||
|
|
||||||
|
@ -278,14 +273,6 @@ def create_update_task(modbus, service, batteries):
|
||||||
|
|
||||||
logging.debug('starting update cycle')
|
logging.debug('starting update cycle')
|
||||||
|
|
||||||
# Checking if we have excess power and if so charge batteries more
|
|
||||||
|
|
||||||
target = service.remote_properties.get(get_service(SETTINGS_SERVICE_PREFIX) + '/Settings/CGwacs/AcPowerSetPoint').value or 0
|
|
||||||
actual = service.remote_properties.get(get_service(INVERTER_SERVICE_PREFIX) + '/Ac/Out/P').value or 0
|
|
||||||
|
|
||||||
if actual>target:
|
|
||||||
service.own_properties.set('/Info/MaxChargeCurrent').value = min([battery.i_max for battery in batteries])
|
|
||||||
|
|
||||||
if service.own_properties.get('/ResetBatteries').value == 1:
|
if service.own_properties.get('/ResetBatteries').value == 1:
|
||||||
reset_batteries(modbus, batteries)
|
reset_batteries(modbus, batteries)
|
||||||
|
|
||||||
|
@ -310,7 +297,6 @@ def create_watchdog_task(main_loop):
|
||||||
The watchdog kills the main loop if the alive flag is not periodically reset by the update task.
|
The watchdog kills the main loop if the alive flag is not periodically reset by the update task.
|
||||||
Who watches the watchdog?
|
Who watches the watchdog?
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def watchdog_task():
|
def watchdog_task():
|
||||||
# type: () -> bool
|
# type: () -> bool
|
||||||
|
|
||||||
|
@ -327,13 +313,6 @@ def create_watchdog_task(main_loop):
|
||||||
|
|
||||||
return watchdog_task
|
return watchdog_task
|
||||||
|
|
||||||
def get_service(self, prefix: str) -> Optional[unicode]:
|
|
||||||
service = next((s for s in self.available_services if s.startswith(prefix)), None)
|
|
||||||
if service is None:
|
|
||||||
raise Exception('no service matching ' + prefix + '* available')
|
|
||||||
|
|
||||||
return service
|
|
||||||
|
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
# type: (List[str]) -> ()
|
# type: (List[str]) -> ()
|
||||||
|
@ -353,7 +332,7 @@ def main(argv):
|
||||||
|
|
||||||
service.own_properties.set('/ResetBatteries', value=False, writable=True) # initial value = False
|
service.own_properties.set('/ResetBatteries', value=False, writable=True) # initial value = False
|
||||||
|
|
||||||
main_loop = GLib.MainLoop()
|
main_loop = gobject.MainLoop()
|
||||||
|
|
||||||
service_signals = signals.init_service_signals(batteries)
|
service_signals = signals.init_service_signals(batteries)
|
||||||
publish_service_signals(service, service_signals)
|
publish_service_signals(service, service_signals)
|
||||||
|
@ -362,8 +341,8 @@ def main(argv):
|
||||||
update_task() # run it right away, so that all props are initialized before anyone can ask
|
update_task() # run it right away, so that all props are initialized before anyone can ask
|
||||||
watchdog_task = create_watchdog_task(main_loop)
|
watchdog_task = create_watchdog_task(main_loop)
|
||||||
|
|
||||||
GLib.timeout_add(cfg.UPDATE_INTERVAL * 2, watchdog_task, priority = GLib.PRIORITY_LOW) # add watchdog first
|
gobject.timeout_add(cfg.UPDATE_INTERVAL * 2, watchdog_task, priority = gobject.PRIORITY_LOW) # add watchdog first
|
||||||
GLib.timeout_add(cfg.UPDATE_INTERVAL, update_task, priority = GLib.PRIORITY_LOW) # call update once every update_interval
|
gobject.timeout_add(cfg.UPDATE_INTERVAL, update_task, priority = gobject.PRIORITY_LOW) # call update once every update_interval
|
||||||
|
|
||||||
logging.info('starting gobject.MainLoop')
|
logging.info('starting gobject.MainLoop')
|
||||||
main_loop.run()
|
main_loop.run()
|
||||||
|
|
Loading…
Reference in New Issue