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. NodeManager
  4. SI7021 with Nodemanager

SI7021 with Nodemanager

Scheduled Pinned Locked Moved NodeManager
2 Posts 1 Posters 64 Views 1 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.
  • xliborX Offline
    xliborX Offline
    xlibor
    wrote on last edited by xlibor
    #1

    Hi all, today i tested my SI7021 sensors and Nodemanager, but they not working very well.

    After power on sensor, i receive presentation of two channels (temp and humidity), but then i receive only V_TEMP updates and never recived V_HUM, have anyone working sketch with nodemanager or can check my code, i start from template from nodemanager examples, i also checked sensor with my MCP2221 I2C<>USB converter and here it works.

    /*
    * 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-2017 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.
    */
    
    /**************************
    Template
    
    This sketch can be used as a template since containing the most relevant MySensors library configuration settings, 
    NodeManager's settings, all its the supported sensors commented out and a sketch structure fully functional to operate with
    NodeManager. Just uncomment the settings you need and the sensors you want to add and configure the sensors in before()
    */
    
    /**********************************
     * MySensors node configuration
     */
    
    // General settings
    #define SKETCH_NAME "SI7021"
    #define SKETCH_VERSION "1.0"
    //#define MY_DEBUG
    #define MY_NODE_ID 100
    
    // NRF24 radio settings
    #define MY_RADIO_RF24
    //#define MY_RF24_ENABLE_ENCRYPTION
    //#define MY_RF24_CHANNEL 125
    //#define MY_RF24_PA_LEVEL RF24_PA_HIGH
    //#define MY_DEBUG_VERBOSE_RF24
    //#define MY_RF24_DATARATE RF24_250KBPS
    
    // RFM69 radio settings
    //#define MY_RADIO_RFM69
    //#define MY_RFM69_FREQUENCY RFM69_433MHZ
    //#define MY_IS_RFM69HW
    //#define MY_RFM69_NEW_DRIVER
    //#define MY_RFM69_ENABLE_ENCRYPTION
    //#define MY_RFM69_NETWORKID 100
    //#define MY_DEBUG_VERBOSE_RFM69
    //#define MY_RF69_IRQ_PIN D1
    //#define MY_RF69_IRQ_NUM MY_RF69_IRQ_PIN
    //#define MY_RF69_SPI_CS D2
    //#define MY_RFM69_ATC_MODE_DISABLED
    
    // RFM95 radio settings
    //#define MY_RADIO_RFM95
    //#define MY_RFM95_FREQUENCY (RFM95_868MHZ)
    //#define MY_DEBUG_VERBOSE_RFM95
    //#define MY_RFM95_MAX_POWER_LEVEL_DBM (20)
    //#define MY_RFM95_IRQ_PIN D1
    //#define MY_RFM95_IRQ_NUM MY_RFM95_IRQ_PIN
    //#define MY_RFM95_CS_PIN D8
    
    // RS485 serial transport settings
    //#define MY_RS485
    //#define MY_RS485_BAUD_RATE 9600
    //#define MY_RS485_DE_PIN 2
    //#define MY_RS485_MAX_MESSAGE_LENGTH 40
    //#define MY_RS485_HWSERIAL Serial1
    
    // Message signing settings
    //#define MY_SIGNING_SOFT
    //#define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
    //#define MY_SIGNING_REQUEST_SIGNATURES
    //#define MY_SIGNING_ATSHA204
    //#define MY_SIGNING_ATSHA204_PIN 4
    //#define MY_SIGNING_REQUEST_SIGNATURES
    
    // OTA Firmware update settings
    //#define MY_OTA_FIRMWARE_FEATURE
    //#define OTA_WAIT_PERIOD 300
    //#define FIRMWARE_MAX_REQUESTS 2
    //#define MY_OTA_RETRY 2
    
    // OTA debug output
    //#define MY_DEBUG_OTA (0)
    //#define MY_OTA_LOG_SENDER_FEATURE
    //#define MY_OTA_LOG_RECEIVER_FEATURE
    //#define MY_DEBUG_OTA_DISABLE_ACK
    
    // Advanced settings
    //#define MY_BAUD_RATE 9600
    //#define MY_SMART_SLEEP_WAIT_DURATION_MS 500
    #define MY_SPLASH_SCREEN_DISABLED
    //#define MY_DISABLE_RAM_ROUTING_TABLE_FEATURE
    //#define MY_SIGNAL_REPORT_ENABLED
    
    // Optimizations when running on 2032 Coin Cell. Also set nodeManager.setSleepBetweenSend(500) and run the board at 1Mhz
    #define MY_TRANSPORT_UPLINK_CHECK_DISABLED
    //#define MY_TRANSPORT_WAIT_READY_MS  5000
    //#define MY_SLEEP_TRANSPORT_RECONNECT_TIMEOUT_MS 2000
    //#define MY_PARENT_NODE_ID 0
    //#define MY_PARENT_NODE_IS_STATIC
    
    /**********************************
     * MySensors gateway configuration
     */
     
    // Common gateway settings
    //#define MY_REPEATER_FEATURE
    
    // Serial gateway settings
    //#define MY_GATEWAY_SERIAL
    
    // Ethernet gateway settings
    //#define MY_GATEWAY_W5100
    
    // ESP8266 gateway settings
    //#define MY_GATEWAY_ESP8266
    //#define MY_ESP8266_SSID ""
    //#define MY_ESP8266_PASSWORD ""
    
    // Gateway networking settings
    //#define MY_IP_ADDRESS 192,168,178,87
    //#define MY_IP_GATEWAY_ADDRESS 192,168,178,1
    //#define MY_IP_SUBNET_ADDRESS 255,255,255,0
    //#define MY_PORT 5003
    //#define MY_GATEWAY_MAX_CLIENTS 2
    //#define MY_USE_UDP
    
    // Gateway MQTT settings
    //#define MY_GATEWAY_MQTT_CLIENT
    //#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68
    //#define MY_PORT 1883
    //#define MY_MQTT_USER "username"
    //#define MY_MQTT_PASSWORD "password"
    //#define MY_MQTT_CLIENT_ID "mysensors-1"
    //#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
    //#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
    
    // Gateway inclusion mode
    //#define MY_INCLUSION_MODE_FEATURE
    //#define MY_INCLUSION_BUTTON_FEATURE
    //#define MY_INCLUSION_MODE_DURATION 60
    //#define MY_DEFAULT_LED_BLINK_PERIOD 300
    
    // Gateway Leds settings
    //#define MY_DEFAULT_ERR_LED_PIN 4
    //#define MY_DEFAULT_RX_LED_PIN  5
    //#define MY_DEFAULT_TX_LED_PIN  6
    
    /***********************************
     * NodeManager configuration
     */
    
    #define NODEMANAGER_DEBUG OFF
    #define NODEMANAGER_INTERRUPTS OFF
    #define NODEMANAGER_SLEEP ON
    #define NODEMANAGER_RECEIVE OFF
    #define NODEMANAGER_DEBUG_VERBOSE OFF
    #define NODEMANAGER_POWER_MANAGER OFF
    #define NODEMANAGER_CONDITIONAL_REPORT OFF
    #define NODEMANAGER_EEPROM OFF
    #define NODEMANAGER_TIME OFF
    #define NODEMANAGER_RTC OFF
    #define NODEMANAGER_SD OFF
    #define NODEMANAGER_HOOKING OFF
    #define NODEMANAGER_OTA_CONFIGURATION OFF
    #define NODEMANAGER_SERIAL_INPUT OFF
    
    // import NodeManager library (a nodeManager object will be then made available)
    #include <MySensors_NodeManager.h>
    
    /***********************************
     * Add your sensors
     */
    
    #include <sensors/SensorSI7021.h>
    SensorSI7021 si7021;
    
    /***********************************
     * Main Sketch
     */
    
    // before
    void before() {
    	
      /***********************************
       * Configure your sensors
       */
      // EXAMPLES:
      // report measures of every attached sensors every 10 seconds
      nodeManager.setReportIntervalSeconds(10);
      // report measures of every attached sensors every 10 minutes
      //nodeManager.setReportIntervalMinutes(10);
      // set the node to sleep in 30 seconds cycles
      //nodeManager.setSleepSeconds(30);
      // set the node to sleep in 5 minutes cycles
      //nodeManager.setSleepMinutes(5);
      // report battery level every 10 minutes
      //battery.setReportIntervalMinutes(60);
      // set an offset to -1 to a thermistor sensor
      //thermistor.setOffset(-1);
      // change the id of a the first child of a sht21 sensor
      //sht21.children.get(1)->setChildId(5);
      // report only when the analog value is above 40%
      //analog.children.get(1)->setMinThreshold(40);
      // power all the nodes through dedicated pins
      //nodeManager.setPowerManager(power);
    
      // call NodeManager before routine
      nodeManager.before();
    }
    
    // presentation
    void presentation() {
      // call NodeManager presentation routine
      nodeManager.presentation();
    }
    
    // setup
    void setup() {
      // call NodeManager setup routine
      nodeManager.setup();
    }
    
    // loop
    void loop() {
      // call NodeManager loop routine
      nodeManager.loop();
    }
    
    #if NODEMANAGER_RECEIVE == ON
    // receive
    void receive(const MyMessage &message) {
      // call NodeManager receive routine
      nodeManager.receive(message);
    }
    #endif
    
    #if NODEMANAGER_TIME == ON
    // receiveTime
    void receiveTime(unsigned long ts) {
      // call NodeManager receiveTime routine
      nodeManager.receiveTime(ts);
    }
    #endif
    
    

    at compilig i got two warnings:

    In file included from C:\Users\Libor\Documents\Arduino\libraries\NodeManager-master/MySensors_NodeManager.h:87:0,
                     from C:\Users\Libor\Documents\Arduino\projects\NodeManager_test\NodeManager_test.ino:176:
    C:\Users\Libor\Documents\Arduino\libraries\NodeManager-master/nodemanager/Sensor.cpp: In member function 'void Sensor::presentation()':
    C:\Users\Libor\Documents\Arduino\libraries\NodeManager-master/nodemanager/Sensor.cpp:135:54: warning: invalid conversion from 'uint8_t {aka unsigned char}' to 'mysensors_sensor_t' [-fpermissive]
       present(child->getChildId(), child->getPresentation(), child->getDescription(), nodeManager.getAck());
                                    ~~~~~~~~~~~~~~~~~~~~~~^~
    In file included from C:\Users\Libor\Documents\Arduino\libraries\MySensors/MySensors.h:433:0,
                     from C:\Users\Libor\Documents\Arduino\libraries\NodeManager-master/MySensors_NodeManager.h:43,
                     from C:\Users\Libor\Documents\Arduino\projects\NodeManager_test\NodeManager_test.ino:176:
    C:\Users\Libor\Documents\Arduino\libraries\MySensors/core/MySensorsCore.cpp:375:6: note:   initializing argument 2 of 'bool present(uint8_t, mysensors_sensor_t, const char*, bool)'
     bool present(const uint8_t childSensorId, const mysensors_sensor_t sensorType,
          ^~~~~~~
    
    
    1 Reply Last reply
    0
    • xliborX Offline
      xliborX Offline
      xlibor
      wrote on last edited by
      #2

      I changed to development version of Nodemanager this remove compilation errors and then found that recomended library from Sparkfun not work. Then i edited header file SensorSI7021.h to work with Adafruit library and it works :-)
      my SensorSI7021.h:

      /*
      * 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-2017 Sensnology AB
      * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
      * 2021 modified by Libor Kozak to work with Adafruit library: https://github.com/adafruit/Adafruit_Si7021
      *
      * 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.
      */
      #ifndef SensorSI7021_h
      #define SensorSI7021_h
      
      /*
      SensorSI7021: temperature and humidity sensor
      */
      
      #include <Wire.h>
      //#include <SI7021.h>
      #include <Adafruit_Si7021.h>
      
      class SensorSI7021: public Sensor {
      protected:
      	Adafruit_Si7021* _si7021;//SI7021* _si7021;
      	
      public:
      	SensorSI7021(uint8_t child_id = 0): Sensor(-1) {
      		_name = "SI7021";
      		children.allocateBlocks(2);
      		new Child(this,FLOAT,nodeManager.getAvailableChildId(child_id),S_TEMP,V_TEMP,_name);
      		new Child(this,FLOAT,child_id > 0 ? nodeManager.getAvailableChildId(child_id+1) : nodeManager.getAvailableChildId(child_id),S_HUM,V_HUM,_name);
      	};
      	
      	// define what to do during setup
      	void onSetup() {
      		_si7021 = new Adafruit_Si7021();
      		_si7021->begin();
      	};
      
      	// define what to do during loop
      	void onLoop(Child* child) {
      		// temperature sensor
      		if (child->getType() == V_TEMP) {
      			// read the temperature
      			float temperature = _si7021->readTemperature();
      			// convert it
      			//temperature = nodeManager.celsiusToFahrenheit(temperature);
      			// store the value
      			child->setValue(temperature);
      		}
      		// Humidity Sensor
      		else if (child->getType() == V_HUM) {
      			// read humidity
      			float humidity = _si7021->readHumidity();
      			// store the value
      			child->setValue(humidity);
      		}
      	};
      };
      #endif
      
      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      19

      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