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

    Pybytes send signal arguments

    Scheduled Pinned Locked Moved FiPy
    19 Posts 4 Posters 253 Views 4 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.
    • F Offline
      Flavio Frattini
      last edited by

      Hi,
      I'm trying to use Pybytes using the NB-IoT connection on my Fipy. Starting the Pybytes connection at boot, the device is able to connect and to send signals. When I do not initialise Pybytes at boot, usign the command 'from _pybytes import Pybytes, pybytes = Pybytes' from the documentation, when I try to send a signal, I get this following error: 'TypeError: function takes 3 positional arguments but 2 were given'. What is the third argument?
      I have another question: when I initialise Pybytes at boot, the device is able to send signals, but sometimes it gets stuck, it reboots, or it sends signals but these messages are not received... it is not reliable at all. The device connects to Pybytes and then I just use the send_signal function: am I missing something?
      Thank you

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

        It should just be pybytes.send_signal(ID,Value)
        What exactly are you sending? Maybe the type Error is because of the data you're using?

        F 1 Reply Last reply Reply Quote 0
        • F Offline
          Flavio Frattini @dnear1
          last edited by

          @dnear1 I'm sending a string as reported in the coumentation, for example pybytes.send_signal(1, "hello world")

          D 1 Reply Last reply Reply Quote 0
          • D Offline
            dnear1 @Flavio Frattini
            last edited by

            @Flavio-Frattini I know it says "can be any type", but I've never succeeded in sending strings.. Only Int, Float, etc..

            1 Reply Last reply Reply Quote 0
            • G Offline
              Gijs
              last edited by

              Hi,
              I must say I am not having the reliablity issues you refer to, nor the type-error you mention. I will paste my output below:

              from _pybytes import Pybytes
              from _pybytes_config import PybytesConfig
              conf = PybytesConfig().read_config()
              pybytes = Pybytes(conf)
              
              pybytes.start()
              pybytes.send_signal(1, 'hello world')
              

              Screenshot 2020-12-10 at 09.58.31.png (I tried it 3 times just to be sure)
              Are you running the latest firmware version (1.20.2.r2)?
              Gijs

              F 2 Replies Last reply Reply Quote 0
              • F Offline
                Flavio Frattini @Gijs
                last edited by

                @Gijs Thanks. It seems that now it's all working properly. I'll test for a long period to be sure everything is fine. Thank you very much.

                1 Reply Last reply Reply Quote 0
                • F Offline
                  Flavio Frattini @Gijs
                  last edited by

                  @Gijs Hi, I tried your code and I still have a problem.
                  I put your instructions in my script. After every instruction I wrote something in a log file to be sure everything was successful. I have noticed that the first two lines (conf=read_config and pybytes=Pybytes(conf)) did not give me any problem, while the instruction pybytes.start was the one which gave me problem. The device was not able to connect to Pybytes and got stuck, it rebooted after 21 minutes, and it tried to connect again, unsuccessfully. Is it just me that I am facing this issue? Thank you.

                  1 Reply Last reply Reply Quote 0
                  • G Offline
                    Gijs
                    last edited by

                    Hi,
                    The issue you are referencing to now appears to be different from the original issue?
                    First, make sure the pybytes configuration still holds all the correct values.
                    Next, it could be an issue of no available LTE signal, which indeed prevents a connection when trying to connect over LTE. You could instead try to connect over WiFi and see whether you can get that working, or manually create an LTE connection.
                    Check the docs for examples: https://docs.pycom.io/tutorials/networks/

                    Gijs

                    F 1 Reply Last reply Reply Quote 0
                    • F Offline
                      Flavio Frattini @Gijs
                      last edited by

                      @Gijs Hi!
                      Yes, it's different from the original issue.
                      Yes, I'm pretty sure that the pybtes configuration has the correct default value you provided.
                      I don't think it is a problem of LTE signal, because I'm testing the device in the same place, and what happens is that the device sends messages for some time and then all of a sudden it has problems with the connection.
                      I'm interested in the manual LTE connection: I've tried the LTE example before, the attach and connect instructions work, but then? How do I send data? To which address can I send data?
                      I have another question: I'm starting to think it is a battery problem. Could you advise me good batteries for a FiPy?
                      Thank you very much.

                      T D F 3 Replies Last reply Reply Quote 0
                      • T Offline
                        tuftec @Flavio Frattini
                        last edited by

                        @Flavio-Frattini have a look at my posts here
                        https://forum.pycom.io/topic/6704/lte-modem-firmware-and-lte-classes-can-get-into-bricked-state-to-easily/38

                        I have been having LTE stability problems now for some time and after some recent changes the stability has vastly improve. I am yet to do more testing.

                        Here are what I believe look like the key steps to improve LTE stability.
                        Use Pycom firmware version 1.20.2r3
                        Do a full/fresh upgrade of the LTE firmware. Do not use the delta/diff install method. I am using Nb-IoT firmware version NB1-41019.dup
                        Use lte.deinit(reset=True) when de-initialising the modem.

                        Now this might not be the miracle fix but it appears to be working for me at present.

                        Good luck.

                        Report back if it helps.

                        Peter.

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          dnear1 @Flavio Frattini
                          last edited by

                          @Flavio-Frattini You'd need to provide a lot more details to get anywhere with your battery needs. You'll need to track how much power is being used and spend a lot of effort to reduce unnecessary waste. Unless you just grab an unreasonably large battery to test with while you pare things down. Even then, you'll get wildly different suggestions that might not fit your needs based on different usage and requirements..

                          One good solution is to buy a cheap USB power meter. They're $10-20 and plug between the power source and your device, and measure amps, watts, etc including a rough wattmeter to show power consumption over time. This will get you a lot closer. LTE itself can be quite power hungry, so you'll want to shut down the connection whenever you don't need it. Many people just go online long enough to send your packet then shut down the LTE connection for 90 seconds before going online to check again.. This gives you a reasonable power saving without making the response time too long. You'll also need to balance that against your data usage budget to keep your costs down.

                          Also, you need to define the maximum allowable time between recharging your battery... because if it can't be plugged in daily, the battery needs to survive at least that long between "feedings". If you're planning to use Solar, you should give yourself at least a week of runtime, to account for bad weather, rainy days, etc... which can sometimes stretch for 3-4 days or more and prevent decent recharges. If downtime is critical, you may need more than a week. so your initial battery/charge controller/solar panel may not fit once it sees field conditions, tree cover, panel shading, bird poop, etc..

                          F 1 Reply Last reply Reply Quote 0
                          • F Offline
                            Flavio Frattini @dnear1
                            last edited by

                            @dnear1 Hi, thanks for your answer.
                            I'm already trying to reduce unnecessary waste. What I'm doing right now is connecting to Pybytes, sending a message, disabling the LTE modem and then going into deepsleep, and later on the device wakes up to send another message. I'm not very interested in how long the battery will last, I'm more concerned whether I need a battery to satisfy the current peak need of the device. (I'm not an expert in this subject, it's the first time I'm working with such a device and the first time I have to choose devices and batteries).
                            Since I'm not an expert on this topic, may I ask you something else? Why are talking about 'at least a week of runtime'? Aren't we using IoT devices that are supposed to run for years with a single battery?
                            Thank you

                            1 Reply Last reply Reply Quote 0
                            • F Offline
                              Flavio Frattini @Flavio Frattini
                              last edited by

                              @Gijs Hi, any idea about this? Thank you for your support

                              1 Reply Last reply Reply Quote 0
                              • G Offline
                                Gijs
                                last edited by

                                Hi, sorry I must've missed your question

                                Why are talking about 'at least a week of runtime'? Aren't we using IoT devices that are supposed to run for years with a single battery?

                                The microcontroller is definitely a tradeoff between computing power and power consumption. Even when using the deepsleep functionality, it still consumes quite a bit of power compared to ultra low-power controllers (we are working on decreasing the deepsleep power consumption, but its quite a complicated task there). Next to that, using any kind of network communication (WiFi, LoRa etc) also uses a lot of power. For the LTE modem, it is possible to use the PSM mode: https://docs.pycom.io/tutorials/networks/lte/power/#power-saving-mode (Im not too familiar with the exact workings)

                                In the documentation for the Fipy, we have listed some of the measured current requirements for several situations:https://docs.pycom.io/gitbook/assets/specsheets/Pycom_002_Specsheets_FiPy_v2.pdf, page 7. These might not directly coincide your application, but at least it gives some indication.

                                Let me know if that answers your question
                                Gijs

                                F 1 Reply Last reply Reply Quote 1
                                • F Offline
                                  Flavio Frattini @Gijs
                                  last edited by

                                  @Gijs Thank you very much, I had already read about the current requirements but I'm definetly gonna try the power saving mode.
                                  But actually my main concern was how to send data after attaching and connecting to a NBIOT network.
                                  I also have another question: searching through old forum posts, I found out that some users used the urequests library to perform HTTP requests, but it seems that this library is no longer available in the documentation. Is there a way to perform a HTTP request? Thanks

                                  1 Reply Last reply Reply Quote 0
                                  • G Offline
                                    Gijs
                                    last edited by

                                    From what I know, the urequest library was always an external library available from the micropython project here: https://github.com/micropython/micropython-lib/tree/master/urequests. The usage is similar to the pytrack / pysense libraries, where you place them in a folder named lib in your project and upload it all

                                    F 1 Reply Last reply Reply Quote 1
                                    • F Offline
                                      Flavio Frattini @Gijs
                                      last edited by

                                      @Gijs Thanks for your answer. But is this library not useful when using NB-IoT connection? I get the 'ECONNABORTED' error when I try to reach an IP address via NB-IoT, while it works fine when I use Wi-Fi. I get the same error when I follow the example on the 'LTE power consumption page': when I try to open a socket with detectportal.firefox.com as suggested in the example, I get the ECONNABORTED. Is it beacuase we are only allowed to reach Pybytes with your sim cards? Thank you

                                      1 Reply Last reply Reply Quote 0
                                      • G Offline
                                        Gijs
                                        last edited by

                                        If you are using a Pycom simcard, that is indeed the cause, I used to get EAI failed (error address info) though, but that could be related to your setup. Are you able to connect to pybytes though?

                                        F 1 Reply Last reply Reply Quote 1
                                        • F Offline
                                          Flavio Frattini @Gijs
                                          last edited by

                                          @Gijs Yes, I am able to connect to pybytes, but I was curios to see if I was able to perform an HTTP request to my server with the cellular network, but it's not possible as you've told me. Thank you very much for your support.

                                          1 Reply Last reply Reply Quote 0

                                          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