Wat veranderingen, maar geen progressie
This commit is contained in:
+43
-45
@@ -44,55 +44,53 @@ class Telegram:
|
||||
def getDatumTijd(self):
|
||||
return datetime.datetime.now().strftime('%y%m%d%H%M%SS') # TODO: change 'S' to actual season
|
||||
|
||||
def berekenCrc(self, telegram):
|
||||
bericht = b''.join(telegram)
|
||||
crc = binascii.crc_hqx(bericht, 0x0000)
|
||||
return f'!{crc:04X}\r\n'.encode()
|
||||
def voegCrcToe(self, telegram):
|
||||
bericht = ''.join(telegram)
|
||||
crc = binascii.crc_hqx(bericht.encode('ascii'), 0x0000)
|
||||
return (bericht + f'!{crc}\r\n')
|
||||
|
||||
def maakTelegram(self):
|
||||
return [
|
||||
f'\x00'.encode(),
|
||||
f'{TelegramData.P1_KENMERK.value}\r\n'.encode(),
|
||||
f'\r\n'.encode(),
|
||||
f'{TelegramData.FIRMWARE_VERSIE.value}(50)\r\n'.encode(),
|
||||
f'{TelegramData.DATUM_TIJD.value}({self.getDatumTijd()})\r\n'.encode(),
|
||||
f'{TelegramData.METER_ID.value}({self.meterId})\r\n'.encode(),
|
||||
f'{TelegramData.TOTAAL_VERBRUIK_TARIEF1.value}({self.totaalVerbruikTarief1})\r\n'.encode(),
|
||||
f'{TelegramData.TOTAAL_VERBRUIK_TARIEF2.value}({self.totaalVerbruikTarief2})\r\n'.encode(),
|
||||
f'{TelegramData.TOTAAL_TERUGLEVERING_TARIEF1.value}({self.totaalTerugleveringTarief1})\r\n'.encode(),
|
||||
f'{TelegramData.TOTAAL_TERUGLEVERING_TARIEF2.value}({self.totaalTerugleveringTarief2})\r\n'.encode(),
|
||||
f'{TelegramData.TARIEF_INDICATOR.value}({self.tariefIndicator})\r\n'.encode(),
|
||||
f'{TelegramData.ACTUEEL_VERBRUIK.value}({self.actueelVerbruik})\r\n'.encode(),
|
||||
f'{TelegramData.ACTUEELE_TERUGLEVERING.value}({self.actueleTeruglevering})\r\n'.encode(),
|
||||
f'{TelegramData.STATUSCODE2.value}({self.statuscode2})\r\n'.encode(),
|
||||
f'{TelegramData.STATUSCODE1.value}({self.statuscode1})\r\n'.encode(),
|
||||
f'{TelegramData.ONDERBREKINGSLOG.value}({self.onderbrekingslog})\r\n'.encode(),
|
||||
f'{TelegramData.TELLER_ELEKTRICITEITSMETERSTAND1.value}({self.tellerElektriciteitsMeterstand1})\r\n'.encode(),
|
||||
f'{TelegramData.TELLER_ELEKTRICITEITSMETERSTAND2.value}({self.tellerElektriciteitsMeterstand2})\r\n'.encode(),
|
||||
f'{TelegramData.TELLER_ELEKTRICITEITSMETERSTAND3.value}({self.tellerElektriciteitsMeterstand3})\r\n'.encode(),
|
||||
f'{TelegramData.SPANNINGSONDERBREKINGEN_fASE1.value}({self.spanningsOnderbrekingenFase1})\r\n'.encode(),
|
||||
f'{TelegramData.SPANNINGSONDERBREKINGEN_fASE2.value}({self.spanningsOnderbrekingenFase2})\r\n'.encode(),
|
||||
f'{TelegramData.SPANNINGSONDERBREKINGEN_fASE3.value}({self.spanningsOnderbrekingenFase3})\r\n'.encode(),
|
||||
f'{TelegramData.BEPAALDE_EVENTS.value}({self.bepaaldeEvents})\r\n'.encode(),
|
||||
f'{TelegramData.SPANNING_FASE1.value}({self.spanningFase1})\r\n'.encode(),
|
||||
f'{TelegramData.SPANNING_FASE2.value}({self.spanningFase2})\r\n'.encode(),
|
||||
f'{TelegramData.SPANNING_FASE3.value}({self.spanningFase3})\r\n'.encode(),
|
||||
f'{TelegramData.STROOM_FASE1.value}({self.stroomFase1})\r\n'.encode(),
|
||||
f'{TelegramData.STROOM_FASE2.value}({self.stroomFase2})\r\n'.encode(),
|
||||
f'{TelegramData.STROOM_FASE3.value}({self.stroomFase3})\r\n'.encode(),
|
||||
f'{TelegramData.VERMOGEN_FASE_1.value}({self.vermogenFase1})\r\n'.encode(),
|
||||
f'{TelegramData.VERMOGEN_FASE_2.value}({self.vermogenFase2})\r\n'.encode(),
|
||||
f'{TelegramData.VERMOGEN_FASE_3.value}({self.vermogenFase3})\r\n'.encode(),
|
||||
f'{TelegramData.TERUGLEVERING_FASE1.value}({self.terugleveringFase1})\r\n'.encode(),
|
||||
f'{TelegramData.TERUGLEVERING_FASE2.value}({self.terugleveringFase2})\r\n'.encode(),
|
||||
f'{TelegramData.TERUGLEVERING_FASE3.value}({self.terugleveringFase3})\r\n'.encode(),
|
||||
f'{TelegramData.GASMETER_TELEGRAM.value}({self.gasmeterTelegram})\r\n'.encode(),
|
||||
f'{TelegramData.GASMETER_ID.value}({self.gasmeterId})\r\n'.encode(),
|
||||
f'{TelegramData.GASVERBRUIK.value}({self.gasverbruik})\r\n'.encode(),
|
||||
f'{TelegramData.P1_KENMERK.value}\r\n',
|
||||
f'\r\n',
|
||||
f'{TelegramData.FIRMWARE_VERSIE.value}(50)\r\n',
|
||||
f'{TelegramData.DATUM_TIJD.value}({self.getDatumTijd()})\r\n',
|
||||
f'{TelegramData.METER_ID.value}({self.meterId})\r\n',
|
||||
f'{TelegramData.TOTAAL_VERBRUIK_TARIEF1.value}({self.totaalVerbruikTarief1})\r\n',
|
||||
f'{TelegramData.TOTAAL_VERBRUIK_TARIEF2.value}({self.totaalVerbruikTarief2})\r\n',
|
||||
f'{TelegramData.TOTAAL_TERUGLEVERING_TARIEF1.value}({self.totaalTerugleveringTarief1})\r\n',
|
||||
f'{TelegramData.TOTAAL_TERUGLEVERING_TARIEF2.value}({self.totaalTerugleveringTarief2})\r\n',
|
||||
f'{TelegramData.TARIEF_INDICATOR.value}({self.tariefIndicator})\r\n',
|
||||
f'{TelegramData.ACTUEEL_VERBRUIK.value}({self.actueelVerbruik})\r\n',
|
||||
f'{TelegramData.ACTUEELE_TERUGLEVERING.value}({self.actueleTeruglevering})\r\n',
|
||||
f'{TelegramData.STATUSCODE2.value}({self.statuscode2})\r\n',
|
||||
f'{TelegramData.STATUSCODE1.value}({self.statuscode1})\r\n',
|
||||
f'{TelegramData.ONDERBREKINGSLOG.value}({self.onderbrekingslog})\r\n',
|
||||
f'{TelegramData.TELLER_ELEKTRICITEITSMETERSTAND1.value}({self.tellerElektriciteitsMeterstand1})\r\n',
|
||||
f'{TelegramData.TELLER_ELEKTRICITEITSMETERSTAND2.value}({self.tellerElektriciteitsMeterstand2})\r\n',
|
||||
f'{TelegramData.TELLER_ELEKTRICITEITSMETERSTAND3.value}({self.tellerElektriciteitsMeterstand3})\r\n',
|
||||
f'{TelegramData.SPANNINGSONDERBREKINGEN_fASE1.value}({self.spanningsOnderbrekingenFase1})\r\n',
|
||||
f'{TelegramData.SPANNINGSONDERBREKINGEN_fASE2.value}({self.spanningsOnderbrekingenFase2})\r\n',
|
||||
f'{TelegramData.SPANNINGSONDERBREKINGEN_fASE3.value}({self.spanningsOnderbrekingenFase3})\r\n',
|
||||
f'{TelegramData.BEPAALDE_EVENTS.value}({self.bepaaldeEvents})\r\n',
|
||||
f'{TelegramData.SPANNING_FASE1.value}({self.spanningFase1})\r\n',
|
||||
f'{TelegramData.SPANNING_FASE2.value}({self.spanningFase2})\r\n',
|
||||
f'{TelegramData.SPANNING_FASE3.value}({self.spanningFase3})\r\n',
|
||||
f'{TelegramData.STROOM_FASE1.value}({self.stroomFase1})\r\n',
|
||||
f'{TelegramData.STROOM_FASE2.value}({self.stroomFase2})\r\n',
|
||||
f'{TelegramData.STROOM_FASE3.value}({self.stroomFase3})\r\n',
|
||||
f'{TelegramData.VERMOGEN_FASE_1.value}({self.vermogenFase1})\r\n',
|
||||
f'{TelegramData.VERMOGEN_FASE_2.value}({self.vermogenFase2})\r\n',
|
||||
f'{TelegramData.VERMOGEN_FASE_3.value}({self.vermogenFase3})\r\n',
|
||||
f'{TelegramData.TERUGLEVERING_FASE1.value}({self.terugleveringFase1})\r\n',
|
||||
f'{TelegramData.TERUGLEVERING_FASE2.value}({self.terugleveringFase2})\r\n',
|
||||
f'{TelegramData.TERUGLEVERING_FASE3.value}({self.terugleveringFase3})\r\n',
|
||||
f'{TelegramData.GASMETER_TELEGRAM.value}({self.gasmeterTelegram})\r\n',
|
||||
f'{TelegramData.GASMETER_ID.value}({self.gasmeterId})\r\n',
|
||||
f'{TelegramData.GASVERBRUIK.value}({self.gasverbruik})\r\n',
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
telegram = self.maakTelegram()
|
||||
crc = self.berekenCrc(telegram)
|
||||
telegram.append(crc)
|
||||
return telegram
|
||||
volledigeTelegram = self.voegCrcToe(telegram)
|
||||
return volledigeTelegram
|
||||
@@ -2,18 +2,18 @@ from time import sleep
|
||||
|
||||
import serial
|
||||
|
||||
INPUT_PORT = '/dev/ttyUSB1'
|
||||
INPUT_PORT = '/dev/ttyUSB0'
|
||||
OUTPUT_PORT = '/dev/ttyUSB0'
|
||||
|
||||
dataInput = serial.Serial(INPUT_PORT, 115200, timeout=1)
|
||||
dataOutput = serial.Serial(OUTPUT_PORT, 115200, timeout=1)
|
||||
serialInput = serial.Serial(INPUT_PORT, 115200, timeout=1)
|
||||
serialOutput = serial.Serial(OUTPUT_PORT, 115200, timeout=1)
|
||||
|
||||
def lees():
|
||||
line = dataInput.readline()
|
||||
dataOutput.write(line)
|
||||
while True:
|
||||
line = serialInput.readline()
|
||||
print(line)
|
||||
|
||||
def verzend(telegram):
|
||||
for line in telegram:
|
||||
print(line)
|
||||
dataOutput.write(line)
|
||||
sleep(1)
|
||||
serialOutput.write(telegram.__str__().encode('ascii'))
|
||||
print(telegram)
|
||||
sleep(1)
|
||||
Reference in New Issue
Block a user