Pierwszy commit - inicjalizacja projektu

This commit is contained in:
ms
2026-02-08 17:31:44 +01:00
commit 3fd3951aa8
25 changed files with 8468 additions and 0 deletions

102
energymeter.py Normal file
View File

@@ -0,0 +1,102 @@
#!/usr/bin/env python3
# encoding: utf-8
# ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Copyright (C) 2017 Piotr Murawski
# Niniejszy program jest wolnym oprogramowaniem; mozesz go
# rozprowadzac dalej i/lub modyfikowac na warunkach Powszechnej
# Licencji Publicznej GNU, wydanej przez Fundacje Wolnego
# Oprogramowania - wedlug wersji 3-ciej tej Licencji lub ktorejs
# z pozniejszych wersji.
# Niniejszy program rozpowszechniany jest z nadzieja iz bedzie on
# uzyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyslnej
# gwarancji PRZYDATNOSCI HANDLOWEJ albo PRZYDATNOSCI DO OKRESLONYCH
# ZASTOSOWAN. W celu uzyskania blizszych informacji - Powszechna
# Licencja Publiczna GNU.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# Z pewnoscia wraz z niniejszym programem otrzymales tez egzemplarz
# Powszechnej Licencji Publicznej GNU (GNU General Public License);
# jesli nie - napisz do Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# Powszechna Licencja GNU dostepna jest rowniez na stronie:
# http://www.gnu.org/licenses/licenses.html
# nieoficjalne polskie tlumaczenie na
# http://www.gnu.org.pl
# ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import time
import mbusbase
import mbusclient
from mbusbase import bytestr
energyclient = None
def createClient(portDevice, adres):
tecl = mbusclient.mbclientserial()
tecl.adres = adres
tecl.transportOpen(portDevice, brate=9600)
return tecl
try:
pass
except:
print("ERROR: can't get modbus client to work!")
pass
return None
def readRegs(client, start, cnt):
r03 = mbusbase.request03(client.adres, start, cnt)
bytes=r03.rtu();
client.transportSend(bytes)
reply=client.getReply()
if reply:
if reply.fail:
return None
else:
return reply.vals
return None
def writeRegs(client, addr, regs):
r16 = mbusbase.request16(client.adres,addr,regs)
bytes=r16.rtu();
client.transportSend(bytes)
reply=client.getReply()
if reply:
if reply.fail:
return None
else:
return reply.vals
return None
def testPort(portDevice, adres):
mbcli = createClient(portDevice, adres)
if mbcli!=None:
regs = readRegs(mbcli, 0x40, 1)
mbcli.transportClose()
if regs!=None:
if len(regs)>=1:
return True
return False
def startClient(portDevice, adres):
print("Energy MODBUS: " + portDevice)
mbcli = createClient(portDevice, adres)
if mbcli!=None:
global energyclient
energyclient = mbcli
return mbcli