Waterstage sarjan webserver

  • Viestiketjun aloittaja Viestiketjun aloittaja Unelmavävy
  • Aloituspäivämäärä Aloituspäivämäärä
Vs: Waterstage sarjan webserver

OZW672 ollut käytössä muutaman viikon. Plant-kaavioita piirrelty ja datan keräys integroitu TaloLoggeriin. Tukea annetaan tarvittaessa. :-)
 
Vs: Waterstage sarjan webserver

Mielenkiintoista... miten pelittää

Miten toimii tuo siirta tuonne raspiin. hätäisesti katselin
mutta en huomannut että siinä olisi ftp:tä.

miten onnistuu tuo fujin säätö
 
Vs: Waterstage sarjan webserver

My.Ai.Hu sanoi:
Mielenkiintoista... miten pelittää

Miten toimii tuo siirta tuonne raspiin. hätäisesti katselin
mutta en huomannut että siinä olisi ftp:tä.

miten onnistuu tuo fujin säätö

Toimii hyvin. Purkissa on samanlaiset käyttäjätasot kun pumpun kontrollerissakin eli ei tartte antaa pääsyä kaikkeen. Annetun tason mukaan voi sitten selailla pumpun parametrejä ja muuttaa niitä eli siis etähallinta onnistuu. Lisäksi voi tehdä kaavion systeemistään ja pudottelee siihen halutut valvottavat parametrit. Homma toimii niin että tehdään ensin prosessikuva ja se ladataan kaavioon taustakuvaksi, jonka päälle asetellaan datapisteet. Aiheesta löytyy hyvä manuaali. Ohessa kuva omasta ekasta tekeleestä.

Lisäksi purkissa on tollanen "vihervalvonta" mahdollisuus. Eli tietyt parametrit kun pysyy raja-arvoissa, pysyy lehti vihreänä. Samoin purkki hakee pumpun hälytykset ja lähettää emailina, jos mailit on konffattu toimintaan. Samoin tulee systeemiraportti halutulla taajuudella.

Jos sulla on TaloLoggerPi niin siinähän on smartweb moduli, jolla saa datat suoraan sisään. Vaihtoehtoisesti saa datan ulos JSON-muodossa webpurkista ihan standardeilla HTTP GET kutsuilla, esim wget:illä. Ainut haaste datankeruun integroinnissa on joka tapauksessa, että joutuu kaivamaan haluttujen datapisteiden ID:t selaimen työkalujen kanssa. Ne kun ei vastaa niitä pumpun kontrollerin parametrien rivinumerointia. Noi olen jo tosin selvittänyt mitä itse valitsin lokitukseen eli perimätietoa löytyy. Purkissa on FTP päällä mutta se on kait tarkoitettu Siemensin ACS790 softan kanssa käytettäväksi. Webtunnukset eivät toimi, eikä anonyymina pääse. En ole kysellyt tuon perään enempää kun TaloLogger toimii niin hyvin.

Tuo käy suoraan waterstageen ja kaikkiin pumppuihin missä on Siemensin Sigmagyr, Albatros ja Albatros2 sarjan kontrollerit. Extensan kontrollerin tarkka tyyppi on RVS21.827D/127.

Edit: Lisätty ominaisuuksia
 

Liitetiedostot

  • webserver.jpg
    webserver.jpg
    54,8 KB · Lukukerrat: 1 680
Vs: Waterstage sarjan webserver

Onkos tietoo mistä saisi halvimmalla .. itse löysin hieman alle 300.

Olikos tuossa mukana jokin softa jolla saa tehtyä noita plant kaavioita?? taustaa varten
 
Vs: Waterstage sarjan webserver

My.Ai.Hu sanoi:
Onkos tietoo mistä saisi halvimmalla .. itse löysin hieman alle 300.

Olikos tuossa mukana jokin softa jolla saa tehtyä noita plant kaavioita?? taustaa varten

Kyl se ton about 300 kustantaa ellei joltain löydy nurkista pyörimästä ylimääräistä. Se kaavion tausta on siis ihan vakio jpg tms kuva (en nyt muista kaikkia tuettuja formaatteja). Mikä tahansa softa millä voit piirrellä viivoja, lisätä kuvia yms käy. Itse piirsin ton Visiolla. Kuva uploadataan boxiin ja siihen sitten lätkitään datapisteet x/y-koordinaatein pixelin tarkuudella. Fonttia, tyyliä ja kokoa voi tietty säätää.
 
Vs: Waterstage sarjan webserver

Jos joku haluaa OZW672:sta käppyräy johonkin muuhun kuin talologgeriin niin tässä vähän koodia pohjalle:

read_heatpump.ini
Koodi:
[OZW672]
Ip = 10.10.10.10
UserName = Your_User_Name_In_OZW672
Passwd = Your_PassWord_In_OZW672

[PIDS]
#Pid in ozw672 = Name : Offical ID
1140 = Return temperature heat pump : 8410
1141 = Setpoint heat pump : 8411
1142 = Flow temp heat pump : 8412
1143 = Compressor modulation : 8413
1144 = Modulation electric flow : 8414

read_heatpump.py (Kaikki virhekäsitely puuttuu, lisään joskus jos jaksan)
Koodi:
import logging
import requests
import ConfigParser
import time
from time import gmtime, strftime

INIT_FILE = 'read_heatpump.ini'



def Get_configs():
        Config = ConfigParser.ConfigParser()
        Config.read(INIT_FILE)

        logging.debug( Config.sections() )
        logging.debug( Config.options('OZW672') )
        logging.debug( Config.options('PIDS') )
        return Config



def Get_config(Config, Section, Option):
        value = Config.get(Section, Option)
        if Section == 'PIDS':
                value = value.split(':')
                return {'Name':value[0].strip(), 'OffPID':value[1].strip()}
        return value.strip()




def www_login(IP, USER, PASSWD):
        requests.packages.urllib3.disable_warnings()
        result = requests.get( 'https://' + IP + '/main.app?user=' + USER + \
                '&pwd=' + PASSWD, verify=False)
        return result.cookies



def www_get_PID_value(IP, cookie, PID):
        result = requests.get('https://' + IP + '/ajax.app?service=getDp&plantItemId=' + PID , \
                verify=False, cookies=cookie)
        logging.debug(result.json())
        return result.json()['value'].strip()



# MAIN ########################################################
def main():
        # enable debugging
#       logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)

        Config = Get_configs()
        cookie = www_login(Get_config(Config, 'OZW672', 'Ip'), \
                Get_config(Config, 'OZW672', 'UserName'), \
                Get_config(Config, 'OZW672', 'Passwd'))

        while True:
                for PID in Config.options('PIDS'):
                        print strftime("%Y-%m-%d %H:%M:%S") + ' ' + \
                                Get_config(Config, 'PIDS', PID)['OffPID'] + ' ' + \
                                www_get_PID_value(Get_config(Config, 'OZW672', 'Ip'), \
                                cookie, PID) + '\t- ' + \
                                Get_config(Config, 'PIDS', PID)['Name']
                time.sleep(10)



if __name__ == "__main__":
    main()

Tulostus:
Koodi:
ion temp # python2.7 read_heatpump.py
2015-12-23 14:35:20 8410 39.5   - Return temperature heat pump
2015-12-23 14:35:21 8411 45.0   - Setpoint heat pump
2015-12-23 14:35:22 8412 44.9   - Flow temp heat pump
2015-12-23 14:35:23 8413 16     - Compressor modulation
2015-12-23 14:35:24 8414 0      - Modulation electric flow
 
Vs: Waterstage sarjan webserver

Tulipahan kokeiltus tuota PRELUDEN koodin pätkää
huonolla tuloksella

Mikähän tuossa mahtaa mättää
heitti seuraavan herjan

DEBUG:['OZW672', 'PIDS']
DEBUG:['ip', 'username', 'passwd']
DEBUG:['1140', '1141', '1142', '1143', '1144']
Traceback (most recent call last):
File "read_heatpump.py", line 70, in <module>
main()
File "read_heatpump.py", line 56, in main
Get_config(Config, 'OZW672', 'Passwd'))
File "read_heatpump.py", line 33, in www_login
requests.packages.urllib3.disable_warnings()
AttributeError: 'module' object has no attribute 'packages'
 
Vs: Waterstage sarjan webserver

Mikäs versio sinulla on requests modullista? Itse käytän 2.6.0:aa, jos vanhempi niin päivitä jos uudempi niin kerro niin minä päivitän ja fiksaan.
 
Vs: Waterstage sarjan webserver

prelude sanoi:
Mikäs versio sinulla on requests modullista? Itse käytän 2.6.0:aa, jos vanhempi niin päivitä jos uudempi niin kerro niin minä päivitän ja fiksaan.

Ei mitään käryä.
Mistä tuon pääsee tarkastamaan?
 
Vs: Waterstage sarjan webserver

No niin nyt versio 2.9.1
ja bugilista muuttui...


DEBUG:['OZW672', 'PIDS']
DEBUG:['ip', 'username', 'passwd']
DEBUG:['1140', '1141', '1142', '1143', '1144']
INFO:Starting new HTTPS connection (1): '192.168.0.6'
Traceback (most recent call last):
File "read_heatpump.py", line 70, in <module>
main()
File "read_heatpump.py", line 56, in main
Get_config(Config, 'OZW672', 'Passwd'))
File "read_heatpump.py", line 35, in www_login
'&pwd=' + PASSWD, verify=False)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 67, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 437, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host="'192.168.0.6'", port=443):
Max retries exceeded with url: /main.app?user=ZZZZZZ&pwd=XXXXX
(Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection
object at 0xb6bb606c>: Failed to establish a new connection: [Errno -2] Name or service not known',))
 
Vs: Waterstage sarjan webserver

My.Ai.Hu sanoi:
No niin nyt versio 2.9.1
ja bugilista muuttui...


DEBUG:['OZW672', 'PIDS']
DEBUG:['ip', 'username', 'passwd']
DEBUG:['1140', '1141', '1142', '1143', '1144']
INFO:Starting new HTTPS connection (1): '192.168.0.6'
Traceback (most recent call last):
File "read_heatpump.py", line 70, in <module>
main()
File "read_heatpump.py", line 56, in main
Get_config(Config, 'OZW672', 'Passwd'))
File "read_heatpump.py", line 35, in www_login
'&pwd=' + PASSWD, verify=False)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 67, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 437, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host="'192.168.0.6'", port=443):
Max retries exceeded with url: /main.app?user=ZZZZZZ&pwd=XXXXX
(Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection
object at 0xb6bb606c>: Failed to establish a new connection: [Errno -2] Name or service not known',))

Kannattaneeko tuohon heti https:llä yrittää.. ne systeemit ovat nykyään aika nipoja sen suhteen että kryptoalgoritmit ja protokollaversiot ovat turvallisia ja sertifikaatit täsmäävät siihen nimeen jolla kutsutaan. Nykymaailmassa https toimii muutenkin yhä harvemmin ip-osoitteen kanssa, pitää olla serttiin sopiva nimi tai lapaset lentää samantien.

requests-kirjaston pikkumaisuuden astetta en kyllä tunne.. että jos kummiskin vaikka laittaa sen https:n kutsuun vasta kun muu koodi pelaa.
 
Vs: Waterstage sarjan webserver

Kannattaa, koska boksi ei vastaa muihin kyselyihin. http puolessa näyttää olevan vain on kiinni vain redircti https puolelle. Ja krytoista olet oikeassa. Myös tässä boksissa on epäkelvot avaimet ja siksi "requests.packages.urllib3.disable_warnings()" on koodissa mukana.
 
Vs: Waterstage sarjan webserver

prelude sanoi:
Kannattaa, koska boksi ei vastaa muihin kyselyihin. http puolessa näyttää olevan vain on kiinni vain redircti https puolelle. Ja krytoista olet oikeassa. Myös tässä boksissa on epäkelvot avaimet ja siksi "requests.packages.urllib3.disable_warnings()" on koodissa mukana.

hmm.. mites Passing assert_hostname=False when creating a HTTPSConnectionPool will skip hostname verification for SSL connections. (Issue #194)
 
Vs: Waterstage sarjan webserver

Perjantaina tuli serveri ja hiukan päästy ihmettelemään.

Preluden koodi toimii ja löysin myös json tavan:
https://192.168.x.x/api/auth/login.json?user=user&pwd=Pass

Tämä antaa sessiokoodin jolla voi sitten lukea datapointteja:

esim:
Päivämäärä:
https://192.168.x.x/api/menutree/read_datapoint.json?SessionId=numerosarja&Id=7

Tälla saa kirjoitettua
https://192.168.178.42/api/menutree/write_datapoint.json?SessionId=$sid&Id=860&Type=Enumeration&Value=$val

Pitääkö kahlata kaikki numerot läpi ja päätellä mikä on mikäkin vai mistä sen tietää?
Tarvitsisin ainakin:
740 Flow temp min limitation heat circuit 1 41 °C
900 Operating mode changeover heating circuit 1 Suojauskäyttö

Näillä käytän pumppua päälle ja pois ja pyyntiä. Lisäksi ulkolämpötila on kiinteä 5 astetta ettei kiertovesipumppu pyöri koskaan turhaan. Alkoi meinaan kierrättelemään alle 4 asteen.

Tarkoitus oli tehdä ohjelma windowssille tai raspille että saisi automatisoitua mutta ongelmana tuo certien viallisuus. Ei tahdo ohittaa SSL ongelmaa kuten pythonissa. ???
 
Vs: Waterstage sarjan webserver

PID:n mappaamiseen itse käytin chromen development osiota ja katsoin sieltä oikeat mappaukset kun haluttua arvoa säädin/katsoin web gui:n puolelta.

Miten ohjelmointi kieli asiaan liittyy? curl & wget pystyvät kyllä moiseen (einakin ensim mainittu) ja noille löytyy kirjastot lähes joka kielestä. Samoin Win pyörittää pythonia ja RPi linux pohjaisena myöskin.
 
Vs: Waterstage sarjan webserver

OK sitä katsoin jo myös mutta sitten eksyin saksalaiselle foorumille missä tuo oli jo integroitu osaksi http://fhem.de/fhem.html Fhem kotiautomaatiota.
Olen tehnyt android ohjelmia B4A rapid platformilla. Samanmoisella B4J:llä saisin tehtyä windowssille klikkailtavan version kohtuullisella työllä paitsi että SSL tuottaa javalle jostain syystä nyt ongelmia. Tuo sinun python tai saksan foorumin perlkin toimisi mutta ne eivät ole niin tuttuja.
Serverin manuskassa on maininta että normaalin 80 portin saa käyttöön enabloimalla joten koitan uusiksi.
 
Vs: Waterstage sarjan webserver

Ei siittä täydellinen tullut mutta ajaa varaajaa jo termostaattina "käyttövesianturin" mukaan. Sain lähettämään json arvot myös openenergymonitoriin. Nyt pitää vaan miettiä mikä on edullisinta. Hyvin ainakin saa huilattua yön näillä keleillä.
 

Liitetiedostot

  • Screenshot_20170131-234851.jpg
    Screenshot_20170131-234851.jpg
    31,8 KB · Lukukerrat: 604
Vs: Waterstage sarjan webserver

Alkoi itseäkin kiinnostaa toi talologger pi ja Web server. Mitä kaikkea tuolta Web serveristä saa suoraan ulos ilman mitään 1-wire antureita?
 
Takaisin
Ylös Bottom