Advertisement
frankiepankie

Slimme meter P1 Dummy sketch

Jul 29th, 2014
1,156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.87 KB | None | 0 0
  1. //This sketch spits out a P1 telegram on pin9 ( (TX) of the Arduino). Scroll down for a variant of this sketch that spits //out random consumption numbers, and two increasing counters for high and low tariff
  2. #include <AltSoftSerial.h>
  3. AltSoftSerial mySerial;
  4.  
  5. int led = 13; //LED op pin 13. LED zal branden als er een telegram wordt uitgestuurd
  6.  
  7. void setup()
  8. {
  9.   mySerial.begin(9600); //P1 baudrate
  10.   Serial.begin(9600); //Serial console baudrate
  11.  
  12. }
  13.  
  14. //P1 telegram found on: http://blog.hekkers.net/2012/09/05/smart-meter-installed/
  15. void loop()
  16. {
  17. digitalWrite(led, HIGH);   // turn the LED on
  18. mySerial.println("/KMP5 KA6U001660297912");                                                                                  
  19. mySerial.println("");                                                                                                                
  20. mySerial.println("0-0:96.1.1(204B413655303031363630323937393132)");  
  21. mySerial.println("1-0:1.8.1(00013.000*kWh)"); //meterstand daltarief                                                        
  22. mySerial.println("8.2(00001.000*kWh)"); //meterstand piektarief                                                            
  23. mySerial.println("1-0:2.8.1(00026.000*kWh)"); //meterstand teruglevering daltarief                                                    
  24. mySerial.println("1-0:2.8.2(00000.000*kWh)"); //meterstand teruglevering piektarief                                                
  25. mySerial.println("0-0:96.14.0(0001)");                                                              
  26. mySerial.println("1-0:1.7.0(0000.54*kW)"); //huidig verbruik in kW                                                          
  27. mySerial.println("1-0:2.7.0(0000.00*kW)"); //huidig opwek in kW                                                        
  28. mySerial.println("0-0:17.0.0(999*A)");                                                              
  29. mySerial.println("0-0:96.3.10(1)"); //stand schakelaar                                                                
  30. mySerial.println("0-0:96.13.1()");                                                                  
  31. mySerial.println("0-0:96.13.0()");                                                                  
  32. mySerial.println("0-1:24.1.0(3)");                                                                  
  33. mySerial.println("0-1:96.1.0(3238313031353431303034303232323131)");                                
  34. mySerial.println("0-1:24.3.0(121028200000)(00)(60)(1)(0-1:24.2.1)(m3)");                            
  35. mySerial.println("(00015.475)"); //meterstand gasmeter (m3)                                                                    
  36. mySerial.println("0-1:24.4.0(1)"); //stand gasklep                                                                  
  37. mySerial.println("!");
  38. digitalWrite(led, LOW);   // turn the LED off
  39. // Wacht 10 sec totdat telegram opnieuw wordt uitgestuurd
  40. delay(10000);
  41. }
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. ////////////////////////////////////////////////////////////////////////////////////////////////////end of static version
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. //The sketch below spits out random numbers for the actual consumption, and has two increasing counters for high and low tariff
  64. #include <AltSoftSerial.h>
  65. AltSoftSerial mySerial;
  66.  
  67. int led = 13; //LED op pin 13. LED zal branden als er een telegram wordt uitgestuurd
  68. long huidigVerbruikRandom;
  69. int meterstandDal  = 000001;
  70. int meterstandPiek = 000002;
  71. int meterstandGas = 00000003;
  72.  
  73. void setup()
  74. {
  75.   mySerial.begin(9600); //P1 baudrate
  76.   Serial.begin(9600); //Serial console baudrate
  77.  
  78.   // if analog input pin 0 is unconnected, random analog
  79.   // noise will cause the call to randomSeed() to generate
  80.   // different seed numbers each time the sketch runs.
  81.   // randomSeed() will then shuffle the random function.
  82.   randomSeed(analogRead(0));
  83. }
  84.  
  85. //P1 telegram found on: http://blog.hekkers.net/2012/09/05/smart-meter-installed/
  86. void loop()
  87. {
  88. huidigVerbruikRandom = random(3680);
  89.  
  90. digitalWrite(led, HIGH);   // turn the LED on
  91.  
  92. //P1 telegram uitsturen (pin 9 is output, TX)
  93. mySerial.println("/KMP5 KA6U001660297912");                                                                                  
  94. mySerial.println("");                                                                                                                
  95. mySerial.println("0-0:96.1.1(204B413655303031363630323937393132)");  
  96. mySerial.print("1-0:1.8.1(");
  97. mySerial.print(meterstandDal);
  98. mySerial.println("*kWh)"); //meterstand daltarief                                                        
  99. mySerial.print("1-01.8.2(");
  100. mySerial.print(meterstandPiek);
  101. mySerial.println("*kWh)"); //meterstand piektarief                                                          
  102. mySerial.println("1-0:2.8.1(00026.000*kWh)"); //meterstand teruglevering daltarief                                                    
  103. mySerial.println("1-0:2.8.2(00000.000*kWh)"); //meterstand teruglevering piektarief                                                
  104. mySerial.println("0-0:96.14.0(0001)");                                                              
  105. mySerial.print("1-0:1.7.0(");
  106. mySerial.print(huidigVerbruikRandom);
  107. mySerial.println("*kW)"); //huidig verbruik in kW                                                          
  108. mySerial.println("1-0:2.7.0(0000.00*kW)"); //huidig opwek in kW                                                        
  109. mySerial.println("0-0:17.0.0(999*A)");                                                              
  110. mySerial.println("0-0:96.3.10(1)"); //stand schakelaar                                                                
  111. mySerial.println("0-0:96.13.1()");                                                                  
  112. mySerial.println("0-0:96.13.0()");                                                                  
  113. mySerial.println("0-1:24.1.0(3)");                                                                  
  114. mySerial.println("0-1:96.1.0(3238313031353431303034303232323131)");                                
  115. mySerial.println("0-1:24.3.0(121028200000)(00)(60)(1)(0-1:24.2.1)(m3)");                            
  116. mySerial.print("(");
  117. mySerial.print(meterstandGas);
  118. mySerial.println(")"); //meterstand gasmeter (m3)                                                                      
  119. mySerial.println("0-1:24.4.0(1)"); //stand gasklep                                                                  
  120. mySerial.println("!");
  121.  
  122. //Weergeven data in serial monitor
  123. Serial.println("/KMP5 KA6U001660297912");                                                                                  
  124. Serial.println("");                                                                                                                
  125. Serial.println("0-0:96.1.1(204B413655303031363630323937393132)");  
  126. Serial.print("1-0:1.8.1(");
  127. Serial.print(meterstandDal);
  128. Serial.println("*kWh)"); //meterstand daltarief                                                        
  129. Serial.print("1-01.8.2(");
  130. Serial.print(meterstandPiek);
  131. Serial.println("*kWh)"); //meterstand piektarief                                                          
  132. Serial.println("1-0:2.8.1(00026.000*kWh)"); //meterstand teruglevering daltarief                                                    
  133. Serial.println("1-0:2.8.2(00000.000*kWh)"); //meterstand teruglevering piektarief                                                
  134. Serial.println("0-0:96.14.0(0001)");                                                              
  135. Serial.print("1-0:1.7.0(");
  136. Serial.print(huidigVerbruikRandom);
  137. Serial.println("*kW)"); //huidig verbruik in kW                                                          
  138. Serial.println("1-0:2.7.0(0000.00*kW)"); //huidig opwek in kW                                                        
  139. Serial.println("0-0:17.0.0(999*A)");                                                              
  140. Serial.println("0-0:96.3.10(1)"); //stand schakelaar                                                                
  141. Serial.println("0-0:96.13.1()");                                                                  
  142. Serial.println("0-0:96.13.0()");                                                                  
  143. Serial.println("0-1:24.1.0(3)");                                                                  
  144. Serial.println("0-1:96.1.0(3238313031353431303034303232323131)");                                
  145. Serial.println("0-1:24.3.0(121028200000)(00)(60)(1)(0-1:24.2.1)(m3)");                            
  146. Serial.print("(");
  147. Serial.print(meterstandGas);
  148. Serial.println(")"); //meterstand gasmeter (m3)                                                                    
  149. Serial.println("0-1:24.4.0(1)"); //stand gasklep                                                                  
  150. Serial.println("!");
  151.  
  152. digitalWrite(led, LOW);   // turn the LED off
  153.  
  154. meterstandDal++;
  155. meterstandPiek++;
  156. meterstandGas++;
  157. // Wacht 10 sec totdat telegram opnieuw wordt uitgestuurd
  158. delay(10000);
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement