add untracked files
This commit is contained in:
109
dsmr/dump.py
Normal file
109
dsmr/dump.py
Normal file
@@ -0,0 +1,109 @@
|
||||
import requests
|
||||
import json
|
||||
import django
|
||||
|
||||
from datetime import datetime
|
||||
from django.dispatch import receiver
|
||||
|
||||
|
||||
from django.dispatch import receiver
|
||||
from django.core import serializers
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
from dsmr_datalogger.models.reading import DsmrReading
|
||||
from dsmr_pvoutput.models.settings import PVOutputAddStatusSettings
|
||||
from dsmr_pvoutput.signals import pvoutput_upload
|
||||
|
||||
|
||||
@receiver(django.db.models.signals.post_save, sender=DsmrReading)
|
||||
def handle_dsmr_reading(sender, instance, created, raw, **kwargs):
|
||||
if not created or raw:
|
||||
return
|
||||
|
||||
instance.timestamp = timezone.localtime(instance.timestamp)
|
||||
|
||||
if instance.extra_device_timestamp:
|
||||
instance.extra_device_timestamp = timezone.localtime(instance.extra_device_timestamp)
|
||||
|
||||
serialized = json.loads(serializers.serialize('json', [instance]))
|
||||
# {
|
||||
# "timestamp": "2022-07-19T14:11:07.215912",
|
||||
# "serialized": [
|
||||
# {
|
||||
# "model": "dsmr_datalogger.dsmrreading",
|
||||
# "pk": 2577432,
|
||||
# "fields": {
|
||||
# "processed": false,
|
||||
# "timestamp": "2022-07-19T14:11:11+02:00",
|
||||
# "electricity_delivered_1": "5689.229",
|
||||
# "electricity_returned_1": "366.707",
|
||||
# "electricity_delivered_2": "5664.327",
|
||||
# "electricity_returned_2": "688.836",
|
||||
# "electricity_currently_delivered": "0.000",
|
||||
# "electricity_currently_returned": "0.360",
|
||||
# "phase_currently_delivered_l1": "0.000",
|
||||
# "phase_currently_delivered_l2": null,
|
||||
# "phase_currently_delivered_l3": null,
|
||||
# "extra_device_timestamp": "2022-07-19T14:00:00+02:00",
|
||||
# "extra_device_delivered": "3500.427",
|
||||
# "phase_currently_returned_l1": "0.360",
|
||||
# "phase_currently_returned_l2": null,
|
||||
# "phase_currently_returned_l3": null,
|
||||
# "phase_voltage_l1": null,
|
||||
# "phase_voltage_l2": null,
|
||||
# "phase_voltage_l3": null,
|
||||
# "phase_power_current_l1": "2",
|
||||
# "phase_power_current_l2": null,
|
||||
# "phase_power_current_l3": null
|
||||
# }
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
|
||||
timestamp = datetime.today().isoformat()
|
||||
data = {
|
||||
'timestamp': timestamp,
|
||||
'model': serialized[0]['model'],
|
||||
'pk': serialized[0]['pk'],
|
||||
'fields': serialized[0]['fields']
|
||||
}
|
||||
path = f'/dump/{timestamp}-reading.json'
|
||||
json.dump(data, open(path, 'w'))
|
||||
|
||||
# json_string = json.dumps(serialized[0]['fields'])
|
||||
# try:
|
||||
# requests.post(
|
||||
# 'https://YOUR-DSMR-HOST/api/endpoint/',
|
||||
# data=json_string,
|
||||
# # A low timeout prevents DSMR-reader from hanging, when the remote server is unreachable.
|
||||
# timeout=5
|
||||
# )
|
||||
# except Exception as error:
|
||||
# print('forward_json_dsmrreading_to_api:', error)
|
||||
|
||||
|
||||
@receiver(pvoutput_upload)
|
||||
def handle_pvoutput(**kwargs):
|
||||
# print(' - Uploading the same data to PVOutput using plugin: {}'.format(kwargs['data']))
|
||||
# - Uploading the same data to PVOutput using plugin: {'d': '20220719', 't': '14:15', 'v3': 3817, 'v4': -366, 'n': 1}
|
||||
|
||||
timestamp = datetime.today().isoformat()
|
||||
data = {
|
||||
'timestamp': timestamp,
|
||||
'data': kwargs['data']
|
||||
}
|
||||
path = f'/dump/{timestamp}-pvoutput.json'
|
||||
json.dump(data, open(path, 'w'))
|
||||
|
||||
# response = requests.post(
|
||||
# PVOutputAddStatusSettings.API_URL,
|
||||
# headers={
|
||||
# 'X-Pvoutput-Apikey': 'XXXXX',
|
||||
# 'X-Pvoutput-SystemId': 'YYYYY',
|
||||
# },
|
||||
# data=kwargs['data']
|
||||
# )
|
||||
#
|
||||
# if response.status_code != 200:
|
||||
# print(' [!] PVOutput upload failed (HTTP {}): {}'.format(response.status_code, response.text))
|
||||
Reference in New Issue
Block a user