Update xdrv_27_shutter.ino

This commit is contained in:
stefanbode 2021-11-16 20:07:41 +01:00 committed by GitHub
parent 681f66f157
commit 5e799716a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -125,6 +125,7 @@ void ShutterLogPos(uint32_t i)
AddLog(LOG_LEVEL_DEBUG, PSTR("SHT: Shtr%d Real %d, Start %d, Stop %d, Dir %d, Delay %d, Rtc %s [s], Freq %d, PWM %d, Tilt %d"),
i+1, Shutter[i].real_position, Shutter[i].start_position, Shutter[i].target_position, Shutter[i].direction, Shutter[i].motordelay, stemp2,
Shutter[i].pwm_velocity, Shutter[i].pwm_value,Shutter[i].tilt_real_pos);
yield();
}
void ExecuteCommandPowerShutter(uint32_t device, uint32_t state, uint32_t source)
@ -365,7 +366,7 @@ void ShutterInit(void)
void ShutterReportPosition(bool always, uint32_t index)
{
Response_P(PSTR("{"));
TasmotaGlobal.rules_flag.shutter_moving = 0;
//TasmotaGlobal.rules_flag.shutter_moving = 0;
uint32_t i = 0;
uint32_t n = TasmotaGlobal.shutters_present;
if( index != MAX_SHUTTERS) {
@ -376,7 +377,7 @@ void ShutterReportPosition(bool always, uint32_t index)
//AddLog(LOG_LEVEL_DEBUG, PSTR("SHT: Shtr%d Real Pos %d"), i+1,Shutter[i].real_position);
uint32_t position = ShutterRealToPercentPosition(Shutter[i].real_position, i);
if (Shutter[i].direction != 0) {
TasmotaGlobal.rules_flag.shutter_moving = 1;
//TasmotaGlobal.rules_flag.shutter_moving = 1;
ShutterLogPos(i);
}
if (i && index == MAX_SHUTTERS) { ResponseAppend_P(PSTR(",")); }
@ -479,6 +480,7 @@ void ShutterPowerOff(uint8_t i)
if (Shutter[i].direction !=0) {
Shutter[i].direction = 0;
}
TasmotaGlobal.rules_flag.shutter_moving = 0;
switch (Shutter[i].switch_mode) {
case SHT_SWITCH:
if ((1 << (Settings->shutter_startrelay[i]-1)) & TasmotaGlobal.power) {
@ -535,6 +537,7 @@ void ShutterUpdatePosition(void)
ShutterGlobal.start_reported = 1;
}
int32_t deltatime = Shutter[i].time-Shutter[i].last_reported_time;
if (deltatime >= 0) {
Shutter[i].last_reported_time = Shutter[i].time+1;
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Time %d(%d), cStop %d, cVelo %d, mVelo %d, aVelo %d, mRun %d, aPos %d, aPos2 %d, nStop %d, Trgt %d, mVelo %d, Dir %d, Tilt %d, TrgtTilt: %d, Tiltmove: %d"),
Shutter[i].time, deltatime, current_stop_way, current_pwm_velocity, velocity_max, Shutter[i].accelerator, min_runtime_ms, current_real_position,Shutter[i].real_position,
@ -575,6 +578,7 @@ void ShutterUpdatePosition(void)
ShutterReportPosition(true, i);
TasmotaGlobal.rules_flag.shutter_moved = 1;
XdrvRulesProcess(0);
} // timeloop
}
}
}
@ -594,7 +598,7 @@ void ShutterAllowPreStartProcedure(uint8_t i)
#ifdef USE_RULES
uint32_t uptime_Local=0;
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Delay Start? var%d <99>=<%s>, max10s?"),i+1, rules_vars[i]);
TasmotaGlobal.rules_flag.shutter_moving = 1;
//TasmotaGlobal.rules_flag.shutter_moving = 1;
XdrvRulesProcess(0);
uptime_Local = TasmotaGlobal.uptime;
while (uptime_Local+10 > TasmotaGlobal.uptime && (String)rules_vars[i] == "99") {
@ -1660,9 +1664,12 @@ bool Xdrv27(uint8_t function)
case FUNC_PRE_INIT:
ShutterInit();
break;
case FUNC_EVERY_50_MSECOND:
case FUNC_LOOP:
ShutterUpdatePosition();
break;
// case FUNC_EVERY_50_MSECOND:
// ShutterUpdatePosition();
// break;
case FUNC_EVERY_SECOND:
//case FUNC_EVERY_250_MSECOND:
ShutterReportPosition(false, MAX_SHUTTERS);