Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. P1 not working when using Mysensors ?

P1 not working when using Mysensors ?

Scheduled Pinned Locked Moved Troubleshooting
10 Posts 3 Posters 584 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    Toine33
    wrote on last edited by
    #1

    Hey guys,

    I am trying to make this sketch work for a few days now but it looks like it wont work in combination with Mysensors.
    Here the sketch without the Mysensors.
    I am receiving output of the P1 Port on hardware serial 2.

    
    #define MY_DEBUG
    
    //#define MY_RADIO_RF24
    //#include <MySensors.h>
    
    
    
    char c;
     
    void setup() {
     Serial.begin(19200);
      Serial2.begin(9600, SERIAL_7N1);
    }
     
    void loop() {
        if (Serial2.available()) {
            c = Serial2.read();
    
        Serial.print(c);
        }
    }
    
    
    
    
    
    /* Baud-rates available: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200, 256000, 512000, 962100
     *  
     *  Protocols available:
     * SERIAL_5N1   5-bit No parity 1 stop bit
     * SERIAL_6N1   6-bit No parity 1 stop bit
     * SERIAL_7N1   7-bit No parity 1 stop bit
     * SERIAL_8N1 (the default) 8-bit No parity 1 stop bit
     * SERIAL_5N2   5-bit No parity 2 stop bits 
     * SERIAL_6N2   6-bit No parity 2 stop bits
     * SERIAL_7N2   7-bit No parity 2 stop bits
     * SERIAL_8N2   8-bit No parity 2 stop bits 
     * SERIAL_5E1   5-bit Even parity 1 stop bit
     * SERIAL_6E1   6-bit Even parity 1 stop bit
     * SERIAL_7E1   7-bit Even parity 1 stop bit 
     * SERIAL_8E1   8-bit Even parity 1 stop bit 
     * SERIAL_5E2   5-bit Even parity 2 stop bit 
     * SERIAL_6E2   6-bit Even parity 2 stop bit 
     * SERIAL_7E2   7-bit Even parity 2 stop bit  
     * SERIAL_8E2   8-bit Even parity 2 stop bit  
     * SERIAL_5O1   5-bit Odd  parity 1 stop bit  
     * SERIAL_6O1   6-bit Odd  parity 1 stop bit   
     * SERIAL_7O1   7-bit Odd  parity 1 stop bit  
     * SERIAL_8O1   8-bit Odd  parity 1 stop bit   
     * SERIAL_5O2   5-bit Odd  parity 2 stop bit   
     * SERIAL_6O2   6-bit Odd  parity 2 stop bit    
     * SERIAL_7O2   7-bit Odd  parity 2 stop bit    
     * SERIAL_8O2   8-bit Odd  parity 2 stop bit    
    */
    
    

    When i am using this same sketch with the Mysensors it is not giving output anymore.
    Does someone has an clue ?
    I have used an Arduino nano 16mhz first on altsoftserial with the same result.
    in this example i am using an Arduino mega 2560.

    
    #define MY_DEBUG
    
    #define MY_RADIO_RF24
    #include <MySensors.h>
    
    
    
    char c;
     
    void setup() {
     Serial.begin(19200);
      Serial2.begin(9600, SERIAL_7N1);
    }
     
    void loop() {
        if (Serial2.available()) {
            c = Serial2.read();
    
        Serial.print(c);
        }
    }
    
    
    
    
    
    /* Baud-rates available: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200, 256000, 512000, 962100
     *  
     *  Protocols available:
     * SERIAL_5N1   5-bit No parity 1 stop bit
     * SERIAL_6N1   6-bit No parity 1 stop bit
     * SERIAL_7N1   7-bit No parity 1 stop bit
     * SERIAL_8N1 (the default) 8-bit No parity 1 stop bit
     * SERIAL_5N2   5-bit No parity 2 stop bits 
     * SERIAL_6N2   6-bit No parity 2 stop bits
     * SERIAL_7N2   7-bit No parity 2 stop bits
     * SERIAL_8N2   8-bit No parity 2 stop bits 
     * SERIAL_5E1   5-bit Even parity 1 stop bit
     * SERIAL_6E1   6-bit Even parity 1 stop bit
     * SERIAL_7E1   7-bit Even parity 1 stop bit 
     * SERIAL_8E1   8-bit Even parity 1 stop bit 
     * SERIAL_5E2   5-bit Even parity 2 stop bit 
     * SERIAL_6E2   6-bit Even parity 2 stop bit 
     * SERIAL_7E2   7-bit Even parity 2 stop bit  
     * SERIAL_8E2   8-bit Even parity 2 stop bit  
     * SERIAL_5O1   5-bit Odd  parity 1 stop bit  
     * SERIAL_6O1   6-bit Odd  parity 1 stop bit   
     * SERIAL_7O1   7-bit Odd  parity 1 stop bit  
     * SERIAL_8O1   8-bit Odd  parity 1 stop bit   
     * SERIAL_5O2   5-bit Odd  parity 2 stop bit   
     * SERIAL_6O2   6-bit Odd  parity 2 stop bit    
     * SERIAL_7O2   7-bit Odd  parity 2 stop bit    
     * SERIAL_8O2   8-bit Odd  parity 2 stop bit    
    */
    
    
    mfalkviddM 1 Reply Last reply
    0
    • T Toine33

      Hey guys,

      I am trying to make this sketch work for a few days now but it looks like it wont work in combination with Mysensors.
      Here the sketch without the Mysensors.
      I am receiving output of the P1 Port on hardware serial 2.

      
      #define MY_DEBUG
      
      //#define MY_RADIO_RF24
      //#include <MySensors.h>
      
      
      
      char c;
       
      void setup() {
       Serial.begin(19200);
        Serial2.begin(9600, SERIAL_7N1);
      }
       
      void loop() {
          if (Serial2.available()) {
              c = Serial2.read();
      
          Serial.print(c);
          }
      }
      
      
      
      
      
      /* Baud-rates available: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200, 256000, 512000, 962100
       *  
       *  Protocols available:
       * SERIAL_5N1   5-bit No parity 1 stop bit
       * SERIAL_6N1   6-bit No parity 1 stop bit
       * SERIAL_7N1   7-bit No parity 1 stop bit
       * SERIAL_8N1 (the default) 8-bit No parity 1 stop bit
       * SERIAL_5N2   5-bit No parity 2 stop bits 
       * SERIAL_6N2   6-bit No parity 2 stop bits
       * SERIAL_7N2   7-bit No parity 2 stop bits
       * SERIAL_8N2   8-bit No parity 2 stop bits 
       * SERIAL_5E1   5-bit Even parity 1 stop bit
       * SERIAL_6E1   6-bit Even parity 1 stop bit
       * SERIAL_7E1   7-bit Even parity 1 stop bit 
       * SERIAL_8E1   8-bit Even parity 1 stop bit 
       * SERIAL_5E2   5-bit Even parity 2 stop bit 
       * SERIAL_6E2   6-bit Even parity 2 stop bit 
       * SERIAL_7E2   7-bit Even parity 2 stop bit  
       * SERIAL_8E2   8-bit Even parity 2 stop bit  
       * SERIAL_5O1   5-bit Odd  parity 1 stop bit  
       * SERIAL_6O1   6-bit Odd  parity 1 stop bit   
       * SERIAL_7O1   7-bit Odd  parity 1 stop bit  
       * SERIAL_8O1   8-bit Odd  parity 1 stop bit   
       * SERIAL_5O2   5-bit Odd  parity 2 stop bit   
       * SERIAL_6O2   6-bit Odd  parity 2 stop bit    
       * SERIAL_7O2   7-bit Odd  parity 2 stop bit    
       * SERIAL_8O2   8-bit Odd  parity 2 stop bit    
      */
      
      

      When i am using this same sketch with the Mysensors it is not giving output anymore.
      Does someone has an clue ?
      I have used an Arduino nano 16mhz first on altsoftserial with the same result.
      in this example i am using an Arduino mega 2560.

      
      #define MY_DEBUG
      
      #define MY_RADIO_RF24
      #include <MySensors.h>
      
      
      
      char c;
       
      void setup() {
       Serial.begin(19200);
        Serial2.begin(9600, SERIAL_7N1);
      }
       
      void loop() {
          if (Serial2.available()) {
              c = Serial2.read();
      
          Serial.print(c);
          }
      }
      
      
      
      
      
      /* Baud-rates available: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200, 256000, 512000, 962100
       *  
       *  Protocols available:
       * SERIAL_5N1   5-bit No parity 1 stop bit
       * SERIAL_6N1   6-bit No parity 1 stop bit
       * SERIAL_7N1   7-bit No parity 1 stop bit
       * SERIAL_8N1 (the default) 8-bit No parity 1 stop bit
       * SERIAL_5N2   5-bit No parity 2 stop bits 
       * SERIAL_6N2   6-bit No parity 2 stop bits
       * SERIAL_7N2   7-bit No parity 2 stop bits
       * SERIAL_8N2   8-bit No parity 2 stop bits 
       * SERIAL_5E1   5-bit Even parity 1 stop bit
       * SERIAL_6E1   6-bit Even parity 1 stop bit
       * SERIAL_7E1   7-bit Even parity 1 stop bit 
       * SERIAL_8E1   8-bit Even parity 1 stop bit 
       * SERIAL_5E2   5-bit Even parity 2 stop bit 
       * SERIAL_6E2   6-bit Even parity 2 stop bit 
       * SERIAL_7E2   7-bit Even parity 2 stop bit  
       * SERIAL_8E2   8-bit Even parity 2 stop bit  
       * SERIAL_5O1   5-bit Odd  parity 1 stop bit  
       * SERIAL_6O1   6-bit Odd  parity 1 stop bit   
       * SERIAL_7O1   7-bit Odd  parity 1 stop bit  
       * SERIAL_8O1   8-bit Odd  parity 1 stop bit   
       * SERIAL_5O2   5-bit Odd  parity 2 stop bit   
       * SERIAL_6O2   6-bit Odd  parity 2 stop bit    
       * SERIAL_7O2   7-bit Odd  parity 2 stop bit    
       * SERIAL_8O2   8-bit Odd  parity 2 stop bit    
      */
      
      
      mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by mfalkvidd
      #2

      Welcome to the mysensors community @toine33

      What does the debug output from the node say?

      Are you sure the nrf24 is correctly wired? Is your gateway and controller up and running?

      If you haven't already, see https://forum.mysensors.org/topic/666/debug-faq-and-how-ask-for-help/ for the most common problems and how to troubleshoot them efficiently.

      1 Reply Last reply
      0
      • T Offline
        T Offline
        Toine33
        wrote on last edited by
        #3

        So the output wich is given on the first sketch is :

        /ISk5\2MT382-1003
        
        0-0:96.1.1(5A424556303035303738373110323132)
        1-0:1.8.1(08316.297*kWh)
        1-0:1.8.2(08472.574*kWh)
        1-0:2.8.1(00000.020*kWh)
        1-0:2.8.2(00000.010*kWh)
        0-0:96.14.0(0001)
        1-0:1.7.0(0000.38*kW)
        1-0:2.7.0(0000.00*kW)
        0-0:17.0.0(0999.00*kW)
        0-0:96.3.10(1)
        0-0:96.13.1()
        0-0:96.13.0()
        0-1:24.1.0(3)
        0-1:96.1.0(3238303131303031323031113336343132)
        0-1:24.3.0(190907210000)(00)(60)(1)(0-1:24.2.1)(m3)
        (04212.860)
        0-1:24.4.0(1)
        !
        
        

        You can see here the output of my energy meter wich is given every 10 seconds

        And this is the output when i am using the sketch with Mysensors,
        It is curently not connected because im am unable at the moment.
        The strange part is that the serial prints are not workig at this stage anymore or is this normal when using mysensors?

         
         __  __       ____
        |  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
        | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
        | |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
        |_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
                |___/                      2.3.0
        
        16 MCO:BGN:INIT NODE,CP=RNNNA---,VER=2.3.0
        25 TSM:INIT
        26 TSF:WUR:MS=0
        33 !TSM:INIT:TSP FAIL
        35 TSM:FAIL:CNT=1
        37 TSM:FAIL:DIS
        38 TSF:TDI:TSL
        10040 TSM:FAIL:RE-INIT
        10042 TSM:INIT
        10048 !TSM:INIT:TSP FAIL
        10051 TSM:FAIL:CNT=2
        10053 TSM:FAIL:DIS
        10054 TSF:TDI:TSL
        20057 TSM:FAIL:RE-INIT
        20059 TSM:INIT
        20065 !TSM:INIT:TSP FAIL
        20068 TSM:FAIL:CNT=3
        20070 TSM:FAIL:DIS
        20071 TSF:TDI:TSL
        30074 TSM:FAIL:RE-INIT
        30076 TSM:INIT
        30083 !TSM:INIT:TSP FAIL
        30086 TSM:FAIL:CNT=4
        30088 TSM:FAIL:DIS
        30089 TSF:TDI:TSL
        40092 TSM:FAIL:RE-INIT
        40094 TSM:INIT
        40100 !TSM:INIT:TSP FAIL
        40103 TSM:FAIL:CNT=5
        40105 TSM:FAIL:DIS
        40107 TSF:TDI:TSL
        50110 TSM:FAIL:RE-INIT
        50112 TSM:INIT
        50118 !TSM:INIT:TSP FAIL
        50121 TSM:FAIL:CNT=6
        50123 TSM:FAIL:DIS
        50124 TSF:TDI:TSL
        60127 TSM:FAIL:RE-INIT
        60129 TSM:INIT
        60135 !TSM:INIT:TSP FAIL
        60138 TSM:FAIL:CNT=7
        60140 TSM:FAIL:DIS
        60141 TSF:TDI:TSL
        120144 TSM:FAIL:RE-INIT
        120146 TSM:INIT
        120154 !TSM:INIT:TSP FAIL
        120156 TSM:FAIL:CNT=7
        120158 TSM:FAIL:DIS
        120160 TSF:TDI:TSL
        

        P.S
        I have done some testing also on RS485 and had the same situation.

        mfalkviddM 1 Reply Last reply
        0
        • T Toine33

          So the output wich is given on the first sketch is :

          /ISk5\2MT382-1003
          
          0-0:96.1.1(5A424556303035303738373110323132)
          1-0:1.8.1(08316.297*kWh)
          1-0:1.8.2(08472.574*kWh)
          1-0:2.8.1(00000.020*kWh)
          1-0:2.8.2(00000.010*kWh)
          0-0:96.14.0(0001)
          1-0:1.7.0(0000.38*kW)
          1-0:2.7.0(0000.00*kW)
          0-0:17.0.0(0999.00*kW)
          0-0:96.3.10(1)
          0-0:96.13.1()
          0-0:96.13.0()
          0-1:24.1.0(3)
          0-1:96.1.0(3238303131303031323031113336343132)
          0-1:24.3.0(190907210000)(00)(60)(1)(0-1:24.2.1)(m3)
          (04212.860)
          0-1:24.4.0(1)
          !
          
          

          You can see here the output of my energy meter wich is given every 10 seconds

          And this is the output when i am using the sketch with Mysensors,
          It is curently not connected because im am unable at the moment.
          The strange part is that the serial prints are not workig at this stage anymore or is this normal when using mysensors?

           
           __  __       ____
          |  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
          | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
          | |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
          |_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
                  |___/                      2.3.0
          
          16 MCO:BGN:INIT NODE,CP=RNNNA---,VER=2.3.0
          25 TSM:INIT
          26 TSF:WUR:MS=0
          33 !TSM:INIT:TSP FAIL
          35 TSM:FAIL:CNT=1
          37 TSM:FAIL:DIS
          38 TSF:TDI:TSL
          10040 TSM:FAIL:RE-INIT
          10042 TSM:INIT
          10048 !TSM:INIT:TSP FAIL
          10051 TSM:FAIL:CNT=2
          10053 TSM:FAIL:DIS
          10054 TSF:TDI:TSL
          20057 TSM:FAIL:RE-INIT
          20059 TSM:INIT
          20065 !TSM:INIT:TSP FAIL
          20068 TSM:FAIL:CNT=3
          20070 TSM:FAIL:DIS
          20071 TSF:TDI:TSL
          30074 TSM:FAIL:RE-INIT
          30076 TSM:INIT
          30083 !TSM:INIT:TSP FAIL
          30086 TSM:FAIL:CNT=4
          30088 TSM:FAIL:DIS
          30089 TSF:TDI:TSL
          40092 TSM:FAIL:RE-INIT
          40094 TSM:INIT
          40100 !TSM:INIT:TSP FAIL
          40103 TSM:FAIL:CNT=5
          40105 TSM:FAIL:DIS
          40107 TSF:TDI:TSL
          50110 TSM:FAIL:RE-INIT
          50112 TSM:INIT
          50118 !TSM:INIT:TSP FAIL
          50121 TSM:FAIL:CNT=6
          50123 TSM:FAIL:DIS
          50124 TSF:TDI:TSL
          60127 TSM:FAIL:RE-INIT
          60129 TSM:INIT
          60135 !TSM:INIT:TSP FAIL
          60138 TSM:FAIL:CNT=7
          60140 TSM:FAIL:DIS
          60141 TSF:TDI:TSL
          120144 TSM:FAIL:RE-INIT
          120146 TSM:INIT
          120154 !TSM:INIT:TSP FAIL
          120156 TSM:FAIL:CNT=7
          120158 TSM:FAIL:DIS
          120160 TSF:TDI:TSL
          

          P.S
          I have done some testing also on RS485 and had the same situation.

          mfalkviddM Offline
          mfalkviddM Offline
          mfalkvidd
          Mod
          wrote on last edited by
          #4

          @toine33 yes this is normal. MySensors is unable to initialize the radio so it never reaches setup, nor loop.

          1 Reply Last reply
          0
          • electrikE Offline
            electrikE Offline
            electrik
            wrote on last edited by
            #5

            You expect the baudrate to be 19200, but Mysensors also initialises the port at a baudrate. Maybe that one is done later and you should use the terminal on that baudrate?

            1 Reply Last reply
            0
            • T Offline
              T Offline
              Toine33
              wrote on last edited by
              #6

              Hey guys,
              Thanks for helping :) . The sketch was working after i have deleted the Serial.begin in the void setup.

              void setup() {
              Serial.begin(19200);

              i only have some other issues at the moment haha,
              The value's from the gas meter / high an low elecktricity are showing wrong within Domoticz
              0_1567966720801_497ea466-8ee8-4bd4-be51-f4dc3f5c7099-image.png

              When i am doing /1000 on the send values of the GAS meter and elecktricity meters i am getting an beter value but i loose 3 decimals and cant see any calculated value by domoticz.
              Is there an option to send these decimals ?

              0_1567967331476_a16e0f3a-43fe-4ce7-9de6-46a76a1d0547-image.png

              #define MY_DEBUG 
              #define MY_RS485
              #define MY_RS485_DE_PIN 2
              #define MY_RS485_BAUD_RATE 19200
              #define MY_RS485_HWSERIAL Serial
              #define MY_NODE_ID 3
              
              #include <AltSoftSerial.h>
              #include <SPI.h>
              #include <MySensors.h>  
              
              AltSoftSerial altSerial;
              
              int msg[1];
              const uint64_t pipe = 0xE8E8F0F0E1LL;
              
              const int requestPin =  4;         
              char input; // incoming serial data (byte)
              bool readnextLine = false;
              #define BUFSIZE 500
              #define CHILD_ID_WATT 0
              #define CHILD_ID_KWH_LOW 1
              #define CHILD_ID_KWH_HIGH 2
              #define CHILD_ID_GAS 3
              #define CHILD_ID_CURRENT 4
              
              char buffer[BUFSIZE]; //Buffer for serial data to find \n .
              int bufpos = 0;
              long mEVLT = 0; //Meter reading Electrics - consumption low tariff
              long mEVHT = 0; //Meter reading Electrics - consumption high tariff
              long mEAV = 0;  //Meter reading Electrics - Actual consumption
              long mEAT = 0;  //Meter reading Electrics - Actual generated electricity (Solar panels)
              long mG = 0;   //Meter reading Gas
              
              MyMessage msgWatt(CHILD_ID_WATT, V_WATT);
              MyMessage msgKwhLow(CHILD_ID_KWH_LOW, V_KWH);      //Was V_KWH
              MyMessage msgKwhHigh(CHILD_ID_KWH_HIGH, V_KWH);     //Was V_KWH
              MyMessage msgGas(CHILD_ID_GAS, V_VOLUME);
              
              
              
              void setup() {
              //  Serial.begin(19200);
              //  delay(1000);
                
                altSerial.begin(9600);
                delay(1000);
              }
              
              
              void presentation() {
                // Send the sketch version information to the gateway and Controller
                sendSketchInfo("Node", "1.0");
                present(CHILD_ID_WATT, S_POWER);
                present(CHILD_ID_KWH_LOW, S_POWER);
                present(CHILD_ID_KWH_HIGH, S_POWER);
                present(CHILD_ID_GAS, S_GAS);
              }
              
              
              
              void loop() {
                long tl = 0;
                long tld =0;
                if (altSerial.available()) {
                    char input = altSerial.read();
                    buffer[bufpos] = input&127;
                    bufpos++;
                    if (input == '\n') { // We received a new line (data up to \n)
                      // 1-0:1.8.2 = Electricity consumption high tariff (DSMR v4.0)
                      if (sscanf(buffer,"1-0:1.8.2(%ld%.%ld%*s" , &tl, &tld) >0 ) {
                        tl *= 1000;
                        tl += tld;
                        mEVHT = tl;
                        //mEVHT = tl * 1000 + tld;
                        if (mEVHT > 0) {
                
                          //mEVHT = 0;
                        }
                      }
                
                
              
                      if (sscanf(buffer,"1-0:1.8.1(%ld.%ld" ,&tl, &tld)==2){
                        tl *= 1000;
                        tl += tld;
                        mEVLT = tl;
                
                        if (mEVLT > 0) {
                
                
                        }
                      }
              
              
                
                      // 1-0:1.7.0 = Electricity consumption actual usage (DSMR v4.0)
                      if (sscanf(buffer,"1-0:1.7.0(%ld.%ld" ,&tl , &tld) == 2)
                      { 
                        mEAV = (tl*1000)+tld*10;            
                        if (mEAV > 0) {
                
                        }
                      }
              
              
              
              
              
              
              
              /* Geeft actuele waarde door maar doet geen compare
              if (sscanf(buffer,"(%ld.%ld" , &tl, &tld)==2 ) 
                    {   mG = (tl*1000.0)+tld;
                    mG = mG/1000;
                    }
              */
              
              
              
              //Gastand uitlezen
              if (sscanf(buffer,"(%ld.%ld" , &tl, &tld)==2 ) 
                    {   mG = (tl*1000.0)+tld;
                    mG = mG;
                    }
              
              
              
              
                
                      // Empty buffer again (whole array)
                      for (int i=0; i<500; i++)
                      { 
                        buffer[i] = 0;
                      }
                      bufpos = 0;
                
                    }
                     
                    if (input == '!') {   //uitroepteken geeft einde van telegram aan, dus we gaan data versturen
                      #ifdef DEBUG
                        printData();
                      #endif
                      send(msgWatt.set(mEAV));
                      send(msgKwhLow.set(mEVLT));
                      send(msgKwhHigh.set(mEVHT));
                      send(msgGas.set(mG));
                      mEVHT=0;
                      mEVLT = 0;
                      mEAV = 0;
                      mG = 0;
                      //client.stop();
                    } //Einde vraagteken detectie   
                
                  } 
              
              }
              
              
               
              

              Thanks !

              mfalkviddM 1 Reply Last reply
              0
              • T Toine33

                Hey guys,
                Thanks for helping :) . The sketch was working after i have deleted the Serial.begin in the void setup.

                void setup() {
                Serial.begin(19200);

                i only have some other issues at the moment haha,
                The value's from the gas meter / high an low elecktricity are showing wrong within Domoticz
                0_1567966720801_497ea466-8ee8-4bd4-be51-f4dc3f5c7099-image.png

                When i am doing /1000 on the send values of the GAS meter and elecktricity meters i am getting an beter value but i loose 3 decimals and cant see any calculated value by domoticz.
                Is there an option to send these decimals ?

                0_1567967331476_a16e0f3a-43fe-4ce7-9de6-46a76a1d0547-image.png

                #define MY_DEBUG 
                #define MY_RS485
                #define MY_RS485_DE_PIN 2
                #define MY_RS485_BAUD_RATE 19200
                #define MY_RS485_HWSERIAL Serial
                #define MY_NODE_ID 3
                
                #include <AltSoftSerial.h>
                #include <SPI.h>
                #include <MySensors.h>  
                
                AltSoftSerial altSerial;
                
                int msg[1];
                const uint64_t pipe = 0xE8E8F0F0E1LL;
                
                const int requestPin =  4;         
                char input; // incoming serial data (byte)
                bool readnextLine = false;
                #define BUFSIZE 500
                #define CHILD_ID_WATT 0
                #define CHILD_ID_KWH_LOW 1
                #define CHILD_ID_KWH_HIGH 2
                #define CHILD_ID_GAS 3
                #define CHILD_ID_CURRENT 4
                
                char buffer[BUFSIZE]; //Buffer for serial data to find \n .
                int bufpos = 0;
                long mEVLT = 0; //Meter reading Electrics - consumption low tariff
                long mEVHT = 0; //Meter reading Electrics - consumption high tariff
                long mEAV = 0;  //Meter reading Electrics - Actual consumption
                long mEAT = 0;  //Meter reading Electrics - Actual generated electricity (Solar panels)
                long mG = 0;   //Meter reading Gas
                
                MyMessage msgWatt(CHILD_ID_WATT, V_WATT);
                MyMessage msgKwhLow(CHILD_ID_KWH_LOW, V_KWH);      //Was V_KWH
                MyMessage msgKwhHigh(CHILD_ID_KWH_HIGH, V_KWH);     //Was V_KWH
                MyMessage msgGas(CHILD_ID_GAS, V_VOLUME);
                
                
                
                void setup() {
                //  Serial.begin(19200);
                //  delay(1000);
                  
                  altSerial.begin(9600);
                  delay(1000);
                }
                
                
                void presentation() {
                  // Send the sketch version information to the gateway and Controller
                  sendSketchInfo("Node", "1.0");
                  present(CHILD_ID_WATT, S_POWER);
                  present(CHILD_ID_KWH_LOW, S_POWER);
                  present(CHILD_ID_KWH_HIGH, S_POWER);
                  present(CHILD_ID_GAS, S_GAS);
                }
                
                
                
                void loop() {
                  long tl = 0;
                  long tld =0;
                  if (altSerial.available()) {
                      char input = altSerial.read();
                      buffer[bufpos] = input&127;
                      bufpos++;
                      if (input == '\n') { // We received a new line (data up to \n)
                        // 1-0:1.8.2 = Electricity consumption high tariff (DSMR v4.0)
                        if (sscanf(buffer,"1-0:1.8.2(%ld%.%ld%*s" , &tl, &tld) >0 ) {
                          tl *= 1000;
                          tl += tld;
                          mEVHT = tl;
                          //mEVHT = tl * 1000 + tld;
                          if (mEVHT > 0) {
                  
                            //mEVHT = 0;
                          }
                        }
                  
                  
                
                        if (sscanf(buffer,"1-0:1.8.1(%ld.%ld" ,&tl, &tld)==2){
                          tl *= 1000;
                          tl += tld;
                          mEVLT = tl;
                  
                          if (mEVLT > 0) {
                  
                  
                          }
                        }
                
                
                  
                        // 1-0:1.7.0 = Electricity consumption actual usage (DSMR v4.0)
                        if (sscanf(buffer,"1-0:1.7.0(%ld.%ld" ,&tl , &tld) == 2)
                        { 
                          mEAV = (tl*1000)+tld*10;            
                          if (mEAV > 0) {
                  
                          }
                        }
                
                
                
                
                
                
                
                /* Geeft actuele waarde door maar doet geen compare
                if (sscanf(buffer,"(%ld.%ld" , &tl, &tld)==2 ) 
                      {   mG = (tl*1000.0)+tld;
                      mG = mG/1000;
                      }
                */
                
                
                
                //Gastand uitlezen
                if (sscanf(buffer,"(%ld.%ld" , &tl, &tld)==2 ) 
                      {   mG = (tl*1000.0)+tld;
                      mG = mG;
                      }
                
                
                
                
                  
                        // Empty buffer again (whole array)
                        for (int i=0; i<500; i++)
                        { 
                          buffer[i] = 0;
                        }
                        bufpos = 0;
                  
                      }
                       
                      if (input == '!') {   //uitroepteken geeft einde van telegram aan, dus we gaan data versturen
                        #ifdef DEBUG
                          printData();
                        #endif
                        send(msgWatt.set(mEAV));
                        send(msgKwhLow.set(mEVLT));
                        send(msgKwhHigh.set(mEVHT));
                        send(msgGas.set(mG));
                        mEVHT=0;
                        mEVLT = 0;
                        mEAV = 0;
                        mG = 0;
                        //client.stop();
                      } //Einde vraagteken detectie   
                  
                    } 
                
                }
                
                
                 
                

                Thanks !

                mfalkviddM Offline
                mfalkviddM Offline
                mfalkvidd
                Mod
                wrote on last edited by mfalkvidd
                #7

                Nice work @toine33
                Use set(value, numberOfDecimals)

                Example:

                send(msgWatt.set(mEAV, 3));
                

                Documentation: https://www.mysensors.org/apidocs/MyMessage_8h.html#a8af6ca9ee9a61b5954e405a2ae7de361

                T 1 Reply Last reply
                0
                • mfalkviddM mfalkvidd

                  Nice work @toine33
                  Use set(value, numberOfDecimals)

                  Example:

                  send(msgWatt.set(mEAV, 3));
                  

                  Documentation: https://www.mysensors.org/apidocs/MyMessage_8h.html#a8af6ca9ee9a61b5954e405a2ae7de361

                  T Offline
                  T Offline
                  Toine33
                  wrote on last edited by
                  #8

                  @mfalkvidd
                  Sorry for asking , but as you already noticed i am not super familiar to the arduino coding haha.

                  So i have tried send(msgWatt.set(mEAV, 3));
                  But the only output i am receiving is something like this,

                  TSF:MSG:SEND,3-3-0-0,s=3,c=1,t=35,pt=7,l=5,sg=0,ft=0,st=OK:4213752.000

                  What i would like to archieve is an value like
                  TSF:MSG:SEND,3-3-0-0,s=3,c=1,t=35,pt=7,l=5,sg=0,ft=0,st=OK:4213.752

                  I just would like to ad an decimal somehow and send this to Domoticz.

                  mfalkviddM 1 Reply Last reply
                  0
                  • T Toine33

                    @mfalkvidd
                    Sorry for asking , but as you already noticed i am not super familiar to the arduino coding haha.

                    So i have tried send(msgWatt.set(mEAV, 3));
                    But the only output i am receiving is something like this,

                    TSF:MSG:SEND,3-3-0-0,s=3,c=1,t=35,pt=7,l=5,sg=0,ft=0,st=OK:4213752.000

                    What i would like to archieve is an value like
                    TSF:MSG:SEND,3-3-0-0,s=3,c=1,t=35,pt=7,l=5,sg=0,ft=0,st=OK:4213.752

                    I just would like to ad an decimal somehow and send this to Domoticz.

                    mfalkviddM Offline
                    mfalkviddM Offline
                    mfalkvidd
                    Mod
                    wrote on last edited by mfalkvidd
                    #9

                    @toine33 asking is exactly what the forum is here for :)
                    This should work (note: .0 is a "trick" to let the compiler know we want a floating point / decimal number)

                    send(msgWatt.set(mEAV / 1000.0, 3));
                    
                    T 1 Reply Last reply
                    0
                    • mfalkviddM mfalkvidd

                      @toine33 asking is exactly what the forum is here for :)
                      This should work (note: .0 is a "trick" to let the compiler know we want a floating point / decimal number)

                      send(msgWatt.set(mEAV / 1000.0, 3));
                      
                      T Offline
                      T Offline
                      Toine33
                      wrote on last edited by
                      #10

                      @mfalkvidd
                      Thank you so much :D Finnaly it is working as it should do!

                      #define MY_DEBUG 
                      #define MY_RS485
                      #define MY_RS485_DE_PIN 2
                      #define MY_RS485_BAUD_RATE 19200
                      #define MY_RS485_HWSERIAL Serial
                      #define MY_NODE_ID 3
                      
                      #include <AltSoftSerial.h>
                      #include <SPI.h>
                      #include <MySensors.h>  
                      
                      AltSoftSerial altSerial;
                      
                      int msg[1];
                      const uint64_t pipe = 0xE8E8F0F0E1LL;
                      
                      const int requestPin =  4;         
                      char input; // incoming serial data (byte)
                      bool readnextLine = false;
                      #define BUFSIZE 500
                      #define CHILD_ID_WATT 0
                      #define CHILD_ID_KWH_LOW 1
                      #define CHILD_ID_KWH_HIGH 2
                      #define CHILD_ID_GAS 3
                      #define CHILD_ID_CURRENT 4
                      
                      char buffer[BUFSIZE]; //Buffer for serial data to find \n .
                      int bufpos = 0;
                      long mEVLT = 0; //Meter reading Electrics - consumption low tariff
                      long mEVHT = 0; //Meter reading Electrics - consumption high tariff
                      long mEAV = 0;  //Meter reading Electrics - Actual consumption
                      long mEAT = 0;  //Meter reading Electrics - Actual generated electricity (Solar panels)
                      long mG = 0;   //Meter reading Gas
                      
                      
                      MyMessage msgWatt(CHILD_ID_WATT, V_WATT);
                      MyMessage msgKwhLow(CHILD_ID_KWH_LOW, V_KWH);      //Was V_KWH
                      MyMessage msgKwhHigh(CHILD_ID_KWH_HIGH, V_KWH);     //Was V_KWH
                      MyMessage msgGas(CHILD_ID_GAS, V_VOLUME);
                      
                      
                      
                      void setup() {
                      //  Serial.begin(19200);
                      //  delay(1000);
                        
                        altSerial.begin(9600);
                        delay(1000);
                      }
                      
                      
                      void presentation() {
                        // Send the sketch version information to the gateway and Controller
                        sendSketchInfo("Node", "1.0");
                        present(CHILD_ID_WATT, S_POWER);
                        present(CHILD_ID_KWH_LOW, S_POWER);
                        present(CHILD_ID_KWH_HIGH, S_POWER);
                        present(CHILD_ID_GAS, S_GAS);
                      }
                      
                      
                      
                      void loop() {
                        long tl = 0;
                        long tld =0;
                        if (altSerial.available()) {
                            char input = altSerial.read();
                            buffer[bufpos] = input&127;
                            bufpos++;
                            if (input == '\n') { // We received a new line (data up to \n)
                              // 1-0:1.8.2 = Electricity consumption high tariff (DSMR v4.0)
                      
                              
                              if (sscanf(buffer,"1-0:1.8.2(%ld.%ld" , &tl, &tld) >0 ) {
                                tl *= 1000;
                                tl += tld;
                                mEVHT = tl;
                                //mEVHT = tl * 1000 + tld;
                                if (mEVHT > 0) {
                        
                                  //mEVHT = 0;
                                }
                              }
                        
                        
                      
                              if (sscanf(buffer,"1-0:1.8.1(%ld.%ld" ,&tl, &tld)==2){
                                tl *= 1000;
                                tl += tld;
                                mEVLT = tl;
                        
                                if (mEVLT > 0) {
                        
                        
                                }
                              }
                      
                      
                        
                              // 1-0:1.7.0 = Electricity consumption actual usage (DSMR v4.0)
                              if (sscanf(buffer,"1-0:1.7.0(%ld.%ld" ,&tl , &tld) == 2)
                              { 
                                mEAV = (tl*1000)+tld*10;            
                                if (mEAV > 0) {
                        
                                }
                              }
                      
                      
                      
                      
                      //Gastand uitlezen
                      
                      if (sscanf(buffer,"(%ld.%ld" , &tl, &tld)==2 ) 
                            {   mG = (tl*1000.0)+tld;
                            mG = mG;
                            }
                      
                      
                      
                      
                        
                              // Empty buffer again (whole array)
                              for (int i=0; i<500; i++)
                              { 
                                buffer[i] = 0;
                              }
                              bufpos = 0;
                        
                            }
                             
                            if (input == '!') {   //uitroepteken geeft einde van telegram aan, dus we gaan data versturen
                              #ifdef DEBUG
                                printData();
                              #endif
                              send(msgWatt.set(mEAV));
                              send(msgKwhLow.set(mEVLT / 1000.0, 3)); 
                              send(msgKwhHigh.set(mEVHT / 1000.0, 3));
                              send(msgGas.set(mG / 1000.0, 3));
                              mEVHT=0;
                              mEVLT = 0;
                              mEAV = 0;
                              mG = 0;
                              //client.stop();
                            } //Einde vraagteken detectie   
                        
                          } 
                      
                      }
                      
                      
                       
                      

                      And here an picture how it is showing up in domoticz:

                      0_1568053520513_cc789582-9497-47ae-a278-d906a1b3a0fd-image.png

                      1 Reply Last reply
                      1
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      23

                      Online

                      11.7k

                      Users

                      11.2k

                      Topics

                      113.1k

                      Posts


                      Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • MySensors
                      • OpenHardware.io
                      • Categories
                      • Recent
                      • Tags
                      • Popular