Page 1 sur 1

Recuperer valeur depuis un Arduino

Publié : 18 août 2015, 20:28
par Steph38
Bonjour,

Je recherche un moyen de recuperer une valeur d'un thermostat reliė a Domoticz directement depuis un arduino, branchė en usb sur mon raspberry. Est ce possible?

Je vous remerci de vos reponses

Steph

Re: Recuperer valeur depuis un Arduino

Publié : 19 août 2015, 09:38
par loops
Salut,

J'ai jamais eu à faire ce genre de chose mais si je devais le faire je ferai le contraire. Je ne viendrai pas lire DZ depuis l'Arduino mais je ferai un script dans DZ qui envois la valeur en question à l'arduino via le port série !

Il doit bien être possible d'écrire sur le port série en LUA, Python ou en shell !?

Re: Recuperer valeur depuis un Arduino

Publié : 19 août 2015, 09:39
par loops

Re: Recuperer valeur depuis un Arduino

Publié : 19 août 2015, 18:15
par Steph38
Super merci , je vais regarder cette piste
Steph

Re: Recuperer valeur depuis un Arduino

Publié : 19 août 2015, 20:14
par Steph38
J'ai trouvė cela :
http://forum.arduino.cc/index.php?topic=151294.0

Pour info je cherche a envoyer une valeure de consigne a l'arduino depuis domoticz afin d'ouvrir ou fermer une vanne melangeuse. Je ne sais pas si cela est la bonne solution

Re: Recuperer valeur depuis un Arduino

Publié : 03 sept. 2015, 09:18
par deennoo
Le mieux est de te faire une sonde radio avec un DS18b20 (genre copie d'une Oregon):

J'ai realisé celle ci :

Code : Tout sélectionner

/*
Arduino powered sous vide controller

Requires:
PID library found at
http://www.arduino.cc/playground/Code/PIDLibrary

dallasTemperature library found at
http://milesburton.com/index.php?title=Dallas_Temperature_Control_Library

Pin configuration:
- LCD pins: 8, 9, 4, 5, 6, 7
- Analog 0: multi-level for buttons
- Backlight control: 10

andy@chiefmarley.com
2/9/2011
Adapted to dfrobot lcd and added transmit of temperature - barnaby@pickle.me.uk
26/2/2013
*/


#include <OneWire.h>
#include <DallasTemperature.h>
#include <thgr810.h>

// period in milliseconds
#define UPDATE_INTERVAL 60000
// clock divisor - microseconds - 25ms (OUTPUT_LIMIT = UPDATE_INTERVAL / POLL_INTERVAL)
#define POLL_INTERVAL 60000
#define OUTPUT_LIMIT 60000

// PID Parameters
#define PID_P 70
#define PID_I 0
#define PID_D 300

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// initial set point
#define INITIAL_SET_POINT 60

// pin to trigger relay
#define TRIGGER_PIN 13

// transmitter pin
#define TRANSMIT_CHANNEL 2
#define TRANSMIT_PIN 12
#define TRANSMIT_CODE 0x2b

// pin for backlight control
#define BACKLIGHT_PIN 10

// Setup a oneWire instance
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

// LCD & Keypad library for dfrobot shield


//Define Variables we'll be connecting to
double setpoint, input, output;

//Specify the links and initial tuning parameters


Thgr810 sensor(TRANSMIT_CHANNEL, TRANSMIT_PIN, TRANSMIT_CODE);

// Backlight timeout (ms)
#define BACKLIGHT_TIMEOUT 60000
#define REPEAT_INITIAL 300
#define REPEAT_FAST    30
int repeat_delay = 0;

// Moving long 'PWM' window
unsigned long windowStartTime;
unsigned long timeout = 0;
unsigned long buttonRepeat = 0;

void setup()
{


  //initialize the variables we're linked to
  input = 10;
  setpoint = INITIAL_SET_POINT;
  output = 50;

  // Start up the library
  sensors.begin();
  //turn the PID on



  pinMode(BACKLIGHT_PIN, OUTPUT);
  digitalWrite(BACKLIGHT_PIN, HIGH);
  timeout = millis() + BACKLIGHT_TIMEOUT;
  pinMode(TRIGGER_PIN, OUTPUT);
  
  windowStartTime = millis() - UPDATE_INTERVAL;


}

void loop()
{  
  unsigned long now = millis();
  if (now - windowStartTime > UPDATE_INTERVAL)
  {
    // update readings
    sensors.requestTemperatures(); // Send the command to get temperatures  
    input = sensors.getTempCByIndex(0);


    transmit();
    windowStartTime += UPDATE_INTERVAL;
  }

  if (now > buttonRepeat) {



        setpoint += 0.1;


        setpoint -= 0.1;

    }



        // reset delay on button repeat
        repeat_delay = REPEAT_INITIAL;


        // if a button was pressed, illuminate backlight
        digitalWrite(BACKLIGHT_PIN, HIGH);
        // and reset the backlight timeout
        timeout = now + BACKLIGHT_TIMEOUT;
        // set the next time to check buttons
        buttonRepeat = now + repeat_delay;
        // and set the button repeat to fast
        repeat_delay = REPEAT_FAST;


    }

  




int counter = 0;
void timerInterrupt()
{
  digitalWrite(TRIGGER_PIN, counter < output);
  if (++counter >= OUTPUT_LIMIT)
    counter = 0;
}

void transmit()
{
  // transmit the input temperature as sensor temperature
  // and the output duty as humidity (out of 100)
  sensor.transmit(input, output*100/OUTPUT_LIMIT);
}


La sonde DS18B20 est soudé sur du cable de telephone et trempe dans la piscine, rien n'empeche de la coller sur ton tuyau de chauffage a mesuré avec du scotch alu.

Ensuite un relais Radio qui reçoit l'ordre de domoticz pour ouvrir et fermer la vanne, enfin un script en blocky ou LUA pour piloter l'ensemble