Interface > Interface til varme systemer

V7/V13 UDP protocol client in python

<< < (2/11) > >>

g82:
Looks nice, I could not get the client to work though.
My firmware is currently v7.0522, but I dont think it got sofar as to actually talk to it.


--- Kode: ---C:\Users\MORA\Downloads\nbetest-master>gui.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Particle\Tools\Python27\lib\lib-tk\Tkinter.py", line 1536, in __call_
_
    return self.func(*args)
  File "C:\Users\MORA\Downloads\nbetest-master\gui.py", line 87, in OnButtonClic
k
    self.OnPressEnter(None)
  File "C:\Users\MORA\Downloads\nbetest-master\gui.py", line 96, in OnPressEnter

    self.text.insert(Tkinter.END, '\n'.join(self.proxy.get(path))+'\n\n')
  File "C:\Particle\Tools\Python27\lib\lib-tk\Tkinter.py", line 1898, in __getat
tr__
    return getattr(self.tk, attr)
AttributeError: proxy

C:\Users\MORA\Downloads\nbetest-master>client.py -n 1 boiler.*
usage: client.py [-h] [-v] [-a ADDRESS] [-p PASSWORD] [-n] {raw,set,get} ...
client.py: error: invalid choice: '1' (choose from 'raw', 'set', 'get')

C:\Users\MORA\Downloads\nbetest-master>client.py -n get 1 boiler.*
usage: client.py [-h] [-v] [-a ADDRESS] [-p PASSWORD] [-n] {raw,set,get} ...
client.py: error: unrecognized arguments: boiler.*

C:\Users\MORA\Downloads\nbetest-master>client.py -n get 1
Traceback (most recent call last):
  File "C:\Users\MORA\Downloads\nbetest-master\client.py", line 61, in <module>
    proxy = Proxy.discover(args.password, PORT, seqnums = not args.noseqnum)
  File "C:\Users\MORA\Downloads\nbetest-master\protocol.py", line 232, in discov
er
    return cls(password, port, addr='<broadcast>', seqnums=seqnums)
  File "C:\Users\MORA\Downloads\nbetest-master\protocol.py", line 146, in __init
__
    data, server = self.s.recvfrom(4096)
socket.timeout: timed out

C:\Users\MORA\Downloads\nbetest-master>




--- afslutning på kode ---

motoz:
You need at least 7.0612, I don't think there is any UDP protocol support at all in 7.0522. With 7.0612 it should work without sequence numbers, and above that with sequence numbers. The error exceptions are not handled at all in the test client, so when it does not work it just errors out as you noticed. Cool that you are testing it.

g82:
Updates to v7.0612 today, but what is the correct command to get some data from it?
The python scripts to fail too fast for it to be actual network exchange with a host it needs to detect first.

motoz:
With 7.0612 you have to add the option --noseqnum to the command line, eg:

--- Kode: ---python client.py --noseqnum get
--- afslutning på kode ---
returns:

--- Kode: ---settings/
operating_data/
advanced_data/
consumption_data/
event_log/
sw_versions/
info/

--- afslutning på kode ---

and

--- Kode: ---python client.py --noseqnum get settings
--- afslutning på kode ---
return:
settings/boiler/
settings/hot_water/
settings/regulation/
settings/weather/
settings/oxygen/
settings/cleaning/
settings/hopper/
settings/fan/
settings/auger/
settings/ignition/
settings/pump/
settings/sun/
settings/vacuum/
settings/misc/
settings/alarm/
settings/manual/
settings/bbq_smoke/
settings/bbq_rotation/
settings/bbq_grill/
settings/bbq_meat/
settings/bbq_afterburner/
settings/bbq_div/

and
--- Kode: ---python client.py --noseqnum get settings/boiler
--- afslutning på kode ---

returns:
settings/boiler/temp=62
settings/boiler/diff_over=10
settings/boiler/diff_under=5
settings/boiler/reduction=10
settings/boiler/ext_stop_temp=0.0
settings/boiler/ext_stop_diff=1.0
settings/boiler/ext_switch=0
settings/boiler/ext_off_delay=1
settings/boiler/ext_on_delay=1
settings/boiler/timer=0
settings/boiler/monday=000000000000
settings/boiler/tuesday=000000000000
settings/boiler/wednesday=000000000000
settings/boiler/thursday=000000000000
settings/boiler/friday=000000000000
settings/boiler/saturday=000000000000
settings/boiler/sunday=000000000000


--- Kode: ---python client.py --noseqnum get settings/boiler/temp
--- afslutning på kode ---
returns only the temperature, and so on.

In the gui program you can type eg. 'get settings/boiler' in the input field and click the 'run command' button. The 'seqnums' checkbox need to be unselected on 7.0612

This is only for testing the protocol so far (which probably isn't still final), so it's not that useful yet but something to play with.

g82:
Very nice and fast O0


--- Kode: ---C:\Users\MORA\Downloads\nbetest-master>client.py --noseqnum get
settings/
operating_data/
advanced_data/
consumption_data/
event_log/
sw_versions/
info/

C:\Users\MORA\Downloads\nbetest-master>client.py --noseqnum get settings
settings/boiler/
settings/hot_water/
settings/regulation/
settings/weather/
settings/oxygen/
settings/cleaning/
settings/hopper/
settings/fan/
settings/auger/
settings/ignition/
settings/pump/
settings/sun/
settings/vacuum/
settings/misc/
settings/alarm/
settings/manual/
settings/bbq_smoke/
settings/bbq_rotation/
settings/bbq_grill/
settings/bbq_meat/
settings/bbq_afterburner/
settings/bbq_div/

C:\Users\MORA\Downloads\nbetest-master>client.py --noseqnum get settings/boiler
settings/boiler/temp=70
settings/boiler/diff_over=15
settings/boiler/diff_under=10
settings/boiler/reduction=10
settings/boiler/ext_stop_temp=0.0
settings/boiler/ext_stop_diff=1.0
settings/boiler/ext_switch=0
settings/boiler/ext_off_delay=1
settings/boiler/ext_on_delay=0
settings/boiler/timer=0
settings/boiler/monday=220000000002
settings/boiler/tuesday=220000000002
settings/boiler/wednesday=220000000002
settings/boiler/thursday=220000000002
settings/boiler/friday=220000000002
settings/boiler/saturday=220000000002
settings/boiler/sunday=220000000002

C:\Users\MORA\Downloads\nbetest-master>client.py --noseqnum get settings/boiler
temp
70

C:\Users\MORA\Downloads\nbetest-master>client.py --noseqnum get operating_data
operating_data/time=22160
operating_data/boiler_temp=75.9
operating_data/smoke_temp=104.9
operating_data/return_temp=64.5
operating_data/dhw_temp=999.9
operating_data/external_temp=999.9
operating_data/forward_temp=999.9
operating_data/t7_temp=999.9
operating_data/distance=0
operating_data/photo_level=100
operating_data/shaft_temp=42.9
operating_data/milli_ampere=295
operating_data/oxygen=18.9
operating_data/flow1=0
operating_data/flow2=0
operating_data/flow3=0
operating_data/flow4=0
operating_data/power_pct=34
operating_data/power_kw=5.4
operating_data/oxygen_ref=20.9
operating_data/boiler_ref=70.0
operating_data/mean_out_temp=-0.7
operating_data/dhw_ref=0.0
operating_data/forward_ref=0.0
operating_data/sun2_temp=999.9
operating_data/sun_dhw_temp=999.9
operating_data/sun_surplus_temp=999.9
operating_data/air_flow=0
operating_data/content=54
operating_data/state=5
operating_data/substate=0
operating_data/boiler_pump_state=1
operating_data/dhw_valve_state=0
operating_data/house_pump_state=0
operating_data/house_valve_state=0
operating_data/sun_pump_state=0
operating_data/sun_surplus_state=0
operating_data/sun_power_kw=0.0
operating_data/chill_out=-0.7
operating_data/feed_low=4.20
operating_data/feed_medium=21.0
operating_data/feed_high=42.0
operating_data/internet_uptime=100
operating_data/off_on_alarm=1
operating_data/contact1=1
operating_data/contact2=0
operating_data/download_progress=1
operating_data/substate_sec=1
operating_data/corr_low=100.00
operating_data/corr_medium=100.00
operating_data/corr_high=100.00
operating_data/ash_clean=13.4
operating_data/compressor_clean=0.0
operating_data/fan_speed=12
operating_data/exhaust_speed=47
operating_data/output_std=20
operating_data/output_ext=0
operating_data/output_wireless=0
operating_data/city=Tyrsted
operating_data/humidity=92
operating_data/air_pressure=1001
operating_data/wind_speed=1.50
operating_data/wind_direction=30
operating_data/clouds=80
operating_data/outdoor_temp=-2.00

C:\Users\MORA\Downloads\nbetest-master>client.py --noseqnum get operating_data/boiler_temp
75.9


--- afslutning på kode ---

Image shows a Particle Photon subscribed to boiler temp updates from your python script via bash enabling 5second temperature updates :)

Navigering

[0] Emneindeks

[#] Næste side

[*] Forrige side

Skift til fuld version