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
MadhiasM

Madhias

@Madhias
About
Posts
21
Topics
3
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • 💬 MySensors @Eindhoven Maker Fair 2017 2-3 September
    MadhiasM Madhias

    Hopefully you'll make some pictures or videos for those who can't attend!

    Announcements

  • 'getConfig' was not declared in this scope (V2.1.1) - FIXED
    MadhiasM Madhias

    @Newzwaver If I remember correctly you have to change in your sketches from getConfig() to getControllerConfig()

    Troubleshooting

  • [SOLVED] device_tracker unable to load / known_devices.yaml not found after HA update
    MadhiasM Madhias

    @martinhjelmare OK, It was not an update, since when booting the gateway device from my backup drive I have the same radio problem. So I'll have a look onto that. The gateway is installed on a Raspberry Pi 3, powered by the 'normal' micro USB adapter. I could exchange the capacitor on the radio there as a start.

    [EDIT] Solved, just 'touched' the capacitor and wobbled around on the gateways radio, and radio communication works again. Sorry for the confusion...

    Home Assistant

  • [SOLVED] device_tracker unable to load / known_devices.yaml not found after HA update
    MadhiasM Madhias

    @martinhjelmare I'll do right now, what can be the problem there. Very strange, since it was working perfect for a long time now, maybe an update broke it (HA and Rasbian Lite). I have a fear about radio problems though, to solve them. It must be the gateway, since it is the same for all sensors.

    Home Assistant

  • [SOLVED] device_tracker unable to load / known_devices.yaml not found after HA update
    MadhiasM Madhias

    @martinhjelmare Thanks again for your help! In the HA log this is the only error shown. I installed it in a Python virtual environment, the path locations are correct – I called the user homeass =)

    But looking at my gateway log there seems to be another error, with all sensors the same output:

    TSF:MSG:READ,3-3-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    TSF:MSG:BC
    TSF:MSG:FPAR REQ,ID=3
    TSF:CKU:OK,FCTRL
    TSF:MSG:GWL OK
    !TSF:MSG:SEND,0-0-3-3,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
    
    Home Assistant

  • [SOLVED] device_tracker unable to load / known_devices.yaml not found after HA update
    MadhiasM Madhias

    Hi,

    I am not sure if my problem fits in here or rather to Home Assistant itself, but after an upgrade of HA to 0.48.1 sensor information is not updated, only after restarting Home Assistant once, but with an old value (the one before upgrading). I updated netdisco manually as always to the now correct version (1.0.1). Maybe that is the cause? The Philips Hue lamp is detected and working.

    ERROR (MainThread) [homeassistant.components.device_tracker] Unable to load 
    /home/homeass/.homeassistant/known_devices.yaml: Config file not found:
    /home/homeass/.homeassistant/known_devices.yaml
    

    Do I have to use the device_tracker component now which I did not used before? Is the problem related to netdisco? Creating manually the *.yaml file did not help (of course).

    Home Assistant

  • Correct presentation of Sensebender temperature and humidity?
    MadhiasM Madhias

    @martinhjelmare It works now! I think it is a hardware issue I have here, since I just put the decoupling capacitor in between the radio and the pin header socket. Checking that connection helped (pushing again in), and the presentation was correct now - including the sketch name.

    Home Assistant

  • Correct presentation of Sensebender temperature and humidity?
    MadhiasM Madhias

    I thought I have a correct sketch now, but as I loaded the sketch to another sensor, something must be wrong, since I always get this error in the Home Assistant log:

    WARNING:mysensors.mysensors:Node 2 is unknown
    INFO:mysensors.mysensors:Requesting new presentation for node 2
    INFO:homeassistant.components.mysensors:No sketch_name: node 2
    WARNING:mysensors.mysensors:child_id 1 already exists in children of node 2, cannot add child
    WARNING:mysensors.mysensors:child_id 2 already exists in children of node 2, cannot add child
    

    The json file looks like it got some values (I just changed the format for better reading here):

    {
        "2": {
            "sketch_version": "1.4",
            "children": {
                "1": {
                    "type": 6,
                    "id": 1,
                    "description": "",
                    "values": {
                        "0": "25.6"
                    }
                },
                "2": {
                    "type": 7,
                    "id": 2,
                    "description": "",
                    "values": {
                        "1": "65"
                    }
                }
            },
            "sensor_id": 2,
            "type": 17,
            "protocol_version": "2.1.1",
            "sketch_name": null,
            "battery_level": 104
        }
    }
    

    This is the sketch:

    // Enable debug prints to serial monitor
    #define MY_DEBUG 
    
    // Define a static node address, remove if you want auto address assignment
    #define MY_NODE_ID 2
    
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    //#define MY_RADIO_RFM69
    
    // Enable to support OTA for this node (needs DualOptiBoot boot-loader to fully work)
    #define MY_OTA_FIRMWARE_FEATURE
    
    #include <SPI.h>
    #include <MySensors.h>
    #include <Wire.h>
    #include <SI7021.h>
    #ifndef MY_OTA_FIRMWARE_FEATURE
    #include "drivers/SPIFlash/SPIFlash.cpp"
    #endif
    #include <EEPROM.h>  
    #include <sha204_lib_return_codes.h>
    #include <sha204_library.h>
    #include <RunningAverage.h>
    //#include <avr/power.h>
    
    // Uncomment the line below, to transmit battery voltage as a normal sensor value
    //#define BATT_SENSOR    199
    
    #define RELEASE "1.4"
    
    #define AVERAGES 2
    
    // Child sensor ID's
    #define CHILD_ID_TEMP  1
    #define CHILD_ID_HUM   2
    
    // How many milli seconds between each measurement
    #define MEASURE_INTERVAL 60000
    
    // How many milli seconds should we wait for OTA?
    #define OTA_WAIT_PERIOD 300
    
    // FORCE_TRANSMIT_INTERVAL, this number of times of wakeup, the sensor is forced to report all values to the controller
    #define FORCE_TRANSMIT_INTERVAL 30 
    
    // When MEASURE_INTERVAL is 60000 and FORCE_TRANSMIT_INTERVAL is 30, we force a transmission every 30 minutes.
    // Between the forced transmissions a tranmission will only occur if the measured value differs from the previous measurement
    
    // HUMI_TRANSMIT_THRESHOLD tells how much the humidity should have changed since last time it was transmitted. Likewise with
    // TEMP_TRANSMIT_THRESHOLD for temperature threshold.
    #define HUMI_TRANSMIT_THRESHOLD 0.5
    #define TEMP_TRANSMIT_THRESHOLD 0.5
    
    // Pin definitions
    #define TEST_PIN       A0
    #define LED_PIN        A2
    #define ATSHA204_PIN   17 // A3
    
    const int sha204Pin = ATSHA204_PIN;
    atsha204Class sha204(sha204Pin);
    
    SI7021 humiditySensor;
    SPIFlash flash(8, 0x1F65);
    
    // Sensor messages
    MyMessage msgHum(CHILD_ID_HUM, V_HUM);
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    
    #ifdef BATT_SENSOR
    MyMessage msgBatt(BATT_SENSOR, V_VOLTAGE);
    #endif
    
    // Global settings
    int measureCount = 0;
    int sendBattery = 0;
    boolean isMetric = true;
    boolean highfreq = true;
    boolean transmission_occured = false;
    
    bool state = false;
    bool initialValueSent = false;
    
    // Storage of old measurements
    float lastTemperature = -100;
    int lastHumidity = -100;
    long lastBattery = -100;
    
    RunningAverage raHum(AVERAGES);
    
    /****************************************************
     *
     * Setup code 
     *
     ****************************************************/
    void setup() {
      
      pinMode(LED_PIN, OUTPUT);
      digitalWrite(LED_PIN, LOW);
    
      Serial.begin(115200);
      Serial.print(F("Sensebender Micro FW "));
      Serial.print(RELEASE);
      Serial.flush();
    
      // First check if we should boot into test mode
    
      pinMode(TEST_PIN,INPUT);
      digitalWrite(TEST_PIN, HIGH); // Enable pullup
      if (!digitalRead(TEST_PIN)) testMode();
    
      // Make sure that ATSHA204 is not floating
      pinMode(ATSHA204_PIN, INPUT);
      digitalWrite(ATSHA204_PIN, HIGH);
      
      digitalWrite(TEST_PIN,LOW);
      
      digitalWrite(LED_PIN, HIGH); 
    
      humiditySensor.begin();
    
      digitalWrite(LED_PIN, LOW);
    
      Serial.flush();
      Serial.println(F(" - Online!"));
      
      isMetric = getControllerConfig().isMetric;
      Serial.print(F("isMetric: ")); Serial.println(isMetric);
      raHum.clear();
      sendTempHumidityMeasurements(false);
      sendBattLevel(false);
      
    #ifdef MY_OTA_FIRMWARE_FEATURE  
      Serial.println("OTA FW update enabled");
    #endif
    
    }
    
    void presentation()  {
      sendSketchInfo("Sensebender Micro", RELEASE);
    
      present(CHILD_ID_TEMP, S_TEMP);
      present(CHILD_ID_HUM, S_HUM);
        
    #ifdef BATT_SENSOR
      present(BATT_SENSOR, S_POWER);
    #endif
    }
    
    
    /***********************************************
     *
     *  Main loop function
     *
     ***********************************************/
    void loop() {
    
      if (!initialValueSent) {
        bool forceMeasure = true;
        sendTempHumidityMeasurements(forceMeasure);
        Serial.println("Requesting initial value from controller");
        request(CHILD_ID_HUM, V_HUM);
        request(CHILD_ID_TEMP, V_TEMP);
        wait(2000, C_SET, V_TEMP);
      }
      
      measureCount ++;
      sendBattery ++;
      bool forceTransmit = false;
      transmission_occured = false;
    #ifndef MY_OTA_FIRMWARE_FEATURE
      if ((measureCount == 5) && highfreq) 
      {
        clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power.
        highfreq = false;
      } 
    #endif
      
      if (measureCount > FORCE_TRANSMIT_INTERVAL) { // force a transmission
        forceTransmit = true; 
        measureCount = 0;
      }
        
      sendTempHumidityMeasurements(forceTransmit);
    /*  if (sendBattery > 60) 
      {
         sendBattLevel(forceTransmit); // Not needed to send battery info that often
         sendBattery = 0;
      }*/
    #ifdef MY_OTA_FIRMWARE_FEATURE
      if (transmission_occured) {
          wait(OTA_WAIT_PERIOD);
      }
    #endif
    
      sleep(MEASURE_INTERVAL);  
    }
    
    
    /*********************************************
     *
     * Sends temperature and humidity from Si7021 sensor
     *
     * Parameters
     * - force : Forces transmission of a value (even if it's the same as previous measurement)
     *
     *********************************************/
    void sendTempHumidityMeasurements(bool force)
    {
      bool tx = force;
    
      si7021_env data = humiditySensor.getHumidityAndTemperature();
      
      raHum.addValue(data.humidityPercent);
      
      float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100.0);
      float diffHum = abs(lastHumidity - raHum.getAverage());
    
      Serial.print(F("TempDiff :"));Serial.println(diffTemp);
      Serial.print(F("HumDiff  :"));Serial.println(diffHum); 
    
      if (isnan(diffHum)) tx = true; 
      if (diffTemp > TEMP_TRANSMIT_THRESHOLD) tx = true;
      if (diffHum > HUMI_TRANSMIT_THRESHOLD) tx = true;
    
      if (tx) {
        measureCount = 0;
        float temperature = (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths) / 100.0;
         
        int humidity = data.humidityPercent;
        Serial.print("T: ");Serial.println(temperature);
        Serial.print("H: ");Serial.println(humidity);
        
        send(msgTemp.set(temperature,1));
        send(msgHum.set(humidity));
        lastTemperature = temperature;
        lastHumidity = humidity;
        transmission_occured = true;
        if (sendBattery > 60) {
         sendBattLevel(true); // Not needed to send battery info that often
         sendBattery = 0;
        }
      }
    }
    
    /********************************************
     *
     * Sends battery information (battery percentage)
     *
     * Parameters
     * - force : Forces transmission of a value
     *
     *******************************************/
    void sendBattLevel(bool force)
    {
      if (force) lastBattery = -1;
      long vcc = readVcc();
      if (vcc != lastBattery) {
        lastBattery = vcc;
    
    #ifdef BATT_SENSOR
        float send_voltage = float(vcc)/1000.0f;
        send(msgBatt.set(send_voltage,3));
    #endif
    
        // Calculate percentage
    
        vcc = vcc - 1900; // subtract 1.9V from vcc, as this is the lowest voltage we will operate at
        
        long percent = vcc / 14.0;
        sendBatteryLevel(percent);
        transmission_occured = true;
      }
    }
    
    /*******************************************
     *
     * Internal battery ADC measuring 
     *
     *******************************************/
    long readVcc() {
      // Read 1.1V reference against AVcc
      // set the reference to Vcc and the measurement to the internal 1.1V reference
      #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
        ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
      #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
        ADMUX = _BV(MUX5) | _BV(MUX0);
      #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
        ADcdMUX = _BV(MUX3) | _BV(MUX2);
      #else
        ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
      #endif  
     
      delay(2); // Wait for Vref to settle
      ADCSRA |= _BV(ADSC); // Start conversion
      while (bit_is_set(ADCSRA,ADSC)); // measuring
     
      uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH  
      uint8_t high = ADCH; // unlocks both
     
      long result = (high<<8) | low;
     
      result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
      return result; // Vcc in millivolts
     
    }
    
    /****************************************************
     *
     * Verify all peripherals, and signal via the LED if any problems.
     *
     ****************************************************/
    void testMode()
    {
      uint8_t rx_buffer[SHA204_RSP_SIZE_MAX];
      uint8_t ret_code;
      byte tests = 0;
      
      digitalWrite(LED_PIN, HIGH); // Turn on LED.
      Serial.println(F(" - TestMode"));
      Serial.println(F("Testing peripherals!"));
      Serial.flush();
      Serial.print(F("-> SI7021 : ")); 
      Serial.flush();
      
      if (humiditySensor.begin()) 
      {
        Serial.println(F("ok!"));
        tests ++;
      }
      else
      {
        Serial.println(F("failed!"));
      }
      Serial.flush();
    
      Serial.print(F("-> Flash : "));
      Serial.flush();
      if (flash.initialize())
      {
        Serial.println(F("ok!"));
        tests ++;
      }
      else
      {
        Serial.println(F("failed!"));
      }
      Serial.flush();
    
      
      Serial.print(F("-> SHA204 : "));
      ret_code = sha204.sha204c_wakeup(rx_buffer);
      Serial.flush();
      if (ret_code != SHA204_SUCCESS)
      {
        Serial.print(F("Failed to wake device. Response: ")); Serial.println(ret_code, HEX);
      }
      Serial.flush();
      if (ret_code == SHA204_SUCCESS)
      {
        ret_code = sha204.getSerialNumber(rx_buffer);
        if (ret_code != SHA204_SUCCESS)
        {
          Serial.print(F("Failed to obtain device serial number. Response: ")); Serial.println(ret_code, HEX);
        }
        else
        {
          Serial.print(F("Ok (serial : "));
          for (int i=0; i<9; i++)
          {
            if (rx_buffer[i] < 0x10)
            {
              Serial.print('0'); // Because Serial.print does not 0-pad HEX
            }
            Serial.print(rx_buffer[i], HEX);
          }
          Serial.println(")");
          tests ++;
        }
    
      }
      Serial.flush();
    
      Serial.println(F("Test finished"));
      
      if (tests == 3) 
      {
        Serial.println(F("Selftest ok!"));
        while (1) // Blink OK pattern!
        {
          digitalWrite(LED_PIN, HIGH);
          delay(200);
          digitalWrite(LED_PIN, LOW);
          delay(200);
        }
      }
      else 
      {
        Serial.println(F("----> Selftest failed!"));
        while (1) // Blink FAILED pattern! Rappidly blinking..
        {
        }
      }  
    }
    

    @Mark69 Can't post a helpful sketch so far. Sorry!

    Home Assistant

  • 'getConfig' was not declared in this scope (V2.1.1) - FIXED
    MadhiasM Madhias

    Thanks, had the same problem!

    Troubleshooting

  • 💬 Building a Raspberry Pi Gateway
    MadhiasM Madhias

    @marceloaqno OK, many thanks for that hint!

    I was wrong from the beginning on, since I thought my configuration for the gateway was correct because of --my-serial-groupname=dialout - but that was not compiled. I edited now the mysgw.cpp manually (there was tty instead of dialout; and of course there was all the time the warning when compiling...). Now it works! Without chmod, or chowning anything later!

    Announcements

  • 💬 Building a Raspberry Pi Gateway
    MadhiasM Madhias

    I have a question regarding the --my-serial-groupname option: since I start the gateway under an user account with sudo, the gateway device ([EDIT] symlink) will be created with ownership root:root. Shouldn't it be created with root:dialout (as I chose dialout as group in my case)?

    [DELETED]

    Announcements

  • Correct presentation of Sensebender temperature and humidity?
    MadhiasM Madhias

    I have called the measurement function now inside the loop function (that is way better of course), and changed the third wait argument to V_TEMP. That works.

    I had a request in the code, but commented it out, it was like: request(CHILD_ID_TEMP, V_TEMP); because I was not sure if it is needed.

    Thanks for your help!

    Home Assistant

  • Correct presentation of Sensebender temperature and humidity?
    MadhiasM Madhias

    Hi,

    I am starting slowly to get into MySensors, and currently my setup is sporting one Sensebender connected to a Raspberry serial gateway and Home Assistant on this Raspberry. This setup works, and the controller gets temperature and humidity from the sensor.

    I have some questions regarding the presentation in the loop function: the current temperature must be presented? Humidity also? To get the current temperature I have to add in the loop function everything needed to get a temperature value - since the values of the loop function are seen in Home Assistant? So looking at the sketch the temperature and humidity is sent twice to the gateway - once in loop, once in sendTempHumidityMeasurements? Should I get rid of one measurement sent to the gateway?

    Sorry for my basic questions... I am really happy to be so far though :)

    Here are those parts of the sketch:

    void presentation()  {
      sendSketchInfo("Sensebender Micro", RELEASE);
    
      present(CHILD_ID_TEMP,S_TEMP);
      present(CHILD_ID_HUM,S_HUM);
        
    #ifdef BATT_SENSOR
      present(BATT_SENSOR, S_POWER);
    #endif
    }
    
    void loop() {
      if (!initialValueSent) {
        si7021_env data = humiditySensor.getHumidityAndTemperature();
        float temperature = (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths) / 100.0;
        int humidity = data.humidityPercent;
        Serial.println("Sending initial value");
        send(msgTemp.set(temperature,1));
        send(msgHum.set(humidity));
        wait(2000, C_SET, V_STATUS);
      }
    }
    
    void sendTempHumidityMeasurements(bool force)
    {
      bool tx = force;
    
      si7021_env data = humiditySensor.getHumidityAndTemperature();
      
      raHum.addValue(data.humidityPercent);
      
      float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100.0);
      float diffHum = abs(lastHumidity - raHum.getAverage());
    
      Serial.print(F("TempDiff :"));Serial.println(diffTemp);
      Serial.print(F("HumDiff  :"));Serial.println(diffHum); 
    
      if (isnan(diffHum)) tx = true; 
      if (diffTemp > TEMP_TRANSMIT_THRESHOLD) tx = true;
      if (diffHum > HUMI_TRANSMIT_THRESHOLD) tx = true;
    
      if (tx) {
        measureCount = 0;
        float temperature = (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths) / 100.0;
         
        int humidity = data.humidityPercent;
        Serial.print("T: ");Serial.println(temperature);
        Serial.print("H: ");Serial.println(humidity);
        
        send(msgTemp.set(temperature,1));
        send(msgHum.set(humidity));
        lastTemperature = temperature;
        lastHumidity = humidity;
        transmission_occured = true;
        if (sendBattery > 60) {
         sendBattLevel(true); // Not needed to send battery info that often
         sendBattery = 0;
        }
      }
    }
    
    Home Assistant

  • How to connect Sensebender with serial gateway?
    MadhiasM Madhias

    Adding a capacitor at the radio solved my issues... Sorry for not trying that from the very beginning, today I bought some capacitors, and now it looks good!

    Happy now!

    33804 TSF:MSG:SEND,3-3-0-0,s=1,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=OK:24.0
    33818 TSF:MSG:SEND,3-3-0-0,s=2,c=1,t=1,pt=2,l=2,sg=0,ft=0,st=OK:62
    34127 MCO:SLP:MS=60000,SMS=0,I1=255,M1=255,I2=255,M2=255
    34134 MCO:SLP:TPD
    34136 MCO:SLP:WUP=-1
    Sending initial value
    34154 TSF:MSG:SEND,3-3-0-0,s=1,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:1
    Requesting initial value from controller
    34164 TSF:MSG:SEND,3-3-0-0,s=1,c=2,t=2,pt=0,l=0,sg=0,ft=0,st=OK:
    TempDiff :1.01
    HumDiff  :1.50
    T: 23.00
    H: 65
    
    Troubleshooting

  • How to connect Sensebender with serial gateway?
    MadhiasM Madhias

    I will try to find other NRF24L01+ modules. The long range versions I got were from the same seller. However next weekend I will make a restart with new parts :)

    I am still wondering if it is really more or less easy to setup and thinking that I must have forgotten something. But I have to admit in the beginning it looked for me like a fast job, connecting some dupont cables, load up some sketches, and voila.

    Troubleshooting

  • How to connect Sensebender with serial gateway?
    MadhiasM Madhias

    What is the difference between the Sensebender example sketch at Github (https://github.com/mysensors/SensebenderMicro/blob/master/Arduino/SensebenderMicro/SensebenderMicro.ino) and the preloaded sketch on the Sensebender?

    With the preloaded sketch the serial monitor output looks like this (I have deleted some lines in between to see the T / H values are also there):

    req node id
    send: 255-255-255-0 s=255,c=3,t=3,pt=0,l=0,st=fail:
    sensor started, id 255
     - Online!
    req node id
    send: 255-255-255-0 s=255,c=3,t=3,pt=0,l=0,st=fail:
    T: 23.10
    H: 63
    

    And with the sketch from Github I have the output as seen in my first post of this thread.

    Troubleshooting

  • 💬 Building a Raspberry Pi Gateway
    MadhiasM Madhias

    After installing a Raspberry Gateway, is this output OK, or have I forgotten something?

    mysgw: Starting gateway...
    mysgw: Protocol version - 2.2.0-beta
    mysgw: MCO:BGN:INIT GW,CP=RNNG---,VER=2.2.0-beta
    mysgw: TSF:LRT:OK
    mysgw: TSM:INIT
    mysgw: TSF:WUR:MS=0
    mysgw: TSM:INIT:TSP OK
    mysgw: TSM:INIT:GW MODE
    mysgw: TSM:READY:ID=0,PAR=0,DIS=0
    mysgw: MCO:REG:NOT NEEDED
    mysgw: MCO:BGN:STP
    mysgw: MCO:BGN:INIT OK,TSP=1
    

    I configured with (should be a serial gateway with a controller on the same machine):

    ./configure --soc=BCM2835 --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyMySensorGateway --my-serial-groupname=dialout --my-debug=enable
    
    Announcements

  • How to connect Sensebender with serial gateway?
    MadhiasM Madhias

    I have tried different setups now, next one will be with an original Genuino Uno Rev 3 board as a gateway. Also I'll have later another USB serial adapter. Store is closed today. Argh. So it will be next week then.

    I tried a long range NRF24 too.
    I have also reset the EEPROM on the Sensebender, and on the Arduino clone.

    For now I do not know what to do except to change all remaining parts.

    I already dreamed of !TSM:FPAR:NO REPLY !TSM:FPAR:NO REPLY !TSM:FPAR:NO REPLY Ahhh! :disappointed_relieved:

    Troubleshooting

  • How to connect Sensebender with serial gateway?
    MadhiasM Madhias

    I have attached the ethernet gateway (Itead IBoard), to the LAN and PC, and the serial monitor output of the gateway looks like this when batteries are in the Sensebender node (unfortunately I have only one FTDI adapter):

    0;255;3;0;9;MCO:BGN:STP
    0;255;3;0;9;MCO:BGN:INIT OK,TSP=1
    0;255;3;0;9;TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0:
    0;255;3;0;9;MCO:BGN:INIT GW,CP=RNNGA--,VER=2.1.0
    0;255;3;0;9;TSM:INIT
    0;255;3;0;9;TSF:WUR:MS=0
    0;255;3;0;9;TSM:INIT:TSP OK
    0;255;3;0;9;TSM:INIT:GW MODE
    0;255;3;0;9;TSM:READY:ID=0,PAR=0,DIS=0
    0;255;3;0;9;MCO:REG:NOT NEEDED
    
    0;255;3;0;9;MCO:BGN:STP
    0;255;3;0;9;MCO:BGN:INIT OK,TSP=1
    0;255;3;0;9;TSF:MSG:READ,255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;TSF:MSG:BC
    0;255;3;0;9;TSF:MSG:FPAR REQ,ID=255
    0;255;3;0;9;TSF:PNG:SEND,TO=0
    0;255;3;0;9;TSF:CKU:OK
    0;255;3;0;9;TSF:MSG:GWL OK
    0;255;3;0;9;TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    0;255;3;0;9;TSF:MSG:READ,255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    

    It looks good?

    I also tried the next possible gateway I could build: an ethernet gateway with a W5100 shield attached to the Uno. But with this combination I get this output:

    0;255;3;0;9;MCO:BGN:INIT GW,CP=RNNGA--,VER=2.1.0
    0;255;3;0;9;TSM:INIT
    0;255;3;0;9;TSF:WUR:MS=0
    0;255;3;0;9;!TSM:INIT:TSP FAIL
    0;255;3;0;9;TSM:FAIL:CNT=1
    0;255;3;0;9;TSM:FAIL:PDT
    0;255;3;0;9;TSM:FAIL:RE-INIT
    

    But this is another story, and could it be that this Uno clone is the problem part - since it also did not work with the serial setup?

    Troubleshooting

  • How to connect Sensebender with serial gateway?
    MadhiasM Madhias

    Thanks for your reply!

    In the gateway log nothing else shows up. I got these NRF modules.

    My next step was - which I wanted to try out later - to hook up an IBoard (version 1.1), and use it as Ethernet gateway. I uploaded the sketch found here from TimO, and put some batteries in the node, and got this output - is this the sensor talking with the gateway? This MSG:READ makes me happy somehow...

    0;255;3;0;9;MCO:BGN:INIT GW,CP=RNNGA--,VER=2.1.0
    0;255;3;0;9;TSM:INIT
    0;255;3;0;9;TSF:WUR:MS=0
    0;255;3;0;9;TSM:INIT:TSP OK
    0;255;3;0;9;TSM:INIT:GW MODE
    0;255;3;0;9;TSM:READY:ID=0,PAR=0,DIS=0
    0;255;3;0;9;MCO:REG:NOT NEEDED
    IP: 10.20.30.4
    0;255;3;0;9;MCO:BGN:STP
    0;255;3;0;9;MCO:BGN:INIT OK,TSP=1
    0;255;3;0;9;TSF:MSG:READ,255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;TSF:MSG:BC
    0;255;3;0;9;TSF:MSG:FPAR REQ,ID=255
    0;255;3;0;9;TSF:PNG:SEND,TO=0
    0;255;3;0;9;TSF:CKU:OK
    0;255;3;0;9;TSF:MSG:GWL OK
    0;255;3;0;9;TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    0;255;3;0;9;TSF:MSG:READ,255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;TSF:MSG:BC
    0;255;3;0;9;TSF:MSG:FPAR REQ,ID=255
    0;255;3;0;9;TSF:PNG:SEND,TO=0
    0;255;3;0;9;TSF:CKU:OK
    0;255;3;0;9;TSF:MSG:GWL OK
    0;255;3;0;9;TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    

    I only have one FTDI adapter, so I can't see right now the serial monitor of the node. Later I will connect the ethernet gateway to the LAN.

    Another question: is it possible to see a local time in the serial monitor?

    Troubleshooting
  • Login

  • Don't have an account? Register

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