Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    [Solved]:FiPy socket.connect command

    Scheduled Pinned Locked Moved FiPy
    fipysocket connectpost
    4 Posts 2 Posters 1.6k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D Offline
      DDA
      last edited by DDA

      Thanks a ton @jmarcelino. My problem is solved, added the following right after lte.connect(cid=3), and before s=socket.socket....

      while not lte.isconnected():
          time.sleep(0.25)
      

      and edited the s.connect to :

      address = socket.getaddrinfo('123.45.67.89',4949) #update with you own server IP, 
      print(address)
      s.connect(address[0][-1])
      

      One minor problem still exists, which I need to look investigate further...maybe tomorrow, the code works once...top to bottom as expected , but if I press "reset" the code executes again as expected, but modem fails to attach...CSQ is 99,99. So far I have seen, if I do power-down-up it works again...but not with reset. Maybe I should run it in loop every 5-10 minutes and check.

      @administrators, @jmarcelino
      Per my last forum topic: https://forum.pycom.io/topic/3201/solved-fipy-cat-m1-connection
      I am able to connect to the Verizon network with my FiPy, but as I modified the code to post data to my server I am getting an unexpected error with s.connect((host,port)). I even tried
      addr=(host,port)
      s.connect(addr) instead of s.connect((host,port)) but same error each time.
      Here is my code block and error

      from network import LTE
      #from socket import *
      
      import socket
      import ssl
      import time
      import sys
      import pycom 
      
      host='abc.dyndns.org' # replaced actual host name portion with "abc"
      port=4949
      addr=(host,port)
      
      pycom.heartbeat(False)
      
      print('Pycom module and firmware version:%s' % os.uname())
      lte = LTE(carrier="verizon")  # instantiate the LTE object
      lte.attach(band=13)   # attach the cellular modem to a base station, initially it was lte.attch()
      print('FiPY is attached to network')
      time.sleep(0.25) 
      pycom.rgbled(0x0000ff) # BLUE LED
      while not lte.isattached():
          print('While not attached yet, signal:%s'%lte.send_at_cmd('AT+CSQ'))
          lte.send_at_cmd('AT+CSQ')
          print('While not attached yet, status:%s '%lte.send_at_cmd('AT+CEER'))
          lte.send_at_cmd('AT+CEER')
          time.sleep(.25)  # originally 0.25 changed to 5.0 if unseccful in connecting
          lte.attach(band=13)
      lte.connect(cid=3)       # start a data session and obtain an IP address
      print('Connected to LTE-CATM1')
      pycom.rgbled(0x00ff00) # GREEN LED
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      print('Socket created')
      s.settimeout(5.0)
      #s.connect((host, port))  # tried this as well
      s.connect(addr)
      print('Socket Bind Complete....moving to send data  ')
      #s.listen(10)
      s.send('1~660832~05/08/1501:00A0A141E28323C4650~')
      #data=s.recv(1024)
      s.close()
      #print('Received:, repr(data)')
      lte.disconnect()
      lte.dettach()
      pycom.rgbled(0xff0000) # RED LED
      print( " Reached EOP")
      

      Terminal output:

      >>> os.mkfs('/flash')
      >>>
      Uploading project (main folder)...
      
      Reading file status
      Failed to read project status, uploading all files
      Creating dir workspaceStorage
      Creating dir workspaceStorage/bc895fb1973b5d5624b4a2ed2625b38c
      Creating dir workspaceStorage/d0c7d1ef2572273c369bbcf44005cf73
      [1/5] Writing file main.py
      [2/5] Writing file pymakr.json
      [3/5] Writing file settings.json
      [4/5] Writing file workspaceStorage/bc895fb1973b5d5624b4a2ed2625b38c/meta.json
      [5/5] Writing file workspaceStorage/d0c7d1ef2572273c369bbcf44005cf73/meta.json
      Upload done, resetting board...
      ets Jun  8 2016 00:22:57
      
      rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
      configsip: 0, SPIWP:0xee
      clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
      mode:DIO, clock div:1
      load:0x3fff8028,len:8
      load:0x3fff8030,len:1728
      load:0x4009fa00,len:0
      load:0x4009fa00,len:14584
      entry 0x400a059c
      Pycom module and firmware version:(sysname='FiPy', nodename='FiPy', release='1.17.3.b1', version='v1.8.6-849-83e2f7f on 2018-03-19', machine='FiPy with ESP32', lorawan='1.0.2', sigfox='1.0.1')
      FiPy is attached to network
      Connected to LTE-CATM1
      Socket created
      Traceback (most recent call last):
        File "main.py", line 36, in <module>
      ValueError: invalid arguments
      MicroPython v1.8.6-849-83e2f7f on 2018-03-19; FiPy with ESP32
      Type "help()" for more information.
      >>>
      

      Please advise.Thanks much!!

      J 1 Reply Last reply Reply Quote 0
      • D Offline
        DDA
        last edited by

        Also, once connected how do I find the assigned IP address of the FiPy? Use AT+CGPIAF?

        1 Reply Last reply Reply Quote 0
        • D Offline
          DDA
          last edited by

          @administrators @jmarcelino @daniel @robert-hh @timh
          Any body any suggestions, I am still stuck! Thanks

          1 Reply Last reply Reply Quote 0
          • J Offline
            jmarcelino @DDA
            last edited by jmarcelino

            Hi @dda

            socket.connect doesn't take a domain name, you need to resolve it first into a tuple like this - (family, type, proto, canonname, sockaddr) - which you can obtain from socket.getaddrinfo()

            In your case doing:

            s.connect(socket.getaddrinfo(addr, port)[0][-1])

            should do what you want.

            There currently isn't a way to obtain your assigned IP address.

            1 Reply Last reply Reply Quote 1

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            • 1 / 1
            • First post
              Last post

            Pycom on Twitter

            Pycom