JohnMartin Skrevet 14. april 2019 Skrevet 14. april 2019 Hei, Har et ønske om å få inn data på solcelle anlegget inn i Homeseer. Har funnet ut at websiden jeg logger på for å lese data har et API, men der stopper kunnskapen min. ? Har funnet et script til Domoticz som heter data fra siden. http://www.domoticz.com/forum/viewtopic.php?t=7941 Hvordan er det å få dette til å virke i Homeseer. Er det mye jobb? Siter
ZoRaC Skrevet 14. april 2019 Skrevet 14. april 2019 2 timer siden, JohnMartin skrev: Hvordan er det å få dette til å virke i Homeseer. Er det mye jobb? Det er relativt kurant, tror jeg. Du kan bruke scriptet i Python og bare endre siste linje slik at den kaller en URL til HS sitt JSON-API i stedet. Siter
JohnMartin Skrevet 15. april 2019 Forfatter Skrevet 15. april 2019 21 hours ago, ZoRaC said: Det er relativt kurant, tror jeg. Du kan bruke scriptet i Python og bare endre siste linje slik at den kaller en URL til HS sitt JSON-API i stedet. Det hørtes jo veldig ekkelt ut ? Er det egen plugin for Python script, eller kjøres det lokalt på maskina/server? Helt grønn på slikt ? Må se om jeg får lest meg litt opp hvis påskeroen kommer. Siter
ZoRaC Skrevet 15. april 2019 Skrevet 15. april 2019 43 minutter siden, JohnMartin skrev: Er det egen plugin for Python script, eller kjøres det lokalt på maskina/server? Nei, du må laste ned og installere Python 2.7 for Windows: https://www.python.org/downloads/windows/ Scriptet kan du trigge fra et event, noe lignende som dette: Så først lager du deg en device med gyldig range 0-10000 (e.l.) (må være "controllable, ikke "status only"). Selve scriptet ("ginlong.py") blir vel da noe sånt: #!/usr/bin/python import urllib, urllib2, hashlib from xml.etree import ElementTree as ET #config username = '' #your portal username password = '' #your portal password baseURL = 'http://www.ginlongmonitoring.com:10000' #base url stationid = '' #station id, get this via the station python script # example: Working base urls: # http://www.ginlongmonitoring.com:10000/ # http://www.omnikportal.com:10000/ # http://log.trannergy.com:10000/ # http://www.solarmanpv.com:10000/ #domoticz settings hs_host = 'localhost' hs_port = '80' hs_url = 'JSON' hs_ActualPower = '1234' #refid of new device m = hashlib.md5() m.update(password) #building url requestURL = baseURL+'/serverapi/?method=Login&username='+username+'&password='+m.hexdigest()+'&key=apitest&client=iPhone' #login call root = ET.parse(urllib.urlopen(requestURL)).getroot() token = root.find('token').text print 'Logged In: '+username #info url infoURL = baseURL+'/serverapi/?method=Data&username='+username+'&stationid='+stationid+'&token='+token+'&key=apitest' print 'Getting Info... ' #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) #logging values print 'TodayIncome: '+TodayIncome print 'ActualPower: '+ActualPower print 'etoday: '+etoday 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) stationid.py kjører du bare som det der for å finne "stationid". 1 Siter
JohnMartin Skrevet 15. april 2019 Forfatter Skrevet 15. april 2019 Takk skal du ha! Får det til å virke så enkelt ? Skal se hva jeg får til Siter
JohnMartin Skrevet 15. april 2019 Forfatter Skrevet 15. april 2019 Da har jeg fått testet litt, og er veldig fornøyd med meg selv for at jeg klarte å få det til ? Litt ihvertfall.. Jeg fikk til oppsettet med hs_ActualPower som du hadde listet opp, men når jeg skal prøve å oppdatere flere devices med de andre dataene, så får jeg bare Warning i HS loggen: Warning JSON controldevicebyvalue caused an error: Input string was not in a correct format. Har prøvd å kjøre det i samme script, men også i forskjellige script. #Homeseer settings hs_host = 'localhost' hs_port = '80' hs_url = 'JSON' hs_ActualPower = '183' #refid of new device hs_etoday = '191' #refid of new device hs_etotal = '192' m = hashlib.md5() m.update(password) #building url requestURL = baseURL+'/serverapi/?method=Login&username='+username+'&password='+m.hexdigest()+'&key=apitest&client=iPhone' #login call root = ET.parse(urllib.urlopen(requestURL)).getroot() token = root.find('token').text print 'Logged In: '+username #info url infoURL = baseURL+'/serverapi/?method=Data&username='+username+'&stationid='+stationid+'&token='+token+'&key=apitest' print 'Getting Info... ' #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) #logging values print 'TodayIncome: '+TodayIncome print 'ActualPower: '+ActualPower print 'etoday: '+etoday 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) Det første forsøket var jo ganske rett frem, men jeg klarer ikke å se hva som er feil med de to andre. Her er dataen so blir hentet: Er det punktum/komma som er problemet tro, siden det kun er ActualPower som fungerer Hvordan kan jeg evt fikse det? ? Siter
ZoRaC Skrevet 15. april 2019 Skrevet 15. april 2019 10 minutter siden, JohnMartin skrev: Er det punktum/komma som er problemet tro, siden det kun er ActualPower som fungerer Hvordan kan jeg evt fikse det? ? Vil tro det er årsaken ja. Kan nok enkelt fikses: https://www.tutorialspoint.com/python/string_replace.htm Siter
JohnMartin Skrevet 15. april 2019 Forfatter Skrevet 15. april 2019 Supert. Takk skal du ha!! Da ble det en ordning, og har personlig tatt et stort steg videre. Første gang jeg har lekt meg med script og det har blitt noe vettug ut av det(med god hjelp så klart ) Menne.. er det mulig å få disse verdiene som status på devicene? Slik de er nå så får jeg f.eks ikke opp verdiene i Homeseer Mobile. Vet ikke om det er mulig å bruke de i event, men det er det kanskje? OCD'n liker uansett ikke at det ser slik ut Siter
ZoRaC Skrevet 15. april 2019 Skrevet 15. april 2019 19 minutter siden, JohnMartin skrev: Menne.. er det mulig å få disse verdiene som status på devicene? Slik de er nå så får jeg f.eks ikke opp verdiene i Homeseer Mobile. Vet ikke om det er mulig å bruke de i event, men det er det kanskje? OCD'n liker uansett ikke at det ser slik ut Hvordan ser «status graphics» ut? Det er der du kan rette det opp. Verdiene kan fint brukes i events. Siter
JohnMartin Skrevet 16. april 2019 Forfatter Skrevet 16. april 2019 (endret) 11 hours ago, ZoRaC said: Hvordan ser «status graphics» ut? Det er der du kan rette det opp. Verdiene kan fint brukes i events. Alle ser slik ut: Endret 16. april 2019 av JohnMartin Siter
JohnMartin Skrevet 16. april 2019 Forfatter Skrevet 16. april 2019 2 minutes ago, ZoRaC said: Hva viser "advanced"-fanen? Siter
ZoRaC Skrevet 16. april 2019 Skrevet 16. april 2019 16 minutter siden, JohnMartin skrev: Du kan slette de to bildene og lage en "range graphic" med 0-10000 og bruke bildet som heter "spacer.gif" - det er et "usynlig" bilde. Siter
ZoRaC Skrevet 16. april 2019 Skrevet 16. april 2019 Akkurat nå, JohnMartin skrev: Men, står det nå da "Dim 5126%"? Siter
JohnMartin Skrevet 16. april 2019 Forfatter Skrevet 16. april 2019 Just now, ZoRaC said: Men, står det nå da "Dim 5126%"? Nei, Har passert 100, så nå viser den bare Unknown Siter
ZoRaC Skrevet 16. april 2019 Skrevet 16. april 2019 Akkurat nå, JohnMartin skrev: Nei, Har passert 100, så nå viser den bare Unknown Ok, tror alt det løser seg med å lage en "range graphic" på samme verdiene (0-10000). Siter
JohnMartin Skrevet 16. april 2019 Forfatter Skrevet 16. april 2019 2 minutes ago, ZoRaC said: Ok, tror alt det løser seg med å lage en "range graphic" på samme verdiene (0-10000). Eneste som endret seg da er at ikonet forsvant. Får fortsatt opp unknown og får ikke opp verdi på mobilen. ? Siter
ZoRaC Skrevet 16. april 2019 Skrevet 16. april 2019 Prøv å endre fra "control" til "both": 34 minutter siden, JohnMartin skrev: 1 Siter
JohnMartin Skrevet 16. april 2019 Forfatter Skrevet 16. april 2019 Takk for hjelpen! Nå er det være på stell! 2 Siter
JohnMartin Skrevet 26. april 2019 Forfatter Skrevet 26. april 2019 (endret) Gleden var kortvarig.. Får nå denne feilmeldingen når scriptet kjører: Traceback (most recent call last): File "C:\Users\XXXX\Desktop\solarmanpv - Copy.py", line 35, in <module> root = ET.parse(urllib.urlopen(requestURL)).getroot() File "C:\Python27\lib\urllib.py", line 87, in urlopen return opener.open(url) File "C:\Python27\lib\urllib.py", line 213, in open return getattr(self, name)(url) File "C:\Python27\lib\urllib.py", line 364, in open_http return self.http_error(url, fp, errcode, errmsg, headers) File "C:\Python27\lib\urllib.py", line 377, in http_error result = method(url, fp, errcode, errmsg, headers) File "C:\Python27\lib\urllib.py", line 642, in http_error_302 headers, data) File "C:\Python27\lib\urllib.py", line 669, in redirect_internal return self.open(newurl) File "C:\Python27\lib\urllib.py", line 213, in open return getattr(self, name)(url) File "C:\Python27\lib\urllib.py", line 350, in open_http h.endheaders(data) File "C:\Python27\lib\httplib.py", line 1038, in endheaders self._send_output(message_body) File "C:\Python27\lib\httplib.py", line 882, in _send_output self.send(msg) File "C:\Python27\lib\httplib.py", line 844, in send self.connect() File "C:\Python27\lib\httplib.py", line 821, in connect self.timeout, self.source_address) File "C:\Python27\lib\socket.py", line 575, in create_connection raise err IOError: [Errno socket error] [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond Noen som skjønner noe av dette? ?? Er det så "enkelt" at scriptet ikke får contact med target? At server er nede eller at de har sperret konto? Har lurt på om jeg kanskje har kjørt eventet litt for ofte, men vet ikke hvor krevende ett slikt kall er.. Endret 26. april 2019 av JohnMartin Siter
ZoRaC Skrevet 26. april 2019 Skrevet 26. april 2019 50 minutter siden, JohnMartin skrev: Er det så "enkelt" at scriptet ikke får contact med target? At server er nede eller at de har sperret konto? Har lurt på om jeg kanskje har kjørt eventet litt for ofte, men vet ikke hvor krevende ett slikt kall er.. Trolig serveren som er nede eller kontoen din som er sperret. Får du åpnet denne i nettleser? http://www.ginlongmonitoring.com:10000 Siter
JohnMartin Skrevet 13. september 2019 Forfatter Skrevet 13. september 2019 On 26/04/2019 at 10:31, ZoRaC said: Trolig serveren som er nede eller kontoen din som er sperret. Får du åpnet denne i nettleser? http://www.ginlongmonitoring.com:10000 Var serveren som var/er ustabil, ja. Men må nesten spørre om litt mer hjelp. Scriptet har fungert fint, men etter at jeg flyttet HS3 over på ny server, så får jeg "feil" verdi på en av devicene. Scriptet henter ned 15.60, men i Homeseer, så vises det som 1561 Usikker på hvorfor dette skjedde sånn plutselig. Er det noe enkel måte å fikse det på? Dele verdien på 100 eller noe? ? Siter
ZoRaC Skrevet 13. september 2019 Skrevet 13. september 2019 Kan det være forskjellig desimaltegn på gammel og ny server? 1 Siter
JohnMartin Skrevet 13. september 2019 Forfatter Skrevet 13. september 2019 (endret) 15 minutes ago, ZoRaC said: Kan det være forskjellig desimaltegn på gammel og ny server? Du er ikke så dum du altså! Gamle var på Norsk/bokmål og den nye hadde Britisk. Når jeg endret det, så ble det rett. Takk ? Endret 13. september 2019 av JohnMartin Siter
Anbefalte innlegg
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.