Stap 8: Geavanceerde: het toevoegen van ondersteuning voor uw eigen apparaten
Als u nieuwe apparaten te steunen (andere robots, TV's, etc.), zult u moeten weten de IR-codes voor uw apparaat. IR Server ondersteunt Pronto notatiecodes zodat hebt u Pronto-compatibele hardware vastleggen, u gewoon die gebruiken kunt. Ikzelf gedecodeerd de Thames en Kosmos codes met behulp van een Brainlink apparaat (SurplusShed had hen te koop).
Wat u moet in de hand is ofwel een hex opeenvolging van Pronto-compatibel is, of anders de volgende informatie:
- Draaggolffrequentie (meestal rond de 38 khz)
- barsten van de volgorde voor elke functie: dit is een reeks van op en uit de tijd in microseconden
- bedrag van de tijd in microseconden te pauzeren tussen het opnieuw verzenden van een reeks burst wanneer emuleren een knop wordt ingedrukt houdt (meestal 20000-100000 microseconden)
Met behulp van de bovenstaande informatie, u kunt het genereren van IR Server compatibele besturings-query's. Voor Pronto-codes is de notatie:
? ir = repeatmode: pronto: xxxx + xxxx xxxx + xxxx +...
waar repeatmode behoort tot:
- oneindige : Herhaal een stopcode wordt verzonden
- telling = x : herhaal x maal (x is een positief geheel getal)
- tijd = x : herhaal x microseconden (x is een positief geheel getal)
- zodra : eenmaal afspelen
en xxxx + xxxx xxxx + xxxx +... is de Pronto hex code met spaties door plustekens voor gebruik op het web vervangen. Bijvoorbeeld, geeft het web de Pronto code voor Roomba de functie wissen.Control als
0000 0069 0000 0008 0071 0027 0023 0071 0023 0071 0023 0071 0071 0027 0023 0071 0023 0071 0023 030B
Vervolgens kunt u de IR-serverquery genereren:
? ir = tijd = 500000: pronto: 0000 + 0069 + 0000 + 0008 + 0071 + 0027 + 0023 + 0071 + 0023 + 0071 + 0023 + 0071 + 0071 + 0027 + 0023 + 0071 + 0023 + 0071 + 0023 + 030B
Dit speelt de schone code voor een halve seconde (500000 microseconden).
Hebt u de onbewerkte gegevens, in plaats daarvan is uw indeling:
? ir = repeatmode: raw: repeatpause:carrier:xxx:xxx:xxx:...
Hier repeatmode is dezelfde als voor de Pronto-codes, repeatpause is een niet-negatief geheel getal aangeeft van microseconden te pauzeren tussen herhalingen (genegeerd als een repeatmode )--ik aanbevelen proberen 20000 als een begin, en vervoerder is de vervoerder frequentie in Hz. Ten slotte, de volgorde van de burst xxx:xxx:xxx:... is een opeenvolging van nummers opgeven afwisselend aan en uit de tijd in microseconden. Dus:
? ir = aantal = 12: raw: 20000:38000:400:200:400:200:300:150:100
aanvragen die de burst-volgorde worden uitgestoten twaalf keer met een vervoerder 38000 Hz, met een 20000 microseconde pauze tussendoor. De volgorde is dan 400 microseconden op, 200 uit 400 op 200 af, 300 op, 150 uit, 100 op.
Er is ook een speciale query:
? ir = stop
die stopt een vorige afspeelcommando met oneindige, graaf of tijd repeatmode.
Alvorens eventuele HTML-bewerkingen te doen, adviseer ik de codes door IR Server verbonden met een emitter instellen en handmatig uitstoten de codes via een webbrowser testen. Bijvoorbeeld, als IR Server op 168.1.1.49:7080, kunt u mijn ruwe voorbeeldcode stoten door naar:
http://168.1.1.49:7080/ir.html? IR = aantal = 12: raw: 20000:38000:400:200:400:200:300:150:100
Opmerking dat het niet uitmaakt welke webpagina's je voor "ir.html"--de code zal nog steeds worden uitgestoten. Voor de grootste efficiency, kan je "empty.html".
Zodra u hebt gewerkt uit de query-codes voor de functies van uw apparaat, moet u het maken van een HTML-bestand controleren. Zodra u de IR Server hebt geïnstalleerd, wordt de HTML-bestanden zijn in de directory mobi.omegacentauri.irserver van uw telefoon interne opslag. Hier vindt u een bos van bestanden die u vrij bent om te bewerken er (als u wilt hen te vernieuwen met de officiële versies, drukt u op Menu en overschrijven in IR Server). Het roomba.html -bestand is een goed begin. Kopieer die naar een nieuw bestand (bijvoorbeeld xyzzy.html) en bewerken als u wilt dat de aard van de lay-out die u wilt uw apparaat hebben, en voor het bewerken van de codes.
Het basisidee is dat wanneer de IR Server krijgt een verzoek met een van de ? ir = opvragen codes, het decodeert de code en het speelt. Het verzoek kan worden toegevoegd aan een html-bestand, maar het bestand empty.html is het meest efficiënt. Ook voor efficiëntie, in plaats van de afgifte van een GET -verzoek, kunt u alleen uitgeven een HEAD -verzoek.
Het roomba.html -bestand bevat een stukje javascript ontworpen om uit te stoten de verzoeken op de juiste knop persen. Er zijn twee soorten knoppen. Herhalende knoppen Speel een code herhaaldelijk tot één van de knop loslaat. Deze gebruiken een oneindige modus, en hebben zowel ontouchstart en onmousedown code om te werken op zowel touch en muis gebaseerde browsers. (Hoewel ik een ervaren C-programmeur en een enigszins ervaring java programmeur ben, ik ben helemaal nieuw voor javascript, dus ik kan niet worden doen de beste manier.) Non-repeat drukt speelt een code voor een vast bedrag van tijd zodat het niet krijgen gemist, en via onclick doen. Er zijn verschillende javascript-functies Bel hiervoor.
U zult opmerken dat er speciale vereenvoudigde ? ir aanvragen voor Roomba en Thames en Kosmos codes. Voor deze, alleen een één decimaal getal moet worden gespecificeerd in plaats van een burst-reeks, en het wordt gecodeerd volgens de protocollen van het Roomba en Thames en Kosmos (Zie de klasse IRCommand in de bron van de IR Server van hoe dit werkt).
Zet uw nieuwe HTML-bestand in de directory mobi.omegacentauri.irserver van uw telefoon interne opslag. Kunt u het rechtstreeks door naam, of u kunt een koppeling toevoegen aan het in het controllers.html bestand.