Problem with Sigfox Payload
- 
					
					
					
					
 Hi All, 
 Using Pytrack with SiPy for sending GPS coordinates to Sigfox backend.
 For example a payload sended by SiPy: b'\xd5\x17M\x00r\xb5\x08\x00' appear in the Sigfox backend as "d5174d0072b50800" !
 When I try to decode this payload by "int1::4 int2::4" in the payload display, I never obtain the Latitude and Longitude expectedIs someone has the solution ? Thanks for help. 
 Jiemde
 
- 
					
					
					
					
 @livius 
 Hi livius, That's work!, now I need to understand how work the "format" of the "pack" function and specialy "little and big-endian.Best regards 
 Jiemde
 
- 
					
					
					
					
 @Jiemde 
 Ahh i see :) I have missed it.and i see problem (previously i have thinked in opposite direction) try do this (one of this should do the trick) datatosend = struct.pack('>II', int(coords[0]*100000), int(coords[1]*100000))or not and on sigfox backend (i do not know why little not do the job and suppose that only above line will work for you) int1:uint::32:big-endian int2:uint::32:big-endian
 
- 
					
					
					
					
 @livius 
 Yes it 's my position !
 The coords are displayed just before the "sigfox send: " on the output in Atom/pymakr picture.(50.5236, 5.707314) Jiemde 
 
- 
					
					
					
					
 is this really your position? b'\xc8\x17M\x00k\xb5\x08\x00' (5052360, 570731)will be really helpfull to see print(coords)as mentioned below 
 
- 
					
					
					
					
 @Jiemde 
 can you add before struct.packprint(coords) or print(str(coords)) #if above not work cast first to string
 
- 
					
					
					
					
 @livius 
 You will find the output you ask:def sendtosigfox(): datatosend = struct.pack('ii', int(coords[0]*100000), int(coords[1]*100000)) print('sigfox send: {}\n'.format(datatosend)) size1=struct.calcsize('i') size2=struct.calcsize('ii') print('calcsize: ', size1, size2) sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ1) s = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW) s.setblocking(True) s.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False) s.send(datatosend) s.setblocking(False) s.close()while True: 
 acc = LIS2HH12(py)
 roll = acc.roll()
 print('X= ', roll)
 pitch = acc.pitch()
 print('Y= ', pitch)
 yaw = acc.yaw()
 print('Z= ', yaw)
 time.sleep(1)
 gps = L76GNSS(py)
 coords = gps.coordinates()
 print(coords)
 sendtosigfox()
 time.sleep(600)The output in Atom/Pymakr: 
  The output in Sigfox backend 
  Regards 
 Jiemde
 
- 
					
					
					
					
 @livius 
 No change in the displaying data.
 As I don't have my SiPy/Pytrack with me at my office, I will reply this evening to your other question.best regards 
 jiemde
 
- 
					
					
					
					
 sadly i do not have sipy to test self but 
 looking at your values i see that you have variation on most significant bits
 try then this:
 int1:uint::32:little-endian int2:uint::32:little-endianif this does not help then post output from corrds recived by pytrack + output packed 
 and what you got for this frames on sigfox
 
- 
					
					
					
					
 @livius 
 Here is the printscreen
  
 
- 
					
					
					
					
 @Jiemde 
 what are results - maybe this hint something
 
- 
					
					
					
					
 @livius 
 Had already tested this but not the good result.jiemde 
 
- 
					
					
					
					
 @livius 
 Yes of course! :))
 
- 
					
					
					
					
 @Jiemde 
 sorry mistake
 int1:uint::32 int2:uint::32
 
- 
					
					
					
					
 @bucknall 
 The Sigfox backend display "d5174d0072b50800"
 The decoding payload "int1::4 int2::4", display 2 integer but not the good one! image url) image url)
 
- 
					
					
					
					
 @Jiemde 
 now it is much cliear where you have the problemi do not know sigfox much but this format is valid? 
 int1::4 int2::4i suppose you need 
 int1:uint::4 int2:uint::4
 
- 
					
					
					
					
 @livius 
 Yes the coordinates are right !
 When you take the 4 first bytes of the payload seeing in Sigfox for example " d5174d00" and you enter this part of payload in an "Lat=struct.unpack('i', b'\0xd5\0x17\0x4d\0x00') you will retreive the good Latitude.
 I think that teh code is sending the good coordinates, but I don't find how to configure the payload display in "device type" in the Sigfox backend !Regards 
 jiemde
 
- 
					
					
					
					
 That looks to be fine - What does the Sigfox Backend give you, instead of the data you're expecting? Also as @livius has suggested, what GPS are you using? @livius We'll be adding the CRC check and utilization of other GPS messages shortly. Thanks for your patience! 
 
- 
					
					
					
					
 @Jiemde 
 First question is - do you have good coordinates retrived by pytrack without sending it to sigfox?
 I ask because if you used official library then current library do not calculate CRC and do not check for fix in messages.
 And it use onlyGNGLLglonass message ignoring all other messages also GPS messages.
 
- 
					
					
					
					
 Hi Alex, 
 Here is the code:def sendtosigfox(): datatosend = struct.pack('ii', int(coords[0]*100000), int(coords[1]*100000)) print('sigfox send: {}\n'.format(datatosend)) sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ1) s = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW) s.setblocking(True) s.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False) s.send(datatosend) s.setblocking(False) s.close()Thanks 
 Jiemde
 
 
			
		