My workaround, a rule run once a day, sending individual keystrokes. Enough to compensate the time drift of the control panel. I was not able to send it at once with 071 as the payload was to long. BTW: Is it possible to change this limit in the action to accept ‘*6code1HHMMmmDDYY’ or at least the date in one shot (10 bytes)?
Change 1234 sample code to master code of your panel:
import org.openhab.core.library.types.*
import java.util.Date
import java.text.SimpleDateFormat
rule "dscSetTime"
when
Time cron "0 10 21 ? * *"
then
var SimpleDateFormat df = new SimpleDateFormat( "HHmmMMddYY" )
var String Timestamp = df.format( new Date() )
logInfo( "DSC", "Settime to:{}", Timestamp )
logInfo( "DSC", "Settime sending *")
sendDSCAlarmCommand('070','*')
Thread::sleep(1000)
logInfo( "DSC", " Settime sending 6")
sendDSCAlarmCommand('070','6')
Thread::sleep(1000)
logInfo( "DSC", " Settime sending c")
sendDSCAlarmCommand('070','1')
Thread::sleep(1000)
logInfo( "DSC", " Settime sending o")
sendDSCAlarmCommand('070','2')
Thread::sleep(1000)
logInfo( "DSC", " Settime sending d")
sendDSCAlarmCommand('070','3')
Thread::sleep(1000)
logInfo( "DSC", " Settime sending e")
sendDSCAlarmCommand('070','4')
Thread::sleep(2000)
logInfo( "DSC", " Settime sending 1")
sendDSCAlarmCommand('070','1')
Thread::sleep(1000)
logInfo( "DSC", " Settime sending H1:{}",Timestamp.charAt(0))
sendDSCAlarmCommand('070',Timestamp.charAt(0).toString)
Thread::sleep(1000)
logInfo( "DSC", " Settime sending H2:{}",Timestamp.charAt(1))
sendDSCAlarmCommand('070',Timestamp.charAt(1).toString)
Thread::sleep(1000)
logInfo( "DSC", " Settime sending m1:{}",Timestamp.charAt(2))
sendDSCAlarmCommand('070',Timestamp.charAt(2).toString)
Thread::sleep(1000)
logInfo( "DSC", " Settime sending m2:{}",Timestamp.charAt(3))
sendDSCAlarmCommand('070',Timestamp.charAt(3).toString)
Thread::sleep(1000)
logInfo( "DSC", " Settime sending M1:{}",Timestamp.charAt(4))
sendDSCAlarmCommand('070',Timestamp.charAt(4).toString)
Thread::sleep(1000)
logInfo( "DSC", " Settime sending M2:{}",Timestamp.charAt(5))
sendDSCAlarmCommand('070',Timestamp.charAt(5).toString)
Thread::sleep(1000)
logInfo( "DSC", " Settime sending D1:{}",Timestamp.charAt(6))
sendDSCAlarmCommand('070',Timestamp.charAt(6).toString)
Thread::sleep(1000)
logInfo( "DSC", "Settime sending D2:{}",Timestamp.charAt(7))
sendDSCAlarmCommand('070',Timestamp.charAt(7).toString)
Thread::sleep(1000)
logInfo( "DSC", "Settime sending Y1:{}",Timestamp.charAt(8))
sendDSCAlarmCommand('070',Timestamp.charAt(8).toString)
Thread::sleep(1000)
logInfo( "DSC", "Settime sending Y2:{}",Timestamp.charAt(9))
sendDSCAlarmCommand('070',Timestamp.charAt(9).toString)
Thread::sleep(2000)
logInfo( "DSC", "Settime sending #")
sendDSCAlarmCommand('070','#')
logInfo( "DSC", "Settime done")
end