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. Development
  3. Power sensors stopped working

Power sensors stopped working

Scheduled Pinned Locked Moved Development
openhab2
13 Posts 4 Posters 1.7k 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.
  • gohanG Offline
    gohanG Offline
    gohan
    Mod
    wrote on last edited by
    #2

    Did you try to reflash them? Did you try to do a debug to see if they are actually measuring something?

    1 Reply Last reply
    0
    • jocke4uJ jocke4u

      Hi,

      I have 3 power sensors running (total, house heater and water heater). They have been working for a long time.
      Last weekend I had a power outage and they stopped working.
      Other sensors works.

      Watching in MYSController and power sensors reports V_VAR1 but message is empty.

      Any idea why?

      C Offline
      C Offline
      chorob
      wrote on last edited by
      #3

      @jocke4u could you share some more information on your power sensors? Pictures and sketch? I am trying to replace my ubiquiti mfi setup and power sensors are my last sensors to go. Thanks!

      gohanG 1 Reply Last reply
      0
      • C chorob

        @jocke4u could you share some more information on your power sensors? Pictures and sketch? I am trying to replace my ubiquiti mfi setup and power sensors are my last sensors to go. Thanks!

        gohanG Offline
        gohanG Offline
        gohan
        Mod
        wrote on last edited by
        #4

        @chorob I got a sonoff pow and some gewiss material to make a similar unifi mfi, but I only have one relay

        1 Reply Last reply
        0
        • jocke4uJ Offline
          jocke4uJ Offline
          jocke4u
          wrote on last edited by
          #5

          I have been debugging a bit now and the sensor receives pulses but the issue seems to be that it doesn't receive the old pulse count from GW (Ethernet) and therefore doesn't send the values.

          I have upgraded the GW to 2.1.1 and with the sketch below

          /**
           * The MySensors Arduino library handles the wireless radio link and protocol
           * between your home built sensors/actuators and HA controller of choice.
           * The sensors forms a self healing radio network with optional repeaters. Each
           * repeater and gateway builds a routing tables in EEPROM which keeps track of the
           * network topology allowing messages to be routed to nodes.
           *
           * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
           * Copyright (C) 2013-2015 Sensnology AB
           * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
           *
           * Documentation: http://www.mysensors.org
           * Support Forum: http://forum.mysensors.org
           *
           * This program is free software; you can redistribute it and/or
           * modify it under the terms of the GNU General Public License
           * version 2 as published by the Free Software Foundation.
           *
           *******************************
           *
           * REVISION HISTORY
           * Version 1.0 - Henrik EKblad
           * Contribution by a-lurker and Anticimex,
           * Contribution by Norbert Truchsess <norbert.truchsess@t-online.de>
           * Contribution by Tomas Hozza <thozza@gmail.com>
           *
           *
           * DESCRIPTION
           * The EthernetGateway sends data received from sensors to the ethernet link.
           * The gateway also accepts input on ethernet interface, which is then sent out to the radio network.
           *
           * The GW code is designed for Arduino 328p / 16MHz.  ATmega168 does not have enough memory to run this program.
           *
           * LED purposes:
           * - To use the feature, uncomment MY_DEFAULT_xxx_LED_PIN in the sketch below
           * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved
           * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
           * - ERR (red) - fast blink on error during transmission error or recieve crc error
           *
           * See http://www.mysensors.org/build/ethernet_gateway for wiring instructions.
           *
           */
          
          // Enable debug prints to serial monitor
          #define MY_DEBUG
          
          // Enable and select radio type attached
          #define MY_RADIO_NRF24
          //#define MY_RADIO_RFM69
          
          // Enable gateway ethernet module type
          #define MY_GATEWAY_W5100
          
          // W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
          //#define MY_W5100_SPI_EN 4
          
          // Enable Soft SPI for NRF radio (note different radio wiring is required)
          // The W5100 ethernet module seems to have a hard time co-operate with
          // radio on the same spi bus.
          #if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
          #define MY_SOFTSPI
          #define MY_SOFT_SPI_SCK_PIN 14
          #define MY_SOFT_SPI_MISO_PIN 16
          #define MY_SOFT_SPI_MOSI_PIN 15
          #endif
          
          // When W5100 is connected we have to move CE/CSN pins for NRF radio
          #ifndef MY_RF24_CE_PIN
          #define MY_RF24_CE_PIN 5
          #endif
          #ifndef MY_RF24_CS_PIN
          #define MY_RF24_CS_PIN 6
          #endif
          
          // Enable to UDP
          //#define MY_USE_UDP
          
          #define MY_IP_ADDRESS 192,168,1,11   // If this is disabled, DHCP is used to retrieve address
          // Renewal period if using DHCP
          //#define MY_IP_RENEWAL_INTERVAL 60000
          // The port to keep open on node server mode / or port to contact in client mode
          #define MY_PORT 5003
          
          // Controller ip address. Enables client mode (default is "server" mode).
          // Also enable this if MY_USE_UDP is used and you want sensor data sent somewhere.
          //#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 254
          
          // The MAC address can be anything you want but should be unique on your network.
          // Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
          // Note that most of the Ardunio examples use  "DEAD BEEF FEED" for the MAC address.
          #define MY_MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
          
          // Enable inclusion mode
          #define MY_INCLUSION_MODE_FEATURE
          // Enable Inclusion mode button on gateway
          //#define MY_INCLUSION_BUTTON_FEATURE
          // Set inclusion mode duration (in seconds)
          #define MY_INCLUSION_MODE_DURATION 60
          // Digital pin used for inclusion mode button
          //#define MY_INCLUSION_MODE_BUTTON_PIN  3
          
          // Set blinking period
          #define MY_DEFAULT_LED_BLINK_PERIOD 300
          
          // Flash leds on rx/tx/err
          // Uncomment to override default HW configurations
          #define MY_DEFAULT_ERR_LED_PIN 7  // Error led pin
          #define MY_DEFAULT_RX_LED_PIN  8  // Receive led pin
          #define MY_DEFAULT_TX_LED_PIN  9  // Transmit led pin
          
          
          #if defined(MY_USE_UDP)
          #include <EthernetUdp.h>
          #endif
          #include <Ethernet.h>
          #include <MySensors.h>
          
          
          void setup()
          {
          }
          
          void loop()
          {
          }
          

          Do I need to have any other implementation to save pulses?

          The Sketch for the energy meter looks like below (currently some extra printout's):

          /**
           * The MySensors Arduino library handles the wireless radio link and protocol
           * between your home built sensors/actuators and HA controller of choice.
           * The sensors forms a self healing radio network with optional repeaters. Each
           * repeater and gateway builds a routing tables in EEPROM which keeps track of the
           * network topology allowing messages to be routed to nodes.
           *
           * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
           * Copyright (C) 2013-2015 Sensnology AB
           * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
           *
           * Documentation: http://www.mysensors.org
           * Support Forum: http://forum.mysensors.org
           *
           * This program is free software; you can redistribute it and/or
           * modify it under the terms of the GNU General Public License
           * version 2 as published by the Free Software Foundation.
           *
           *******************************
           *
           * REVISION HISTORY
           * Version 1.0 - Henrik EKblad
           *
           * DESCRIPTION
           * This sketch provides an example how to implement a distance sensor using HC-SR04
           * Use this sensor to measure KWH and Watt of your house meeter
           * You need to set the correct pulsefactor of your meeter (blinks per KWH).
           * The sensor starts by fetching current KWH value from gateway.
           * Reports both KWH and Watt back to gateway.
           *
           * Unfortunately millis() won't increment when the Arduino is in
           * sleepmode. So we cannot make this sensor sleep if we also want
           * to calculate/report watt-number.
           * http://www.mysensors.org/build/pulse_power
           */
          
          // Enable debug prints
          #define MY_DEBUG
          
          // Enable and select radio type attached
          #define MY_RADIO_NRF24
          //#define MY_RADIO_RFM69
          
          #define MY_NODE_ID 5
          #include <MySensors.h>
          
          #define DIGITAL_INPUT_SENSOR 3  // The digital input you attached your light sensor.  (Only 2 and 3 generates interrupt!)
          #define PULSE_FACTOR 1000       // Nummber of blinks per KWH of your meeter
          #define MAX_WATT 10000          // Max watt value to report. This filetrs outliers.
          
          #define CHILD_ID 0              // Id of the sensor child
          
          unsigned long SEND_FREQUENCY =
              20000; // Minimum time between send (in milliseconds). We don't wnat to spam the gateway.
          double ppwh = ((double)PULSE_FACTOR)/1000; // Pulses per watt hour
          bool pcReceived = false;
          volatile unsigned long pulseCount = 0;
          volatile unsigned long lastBlink = 0;
          volatile unsigned long watt = 0;
          unsigned long oldPulseCount = 0;
          unsigned long oldWatt = 0;
          double oldKwh;
          unsigned long lastSend;
          MyMessage wattMsg(CHILD_ID,V_WATT);
          MyMessage kwhMsg(CHILD_ID,V_KWH);
          MyMessage pcMsg(CHILD_ID,V_VAR1);
          
          
          void setup()
          {
           
            // Fetch last known pulse count value from gw
            request(CHILD_ID, V_VAR1);
          
            // Use the internal pullup to be able to hook up this sketch directly to an energy meter with S0 output
            // If no pullup is used, the reported usage will be too high because of the floating pin
            pinMode(DIGITAL_INPUT_SENSOR,INPUT_PULLUP);
          
            attachInterrupt(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), onPulse, RISING);
            lastSend=millis();
          }
          
          void presentation()
          {
            // Send the sketch version information to the gateway and Controller
            sendSketchInfo("Heater Energy", "2.0");
          
            // Register this device as power sensor
            present(CHILD_ID, S_POWER);
          }
          
          void loop()
          {
            unsigned long now = millis();
            // Only send values at a maximum frequency or woken up from sleep
            bool sendTime = now - lastSend > SEND_FREQUENCY;
            if (pcReceived && sendTime) {
              // New watt value has been calculated
              if (watt != oldWatt) {
                // Check that we dont get unresonable large watt value.
                // could hapen when long wraps or false interrupt triggered
                if (watt<((unsigned long)MAX_WATT)) {
                  send(wattMsg.set(watt));  // Send watt value to gw
                }
                Serial.print("Watt:");
                Serial.println(watt);
                oldWatt = watt;
              }
          
              // Pulse cout has changed
              if (pulseCount != oldPulseCount) {
                send(pcMsg.set(pulseCount));  // Send pulse count value to gw
                double kwh = ((double)pulseCount/((double)PULSE_FACTOR));
                oldPulseCount = pulseCount;
                if (kwh != oldKwh) {
                  send(kwhMsg.set(kwh, 4));  // Send kwh value to gw
                  oldKwh = kwh;
                }
              }
              lastSend = now;
            } else if (sendTime && !pcReceived) {
              // No count received. Try requesting it again
              Serial.println("No count received. Try requesting it again");
              request(CHILD_ID, V_VAR1);
              lastSend=now;
            }
          
          }
          
          void receive(const MyMessage &message)
          {
            Serial.print("MessageType:");
            Serial.println(message.type);
            Serial.print("Message:");
            Serial.println(message.getLong());
            if (message.type==V_VAR1) {
              pulseCount = oldPulseCount = message.getLong();
              Serial.print("Received last pulse count from gw:");
              Serial.println(pulseCount);
              pcReceived = true;
            }
          }
          
          void onPulse()
          {
            Serial.println("Got Pulse");
            unsigned long newBlink = micros();
            unsigned long interval = newBlink-lastBlink;
            if (interval<10000L) { // Sometimes we get interrupt on RISING
              return;
            }
            watt = (3600000000.0 /interval) / ppwh;
            lastBlink = newBlink;
            pulseCount++;
          }
          

          The debug log looks like:

          0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
          3 TSM:INIT
          4 TSF:WUR:MS=0
          11 TSM:INIT:TSP OK
          13 TSM:INIT:STATID=5
          14 TSF:SID:OK,ID=5
          16 TSM:FPAR
          52 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
          2060 !TSM:FPAR:NO REPLY
          2062 TSM:FPAR
          2098 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
          2983 TSF:MSG:READ,0-0-5,s=255,c=3,t=8,pt=1,l=1,sg=0:0
          2989 TSF:MSG:FPAR OK,ID=0,D=1
          4106 TSM:FPAR:OK
          4107 TSM:ID
          4108 TSM:ID:OK
          4110 TSM:UPL
          4147 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1
          6154 TSM:UPL
          6159 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=1,st=OK:1
          6168 TSF:MSG:READ,0-0-5,s=255,c=3,t=25,pt=1,l=1,sg=0:1
          6173 TSF:MSG:PONG RECV,HP=1
          6175 TSM:UPL:OK
          6177 TSM:READY:ID=5,PAR=0,DIS=1
          6182 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
          6189 TSF:MSG:READ,0-0-5,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
          6232 !TSF:MSG:SEND,5-5-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=NACK:2.1.1
          6243 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=1,st=OK:0
          6259 TSF:MSG:READ,0-0-5,s=255,c=3,t=6,pt=0,l=1,sg=0:M
          6305 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=11,pt=0,l=13,sg=0,ft=0,st=NACK:Heater Energy
          6349 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=1,st=NACK:2.0
          6391 !TSF:MSG:SEND,5-5-0-0,s=0,c=0,t=13,pt=0,l=0,sg=0,ft=2,st=NACK:
          6397 MCO:REG:REQ
          6435 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=3,st=NACK:2
          8476 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=4,st=NACK:2
          10486 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=5,st=OK:2
          10493 TSF:MSG:READ,0-0-5,s=255,c=3,t=27,pt=1,l=1,sg=0:1
          10499 MCO:PIM:NODE REG=1
          10501 MCO:BGN:STP
          10528 TSF:MSG:SEND,5-5-0-0,s=0,c=2,t=24,pt=0,l=0,sg=0,ft=0,st=OK:
          Got Pulse
          10534 MCO:BGN:INIT OK,TSP=1
          Got Pulse
          Got Pulse
          Got Pulse
          Got Pulse
          Got Pulse
          Got Pulse
          No count received. Try requesting it again
          30570 !TSF:MSG:SEND,5-5-0-0,s=0,c=2,t=24,pt=0,l=0,sg=0,ft=0,st=NACK:
          Got Pulse
          Got Pulse
          Got Pulse
          Got Pulse
          Got Pulse
          Got Pulse
          Got Pulse
          No count received. Try requesting it again
          50546 TSF:MSG:SEND,5-5-0-0,s=0,c=2,t=24,pt=0,l=0,sg=0,ft=1,st=OK:
          Got Pulse
          
          1 Reply Last reply
          0
          • gohanG Offline
            gohanG Offline
            gohan
            Mod
            wrote on last edited by
            #6

            Then it could be the controller not responding to requests for value?

            1 Reply Last reply
            0
            • jocke4uJ Offline
              jocke4uJ Offline
              jocke4u
              wrote on last edited by
              #7

              I guess so - using openHAB 2.2.0 stable and quite late snapshot mysensors-binding for 2.2.0.
              Maybe @TimO have an idea?

              1 Reply Last reply
              0
              • gohanG Offline
                gohanG Offline
                gohan
                Mod
                wrote on last edited by
                #8

                I remember another post about Openhab not responding to requests not long ago, maybe it is related

                sundberg84S 1 Reply Last reply
                0
                • gohanG gohan

                  I remember another post about Openhab not responding to requests not long ago, maybe it is related

                  sundberg84S Offline
                  sundberg84S Offline
                  sundberg84
                  Hardware Contributor
                  wrote on last edited by
                  #9

                  @gohan - I have had this issue in Domoticz as well several times. A nod requestiong a V_Var1 can sometimes takes up to 30 min to get a response and I think its something to do with timing and/or repeaters in the response. It seems like Domoticz is answering. That was the main reason i build my logger to debug this but so far I have not encountered it again.

                  Controller: Proxmox VM - Home Assistant
                  MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                  MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                  RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                  gohanG 1 Reply Last reply
                  0
                  • sundberg84S sundberg84

                    @gohan - I have had this issue in Domoticz as well several times. A nod requestiong a V_Var1 can sometimes takes up to 30 min to get a response and I think its something to do with timing and/or repeaters in the response. It seems like Domoticz is answering. That was the main reason i build my logger to debug this but so far I have not encountered it again.

                    gohanG Offline
                    gohanG Offline
                    gohan
                    Mod
                    wrote on last edited by
                    #10

                    @sundberg84 said in Power sensors stopped working:

                    30 min

                    That is quite a lot of time

                    sundberg84S 1 Reply Last reply
                    0
                    • gohanG gohan

                      @sundberg84 said in Power sensors stopped working:

                      30 min

                      That is quite a lot of time

                      sundberg84S Offline
                      sundberg84S Offline
                      sundberg84
                      Hardware Contributor
                      wrote on last edited by
                      #11

                      @gohan in my mind and without any evidence its like the request comes fine to the gw, responded by domoticz but the answer from the gw and back to the node gets lost through the repeater... I dont know this for sure though!

                      Controller: Proxmox VM - Home Assistant
                      MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                      MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                      RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                      1 Reply Last reply
                      0
                      • gohanG Offline
                        gohanG Offline
                        gohan
                        Mod
                        wrote on last edited by
                        #12

                        without repeater it works better then?

                        sundberg84S 1 Reply Last reply
                        0
                        • gohanG gohan

                          without repeater it works better then?

                          sundberg84S Offline
                          sundberg84S Offline
                          sundberg84
                          Hardware Contributor
                          wrote on last edited by sundberg84
                          #13

                          Without any evidence - yes. I have not made that much tests yet since I waited for my logger. I have made some posts about this on the forum. I dont want to make any conclusions yet. @gohan

                          Controller: Proxmox VM - Home Assistant
                          MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                          MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                          RFLink GW - Arduino Mega + RFLink Shield, 433mhz

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


                          8

                          Online

                          11.7k

                          Users

                          11.2k

                          Topics

                          113.0k

                          Posts


                          Copyright 2019 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