Hello guys,
I am a totally newbie about my senor. It would be nice if I could get a little support/help with my problems.
I am trying to use this ASL board: link
It would be great if I can get some infos how the code on the nano sketch and fhem should look like, that I can can trigger/change functions from fhem to the nano/sketch and how can I get an info, when a pir changes a value of a varible in the sketch. Here is the existing code from the ardunio sktech:
#define MY_RADIO_NRF24
#define MY_REPEATER_FEATURE
#include <SPI.h>
#include <MySensors.h>
boolean sensor;
boolean MysenSor;
#define SHIFTPWM_NOSPI
const int ShiftPWM_dataPin = 6; // Do not change!!!
const int ShiftPWM_clockPin = 7; // Do not change!!!
const int ShiftPWM_latchPin = 8; // Do not change!!!
#include <ShiftPWM.h>
const bool ShiftPWM_invertOutputs = false;
const bool ShiftPWM_balanceLoad = false;
#define sensorLight_PIN A0 // Light sensor Do not change!!!
#define sensorBottom_PIN A1 // Bottom sensor Do not change!!!
#define sensorUpper_PIN A2 // Upper sensor Do not change!!!
unsigned char maxBrightness = 100; // Here you set the number of brightness levels. Adjust(0-255)!!
unsigned char pwmFrequency = 75; // These values affect the load of ShiftPWM
unsigned int numRegisters = 3; // Number of shift registers Do not change!!!
unsigned int numOutputs = numRegisters * 8;
unsigned int numRGBLeds = numRegisters * 8 / 3;
boolean sensorUpperActive;
boolean sensorBottomActive;
int numberOfstairs=6; // Setup Number of Your stairs. Adjust up to 24 !!!!
int pause=30000; // Setup delay ON/OFF Adjust!!!
byte faidoutSpeed=5; // How fast to fadeout Adjust!!!
byte faidinSpeed=5; // How fast to fadein Adjust!!!
void before() {
MysenSor=loadState(sensor); // Set relay to last known state (using eeprom storage)
}
void presentation() {
present(sensor, S_LIGHT);
}
void receive(const MyMessage &message) { // We only expect one type of message from controller. But we better check anyway.
if (message.type==V_LIGHT) {
MysenSor=message.getBool();
// Store state in eeprom
saveState(message.sensor, message.getBool());
}
}
void setup() {
ShiftPWM.SetAmountOfRegisters(numRegisters);
ShiftPWM.Start(pwmFrequency, maxBrightness);
pinMode(sensorBottom_PIN, INPUT);
pinMode(sensorUpper_PIN, INPUT);
pinMode(sensorLight_PIN, INPUT);
Serial.begin(9600);
Serial.println("setup");
}
void loop() {
if ( MysenSor!=0) {
BottomTriggerFire(); //Checking bottom sensor
UpperTrigerFire(); //Checking upper sensor
switchONOFFfromdown(); //Stairs on/off from down to up
switchONOFFfromUp(); //Stairs on/off from up to down
}
}
void BottomTriggerFire() {
if (analogRead (sensorBottom_PIN) >= 550 ) { //Depend of the sensor type, if 0 when triggered ,than change the comparison to opposite value.
sensorBottomActive = true;
}
}
void UpperTrigerFire() {
if (analogRead(sensorUpper_PIN) >= 550) { //Depend of the sensor type, if 0 when triggered ,than change the comparison to opposite value.
sensorUpperActive = true;
}
}
void switchONOFFfromdown() {
if (sensorBottomActive==true && sensorUpperActive==false){
for(int i=0; i<numberOfstairs; i++){
for(int a=0; a<maxBrightness; a++){
ShiftPWM.SetOne(i,a);
delay(faidoutSpeed);
}
}
delay(pause);
for(int i=0; i<numberOfstairs; i++){
for(int a=maxBrightness;a>=0;a--){
ShiftPWM.SetOne(i,a);
if(a==0){
ShiftPWM.SetOne(i,0);
}
delay(faidinSpeed);
}
}
sensorBottomActive = false ;
}
}
void switchONOFFfromUp () {
if ( sensorUpperActive==true && sensorBottomActive==false) {
for(int i=numberOfstairs; i>=0; i--){
Serial.print(i);
for(int a=0; a<maxBrightness; a++){
ShiftPWM.SetOne(i,a);
delay(faidoutSpeed);
}
}
delay(pause);
for(int i=numberOfstairs; i>=0; i--){
//Serial.print(i);
for(int a=maxBrightness;a>=0;a--){
ShiftPWM.SetOne(i,a);
if(a==0){
ShiftPWM.SetOne(i,0);
}
delay(faidinSpeed);
}
}
sensorUpperActive= false ;
}
}
Here are my FHEM listings:
defmod MySensor MYSENSORS 192.168.0.68:5003
attr MySensor autocreate 1
attr MySensor group Sensorik
attr MySensor icon cul
attr MySensor room Actions,MySensor,System
attr MySensor stateFormat connection
attr MySensor verbose 4
setstate MySensor startup complete
setstate MySensor 2019-08-17 20:25:49 connection startup complete
setstate MySensor 2019-08-17 20:30:50 heartbeat alive
setstate MySensor 2019-08-17 20:25:49 state opened
Next:
defmod MYSENSOR_0 MYSENSORS_DEVICE 0
attr MYSENSOR_0 IODev MySensor
attr MYSENSOR_0 mode repeater
attr MYSENSOR_0 requestAck 1
attr MYSENSOR_0 room MySensor
attr MYSENSOR_0 version 2.2.0-beta
setstate MYSENSOR_0 2019-08-17 20:30:50 heartbeat alive
and last:
defmod MYSENSOR_1 MYSENSORS_DEVICE 1
attr MYSENSOR_1 IODev MySensor
attr MYSENSOR_1 mapReading_power 0 power
attr MYSENSOR_1 mapReading_status 0 status
attr MYSENSOR_1 mode repeater
attr MYSENSOR_1 requestAck 1
attr MYSENSOR_1 room MySensor
attr MYSENSOR_1 setReading_.+ luxwert
attr MYSENSOR_1 setReading_power 1
attr MYSENSOR_1 setReading_status off,on
attr MYSENSOR_1 version 2.1.1
setstate MYSENSOR_1 routingtable cleared
setstate MYSENSOR_1 2017-06-18 11:22:01 parentId 0
setstate MYSENSOR_1 2017-06-17 19:09:48 power 1
setstate MYSENSOR_1 2017-06-17 19:11:22 state routingtable cleared
setstate MYSENSOR_1 2017-06-18 11:59:13 status on
It would be great if I can some help/support
Greetings
Thomas