Error when uploading to LoPy4
-
It's been a few week that i can't upload anything anymore on my 2 LoPy4, i use expansion board 3.0, can't deal with the update for the expansion board(i'm on windows) but i updated the LoPy4 to the last firmware, and it solved nothing. I can run progs and it works well, but when i try to upload some, although it's saying "upload done", nothing happen.
Could you help me a little bit ?
Here is the upload msg and the error
i work on Visual Studio Code, with the plugin PyMakr
Thanks in advance.
-
The file is called main.py, and it always was, so i don't think it can be it. I have a project created, and all the file are inside, i can access it through windows explorer as well, for the code, i can explain it, and post a screen about it if you want.
I use the internal RTC (even if i can't update the time, i can initialise it and do something when X date is reached, even if there is no save if the system is not alimented anymore, that's enough for me) i also use an analogic pin for taking a battery pourcentage, and i send a message when a pin receive something.
If you really want all the code here it is
from network import Sigfox from machine import Pin from machine import RTC import pycom import socket import machine import time class ComSigFox: msg = "" localisation = "" socket = "" Etat = "" tailleManquante = 0 Compteur = 0 def __init__(self): # Initialise SigFox en Europe (RCZ1) localisation = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ1) def sendMsg(self, paramMsg): pycom.rgbled(0x007f00) # vert # Créer un socket SigFox s = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW) # Bloque le socket s.setblocking(True) # Configure le socket en Uplink seulement (False / True) s.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False) msg = paramMsg msg += " %" if((len(msg) ) < 5 ): # Si le message fait en dessous de 5 caractères tailleManquante = 5 - (len(msg)) for Compteur in range(tailleManquante): msg = msg + " " # On rajoute des espaces autant de fois # Que nécessaire pour avoir 5 caractères Etat = "Close" if(Etat == "Open"): Etat = "Open " msg = msg + Etat s.send(msg) return True class Batterie: Voltage = 0 Charge = 0 def __init__(self): pass def getBattery(self): adc = machine.ADC(bits = 10) # create an ADC object apin = adc.channel(pin='P20', attn = machine.ADC.ATTN_11DB) # create an analog pin on P20 i = 0 MoyenneVolt = 0 for i in range(1,50): time.sleep(0.1) val = apin() - 698 Mesure = (val / 1024) * 5 MoyenneVolt += Mesure Voltage = MoyenneVolt / 49 print(Voltage) # Condition tension avec équation 0 - 10% de charge if(Voltage >= 1.32496 and Voltage <= 1.41429): Charge = (429.71806 * pow(Voltage,2)) - (1065.15152 * Voltage) + 656.90476 # Condition tension avec équation 10 - 30% de charge if(Voltage > 1.41429 and Voltage <= 1.45895): Charge = (404108.59608 * pow(Voltage,3)) - (1741647.28089 * pow(Voltage,2)) + (2502325.58922 * Voltage) - 1198510 # Condition tension avec équation 30 - 60% de charge if(Voltage > 1.45895 and Voltage <= 1.52594): Charge = (540257.28470 * pow(Voltage,4)) - (3000615.37231 * pow(Voltage,3)) + (6220087.42278 * pow(Voltage,2)) - (5699263.94063 * Voltage) + 1945763.58460 # Condition tension avec équation 60 - 100% de charge if(Voltage > 1.52594 and Voltage <= 1.58921): Charge = (348000.83082 * pow(Voltage,3)) - (1629386.97406 * pow(Voltage,2)) + (2543268.59982 * Voltage) - 1323295.17637 Charge = int(round(Charge,0)) print("") print(Charge) print("") # La fonction int() n'arrondit pas, elle ne fait que tronquer, ainsi, il faut faire un int de l'arrondi qui seras par exemple # 49.0, le résultat seras donc le nombre 49. return Charge class HorlogeRTC: rtc = 0 Date = 0 stringHeureDate = "" stringMinutesDate = "" stringSecondesDate = "" intHeureDate = 0 intMinuteDate = 0 intSecondesDate = 0 HeureSouhaite = 0 MinuteSouhaite = 0 SecondeSouhaite = 0 HeureFinal = 0 MinuteFinal = 0 SecondeFinal = 0 TempsTotalAttente = 0 def __init__(self): rtc = RTC() rtc.init((2018, 5 , 16 , 17, 19, 50, 0 )) # rtc.init(Année , mois , jours , heures , minutes, secondes, millisecondes) def getTime(self): Date = RTC().now() return Date def CalcTime(self,Date): Jour = False stringHeureDate = Date[3] stringMinutesDate = Date[4] stringSecondesDate = Date[5] s_intHeureDate = int(stringHeureDate) * 3600 s_intMinutesDate = int(stringMinutesDate) * 60 s_intSecondesDate = int(stringSecondesDate) s_TempsTotalActuel = s_intHeureDate + s_intMinutesDate + s_intSecondesDate HeureSouhaite = 17 * 3600 MinuteSouhaite = 20 * 60 SecondeSouhaite = 10 s_TempsTotalSouhaite = HeureSouhaite + MinuteSouhaite + SecondeSouhaite # TempsTotalAttente en seconde if(s_TempsTotalSouhaite < s_TempsTotalActuel): TempsTotalAttente = (s_TempsTotalSouhaite - s_TempsTotalActuel) * -1 else: TempsTotalAttente = s_TempsTotalSouhaite - s_TempsTotalActuel if(Jour == False): Jour == True return TempsTotalAttente elif(Jour == True): return 86400 + TempsTotalAttente def TempoVerifMesure(TempsRestantHorlogeParam): Max = 0 Diviseur = 0 TempsAttenteBoucle = str(TempsRestantHorlogeParam) print(TempsAttenteBoucle) if(len(str(TempsAttenteBoucle)) == 5): Diviseur = 10000 TempsAttenteBoucle = int(TempsRestantHorlogeParam) / Diviseur if(len(str(TempsAttenteBoucle)) == 4): Diviseur = 1000 TempsAttenteBoucle = int(TempsRestantHorlogeParam) / Diviseur if(len(str(TempsAttenteBoucle)) == 3): Diviseur = 100 TempsAttenteBoucle = int(TempsRestantHorlogeParam) / Diviseur if(len(str(TempsAttenteBoucle)) == 2): Diviseur = 10 TempsAttenteBoucle = int(TempsRestantHorlogeParam) / Diviseur print(TempsAttenteBoucle) #Pin de l'ILS #ILS = Pin('P23',mode=Pin.IN,pull=Pin.PULL_UP) Max = Diviseur pycom.rgbled(0x7f0000) # red for i in range(0,Max,1): time.sleep(TempsAttenteBoucle) print("Tempo... {0}".format(Max)) #if(ILS() == True): # return True return True if __name__=="__main__": Horloge = HorlogeRTC() # On initialise la classe HorlogeRTC Battery = Batterie() # On initialise la classe Batterie SigFox = ComSigFox() # On initialise la classe ComSigFox pycom.heartbeat(False) while(True): #Le programme tourne en permanance dans cette boucle envoiSigFox = False while(envoiSigFox == False): # Tant que le message SigFox n'est pas envoyé on boucle ici Date = Horloge.getTime() # On récupère la date TempsRestantHorloge = Horloge.CalcTime(Date) # On calcule le temps restants avant la date souhaite en secondes intCharge = Battery.getBattery() if(TempoVerifMesure(TempsRestantHorloge) == False): # Condition pour que le message SigFox s'envoie (Temporisation de TempsRestantHorloge + vérif ILS) pycom.rgbled(0x7f7f00) # jaune else: SigFox.sendMsg(str(intCharge)) envoiSigFox = True
-
@luxior
Do you have a project open in VSCode?Can you describe your project structure or perhaps post a screenshot of VSCode with your code open?
It looks like the files are on the board already but if not called from main.py they don't get run.
Thanks