Seite 1 von 1

Web-Site sendet alle 500ms einen Datensatz...

Verfasst: Montag 23. September 2024, 18:33
von Sahip
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}}}}}

Re: Web-Site sendet alle 500ms einen Datensatz...

Verfasst: Montag 23. September 2024, 22:11
von Sirius3
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)
        ...

Re: Web-Site sendet alle 500ms einen Datensatz...

Verfasst: Dienstag 24. September 2024, 19:10
von Sahip
Hallo Sirius3,

vielen Dank.

Das war die Lösung!

LG

Sahip