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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sahip
User
Beiträge: 3
Registriert: Montag 23. September 2024, 18:19

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}}}}}
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

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)
        ...
Sahip
User
Beiträge: 3
Registriert: Montag 23. September 2024, 18:19

Hallo Sirius3,

vielen Dank.

Das war die Lösung!

LG

Sahip
Antworten