TCP/IP Trigger
TCP/IP Trigger kuuntelee rivinvaihdolla erotettuja JSON-pyyntöjä asiakkaalta ja pyytää avattuja sovellustoimintoja. Se on suunniteltu paikalliseen automaatioon, luotettavan LAN-automaation ja kehityksen validointiin. Se sitoo oletuksena silmukkaan ja vaatii tokenin ennen kuin se hyväksyy minkään komennon.
ControlMyNikonille nykyiset avatut toiminto-id:t ovat CameraShoot, CameraToggleConnection ja CameraAutoFocus. Muita sovellustoimintoja ei ole saatavilla TCP/IP Triggerille, ellei myöhempi versio niitä erikseen avaa.
Ennen kuin aloitat
- Käytä TCP/IP Triggeriä vain asiakkaiden kanssa, joita hallitset.
- Pidä sitomisosoite 127.0.0.1 skripteille, jotka suoritetaan samalla tietokoneella.
- Käytä LAN IPv4 -osoitetta vain luotettavalla yksityisverkolla.
- Pidä toiminnot pois päältä, kun testaat yhteyttä ja tokenia.
- Ota toiminnot käyttöön vain, kun pyyntöpolku on todistettu.
- Uudelleenluo token, jos se on jaettu asiakkaalle, jota et enää luota.
TCP/IP Trigger käyttää selkokielistä JSON:ia ja bearer-tokenia. Älä altista sitä reitittimen porttiohjauksen, julkisen Wi-Fi:n, luottamattomien VPN:ien tai internetiin suuntautuvien palomuurisääntöjen kautta. Käytä HTML Triggeriä, kun haluat puhelimen selaussivun, jossa on suuret toimintopainikkeet skriptin tai mukautetun TCP/IP-asiakkaan sijaan. UDP Triggeriä ei ole suunniteltu.
Sivun ohjaimet
- Aloita alkaa kuunnella määritettyä silmukkaosoitetta ja porttia.
- Pysäytä lopettaa kuuntelijan ja vapauttaa portin.
- Sitomisosoite asettaa paikallisen osoitteen, jota kuunnellaan.
- Käytä 127.0.0.1 samaa tietokonetta varten.
- Käytä IPv4-osoitetta, joka on määritetty tälle tietokoneelle luotettaville LAN-asiakkaille.
- Wildcard-osoitteita, kuten 0.0.0.0, ei tueta.
- Portti asettaa TCP-portin.
- Toiminnot käytössä sallii hyväksyttyjen toimintopyyntöjen suorittaa avattuja toimintoja.
- Toiminnot pois päältä antavat sinun testata komentoja ilman toimintojen suorittamista.
- Token näyttää vaaditun pyyntötokenin.
- Kopioi token asettaa tokenin leikepöydälle.
- Uudelleenluo token luo uuden tokenin ja mitätöi vanhan.
- Tapahtumahistoria alkaa tällä hetkellä TCP/IP Triggerille avatuista toimintoid:stä, sitten näyttää kuuntelijan tilan, hyväksytyt komennot, hylätyt komennot ja pyydetyt toiminnot.
Jos TCP/IP Trigger kuuntelee, kun nykyinen profiili tallennetaan tai sovellus suljetaan, tämä profiili käynnistää kuuntelijan uudelleen seuraavalla kerralla. Jos tallennettu osoite ei enää ole määritetty tälle tietokoneelle tai portti on varattu, käynnistys jatkuu TCP/IP Trigger pysäytettynä ja tapahtumahistoria selittää epäonnistumisen.
Komentomuoto
Asiakkaat lähettävät yhden JSON-objektin per rivi. Kuuntelija palauttaa yhden JSON-vastauksen per rivi.
Perus toimintopyynnön muoto on:
{"token":"your-token","command":"action","action":"CameraShoot"}
Onnistunut vastaus näyttää tältä:
{"ok":true,"message":"Action requested.","action":"CameraShoot","actions":null,"error":null}
Hylätty vastaus sisältää vakaan virhekoodin:
{"ok":false,"error":"InvalidToken","message":"Token is invalid.","action":null,"actions":null}
Ensimmäiset komennot ovat:
- toiminto pyytää avattua toimintoa.
- ping vahvistaa, että kuuntelija ja token toimivat.
- toiminnot palauttaa toimintoid:t, jotka tällä hetkellä ovat avattuja TCP/IP Triggerille.
Python-testiasiakas
Tämä skripti käyttää vain Pythonin standardikirjastoa. Aloita TCP/IP Trigger ensin, liitä sitten token sivulta TOKEN:iin. Jätä SEND_ACTION arvoksi False, kun Toiminnot pois päältä on päällä. Aseta SEND_ACTION arvoksi True vasta sen jälkeen, kun ping ja toiminnot toimivat ja Toiminnot käytössä on päällä. Kopio tästä skriptistä tallennetaan lähdekoodipuuhun osoitteeseen Shared\Common\Triggers\pyscripts\tcpip_trigger_test_client.py. Visual Studiossa avaa Shared\Common\Triggers\pyscripts\TcpIpTriggerPythonClient.sln.
import json
import socket
HOST = "127.0.0.1"
PORT = 50505
TOKEN = "paste-token-from-page"
SEND_ACTION = False
ACTION_ID = "CameraShoot"
def send_command(command):
line = json.dumps(command, separators=(",", ":")) + "\n"
with socket.create_connection((HOST, PORT), timeout=5) as sock:
sock.sendall(line.encode("utf-8"))
response = sock.makefile("r", encoding="utf-8", newline="\n").readline()
return json.loads(response)
print("ping:", send_command({
"token": TOKEN,
"command": "ping"
}))
print("actions:", send_command({
"token": TOKEN,
"command": "actions"
}))
if SEND_ACTION:
print("action:", send_command({
"token": TOKEN,
"command": "action",
"action": ACTION_ID
}))
Turvallisuus
TCP/IP Trigger voi pyytää sovellustoimintoja ilman paikallista näppäimistöä, skanneria, ääntä tai äänisyöttöä. Tämän vuoksi se käynnistyy pois päältä, sitoo oletuksena silmukkaan ja vaatii tokenin jopa silmukassa.
Toiminnot pois päältä estää toimintojen lähettämisen, mutta antaa silti sinun validoida JSON:ia, tokenin käsittelyä ja peruskomentovastauksia. Käytä sitä, kun rakennat tai testaat asiakasta.
LAN-sitominen on vain luotettavan LAN:n hallintaa. Kuka tahansa, joka voi yhdistää kuuntelijaan ja tietää tokenin, voi pyytää avattuja toimintoja, kun Toiminnot käytössä on päällä. Pidä token yksityisenä ja uudelleenluo se sen jälkeen, kun olet jakanut sen väliaikaisten skriptien tai asiakkaiden kanssa.
Vianetsintä
Jos Aloita on pois päältä:
- Tarkista, että portti on välillä 1 ja 65535.
- Varmista, että token ei ole tyhjää.
- Pysäytä kaikki aiemmat kuuntelijatilan ennen portin muuttamista.
Jos Aloita epäonnistuu:
- Toinen prosessi saattaa jo käyttää porttia.
- Valitse toinen portti ja yritä uudelleen.
- Tarkista tapahtumahistoria epäonnistumisviestin varalta.
Jos asiakas ei voi yhdistää:
- Varmista, että TCP/IP Trigger on käynnistetty.
- Varmista, että asiakas yhdistää näytettyyn sitomisosoitteeseen ja porttiin.
- Saman tietokoneen skripteille käytä 127.0.0.1.
- Toiselle LAN-laitteelle käytä tietokoneen LAN IPv4 -osoitetta ja varmista, että Windowsin palomuuri tai päätepisteen työkalut sallivat saapuvan yhteyden.
- Varmista, että sitomisosoite on määritetty tälle tietokoneelle.
Jos pyyntö hylätään:
- Varmista, että pyyntö on yksi JSON-objekti yhdellä rivillä.
- Varmista, että token vastaa tarkasti sivulla olevaa tokenia.
- Varmista, että komento on action, ping tai actions.
- Varmista, että pyydetty toiminto on yksi toimintoid:stä, jotka actions-komento näyttää, kuten CameraShoot.
- Ota Toiminnot käyttöön ennen kuin odotat toimintopyyntöjen suorittamista.
Python- tai PowerShell-asiakkaan kehittämisessä seuraa tapahtumahistoriaa testauksen aikana. Se kirjaa asiakasyhteyden ja -katkaisun tapahtumat, hyväksytyt ping- ja actions-komennot, hylätyt JSON:t, puuttuvat tai virheelliset tokenit, tuntemattomat komennot, tuntemattomat toiminnot, pois päältä olevat toiminnot ja onnistuneet toimintojen lähetykset. Tokenia itsessään ei kirjoiteta tapahtumahistoriaan.
Liittyvä asennus
Käytä Hotkeys, kun näppäimistösisäänpito pitäisi pyytää toimintoja. Käytä Skanneria, kun viivakoodisisäänpito pitäisi täyttää kenttiä tai laukaista toimintoja. Käytä Voice Triggeriä, kun puhuttuja lauseet pitäisi pyytää toimintoja. Käytä Sound Triggeriä, kun äänen tasokynnyksen ylitykset pitäisi pyytää toimintoja.