how to enter pin sleep on xbee cellular upython script

I have followed the example, but I cannot get the module to sleep…

from machine import Pin
import network
import time
import xbee

alarm_enabled = False
alarm = False
last_upload = 0

def read_sensors():
# add code here to actually read sensors
# might set the alarm for unusual readings
print(“read sensors”)

def set_alarm_condition():
global alarm
alarm = True

def send_data():
global alarm, last_upload
# add code here to connect to a server to upload sensor readings
print(“sent data and reported any alarms”)
alarm = False
last_upload = time.ticks_ms()

def time_for_upload():
global alarm, last_upload

# upload if there's been an alarm, or it's been an hour since last upload
return alarm or (time.ticks_diff(time.ticks_ms(), last_upload) > 60 * 60 * 100)

def upload_then_sleep():
print(“virtual uploading…”)

c = network.Cellular()
x = xbee.XBee()

x.atcmd(‘SM’, 0) # make sure MicroPython fully controls sleep

must configure DIO8 as an input with pullup if we want to read and use it for waking

dio8 = Pin(“D8”, Pin.IN, Pin.PULL_UP)

upload data then put module to sleep


while True:
if time_for_upload():

if not alarm_enabled and dio8():
	print("DIO8 high, re-enabling alarm")
	alarm_enabled = True

# sleep for 60 seconds, wake early if DIO8 is low
print("sleeping for 6 seconds")
sleep_ms = x.sleep_now(60000, alarm_enabled)

print("slept for %u ms" % sleep_ms)
if x.wake_reason() is xbee.PIN_WAKE:
	print("woke early on DIO8 low")
	alarm_enabled = False

which xbee cellular module is this and what firmware version are you working with?

thanks for the reply.

latest firmware installed, 100A

it is a LTE cat1 module