Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
Moderator: leecollings
-
- Posts: 39
- Joined: Wednesday 31 December 2014 12:47
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
Hi,
I want to add support for a D0 USB Optical the Electric meter.
But I want to use the "S0 Meter USB" and the "P1 Smart Meter USB" as a sort of guide line.
I with files can I find the information for that?
Jos
I want to add support for a D0 USB Optical the Electric meter.
But I want to use the "S0 Meter USB" and the "P1 Smart Meter USB" as a sort of guide line.
I with files can I find the information for that?
Jos
Raspberry Pi (3x)
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
-
- Posts: 79
- Joined: Tuesday 02 December 2014 22:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with o
I'm interested as well!
-
- Posts: 39
- Joined: Wednesday 31 December 2014 12:47
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with o
I have created a python script, that is reading the power meter. And send the informatie to dummy meter with json.
The script isn't perfect yet, I'm testing it
The script isn't perfect yet, I'm testing it
Raspberry Pi (3x)
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
-
- Posts: 79
- Joined: Tuesday 02 December 2014 22:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with o
That’s something I want to do as well. I found out that I have to send a command to my meter ( /?!) before its sending information back.
I wish I had more knowledge of scripting but unfortunately not.. (yet)
I’ve tested my optical probe (iec-62056-21) on a windows platform and it work as it suppose to.
Is it technically possible to send commands to my meter using a python script?
And do you want to share your script..? so can play around to get it working?
I wish I had more knowledge of scripting but unfortunately not.. (yet)
I’ve tested my optical probe (iec-62056-21) on a windows platform and it work as it suppose to.
Is it technically possible to send commands to my meter using a python script?
And do you want to share your script..? so can play around to get it working?
-
- Posts: 39
- Joined: Wednesday 31 December 2014 12:47
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with o
Yes,
I send the information to Domoticz with
http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=86&svalue='+power_used_con_str+';'+power_used_num.
Here is my code.
I know the script can be much beter. And I have to learn a lot.
But that is just the fun of it
I send the information to Domoticz with
http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=86&svalue='+power_used_con_str+';'+power_used_num.
Here is my code.
I know the script can be much beter. And I have to learn a lot.
But that is just the fun of it
Code: Select all
#
# Landis & Gyr uitlezen
# Release 4.0/
# Author J. Jeurissen
# Orgineel van J. van der Linde
# Copyright (c) 2012/2013 J. Jeurissen & J. van der Linde
# Phyton 3
version = "v4.0 Landis & Gyr ttyAMA0"
import sys
import serial
import datetime
import time
import csv
import locale
import os
import urllib
import urllib.request
import json
import base64
time.sleep(5)
#########################################
#Main program
#########################################
# Settings for the domoticz server
domoticzserver="192.168.10.33:8080"
domoticzusername = ""
domoticzpassword = ""
# Read previous value power_used_num
power_used_prev = open("/root/elec/value.txt").read()
#print (power_used_prev)
power_delivered_prev = open("/root/elec/sun.txt").read()
#Set initial COM port config
ser = serial.Serial()
ser.baudrate = 300
ser.bytesize=serial.SEVENBITS
ser.parity=serial.PARITY_EVEN
ser.stopbits=serial.STOPBITS_ONE
ser.xonxoff=0
ser.rtscts=0
ser.timeout=20
ser.port="/dev/ttyUSB0"
#Show startup arguments
port="/dev/ttyUSB0"
#print ("Open COM port at initial baudrate")
#Open COM port
ser.open()
print ("------------------")
#Initialize
#print ("Send initialize")
ir_command='/?!\x0D\x0A'
ser.write(ir_command.encode('utf-8'))
ser.flush()
#Wait for initialize confirmation
#/[XXX] [Z] MCC [CR] [LF] /KAM0MCC[CR][LF]
# XXX is manufacturer string
ir_buffer = ''
while '/' not in ir_buffer:
ir_buffer = str(ser.readline(), "utf-8")
if '/?!\x0D\x0A' in ir_buffer:
ir_buffer = str(ser.readline(), "utf-8")
#print ("Initialize complete.")
ir_lines = ir_buffer.strip().split('\r\n')
#print (ir_lines[0])
ir_speed = ir_buffer[4:5]
if ir_speed == '0': ir_baud = "300"
else: ir_baud = "unknown"
#print ("Manufacturer FLAG ID: %s" % ir_buffer[1:4])
ir_speed = '0'
ir_baud = "300"
#Acknowledge to 300baud
#[ACK]0[Z][Y] [CR] [LF]
# Z is the baudrate, take the same value as B in the previous answer
# Y can be 0 or 1. Value 0 sets the actual meterreading mode, Value 1 sets the programming mode
#
ir_command='\x060'+ir_speed+'0\x0D\x0A'
ser.write(ir_command.encode('utf-8'))
ser.flush()
#Wait for data
ir_buffer = ''
ir_lines_index = 0
ETX = False
#print(ir_lines[ir_lines_index])
while not ETX:
ir_buffer = str(ser.readline(), "utf-8")
if '\x060' in ir_buffer:
ir_buffer = str(ser.readline(), "utf-8")
if '!' in ir_buffer:
ETX = True
ir_lines.extend(ir_buffer.strip().split('\r\n'))
ir_lines_index = ir_lines_index + 1
#print(ir_lines[ir_lines_index])
#print ("Datatransfer complete.")
#print ("Number of received elements: %d" % len(ir_lines))
#print ("Array of received elements: %s" % ir_lines)
#Close port and show status
ser.close()
#################################################################
# Process data Only need Array 5 and 6 #
#################################################################
power_timestamp=datetime.datetime.strftime(datetime.datetime.today(), "%Y-%m-%d %H:%M:%S" )
power_data = ir_lines
power_used = power_data[5]
power_delivered = power_data[6]
#################################################################
# Remove 1.8.2 /2.8.2 . *kWh) #
#################################################################
power_used_num = power_used
power_used_num = power_used_num.replace('*kWh','0')
power_used_num = power_used_num.replace('1.8.2','')
power_used_num = power_used_num.replace('(','')
power_used_num = power_used_num.replace(')','')
power_used_num = power_used_num.replace('.','')
print (power_used_num)
power_delivered_num = power_delivered
power_delivered_num = power_delivered_num.replace('*kWh','0')
power_delivered_num = power_delivered_num.replace('2.8.2','')
power_delivered_num = power_delivered_num.replace('(','')
power_delivered_num = power_delivered_num.replace(')','')
power_delivered_num = power_delivered_num.replace('.','')
print (power_delivered_num)
print ("Telegram ontvangen op: %s" % power_timestamp)
#################################################################
# calculate power consumption 60/5 = 12
#################################################################
power_used_con = (int(power_used_num))-(int(power_used_prev))
power_used_con_str = str (power_used_con*12)
print (power_used_con_str)
power_delivered_con = (int(power_delivered_num))-(int(power_delivered_prev))
power_delivered_con_str = str (power_delivered_con*12)
print (power_delivered_con_str)
#################################################################
# Store value power_used_num and power_delivered_num
# in to file
#################################################################
with open("/root/elec/value.txt", "w") as fh:
fh.write(power_used_num)
with open("/root/elec/sun.txt", "w") as fh:
fh.write(power_delivered_num)
#################################################################
# Send to Domoticz
#################################################################
domoticzurl1 = 'http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=86&svalue='+power_used_con_str+';'+power_used_num
domoticzurl2 = 'http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=87&svalue='+power_delivered_con_str+';'+power_delivered_num
domoticzurl3 = 'http://192.168.10.30/json.htm?type=command¶m=udevice&idx=6&svalue='+power_used_num
domoticzurl4 = 'http://192.168.10.30/json.htm?type=command¶m=udevice&idx=87&svalue='+power_delivered_num
# Domoticz prod
req = urllib.request.urlopen(domoticzurl1)
html1 = req.read()
print (html1)
req = urllib.request.urlopen(domoticzurl2)
html2 = req.read()
print (html2)
# Domoticz Dev
#req = urllib.request.urlopen(domoticzurl3)
#html1 = req.read()
#print (html3)
#req = urllib.request.urlopen(domoticzurl4)
#html2 = req.read()
#print (html4)
Raspberry Pi (3x)
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
-
- Posts: 79
- Joined: Tuesday 02 December 2014 22:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with o
Thanks a lot!
I will spend some time to understand the python language.. and give it a try.
First I need to celebrate “Carnaval” if I start studying before, for sure everything I’ve learned will be gone because of all the beers…
I will spend some time to understand the python language.. and give it a try.
First I need to celebrate “Carnaval” if I start studying before, for sure everything I’ve learned will be gone because of all the beers…
-
- Posts: 1
- Joined: Tuesday 10 March 2015 10:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with o
Kun je met dit script ook de software van de meter wijzigen ?
-
- Posts: 79
- Joined: Tuesday 02 December 2014 22:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with o
I don't think you can change the software from the supplier.. But why you want to change it anyway?
-
- Posts: 79
- Joined: Tuesday 02 December 2014 22:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
Hi Jossie67,jossie67 wrote:Yes,
I send the information to Domoticz with
http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=86&svalue='+power_used_con_str+';'+power_used_num.
Here is my code.
I know the script can be much beter. And I have to learn a lot.
But that is just the fun of it
Code: Select all
# # Landis & Gyr uitlezen # Release 4.0/ # Author J. Jeurissen # Orgineel van J. van der Linde # Copyright (c) 2012/2013 J. Jeurissen & J. van der Linde # Phyton 3 version = "v4.0 Landis & Gyr ttyAMA0" import sys import serial import datetime import time import csv import locale import os import urllib import urllib.request import json import base64 time.sleep(5) ######################################### #Main program ######################################### # Settings for the domoticz server domoticzserver="192.168.10.33:8080" domoticzusername = "" domoticzpassword = "" # Read previous value power_used_num power_used_prev = open("/root/elec/value.txt").read() #print (power_used_prev) power_delivered_prev = open("/root/elec/sun.txt").read() #Set initial COM port config ser = serial.Serial() ser.baudrate = 300 ser.bytesize=serial.SEVENBITS ser.parity=serial.PARITY_EVEN ser.stopbits=serial.STOPBITS_ONE ser.xonxoff=0 ser.rtscts=0 ser.timeout=20 ser.port="/dev/ttyUSB0" #Show startup arguments port="/dev/ttyUSB0" #print ("Open COM port at initial baudrate") #Open COM port ser.open() print ("------------------") #Initialize #print ("Send initialize") ir_command='/?!\x0D\x0A' ser.write(ir_command.encode('utf-8')) ser.flush() #Wait for initialize confirmation #/[XXX] [Z] MCC [CR] [LF] /KAM0MCC[CR][LF] # XXX is manufacturer string ir_buffer = '' while '/' not in ir_buffer: ir_buffer = str(ser.readline(), "utf-8") if '/?!\x0D\x0A' in ir_buffer: ir_buffer = str(ser.readline(), "utf-8") #print ("Initialize complete.") ir_lines = ir_buffer.strip().split('\r\n') #print (ir_lines[0]) ir_speed = ir_buffer[4:5] if ir_speed == '0': ir_baud = "300" else: ir_baud = "unknown" #print ("Manufacturer FLAG ID: %s" % ir_buffer[1:4]) ir_speed = '0' ir_baud = "300" #Acknowledge to 300baud #[ACK]0[Z][Y] [CR] [LF] # Z is the baudrate, take the same value as B in the previous answer # Y can be 0 or 1. Value 0 sets the actual meterreading mode, Value 1 sets the programming mode # ir_command='\x060'+ir_speed+'0\x0D\x0A' ser.write(ir_command.encode('utf-8')) ser.flush() #Wait for data ir_buffer = '' ir_lines_index = 0 ETX = False #print(ir_lines[ir_lines_index]) while not ETX: ir_buffer = str(ser.readline(), "utf-8") if '\x060' in ir_buffer: ir_buffer = str(ser.readline(), "utf-8") if '!' in ir_buffer: ETX = True ir_lines.extend(ir_buffer.strip().split('\r\n')) ir_lines_index = ir_lines_index + 1 #print(ir_lines[ir_lines_index]) #print ("Datatransfer complete.") #print ("Number of received elements: %d" % len(ir_lines)) #print ("Array of received elements: %s" % ir_lines) #Close port and show status ser.close() ################################################################# # Process data Only need Array 5 and 6 # ################################################################# power_timestamp=datetime.datetime.strftime(datetime.datetime.today(), "%Y-%m-%d %H:%M:%S" ) power_data = ir_lines power_used = power_data[5] power_delivered = power_data[6] ################################################################# # Remove 1.8.2 /2.8.2 . *kWh) # ################################################################# power_used_num = power_used power_used_num = power_used_num.replace('*kWh','0') power_used_num = power_used_num.replace('1.8.2','') power_used_num = power_used_num.replace('(','') power_used_num = power_used_num.replace(')','') power_used_num = power_used_num.replace('.','') print (power_used_num) power_delivered_num = power_delivered power_delivered_num = power_delivered_num.replace('*kWh','0') power_delivered_num = power_delivered_num.replace('2.8.2','') power_delivered_num = power_delivered_num.replace('(','') power_delivered_num = power_delivered_num.replace(')','') power_delivered_num = power_delivered_num.replace('.','') print (power_delivered_num) print ("Telegram ontvangen op: %s" % power_timestamp) ################################################################# # calculate power consumption 60/5 = 12 ################################################################# power_used_con = (int(power_used_num))-(int(power_used_prev)) power_used_con_str = str (power_used_con*12) print (power_used_con_str) power_delivered_con = (int(power_delivered_num))-(int(power_delivered_prev)) power_delivered_con_str = str (power_delivered_con*12) print (power_delivered_con_str) ################################################################# # Store value power_used_num and power_delivered_num # in to file ################################################################# with open("/root/elec/value.txt", "w") as fh: fh.write(power_used_num) with open("/root/elec/sun.txt", "w") as fh: fh.write(power_delivered_num) ################################################################# # Send to Domoticz ################################################################# domoticzurl1 = 'http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=86&svalue='+power_used_con_str+';'+power_used_num domoticzurl2 = 'http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=87&svalue='+power_delivered_con_str+';'+power_delivered_num domoticzurl3 = 'http://192.168.10.30/json.htm?type=command¶m=udevice&idx=6&svalue='+power_used_num domoticzurl4 = 'http://192.168.10.30/json.htm?type=command¶m=udevice&idx=87&svalue='+power_delivered_num # Domoticz prod req = urllib.request.urlopen(domoticzurl1) html1 = req.read() print (html1) req = urllib.request.urlopen(domoticzurl2) html2 = req.read() print (html2) # Domoticz Dev #req = urllib.request.urlopen(domoticzurl3) #html1 = req.read() #print (html3) #req = urllib.request.urlopen(domoticzurl4) #html2 = req.read() #print (html4)
Have you ever finished the project above?
Still have an optical probe, and played around a little with your script but my programming skills are quite little.
By now the script sends some data to do Dominicz but it's not the same as the actual as on my meter.
-
- Posts: 39
- Joined: Wednesday 31 December 2014 12:47
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
Yes, It working fine for me.geezerrr wrote:
Hi Jossie67,
Have you ever finished the project above?
Still have an optical probe, and played around a little with your script but my programming skills are quite little.
By now the script sends some data to do Dominicz but it's not the same as the actual as on my meter.
Do you have only a Landis en Gyr ZME120Acd? I have also a stadsverwarming with a Opti prob.
I will try to help you
Raspberry Pi (3x)
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
Master Domoticz installed on a Synology
RFXCOM RFXtrx433E USB
RFLink
USB Z-Wave Mini Adapter
Mi-light
QuinLED
Landis+Gyr ZME120ACd
Kamstrup_M401
USB-IR-Schreib-Lesekopf Alecto WS1700
Watermeter with TCRT5000
Kodi
DS18B20
-
- Posts: 79
- Joined: Tuesday 02 December 2014 22:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
I've started this topic some time ago..
viewtopic.php?t=5293
But not much interest until now..
So it's a different meter but the "same" protocol I think.
viewtopic.php?t=5293
But not much interest until now..
So it's a different meter but the "same" protocol I think.
-
- Posts: 3
- Joined: Friday 18 March 2016 22:48
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
I used Jossie67's script to push data from my ISKRA ME162 "bruto productiemeter" (which is only measuring my solar output), read with an optical probe bought at http://www.smartmeterdashboard.nl/webshop , "IR Converter Cable", to my domoticz server running on my Pi. I did this:
This is the code I use:
I used cron to run the script every other minute, from 5:00 am until 22:58 pm:
As a last thing I set to zero the lines with the very high values from the meter_calendar table from domoticz.db, (the values representing the current value), because otherwise these values would dwarf the next measured values and you won't see any detail about them. I stopped the domoticz server, used a sqlite editor to remove the values, saved the database and started domoticz again. Now my measurements start at 0, but I still have a value for the total. My measurements started last Friday night.
Graph:
http://imgur.com/cUTUapF
- Setup - hardware - create new "dummy" device
- Setup - hardware: at the new dummy device: create virtual sensors: Type "Electric: instant + counter"
- Setup - devices: check which Idx the new device has (for instance, 15)
- use ttyUSB1
- use my own temp dir
- use output line 2.8.2 and don't add a zero
- use only the power_delivered variables
- use localhost:8080 as domoticz server
- use idx 15 as my dummy "Electric (instant + counter)" device in the "Send to domoticz" URL
This is the code I use:
Code: Select all
#
# Landis & Gyr uitlezen
# Release 4.0/
# Author J. Jeurissen
# Orgineel van J. van der Linde
# Copyright (c) 2012/2013 J. Jeurissen & J. van der Linde
# Phyton 3
version = "v4.1 Iskra ME 162 ttyUSB1"
import sys
import serial
import datetime
import time
import csv
import locale
import os
import urllib
import urllib.request
import json
import base64
time.sleep(5)
#########################################
#Main program
#########################################
# Settings for the domoticz server
domoticzserver="127.0.0.1:8080"
domoticzusername = ""
domoticzpassword = ""
power_delivered_prev = open("/home/pietje/bpmeter/sun.txt").read()
#Set initial COM port config
ser = serial.Serial()
ser.baudrate = 300
ser.bytesize=serial.SEVENBITS
ser.parity=serial.PARITY_EVEN
ser.stopbits=serial.STOPBITS_ONE
ser.xonxoff=0
ser.rtscts=0
ser.timeout=20
ser.port="/dev/ttyUSB1"
#Show startup arguments
port="/dev/ttyUSB1"
#print ("Open COM port at initial baudrate")
#Open COM port
ser.open()
#print ("------------------")
#Initialize
#print ("Send initialize")
ir_command='/?!\x0D\x0A'
ser.write(ir_command.encode('utf-8'))
ser.flush()
#Wait for initialize confirmation
#/[XXX] [Z] MCC [CR] [LF] /KAM0MCC[CR][LF]
# XXX is manufacturer string
ir_buffer = ''
while '/' not in ir_buffer:
ir_buffer = str(ser.readline(), "utf-8")
if '/?!\x0D\x0A' in ir_buffer:
ir_buffer = str(ser.readline(), "utf-8")
#print ("Initialize complete.")
ir_lines = ir_buffer.strip().split('\r\n')
#print (ir_lines[0])
ir_speed = ir_buffer[4:5]
if ir_speed == '0': ir_baud = "300"
else: ir_baud = "unknown"
#print ("Manufacturer FLAG ID: %s" % ir_buffer[1:4])
ir_speed = '0'
ir_baud = "300"
#Acknowledge to 300baud
#[ACK]0[Z][Y] [CR] [LF]
# Z is the baudrate, take the same value as B in the previous answer
# Y can be 0 or 1. Value 0 sets the actual meterreading mode, Value 1 sets the programming mode
#
ir_command='\x060'+ir_speed+'0\x0D\x0A'
ser.write(ir_command.encode('utf-8'))
ser.flush()
#Wait for data
ir_buffer = ''
ir_lines_index = 0
ETX = False
#print(ir_lines[ir_lines_index])
while not ETX:
ir_buffer = str(ser.readline(), "utf-8")
if '\x060' in ir_buffer:
ir_buffer = str(ser.readline(), "utf-8")
if '!' in ir_buffer:
ETX = True
ir_lines.extend(ir_buffer.strip().split('\r\n'))
ir_lines_index = ir_lines_index + 1
#print(ir_lines[ir_lines_index])
#print ("Datatransfer complete.")
#print ("Number of received elements: %d" % len(ir_lines))
#print ("Array of received elements: %s" % ir_lines)
#Close port and show status
ser.close()
#################################################################
# Process data Only need Array 5 and 6 #
#################################################################
power_timestamp=datetime.datetime.strftime(datetime.datetime.today(), "%Y-%m-%d %H:%M:%S" )
power_data = ir_lines
#power_used = power_data[5]
power_delivered = power_data[8]
#################################################################
# Remove 1.8.2 /2.8.2 . *kWh) #
#################################################################
power_delivered_num = power_delivered
power_delivered_num = power_delivered_num.replace('*kWh','')
power_delivered_num = power_delivered_num.replace('2.8.2','')
power_delivered_num = power_delivered_num.replace('(','')
power_delivered_num = power_delivered_num.replace(')','')
power_delivered_num = power_delivered_num.replace('.','')
#print (power_delivered_num)
#print ("Telegram ontvangen op: %s" % power_timestamp)
#################################################################
# calculate power consumption 60/2 = 30 (elke twee minuten loggen)
#################################################################
power_delivered_con = (int(power_delivered_num))-(int(power_delivered_prev))
power_delivered_con_str = str (power_delivered_con*30)
#print (power_delivered_con_str)
#################################################################
# Store value power_used_num and power_delivered_num
# in to file
#################################################################
with open("/home/pietje/bpmeter/sun.txt", "w") as fh:
fh.write(power_delivered_num)
#################################################################
# Send to Domoticz
#################################################################
domoticzurl2 = 'http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx=15&svalue='+power_delivered_con_str+';'+power_delivered_num
# Domoticz prod
req = urllib.request.urlopen(domoticzurl2)
Code: Select all
*/2 5-22 * * * /usr/bin/python3 /home/pietje/bin/bpmeter-to-domoticz.py
Graph:
http://imgur.com/cUTUapF
-
- Posts: 67
- Joined: Sunday 22 March 2015 16:18
- Target OS: NAS (Synology & others)
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
Can any one share an example what will be stored in the text files like value.txt / sun.txt?
Domoticz| Zigbee | SONOFF
-
- Posts: 67
- Joined: Sunday 22 March 2015 16:18
- Target OS: NAS (Synology & others)
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
I have used the script by Jossie67 and get the following error.
Any idea how to solve?
Code: Select all
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 490, in read 'device reports readiness to read but returned no data '
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "smartmeter5.py", line 95, in <module>
ir_buffer = str(ser.readline(), "utf-8")
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 497, in read raise SerialException('read failed: {}'.format(e))
serial.serialutil.SerialException: read failed: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
Domoticz| Zigbee | SONOFF
-
- Posts: 67
- Joined: Sunday 22 March 2015 16:18
- Target OS: NAS (Synology & others)
- Domoticz version:
- Contact:
Re: Add D0 USB Support for my Landis en Gyr ZME120Acd with optic
I have got the script working.
It send it's Manufacturer FLAG ID back but keeps waiting for data. Any one a idea?
Code: Select all
pi@RPi-Smartmeter:~ $ sudo python3 smartmeter/smartmeter.py
Reading previous data
[b]1810154458650
1820169679580[/b]
Closing serial port
Opening COM port at initial baudrate
Initialize
Initialized
/LGZ5ZCF100AC.M40
Waiting for data
^CTraceback (most recent call last):
File "smartmeter/smartmeter.py", line 94, in <module>
ir_buffer = str(ser.readline(), "utf-8")
File "/usr/local/lib/python3.5/dist-packages/serial/serialposix.py", line 483, in read
ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
KeyboardInterrupt
Domoticz| Zigbee | SONOFF
Who is online
Users browsing this forum: Bing [Bot] and 0 guests