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
B

blackdog65

@blackdog65
About
Posts
9
Topics
1
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • Project boxes for MySensor's nodes and gateway?
    B blackdog65

    I've got a few of these with 2xAAA, Arduino pro + radio + DS18b20 crammed into them

    Vented Box

    @mvdarend has my vote though... much cheaper and fun

    Enclosures / 3D Printing

  • Generic Temperature/repeater node
    B blackdog65

    It drives me crazy! The oldest part of the house pre-dates 1650 and was built to last. I have 4 wifi points hard-wired in as wifi will only reach the next room.

    On the plus side, it's cool in summer and warm in winter ;)

    Development

  • Generic Temperature/repeater node
    B blackdog65

    How odd? Turned off and on... (which I'd tried obviously) and has worked perfectly since
    go figure

    Development

  • Generic Temperature/repeater node
    B blackdog65

    Ah... actually it doesn't work :(
    It takes one temp reading and then sits there with a led flashing... damn!

    Anyone see the problem?

    Development

  • Generic Temperature/repeater node
    B blackdog65

    Ok... I tried this based on the standard dallas DS18B20 sketch and I think it's working.

    It shows up in MSController as both a TEMP sensor and an ARDUINO_RELAY

    Tomorrow I'll try it with Domoticz

    Many thanks for the advice ;)

    #include <MySensor.h>  
    #include <SPI.h>
    #include <DallasTemperature.h>
    #include <OneWire.h>
    
    #define COMPARE_TEMP 0 // Send temperature only if changed? 1 = Yes 0 = No
    
    #define ONE_WIRE_BUS 3 // Pin where dallase sensor is connected 
    #define MAX_ATTACHED_DS18B20 16
    unsigned long WAIT_TIME = 300000; // Wait time between reads (in milliseconds)
    OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
    DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature. 
    MySensor gw;
    float lastTemperature[MAX_ATTACHED_DS18B20];
    int numSensors=0;
    boolean receivedConfig = false;
    boolean metric = true; 
    // Initialize temperature message
    MyMessage msg(0,V_TEMP);
    
    void setup()  
    { 
      // Startup up the OneWire library
      sensors.begin();
      // requestTemperatures() will not block current thread
      sensors.setWaitForConversion(false);
    
      // Startup and initialize MySensors library. Set callback for incoming messages. 
      gw.begin(NULL, AUTO, true);
    
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo("Temperature Sensor", "1.1");
    
      // Fetch the number of attached temperature sensors  
      numSensors = sensors.getDeviceCount();
    
      // Present all sensors to controller
      for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {   
         gw.present(i, S_TEMP);
      }
    }
    
    
    void loop()     
    {     
      // Process incoming messages (like config from server)
      gw.process(); 
    
      // Fetch temperatures from Dallas sensors
      sensors.requestTemperatures();
    
      // query conversion time and sleep until conversion completed
      int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution());
      // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater)
      gw.wait(conversionTime);
    
      // Read temperatures and send them to controller 
      for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
     
        // Fetch and round temperature to one decimal
        float temperature = static_cast<float>(static_cast<int>((gw.getConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
     
        // Only send data if temperature has changed and no error
        #if COMPARE_TEMP == 1
        if (lastTemperature[i] != temperature && temperature != -127.00 && temperature != 85.00) {
        #else
        if (temperature != -127.00 && temperature != 85.00) {
        #endif
     
          // Send in the new temperature
          gw.send(msg.setSensor(i).set(temperature,1));
          // Save new temperatures for next compare
          lastTemperature[i]=temperature;
        }
      }
      gw.wait(WAIT_TIME);
    }
    Development

  • Generic Temperature/repeater node
    B blackdog65

    Thanks for the reply!

    I got my "Arduino for Dummies" book from Amazon today... sooo let's give it a go :)

    Development

  • Generic Temperature/repeater node
    B blackdog65

    Hi Guys,

    I have several nodes up and running which I feed into Domoticz.

    I'm currently trying to turn the DallasTemperatureSensor script into a repeater node. I have built some plug-in temp sensors but I have range issues due to living in a "Faraday Mansion". Some of my internal walls are 700mm+ in thickness! My current "get around" is to have a Raspberry Pi + Arduino gateway connected to each wifi point (yeah wifi is a huge issue too!)

    So far I have
    gw.begin(NULL, AUTO, true);
    in the
    void setup()

    and I'm calling process() in my loop()

    But I don't know where to go with regard to sleep/wait etc.
    I'd like to take a temp reading every 10 - 15 mins but I'm stuck

    Any pointers? :D

    Development

  • Windows GUI/Controller for MySensors
    B blackdog65

    @tekka WOW! I thought that was going to be SO difficult... but it took 10mins total! Thank you very much... I'm good to go ;)

    Controllers myscontroller mysbootloader

  • Windows GUI/Controller for MySensors
    B blackdog65

    Hi Tekka,
    Great tool and SO useful for debugging.
    I have MYSController running under Wine on Linux Mint with no problems.

    I do have one small issue though. I have a serial gateway that reports to Domoticz on my Mint PC. This works fine and MSController connects fine. When I tried to move my gateway to a remote installation of Domoticz on a Raspberry Pi (same network) MSController cannot see it if I try to connect by TCP. I hope it's just something silly like port no. or something, but any ideas?

    Many thanks

    Controllers myscontroller mysbootloader
  • Login

  • Don't have an account? Register

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