Hallo zusammen,
ich habe ein kleines Problem,
mit dem Aufruf im Internet-Browser (Firefox,Crome...) http://192.168.200.50/xy sende diese Seite alle 500ms einen Datensatz. Die Sätze sind unterschiedlich und werden solange gesendet bis der Browser geschlossen wird.
Ich möchte die einzelnen Datensätze in eine Variable speichern und "verarbeiten".
Welche Möglichkeiten gibt es dafür?
LG
Sahip
Hier eine paar Beispiele der Datensätze:
id: 522397501
event: settings
data: {"cmin":2.7,"cmax":3.7,"tmax":60,"bvol":3.7,"bmin":3.5,"tbal":55,"tmin":-20,"capa":495,"char":3.65,"ioff":0,"chis":0.05,"razl":0.1,"maxh":0.05,"minh":0.1,"bmth":5,"ioja":0.003906,"soch":0.05,"chcu":1,"chac":0.6,"dchc":1.5,"maxc":140,"maxd":140,"clow":2.9,"socs":0.88397,"cycl":29,"chem":3,"err":{"p":0,"num":0},"nnc":{"bms":1,"cell":1},"vnc":{"bms":1,"cell":16},"toor":{"bms":1,"cell":1},"baud":{"lcd":56000,"com":56000},"bms_name":"1Q-2254","addr":32,"tunit":0,"Ah":58,"cur":-3.287109,"new_log_every_midnight":false,"out":true}
id: 522397507
event: status
data: {"bms_array":{"master":{"time_remaining":"Empty in:<br> 128 h 09 min","st_naprav":1,"time":"","date":"","mincell":3.309,"maxcell":3.3138,"ibat":-3.287109,"tmax":22,"vbat":52.98978,"soc":0.883953,"soh":0.9971,"erro":{"present":0,"addr":1,"st":0,"con_st":0},"error":""},"slave":{"0":{"address":1,"st_temp":3,"temp_bms":21.91656,"st_celic":16,"temp":{"0":22,"1":20.5,"2":21},"res":{"0":0.000868,"1":0.000531,"2":0.000385,"3":0.000473,"4":0.000352,"5":0.000411,"6":0.000499,"7":0.000547,"8":0.000466,"9":0.000355,"10":0.000453,"11":0.000331,"12":0.00048,"13":0.000439,"14":0.000439,"15":0.000609},"nap":{"0":3.309,"1":3.30912,"2":3.31244,"3":3.31236,"4":3.31268,"5":3.3126,"6":3.30992,"7":3.31284,"8":3.31016,"9":3.31308,"10":3.3134,"11":3.31332,"12":3.31064,"13":3.31356,"14":3.31088,"15":3.3138}}}}}
id: 522398919
event: settings
data: {"cmin":2.7,"cmax":3.7,"tmax":60,"bvol":3.7,"bmin":3.5,"tbal":55,"tmin":-20,"capa":495,"char":3.65,"chis":0.05,"razl":0.1,"maxh":0.05,"minh":0.1,"bmth":5,"ioja":0.003906,"soch":0.05,"chcu":1,"chac":0.6,"dchc":1.5,"maxc":140,"maxd":140,"clow":2.9,"socs":0.88395,"cycl":29,"chem":3,"err":{"p":0,"num":0},"nnc":{"bms":1,"cell":3},"vnc":{"bms":1,"cell":13},"toor":{"bms":1,"cell":1},"baud":{"lcd":56000,"com":56000},"bms_name":"1Q-2254","addr":32,"tunit":0,"Ah":58,"cur":-3.398438,"new_log_every_midnight":false,"out":true}
id: 522398925
event: status
data: {"bms_array":{"master":{"time_remaining":"Empty in:<br> 128 h 09 min","st_naprav":1,"time":"","date":"","mincell":3.30944,"maxcell":3.31364,"ibat":-3.398438,"tmax":22,"vbat":52.99278,"soc":0.88395,"soh":0.9971,"erro":{"present":0,"addr":1,"st":0,"con_st":0},"error":""},"slave":{"0":{"address":1,"st_temp":3,"temp_bms":21.91656,"st_celic":16,"temp":{"0":22,"1":20,"2":21},"res":{"0":0.000868,"1":0.000531,"2":0.000385,"3":0.000473,"4":0.000352,"5":0.000411,"6":0.000499,"7":0.000547,"8":0.000466,"9":0.000355,"10":0.000453,"11":0.000331,"12":0.00048,"13":0.000439,"14":0.000439,"15":0.000609},"nap":{"0":3.312,"1":3.31212,"2":3.30944,"3":3.31236,"4":3.31268,"5":3.3126,"6":3.31292,"7":3.31284,"8":3.31016,"9":3.31308,"10":3.3134,"11":3.31332,"12":3.31364,"13":3.31056,"14":3.31088,"15":3.3108}}}}}
Web-Site sendet alle 500ms einen Datensatz...
Man nimmt requests, setzt stream=True und liest die Daten dann Zeilenweise ein. Dann verarbeitet man die Daten, was auch immer das bei Dir dann bedeutet:
Code: Alles auswählen
import json
import requests
URL = "http://192.168.200.50/xy"
response = requests.get(URL, stream=True)
response.raise_for_status()
for line in response.iter_lines():
type, _, data = line.partition(":")
if type == "event":
...
elif type == "data":
data = json.loads(data)
...