MySensor Relay anbinden

Begonnen von Meister_Petz, 06 Januar 2015, 20:23:53

Vorheriges Thema - Nächstes Thema

drdownload

Hat sich schon mal jemand an einer RGB Strip Steuerung über mySensors versucht?
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

gloob

#61
Hätte ich auch Interesse dran. Vor allem mit den WS2812B Leds.

Hier habe ich immer schonmal etwas für die Programmierung des Arduinos gefunden:

https://codebender.cc/sketch:97484?noCookies=true
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Niko1987

Hallo Zusammen,

ich habe mit einem RelayButton node folgendes Problem (Version 1.5.3).

Nach einem start des Nodes bekomme ich Status1 reading on oder off.... nach kurzer Zeit bzw. nach ein paar Schaltvorgängen per Button bekomme ich anstatt 0/1 on/off nur noch verwirrende Zahlenfolgen.

Kennt das Problem jemand? Habe das Problem bei verschiedenen Notes und habe auch schon Verschiedene MYSENSOR Versionen (1.4-1.5) getestet. Immer das selbe Problem.

Danke & Gruß
Flo

porkman

Zitat von: Niko1987 am 06 Februar 2016, 14:04:22
Hallo Zusammen,

ich habe mit einem RelayButton node folgendes Problem (Version 1.5.3).

Nach einem start des Nodes bekomme ich Status1 reading on oder off.... nach kurzer Zeit bzw. nach ein paar Schaltvorgängen per Button bekomme ich anstatt 0/1 on/off nur noch verwirrende Zahlenfolgen.

Kennt das Problem jemand? Habe das Problem bei verschiedenen Notes und habe auch schon Verschiedene MYSENSOR Versionen (1.4-1.5) getestet. Immer das selbe Problem.

Danke & Gruß
Flo

Hallo Flo,

ich hatte das gleiche Problem, mit der 2.0.0-beta von https://github.com/mysensors/Arduino. Ich hab zwar nur grad eben mal nen kurzen Test machen können, aber es sieht so aus das der RelaywithButtonActuator Sketch offenbar wieder wie erwartet funktioniert.

Regards
Hartmut

Mois_Alexander

Hi Leute,

ich wärm das Thema nochmal auf, weil ich einige Verständnisprobleme hab.

Ich hab den Sketch von thunder1902 (1. Seite des Threads) genommen und auf jeweils 2 Schalter und 2 Relais angepasst. Die Pins hab ich auch verändert.

// Example sketch f�r a "light switch" where you can control light or something
// else from both vera and a local physical button (connected between digital
// pin 3 and GND).
// This node also works as a repeader for other nodes

#include <MySensor.h>
#include <SPI.h>
#include <Bounce2.h>

#define RELAY_PIN1  7  // Arduino Digital I/O pin number for relay
#define RELAY_PIN2  8  // Arduino Digital I/O pin number for relay
//#define RELAY_PIN3  9  // Arduino Digital I/O pin number for relay
#define BUTTON_PIN1  3  // Arduino Digital I/O pin number for button
#define BUTTON_PIN2  4  // Arduino Digital I/O pin number for button
//#define BUTTON_PIN3  5  // Arduino Digital I/O pin number for button

#define CHILD_ID 1   // Id of the sensor child
#define RELAY_ON 0
#define RELAY_OFF 1

Bounce debouncer1 = Bounce();
Bounce debouncer2 = Bounce();
//Bounce debouncer3 = Bounce();
int oldValue1=0;
int oldValue2=0;
//int oldValue3=0;
bool state1;
bool state2;
//bool state3;
MySensor gw;
MyMessage msg1(1,V_LIGHT);
MyMessage msg2(2,V_LIGHT);
//MyMessage msg3(3,V_LIGHT);

void setup()
{
  gw.begin(incomingMessage, AUTO, true);

  // Send the sketch version information to the gateway and Controller
  gw.sendSketchInfo("Relay & Button", "1.0");

// Setup the button
  pinMode(BUTTON_PIN1,INPUT);
  pinMode(BUTTON_PIN2,INPUT);
  //pinMode(BUTTON_PIN3,INPUT);
  // Activate internal pull-up
  digitalWrite(BUTTON_PIN1,HIGH);
  digitalWrite(BUTTON_PIN2,HIGH);
  //digitalWrite(BUTTON_PIN3,HIGH);   

  // After setting up the button, setup debouncer
  debouncer1.attach(BUTTON_PIN1);
  debouncer2.attach(BUTTON_PIN2);
  //debouncer3.attach(BUTTON_PIN3);
  debouncer1.interval(5);
  debouncer2.interval(5);
  //debouncer3.interval(5);

  // Register all sensors to gw (they will be created as child devices)
  gw.present(1, S_LIGHT);
  gw.present(2, S_LIGHT);
  //gw.present(3, S_LIGHT);

  // Make sure relays are off when starting up
  digitalWrite(RELAY_PIN1, RELAY_OFF);
  digitalWrite(RELAY_PIN2, RELAY_OFF);
  //digitalWrite(RELAY_PIN3, RELAY_OFF);
  // Then set relay pins in output mode
  pinMode(RELAY_PIN1, OUTPUT);   
  pinMode(RELAY_PIN2, OUTPUT);   
  //pinMode(RELAY_PIN3, OUTPUT);     
     
  // Set relay to last known state (using eeprom storage)
  state1 = gw.loadState(1);
  digitalWrite(RELAY_PIN1, state1?RELAY_ON:RELAY_OFF);
  state2 = gw.loadState(2);
  digitalWrite(RELAY_PIN2, state2?RELAY_ON:RELAY_OFF);
  //state3 = gw.loadState(3);
  //digitalWrite(RELAY_PIN3, state3?RELAY_ON:RELAY_OFF);
}


/*
*  Example on how to asynchronously check for new messages from gw
*/
void loop()
{
  gw.process();
  debouncer1.update();
  debouncer2.update();
  //debouncer3.update();
  // Get the update value
  int value1 = debouncer1.read();
  if (value1 != oldValue1 && value1==0) {
      gw.send(msg1.set(state1?false:true), true); // Send new state and request ack back
  }
  oldValue1 = value1;

  // Get the update value
  int value2 = debouncer2.read();
  if (value2 != oldValue2 && value2==0) {
      gw.send(msg2.set(state2?false:true), true); // Send new state and request ack back
  }
  oldValue2 = value2;

  // Get the update value
  //int value3 = debouncer3.read();
  //if (value3 != oldValue3 && value3==0) {
         
  //    gw.send(msg3.set(state3?false:true), true); // Send new state and request ack back
  //}
  //oldValue3 = value3;

}

void incomingMessage(const MyMessage &message) {
  // We only expect one type of message from controller. But we better check anyway.
  if (message.isAck()) {
     Serial.println("This is an ack from gateway");
  }

  if (message.type == V_LIGHT) {
     // Change relay state
     if(message.sensor==1){
  digitalWrite(RELAY_PIN1, message.getBool()?RELAY_ON:RELAY_OFF);
         state1=message.getBool();
  }
  if(message.sensor==2){
  digitalWrite(RELAY_PIN2, message.getBool()?RELAY_ON:RELAY_OFF);
        state2=message.getBool();
  }
  //if(message.sensor==3){
  //digitalWrite(RELAY_PIN3, message.getBool()?RELAY_ON:RELAY_OFF);
  //        state3=message.getBool();

  //}
     
  // Store state in eeprom
      gw.saveState(message.sensor, message.getBool());
 
     // Write some debug info
     Serial.print("Incoming change for sensor:");
     Serial.print(message.sensor);
     Serial.print(", New status: ");
     Serial.println(message.getBool());
   }
}


Dank autocreate wird das Modul auch sofort angelegt, allerdings nicht so wie es hier beschrieben wird. Bei mir sieht das so aus:

define MYSENSOR_16 MYSENSORS_DEVICE 16
attr MYSENSOR_16 IODev EthernetMySensors
attr MYSENSOR_16 mapReading_power1 1 power
attr MYSENSOR_16 mapReading_power2 2 power
attr MYSENSOR_16 mapReading_status1 1 status
attr MYSENSOR_16 mapReading_status2 2 status
attr MYSENSOR_16 mode repeater
attr MYSENSOR_16 setReading_power1 1
attr MYSENSOR_16 setReading_power2 1
attr MYSENSOR_16 setReading_status1 on,off
attr MYSENSOR_16 setReading_status2 on,off
attr MYSENSOR_16 version 1.5.1


Nun muss ich ehrlich sagen dass ich das nicht ganz verstehe. Wo kommen denn bei euch die Werte Switch1, Switch2 ... her und wieso hab ich Power1/2 und Status1/2 . Im Sketch wird doch nur Relay und Button definiert. Ich steh da echt auf dem Schlauch.

Kann mir da vielleicht das ein oder andere erklären?

Danke
Alex

ansi7k3

Es wurde einiges geändert.. :/

Hier z.B. hat jemand auch das Problem mit "switch"  http://forum.mysensors.org/topic/2095/solved-switch-and-dimmer-gone-after-update/2


Jarnsen

Hallo,

Ich kann momentan nur deas Relais uber den Button schalten. Per FHEM gehtes nicht. wie bekommen wir das wieder hin??

Jarnsen
1 x RPi2,
1 x nanoCUL433, 1 x nanoCUL868, 1 x SIGNALduino433
Sonos/SonosSpeak, Homebridge, 2 x Enigma2, 10 x Nobily Rollläden, 3 x Intertechno Steckdosen
Pushover, Abfallerinnerung, MySensors, 7 x Max!

Niko1987

Hallo,

welche Version hast du? Bei mir funktioniert alles super. Habe circa 15 Mysensor Relais im Einsatz.
define KinoLicht MYSENSORS_DEVICE 110
attr KinoLicht IODev gateway
attr KinoLicht devStateIcon .*off:light_light@red .*on:light_light_dim_100@green
attr KinoLicht fhem_widget_command {"allowed_values":["off","on"],"filter":"public"}
attr KinoLicht fp_EG 128,673,0,LichtKuecheEG,
attr KinoLicht group Alles
attr KinoLicht icon light_wire_system_1
attr KinoLicht mapReading_power1 1 power
attr KinoLicht mapReading_status1 1 status
attr KinoLicht mode node
attr KinoLicht requestAck 1
attr KinoLicht room Kino
attr KinoLicht setCommands on:status1:on off:status1:off
attr KinoLicht setReading_power1 1
attr KinoLicht setReading_status1 off,on
attr KinoLicht stateFormat status1
attr KinoLicht version 1.4.2


Vermutlich fehlt dir das attr. setCommands on:status1:on off:status1:off um das Relais per "on/off" zu schalten?

Gruß

Flo

LastActionHero

Servus!

Ich habe mittlerweile auch mysensors bei mir in FHEM eingebunden, ein Temp/Hum Sensor funktioniert bereits einwandfrei, aber mit dem Relay habe ich probleme.
Alles ordnungsgemäß angeschlossen, wird auch im autocreate in fhem angelegt, aber die Schaltvorgänge gehen nicht... mysensors 1.5.4

define MYSENSOR_0 MYSENSORS_DEVICE 0
attr MYSENSOR_0 IODev MySensorGateway
attr MYSENSOR_0 mapReading_power1 1 power
attr MYSENSOR_0 mapReading_status1 1 status
attr MYSENSOR_0 mode repeater
attr MYSENSOR_0 setReading_power1 1
attr MYSENSOR_0 setReading_status1 on,off
attr MYSENSOR_0 version 1.5.4
attr MYSENSOR_0 room Mysensor
attr MYSENSOR_0 setCommands on:status1:off off:status1:on
attr MYSENSOR_0 setReading_status1 on,off
attr MY_SENSO_0 stateFormat switch


egal wie oft ich auf den button on / off drücke, am relay tut sich nix! jemand ne idee?

Niko1987

hallo,

sollte es nicht so sein:

attr MYSENSOR_0 setCommands on:status1:on off:status1:off


und ein

attr MYSENSOR_0 requestAck 1

ich hab ca 30 Relais im Einsatz, ohne Probleme.

Allerdings hat mein Gateway Version 2.0

Gruß

Niko

LastActionHero

mmh, ja hast recht. hat aber leider nix gebracht, bei mir wäre dann on/off vertauscht gewesen sozusagen, aber das relay schaltet überhaupt nicht, auch nicht wenn ichs manuell über set befehl mache :(

wenn ich den arduino resette hört man aber ein eindeutiges klicken im relay wenn die status LED umspringt, sowohl in on als auch in off richtung.

Niko1987

Guten Morgen,

welchen NRF nutzt du? ohne oder mit PA?
Vielleicht hat er einfach Probleme die Daten zu empfangen.
Aktualisiert FHEM die Readings für das Relais wenn du den relais node neu startest?

Gruß
Flo

LastActionHero

eins ohne PA, ich hab vorhin mal nen Dallas Temp sensor dran gepackt, die hardware funktioniert.

Readings werden in FHEM garkeine angezeigt... merkwürdigerweise...

Niko1987

Schau dir mal den Seriellen monitor an, ob er überhaupt bis zum Gateway kommt.


LastActionHero

Jetzt funktionierts, war ein Power-Problem am NRF, der 3,3V pin gibt nicht genug saft ab, auf VIN funktionierts  :o