Not getting Node ID assigned



  • I have an 8MHz 3.3V Pro Mini Arduino with a NRF24l01 connected to a Olimex A10 (Debian Lime). I have set the Serial gateway to run at 57600 and also created a gateway in Fhem.
    /dev/ttyUSB0@57600 with auotocreate set to 1 and requestAck set to 1.
    I ran all the Fhem updates.
    I have a simple Battery Monitor Node with no Sensor IDs just the battery level. But I cannot see the battery level in the log.
    I only get this message:
    2016.02.11 10:51:53 3: MYSENSORS: ignoring internal-msg from unknown radioId 254, childId 255 for I_BATTERY_LEVEL
    Isn't Fhem supposed to Auto Add Nodes? What am I doing wrong?



  • I still can't work this out. If i turn on inclusion-mode on the serial gateway I always get NODE ID 254 assigned. And if I add a second node it shares the same node id and I end up with attributes for many sensor type all in the same node. It lways gets named MYSENSOR_254. Pulling my hair out for 5 days now... can anyone help?


  • Admin

    Did you try asking for help over at the FHEM forum?



  • I will try. I did Google searches but mostly answers are in German.


  • Hardware Contributor

    @bigal

    Use MySensors v1.4.2 in your gateway? I only use Ethernet (W5100) gateway so I can't test, but MySensors v1.5 and later isn't supported by Fhem yet AFAIK.

    Tried static Node IDs?

    Post your fhem.cfg, or at least the relevant parts.



  • Aha! I thought it might have been a gateway issue. Yes of course I am running ver 1.5 so I will try v1.4.2 and report back how it goes!
    In the meantime here are my configs.
    I have loaded the UV node information into Fhem but it still will not recognize the node.

    Here is my Fhem config.

    attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
    attr global autoload_undefined_devices 1
    attr global logfile ./log/fhem-%Y-%m.log
    attr global modpath .
    attr global motd SecurityCheck:\
      \
    WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.\
    telnetPort has no associated allowed device with password/globalpassword.\
    \
    Restart FHEM for a new check if the problem is fixed,\
    or set the global attribute motd to none to supress this message.\
    
    attr global statefile ./log/fhem.save
    attr global updateInBackground 1
    attr global verbose 3
    
    define telnetPort telnet 7072 global
    
    define WEB FHEMWEB 8083 global
    
    define WEBphone FHEMWEB 8084 global
    attr WEBphone stylesheetPrefix smallscreen
    
    define WEBtablet FHEMWEB 8085 global
    attr WEBtablet stylesheetPrefix touchpad
    
    # Fake FileLog entry, to access the fhem log from FHEMWEB 
    define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
    
    define autocreate autocreate
    attr autocreate filelog ./log/%NAME-%Y.log
    
    define eventTypes eventTypes ./log/eventTypes.txt
    
    # Disable this to avoid looking for new USB devices on startup
    define initialUsbCheck notify global:INITIALIZED usb create
    define gateway MYSENSORS /dev/ttyUSB0@57600
    attr gateway autocreate 1
    attr gateway first-sensorid 10
    attr gateway icon it_wireless_dcf77
    attr gateway stateFormat connection
    define UVSensor MYSENSORS_DEVICE 10
    attr UVSensor IODev gateway
    attr UVSensor mapReading_uv 0 uv
    attr UVSensor mode node
    attr UVSensor version 1.2
    

    And a standard UV mysensor Arduino code (no mods).

    /**
     * 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 - epierre
     * Contribution: bulldoglowell, gizmocuz
     * 
     * DESCRIPTION
     * Arduino UVM-30A
     * Index table taken from: http://www.elecrow.com/sensors-c-111/environment-c-111_112            
    /uv-sensor-moduleuvm30a-p-716.html
     * Because this table is pretty lineair, we can calculate a UVI with one decimal 
     *
     * Connect sensor:
     *
     *   +   >>> 5V
     *   -   >>> GND
     *   out >>> A0     
     * 
     * License: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
     */
    
    #include <SPI.h>
    #include <MySensor.h>  
    #include <MySensor.h>  
    #include <SPI.h>
    
    #define UV_SENSOR_ANALOG_PIN 0
    
    #define CHILD_ID_UV 0
    
    unsigned long SLEEP_TIME = 30*1000; // Sleep time between reads (in milliseconds)
    
    MySensor gw;
    MyMessage uvMsg(CHILD_ID_UV, V_UV);
    
    unsigned long lastSend =0; 
    float uvIndex;
    float lastUV = -1;
    uint16_t uvIndexValue [12] = { 50, 227, 318, 408, 503, 606, 696, 795, 881, 976, 1079, 1170};
    
    void setup()  
    { 
      gw.begin();
    
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo("UV Sensor", "1.2");
    
      // Register all sensors to gateway (they will be created as child devices)
      gw.present(CHILD_ID_UV, S_UV);
    }
    
    void loop()      
    {
      unsigned long currentTime = millis();
    
      uint16_t uv = analogRead(UV_SENSOR_ANALOG_PIN);// Get UV value
      if (uv>1170)
        uv=1170;
    
      //Serial.print("UV Analog reading: ");
      //Serial.println(uv);
    
      int i;
      for (i = 0; i < 12; i++)
      {
        if (uv <= uvIndexValue[i]) 
        {
          uvIndex = i;
          break;
        }
      }
    
      //calculate 1 decimal if possible
      if (i>0) {
        float vRange=uvIndexValue[i]-uvIndexValue[i-1];
        float vCalc=uv-uvIndexValue[i-1];
        uvIndex+=(1.0/vRange)*vCalc-1.0;
      }
    
      //Serial.print("UVI: ");
      //Serial.println(uvIndex,2);
    
      //Send value to gateway if changed, or at least every 5 minutes
      if ((uvIndex != lastUV)||(currentTime-lastSend >= 5UL*60UL*1000UL)) {
          lastSend=currentTime;
          gw.send(uvMsg.set(uvIndex,2));
          lastUV = uvIndex;
      }
    
      gw.sleep(SLEEP_TIME);
    

    }


  • Hardware Contributor

    @bigal (Please indent your code by 4 spaces or 'tab', it will then show up in nice black boxes in your forum posts.)


  • Hardware Contributor

    @bigal Also, I think there can be issues with that particular UV-sensor sketch example. The gw.sleep() function stops timers and will make the millis() function hard to use.



  • Not concerned with bugs in the UV Sketch as I will make my own sketches once I get the controller to recognize the nodes.
    My plan is to adapt some code to make tank level sensors and an analog (not pulse based) kWh meter. Also planning to control some pumps, so those will be outputs.
    So should I use Arduino 1.4.2 for compiling code for Gateway and all the nodes, yes?


  • Hardware Contributor

    @bigal Only gateway. The nodes work fine on v1.5



  • I just compiled the Gateway in the 1.4.2 Mysensors bundle. I compiled a LUX node and a Pressure node, but still no luck, I always get the nodes showing up as Node 254 and overwriting each other.
    So seems my issue may not related to the Gateway Version.


 

Suggested Topics

268
Online

8.6k
Users

9.4k
Topics

99.1k
Posts