Gå til innhold
  • Bli medlem
JohnMartin

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

 

Del dette innlegget


Lenke til innlegg
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. :) 

Del dette innlegget


Lenke til innlegg
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.

Del dette innlegget


Lenke til innlegg
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

Del dette innlegget


Lenke til innlegg
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? 🤔

Del dette innlegget


Lenke til innlegg
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 :)


 

Del dette innlegget


Lenke til innlegg
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. :) 

Del dette innlegget


Lenke til innlegg
Del på andre sider
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:
image.thumb.png.5b2b4611b973dce3fe4faf526d0734dd.png

Endret av JohnMartin

Del dette innlegget


Lenke til innlegg
Del på andre sider
16 minutter siden, JohnMartin skrev:

image.thumb.png.5b2b4611b973dce3fe4faf526d0734dd.png

 

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. 

Del dette innlegget


Lenke til innlegg
Del på andre sider
Akkurat nå, JohnMartin skrev:

 

Nei,

 

Har passert 100, så nå viser den bare Unknown

image.thumb.png.99706e4cf09d8f6259d39250fef4f665.png

 

Ok, tror alt det løser seg med å lage en "range graphic" på samme verdiene (0-10000). :) 

Del dette innlegget


Lenke til innlegg
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. 🤔

Del dette innlegget


Lenke til innlegg
Del på andre sider

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå

×