Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Problemer med python script etter oppgradering av python


Anbefalte innlegg

Usikker om dette er rett plass for dette topic, men jeg prøver.

 

Har ett python script som har kjørt nå i lengre tid. Fungert bra, inntil nå nylig.

Prøvde meg da på å få Roborock støvsuger i Homeseer, og måtte da oppgradere python fra 2.7 til 3.8.

I den forbindelse, så har det gamle scriptet sluttet å fungere.

 

Det ordinære scriptet kjøres jo bare slik nå:
image.png.f44cdabf1d0bed20f282a78539c78340.png

 

Er det noen som vet om det er mulig å kjøre to forskjellige versjoner av Python?

Evt. hvordan man setter det opp i HS3?

 

 

Endret av JohnMartin
Lenke til kommentar
Del på andre sider

Prøvde først å endre sciptet til å fungere med 3.8, da det var "print" kommandoen som ga feilmelding.

Men når det ble fikset, så fikk jeg en ny feilmelding:

Quote

Python "C:\Program Files (x86)\HomeSeer HS3\scripts\solarmanpv.pyw"
Traceback (most recent call last):
  File "C:\Program Files (x86)\HomeSeer HS3\scripts\solarmanpv.pyw", line 3, in <module>
    import urllib, urllib2, hashlib
ModuleNotFoundError: No module named 'urllib2'

 

Og da gikk jeg tom for kunnskap og idèer. 

Lenke til kommentar
Del på andre sider

Jeg og Google har ikke så godt forhold i disse dager. En av partene klarer ikke å jobbe like godt med unger som springer rundt føttene og bråker. ?

 

Men etter å ha løst det problemet(kanskje?), så får jeg opp et nytt:
 

Quote

C:\Users\John Martin>Python "C:\Program Files (x86)\HomeSeer HS3\scripts\solarmanpv.pyw"
Traceback (most recent call last):
  File "C:\Program Files (x86)\HomeSeer HS3\scripts\solarmanpv.pyw", line 28, in <module>
    m.update(password)
TypeError: Unicode-objects must be encoded before hashing

 

Virker som det er en del forskjell fra 2.0 til 3.0.

Har lest noe om at det skal være mulig å kjøre flere versjoner, så må se om jeg får til det. 

Er det mulig å bruke følgende i HS3 på noe vis?

c:\python27\python.exe "C:\Program Files (x86)\HomeSeer HS3\scripts\solarmanpv.pyw"

 

Lenke til kommentar
Del på andre sider

17 timer siden, JohnMartin skrev:

Virker som det er en del forskjell fra 2.0 til 3.0.

Ja, det er ganske stor forskjell. Et 2.x-script kan nødvendigvis ikke kjøre uten videre på 3.x...

 

Men det er da mulig å ha begge installert samtidig?

Lenke til kommentar
Del på andre sider

21 hours ago, Moskus said:

Ja, det er ganske stor forskjell. Et 2.x-script kan nødvendigvis ikke kjøre uten videre på 3.x...

 

Men det er da mulig å ha begge installert samtidig?

 

Ja, har fått til det, får til å kjøre forskjellig version fra cmd, men usikker hvordan jeg gjør det via HS3.

Det er neste på google lista mi ;)

 

Lenke til kommentar
Del på andre sider

På 20.3.2020 den 19.37, JohnMartin skrev:

c:\python27\python.exe 

 Som application og dette som parameter

På 20.3.2020 den 19.37, JohnMartin skrev:

"C:\Program Files (x86)\HomeSeer HS3\scripts\solarmanpv.pyw"

 

  • Like 1
Lenke til kommentar
Del på andre sider

Da har jeg omsider fått scriptet til å fungere igjen.

Ble noen endringer, siden scriptet henter data på en ny måte.

Får ingen feilmeldinger når jeg kjører scriptet nå, MEN data blir ikke oppdatert i Homeseer.

 

I opprinnelig script så ble denne brukt:

#login call
infoRoot = ET.parse(urllib.urlopen(infoURL)).getroot()

income = infoRoot.find('income')
TodayIncome = income.find('TodayIncome').text
ActualPower = income.find('ActualPower').text
etoday = income.find('etoday').text
etotal = income.find('etotal').text

multiply='1000.0'
etotal1000 = float(etotal) * float(multiply)
TotalIncome = income.find('TotalIncome').text
etotalstr=str(etotal1000)

etoday=etoday.replace(".", ",")
etotal=etotal.replace(".", ",")


#logging values
print 'TodayIncome: '+TodayIncome
print 'ActualPower: '+ActualPower
print 'etoday: '+etoday.replace(".", ",")
print 'etotal: '+etotal
print 'etotal 1000: '+etotalstr





#uploading values to Homeseer
url = ("http://" + hs_host + ":" + hs_port + "/" + hs_url+ "?request=controldevicebyvalue&ref=" + hs_ActualPower+ "&value=" + ActualPower)
urllib.urlopen(url)

url = ("http://" + hs_host + ":" + hs_port + "/" + hs_url+ "?request=controldevicebyvalue&ref=" + hs_etoday+ "&value=" + etoday)
urllib.urlopen(url)

url = ("http://" + hs_host + ":" + hs_port + "/" + hs_url+ "?request=controldevicebyvalue&ref=" + hs_etotal+ "&value=" + etotal)
urllib.urlopen(url)

I det nye så fikk jeg feilmelding når jeg prøvde å bruke samme "uploading values to Homeseer".

Endret jeg til dette, så får jeg ikke feilmelding lengre, men ingenting skjer i HS3.

#login call
resultData = session.post(url, params=params)
resultJson = resultData.json()
if resultJson['result'].get('isAccept') == 1:
    print("Login Succesfull!")
else:
    print("Login Failed!!")
    Exit()

# Get plant details
url = 'http://'+domain+'/cpro/epc/plantDetail/showPlantDetailAjax.json'
params = {
    'plantId': int(plantId)
}

cookies = {'language': lan}
resultData = session.get(url, params=params, cookies=cookies)
resultJson = resultData.json()

TodayIncome = resultJson['result']['plantAllWapper']['plantData'].get('incomeTotal')
ActualPower = resultJson['result']['plantAllWapper']['plantData'].get('power')
etoday = resultJson['result']['plantAllWapper']['plantData'].get('energyToday')
etotal = resultJson['result']['plantAllWapper']['plantData'].get('energyTotal')

multiply='1000.0'
etotal1000 = float(etotal) * float(multiply)
etotalstr=str(etotal1000)

#logging values
print 'TodayIncome: ' + str(TodayIncome)
print 'ActualPower: ' + str(ActualPower)
print 'etoday: ' + str(etoday)
print 'etotal: ' + str(etotal)
print 'etotal 1000: ' + str(etotalstr)

#uploading values to Homeseer
url = ("http://" + hs_host + ":" + hs_port + "/" + hs_url+ "?request=controldevicebyvalue&ref=" + hs_ActualPower+ "&value=" + str(ActualPower))
urllib.urlopen(url)

url = ("http://" + hs_host + ":" + hs_port + "/" + hs_url+ "?request=controldevicebyvalue&ref=" + hs_etoday+ "&value=" + str(etoday))
urllib.urlopen(url)

url = ("http://" + hs_host + ":" + hs_port + "/" + hs_url+ "?request=controldevicebyvalue&ref=" + hs_etotal+ "&value=" + str(etotal))
urllib.urlopen(url)

Noen forslag? ?

Lenke til kommentar
Del på andre sider

  • 7 måneder senere...

Oppdaget idag at det var problemer med dette scriptet igjen...

Devicene har ikke oppdatert seg på et par dager, og når jeg prøver å kjøre scriptet så får jeg denne feilmeldingen:
 

C:\Python27>python.exe "C:\Program Files (x86)\HomeSeer HS3\scripts\new solarman.py"
Traceback (most recent call last):
  File "C:\Program Files (x86)\HomeSeer HS3\scripts\new solarman.py", line 37, in <module>
    if resultJson['result'].get('isAccept') == 1:
KeyError: 'result'

 

Vet ikke hvorfor det stopper på dette nå, har ikke skjedd noe de siste ukene. 
Om det ikke er noe som er oppdatert i bakgrunnen.

 

Har reinstallert Python 2.7 for sikkerhetsskyld, men ingen endring.

 

Noen forslag?

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.