def sendData(direction, speed, gps): s = socket.socket(socket.AF_LORA, socket.SOCK_RAW) s.setsockopt(socket.SOL_LORA, socket.SO_DR, 5) s.setblocking(True) lpp = cayenneLPP.CayenneLPP(size=100, sock=s) lpp.add_analog_input(direction, 4) lpp.add_analog_input(speed) lpp.add_gps(gps[0], gps[1], gps[2]) lpp.set_socket(s) lpp.send() s.setblocking(False)
#### Pytrack gc.enable() # setup rtc # rtc = machine.RTC() # rtc.ntp_sync("pool.ntp.org") # utime.sleep_ms(750) # print('\nRTC Set from NTP to UTC:', rtc.now()) # utime.timezone(7200) # print('Adjusted from UTC to EST timezone', utime.localtime(), '\n') py = Pytrack() l76 = L76GNSS(py, timeout=5000) # sd = SD() # os.mount(sd, '/sd') # f = open('/sd/gps-record.txt', 'w') lpp = cayenneLPP.CayenneLPP(size=100, sock=s) while (True): coord = l76.coordinates() if isinstance(coord, int): lpp.add_gps(3, coord, 2) #f.write("{} - {}\n".format(coord, rtc.now())) print(coord) lpp.send(reset_payload=True) time.sleep(60)
py.setup_int_pin_wake_up(False) # enable activity and also inactivity interrupts, using the default callback handler py.setup_int_wake_up(True, True) # set the acceleration threshold to 2000mG (2G) and the min duration to 160ms acc.enable_activity_interrupt(2000, 160) while True: #wake_s = ds.get_wake_status() #print(wake_s) time.sleep(0.1) #if(acc.activity()): if (True): pycom.rgbled(0x000066) #Color blue coord = l76.coordinates() s.setblocking(True) lpp = cayenneLPP.CayenneLPP( size=100, sock=s) #create socket to send messages to server #pitch= acc.pitch() #roll = acc.roll() #yaw = acc.yaw() #print('Pitch:',pitch) #print('Roll:' ,roll) #print('Roll:' ,yaw) coord = l76.coordinates() #Get the coordinates c0 = coord[0] c1 = coord[1] #volt= py.read_battery_voltage() #Read Battery Voltage
def _send_handler(self, alarm): print('sending...') # creating Cayenne LPP packet lpp = cayenneLPP.CayenneLPP(size=60, sock=s) # adjust payload size if needed # take measurements pitch = acc.pitch() roll = acc.roll() accel = acc.acceleration() # pressure = baro.pressure() altitude = baro.altitude() barotemp = baro.temperature() levels = light.light() # temp = temphumid.temperature() humid = temphumid.humidity() battery = pc.read_battery_voltage() self.counter = self.counter + 1 # simple counter for logging # show measurements print('pitch:', pitch) print('roll:', roll) print('baro temp:', barotemp) print('acceleration: x {}, y {}, z {}'.format( accel[0], accel[1], accel[2])) print('altitude:', altitude) # print('pressure:', pressure/100) print('light avg:', (levels[0] + levels[1]) / 2) # print('temp:', temp) print('humid:', humid) print('battery', battery) print('counter', self.counter) # send measurements lpp.add_analog_input(pitch) lpp.add_analog_input(roll, channel=103) lpp.add_temperature(barotemp, channel=107) lpp.add_accelerometer( accel[0], accel[1], accel[2], ) # lpp.add_barometric_pressure(pressure/100) # convert pa to Hectopascals lpp.add_analog_input(altitude, channel=104) lpp.add_luminosity((levels[0] + levels[1]) / 2) # lpp.add_temperature(temp) lpp.add_relative_humidity(humid) lpp.add_analog_input(battery, channel=105) lpp.add_analog_input(self.counter, channel=106) print('payload size: {}'.format( lpp.get_size())) # show payload get_size # if payload is too large, adjust in Sender._send_handler above if needed # sending the packet via the socket try: lpp.send() except OSError as e: print(e) pycom.heartbeat(False) for x in range(10): pycom.rgbled(0xFF0000) # red blinking for errors time.sleep(0.2) pycom.rgbled(0x000000) # off time.sleep(0.2) import machine machine.reset() pycom.heartbeat(False) pycom.rgbled(0x00FF00) # green flash for success time.sleep(0.2) pycom.heartbeat(True) if pc.button_pressed( ): # holding button cancels data sending until reboot self.__alarm.cancel() pycom.heartbeat(False) pycom.rgbled(0xFF0000) # red time.sleep(5) pycom.rgbled(0x000000) # off