TCP/IP Laukaisin
TCP/IP Laukaisin kuuntelee rivinvaihdolla erotettuja JSON-pyyntöjä asiakkaalta ja pyytää altistettuja sovellustoimintoja. Se on suunniteltu paikalliseen automaatioon, luotettavan LAN-automaation ja kehityksen validointiin. Se sitoutuu oletusarvoisesti silmukointiin ja vaatii tokenin ennen kuin se hyväksyy minkään komennon.
ControlMyNikonille nykyiset altistetut toimintoiden tunnukset ovat CameraShoot, CameraToggleConnection ja CameraAutoFocus. Muita sovellustoimintoja ei ole saatavilla TCP/IP Laukaisijalle, ellei myöhempi versio niitä erikseen altista.
Ennen kuin aloitat
- Käytä TCP/IP Triggeriä vain asiakkaiden kanssa, joita hallitset.
- Pidä bind-osoite 127.0.0.1 skripteille, jotka suoritetaan samalla tietokoneella.
- Käytä LAN IPv4 -osoitetta vain luotettavassa yksityisessä verkossa.
- Pidä toiminnot pois päältä, kun testaat yhteyttä ja tokeneita.
- Ota toiminnot käyttöön vain, kun pyyntöpolku on todistettu.
- Uudelleenluo token, jos se on jaettu asiakkaalle, johon et enää luota.
TCP/IP Trigger käyttää selkeää 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 selaimen sivun, jossa on suuret toimintopainikkeet skriptin tai mukautetun TCP/IP-asiakkaan sijaan. UDP Triggeriä ei ole suunniteltu.
Sivun ohjaimet
- Aloita alkaa kuunnella määritellyllä silmukkaosoitteella ja portilla.
- Pysäytä lopettaa kuuntelijan ja vapauttaa portin.
- Sidontosoite asettaa paikallisen osoitteen, jota kuunnellaan.
- Käytä 127.0.0.1 samaa tietokonetta varten oleville skripteille.
- 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 toimintapyyntöjen suorittaa altistettuja toimintoja.
- Toiminnot pois päältä antaa sinun testata komentoja ilman toimintojen suorittamista.
- Token näyttää vaaditun pyyntötunnuksen.
- Kopioi token asettaa tokenin leikepöydälle.
- Uudelleenluo token luo uuden tokenin ja mitätöi vanhan.
- Tapahtumahistoria alkaa toimintatunnuksista, jotka ovat tällä hetkellä altistettu TCP/IP Triggerille, ja näyttää sitten 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 varmistaa, että kuuntelija ja token toimivat.
- toiminnot palauttaa toimintojen id:t, jotka ovat tällä hetkellä saatavilla TCP/IP Triggerille.
Python-testiklientti
Tämä skripti käyttää vain Pythonin standardikirjastoa. Käynnistä TCP/IP Trigger ensin, ja liitä sitten sivulta saatu token 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 päällä on päällä. Kopio tästä skriptistä on tallennettu lähdekoodipuuhun osoitteessa 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 äänikomentoa. Tämän vuoksi se on aluksi pois päältä, sitoo oletuksena silmukkaan ja vaatii tokenin jopa silmukassa.
Toimintojen poistaminen käytöstä estää toimintojen lähettämisen, mutta antaa silti mahdollisuuden validoida JSON, tokenin käsittelyn ja peruskomentovastaukset. Käytä sitä, kun rakennat tai testaat asiakasta.
LAN-sitoutuminen on vain luotettavan LANin hallintaa. Kuka tahansa, joka voi yhdistää kuuntelijaan ja tuntee tokenin, voi pyytää altistettuja toimintoja, kun Toiminnot ovat käytössä. Pidä token yksityisenä ja luo se uudelleen sen jälkeen, kun olet jakanut sen väliaikaisten skriptien tai asiakkaiden kanssa.
Vianetsintä
Jos Aloita on poistettu käytöstä:
- Tarkista, että portti on välillä 1 ja 65535.
- Varmista, että token ei ole tyhjää.
- Pysäytä kaikki aiemmat kuuntelutilat ennen portin vaihtamista.
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 bind-osoitteeseen 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ä bind-osoite 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 action id:istä, jotka näkyvät actions-komennolla, kuten CameraShoot.
- Ota Actions käyttöön ennen kuin odotat toimintapyyntöjen suorittamista.
Python- tai PowerShell-asiakaskehityksessä seuraa tapahtumahistoriaa testauksen aikana. Se kirjaa asiakasyhteyden ja -katkaisun tapahtumat, hyväksytyt ping- ja actions-komennot, hylätyt JSON-objektit, puuttuvat tai virheelliset tokenit, tuntemattomat komennot, tuntemattomat toiminnot, poistettuja toimintoja ja onnistuneita toimintojen lähetyksiä. Tokenia itsessään ei kirjoiteta tapahtumahistoriaan.
Liittyvä asennus
Käytä pikanäppäimiä, kun näppäimistön syötteen tulisi pyytää toimintoja. Käytä skanneria, kun viivakoodin syötteen tulisi täyttää kenttiä tai laukaista toimintoja. Käytä äänikomentoa, kun puhuttujen lauseiden tulisi pyytää toimintoja. Käytä ääniherkkää laukaista, kun äänen tasoraja ylitetään ja se tulisi pyytää toimintoja.