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

Domoticz script i Homeseer


Anbefalte innlegg

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? :)

 

Lenke til kommentar
Del på andre sider

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. :) 

Lenke til kommentar
Del på andre sider

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.

Lenke til kommentar
Del på andre sider

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:

image.png.c33e6bac42001dc5558049cafa021215.png

 

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".

  • Like 1
Lenke til kommentar
Del på andre sider

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:
image.png.49aa4fce86730b7bc670fa205bfde94c.png

 

Er det punktum/komma som er problemet tro, siden det kun er ActualPower som fungerer

Hvordan kan jeg evt fikse det? ?

Lenke til kommentar
Del på andre sider

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?

image.thumb.png.fb9c59fa102a0aa2b4a60412080e89fc.png
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 :)


 

Lenke til kommentar
Del på andre sider

19 minutter siden, JohnMartin skrev:

Menne.. er det mulig å få disse verdiene som status på devicene?

image.thumb.png.fb9c59fa102a0aa2b4a60412080e89fc.png
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. :) 

Lenke til kommentar
Del på andre sider

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. ?

Lenke til kommentar
Del på andre sider

  • 2 uker senere...

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 av JohnMartin
Lenke til kommentar
Del på andre sider

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

Lenke til kommentar
Del på andre sider

  • 4 måneder senere...
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

 

image.png.1e8e8711f153ad15ef9eef095e0c53d4.png

 

image.png.9f8d9e8cbee4cbd7097b91fafbfd9ec9.png

 

Usikker på hvorfor dette skjedde sånn plutselig.

Er det noe enkel måte å fikse det på?

Dele verdien på 100 eller noe? ? 

 

Lenke til kommentar
Del på andre sider

 

15 minutes ago, ZoRaC said:

Kan det være forskjellig desimaltegn på gammel og ny server?

 

Du er ikke så dum du altså! :D

Gamle var på Norsk/bokmål og den nye hadde Britisk.

Når jeg endret det, så ble det rett.

 

Takk ?

Endret av JohnMartin
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.