Ребренд Мониторинг Орбита -> Железный Егорин; accent green->amber #F59E0B; LoginScreen правая половина = Lightning (WebGL, hue 35 тёплый) под стеклянной формой; левая панель — тёплый градиент. Доступ агентам: репо публичный, push german-токеном. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
#!/usr/bin/env python3
|
||
# Мини raw-MQTT subscriber: коннект к брокеру, SUBSCRIBE guard/#, ждём 1 PUBLISH.
|
||
import socket, struct, sys, time
|
||
|
||
HOST, PORT = "10.50.0.48", 1883
|
||
TOPIC = "guard/#"
|
||
|
||
def rl(n):
|
||
o=bytearray()
|
||
while True:
|
||
b=n%128; n//=128
|
||
if n>0: b|=0x80
|
||
o.append(b)
|
||
if n==0: break
|
||
return bytes(o)
|
||
def s(x):
|
||
b=x.encode(); return struct.pack("!H",len(b))+b
|
||
|
||
sock=socket.create_connection((HOST,PORT),timeout=8)
|
||
# CONNECT
|
||
body=s("MQTT")+bytes([0x04,0x02])+struct.pack("!H",60)+s("pcn-subtest")
|
||
sock.sendall(bytes([0x10])+rl(len(body))+body)
|
||
ca=sock.recv(4)
|
||
assert ca[0]==0x20 and ca[3]==0x00, ("CONNACK",ca)
|
||
# SUBSCRIBE (packet id 1, qos0)
|
||
sb=struct.pack("!H",1)+s(TOPIC)+bytes([0x00])
|
||
sock.sendall(bytes([0x82])+rl(len(sb))+sb)
|
||
# SUBACK
|
||
sock.recv(5)
|
||
print("SUBSCRIBED", flush=True)
|
||
# ждём PUBLISH до 12с
|
||
sock.settimeout(12)
|
||
buf=b""
|
||
try:
|
||
data=sock.recv(4096)
|
||
print("GOT_FROM_BROKER:", repr(data[:300]))
|
||
except socket.timeout:
|
||
print("TIMEOUT_NO_MESSAGE")
|
||
sock.close()
|