Железный Егорин — форк Орбиты: тёплый стиль (amber), логин с odyssey WebGL-молнией справа, энергомониторинг+панель
Ребренд Мониторинг Орбита -> Железный Егорин; accent green->amber #F59E0B; LoginScreen правая половина = Lightning (WebGL, hue 35 тёплый) под стеклянной формой; левая панель — тёплый градиент. Доступ агентам: репо публичный, push german-токеном. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user