Yeahaa. Thanks so much. I really appreciate it!
Some small changes with temp4 and works like a charm. If you don't accept my offer. Then the transfer goes to mysensors community
Here the working code IF someone need it or i loose mine
#define MY_RADIO_NRF24
#define MY_DEBUG
#include <MySensors.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 4
#define TEMPERATURE_PRECISION 10
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
#define NODE_ID 1
#define CHILD_ID_WIND 1
#define CHILD_ID_TEMP1 3
#define CHILD_ID_TEMP2 4
#define CHILD_ID_TEMP3 5
#define CHILD_ID_TEMP4 6
#define CHILD_ID_TEMP5 7
unsigned int val_wspeed;
unsigned int val_wgust;
unsigned int val_wdirection;
unsigned int last_wspeed;
unsigned int last_wgust;
unsigned int last_wdirection;
DeviceAddress temp1 = { 0x28, 0xEE, 0xB6, 0xB1, 0x27, 0x16, 0x01, 0x1F };
DeviceAddress temp2 = { 0x28, 0xEE, 0xE1, 0x20, 0x28, 0x16, 0x01, 0xEA };
DeviceAddress temp3 = { 0x28, 0xEE, 0x0D, 0xAA, 0x24, 0x16, 0x02, 0x8A };
DeviceAddress temp4 = { 0x28, 0xEE, 0x7D, 0xA8, 0x24, 0x16, 0x02, 0xE0 };
DeviceAddress temp5 = { 0x28, 0xFF, 0xF6, 0x8F, 0x62, 0x16, 0x03, 0x7F };
MyMessage msgWSpeed(CHILD_ID_WIND, V_WIND);
MyMessage msgWGust(CHILD_ID_WIND, V_GUST);
MyMessage msgWDirection(CHILD_ID_WIND, V_DIRECTION);
MyMessage msg(0,V_TEMP);
void setup(void)
{
// start serial port
Serial.begin(115200);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
// report parasite power requirements
Serial.print("Parasite power is: ");
if (sensors.isParasitePowerMode()) Serial.println("ON");
else Serial.println("OFF");
// set the resolution to 9 bit
sensors.setResolution(temp1, TEMPERATURE_PRECISION);
sensors.setResolution(temp2, TEMPERATURE_PRECISION);
sensors.setResolution(temp3, TEMPERATURE_PRECISION);
sensors.setResolution(temp4, TEMPERATURE_PRECISION);
sensors.setResolution(temp5, TEMPERATURE_PRECISION);
}
void presentation()
{
present(CHILD_ID_WIND, S_WIND);
present(CHILD_ID_TEMP1, S_TEMP);
present(CHILD_ID_TEMP2, S_TEMP);
present(CHILD_ID_TEMP3, S_TEMP);
present(CHILD_ID_TEMP4, S_TEMP);
present(CHILD_ID_TEMP5, S_TEMP);
}
void loop()
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures();
Serial.println("DONE");
// print the device information
float east = sensors.getTempC(temp1);
Serial.print("East C: ");
Serial.println(east);
send(msg.setSensor(CHILD_ID_TEMP1).set(east,1));
float north = sensors.getTempC(temp2);
Serial.print("North C: ");
Serial.println(north);
send(msg.setSensor(CHILD_ID_TEMP2).set(north,1));
float west = sensors.getTempC(temp5);
Serial.print("West C: ");
Serial.println(west);
send(msg.setSensor(CHILD_ID_TEMP5).set(west,1));
float south = sensors.getTempC(temp3);
Serial.print("South C: ");
Serial.println(south);
send(msg.setSensor(CHILD_ID_TEMP3).set(south,1));
float out = sensors.getTempC(temp4);
Serial.print("Test C: ");
Serial.println(out);
send(msg.setSensor(CHILD_ID_TEMP4).set(out,1));
// calculating wind direction form temperature differences
if (north > south && north > west && north > east ) {
Serial.println("SOUTH");
unsigned int val_wdirection = 180;
send(msgWDirection.set(val_wdirection));
Serial.print("WD: ");
Serial.println(val_wdirection);
}
if (east > north && east > west && east > south ) {
Serial.println("WEST");
unsigned int val_wdirection = 280;
send(msgWDirection.set(val_wdirection));
Serial.print("WD: ");
Serial.println(val_wdirection);
}
if (south > north && south > west && south > east ) {
Serial.println("NORTH");
unsigned int val_wdirection = 0;
send(msgWDirection.set(val_wdirection));
Serial.print("WD: ");
Serial.println(val_wdirection);
}
if (west > north && west > south && west > east ) {
Serial.println("EAST");
unsigned int val_wdirection = 90;
send(msgWDirection.set(val_wdirection));
Serial.print("WD: ");
Serial.println(val_wdirection);
}
//domoticz must see speed and gust so i give random numbers for testing
unsigned int val_wspeed = 17;
if(last_wspeed != val_wspeed)
{
last_wspeed = val_wspeed;
send(msgWSpeed.set(val_wspeed, 1));
Serial.print("WS: ");
Serial.println(val_wspeed);
}
unsigned int val_wgust = 5;
if(last_wgust != val_wgust)
{
last_wgust = val_wgust;
send(msgWGust.set(val_wgust, 1));
Serial.print("WG: ");
Serial.println(val_wgust);
}
delay (5000);
}