Error Reading Modbus TCP Meter

2020-08-12 Thread Syed Kefayath
Hi Everyone,

I am using a plc4x modbus driver to read data from a modbus device but i am
left with an exception. But while reading data from the ModbusPal virtual
device I am getting the output. The java code and the error message is
given below.

I need help from this community to complete my POC.

Java code.

import org.apache.plc4x.java.PlcDriverManager;
import org.apache.plc4x.java.api.PlcConnection;
import org.apache.plc4x.java.api.messages.PlcReadRequest;
import org.apache.plc4x.java.api.messages.PlcReadResponse;
import org.apache.plc4x.java.api.types.PlcResponseCode;

import java.util.concurrent.CompletableFuture;

public class modbus {

public static void main(String[] args) throws Exception {
System.out.println("started");
String connectionString =
"modbus:tcp://192.168.4.163:4001?unit-identifier=2";
try {
PlcConnection plcConnection = new
PlcDriverManager().getConnection(connectionString);

if (!plcConnection.getMetadata().canRead()) {
System.out.println("This connection doesn't support reading.");
return;
}
PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
builder.addItem("tag1","holding-register:101");
//builder.addItem("tag2","holding-register:1[3]");
PlcReadRequest readRequest = builder.build();
CompletableFuture asyncResponse
= readRequest.execute();
asyncResponse.whenComplete((response, throwable) -> {
System.out.println("response :"+response.toString() );
for (String fieldName : response.getFieldNames()) {
if (response.getResponseCode(fieldName) ==
PlcResponseCode.OK){
int registerValues =
response.getNumberOfValues(fieldName);
if (registerValues == 1){
System.out.println(fieldName +" : "+
response.getObject(fieldName));
}
else {
for (int i = 0; i< registerValues;i++){
System.out.println(fieldName + i +" :
" + response.getObject(fieldName,i));
}
}

}
else {
System.out.println("Error[" + fieldName+ "]:
"+ response.getResponseCode(fieldName).name());
}
}

});


} catch (Exception e) {
System.out.println("Something went wrong."+e);
}
System.out.println("Execution completed");
}
}


Output:

started
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further
details.
Execution completed
Aug 12, 2020 3:05:02 PM io.netty.channel.DefaultChannelPipeline
onUnhandledInboundException
WARNING: An exceptionCaught() event was fired, and it reached at the tail
of the pipeline. It usually means the last handler in the pipeline did not
handle the exception.
io.netty.handler.codec.DecoderException:
org.apache.plc4x.java.api.exceptions.PlcRuntimeException: Unexpected
response type ModbusPDUReadHoldingRegistersResponse
at
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
at
io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:321)
at
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:295)
at
io.netty.handler.codec.ByteToMessageCodec.channelRead(ByteToMessageCodec.java:103)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at

Re: Supporting different layers of protocols depending on the used transport

2020-08-12 Thread Christofer Dutz
After a little discussion with Julian we realized we need a little more:

First of all using fixed classes to decide which branch to use makes it 
impossible to test using the embedded channel. 
Using a "transportFamily" property which each transport provides, makes this 
possible.

Also do we have to use a different Encoder/Decoder for processing the packet 
depending on the used transport.
So the AmsTcpTransportProtocol would be expected to consume AmsTCPPacket 
objects and produce AmsPacket objects.

@Override
protected ProtocolStackConfigurer getStackConfigurer() {
return SingleProtocolStackConfigurer.builder(AmsPacket.class, 
AmsPacketIO.class)
.withProtocol(AdsProtocolLogic.class)
.withTransportProtocol("tcp", AmsTCPPacket.class, AmsTCPPacketIO.class, 
AmsTcpTransportProtocol.class)
.withTransportProtocol("serial", AmsSerialFrame.class, 
AmsSerialFrameIO.class, AmsSerialTransportProtocol.class)
.littleEndian()
.build();
}

I bet this is gonna be some crazy generic stuff ... 

Chris

Am 12.08.20, 09:04 schrieb "Christofer Dutz" :

Hi all,

taking this back to the list as I think it belongs here.

While working on the ADS driver I noticed that we might have the need to 
pack a given protocol in different transport protocols, depending on the used 
transport.

For ADS it has to either wrap the AMSPacket in a AmsTCPPacket if using TCP 
or in a AmsSerialFrame if it’s using serial. For serial also some ACK packets 
have to be created or processed.

I wouldn’t want to mix that in to the driver itself as this should only 
worry about the AMSPacket logic itself.

So I was thinking if it would be possible to do something like this:

@Override
protected ProtocolStackConfigurer getStackConfigurer() {
return SingleProtocolStackConfigurer.builder(AmsPacket.class, 
AmsPacketIO.class)
.withProtocol(AdsProtocolLogic.class)
.withTransportProtocol(TcpTransport.class, 
AmsTcpTransportProtocol.class)
.withTransportProtocol(SerialTransport.class, 
AmsSerialTransportProtocol.class)
.littleEndian()
.build();
}

Any thoughts?
We probably have to extend the transports to return a “family” of 
transports so we can for example say that Raw-Socket and PCAP-Replay are “TCP” 
or “UDP” and for the EmbeddedTransport I would need to be able to configure 
what it should be.

Chris





Supporting different layers of protocols depending on the used transport

2020-08-12 Thread Christofer Dutz
Hi all,

taking this back to the list as I think it belongs here.

While working on the ADS driver I noticed that we might have the need to pack a 
given protocol in different transport protocols, depending on the used 
transport.

For ADS it has to either wrap the AMSPacket in a AmsTCPPacket if using TCP or 
in a AmsSerialFrame if it’s using serial. For serial also some ACK packets have 
to be created or processed.

I wouldn’t want to mix that in to the driver itself as this should only worry 
about the AMSPacket logic itself.

So I was thinking if it would be possible to do something like this:

@Override
protected ProtocolStackConfigurer getStackConfigurer() {
return SingleProtocolStackConfigurer.builder(AmsPacket.class, 
AmsPacketIO.class)
.withProtocol(AdsProtocolLogic.class)
.withTransportProtocol(TcpTransport.class, 
AmsTcpTransportProtocol.class)
.withTransportProtocol(SerialTransport.class, 
AmsSerialTransportProtocol.class)
.littleEndian()
.build();
}

Any thoughts?
We probably have to extend the transports to return a “family” of transports so 
we can for example say that Raw-Socket and PCAP-Replay are “TCP” or “UDP” and 
for the EmbeddedTransport I would need to be able to configure what it should 
be.

Chris




Re: Error Reading Modbus TCP Meter

2020-08-12 Thread Christofer Dutz
Hi Syed,

could you please create a wireshark dump of both the not working and the 
working version and attach both to a jira issue?
I am expecting Modbus to have the greatest variance in implementations so I 
think we might need to dig a little deeper here.

Chris




Von: Syed Kefayath 
Datum: Mittwoch, 12. August 2020 um 14:05
An: "dev@plc4x.apache.org" 
Cc: Christofer Dutz , Julian Feinauer 

Betreff: Re: Error Reading Modbus TCP Meter

@Adam
I want to read data from register address 40101 with start address 101 and 
float data type.

But I couldn't get what you wanted to convey with this comment -instead of 
register “4001” try “1”, and of that doesn’t work try “0”.

Can  you please elaborate.


On Wed, Aug 12, 2020 at 5:16 PM Adam Rossi 
mailto:ac.ro...@gmail.com>> wrote:
Instead of register “4001” try “1”, and of that doesn’t work try “0”.

Regards Adam

> On Aug 12, 2020, at 5:59 AM, Syed Kefayath 
> mailto:syed.kefay...@elmeasure.com>> wrote:
>
> Hi Everyone,
>
> I am using a plc4x modbus driver to read data from a modbus device but i am
> left with an exception. But while reading data from the ModbusPal virtual
> device I am getting the output. The java code and the error message is
> given below.
>
> I need help from this community to complete my POC.
>
> Java code.
>
> import org.apache.plc4x.java.PlcDriverManager;
> import org.apache.plc4x.java.api.PlcConnection;
> import org.apache.plc4x.java.api.messages.PlcReadRequest;
> import org.apache.plc4x.java.api.messages.PlcReadResponse;
> import org.apache.plc4x.java.api.types.PlcResponseCode;
>
> import java.util.concurrent.CompletableFuture;
>
> public class modbus {
>
>public static void main(String[] args) throws Exception {
>System.out.println("started");
>String connectionString =
> "modbus:tcp://192.168.4.163:4001?unit-identifier=2";
>try {
>PlcConnection plcConnection = new
> PlcDriverManager().getConnection(connectionString);
>
>if (!plcConnection.getMetadata().canRead()) {
>System.out.println("This connection doesn't support reading.");
>return;
>}
>PlcReadRequest.Builder builder = 
> plcConnection.readRequestBuilder();
>builder.addItem("tag1","holding-register:101");
> //builder.addItem("tag2","holding-register:1[3]");
>PlcReadRequest readRequest = builder.build();
>CompletableFuture asyncResponse
> = readRequest.execute();
>asyncResponse.whenComplete((response, throwable) -> {
>System.out.println("response :"+response.toString() );
>for (String fieldName : response.getFieldNames()) {
>if (response.getResponseCode(fieldName) ==
> PlcResponseCode.OK){
>int registerValues =
> response.getNumberOfValues(fieldName);
>if (registerValues == 1){
>System.out.println(fieldName +" : "+
> response.getObject(fieldName));
>}
>else {
>for (int i = 0; i< registerValues;i++){
>System.out.println(fieldName + i +" :
> " + response.getObject(fieldName,i));
>}
>}
>
>}
>else {
>System.out.println("Error[" + fieldName+ "]:
> "+ response.getResponseCode(fieldName).name());
>}
>}
>
>});
>
>
>} catch (Exception e) {
>System.out.println("Something went wrong."+e);
>}
>System.out.println("Execution completed");
>}
> }
>
>
> Output:
>
> started
> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> SLF4J: Defaulting to no-operation (NOP) logger implementation
> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further
> details.
> Execution completed
> Aug 12, 2020 3:05:02 PM io.netty.channel.DefaultChannelPipeline
> onUnhandledInboundException
> WARNING: An exceptionCaught() event was fired, and it reached at the tail
> of the pipeline. It usually means the last handler in the pipeline did not
> handle the exception.
> io.netty.handler.codec.DecoderException:
> org.apache.plc4x.java.api.exceptions.PlcRuntimeException: Unexpected
> response type ModbusPDUReadHoldingRegistersResponse
> at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
> at
> io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
> at
> 

Re: Error Reading Modbus TCP Meter

2020-08-12 Thread Adam Rossi


The code you posted is reading register 4001 on slave ID 2. There are different 
conventions as to addressing registers, sometimes the 4XXX is not used, and 
sometimes the register is 1 less than published. 

Also verify you really want slave ID 2. Usually you want 0 or 1. 

If you want address 101 your code is incorrect. Try “101” and if that doesn’t 
work try “100”. 

> On Aug 12, 2020, at 8:06 AM, Syed Kefayath  
> wrote:
> 
> @Adam
> I want to read data from register address 40101 with start address 101 and
> float data type.
> 
> But I couldn't get what you wanted to convey with this comment *-instead of
> register “4001” try “1”, and of that doesn’t work try “0”. *
> 
> Can  you please elaborate.
> 
> 
>> On Wed, Aug 12, 2020 at 5:16 PM Adam Rossi  wrote:
>> 
>> Instead of register “4001” try “1”, and of that doesn’t work try “0”.
>> 
>> Regards Adam
>> 
>>> On Aug 12, 2020, at 5:59 AM, Syed Kefayath 
>> wrote:
>>> 
>>> Hi Everyone,
>>> 
>>> I am using a plc4x modbus driver to read data from a modbus device but i
>> am
>>> left with an exception. But while reading data from the ModbusPal virtual
>>> device I am getting the output. The java code and the error message is
>>> given below.
>>> 
>>> I need help from this community to complete my POC.
>>> 
>>> Java code.
>>> 
>>> import org.apache.plc4x.java.PlcDriverManager;
>>> import org.apache.plc4x.java.api.PlcConnection;
>>> import org.apache.plc4x.java.api.messages.PlcReadRequest;
>>> import org.apache.plc4x.java.api.messages.PlcReadResponse;
>>> import org.apache.plc4x.java.api.types.PlcResponseCode;
>>> 
>>> import java.util.concurrent.CompletableFuture;
>>> 
>>> public class modbus {
>>> 
>>>   public static void main(String[] args) throws Exception {
>>>   System.out.println("started");
>>>   String connectionString =
>>> "modbus:tcp://192.168.4.163:4001?unit-identifier=2";
>>>   try {
>>>   PlcConnection plcConnection = new
>>> PlcDriverManager().getConnection(connectionString);
>>> 
>>>   if (!plcConnection.getMetadata().canRead()) {
>>>   System.out.println("This connection doesn't support
>> reading.");
>>>   return;
>>>   }
>>>   PlcReadRequest.Builder builder =
>> plcConnection.readRequestBuilder();
>>>   builder.addItem("tag1","holding-register:101");
>>> //builder.addItem("tag2","holding-register:1[3]");
>>>   PlcReadRequest readRequest = builder.build();
>>>   CompletableFuture asyncResponse
>>> = readRequest.execute();
>>>   asyncResponse.whenComplete((response, throwable) -> {
>>>   System.out.println("response :"+response.toString() );
>>>   for (String fieldName : response.getFieldNames()) {
>>>   if (response.getResponseCode(fieldName) ==
>>> PlcResponseCode.OK){
>>>   int registerValues =
>>> response.getNumberOfValues(fieldName);
>>>   if (registerValues == 1){
>>>   System.out.println(fieldName +" : "+
>>> response.getObject(fieldName));
>>>   }
>>>   else {
>>>   for (int i = 0; i< registerValues;i++){
>>>   System.out.println(fieldName + i +" :
>>> " + response.getObject(fieldName,i));
>>>   }
>>>   }
>>> 
>>>   }
>>>   else {
>>>   System.out.println("Error[" + fieldName+ "]:
>>> "+ response.getResponseCode(fieldName).name());
>>>   }
>>>   }
>>> 
>>>   });
>>> 
>>> 
>>>   } catch (Exception e) {
>>>   System.out.println("Something went wrong."+e);
>>>   }
>>>   System.out.println("Execution completed");
>>>   }
>>> }
>>> 
>>> 
>>> Output:
>>> 
>>> started
>>> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
>>> SLF4J: Defaulting to no-operation (NOP) logger implementation
>>> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for
>> further
>>> details.
>>> Execution completed
>>> Aug 12, 2020 3:05:02 PM io.netty.channel.DefaultChannelPipeline
>>> onUnhandledInboundException
>>> WARNING: An exceptionCaught() event was fired, and it reached at the tail
>>> of the pipeline. It usually means the last handler in the pipeline did
>> not
>>> handle the exception.
>>> io.netty.handler.codec.DecoderException:
>>> org.apache.plc4x.java.api.exceptions.PlcRuntimeException: Unexpected
>>> response type ModbusPDUReadHoldingRegistersResponse
>>> at
>>> 
>> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
>>> at
>>> 
>> io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
>>> at
>>> 
>> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
>>> at
>>> 
>> 

[jira] [Created] (PLC4X-225) [code-generation] make it possible to put expressions in switch conditions

2020-08-12 Thread Christofer Dutz (Jira)
Christofer Dutz created PLC4X-225:
-

 Summary: [code-generation] make it possible to put expressions in 
switch conditions
 Key: PLC4X-225
 URL: https://issues.apache.org/jira/browse/PLC4X-225
 Project: Apache PLC4X
  Issue Type: Improvement
  Components: Code-Generation
Affects Versions: 0.8.0
Reporter: Christofer Dutz
Assignee: Christofer Dutz


Right now it is only possible to put constant expressions in the case elements 
of a typeSwitch. This was ok as long as we simply had numeric constants in 
there. But some times it is desirable to have expressions in there: 

"MyCoolEnumType.SOME_CONSTANT.value" for example.

This is currently not resolved correctly.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PLC4X-229) CLONE - CLONE - CLONE - Lena Slaughter

2020-08-12 Thread Hannah Zacharski (Jira)
Hannah Zacharski created PLC4X-229:
--

 Summary: CLONE - CLONE - CLONE - Lena Slaughter
 Key: PLC4X-229
 URL: https://issues.apache.org/jira/browse/PLC4X-229
 Project: Apache PLC4X
  Issue Type: Improvement
 Environment: 211 B North Clifton Avenue 
Louisville, Kentucky 
40206
Reporter: Hannah Zacharski
 Attachments: 19A2C245-4C25-46AD-89F8-4B06905F5DA2.jpeg, 
9E9B02AA-A55E-4520-9823-288D3632982A.jpeg, 
FEE863E7-F864-4785-BBFD-AB5A0E7267FA.jpeg, 
FF322BC8-B081-4A9A-BE63-5D2CB5FC1F3F.jpeg

Michael Zacharski

Hannah Zacharski

Mosby Zacharski

Boone Zacharski

Katarzyna Zacharski



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PLC4X-230) CLONE - CLONE - CLONE - CLONE - Lena Slaughter

2020-08-12 Thread Hannah Zacharski (Jira)
Hannah Zacharski created PLC4X-230:
--

 Summary: CLONE - CLONE - CLONE - CLONE - Lena Slaughter
 Key: PLC4X-230
 URL: https://issues.apache.org/jira/browse/PLC4X-230
 Project: Apache PLC4X
  Issue Type: Improvement
 Environment: 211 B North Clifton Avenue 
Louisville, Kentucky 
40206
Reporter: Hannah Zacharski
 Attachments: 19A2C245-4C25-46AD-89F8-4B06905F5DA2.jpeg, 
9E9B02AA-A55E-4520-9823-288D3632982A.jpeg, 
FEE863E7-F864-4785-BBFD-AB5A0E7267FA.jpeg, 
FF322BC8-B081-4A9A-BE63-5D2CB5FC1F3F.jpeg

Michael Zacharski

Hannah Zacharski

Mosby Zacharski

Boone Zacharski

Katarzyna Zacharski



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PLC4X-228) CLONE - CLONE - Lena Slaughter

2020-08-12 Thread Hannah Zacharski (Jira)
Hannah Zacharski created PLC4X-228:
--

 Summary: CLONE - CLONE - Lena Slaughter
 Key: PLC4X-228
 URL: https://issues.apache.org/jira/browse/PLC4X-228
 Project: Apache PLC4X
  Issue Type: Improvement
 Environment: 211 B North Clifton Avenue 
Louisville, Kentucky 
40206
Reporter: Hannah Zacharski
 Attachments: 19A2C245-4C25-46AD-89F8-4B06905F5DA2.jpeg, 
9E9B02AA-A55E-4520-9823-288D3632982A.jpeg, 
FEE863E7-F864-4785-BBFD-AB5A0E7267FA.jpeg, 
FF322BC8-B081-4A9A-BE63-5D2CB5FC1F3F.jpeg

Michael Zacharski

Hannah Zacharski

Mosby Zacharski

Boone Zacharski

Katarzyna Zacharski



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PLC4X-227) CLONE - Lena Slaughter

2020-08-12 Thread Hannah Zacharski (Jira)
Hannah Zacharski created PLC4X-227:
--

 Summary: CLONE - Lena Slaughter
 Key: PLC4X-227
 URL: https://issues.apache.org/jira/browse/PLC4X-227
 Project: Apache PLC4X
  Issue Type: Improvement
 Environment: 211 B North Clifton Avenue 
Louisville, Kentucky 
40206
Reporter: Hannah Zacharski
 Attachments: 9E9B02AA-A55E-4520-9823-288D3632982A.jpeg, 
FEE863E7-F864-4785-BBFD-AB5A0E7267FA.jpeg

Michael Zacharski

Hannah Zacharski

Mosby Zacharski

Boone Zacharski

Katarzyna Zacharski



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


Re: Beer, Python and PLC4X

2020-08-12 Thread Lukas Ott
Hi Python-developers,

You ll find the result of our discussion here:
https://docs.google.com/presentation/d/17u5QBiN-gwonIftJDqApMIcNY_-SKXCPIph3JdW_rP0


Thank you Chris and Otto for the nice discussion and deep dive into
Freemarker and what you did with C.

Cheers,
Lukas

Am Di., 11. Aug. 2020 um 13:53 Uhr schrieb Lukas Ott :

> Hi Python-developers,
>
> If you want to participate in our Kick-Off session tomorrow 8 PM (UTC+2).
>
> Please send us an e-mail so we can provide you with more details (Meeting
> Link)
>
> Thank you! :-) see you there!
>
> Kind regards
> Lukas
>
> Am So., 9. Aug. 2020 um 18:16 Uhr schrieb Lukas Ott <
> ott.lukas...@gmail.com>:
>
>> Hi Python-developers,
>>
>> We decided to have an initial session on wednesday  12 august 2020, 8 PM
>> (UTC+2) .
>> Goal: High-Level Plan -> Features and Milestones That then can be
>> easier broke down into feasible task during the workshops.
>>
>> Everyone is welcome to join who likes Python :-) and PLCs
>>
>> Kind regards
>> Lukas
>>
>> Am So., 9. Aug. 2020 um 11:04 Uhr schrieb Lukas Ott <
>> ott.lukas...@gmail.com>:
>>
>>> Hi Python-developers,
>>>
>>> I decided to propose a workshop for kick-off the python development
>>>
>>> Currently aimed for these 4 options here:
>>> https://doodle.com/poll/ph6dpg45ay8tepze
>>>
>>> The idea is to create a backlog - with t-shirt sized tasks / user
>>> stories. So the development can be more shared and gets more transparent
>>> what needs to be done.
>>>
>>> Feedback is very welcome.
>>>
>>> Workshop idea is to meet at a certain time discuss for 1-2 hours max -
>>> Agenda and High-level Backlog and then just start as you see fit to you
>>> personal plans and time.
>>>
>>> The idea is to start the development as a community again and share the
>>> work -  Everyone is welcome to support and participate and have fun! :-)
>>>
>>> #python #plc
>>>
>>> Kind regards
>>> Lukas
>>>
>>> Am Mo., 6. Juli 2020 um 17:17 Uhr schrieb Volker Emmert <
>>> v.emm...@pragmaticminds.de>:
>>>
 My fridge is ready.


 Am 06.07.20 um 16:47 schrieb Julian Feinauer:

 Hi friends,

 as discussed in Slack we are ready (with regards to build tools) fort he 
 initiative to work together on plc4py!
 So, no excuses for nobodfy (if python is to hard for you better stop right 
 here, you are no coder!).

 So who is interested and when should we start an evening session with, as 
 the title says, beer, python and plc4x?
 Probably we could also make a series out of it and do it step by step.

 WDYT?
 Julian

 --

 Mit freundlichen Grüßen

 Volker Emmert




 Entwicklungsingenieur

 T  +49 179 1290 416

 E  v.emm...@pragmaticminds.de

 W www.pragmaticminds.de



 
 
 



 Jesingerstraße 57

 73230 Kirchheim unter Teck



 pragmatic minds GmbH, Sitz: Kirchheim unter Teck, Amtsgericht Stuttgart
 - HRB 757136, Geschäftsführer: Dr. Julian Feinauer

>>>


[jira] [Created] (PLC4X-226) Lena Slaughter

2020-08-12 Thread Hannah Zacharski (Jira)
Hannah Zacharski created PLC4X-226:
--

 Summary: Lena Slaughter
 Key: PLC4X-226
 URL: https://issues.apache.org/jira/browse/PLC4X-226
 Project: Apache PLC4X
  Issue Type: Improvement
 Environment: 211 B North Clifton Avenue 
Louisville, Kentucky 
40206
Reporter: Hannah Zacharski






--
This message was sent by Atlassian Jira
(v8.3.4#803005)