problème FS1000A / rflink / domoticz

Bonjour à tous,
Je réalise mes sondes pour envoyer les infos via rflink vers un pc ou est installé domoticz pour l’instant elles sont toutes avec des émetteurs nRF24L01 +, tout cela fonctionne correctement.

Je voudrais en faire une en 433 avec un FS1000a (il parait qu’il n’est pas bon, mais la question n’est pas là pour le moment)

Quand je regarde le code d’Henri on a le choix entre « #define MY_RADIO_RF24 » et #define MY_RADIO_RFM69 » je me dis que je vais utiliser MY_RADIO_RFM69 mais Rflink ne reçoit rien, question : MY_RADIO_RFM69 et le FS1000A n’ont rien à voir, (il n’y a pas d’indication du pin data de l’arduino ?)

/**
 * 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.
 *
 *******************************
 *
 * REVISION HISTORY
 * Version 1.0: Henrik EKblad
 * Version 1.1 - 2016-07-20: Converted to MySensors v2.0 and added various improvements - Torben Woltjen (mozzbozz)
 * 
 * DESCRIPTION
 * This sketch provides an example of how to implement a humidity/temperature
 * sensor using a DHT11/DHT-22.
 *  
 * For more information, please visit:
 * http://www.mysensors.org/build/humidity
 * 
 */

// Enable debug prints
#define MY_DEBUG

// Enable and select radio type attached 
#define MY_RADIO_RF24
//#define MY_RADIO_RFM69
//#define MY_RS485

#include <SPI.h>
#include <MySensors.h>  
#include <DHT.h>

// Set this to the pin you connected the DHT's data pin to
#define DHT_DATA_PIN 3

// Set this offset if the sensor has a permanent small offset to the real temperatures.
// In Celsius degrees (as measured by the device)
#define SENSOR_TEMP_OFFSET 0

// Sleep time between sensor updates (in milliseconds)
// Must be >1000ms for DHT22 and >2000ms for DHT11
static const uint64_t UPDATE_INTERVAL = 60000;

// Force sending an update of the temperature after n sensor reads, so a controller showing the
// timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
// the value didn't change since;
// i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms]
static const uint8_t FORCE_UPDATE_N_READS = 10;

#define CHILD_ID_HUM 0
#define CHILD_ID_TEMP 1

float lastTemp;
float lastHum;
uint8_t nNoUpdatesTemp;
uint8_t nNoUpdatesHum;
bool metric = true;

MyMessage msgHum(CHILD_ID_HUM, V_HUM);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
DHT dht;


void presentation()  
{ 
  // Send the sketch version information to the gateway
  sendSketchInfo("TemperatureAndHumidity", "1.1");

  // Register all sensors to gw (they will be created as child devices)
  present(CHILD_ID_HUM, S_HUM);
  present(CHILD_ID_TEMP, S_TEMP);

  metric = getControllerConfig().isMetric;
}


void setup()
{
  dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor
  if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) {
    Serial.println("Warning: UPDATE_INTERVAL is smaller than supported by the sensor!");
  }
  // Sleep for the time of the minimum sampling period to give the sensor time to power up
  // (otherwise, timeout errors might occure for the first reading)
  sleep(dht.getMinimumSamplingPeriod());
}


void loop()      
{  
  // Force reading sensor, so it works also after sleep()
  dht.readSensor(true);

  // Get temperature from DHT library
  float temperature = dht.getTemperature();
  if (isnan(temperature)) {
    Serial.println("Failed reading temperature from DHT!");
  } else if (temperature != lastTemp || nNoUpdatesTemp == FORCE_UPDATE_N_READS) {
    // Only send temperature if it changed since the last measurement or if we didn't send an update for n times
    lastTemp = temperature;

    // apply the offset before converting to something different than Celsius degrees
    temperature += SENSOR_TEMP_OFFSET;

    if (!metric) {
      temperature = dht.toFahrenheit(temperature);
    }
    // Reset no updates counter
    nNoUpdatesTemp = 0;
    send(msgTemp.set(temperature, 1));

    #ifdef MY_DEBUG
    Serial.print("T: ");
    Serial.println(temperature);
    #endif
  } else {
    // Increase no update counter if the temperature stayed the same
    nNoUpdatesTemp++;
  }

  // Get humidity from DHT library
  float humidity = dht.getHumidity();
  if (isnan(humidity)) {
    Serial.println("Failed reading humidity from DHT");
  } else if (humidity != lastHum || nNoUpdatesHum == FORCE_UPDATE_N_READS) {
    // Only send humidity if it changed since the last measurement or if we didn't send an update for n times
    lastHum = humidity;
    // Reset no updates counter
    nNoUpdatesHum = 0;
    send(msgHum.set(humidity, 1));

    #ifdef MY_DEBUG
    Serial.print("H: ");
    Serial.println(humidity);
    #endif
  } else {
    // Increase no update counter if the humidity stayed the same
    nNoUpdatesHum++;
  }

  // Sleep for a while to save energy
  sleep(UPDATE_INTERVAL); 
}

Pour avancer j’ai voulu tester un des innombrables exemples de communication entre un émetteur FS1000A et sont recepteur en utilisant virtualWire (que j’ai désinstallé/réinstallé 10 fois) j’ai toujours des erreurs de de compilation.

Avez-vous un exemple qui fonctionne avec un FS1000A vers rflink/domoticz, je sais que ça ne se fait pas demander un truc tout mâché, mais j’ai cherché, cherché !

Merci.

dudule63:
Bonjour à tous,
Je réalise mes sondes pour envoyer les infos via rflink vers un pc ou est installé domoticz pour l’instant elles sont toutes avec des émetteurs nRF24L01 +, tout cela fonctionne correctement.

Je voudrais en faire une en 433 avec un FS1000a (il parait qu’il n’est pas bon, mais la question n’est pas là pour le moment)

Bonjour
Si ce que tu appelle FS1000a est l'ensemble composé par un émetteur et un récepteur genre çà
La question est pourtant bien là :

  • Seul l’émetteur à un petit intérêt (... et encore ! :wink: )

  • Le récepteur à superréaction est lui juste bon à etre directement mis à la poubelle !

Rien de sorcier pour le connecter néanmoins sur un RFLINK (base atmega2560) , il suffit juste de connecter son pin DATA

sur RX1(pin19 atmega2560)

lire ça sur le site RFLINK

IMPORTANT NOTE about the well-known cheap Chinese set:
From the set below the transmitter (XD-FST FS1000A) is fine.
The receiver is not working very well. In most cases it receives too much noise to give stable results.
Although it will work with some devices, do not expect optimal performance.
You can try powering it with 7 volts to improve reception a bit.
Alternatively you could try the enhancements that are applied to the RXB6 in the above diagram.
You can of course use this receiver module. However, keep in mind that if you experience issues,
you really should look at one of the receivers listed above which are also not expensive.
You can find the RXB6 for less than 2 euros.

Bonjour Artouste,

Merci pour ta réponse,

Oui pour le FS1000a, d’où mon avertissement liminaire pour m'éviter les constructifs et définitifs "c'est de la merde" en guise d'unique réponse.

Pour mes erreurs de compilation j'ai résolu le problème en utilisant la version de l'ide 1.8.9 (windows store) probablement encore un problème de bibliothèque, mal installée, en double, ou pas à la bonne place dans l'autre ide.

J'ai modifié sur mes pro-mini les N° de pin dans les sketch d'exemple de transmission pour que les data arrivent sur les bon et ça fonctionne correctement sans perte de données.

vw_set_tx_pin(2);
vw_set_rx_pin(5);

Il me reste à savoir si MY_RADIO_RFM69 gère FS1000a et/ou de trouver un exemple qui puisse discuter avec rflink / Domonitcz

Encore merci.

dudule63:
Il me reste à savoir si MY_RADIO_RFM69 gère FS1000a

  • La réponse rapide est : NON ! :grin:

Ce sont deux approches RF completement exorbitantes l'une de l'autre

Quand je regarde le code d'Henri on a le choix entre « #define MY_RADIO_RF24 » et #define MY_RADIO_RFM69 » je me dis que je vais utiliser MY_RADIO_RFM69 mais Rflink ne reçoit rien, question : MY_RADIO_RFM69 et le FS1000A n'ont rien à voir, (il n'y a pas d'indication du pin data de l'arduino ?)

Domoticz avec une gateway NRF24L01, RFM69 ou RFM95 et des capteurs NRF24L01, RFM69 ou RFM95 : OUI.
Domoticz avec une gateway RFLINK et des capteurs RFM69 : je ne pense pas.
La gateway RFLINK est faite pour dialoguer avec des capteurs 433MHz du commerce.

Merci Artouste et Henri pour vos réponses.