Just to let you know that I solved the issue.
I found a library where you can control the speed and make sure it get to it's position.
You can find it here: https://github.com/netlabtoolkit/VarSpeedServo
I incorporated it in the Mysensor sketch and it works eventhoug it looks like it only goes like 90 degrees but it's enough for me :
#include <MySensor.h>
#include <SPI.h>
#include <VarSpeedServo.h>
// #include <Servo.h>
#define SERVO_DIGITAL_OUT_PIN 3
#define SERVO_MIN 0 // Fine tune your servos min. 0-180
#define SERVO_MAX 180 // Fine tune your servos max. 0-180
#define DETACH_DELAY 900 // Tune this to let your movement finish before detaching the servo
#define CHILD_ID 10 // Id of the sensor child
MySensor gw;
MyMessage msg(CHILD_ID, V_DIMMER);
VarSpeedServo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
// Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created Sensor gw(9,10);
unsigned long timeOfLastChange = 0;
bool attachedServo = false;
void setup()
{
// Attach method for incoming messages
gw.begin(incomingMessage);
// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("Servo", "1.0");
// Register all sensors to gw (they will be created as child devices)
gw.present(CHILD_ID, S_COVER);
// Request last servo state at startup
gw.request(CHILD_ID, V_DIMMER);
}
void loop()
{
gw.process();
if (attachedServo && millis() - timeOfLastChange > DETACH_DELAY) {
myservo.detach();
attachedServo = false;
}
}
void incomingMessage(const MyMessage &message) {
myservo.attach(SERVO_DIGITAL_OUT_PIN);
attachedServo = true;
if (message.type==V_DIMMER) { // This could be M_ACK_VARIABLE or M_SET_VARIABLE
int val = message.getInt();
myservo.write(SERVO_MAX + (SERVO_MIN-SERVO_MAX)/100 * val,255,true); // sets the servo position 0-180
// Write some debug info
Serial.print("Servo changed. new state: ");
Serial.println(val);
} else if (message.type==V_UP) {
Serial.println("Servo UP command");
myservo.write(SERVO_MIN,255,true);
gw.send(msg.set(100));
} else if (message.type==V_DOWN) {
Serial.println("Servo DOWN command");
myservo.write(SERVO_MAX,255,true);
gw.send(msg.set(0));
} else if (message.type==V_STOP) {
Serial.println("Servo STOP command");
myservo.detach();
attachedServo = false;
}
timeOfLastChange = millis();
}
@Nca78
Well, for small potted plants, you might have to re-pot the plant. However, the nice benefit that would arise is: no visible sensors, which carries with it very high WAF.
@kimot I am not handling that situation. I'm taking for granted ssr will do his job. Maybe there's some ssr safety topic I'm unaware? Suggestions for a v3.0 are welcome.
About the temperature measuring... I use two sensors. The one in the board protects electronics from temperatures beyond design (60°C). It's near the ssr because the ssr's derating curve is the most limiting condition.
The control sensor is placed in the bottom of the heater. It connects to the board through a 3 pin header connector.
@Samuel235 said in Homini AC Powered Relay (2) Module:
OMRON G3MB-202P
Okay I'm trying to help you with the fuse component.
I found a datasheet for the OMRON G3MB-202P. And there are enoght information to be known for fuse selection.
I try to calculate it here (and i will try it with my bad English ).
The most important information is the melting integral.
The Melting integral has A²s as unit. So this means the maximum current for a time can exists without damaging the device. For further information look at wikipedia.
So we need any further information about:
the protection which is present before (the typical circuit protection in private houses)
the melting integral from the device which we want to protect
the maximum voltage
the maximum switching current
the breaking capacity
Inrush current for the switched devices (we can't know)
Typical values for an automatic circuit breaker in private houses are:
from 25 to 100 A²s
230 V AC
16 A
So this protection isn't good enough for our relay. The relay have these values:
230 V AC
2 A maximum switching current
I²t value (melting integral): 4 A²s
the allowed inrush current over a small time is higher than the melting integral. It is a bit confusing i think, but if we calculate the protection for the given melting integral and it's fine. So we can define the parameters for the client (switching site of this application here)
The fuse have to be:
I²s value higher or equal than the I²s value from the existing protection
rating voltage over 230 V AC
rating current 2 A or lower (because 2 A is the maximum at 25 °C, for 40 °C it is about 1.6 A)
a maximum switching time of 1 second at 2 A or lower time with higher current but below 4A²s! To calculate use the switching time from the fuse datasheet an multiply it two times with the given current for this switching time.
And i think a fast blow fuse would be the best. There are SMD fuses with 10.1 x 3 mm and 250 V AC available.
If there is no fuse available with the values above, we could combine multiple fuses. A possible solution could be one bigger fuse for both relays and the ac/dc component. And a smaller fuse for the switching site of the relay and the HLK-PM01. But for this it is important that the circuit have only one input for the hot one (L) of 230 V and one output for each relay. In this case we could reduce the big connectors from 6 to 4. Like (L, N, Relay1, Relay2).
And the temperature fuse can work for all components too
So the protection for the primary site of the HLK-PM01 is a problem i think. Because the are no information available about the I²s value from HLK-PM01.
I hope you can understand my English and could follow my explanation?