433 RF signaal via Arduino sturen

Hallo allemaal,

Ik heb een prikkabel met led gloeispiraal lampen in mijn tuin. Deze komt bij prikkabelled vandaan. Nu zit hier een 433 mhz afstandsbediening bij om de prikkabel aan te zetten en te dimmen naar het nivo wat je zou willen. Ook zitten er knoppen op dim nivo 100% 75% 50% 25%.

Ik zie hiervoor nog geen oplossing bij Homey maar is deze te maken met betrekking van een app? Ik heb geen idee hoe je zo iets maakt maar de optie voor 433mhz zit in de Homey dus het lijkt mij niet onmogelijk.

Zijn er nog meer leden met deze prikkabel ?

Beste alle,

Helaas geen response op bovenstaand bericht. nu ben ik gaan kijken voor andere alternatieven.
Ik heb een Arduino Uno met Ethernet print geprogrammeerd zo dat hij een trigger van Homey krijgt en een RF signaal naar de prikkabel kan sturen. (dit kan in de toekomst natuurlijk naar van alles zijn)
als ik het werkend heb zal ik een how to beschrijving maken.

onderstaand zal ik mijn arduino script plaatsen.

Op het moment dat ik mySwitch.send(“111001000001011100000011”); er in zet reageert de arduino niet meer op de triggers. zet ik de // er voor dan werkt alles weer incl. println.
Iemand die me hierbij kan helpen waar het probleem zit?




#include <SPI.h>
#include <Ethernet.h>
#include <Homey.h>
#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();



// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;



//Global variables used for the blink without delay example
unsigned long previousMillis = 0;
const unsigned long interval = 1000; //Interval in milliseconds

//Arduino functions
void setup() {
  // Transmitter is connected to Arduino Pin #10  
  mySwitch.enableTransmit(10);
 
 
  //Enable serial port
  Serial.begin(115200);
 
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  
Serial.println("Starting ethernet...");
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for (;;)
      ;
  }



  
 Homey.begin("Homeyduino 2");
  /* Note:
   * The name of each Arduino on the network needs to be unique
   * since it will be used as the unique identifier for your device.
   * The name is stored as a String and can thus be as long as you
   * desire it to be.
   */

 
  
  //Register an example action
  Homey.addAction("Prikkabel", onExampleAction);

  //Register an example condition
 // Homey.addCondition("mycondition", onExampleCondition);

  /* Note:
   *  Names of actions and conditions can be at most 16 characters long.
   *  Names of both actions and conditions have to be unique on this device,
   *  which means that there can not be a condition and an action with the
   *  same name on the same device.
   *  
   *  An action is a function which returnes 'void'. While a condition is a function
   *  which returns a boolean ('bool').
   */

  Serial.println("Started...");
 
}

void loop() {
  //Handle incoming connections
  Homey.loop();
  /* Note:
   *  The Homey.loop(); function needs to be called as often as possible.
   *  Failing to do so will cause connection problems and instability.
   *  Avoid using the delay function at all times. Instead please use the
   *  method explaind on the following page on the Arduino website:
   *  https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
   */

  //This is the 'blink without delay' code
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;

    //(This code will be executed every <interval> milliseconds.)

    //Emit a trigger to Homey
    bool success = Homey.trigger("Prikkabel", "Hello world 2019");
    /* Note:
     *  The first argument to the emit function is the name of the trigger  
     *  this name has to match the name used in the flow editor
     *  
     *  The second argument to the emit function is the argument.
     *  An argument can be one of the following:
     *     - a string
     *     - an integer (int)
     *     - a floating point number (float or double),
     *     - a boolean (bool)
     *     - nothing (void)
     *  
     *  Make sure to select the right type of flow card to match the type
     *  of argument sent to Homey.
     *  For a string argument the "text" flowcard is used.
     *  For an integer or floating point number the "number" flowcard is used.
     *  For the boolean argument the "boolean" flowcard is used.
     *  And when no argument is supplied the flowcard without argument is used.
     *  
     */

    
  }

 
  
}

//An example action
void onExampleAction() {
  //Read the argument sent from the homey flow
  String value = Homey.value;


  //And print it to the serial terminal

  Serial.print("Example action: Trigger! : ");


  if (value == "1"){
  Serial.print("nummer 1 :");
   /* Buitenverlichting */
 //mySwitch.send("111001000001011100000001");
  Serial.println("Aan");
  
  delay(200);
  }
  else {

  }

  if (value == "2"){
  Serial.print("nummer 2 :");
  //mySwitch.send("111001000001011100000011");
   Serial.println("Uit");
   
  delay(200);
  }
  else {

  }


  /* Note:
   *  
   *  The argument will always be received as a String.
   *  If you sent a number or boolean from homey then you can convert
   *  the value into the type you want as follows:
   *  
   *   - Integer number: "int value = Homey.value.toInt();"
   *   - Floating point number: "float value = Homey.value.toFloat();"
   *   - Boolean: "bool value = Homey.value.toInt();"
   *   - String: "String value = Homey.value;"
   *  
   * In case something goes wrong while executing your action
   * you can return an error to the Homey flow by calling
   * Homey.returnError("<message>");
   */
}

Dan crasht je Arduino kennelijk. Krijg je geen foutmeldingen op de seriële console?

De RCSwitch example code gebruikt overigens een delay van 1000, misschien dat die expliciet nodig is. En dan een delay doen voordat je println gebruikt:

if (value == "1") {
  Serial.print("nummer 1 :");
  mySwitch.send("111001000001011100000001");
  delay(1000);
  Serial.println("Aan");
} else { … }

Goedemorgen Robert,
Helaas was dat niet de oplossing. ik heb de println bij elkaar gezet. en de delay na de mySwitch.
Ik vermoed dat er iets in de Library zit van RCSwitch wat de boel verzaakt. alleen kan ik niet vinden wat.

de Pin maakt ook niet uit heb hem al naar pin 12 gezet met het zelfde resultaat.

  if (value == "1"){
  Serial.print("nummer 1 :");
  Serial.println("Aan");
   /* Buitenverlichting */
 mySwitch.send("111001000001011100000001");
  delay(1000);
  }
  else { 
    }

Ha Robert,

Ik ben er achter de regel

 //Register an example action
  Homey.addAction("Prikkabel", onExampleAction);

gaf veel verstoring deze zend continue een trigger naar Homey.

Al ik deze verwijder werkt alles!

ik ga het script verfijnen en zal het complete script hier plaatsen voor de geïnteresseerde!

@Robert bedankt voor het mee denken!

1 Like

Mooi werk! Is er inmiddels een howto beschikbaar?