OSGP / Documentation

This repository contains documentation for the Open Smart Grid Platform project. This repository is built as a GitBook, therefore all content has to be written using markdown syntax. See the latest GitBook:
https://documentation.gxf.lfenergy.org/
Apache License 2.0
24 stars 15 forks source link

how to install/register DLMS meter? #180

Closed nimeshchauhan closed 5 years ago

nimeshchauhan commented 6 years ago

Hi,

I have successfully install OSGP on Ubuntu and able to run Street light Demo application. Now I would like install/register DLMS smart meter (E650) but not able to find which services/method I should use for this. Can you please provide me guideline/step/document on how to install smart meter on OSGP?

bvdzwet commented 6 years ago

If you want to add a smart meter to OSGP, you could take a look at the AddDevice request, described in the documentation under Domains - SmartMetering - Web Services - Installation - AddDevice, and see if that helps.

nimeshchauhan commented 6 years ago

Thank you for swift update. Through SOAPUI, I tried Add Device Service and received response successful.(with DeviceIdentification and CorrelationId) But I am not sure which Table, Database schema I have to check. There is no device added in Device table in “OSGP_CORE”. Only entry I can see in meter_response_data table in “OSGP_ADAPTER_WS_SMARTMETERING”. once device added successfully, how can I register, confirm register and do any other operations. (example Ping command/read device info etc)

bvdzwet commented 6 years ago

Upon successful completion of an AddDevice request for a smart meter using the web service mentioned earlier (Domains - SmartMetering - Web Services - Installation - AddDevice) you would see a device in the osgp_core device table and smart_meter table, and also in the osgp_adapter_protocol_dlms dlms_device table.

If this is not the case I believe something may have gone wrong with the AddDevice request. You may be able to see more details about this in the application logging or in the response message that you saw in the osgp_adapter_ws_smartmetering response_data table. You should be able to retrieve the response message by issuing a GetAddDeviceResponse request using the correlation UID obtained while adding the device.

Once the device is registered you'll have to make sure its communication settings are stored in the database as they need to be for the specific device (some updating of these settings is possible through the SetDeviceCommunicationSettings requests in the SmartMeteringMangement WSDL).

If all these settings and the security properties (keys) for the device are stored as they should be, you can look for anything simple supported by the device that can be read out and for instance submit a GetSpecificAttributeValue request (from the SmartMeteringAdhoc WSDL).

shanto1410 commented 5 years ago

@bvdzwet Could you please share me how to register a device to dlms protocol adapter because i have been able to add device into system, i cannot figure out how to register it. Thanks!

bvdzwet commented 5 years ago

@shanto1410 you mention that you have been able to add a device to the system. Did you use the AddDevice operation of the Smart Metering Installation web service for this, as described in the following page? http://documentation.opensmartgridplatform.org/Domains/Smartmetering/smartmeteringwebservices/AddDevice.html If so, what was the result you obtained through GetAddDeviceResponse using the correlation UID from AddDevice?

I am not sure by what you mean when you mention figuring out how to register the device. Did you alter the communication settings with a SetDeviceCommunicationSettingsRequest to the Smart Metering Management web service?

Did you try to execute some request that is supposed to connect to the device, and what kind of error messages did that give you?

shanto1410 commented 5 years ago

@bvdzwet Thanks for your prompt response. Please get the result of Add device below. I was trying to understand is there any process like register device of public lighting in smart metering? Now I am getting the below error while communicating with dlms server. Could you please share step by step simulator document with sample request data for smart metering like public lighting?

Add Device Response:

TEST1024000000006 test-org|||TEST1024000000006|||20181002124843283 GetAddDeviceResponse: OK Error Log: 2018-10-02 11:47:51.172] [apl-pc] [New I/O worker #3] INFO o.o.a.p.d.i.n.DlmsChannelHandler@channelDisconnected:37 - -1552738072 Channel disconnected 2018-10-02 11:47:51.173] [apl-pc] [New I/O worker #3] INFO o.j.n.handler.logging.LoggingHandler@info:52 - [id: 0xa37318e8, /127.0.0.1:33246 :> /127.0.0.1:9598] EXCEPTION: org.opensmartgridplatform.adapter.protocol.dlms.infra.networking.UnrecognizedMessageDataException: Data in DLMS Push Notification cannot be decoded. Reason: message must start with 17 bytes for the equipment identifier, followed by byte 0x2C (a comma). org.opensmartgridplatform.adapter.protocol.dlms.infra.networking.UnrecognizedMessageDataException: Data in DLMS Push Notification cannot be decoded. Reason: message must start with 17 bytes for the equipment identifier, followed by byte 0x2C (a comma). at org.opensmartgridplatform.adapter.protocol.dlms.infra.networking.DlmsPushNotificationDecoder.decodeEquipmentIdentifier(DlmsPushNotificationDecoder.java:94) ~[classes/:na] at org.opensmartgridplatform.adapter.protocol.dlms.infra.networking.DlmsPushNotificationDecoder.decode(DlmsPushNotificationDecoder.java:76) ~[classes/:na] at org.opensmartgridplatform.adapter.protocol.dlms.infra.networking.DlmsPushNotificationDecoder.decode(DlmsPushNotificationDecoder.java:1) ~[classes/:na] at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500) ~[netty-3.9.4.Final.jar:na] at org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:554) ~[netty-3.9.4.Final.jar:na] at org.jboss.netty.handler.codec.frame.FrameDecoder.channelDisconnected(FrameDecoder.java:365) [netty-3.9.4.Final.jar:na] at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:102) [netty-3.9.4.Final.jar:na] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.9.4.Final.jar:na] at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) [netty-3.9.4.Final.jar:na] at org.jboss.netty.handler.logging.LoggingHandler.handleUpstream(LoggingHandler.java:332) [netty-3.9.4.Final.jar:na] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.9.4.Final.jar:na]
bvdzwet commented 5 years ago

The public lighting devices as used with the PublicLightingDemoApp work with a different protocol than DLMS and respond to different messages than the smart meters that are supported.

For Smart Metering I can't share details about the simulator like available for public lighting, as the decision has been made not to put this in the open source part of the code base. If you want to see if there are commercial opportunities with regards to support beyond the open source parts of the code base, you could get in touch using information at: https://opensmartgridplatform.org/contact/ http://documentation.opensmartgridplatform.org/Support/index.html

The logging you include is for a message pushed to the platform, as would be the case with wake up or alarm messages from devices. The platform understands these kinds of messages when they start with a 17-byte equipment identifier, followed by a comma (byte 0x2C), followed by either 4 bytes representing an alarm register value, or 6 bytes containing a logical name of the triggering object. The stack trace you posted indicates that the eighteenth byte is not a comma, in which case the message is not understood by the code in the DLMS protocol adapter's channel handler.

shanto1410 commented 5 years ago

@bvdzwet Hi, I was trying to set one up with one push object, but how to make it send data every 1 minute to the OSGP for smart metering. Could you please share your thought in the regard and If you have sample messages like push on wakeup and push on alarm, I would be grateful if you send them. Thanks!

bvdzwet commented 5 years ago

@shanto1410 Smart metering devices on protocol DLMS that send data at a certain interval is not something implemented in the platform. Some device initiated reporting can be found in the Microgrids domain (protocol IEC61850). For the smart meters all actual device data is retrieved by a request from the platform over a DLMS connection. The exception being the notifications on wake up and alarms, which are sent from the device.

I can give you a sample of the alarm notification as it appears in the logs with the incoming endpoint.

The logging for an incoming alarm notification from a device with device identification "TEST1024000000001" with alarm bytes 0x04 0x20 0x00 0x00:

RECEIVED: BigEndianHeapChannelBuffer(ridx=0, widx=22, cap=22)
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 54 45 53 54 31 30 32 34 30 30 30 30 30 30 30 30 |TEST102400000000|
|00000010| 31 2c 04 20 00 00                               |1,. ..          |
+--------+-------------------------------------------------+----------------+

The notification message for a wake up looks similar. The first part are bytes from the ASCII byte representation of the device identification, followed by a comma (byte 0x2c). Then instead of the alarm register bytes as in the previous sample, there are six bytes for the logical name of the triggered object (0x00 0x00 0x02 0x03 0x00 0xFF, OBIS code 0-0:2.3.0.255 in case of wake up using SMS message).