Download Game! Currently 82 players and visitors. Last logged in:JuutasFimirKrypetDornier

Blitzer's Blog >> 71586

Back to blogs index
Posted: 29 Jul 2026 12:07 [ permalink ]
TC$mC$ on tC$ydellinen hetki pitC$C$ tauko koodauksesta ja piirtC$C$
arkkitehtuuri flC$ppitaululle. Kun vaatimuksena on **idempotenssi** (samasta
lC$htC6tilanteesta seuraa aina tismalleen sama lopputulos) ja
**varmatoimisuus**, asiat pitC$C$ suunnitella tarkasti.

Olet aivan oikeilla jC$ljillC$: Chromiumin ohjaus CDP:n (Chrome DevTools
Protocol / Debug-portin) kautta on teollinen standardi (RPA/Puppeteer/Playwrigh
t perustuvat tC$hC$n), ja se on ehdottomasti paras reitti.

TC$ssC$ on analyysi teknisistC$ vaihtoehdoista ja ehdotus kokonaisarkkitehtuuri
ksi, joka palvelee noita kaikkia tarpeitasi (ohjeet, AI-valvonta,
pelistriimit).

---

### Tekninen ratkaisu: MitenSelain ja OBS yhdistetC$C$n?

Sinulla on kC$ytC$nnC6ssC$ kaksi vaihtoehtoa, joista toinen on ylivoimaisesti
parempi robotisoinnin kannalta:

**Vaihtoehto 1: OBS:n sisC$C$nrakennettu "Browser Source" (Ei suositeltu
tC$hC$n)**

* *Miten toimii:* OBS renderC6i selaimen itse sisC$isellC$ CEF-moottorillaan.
* *Ongelma:* Vaikka voit antaa sille URL:n, sen ohjaaminen CDP:n kautta
(Debug-portilla) ulkopuolelta on C$C$rimmC$isen hankalaa ja rajoitettua.
Robotille ei jC$C$ kunnon "tarttumapintaa".

**Vaihtoehto 2: Erillinen hiekkalaatikoitu Chromium + OBS Window Capture
(Suositeltu!)**

* *Miten toimii:* KC$ynnistC$t isC$ntC$koneella oikean Chromium-ikkunan
erityisillC$ lipuilla: `--remote-debugging-port=9222 --incognito
--window-size=1920,1080 --app=http://hauki-obs:18080/`.
* *OBS:* OBS:ssC$ on valmis Skene, joka kC$yttC$C$ "Window Capturea"
(Linuxilla esim. Xcomposite) ja kaappaa vain ja ainoastaan tuon kyseisen
Chromium-ikkunan.
* *Miksi tC$mC$ voittaa:* Robottisi (oli se sitten Python, MeshBASIC tai
x-surgeon) voi ottaa lennosta kiinni porttiin 9222. Selaimella on puhdas
vC$limuisti (`--incognito` takaa idempotenssin), ja OBS toimii puhtaasti
"tyhmC$nC$ kamerana", joka ei sekaannu selaimen logiikkaan.

---

### Kokonaisarkkitehtuuri: "The Broadcast Mesh"

NC$in rakentaisimme vakaan kokonaisuuden, jota MeshBASIC pystyy johtamaan:

#### 1. Esivalmistellut Skenet (OBS Studio)

Rakennat OBS:C$C$n valmiiksi pari puhdasta SkeneC$ (Scene), joiden vC$lillC$
uusi API-palvelumme (`/api/scene/...`) voi vaihdella:

* **Scene: "M-GUI_TUTORIAL"** (Tapaustutkimus B): Kaappaa koko
Chromium-ikkunan. EhkC$ pieni firman logo ylC$kulmassa ja nC$tti taustakuva,
jos selain ei ole fullscreen.
* **Scene: "VGA_STREAM"** (Tapaustutkimus C): Kaappaa saman Chromium-ikkunan,
mutta OBS:n filttereillC$ rajattu (Crop) nC$yttC$mC$C$n *vain* M-GUIn
sisC$llC$ kelluva VIC-20 -canvas.

#### 2. KC$sikirjoituksen parametrisointi (URL Autorun)

Jotta saavutamme idempotenssin (toistettavuuden), M-GUIn pitC$isi osata avata
itsensC$ suoraan oikeaan tilaan, kun URL ladataan. Voimme myC6hemmin koodata
M_COREen tuen URL-parametreille.

* Esimerkki: `http://hauki-obs:18080/?autorun=sys_vic20&ws=3`
* NC$in robotti ei joudu "klikkailemaan" sovelluksia auki, vaan selain on
sekunnissa valmis streamattavaksi/nauhoitettavaksi.

#### 3. MeshBASIC: Orkestraattori (Director)

MeshBASIC on tC$ydellinen tyC6kalu tC$hC$n. Kuvitellaan miltC$
MeshBASIC-skripti nC$yttC$isi, kun Antti pyytC$C$ automaattista ohjevideota:

```basic
10 REM --- AUTOMAATTINEN CRM OHJEVIDEO ---
20 PRINT "1. Valmistellaan nC$yttC$mC6 (Puhdas Chromium)..."
30 SYSTEM "killall chromium; chromium --remote-debugging-port=9222 --incognito
--app=http://hauki-obs:18080/?autorun=sys_crm_card &"
40 SLEEP 3 : REM Odotetaan, ettC$ selain aukeaa

50 PRINT "2. KC$C$nnetC$C$n kamera (OBS) oikeaan skeneen..."
60 HTTP POST "http://localhost:10100/api/scene/M-GUI_TUTORIAL"
70 HTTP POST "http://localhost:10100/api/record/start"

80 PRINT "3. Asetetaan robotti tC6ihin (CDP/M-BUS)..."
90 REM TC$ssC$ lC$hetetC$C$n M-BUS/CDP kautta makro "Tee uusi asiakas"
100 CALL RUN_ROBOT("crm_opetus_makro.json")

110 PRINT "4. Makro valmis, katkaistaan nauhoitus!"
120 LET OUT_FILE = HTTP POST "http://localhost:10100/api/record/stop"
130 IRC SEND "#mesh", "Video valmis tiimille: " + OUT_FILE

```

### KC$yttC6tapausten ratkaisut (B & C)

**B. Ohjeistuksien tekeminen & AI-valvonta (Koko M-GUI)**
Kun haluat valvoa AI:n toimintaa tai tehdC$ opetusvideon, kC$ytC$t **Scene:
M-GUI_TUTORIAL**. Puhdas incognito-selain aukeaa, robotti yhdistC$C$
CDP-porttiin, M-BUSin Intent-moottori hoitaa hiiren hienovaraisen ja
inhimillisen raahauksen, ja OBS tallentaa koko komeuden levylle. Koska selain
on omassa hiekkalaatikossaan (ei sinun henkilC6kohtainen tyC6pC6ytC$si A),
salasanat tai omat sC$hkC6postisi eivC$t vahingossakaan vuoda videolle.

**C. Jupiter Lander / Viihdestriimi (VGA/M-RAM Canvas)**
TC$mC$ on se herkullisin. Jos koodaat MeshBASICilla Jupiter Landerin, joka
kirjoittaa ohjausdataa suoraan M-RAMin `VRAM`-puskuriin.
Robotti (MeshBASIC) kC$skee OBS:C$C$ vaihtamaan **Scene: VGA_STREAM**. OBS
zoomaa ja rajaa kuvan pelkkC$C$n pelikankaaseen. EhkC$ OBS:ssC$ on taustalla
hieno "Retro Arcade" -kehys? MeshBASIC voi silloin pyC6rittC$C$ peliC$
isC$ntC$koneella, ja OBS lC$hettC$C$ puhdasta pelikuvaa suorana Twitchiin tai
firman Slackiin.

### Yhteenveto & Suositus

Ehdotan, ettC$ kun palaat tauolta, lukitsemme tC$mC$n mallin: **KC$ytC$mme
tC$ysin erillistC$, scriptillC$ kC$ynnistettC$vC$C$ hiekkalaatikko-Chromiumia
(portti 9222), jota OBS "filmaa" Window Capturella, ja jota MeshBASIC
orkestroi.**

TC$mC$ on C$C$rimmC$isen kestC$vC$ ratkaisu. Voit vapaasti harrastaa ja
koodata M-GUIta muissa asioissa, mutta kun "LC$hetysstudio 100" herC$tetC$C$n
henkiin komennolla, se saa kC$yttC6C6nsC$ 100% neitseellisen ympC$ristC6n,
jolla on tC$ysi idempotenssi.

MiltC$ tC$mC$ konsepti tuoksuu tupakkatauon pC$C$tteeksi?