You followed Haddood's instructions correctly. But after taking a closer look, his solution wouldn't quite work as you want it.
The reason his method will not work is because every time the command is triggered after 7 am, it will immediately stop the command macro, and this will be just as true after 8 pm, since 2000 comes after 7 am. So it will never make it to the rest of the command
The following should work for you:
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.0.3-->
<command id="505" name="Motion Announcement" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>AnnounceMotion</param>
<param>False</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)<(B)</ifType>
<ifParams>{DtCustom.HHmm}&&0700</ifParams>
<then>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>AnnounceMotion</param>
<param>True</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)<(B)</ifType>
<ifParams>2000&&{DtCustom.HHmm}</ifParams>
<then>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>AnnounceMotion</param>
<param>True</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{var.AnnounceMotion}&&True</ifParams>
<then>
<action>
<cmdType>XJson.Raw</cmdType>
<params>
<param>Input.ExecuteAction</param>
<param>"action":"pause"</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SetVolume</cmdType>
<params>
<param>100</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<params>
<param>Motion has been detected at the front of the home.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SetVolume</cmdType>
<params>
<param>20</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>XJson.Raw</cmdType>
<params>
<param>Input.ExecuteAction</param>
<param>"action":"pause"</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else>
<action>
<cmdType>VcAdvanced.Log</cmdType>
<params>
<param>----Motion announcement cancelled----</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</else>
</if>
<event>X10.RECVPLC.A1.ON</event>
</command>
In terms of the method you tried to use above, I don't know if what you were posting was the final version of your commands, but one of the main issues is that you had four commands that would not have been triggered by anything.
You need to assign either events or a voice command phrase to your commands no matter what, if you want them to be able to do something.
Also, just a note that when you use TTS.SetVolume you are setting the TTS volume as a percentage of your system volume. If your system volume is at 40 and you set your TTS volume to 100, then the TTS voice will speak at a volume of 40.
If you reduce your TTS volume to 20, then it will make announcements at 20% of 40.