View Javadoc
1   package net.sf.mbus4j.slaves;
2   
3   /*
4    * #%L
5    * mbus4j-slaves
6    * %%
7    * Copyright (C) 2009 - 2014 MBus4J
8    * %%
9    * mbus4j - Drivers for the M-Bus protocol - http://mbus4j.sourceforge.net/
10   * Copyright (C) 2009-2014, mbus4j.sf.net, and individual contributors as indicated
11   * by the @authors tag. See the copyright.txt in the distribution for a
12   * full listing of individual contributors.
13   * 
14   * This is free software; you can redistribute it and/or modify it
15   * under the terms of the GNU General Public License as
16   * published by the Free Software Foundation; either version 3 of
17   * the License, or (at your option) any later version.
18   * 
19   * This software is distributed in the hope that it will be useful,
20   * but WITHOUT ANY WARRANTY; without even the implied warranty of
21   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22   * Lesser General Public License for more details.
23   * 
24   * You should have received a copy of the GNU Lesser General Public
25   * License along with this software; if not, write to the Free
26   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
27   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
28   * #L%
29   */
30  
31  import java.util.logging.Logger;
32  import net.sf.mbus4j.MasterStreams;
33  import net.sf.mbus4j.dataframes.MBusMedium;
34  import net.sf.mbus4j.log.LogUtils;
35  
36  import org.junit.After;
37  import org.junit.AfterClass;
38  import static org.junit.Assert.assertTrue;
39  
40  import org.junit.Before;
41  import org.junit.BeforeClass;
42  import org.junit.Ignore;
43  import org.junit.Test;
44  
45  /**
46   *
47   * @author arnep@users.sourceforge.net
48   * @version $Id: SlavesTest.java 110 2014-03-13 19:53:31Z arnep $
49   */
50  public class SlavesTest {
51  
52      @BeforeClass
53      public static void setUpClass()
54              throws Exception {
55      }
56  
57      @AfterClass
58      public static void tearDownClass()
59              throws Exception {
60      }
61      private static Logger log = LogUtils.getSlaveLogger();
62      private Slaves slaves;
63      private MasterStreams master;
64  
65      public SlavesTest() {
66      }
67  
68      @Before
69      public void setUp() throws Exception {
70          master = new MasterStreams(115200 / 4, 50);
71          slaves = new Slaves();
72          slaves.setConnection(master);
73          slaves.open();
74      }
75  
76      @After
77      public void tearDown() throws Exception {
78          slaves.close();
79          slaves = null;
80      }
81  
82      /**
83       * Test of addSlave method, of class Slaves.
84       */
85      @Test(timeout = 10000)
86      @Ignore
87      public void testUserDataResponse()
88              throws Exception {
89          System.out.println("userDataResponse");
90  
91          Slave slave = new Slave(0x01, 12345678, "AMK", 0, MBusMedium.OTHER);
92          slaves.addSlave(slave);
93          slave = new Slave(0x0F, 01234567, "AMK", 0, MBusMedium.OTHER);
94          slaves.addSlave(slave);
95          slave = new Slave(0x10, 00123456, "AMK", 0, MBusMedium.OTHER);
96          slaves.addSlave(slave);
97          slave = new Slave(0xFA, 00012345, "AMK", 0, MBusMedium.OTHER);
98          slaves.addSlave(slave);
99          master.sendRequestAndCollectResponse("107B017C16", "680F0F6808017278563412AB050000000000003F16");
100         master.sendRequestAndCollectResponse("107B017C16", "680F0F6808017278563412AB050000010000004016");
101         master.replay();
102 
103         synchronized (master) {
104             master.wait();
105         }
106 
107         assertTrue(master.isOK());
108 
109         //TODO  FCB ACB ??
110         // BCD behandlung ???
111     }
112 
113     /**
114      * Test of widcardSearch method, of class MBusMaster.
115      */
116     @Test(timeout = 60000)
117     @Ignore
118     public void testWidcardSearch()
119             throws Exception {
120         System.out.println("widcardSearch");
121         slaves.addSlave(new Slave(0x01, 14491001, "DBW", 1, MBusMedium.HOT_WATER));
122         slaves.addSlave(new Slave(0x01, 14491008, "QKG", 1, MBusMedium.HOT_WATER));
123         slaves.addSlave(new Slave(0x01, 32104833, "H@P", 1, MBusMedium.ELECTRICITY));
124         slaves.addSlave(new Slave(0x01, 76543210, "H@P", 1, MBusMedium.GAS));
125 
126         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF0FFFFFFFFFAA16", 100, 3);
127         master.sendRequestAndCollectResponse("680B0B6853FD52FFFFFF1FFFFFFFFFBA16", "E5E5");
128         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF10FFFFFFFFAB16", 100, 3);
129         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF11FFFFFFFFAC16", 100, 3);
130         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF12FFFFFFFFAD16", 100, 3);
131         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF13FFFFFFFFAE16", 100, 3);
132         master.sendRequestAndCollectResponse("680B0B6853FD52FFFFFF14FFFFFFFFAF16", "E5E5");
133         master.sendRequestNoAnswer("680B0B6853FD52FFFF0F14FFFFFFFFBF16", 100, 3);
134         master.sendRequestNoAnswer("680B0B6853FD52FFFF1F14FFFFFFFFCF16", 100, 3);
135         master.sendRequestNoAnswer("680B0B6853FD52FFFF2F14FFFFFFFFDF16", 100, 3);
136         master.sendRequestNoAnswer("680B0B6853FD52FFFF3F14FFFFFFFFEF16", 100, 3);
137         master.sendRequestAndCollectResponse("680B0B6853FD52FFFF4F14FFFFFFFFFF16", "E5E5");
138         master.sendRequestNoAnswer("680B0B6853FD52FFFF4014FFFFFFFFF016", 100, 3);
139         master.sendRequestNoAnswer("680B0B6853FD52FFFF4114FFFFFFFFF116", 100, 3);
140         master.sendRequestNoAnswer("680B0B6853FD52FFFF4214FFFFFFFFF216", 100, 3);
141         master.sendRequestNoAnswer("680B0B6853FD52FFFF4314FFFFFFFFF316", 100, 3);
142         master.sendRequestNoAnswer("680B0B6853FD52FFFF4414FFFFFFFFF416", 100, 3);
143         master.sendRequestNoAnswer("680B0B6853FD52FFFF4514FFFFFFFFF516", 100, 3);
144         master.sendRequestNoAnswer("680B0B6853FD52FFFF4614FFFFFFFFF616", 100, 3);
145         master.sendRequestNoAnswer("680B0B6853FD52FFFF4714FFFFFFFFF716", 100, 3);
146         master.sendRequestNoAnswer("680B0B6853FD52FFFF4814FFFFFFFFF816", 100, 3);
147         master.sendRequestAndCollectResponse("680B0B6853FD52FFFF4914FFFFFFFFF916", "E5E5");
148         master.sendRequestNoAnswer("680B0B6853FD52FF0F4914FFFFFFFF0916", 100, 3);
149         master.sendRequestAndCollectResponse("680B0B6853FD52FF1F4914FFFFFFFF1916", "E5E5");
150         master.sendRequestAndCollectResponse("680B0B6853FD52FF104914FFFFFFFF0A16", "E5E5");
151         master.sendRequestAndCollectResponse("680B0B6853FD520F104914FFFFFFFF1A16", "E5E5");
152         master.sendRequestNoAnswer("680B0B6853FD5200104914FFFFFFFF0B16", 100, 3);
153         master.sendRequestAndCollectResponse("680B0B6853FD5201104914FFFFFFFF0C16", "E5");
154         master.sendRequestAndCollectResponse("105BFD5816", "680F0F680801720110491457100106000000005716");
155         master.sendRequestNoAnswer("680B0B6853FD5202104914FFFFFFFF0D16", 100, 3);
156         master.sendRequestNoAnswer("680B0B6853FD5203104914FFFFFFFF0E16", 100, 3);
157         master.sendRequestNoAnswer("680B0B6853FD5204104914FFFFFFFF0F16", 100, 3);
158         master.sendRequestNoAnswer("680B0B6853FD5205104914FFFFFFFF1016", 100, 3);
159         master.sendRequestNoAnswer("680B0B6853FD5206104914FFFFFFFF1116", 100, 3);
160         master.sendRequestNoAnswer("680B0B6853FD5207104914FFFFFFFF1216", 100, 3);
161         master.sendRequestAndCollectResponse("680B0B6853FD5208104914FFFFFFFF1316", "E5");
162         master.sendRequestAndCollectResponse("105BFD5816", "680F0F68080172081049146745010600000000A316");
163         master.sendRequestNoAnswer("680B0B6853FD5209104914FFFFFFFF1416", 100, 3);
164         master.sendRequestNoAnswer("680B0B6853FD521F104914FFFFFFFF2A16", 100, 3);
165         master.sendRequestNoAnswer("680B0B6853FD522F104914FFFFFFFF3A16", 100, 3);
166         master.sendRequestNoAnswer("680B0B6853FD523F104914FFFFFFFF4A16", 100, 3);
167         master.sendRequestNoAnswer("680B0B6853FD524F104914FFFFFFFF5A16", 100, 3);
168         master.sendRequestNoAnswer("680B0B6853FD525F104914FFFFFFFF6A16", 100, 3);
169         master.sendRequestNoAnswer("680B0B6853FD526F104914FFFFFFFF7A16", 100, 3);
170         master.sendRequestNoAnswer("680B0B6853FD527F104914FFFFFFFF8A16", 100, 3);
171         master.sendRequestNoAnswer("680B0B6853FD528F104914FFFFFFFF9A16", 100, 3);
172         master.sendRequestNoAnswer("680B0B6853FD529F104914FFFFFFFFAA16", 100, 3);
173         master.sendRequestNoAnswer("680B0B6853FD52FF114914FFFFFFFF0B16", 100, 3);
174         master.sendRequestNoAnswer("680B0B6853FD52FF124914FFFFFFFF0C16", 100, 3);
175         master.sendRequestNoAnswer("680B0B6853FD52FF134914FFFFFFFF0D16", 100, 3);
176         master.sendRequestNoAnswer("680B0B6853FD52FF144914FFFFFFFF0E16", 100, 3);
177         master.sendRequestNoAnswer("680B0B6853FD52FF154914FFFFFFFF0F16", 100, 3);
178         master.sendRequestNoAnswer("680B0B6853FD52FF164914FFFFFFFF1016", 100, 3);
179         master.sendRequestNoAnswer("680B0B6853FD52FF174914FFFFFFFF1116", 100, 3);
180         master.sendRequestNoAnswer("680B0B6853FD52FF184914FFFFFFFF1216", 100, 3);
181         master.sendRequestNoAnswer("680B0B6853FD52FF194914FFFFFFFF1316", 100, 3);
182         master.sendRequestNoAnswer("680B0B6853FD52FF2F4914FFFFFFFF2916", 100, 3);
183         master.sendRequestNoAnswer("680B0B6853FD52FF3F4914FFFFFFFF3916", 100, 3);
184         master.sendRequestNoAnswer("680B0B6853FD52FF4F4914FFFFFFFF4916", 100, 3);
185         master.sendRequestNoAnswer("680B0B6853FD52FF5F4914FFFFFFFF5916", 100, 3);
186         master.sendRequestNoAnswer("680B0B6853FD52FF6F4914FFFFFFFF6916", 100, 3);
187         master.sendRequestNoAnswer("680B0B6853FD52FF7F4914FFFFFFFF7916", 100, 3);
188         master.sendRequestNoAnswer("680B0B6853FD52FF8F4914FFFFFFFF8916", 100, 3);
189         master.sendRequestNoAnswer("680B0B6853FD52FF9F4914FFFFFFFF9916", 100, 3);
190         master.sendRequestNoAnswer("680B0B6853FD52FFFF5F14FFFFFFFF0F16", 100, 3);
191         master.sendRequestNoAnswer("680B0B6853FD52FFFF6F14FFFFFFFF1F16", 100, 3);
192         master.sendRequestNoAnswer("680B0B6853FD52FFFF7F14FFFFFFFF2F16", 100, 3);
193         master.sendRequestNoAnswer("680B0B6853FD52FFFF8F14FFFFFFFF3F16", 100, 3);
194         master.sendRequestNoAnswer("680B0B6853FD52FFFF9F14FFFFFFFF4F16", 100, 3);
195         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF15FFFFFFFFB016", 100, 3);
196         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF16FFFFFFFFB116", 100, 3);
197         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF17FFFFFFFFB216", 100, 3);
198         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF18FFFFFFFFB316", 100, 3);
199         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF19FFFFFFFFB416", 100, 3);
200         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF2FFFFFFFFFCA16", 100, 3);
201         master.sendRequestAndCollectResponse("680B0B6853FD52FFFFFF3FFFFFFFFFDA16", "E5");
202         master.sendRequestAndCollectResponse("105BFD5816", "680F0F680801723348103210200102000000006B16");
203         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF4FFFFFFFFFEA16", 100, 3);
204         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF5FFFFFFFFFFA16", 100, 3);
205         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF6FFFFFFFFF0A16", 100, 3);
206         master.sendRequestAndCollectResponse("680B0B6853FD52FFFFFF7FFFFFFFFF1A16", "E5");
207         master.sendRequestAndCollectResponse("105BFD5816", "680F0F68080172103254761020010300000000BB16");
208         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF8FFFFFFFFF2A16", 100, 3);
209         master.sendRequestNoAnswer("680B0B6853FD52FFFFFF9FFFFFFFFF3A16", 100, 3);
210         master.replay();
211 
212         synchronized (master) {
213             master.wait();
214         }
215 
216         assertTrue(master.isOK());
217         log.info("widcardSearch finished");
218     }
219 }