import java.io.IOException; import java.net.*; import java.util.Arrays; class PSEheating1 { public static void main(String args[]) throws Exception { InetAddress sourceAddress = InetAddress.getByName("0.0.0.0"); DatagramSocket clientSocket = null; try { clientSocket = new DatagramSocket(55555, sourceAddress); clientSocket.setSoTimeout(5000); // Initialisation InetAddress IPAddress = InetAddress.getByName("192.168.10.30"); byte[] receiveData = new byte[2048]; byte[] sendData = {(byte)0x08,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x31,(byte)0x32,(byte)0x33,(byte)0x34}; DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); clientSocket.receive(receivePacket); byte[] temp = {(byte)0x01,(byte)0x14,(byte)0x00,(byte)0x01,(byte)0x14,(byte)0x00,(byte)0x02}; sendData = newSendData01(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x00,(byte)0x03,(byte)0x03,(byte)0x04,(byte)0x0e,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xf8,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x56,(byte)0x72,(byte)0x41,(byte)0xb5}; sendData = newSendData01(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); sendData = new byte[] {(byte)0x01,(byte)0xf7,(byte)0x00,(byte)0xf7,(byte)0x00,(byte)0xf7,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00}; sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); // Post-Init Phase // 2x NOOP receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); // Start Screen receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x16,(byte)0x00,(byte)0x1e,(byte)0xed,(byte)0x00,(byte)0xab,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x87,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); // Heizkreis receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x21,(byte)0x25,(byte)0x00,(byte)0x3e,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); // Heizzeitprogrammbalken receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x2c,(byte)0x3d,(byte)0x00,(byte)0xb6,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); // Programmwahl: auf 1 receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x09,(byte)0x00,(byte)0x15,(byte)0x57,(byte)0x00,(byte)0x38,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0xe6,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); // Confirm receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x09,(byte)0x00,(byte)0x19,(byte)0x1c,(byte)0x01,(byte)0xe6,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0xe6,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); temp = new byte[]{(byte)0x00,(byte)0x02,(byte)0x00,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0x00,(byte)0x00,(byte)0xff,(byte)0x1f,(byte)0x00,(byte)0x00}; sendData = newSendData09(temp, receiveData); sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); // Bye clientSocket.receive(receivePacket); sendData = new byte[] {(byte)0x08,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00}; sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 3477); clientSocket.send(sendPacket); } catch (SocketTimeoutException a) { System.out.println("no answer"); } catch (IOException e) { System.out.println(e.toString()); } finally { if (clientSocket!=null) { clientSocket.close(); } } } public static byte[] newSendData01(byte[] temp, byte[] receiveData) { byte[] newSendData = Arrays.copyOf(receiveData, temp.length+6); for (int x=0; x