You can subscribe to this list here.
2007 |
Jan
(3) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
(26) |
Dec
|
2010 |
Jan
|
Feb
(13) |
Mar
(8) |
Apr
|
May
(3) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
2011 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
|
May
(13) |
Jun
(12) |
Jul
(8) |
Aug
(41) |
Sep
(7) |
Oct
(12) |
Nov
(10) |
Dec
(7) |
2012 |
Jan
(15) |
Feb
|
Mar
|
Apr
|
May
(13) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(5) |
Nov
|
Dec
(2) |
2013 |
Jan
(8) |
Feb
(7) |
Mar
(3) |
Apr
|
May
(23) |
Jun
(11) |
Jul
(11) |
Aug
|
Sep
(10) |
Oct
(4) |
Nov
|
Dec
(1) |
2014 |
Jan
(1) |
Feb
(40) |
Mar
(17) |
Apr
(5) |
May
(7) |
Jun
(4) |
Jul
(13) |
Aug
(6) |
Sep
(16) |
Oct
(13) |
Nov
(2) |
Dec
(9) |
2015 |
Jan
(12) |
Feb
(27) |
Mar
(4) |
Apr
(18) |
May
(20) |
Jun
(8) |
Jul
(2) |
Aug
(24) |
Sep
(1) |
Oct
(8) |
Nov
(16) |
Dec
(2) |
2016 |
Jan
(7) |
Feb
(9) |
Mar
(3) |
Apr
(4) |
May
(1) |
Jun
(7) |
Jul
(9) |
Aug
(22) |
Sep
(4) |
Oct
(1) |
Nov
(5) |
Dec
(1) |
2017 |
Jan
|
Feb
|
Mar
(7) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(1) |
Aug
|
Sep
(5) |
Oct
(3) |
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
(5) |
Jul
(9) |
Aug
|
Sep
(2) |
Oct
(3) |
Nov
(2) |
Dec
|
2019 |
Jan
|
Feb
(5) |
Mar
(5) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
(1) |
Mar
|
Apr
(5) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Olivier M. <om...@re...> - 2016-08-19 19:45:54
|
Thanks Joel, I could create my tagList. I did with your first method. tag_list = TagList([ OpeningTag(1), ContextTag(0, xtob('9c40')), ContextTag(1, xtob('02')), ContextTag(2, xtob('02')), ClosingTag(1) ]) When I do a request.propertyValue.cast_in(tag_list) I have an error : AttributeError: 'TagList' object has no attribute 'put' Regards De : Joel J. Bender [mailto:jj...@co...] Envoyé : 19 août 2016 14:33 À : Discussion about developing BACpypes <bac...@li...> Objet : Re: [BACpypes-developers] ReadWrite Proprietary Object Olivier, When I do a debug_contents on the property that I want write I obtain something like this... Try this: from bacpypes.debugging import xtob from bacpypes.primitivedata import TagList, OpeningTag, ClosingTag, ContextTag tag_list = TagList([ OpeningTag(1), ContextTag(0, xtob('9c40')), ContextTag(1, xtob('02')), ContextTag(2, xtob('02')), ClosingTag(1) ]) tag_list.debug_contents() The context tags in the middle can be built with other primitives, like this: my_int = Integer(2) app_tag = Tag() my_int.encode(tag) context_tag = tag.app_to_context(1) Let me know if you are doing a lot of this stuff, it occurred to me that it might be nice to have a functions like this in Atomic: def app_tag(self): tag = Tag() self.encode(tag) return tag def context_tag(self, context): return self.app_tag().app_to_context(context) So you can do things like: Integer(2).context_tag(1) Joel |
From: Joel J. B. <jj...@co...> - 2016-08-19 18:48:07
|
Olivier, When I do a debug_contents on the property that I want write I obtain something like this... Try this: from bacpypes.debugging import xtob from bacpypes.primitivedata import TagList, OpeningTag, ClosingTag, ContextTag tag_list = TagList([ OpeningTag(1), ContextTag(0, xtob('9c40')), ContextTag(1, xtob('02')), ContextTag(2, xtob('02')), ClosingTag(1) ]) tag_list.debug_contents() The context tags in the middle can be built with other primitives, like this: my_int = Integer(2) app_tag = Tag() my_int.encode(tag) context_tag = tag.app_to_context(1) Let me know if you are doing a lot of this stuff, it occurred to me that it might be nice to have a functions like this in Atomic: def app_tag(self): tag = Tag() self.encode(tag) return tag def context_tag(self, context): return self.app_tag().app_to_context(context) So you can do things like: Integer(2).context_tag(1) Joel |
From: Olivier M. <om...@re...> - 2016-08-19 18:08:04
|
Hi, I need to write a proprietary object. When I do a debug_contents on the property that I want write I obtain something like this (I deleted some context): pduSource = <Address 10.16.0.104> pduExpectingReply = False pduNetworkPriority = 0 apduType = 3 apduSeg = False apduMor = False apduService = 12 apduInvokeID = 2 objectIdentifier = (278, 1) propertyIdentifier = 1101 propertyArrayIndex = 5 propertyValue <bacpypes.primitivedata.Tag(open(1)) instance at 0x75c84570> tagClass = 2 opening tagNumber = 1 tagLVT = 0 tagData = '' <bacpypes.primitivedata.Tag(context(0)) instance at 0x75c845b0> tagClass = 1 context tagNumber = 0 tagLVT = 2 tagData = '9c.40' <bacpypes.primitivedata.Tag(context(1)) instance at 0x75c845f0> tagClass = 1 context tagNumber = 1 tagLVT = 1 tagData = '02' <bacpypes.primitivedata.Tag(context(2)) instance at 0x75c84630> tagClass = 1 context tagNumber = 2 tagLVT = 1 tagData = '02' <bacpypes.primitivedata.Tag(close(1)) instance at 0x75c84a30> tagClass = 3 closing tagNumber = 1 tagLVT = 0 tagData = '' I have some difficulties to create this tagList and after send to the WriteRequest, could you help me? Regards, Olivier Maïly Support Technique / Support Immotique Programmeur 1600, 55e Avenue Lachine (Québec) H8T3J5 Bur. : (514) 636 2878 poste 1621 Cell. : (514) 206 8242 Tel Fr : +33670405490 http://www.regulvar.com/ Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez nous en informer et le supprimer. Il est interdit à toute personne autre que le destinataire visé d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. |
From: Olivier M. <om...@re...> - 2016-08-19 18:00:42
|
Hi, I need to write a proprietary object. When I do a debug_contents on the property that I want write I obtain something like this (I deleted some context): pduSource = <Address 10.16.0.104> pduExpectingReply = False pduNetworkPriority = 0 apduType = 3 apduSeg = False apduMor = False apduService = 12 apduInvokeID = 2 objectIdentifier = (278, 1) propertyIdentifier = 1101 propertyArrayIndex = 5 propertyValue <bacpypes.primitivedata.Tag(open(1)) instance at 0x75c84570> tagClass = 2 opening tagNumber = 1 tagLVT = 0 tagData = '' <bacpypes.primitivedata.Tag(context(0)) instance at 0x75c845b0> tagClass = 1 context tagNumber = 0 tagLVT = 2 tagData = '9c.40' <bacpypes.primitivedata.Tag(context(1)) instance at 0x75c845f0> tagClass = 1 context tagNumber = 1 tagLVT = 1 tagData = '02' <bacpypes.primitivedata.Tag(context(2)) instance at 0x75c84630> tagClass = 1 context tagNumber = 2 tagLVT = 1 tagData = '02' <bacpypes.primitivedata.Tag(close(1)) instance at 0x75c84a30> tagClass = 3 closing tagNumber = 1 tagLVT = 0 tagData = '' I have some difficulties to create this tagList and after send to the WriteRequest, could you help me? Regards, Olivier Maïly Support Technique / Support Immotique Programmeur [logo courriel 3] 1600, 55e Avenue Lachine (Québec) H8T3J5 Bur. : (514) 636 2878 poste 1621 Cell. : (514) 206 8242 Tel Fr : +33670405490 www.regulvar.com<http://www.regulvar.com/> Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez nous en informer et le supprimer. Il est interdit à toute personne autre que le destinataire visé d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. |
From: Olivier M. <om...@re...> - 2016-08-16 14:17:27
|
Hi What I understand when I read the wireshark that I sent you yesterday. - My OWS with address 192.168.43.218 do a whois to the 64.119.216.80 (the public address of my bacpypes with NAT routing) (Line 46) - The bacpypes 64.119.216.80 send the result of the whois to my OWS (Line 47 51 52 53 54) - And I think the problem is in the next step - My OWS send a ReadPropertyMultiple to the bacpypes static address on my network 10.16.0.137 - I don't understand why my OWS send to the public address. I did a wireshark (bac ip2ip.pcanpng) on the network 10.16.0.xxx with another computer and my raspberry and the computer are on a HUB. The address 184.151.127.216 is my public address of my OWS and I see that the OWS send a whois and receive a whois but don't send a ReadPropertyMultiple. I tried to test with the BBMDtoVLan and the OWS saw the virtual device and the object. (I did two captures but the mail is too big...) I don't know what is wrong on my BBMD2IPRouters. Regards, Olivier Maïly Support Technique / Support Immotique Programmeur 1600, 55e Avenue Lachine (Québec) H8T3J5 Bur. : (514) 636 2878 poste 1621 Cell. : (514) 206 8242 Tel Fr : +33670405490 http://www.regulvar.com/ Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez nous en informer et le supprimer. Il est interdit à toute personne autre que le destinataire visé d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. De : Olivier Maily Envoyé : 16 août 2016 06:14 À : Discussion about developing BACpypes <bac...@li...> Objet : [BACpypes-developers] RE : IP2IPRouters I will try to send you this Wireshark. Thanks for the help. Envoyé de mon appareil Samsung de Bell via le réseau le plus vaste au pays. -------- Message d'origine -------- De : Joel Bender <mailto:jo...@ca...> Date : 16-08-15 11:10 PM (GMT-05:00) À : Discussion about developing BACpypes <mailto:bac...@li...> Objet : Re: [BACpypes-developers] IP2IPRouters Oliver, > I want to route the UDP port 47808 to UDP Port 47820 on the same > network I understand, port 47808 is on BACnet network 1 and port 47820 is on BACnet network 40000. > I'm trying the router on 2 ways ; > - First when my OWS is on the same network of my raspberry ... > When I'm on the same network this work well. Good. > - Second When my OWS is out of the network with a NAT configurated on the internet router. It looks like the packet capture you sent me is from the workstation, not from the router itself, so it's a little hard finding out what the router code is or is not doing correctly. If you have a chance, try connecting the devices to a hub (not a switch) and run your packet capture in promiscuous mode. There is a separate section, J.7.8 BBMD Operation with Network Address Translation, and I have not tested any of the BACpypes code in that environment. I might have the bits and pieces of my old test bench I can cobble together, but it might be a while before I can get to it. If you can send me the Wireshark files for the "inside" of the NAT then I can most likely figure out why the return path of the confirmed service isn't making it back to your workstation and maybe there are some simple things I can do to make it work. [Steve, if you see this, I didn't see any place in Annex O where the BBMD was inside the NAT and the foreign device was outside the NAT. Do you have any experience with this configuration?] Joel ------------------------------------------------------------------------------ _______________________________________________ BACpypes-developers mailing list mailto:BAC...@li... https://lists.sourceforge.net/lists/listinfo/bacpypes-developers |
From: Olivier M. <om...@re...> - 2016-08-16 10:13:42
|
I will try to send you this Wireshark. Thanks for the help. Envoyé de mon appareil Samsung de Bell via le réseau le plus vaste au pays. -------- Message d'origine -------- De : Joel Bender <jo...@ca...> Date : 16-08-15 11:10 PM (GMT-05:00) À : Discussion about developing BACpypes <bac...@li...> Objet : Re: [BACpypes-developers] IP2IPRouters Oliver, > I want to route the UDP port 47808 to UDP Port 47820 on the same network I understand, port 47808 is on BACnet network 1 and port 47820 is on BACnet network 40000. > I'm trying the router on 2 ways ; > - First when my OWS is on the same network of my raspberry > ... > When I'm on the same network this work well. Good. > - Second When my OWS is out of the network with a NAT configurated on the internet router. It looks like the packet capture you sent me is from the workstation, not from the router itself, so it's a little hard finding out what the router code is or is not doing correctly. If you have a chance, try connecting the devices to a hub (not a switch) and run your packet capture in promiscuous mode. There is a separate section, J.7.8 BBMD Operation with Network Address Translation, and I have not tested any of the BACpypes code in that environment. I might have the bits and pieces of my old test bench I can cobble together, but it might be a while before I can get to it. If you can send me the Wireshark files for the "inside" of the NAT then I can most likely figure out why the return path of the confirmed service isn't making it back to your workstation and maybe there are some simple things I can do to make it work. [Steve, if you see this, I didn't see any place in Annex O where the BBMD was inside the NAT and the foreign device was outside the NAT. Do you have any experience with this configuration?] Joel ------------------------------------------------------------------------------ _______________________________________________ BACpypes-developers mailing list BAC...@li... https://lists.sourceforge.net/lists/listinfo/bacpypes-developers |
From: Olivier M. <om...@re...> - 2016-08-16 10:13:18
|
No I didn't and I don't know this command... Envoyé de mon appareil Samsung de Bell via le réseau le plus vaste au pays. -------- Message d'origine -------- De : Christian Tremblay <chr...@se...> Date : 16-08-15 9:18 PM (GMT-05:00) À : Discussion about developing BACpypes <bac...@li...> Objet : Re: [BACpypes-developers] IP2IPRouters Did you define the broadcast table using add_peer ? Christian Tremblay, ing. Tél : 450-305-6177, 225 Cell : 450-577-0538 Courriel : chr...@se...<mailto:chr...@se...> [http://www.orijine.com/servisys/wp-content/uploads/2015/10/logo1.png]<http://www.servisys.com> Prenez le contrôle de votre bâtiment 2016-08-15 9:29 GMT-04:00 Olivier Maily <om...@re...<mailto:om...@re...>>: Hi I'm trying to use the IP2IPRouter sample on a raspberry. I want to route the UPDP port 47808 to UDP Port 47820 on the same network I'm trying the router on 2 ways ; - First when my OWS is on the same network of my raspberry - Second When my OWS is out of the network with a NAT configurated on the internet router. I tried with Python IP2IPRouter.py 10.16.0.137/24:47808<http://10.16.0.137/24:47808> 1 10.16.0.137/24:47820<http://10.16.0.137/24:47820> 40000 In my IP2IProuter.py file I changed self.s1_bip=BIPBBMD(addr1) self.s1_annexj=AnnexJCodec() self.s1_mux=UDPMultiplexer(addr1) self.s2_bip=BIPSimple self.s2_annexj=AnnexJCodec() self.s2_mux=UDPMultiplexer(addr2) When I'm on the same network this work well. But when I try to go with extern access, my OWS send the whois, receive the whois, but when he try to read the property he failed... I did a wireshark when I'm out of the network, attached to the mail. Regards, Olivier Maïly Support Technique / Support Immotique Programmeur 1600, 55e Avenue Lachine (Québec) H8T3J5 Bur. : (514) 636 2878 poste 1621 Cell. : (514) 206 8242 Tel Fr : +33670405490 www.regulvar.com<http://www.regulvar.com> Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez nous en informer et le supprimer. Il est interdit à toute personne autre que le destinataire visé d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://sdm.link/zohodev2dev _______________________________________________ BACpypes-developers mailing list BAC...@li...<mailto:BAC...@li...> https://lists.sourceforge.net/lists/listinfo/bacpypes-developers |
From: Joel B. <jo...@ca...> - 2016-08-16 03:10:36
|
Oliver, > I want to route the UDP port 47808 to UDP Port 47820 on the same network I understand, port 47808 is on BACnet network 1 and port 47820 is on BACnet network 40000. > I'm trying the router on 2 ways ; > - First when my OWS is on the same network of my raspberry > ... > When I'm on the same network this work well. Good. > - Second When my OWS is out of the network with a NAT configurated on the internet router. It looks like the packet capture you sent me is from the workstation, not from the router itself, so it's a little hard finding out what the router code is or is not doing correctly. If you have a chance, try connecting the devices to a hub (not a switch) and run your packet capture in promiscuous mode. There is a separate section, J.7.8 BBMD Operation with Network Address Translation, and I have not tested any of the BACpypes code in that environment. I might have the bits and pieces of my old test bench I can cobble together, but it might be a while before I can get to it. If you can send me the Wireshark files for the "inside" of the NAT then I can most likely figure out why the return path of the confirmed service isn't making it back to your workstation and maybe there are some simple things I can do to make it work. [Steve, if you see this, I didn't see any place in Annex O where the BBMD was inside the NAT and the foreign device was outside the NAT. Do you have any experience with this configuration?] Joel |
From: Christian T. <chr...@se...> - 2016-08-16 01:17:57
|
Did you define the broadcast table using add_peer ? *Christian Tremblay, ing.* *Tél :* 450-305-6177, 225 *Cell :* 450-577-0538 *Courriel :* chr...@se... <http://www.servisys.com> *Prenez* *le contrôle **de votre bâtiment* 2016-08-15 9:29 GMT-04:00 Olivier Maily <om...@re...>: > Hi > > I'm trying to use the IP2IPRouter sample on a raspberry. > I want to route the UPDP port 47808 to UDP Port 47820 on the same network > I'm trying the router on 2 ways ; > - First when my OWS is on the same network of my raspberry > - Second When my OWS is out of the network with a NAT configurated on the > internet router. > > I tried with > Python IP2IPRouter.py 10.16.0.137/24:47808 1 10.16.0.137/24:47820 40000 > > In my IP2IProuter.py file I changed > > self.s1_bip=BIPBBMD(addr1) > self.s1_annexj=AnnexJCodec() > self.s1_mux=UDPMultiplexer(addr1) > > self.s2_bip=BIPSimple > self.s2_annexj=AnnexJCodec() > self.s2_mux=UDPMultiplexer(addr2) > > When I'm on the same network this work well. > But when I try to go with extern access, my OWS send the whois, receive > the whois, but when he try to read the property he failed... > > I did a wireshark when I'm out of the network, attached to the mail. > > > Regards, > > > Olivier Maïly > Support Technique / Support Immotique > Programmeur > > 1600, 55e Avenue > Lachine (Québec) H8T3J5 > Bur. : (514) 636 2878 poste 1621 > Cell. : (514) 206 8242 > Tel Fr : +33670405490 > www.regulvar.com > > Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez > nous en informer et le supprimer. Il est interdit à toute personne autre > que le destinataire visé d'utiliser, copier ou diffuser ce message. | This > email is confidential. If you have received it in error, please delete it > and notify us. Any person other than the intended recipient is strictly > prohibited from using, copying or distributing this message. > > > ------------------------------------------------------------ > ------------------ > What NetFlow Analyzer can do for you? Monitors network bandwidth and > traffic > patterns at an interface-level. Reveals which users, apps, and protocols > are > consuming the most bandwidth. Provides multi-vendor support for NetFlow, > J-Flow, sFlow and other flows. Make informed decisions using capacity > planning reports. http://sdm.link/zohodev2dev > _______________________________________________ > BACpypes-developers mailing list > BAC...@li... > https://lists.sourceforge.net/lists/listinfo/bacpypes-developers > > |
From: Olivier M. <om...@re...> - 2016-08-15 13:29:43
|
Hi I'm trying to use the IP2IPRouter sample on a raspberry. I want to route the UPDP port 47808 to UDP Port 47820 on the same network I'm trying the router on 2 ways ; - First when my OWS is on the same network of my raspberry - Second When my OWS is out of the network with a NAT configurated on the internet router. I tried with Python IP2IPRouter.py 10.16.0.137/24:47808 1 10.16.0.137/24:47820 40000 In my IP2IProuter.py file I changed self.s1_bip=BIPBBMD(addr1) self.s1_annexj=AnnexJCodec() self.s1_mux=UDPMultiplexer(addr1) self.s2_bip=BIPSimple self.s2_annexj=AnnexJCodec() self.s2_mux=UDPMultiplexer(addr2) When I'm on the same network this work well. But when I try to go with extern access, my OWS send the whois, receive the whois, but when he try to read the property he failed... I did a wireshark when I'm out of the network, attached to the mail. Regards, Olivier Maïly Support Technique / Support Immotique Programmeur 1600, 55e Avenue Lachine (Québec) H8T3J5 Bur. : (514) 636 2878 poste 1621 Cell. : (514) 206 8242 Tel Fr : +33670405490 www.regulvar.com Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez nous en informer et le supprimer. Il est interdit à toute personne autre que le destinataire visé d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. |
From: Olivier M. <om...@re...> - 2016-08-05 18:33:19
|
Hi I found how to read all the samples of my trendlogs. I add the maxSegmentsAccepted property to my LocalDeviceObject and I put to 64 and I am able to read... Regards, Olivier Maily De : Olivier Maily Envoyé : 2 août 2016 09:47 À : bac...@li... Objet : [BACpypes-developers] ReadRange Request Hi I'm using bacpypes to read trendLog object. I do the command on the sample/ReadRange.py Readrange 10.16.0.104 trendLog 1 logBuffer My trend log on the controler have 500 samples But when I receive the response of the readrange samples, I just receive 309 samples. Do you have an idea? Regards, Olivier Maïly Support Technique / Support Immotique Programmeur 1600, 55e Avenue Lachine (Québec) H8T3J5 Bur. : (514) 636 2878 poste 1621 Cell. : (514) 206 8242 Tel Fr : +33670405490 http://www.regulvar.com/ Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez nous en informer et le supprimer. Il est interdit à toute personne autre que le destinataire visé d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. |
From: Sangeeth S. <san...@gm...> - 2016-08-04 18:55:34
|
I totally missed the ArrayOf! The following code works. from bacpypes.basetypes import DailySchedule, TimeValue from bacpypes.primitivedata import Time, Enumerated from bacpypes.constructeddata import ArrayOf, SequenceOf ws_list = [] WeeklySchedule = ArrayOf(DailySchedule) # Type for schedule in weekly_schedule: tv_list = [] for event in schedule.events: tv = TimeValue( time=Time(str(event.time)), value=Enumerated(int(event.value)) ) tv_list.append(tv) ws_list.append(DailySchedule(daySchedule=tv_list)) ws_object = WeeklySchedule(ws_list) value = Any() value.cast_in(ws_object) Now, write the value. I'll write up a sample program to read/write various properties of schedule object. Thank you, Sangeeth On Wed, Aug 3, 2016 at 1:58 AM, Sangeeth Saravanaraj < san...@gm...> wrote: > Hi Joel, > > I have the following data that should be written to the weeklySchedule > property of schedule object. > > weekly_schedule = [ > [{"time"="01:00:00", "value"=10}], # Monday events > [{"time"="01:00:00", "value"=10}, # Tuesday events > {"time"="02:00:00", "value"=20}], > [{"time"="01:00:00", "value"=10}, # Wednesday events > {"time"="02:00:00", "value"=20}, > {"time"="03:00:00", "value"=30}], > [], # Thursday events > [], # Friday events > [], # Saturday events > [], # Sunday events > ] > > > I have the following snippet of code which parses the above and constructs > the equivalent DailySchedule objects. > > > from bacpypes.basetypes import DailySchedule, TimeValue > from bacpypes.primitivedata import Time, Integer > from bacpypes.constructeddata import Any, AnyAtomic > > _ws = [] > for daily_schedule in weekly_schedule: > _e = [] > for event in daily_schedule.events: > _time = Time(str(event.time)) > # value = Any() > # value.cast_in(Integer(int(event.value))) > _value = AnyAtomic(Integer(int(event.value))) > > tv = TimeValue(time=_time, value=_value) > _e.append(tv) > > _s = DailySchedule(daySchedule=_e) > _ws.append(_s) > > > But I am not able to write the list of DailySchedule objects using > WriteProperty because it is not of type Any. > > > [ERROR 2016-08-03 01:41:07,589 bacpypes.appservice.ApplicationServiceAccessPoint > 1296] confirmed request encoding error: TypeError("'propertyValue' must be > of type Any",) > Traceback (most recent call last): > File "/Users/sangeeth/code/virtual-envs/be/lib/python2.7/site- > packages/bacpypes/appservice.py", line 1293, in sap_indication > apdu.encode(xpdu) > File "/Users/sangeeth/code/virtual-envs/be/lib/python2.7/site-packages/bacpypes/apdu.py", > line 664, in encode > Sequence.encode(self, self._tag_list) > File "/Users/sangeeth/code/virtual-envs/be/lib/python2.7/site- > packages/bacpypes/constructeddata.py", line 133, in encode > raise TypeError("'%s' must be of type %s" % (element.name, > element.klass.__name__)) > TypeError: 'propertyValue' must be of type Any > > > So here are my questions: > > 1. Can I write a list of 7 DailySchedule objects in one shot? If so, how? > > 2. If can't write all 7 DailySchedule objects in one shot, should I have > to write one DailySchedule object at a time with propertyIndex set to 1, 2, > 3, .. 7? > > 3. What is the correct way to cast_in DailySchedule object to Any()? > > 4. What is the correct way to cast_in a list of DailySchedule objects to > Any()? (in case if #1 is possible) > > > Thank you, > > Sangeeth > > > |
From: Sangeeth S. <san...@gm...> - 2016-08-02 20:28:09
|
Hi Joel, I have the following data that should be written to the weeklySchedule property of schedule object. weekly_schedule = [ [{"time"="01:00:00", "value"=10}], # Monday events [{"time"="01:00:00", "value"=10}, # Tuesday events {"time"="02:00:00", "value"=20}], [{"time"="01:00:00", "value"=10}, # Wednesday events {"time"="02:00:00", "value"=20}, {"time"="03:00:00", "value"=30}], [], # Thursday events [], # Friday events [], # Saturday events [], # Sunday events ] I have the following snippet of code which parses the above and constructs the equivalent DailySchedule objects. from bacpypes.basetypes import DailySchedule, TimeValue from bacpypes.primitivedata import Time, Integer from bacpypes.constructeddata import Any, AnyAtomic _ws = [] for daily_schedule in weekly_schedule: _e = [] for event in daily_schedule.events: _time = Time(str(event.time)) # value = Any() # value.cast_in(Integer(int(event.value))) _value = AnyAtomic(Integer(int(event.value))) tv = TimeValue(time=_time, value=_value) _e.append(tv) _s = DailySchedule(daySchedule=_e) _ws.append(_s) But I am not able to write the list of DailySchedule objects using WriteProperty because it is not of type Any. [ERROR 2016-08-03 01:41:07,589 bacpypes.appservice.ApplicationServiceAccessPoint 1296] confirmed request encoding error: TypeError("'propertyValue' must be of type Any",) Traceback (most recent call last): File "/Users/sangeeth/code/virtual-envs/be/lib/python2.7/site-packages/bacpypes/appservice.py", line 1293, in sap_indication apdu.encode(xpdu) File "/Users/sangeeth/code/virtual-envs/be/lib/python2.7/site-packages/bacpypes/apdu.py", line 664, in encode Sequence.encode(self, self._tag_list) File "/Users/sangeeth/code/virtual-envs/be/lib/python2.7/site-packages/bacpypes/constructeddata.py", line 133, in encode raise TypeError("'%s' must be of type %s" % (element.name, element.klass.__name__)) TypeError: 'propertyValue' must be of type Any So here are my questions: 1. Can I write a list of 7 DailySchedule objects in one shot? If so, how? 2. If can't write all 7 DailySchedule objects in one shot, should I have to write one DailySchedule object at a time with propertyIndex set to 1, 2, 3, .. 7? 3. What is the correct way to cast_in DailySchedule object to Any()? 4. What is the correct way to cast_in a list of DailySchedule objects to Any()? (in case if #1 is possible) Thank you, Sangeeth |
From: Tom S. <ben...@gm...> - 2016-08-02 14:22:49
|
UNSUBSCRIBE Tom Sturgeon > On Aug 2, 2016, at 9:59 AM, bac...@li... wrote: > > Send BACpypes-developers mailing list submissions to > bac...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/bacpypes-developers > or, via email, send a message with subject or body 'help' to > bac...@li... > > You can reach the person managing the list at > bac...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of BACpypes-developers digest..." > > > Today's Topics: > > 1. BACpypes application does not send segmented responses. > (Monson, Kyle E) > 2. Re: BACpypes application does not send segmented responses. > (Joel Bender) > 3. Re: BACpypes application does not send segmented responses. > (Monson, Kyle E) > 4. ReadRange Request (Olivier Maily) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Thu, 28 Jul 2016 23:20:11 +0000 > From: "Monson, Kyle E" <Kyl...@pn...> > Subject: [BACpypes-developers] BACpypes application does not send > segmented responses. > To: "bac...@li..." > <bac...@li...> > Message-ID: > <0D350ACB64C43049A576FEF07B13936F44CF67BB@EX10MBOX02.pnnl.gov> > Content-Type: text/plain; charset="us-ascii" > > Hey Joel, > > I've got an application that creates a BACnet device for testing. It's based very heavily on your ReadPropertyMultipleServer sample. It can be found here: https://github.com/VOLTTRON/volttron/blob/develop/scripts/scalability-testing/virtual-drivers/bacnet.py > > You can find a csv file to start it with here: https://raw.githubusercontent.com/VOLTTRON/volttron/develop/examples/configurations/drivers/bacnet.csv > > You can start it with the following command (replacing the IP address as needed, naturally). > > Python bacnet.py bacnet.csv 10.0.2.4/24 --no-daemon --debug > > The problem I'm having is that when a large enough ReadPropertyMultipleRequest comes in that segmentation is required (I think) the application is silently dropping the response without sending it. Smaller requests work just fine. > > I ran tcpdump to verify what was happening. It shows that the request is sent and received by the application. In the case of both the large and small request the console output from the application indicates that it is receiving and processing the request and trying to send the response. > > With a small request the requesting application receives the response and tcpdump shows the return traffic as you would expect. > > With the large request tcpdump does not show any return traffic from the application. It appears that it's being eaten by where ever it goes after you call self.response with the results. > > Am I doing something wrong? I don't see anything to indicate that I need to handle segmentation myself. > > Thanks as always, > Kyle > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > Message: 2 > Date: Fri, 29 Jul 2016 01:02:22 -0400 > From: Joel Bender <jo...@ca...> > Subject: Re: [BACpypes-developers] BACpypes application does not send > segmented responses. > To: Discussion about developing BACpypes > <bac...@li...> > Message-ID: <4E7...@ca...> > Content-Type: text/plain; charset=windows-1252 > > Kyle, > > >> I don?t see anything to indicate that I need to handle segmentation myself. > > The current code does not correctly maintain the relationship between the segmentation supported flags of the clients and servers, both the client and server segmentation state machine classes (and the base class they are derived from) have bugs. > > I believe that I have fixed them in the issue-73 branch, but I wanted to write some unit tests to make sure, because setting up various combinations of supporting or not supporting requests and responses with multiple machines is time consuming and error prone. I have been using VMs with Virtual Box, which is fine for a while (and sometimes fun). > > I'm confident the next release of BACpypes (0.14.0) will fix this. > > > Joel > > > > > ------------------------------ > > Message: 3 > Date: Fri, 29 Jul 2016 16:46:41 +0000 > From: "Monson, Kyle E" <Kyl...@pn...> > Subject: Re: [BACpypes-developers] BACpypes application does not send > segmented responses. > To: Discussion about developing BACpypes > <bac...@li...> > Cc: "Sivaramakrishnan, Chandrika" <cha...@pn...> > Message-ID: > <0D350ACB64C43049A576FEF07B13936F44CF785D@EX10MBOX02.pnnl.gov> > Content-Type: text/plain; charset="us-ascii" > > Thanks Joel! > > -----Original Message----- > From: Joel Bender [mailto:jo...@ca...] > Sent: Thursday, July 28, 2016 22:02 > To: Discussion about developing BACpypes > Subject: Re: [BACpypes-developers] BACpypes application does not send segmented responses. > > Kyle, > > >> I don't see anything to indicate that I need to handle segmentation myself. > > The current code does not correctly maintain the relationship between the segmentation supported flags of the clients and servers, both the client and server segmentation state machine classes (and the base class they are derived from) have bugs. > > I believe that I have fixed them in the issue-73 branch, but I wanted to write some unit tests to make sure, because setting up various combinations of supporting or not supporting requests and responses with multiple machines is time consuming and error prone. I have been using VMs with Virtual Box, which is fine for a while (and sometimes fun). > > I'm confident the next release of BACpypes (0.14.0) will fix this. > > > Joel > > > ------------------------------------------------------------------------------ > _______________________________________________ > BACpypes-developers mailing list > BAC...@li... > https://lists.sourceforge.net/lists/listinfo/bacpypes-developers > > > > ------------------------------ > > Message: 4 > Date: Tue, 2 Aug 2016 13:46:43 +0000 > From: Olivier Maily <om...@re...> > Subject: [BACpypes-developers] ReadRange Request > To: "bac...@li..." > <bac...@li...> > Message-ID: > <964...@la...> > Content-Type: text/plain; charset="iso-8859-1" > > Hi > > I'm using bacpypes to read trendLog object. > I do the command on the sample/ReadRange.py > Readrange 10.16.0.104 trendLog 1 logBuffer > > My trend log on the controler have 500 samples > > [cid:image004.jpg@01D1ECA2.C66FAE40] > > > But when I receive the response of the readrange samples, I just receive 309 samples... > > [cid:image005.png@01D1ECA1.D54C9230] > > Do you have an idea? > > Regards, > > Olivier Ma?ly > Support Technique / Support Immotique > Programmeur > [logo courriel 3] > 1600, 55e Avenue > Lachine (Qu?bec) H8T3J5 > Bur. : (514) 636 2878 poste 1621 > Cell. : (514) 206 8242 > Tel Fr : +33670405490 > www.regulvar.com<http://www.regulvar.com/> > > Ce courriel est confidentiel. Si vous l'avez re?u par erreur, veuillez nous en informer et le supprimer. Il est interdit ? toute personne autre que le destinataire vis? d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. > > -------------- next part -------------- > An HTML attachment was scrubbed... > -------------- next part -------------- > A non-text attachment was scrubbed... > Name: image005.png > Type: image/png > Size: 37891 bytes > Desc: image005.png > -------------- next part -------------- > A non-text attachment was scrubbed... > Name: image004.jpg > Type: image/jpeg > Size: 11653 bytes > Desc: image004.jpg > -------------- next part -------------- > A non-text attachment was scrubbed... > Name: image006.jpg > Type: image/jpeg > Size: 1574 bytes > Desc: image006.jpg > > ------------------------------ > > ------------------------------------------------------------------------------ > > > ------------------------------ > > _______________________________________________ > BACpypes-developers mailing list > BAC...@li... > https://lists.sourceforge.net/lists/listinfo/bacpypes-developers > > > End of BACpypes-developers Digest, Vol 51, Issue 1 > ************************************************** |
From: Olivier M. <om...@re...> - 2016-08-02 13:58:59
|
Hi I'm using bacpypes to read trendLog object. I do the command on the sample/ReadRange.py Readrange 10.16.0.104 trendLog 1 logBuffer My trend log on the controler have 500 samples [cid:image004.jpg@01D1ECA2.C66FAE40] But when I receive the response of the readrange samples, I just receive 309 samples... [cid:image005.png@01D1ECA1.D54C9230] Do you have an idea? Regards, Olivier Maïly Support Technique / Support Immotique Programmeur [logo courriel 3] 1600, 55e Avenue Lachine (Québec) H8T3J5 Bur. : (514) 636 2878 poste 1621 Cell. : (514) 206 8242 Tel Fr : +33670405490 www.regulvar.com<http://www.regulvar.com/> Ce courriel est confidentiel. Si vous l'avez reçu par erreur, veuillez nous en informer et le supprimer. Il est interdit à toute personne autre que le destinataire visé d'utiliser, copier ou diffuser ce message. | This email is confidential. If you have received it in error, please delete it and notify us. Any person other than the intended recipient is strictly prohibited from using, copying or distributing this message. |
From: Monson, K. E <Kyl...@pn...> - 2016-07-29 16:46:49
|
Thanks Joel! -----Original Message----- From: Joel Bender [mailto:jo...@ca...] Sent: Thursday, July 28, 2016 22:02 To: Discussion about developing BACpypes Subject: Re: [BACpypes-developers] BACpypes application does not send segmented responses. Kyle, > I don't see anything to indicate that I need to handle segmentation myself. The current code does not correctly maintain the relationship between the segmentation supported flags of the clients and servers, both the client and server segmentation state machine classes (and the base class they are derived from) have bugs. I believe that I have fixed them in the issue-73 branch, but I wanted to write some unit tests to make sure, because setting up various combinations of supporting or not supporting requests and responses with multiple machines is time consuming and error prone. I have been using VMs with Virtual Box, which is fine for a while (and sometimes fun). I'm confident the next release of BACpypes (0.14.0) will fix this. Joel ------------------------------------------------------------------------------ _______________________________________________ BACpypes-developers mailing list BAC...@li... https://lists.sourceforge.net/lists/listinfo/bacpypes-developers |
From: Joel B. <jo...@ca...> - 2016-07-29 05:02:28
|
Kyle, > I don’t see anything to indicate that I need to handle segmentation myself. The current code does not correctly maintain the relationship between the segmentation supported flags of the clients and servers, both the client and server segmentation state machine classes (and the base class they are derived from) have bugs. I believe that I have fixed them in the issue-73 branch, but I wanted to write some unit tests to make sure, because setting up various combinations of supporting or not supporting requests and responses with multiple machines is time consuming and error prone. I have been using VMs with Virtual Box, which is fine for a while (and sometimes fun). I'm confident the next release of BACpypes (0.14.0) will fix this. Joel |
From: Monson, K. E <Kyl...@pn...> - 2016-07-28 23:20:20
|
Hey Joel, I've got an application that creates a BACnet device for testing. It's based very heavily on your ReadPropertyMultipleServer sample. It can be found here: https://github.com/VOLTTRON/volttron/blob/develop/scripts/scalability-testing/virtual-drivers/bacnet.py You can find a csv file to start it with here: https://raw.githubusercontent.com/VOLTTRON/volttron/develop/examples/configurations/drivers/bacnet.csv You can start it with the following command (replacing the IP address as needed, naturally). Python bacnet.py bacnet.csv 10.0.2.4/24 --no-daemon --debug The problem I'm having is that when a large enough ReadPropertyMultipleRequest comes in that segmentation is required (I think) the application is silently dropping the response without sending it. Smaller requests work just fine. I ran tcpdump to verify what was happening. It shows that the request is sent and received by the application. In the case of both the large and small request the console output from the application indicates that it is receiving and processing the request and trying to send the response. With a small request the requesting application receives the response and tcpdump shows the return traffic as you would expect. With the large request tcpdump does not show any return traffic from the application. It appears that it's being eaten by where ever it goes after you call self.response with the results. Am I doing something wrong? I don't see anything to indicate that I need to handle segmentation myself. Thanks as always, Kyle |
From: Joel B. <jo...@ca...> - 2016-07-14 00:23:04
|
Roel, > I can imagine that this email is very useful for other BACnet beginners, maybe you can just add it to the documentation of BACpypes. This type of application is so common that there really should also be complete sample application. As for documentation, the amount of work that should be done almost boggles the mind! Joel |
From: Roel De C. (3E) <Roe...@3e...> - 2016-07-12 21:34:06
|
Dear Joel, Wow, you really helped me forward today. I'm very thankful for your detailed guide. It's working well now, I have explored the network and obtained lists of all objects. Great!! I can imagine that this email is very useful for other bacnet beginners, maybe you can just add it to the documentation of bacpypes. Even without any modifications, this will be very useful for many. All the best, Roel A Flemish renewable energy landscape, what could it look like?<http://www.3e.eu/energy-landscapes-in-flanders/> [http://www.3e.eu/img/3E_mail.gif]<http://www.3e.eu/> Roel De Coninck Senior R&D Engineer Kalkkaai 6 Quai à la Chaux B-1000 Brussels T +32 2 229 15 18 T +32 486 15 40 30 F +32 2 219 79 89 Invoicing details: 3E - Kalkkaai 6 Quai a la Chaux, 1000 Brussels - VAT: BE 0465 755 594 Electronic invoices to be sent to acc...@3e...<mailto:acc...@3e...> www.3E.eu<http://www.3e.eu/> This email is strictly confidential and intended solely for the use of the individual to whom it is addressed. Any views or opinions presented are solely those of the author and do not necessarily represent those of 3E. If you are not the intended recipient, be advised that you have received this email in error and that any use, dissemination, forwarding, printing or copying of this email is strictly prohibited. ________________________________ From: Joel Bender <jo...@ca...> Sent: 12 July 2016 14:38:30 To: Discussion about developing BACpypes Subject: Re: [BACpypes-developers] Stuck in discovering bacnet objects Roel, > Now I'm still stuck :-( I want to get a list of the objects available in each of these bacnet devices so I can send out the correct read requests. How can I obtain such a list? You have already seen that every BACnet device has a network visible description of itself, its "device object". In BACpypes terms that would be an instance of a DeviceObject. That object has lots and lots of properties, one of which is "object list" (called Object_List in the standard, section 12.11.16, and 'objectList' in BACpypes). There are two types of "lists of things" in BACnet, arrays (called BACnetARRAY of ___) and lists (BACnetList of ___). Arrays you can read in pieces, like reading the length and then reading the individual items, and lists you read all at once. Arrays are expected to sometimes be very long and lists are expected to be relatively short. It's not always clear when a property is an array of something or a list of something, check the standard! In BACpypes you will see properties like 'ArrayOf(ObjectIdentifier)' which are arrays, or 'SequenceOf(AddressBinding)' which are lists. At the point when you are going to be making your list of objects in a device, you already know the device identifier, say 12345, and you already know the address, say 1.2.3.4, so it's simple to read some properties of the device object: ReadPropertyRequest( objectIdentifier=('device', 12345), propertyIdentifier='objectName', ) Check out the ReadProperty.py sample code, so the command would be: read 1.2.3.4 device 12345 objectName Now you want the object list, so you can start out just trying to read it: read 1.2.3.4 device 12345 objectList If that fails because the list is too long to fit in a packet, start by reading the length of the array: read 1.2.3.4 device 12345 objectList 0 ...or in code... ReadPropertyRequest( objectIdentifier=('device', 12345), propertyIdentifier='objectName', propertyArrayIndex=0, ) If you think this is odd, you are correct. Arrays in BACnet are "1 based", with a special value of the length of the list at index zero, which is always Unsigned. Now read the rest of the items in the list, one at a time, and each one will be an object identifier: read 1.2.3.4 device 12345 objectList 1 Knowing the object identifier, like ('analogValue', 1), you can read the name because every object has a name: read 1.2.3.4 analogValue 1 objectName For some more recent versions of BACnet, there is a propertyList property, which is an array of the property identifiers of the properties of the object (which is an ArrayOf(PropertyIdentifier)). So you can continue "going deep" in your discovery process. Joel ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports.http://sdm.link/zohodev2dev _______________________________________________ BACpypes-developers mailing list BAC...@li... https://lists.sourceforge.net/lists/listinfo/bacpypes-developers |
From: Joel B. <jo...@ca...> - 2016-07-12 12:51:15
|
Roel, > Now I'm still stuck :-( I want to get a list of the objects available in each of these bacnet devices so I can send out the correct read requests. How can I obtain such a list? You have already seen that every BACnet device has a network visible description of itself, its "device object". In BACpypes terms that would be an instance of a DeviceObject. That object has lots and lots of properties, one of which is "object list" (called Object_List in the standard, section 12.11.16, and 'objectList' in BACpypes). There are two types of "lists of things" in BACnet, arrays (called BACnetARRAY of ___) and lists (BACnetList of ___). Arrays you can read in pieces, like reading the length and then reading the individual items, and lists you read all at once. Arrays are expected to sometimes be very long and lists are expected to be relatively short. It's not always clear when a property is an array of something or a list of something, check the standard! In BACpypes you will see properties like 'ArrayOf(ObjectIdentifier)' which are arrays, or 'SequenceOf(AddressBinding)' which are lists. At the point when you are going to be making your list of objects in a device, you already know the device identifier, say 12345, and you already know the address, say 1.2.3.4, so it's simple to read some properties of the device object: ReadPropertyRequest( objectIdentifier=('device', 12345), propertyIdentifier='objectName', ) Check out the ReadProperty.py sample code, so the command would be: read 1.2.3.4 device 12345 objectName Now you want the object list, so you can start out just trying to read it: read 1.2.3.4 device 12345 objectList If that fails because the list is too long to fit in a packet, start by reading the length of the array: read 1.2.3.4 device 12345 objectList 0 ...or in code... ReadPropertyRequest( objectIdentifier=('device', 12345), propertyIdentifier='objectName', propertyArrayIndex=0, ) If you think this is odd, you are correct. Arrays in BACnet are "1 based", with a special value of the length of the list at index zero, which is always Unsigned. Now read the rest of the items in the list, one at a time, and each one will be an object identifier: read 1.2.3.4 device 12345 objectList 1 Knowing the object identifier, like ('analogValue', 1), you can read the name because every object has a name: read 1.2.3.4 analogValue 1 objectName For some more recent versions of BACnet, there is a propertyList property, which is an array of the property identifiers of the properties of the object (which is an ArrayOf(PropertyIdentifier)). So you can continue "going deep" in your discovery process. Joel |
From: Roel De C. (3E) <Roe...@3e...> - 2016-07-11 08:36:03
|
Dear Joel, Thanks for your answer. Your solution to add /24 to the IP address works indeed for receiving messages back into the console. That's already a great step forward, thanks!! And your netstat command returns exactly the same. So far, so good. Now I'm still stuck :-( I want to get a list of the objects available in each of these bacnet devices so I can send out the correct read requests. How can I obtain such a list? In other words: What's the next step if I want to read some presentValue properties? How can I obtain the correct addresses and form the proper read query? Thanks a lot for your help, Roel A Flemish renewable energy landscape, what could it look like?<http://www.3e.eu/energy-landscapes-in-flanders/> [http://www.3e.eu/img/3E_mail.gif]<http://www.3e.eu/> Roel De Coninck Senior R&D Engineer Kalkkaai 6 Quai à la Chaux B-1000 Brussels T +32 2 229 15 18 T +32 486 15 40 30 F +32 2 219 79 89 Invoicing details: 3E - Kalkkaai 6 Quai a la Chaux, 1000 Brussels - VAT: BE 0465 755 594 Electronic invoices to be sent to acc...@3e...<mailto:acc...@3e...> www.3E.eu<http://www.3e.eu/> This email is strictly confidential and intended solely for the use of the individual to whom it is addressed. Any views or opinions presented are solely those of the author and do not necessarily represent those of 3E. If you are not the intended recipient, be advised that you have received this email in error and that any use, dissemination, forwarding, printing or copying of this email is strictly prohibited. ________________________________ From: Joel J. Bender <jj...@co...> Sent: 08 July 2016 17:25:19 To: Discussion about developing BACpypes Subject: Re: [BACpypes-developers] Stuck in discovering bacnet objects Roel, - I have a raspberry pi with bacpypes and tshark (command line wireshark) installed Outstanding! - the pi has two network interfaces, eth0 for internet and eth1 is the bacnet network Yep. - I have a BACpypes.ini file that looks like this (objectIdentifier and vendorIdentifier are chosen arbitrarily): [BACpypes] objectName: test_localdevice address: 192.168.1.233 objectIdentifier: 112001 maxApduLengthAccepted: 1476 segmentationSupported: segmentedBoth vendorIdentifier: 264 You address needs to be in CIDR notation, 192.168.1.233/24. The problem is that you are not receiving broadcast messages and the I-Am responses are being sent as broadcast messages. Note that in many devices (but not all, as you have seen) I-Am responses will be coming back as unicast messages. While you are running your application, try this: $ netstat --udp -a -n | grep 47808 udp 0 192.168.1.255:47808 0.0.0.0:* udp 0 192.168.1.233:47808 0.0.0.0:* The first socket is for broadcast traffic, the second is for unicast. If the BACpypes application bound the socket to ('', 47808) like you might expect, not only would your application receive traffic from both interfaces (which might be a security problem) but it wouldn't be able to distinguish between unicast and broadcast traffic. If you are strict in the interpretation of the standard, you are not supposed to respond to confirmed services that were sent to you via a broadcast address. Joel |
From: Joel J. B. <jj...@co...> - 2016-07-08 15:25:53
|
Roel, - I have a raspberry pi with bacpypes and tshark (command line wireshark) installed Outstanding! - the pi has two network interfaces, eth0 for internet and eth1 is the bacnet network Yep. - I have a BACpypes.ini file that looks like this (objectIdentifier and vendorIdentifier are chosen arbitrarily): [BACpypes] objectName: test_localdevice address: 192.168.1.233 objectIdentifier: 112001 maxApduLengthAccepted: 1476 segmentationSupported: segmentedBoth vendorIdentifier: 264 You address needs to be in CIDR notation, 192.168.1.233/24. The problem is that you are not receiving broadcast messages and the I-Am responses are being sent as broadcast messages. Note that in many devices (but not all, as you have seen) I-Am responses will be coming back as unicast messages. While you are running your application, try this: $ netstat --udp -a -n | grep 47808 udp 0 192.168.1.255:47808 0.0.0.0:* udp 0 192.168.1.233:47808 0.0.0.0:* The first socket is for broadcast traffic, the second is for unicast. If the BACpypes application bound the socket to ('', 47808) like you might expect, not only would your application receive traffic from both interfaces (which might be a security problem) but it wouldn't be able to distinguish between unicast and broadcast traffic. If you are strict in the interpretation of the standard, you are not supposed to respond to confirmed services that were sent to you via a broadcast address. Joel |
From: Roel De C. (3E) <Roe...@3e...> - 2016-07-08 14:52:43
|
Dear, I'm trying to read object properties in a bacnet network, but I need some help because I don't get the expected answers from the available bacnet devices. Here's my setup: - I have a raspberry pi with bacpypes and tshark (command line wireshark) installed - the pi has two network interfaces, eth0 for internet and eth1 is the bacnet network - I know the IP addresses of all other bacnet devices - I have a BACpypes.ini file that looks like this (objectIdentifier and vendorIdentifier are chosen arbitrarily): [BACpypes] objectName: test_localdevice address: 192.168.1.233 objectIdentifier: 112001 maxApduLengthAccepted: 1476 segmentationSupported: segmentedBoth vendorIdentifier: 264 - when I run the WhoIsIAm.py script from bacpypes/samples, I can see my outgoing messages captured by tshark, and the answers from the other devices. For example, when I type "whois 192.168.1.255" I get the following lines in tshark: 4 46.046615 192.168.1.233 -> 192.168.1.255 BACnet-APDU 50 Unconfirmed-REQ who-Is 5 46.047240 192.168.1.20 -> 192.168.1.255 BACnet-APDU 62 Unconfirmed-REQ i-Am device,1049477 6 46.049960 192.168.1.10 -> 192.168.1.255 BACnet-APDU 127 Unconfirmed-REQ i-Am device,2098177 [ETHERNET FRAME CHECK SEQUENCE INCORRECT] 7 46.057996 192.168.1.14 -> 192.168.1.255 BACnet-APDU 68 Unconfirmed-REQ i-Am device,100004 8 46.058001 192.168.1.7 -> 192.168.1.255 BACnet-APDU 68 Unconfirmed-REQ i-Am device,100000 9 46.058886 192.168.1.8 -> 192.168.1.255 BACnet-APDU 68 Unconfirmed-REQ i-Am device,100001 10 46.062294 192.168.1.9 -> 192.168.1.255 BACnet-APDU 68 Unconfirmed-REQ i-Am device,100002 11 46.062806 192.168.1.15 -> 192.168.1.255 BACnet-APDU 68 Unconfirmed-REQ i-Am device,100005 12 46.064364 192.168.1.16 -> 192.168.1.255 BACnet-APDU 68 Unconfirmed-REQ i-Am device,100006 13 46.066638 192.168.1.13 -> 192.168.1.255 BACnet-APDU 68 Unconfirmed-REQ i-Am device,100003 14 46.080737 192.168.1.11 -> 192.168.1.255 BACnet-APDU 127 Unconfirmed-REQ i-Am device,2098178 [ETHERNET FRAME CHECK SEQUENCE INCORRECT] 15 46.103011 192.168.1.12 -> 192.168.1.255 BACnet-APDU 127 Unconfirmed-REQ i-Am device,2098179 [ETHERNET FRAME CHECK SEQUENCE INCORRECT] However, there is no response in the console of the WhoIsIAm.py application. Is this normal? Here I'm stuck. I want to get a list of the objects available in each of these bacnet devices so I can send out the correct read requests. How can I obtain such a list? Any help is much appreciated, thanks in advance. Kind regards, Roel A Flemish renewable energy landscape, what could it look like?<http://www.3e.eu/energy-landscapes-in-flanders/> [http://www.3e.eu/img/3E_mail.gif]<http://www.3e.eu/> Roel De Coninck Senior R&D Engineer Kalkkaai 6 Quai à la Chaux B-1000 Brussels T +32 2 229 15 18 T +32 486 15 40 30 F +32 2 219 79 89 Invoicing details: 3E - Kalkkaai 6 Quai a la Chaux, 1000 Brussels - VAT: BE 0465 755 594 Electronic invoices to be sent to acc...@3e...<mailto:acc...@3e...> www.3E.eu<http://www.3e.eu/> This email is strictly confidential and intended solely for the use of the individual to whom it is addressed. Any views or opinions presented are solely those of the author and do not necessarily represent those of 3E. If you are not the intended recipient, be advised that you have received this email in error and that any use, dissemination, forwarding, printing or copying of this email is strictly prohibited. |
From: Joel J. B. <jj...@co...> - 2016-06-24 14:33:00
|
Alexander, I create a device based of the COVMixin-Example. In BACnet terms you are creating a server, something that will be responding to BACnet requests from a client. The BACnet Browser see the device and I can change properties without Problems. The readProperty was successful answered. By this statement I am inferring that the "BACnet Browser" is a client application, so when it issues ReadPropertyRequest commands your application is responding correctly. Now I use an GLT instead of BACnet Browser. It's send "readPropertyMultiple"-APDU's, but the device can't answer. They only send "i-Am device"-Messages (show png). What can I do? I'm not familiar with GLT, but I am inferring that this is a similar tool from another project/vendor. If you application is based on the COV samples, it does not have the functionality to respond to ReadProperyMultipleRequest messages, that is in the ReadPropertyMultipleServer.py sample application. You should be able to extract the do_ReadPropertyMultipleRequest() function out of that sample and paste it into your application. For example, if your application is derived from BIPSimpleApplication, it becomes a new method of that class. I have test the following, but without success: services_supported.value[14] = 1 The services supported property is the network visible description of what the application can do, the services it makes available to clients, but in your case you haven't added the functionality yet. The services support value should be calculated correctly based on introspection in the get_services_supported() function of the Application class. So when you add the correct function, the device object property value will be updated "auto-magically". Joel |