Broadcast vakon

 ( tovis | 2019. május 10., péntek - 15:50 )

Vad ötletem támadt.
Mi lenne ha a TCP/IP stack nélkül egy "bit sorozat" -ként döntenék be x db broadcast üzenetet, hogy shutdown van?
Viszonylag egyszerűen megvalósítható, az elterjedt TCP/IP chipek helyett, egyszerűen, a 10Mbit ethernetnek megfelelő sebességű sorozatot "injektálni" a LAN -ba. Mivel nincs mögötte protokoll (senki nem figyeli az ACK -ot) ha kell akár 3-6x is "kilőhetném". Talán, még az sem baj, ha szétdől a hálózat, hiszen a következő lépés, hogy lekapcsol az UPS és majd valamikor, ha helyreáll a hálózat visszakapcsol.

Feladat az lenne, hogy egy buta (APC Back UPS 600 DB9 csatlakozó de csak szinteket ad) jelzését kellene ráültetni a LAN -ra. POE kamerát bütykölök RPI -ből de az sem tűri ha csak úgy kirántod alóla a tápot.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

?
Raspberry PI vagy valami soros porttal rendelkező Mikrotik, ami értelmezi az UPS jeleit és hatására tud broadcastolni?

Pont ezt akarnám megspórolni. Valami egycsipes mcu és csomag "szimulátor".
Az RPI LAN interfésszel >9eFt és >1A (5W) villany.
Az mcu + W5100/W5500/ENC28J60 ck. 1W (ha kell ha nem).
Az mcu + ethernet csatlakozó és trafó (bontott) <0,1W és <500Ft.
Persze ha muszáj ...

* Én egy indián vagyok. Minden indián hazudik.

Amit leírtál azt pont lefedi az UDP protokoll.

Az UDP csomag már teljesen más szint. Amire én gondolok az a fizikai szint feletti első rész.

* Én egy indián vagyok. Minden indián hazudik.

"APC Back UPS 600 DB9 csatlakozó de csak szinteket ad"
Lehet csak megfelelo kabelt kellene szerezned hozza.

Van megfelelő kábelem, de ez nem soros kommunikáció, hanem csak rángat két lábat (maijn/accu ill. charge low).
Egyébként a soros sem igazán segít, a POE -be akkor is kell valami inteligens, ami ebből udp broadcastot csinál.

* Én egy indián vagyok. Minden indián hazudik.

Ha jól értem, egy broadcast üzenetben (melyet az UPS küldene ki a LAN-ra) minden eszközt shutdown-olni szeretnél, mielőtt elmegy az áram. Szerintem ez nem megvalósítható. A fordítottja esetleg (magic packet, wake-on-lan). De javítsatok ki, ha tévedek.

Meg lehet csinálni csak ha nem működik elsőre macerás az oszcilloszkóppal debugolás.
Itt egy megoldás is:
https://github.com/cnlohr/ethertiny

Na ez az amit kerestem. Akkor még sem hibbantam meg az ötletemmel.
Kár hogy a bit bang nem jutott az eszembe mint lehetséges kulcs szó :(
Nem mélyedtem még bele, első látásra ez kell nekem.
Szkóppal debugolni? - rutin feladat, bár etherneten nem próbáltam.
A tíz megabit még belefér a felszerelésem sávszélességébe.
Azt még nem értem miért nem rakott rá egy trafót - egy noname hálókártyából simán kinyerem.
Ha mondjuk STM32F030 -at használok akkor a mintavételi sebesség sem gond (48MHz órajel).
A broadcast megvalósítása már kicsit húzósabbnak tűnik, de lehet csak annyi, hogy IPv4 192.168.c.255 címre kell küldeni a csomagot. Így mindenki megkaphatja.
Nagyon köszönöm a linket!

* Én egy indián vagyok. Minden indián hazudik.

arduino + egy http szerver.
http szerver tartalmát a leállítandó szerverről olvasod cron-ból, ha azt kapja vissza hogy shutdown, akkor már állíthatja is le a gépet.

Kösz de nem ez lenne a cél.
A lényeg hogy minél egyszerűbben (értsd nem sok alkatrész) UDP csomagot küldhessek (ami lehet broadcast, hogy ne kellejen külön-külön mindenkinek elküldeni) ha ideje lekapcsolni.

* Én egy indián vagyok. Minden indián hazudik.

UDP csomag küldéséhez nem kell intelligencia, egy 8-bites mikrokontroller simán összerakja a csomagot, és beletolja egy Ethernet MAC-be (pl. ENC28J60-ba). Az IP címet veheted fixre, vagy írhatsz DHCP klienst, de ez már igazából a "minek" kategóriája... Annyiból jobb az UDP, mint random más Ethernet protokoll, hogy ehhez megvan az oprendszerekben a fogadáshoz minden, alkalmazásszinten láthatod a csomagot. Más protokoll esetén valami driverszerűséget is fog kelleni írni, ami azért szívás.

DB9 csatlakozó de csak szinteket ad
No, azt szokták egy soros portra rádugni. Itt látszik az öregember előnye: Még látott soros portot. ;)
Ha nincs soros port, akkor kell egy rs232 -> ttl vagy usb átalakító. Az ups-hez találsz szoftvert, vagy megírod annak a két bitnek a kezelését.

No megkaptam.
Házi körülmények között a nut -ot használom, ismeri a dumb UPS vezérlést soros porton át (valójában a handshake lábakat figyeli). USB átalakító nem hiszem hogy működne - vagy drivert kellene írni.
A terv, hogy a bit-bang LAN megoldást kombinálom azzal a tán két jelnek a figyelésével ami az UPS -ből kijön.

OFF: A fent említett típusú UPS -hez még kapcsolási rajzom is van. A hozzávaló kábelt szintén én gyártottam le - az interneten talált kapcsolás alapján. Minden alkatrésze elérhető, cserélhető így könnyen javítható. Van belőle 4 db :)
Sajnos a felügyelete - csatlakoztatása nagyon elavult. Remélem sikerül a felügyeltre kielégítő megoldást találnom (nem sok munkával és alkatrésszel), építenem. (Egyébként utoljára 5eFt ért vettem ilyet, a 12V/12Ah akkumulátor jóval drágább - a YUASA 6 évig simán működött)

* Én egy indián vagyok. Minden indián hazudik.

Még mindig nem értem.
Nincs hálózatra kötött számítógépszerű entitás - hálózati csatlakozóval - az UPS közelében?
Azaz a bitbang "hálózati stack" szükséges?

Az USB-serial egy jól definiált szabványos class. Biztos lehet rá drivert is írni, de valószínűleg ezt már sokan megtették. ;) Akkor meg csak a két láb állapotát kell néha lekérdezni.

Nem kevésbé lenne szabványos az sem, ha a tápot modulálnád. Ott is át lehet vonni bitsorozatot,
Vagy csak a tápot figyelnéd és helyileg állapítanád meg a megszűnését.

Mint az elején írtam, jelenleg az UPS közelében csak egy WR1043 router van Open Wrt -vel. Persze lehetne rá "taknyolni" valamit van USB és soros is.
Nem tetszik, de lehet ez lesz a megoldás.
A bit-bang UDP csomag sokkal érdekesebb és így az UPS is kocka lesz.

* Én egy indián vagyok. Minden indián hazudik.

Az a WR1043 + OpenWRT tökéletes a feladatra! Sokkal hamarabb lesz belőle működőképes és stabil megoldás, mint akár a bitbangelős, akár egy mikrokontroller + Eth MAC megoldásból.

Mindig az a játék! :-)
Így már érthető.
Pedig erre pont egy rs232-ttl szintillesztő ic kell csak. A két bites információ feldolgozásához meg kell egy horrorisztikus bonyolultságú "driver".

A baj az, hogy V1.x vagyis mindössze 32M RAM van és fut rajta az OpenVPN is, alig néhány mega RAM maradt :(
Ráadásul, így a router is azt UPS tartozéka? A WR1043 nem tudom meddig oldja meg az igényeket.

* Én egy indián vagyok. Minden indián hazudik.

Ha már RPi vagy Arduino akkor az végy az UPS jelét és csináljon belőle tcp jelet, értesítést.

RPI a jelenlegi felállásban akár 50m POE.

* Én egy indián vagyok. Minden indián hazudik.

Ha az a célod, hogy üzenettel leállíts host-ot/-okat, de pont azt nem tudod garantálni, hogy meg is kapja/ák az üzenetet, mire jó az egész?
Ha az a célod, hogy tudjad faék eszközzel DoS-olni a saját hálózatod, akkor jó helyen kutakodsz.

Valószínűleg nem egy banki hálózaton kezdenék tesztelni. (Még azt sem látom hogy tudnám ezt a szerkezetet tesztelni)

* Én egy indián vagyok. Minden indián hazudik.