Navigation

    • Register
    • Login
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular
    1. Home
    2. Mr.Osaka
    3. Posts
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Posts made by Mr.Osaka

    • RE: Direct Node to Node communications with Signing

      Tank's for help and your great work.
      I will learn C.
      At the moment is more important my entire project, i wait the next release of MySensors.

      I will publish soon a "resilient" Thermostat.

      By,
      Stefano

      posted in Development
      Mr.Osaka
      Mr.Osaka
    • RE: Direct Node to Node communications with Signing

      @Anticimex
      I have put at end of setup(), but I have compile errors

      /home/stef/Dropbox/Progetti/Thermostat.MySensor-v0.04/Thermostat.MySensor-v0.04.ino: In function 'void setup()':
      Thermostat.MySensor-v0.04:192: error: 'build' was not declared in this scope
         sendRoute(build(msgHeater, 143, 200, NODE_SENSOR_ID, C_INTERNAL, I_REQUEST_SIGNING, false).set(true));
                                                                                                  ^
      Thermostat.MySensor-v0.04:192: error: 'sendRoute' was not declared in this scope
         sendRoute(build(msgHeater, 143, 200, NODE_SENSOR_ID, C_INTERNAL, I_REQUEST_SIGNING, false).set(true));
      

      And what do you mean by <message buffer>?

      MyMessage msgHeater(CHILD_ID_HVAC, V_STATUS);
      

      msgHeater is <message buffer>?

      ps: sorry for my essential english

      posted in Development
      Mr.Osaka
      Mr.Osaka
    • RE: Direct Node to Node communications with Signing

      @Anticimex said:

      @Mr.Osaka
      Not necessarily complicated (but untested).

      ☺ unfortunately my knowledge of C are very superficial

      I do not know if I found the right place to put code:

      #ifdef MY_SIGNING_FEATURE
      		// Notify gateway (and possibly controller) about the signing preferences of this node
      		//sendRoute(build(msg, nc.nodeId, GATEWAY_ADDRESS, NODE_SENSOR_ID, C_INTERNAL, I_REQUEST_SIGNING, false).set(signer.requestSignatures()));
      		// STEF INSERT
      		sendRoute(build(msg, 143, 200, NODE_SENSOR_ID, C_INTERNAL, I_REQUEST_SIGNING, false).set(true));
      

      unfortunately it was not successful

      To probe, I set the node that receives the signed message as a repeater and I forced the transmitting node to become a child of this node.

      to explain
      Before
      A ----> GW -----> B
      now
      A ----> B ----> GW
      it was not successful too.

      posted in Development
      Mr.Osaka
      Mr.Osaka
    • [MySigningAtsha204Soft 1.5.4] HMAC linux keygenerator

      Hallo,
      for linux user i wrote a helpful script for creating random key (32 hex) for
      MyConfig.h - #define MY_HMAC_KEY with the correct formatting.

      Stefano

      #!/bin/bash
      
      # mysensors_HMAC-key.sh
      #
      # generate a hex 32bit random key for 
      # MyConfig.h - #define MY_HMAC_KEY 0x00,0x00,0x00,......
      # 
      #
      # Created by Stefano Gottardi <st.gottardi (at) libero.it>
      #
      # 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.
      
      if ! which openssl > /dev/null
      then
      	echo "openssl is not installed"
      	exit -1
      fi
      
      key=`openssl rand -hex 32`
      COUNTER=2
      MYSENS_KEY="0x${key:0:2}"
      
      until [  $COUNTER -eq 64 ]; do
      	STRING=${key:$COUNTER:2}
      	MYSENS_KEY="$MYSENS_KEY,0x$STRING"
      	let COUNTER+=2
      done
      
      echo $MYSENS_KEY
      
      exit 0
      
      posted in General Discussion
      Mr.Osaka
      Mr.Osaka
    • RE: [1.5.4] setDestination remove signing (MySigningAtsha204Soft)

      the answer for this problem is here
      technically possible, but hard to implement.
      Stefano

      posted in Troubleshooting
      Mr.Osaka
      Mr.Osaka
    • RE: Direct Node to Node communications with Signing

      @Anticimex thanks for the answer

      posted in Development
      Mr.Osaka
      Mr.Osaka
    • RE: Direct Node to Node communications with Signing

      @Anticimex I have a similar problem with my project of a thermostat. I use softsigned messages. I communicate from thermostat-node the aperture of valve to the valve-controller-node via gateway, but the message is not signed.
      here I wrote the sketch and logs.
      I also tried with MY_SECURE_NODE_WHITELISTING, but without results.

      Is possible use this scenario with the stable branch?

      Thanks for your help

      Stefano

      posted in Development
      Mr.Osaka
      Mr.Osaka
    • [1.5.4] setDestination remove signing (MySigningAtsha204Soft)

      Hi, i use MySensors 1.5.4. I test the software version signing.
      If i send a message to another node the signing is lost.

      the code

      /**
       * 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.8
       *
       *******************************
       *
       * DESCRIPTION
       *
       */
      
      
      // set node id
      #define NODE_ID 143
      
      
      // select MySigningAtsha204Soft
      #define Atsha204Soft
      // select MySigningAtsha204 with hardware
      //#define Atsha204hw
      
      
      #include <MySensor.h>
      
      #ifdef Atsha204Soft
        #include <MySigningAtsha204Soft.h>
      #elif defined Atsha204hw
        #include <MySigningAtsha204.h>  
      #endif  
      
      #include <MyHwATMega328.h>
      MyHwATMega328 hw; // Select AtMega328 hardware profile
      
      
      MyTransportNRF24 radio;  // NRFRF24L01 radio driver
      
      #ifdef Atsha204Soft
        MySigningAtsha204Soft signer(true);
        MySensor gw(radio, hw, signer);
      #elif defined Atsha204hw
        MySigningAtsha204 signer; // Select HW ATSHA signing backend
        MySensor gw(radio, hw, signer);
      #else
        MySensor gw(radio, hw);
      #endif
      
      #include <SPI.h>
      #include <Wire.h>
      
      
      #define CHILD_ID_HVAC 0
      #define CHILD_ID_TEMP 1
      
      // Initialize temperature message
      MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
      
      
      // Initialize thermostat message
      MyMessage msgHeater(CHILD_ID_HVAC, V_STATUS);
      
      
      boolean metric = true;
      
      int Sleep_time = 3000;
      
      float temperature; 
      
      byte heating;
      
      void setup()  
      { 
        // Startup and initialize MySensors library. Set callback for incoming messages.
        gw.begin(NULL, NODE_ID);
        
       
        // Register all sensors to gw (they will be created as child devices)
        gw.present(CHILD_ID_TEMP, S_TEMP);
      
          
        // termostato
        gw.present(CHILD_ID_HVAC, S_HVAC);
        
      //*******************************  
      
        msgHeater.setDestination(200);
        
      //*******************************
        
      
        metric = gw.getConfig().isMetric;
      
        heating = 1;
        temperature = 24;  
      }
      
      
      void loop()     
      { 
        
        // Process incoming messages (like config from server)
        gw.process();
        
      
          
        gw.send(msgTemp.set(temperature,1));
        gw.send(msgHeater.set(heating,1));
        
        gw.sleep(Sleep_time);
      
      }
      
      
      

      MyConfig.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-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.
       */
      
      
      #ifndef MyConfig_h
      #define MyConfig_h
      #include <stdint.h>
      
      // Enable debug flag for debug prints. This will add a lot to the size of the final sketch but good
      // to see what is actually is happening when developing
      #define DEBUG
      
      // Disable this line, If you are using TX(1), RX(0) as normal I/O pin
      #define ENABLED_SERIAL
      
      // Serial output baud rate (for debug prints and serial gateway)
      #define BAUD_RATE 115200
      
      
      /**********************************
      *  Over the air firmware updates
      ***********************************/
      
      // The following define enables the safe over-the-air firmware update feature
      // which requires external flash and the DualOptiBoot bootloader.
      // Note: You can still have OTA FW updates without external flash but it
      // requires the MYSBootloader and disabled MY_OTA_FIRMWARE_FEATURE
      //#define MY_OTA_FIRMWARE_FEATURE
      // Slave select pin for external flash
      #define MY_OTA_FLASH_SS 8
      // Flash jdecid
      #define MY_OTA_FLASH_JDECID 0x1F65
      
      
      /**********************************
      *  Information LEDs blinking
      ***********************************/
      // This feature enables LEDs blinking on message receive, transmit
      // or if some error occured. This was commonly used only in gateways,
      // but now can be used in any sensor node. Also the LEDs can now be
      // disabled in the gateway.
      
      //#define WITH_LEDS_BLINKING
      
      // The following setting allows you to inverse the blinking feature WITH_LEDS_BLINKING
      // When WITH_LEDS_BLINKING_INVERSE is enabled LEDSs are normally turned on and switches
      // off when blinking
      
      #define WITH_LEDS_BLINKING_INVERSE
      
      
      // default LEDs blinking period in milliseconds
      #define DEFAULT_LED_BLINK_PERIOD 300
      // The RX LED default pin
      #define DEFAULT_RX_LED_PIN 6
      // The TX LED default pin
      #define DEFAULT_TX_LED_PIN 5
      // The Error LED default pin
      #define DEFAULT_ERR_LED_PIN 4
      
      
      /**********************************
      *  Message Signing Settings
      ***********************************/
      // Disable to completly disable signing functionality in library
      #define MY_SIGNING_FEATURE
      
      // Define a suitable timeout for a signature verification session
      // Consider the turnaround from a nonce being generated to a signed message being received
      // which might vary, especially in networks with many hops. 5s ought to be enough for anyone.
      #define MY_VERIFICATION_TIMEOUT_MS 5000
      
      // Enable to turn on whitelisting
      // When enabled, a signing node will salt the signature with it's unique signature and nodeId.
      // The verifying node will look up the sender in a local table of trusted nodes and
      // do the corresponding salting in order to verify the signature.
      // For this reason, if whitelisting is enabled on one of the nodes in a sign-verify pair, both
      // nodes have to implement whitelisting for this to work.
      // Note that a node can still transmit a non-salted message (i.e. have whitelisting disabled)
      // to a node that has whitelisting enabled (assuming the receiver does not have a matching entry
      // for the sender in it's whitelist)
      //#define MY_SECURE_NODE_WHITELISTING
      
      // MySigningAtsha204 default setting
      #define MY_ATSHA204_PIN 17 // A3 - pin where ATSHA204 is attached
      
      // MySigningAtsha204Soft default settings
      #define MY_RANDOMSEED_PIN 7 // A7 - Pin used for random generation (do not connect anything to this)
      
      // Key to use for HMAC calculation in MySigningAtsha204Soft (32 bytes)
      #define MY_HMAC_KEY 0x00,0x01,0x02,0x03,0x04,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
      
      /**********************************
      *  NRF24L01 Driver Defaults
      ***********************************/
      #define RF24_CE_PIN		   9
      #define RF24_CS_PIN		   10
      #define RF24_PA_LEVEL 	   RF24_PA_MAX
      #define RF24_PA_LEVEL_GW   RF24_PA_MAX
      // RF channel for the sensor net, 0-127
      #define RF24_CHANNEL	   76
      //RF24_250KBPS for 250kbs, RF24_1MBPS for 1Mbps, or RF24_2MBPS for 2Mbps
      #define RF24_DATARATE 	   RF24_250KBPS
      // This is also act as base value for sensor nodeId addresses. Change this (or channel) if you have more than one sensor network.
      #define RF24_BASE_RADIO_ID ((uint64_t)0xA8A8E1FC00LL)
      
      // Enable SOFTSPI for NRF24L01 when using the W5100 Ethernet module
      //#define SOFTSPI
      #ifdef SOFTSPI
      	// Define the soft SPI pins used for NRF radio
      	const uint8_t SOFT_SPI_MISO_PIN = 16;
          const uint8_t SOFT_SPI_MOSI_PIN = 15;
          const uint8_t SOFT_SPI_SCK_PIN = 14;
      #endif
      
      
      /**********************************
      *  RFM69 Driver Defaults
      ***********************************/
      // Default network id. Use the same for all nodes that will talk to each other
      #define RFM69_NETWORKID     100
      
      // Default frequency to use. This must match the hardware version of the RFM69 radio (uncomment one):
      // #define RFM69_FREQUENCY   RF69_433MHZ
      #define RFM69_FREQUENCY   RF69_868MHZ
      //#define FREQUENCY     RF69_915MHZ
      
      // Enable this for encryption of packets
      //#define RFM69_ENABLE_ENCRYPTION
      #define RFM69_ENCRYPTKEY    "sampleEncryptKey" //exactly the same 16 characters/bytes on all nodes!
      
      
      
      
      #endif
      

      log with msgHeater.setDestination(200);

      send: 143-143-0-0 s=255,c=3,t=15,pt=2,l=2,sg=0,st=ok:1
      read: 0-0-143 s=255,c=3,t=15,pt=2,l=2,sg=0:1
      send: 143-143-0-0 s=255,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:01B3F448E00B03DE197731D7302FC7167D50E9F50B77C63700
      send: 143-143-0-0 s=255,c=0,t=17,pt=0,l=5,sg=1,st=ok:1.5.4
      send: 143-143-0-0 s=255,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:01760D40777B6F77FB01DB9885D5E308FEA51F1A08C6FB2062
      send: 143-143-0-0 s=255,c=3,t=6,pt=1,l=1,sg=1,st=ok:0
      sensor started, id=143, parent=0, distance=1
      send: 143-143-0-0 s=1,c=0,t=6,pt=0,l=0,sg=0,st=ok:
      send: 143-143-0-0 s=0,c=0,t=29,pt=0,l=0,sg=0,st=ok:
      send: 143-143-0-0 s=1,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:0113FB50BA8E123562556FFB438496DD27EE929E73D8B05435
      send: 143-143-0-0 s=1,c=1,t=0,pt=7,l=5,sg=1,st=ok:24.0
      send: 143-143-0-200 s=0,c=1,t=2,pt=7,l=5,sg=0,st=ok:1.0
      send: 143-143-0-0 s=1,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:01064049BBFFF98FDAD1841895BC33ECDDA202E66BDB9D045F
      send: 143-143-0-0 s=1,c=1,t=0,pt=7,l=5,sg=1,st=ok:24.0
      send: 143-143-0-200 s=0,c=1,t=2,pt=7,l=5,sg=0,st=ok:1.0
      

      log without msgHeater.setDestination(200);

      send: 143-143-0-0 s=255,c=3,t=15,pt=2,l=2,sg=0,st=ok:1
      read: 0-0-143 s=255,c=3,t=15,pt=2,l=2,sg=0:1
      send: 143-143-0-0 s=255,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:01B3F448E00B03DE197731D7302FC7167D50E9F50B77C63700
      send: 143-143-0-0 s=255,c=0,t=17,pt=0,l=5,sg=1,st=ok:1.5.4
      send: 143-143-0-0 s=255,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:0113FB50BA8E123562556FFB438496DD27EE929E73D8B05435
      send: 143-143-0-0 s=255,c=3,t=6,pt=1,l=1,sg=1,st=ok:0
      sensor started, id=143, parent=0, distance=1
      send: 143-143-0-0 s=1,c=0,t=6,pt=0,l=0,sg=0,st=ok:
      send: 143-143-0-0 s=0,c=0,t=29,pt=0,l=0,sg=0,st=ok:
      send: 143-143-0-0 s=1,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:01064049BBFFF98FDAD1841895BC33ECDDA202E66BDB9D045F
      send: 143-143-0-0 s=1,c=1,t=0,pt=7,l=5,sg=1,st=ok:24.0
      send: 143-143-0-0 s=0,c=3,t=16,pt=0,l=0,sg=0,st=ok:
      read: 0-0-143 s=255,c=3,t=17,pt=6,l=25,sg=0:0113FB50BA8E123562556FFB438496DD27EE929E73D8B05435
      send: 143-143-0-0 s=0,c=1,t=2,pt=7,l=5,sg=1,st=ok:1.0
      

      Arduino ide 1.6.1
      the node is arduino nano and gateway is a mini pro over a Raspberry Pi via serial

      I don't now if is a bug or a programming error.
      Thank you for help

      Stefano

      p.s.: sorry for the broken english

      posted in Troubleshooting
      Mr.Osaka
      Mr.Osaka