Contents
[hide]Triggers ❖
Obecně[edit]
Jedná se o přiřazení různých signálů daným playlistům. Každý trigger má své jedinečné id ve taru triggerN kde N je číslo od 1 do 9. Aplikace OnePro poslouchá na různých kanálech a pokud příjde spárovaný signál, přehraje přřazený playlist.
Aby se triggery daly používat, musí být povoleny SuperAdminem (p. Krejzlík)
Fungování[edit]
Spárování[edit]
Spárování playlist triggerId[edit]
Spárování trigerId a hash playlistu se provádí na serveru Artemis a pak posílají spolu s definicí plan.
"triggers": [
{
"id": "trigger1",
"hash": "bb8ede96a3c9a7f2f2ad403ad9fd5438"
},
{
"id": "trigger2",
"hash": "c21e64faa5d9b01c51fbf3d031e1288d"
}
]
Spárování signálId triggerId[edit]
Spárování trigerId a signalId se provádí na OnePro klientovi přes aktivitu ActivityDockTrigger. K jednomu trigerId se dá napárovat více signalId. Vazba je tedy 1:n
Ukončování triggerů[edit]
V případě nečinnosti se playlist triggeru přehraje v intervalu jemu udaném. Přerušit ho mohou události
- Inicializuje se return trigger - speciálně definovaný pro tento účel
- Pustí se jiný trigger - Nesmí být zaškrtnutá volba protect triggered playlist from other triggers
Drivers[edit]
Pro správné fungování je potřeba zvoli správný driver podle požitých sběrnic. K dispozici jsou zatím drivery:
- HXD single driver - pro jednu starší sběrnici
- G single driver - pro jednu novější sběrnici, driver se nestará o SN čísla sběrnic
- G multi driver - pro více novějších sběrnic, musí se specifikovat SN zběrnic
.
Filters[edit]
PF_XzRange[edit]
Pro váhové senzory ZxRange se musel vytvořit filtr který převádí informace o váze na diskrétní hodnoty, které je možné spárovat s triggery. Filtr je poomkem abstraktní třídy PF_Base.
Filtr vrací diskrétní hodnoty:
- MIN - když je váha pod nastavený limit
- MAX - když je váha nad nastavený limit
- NORMAL - když se váha vrátí do nastaveného limitu
- NO-CHANGE - když přetrvává předchozí stav (a ten už byl reportovaný)
Pro správné fungování musí být sensor správně nastavený, viz Sensors_settings/XzRange
E-mail[edit]
Od verze 3.3.0.4 podporuje OnePro trigger typu email*. To znamená, že místo spuštění nějaké prezentace se pouze odešle e-mail přes Launcher. Triggeru typu email se přiřazují signály z senzorů stejně jako ostatním triggerům.
Aby se tato vlastnost dala testovat, musí být splněny následující podmínky:
- V Launcheru musí být nastavený e-mail
- Launcher musí být ve min verzi 3.5.2
- OnePro musí být v režimu prezentace
- Nebo ve správě trigerů se zapnutým Test sensoru
Export/Import[edit]
Slouží pro uložení/načtení kódů ze senzorů a jejich přiřazení triggerům. Import/Export není chráněný proti nechtěnému použití, to znamená že navyžaduje potvrzení pro zvolenou akci a může dojít ke smazání už nastavených kódů.
Soubor se exportuje a načítá ze souboru
/sdcard/artemis/triggers-settings.txt
Spouštění umístěno v
Trigger settings > Import codes Trigger settings > Export codes
Struktura souboru u verzí >= 2.6.12
button;comm;hub_SN#G005B[A 0 100 5] button;code;hub_SN#X003B[Dz=AB] return;comm;hub_SN#G005B[A 0 0 5] return;code;hub_SN#X002A[0] return;code;hub_SN#X003A[0] trigger1;comm;hub_SN#G005B[A 1 100 5] trigger2;comm;hub_SN#G005B[A 2 100 5] trigger2;code;hub_SN#X002A[3] trigger3;comm;hub_SN#G005B[A 3 100 5] trigger3;code;hub_SN#X001A[3]
Podmínky pro import:
- Každý kód nebo příkaz musí být na vlastním řádku
- Každý řádek musí mít tři sloupce (od verze 2.6.12)
- První sloupec je trigger id
- Druhý sloupec je tag
- tag code - je pro vstupní signály
- tag comm - je pro výstupní commandy
- třetí sloupec je kód
- Sloupce používají znak ; jako separátor
- Řádek je ignorován pokud
- na řádku nebude nalezen separátor, řádek bude ignorován
- na řádku je méně sloupců než 3
- Na pořadí řádků nazáleží
Struktura souboru u starších verzí
return;X001A[0] trigger1;X001A[3] trigger2;X003A[3] trigger3;X004A[3]
Substituce[edit]
U importu na vícero zařízení se dá využít substituce SN.
- Klíčová slovo je hub_SN
- Toto slovo je nahrazeno SN prvního nalezeného řadiče
- Tato funkce funguje pouze u driveru Multi G
Sensors settings[edit]
Některé sensory potřebují po rebootu zařízení provést znovunastavení detekčních zón. Proto OnePro podporuje zápis konfigurace přes Prolific drivers.
Konfigurace musí být uložená na místě definovaném volbou File with prolific settings defaultní settings je
/sdcard/artemis/prolific-settings.txt
Soubor musí mít takto definovanou strukturu
# Commentary Upload EICYb106315 # Rozsireni AB zony az do vzdalenosti 80cm, senzor pripojen k radici 001 X003S[21:80] End Upload CLA3b106315 # Nastaveni barvy cislo 5 na RGB 100,100,100 tedy bilou barvu G005B[5 100 100 100 0] End
V případě zapojení jen jednoho řadiče s driverem multi se může použít subtituce. Nemusí se tak znát předem SN. Vhodné při rozsáhlejší instalaci
# Commentary Upload hub_SN # Rozsireni AB zony az do vzdalenosti 80cm, senzor pripojen k radici 001 X003S[21:80] End
V případě zapojení jen jednoho řadiče driverem single se používá klíčové slovo all. Driver obsluhuje pouze první nalezený řadič a SN k provozu nepotřebuje. Vhodné při rozsáhlejší instalaci identických zapojení.
# Commentary Upload all # Rozsireni AB zony az do vzdalenosti 80cm, senzor pripojen k radici 001 X003S[21:80] End
- Upload a End jsou klíčová slova a bez nich parser pořádně nenačte settings
- EICYb106315 je seriové číslo řadiče
- Pro nový řadič musí být definovaná nová sekce Upload/End
- Více o senzorech X-eye a jejich nastavení zde
- O parsování se stará třída com.philips.artemis.onepro.trigger.handlers.ProseParser.java
XzRange[edit]
Poměrně složitou konfiguraci vyžaduje nová implementace váhového senzoru XzRange. Musí se nakonfigurovat filtr a Také pošta na kterou mají odcházet Eventy
▼ prolific-settings.txt
# Zakomentovany radek je ignorovany # Musi se uvest realne SN senzoru Upload CGBTb106315 # Prepnuti do rezimu vazeni X001S[4:6] # Nastaveni citlivosti na 30g X001S[6:30] # Nastavit taru na prazdnou lednici # X001B[CALIBRATE=0.148] End # Filter pro vahu Filter XzRange min=0.100 max=0.800 # Nebude posilat uz jednou reportovany stav block=true tare=1.453 pickup1=0.125 pickup2=0.250 pickup3=0.375 pickup4=0.500 pickup5=0.625 End # Nastaveni pro udalost "email1" Email email1 # Definice vlastni dorucovaci addressy address="gelion.cz@gmail.com" # Zda se ma do subbjectu pridat ID z launcheru addid=false # ZE $device se nahradi ID OnePro subject="malo zbozi na $device" # Body musi byt definovano v jednom radku, muze se pouzit znak \n pro novy radek body="na lednicce doslo zbozi, honem, honem, doplnit" trigger="trigger1" End # Nastaveni pro udalost "email2" Email email2 address="gelion.cz@gmail.com" subject="moc zbozi" body="na lednicce je zbozi tri prdele" trigger="trigger2" End # Nastaveni pro udalost "email3" Email email3 # Pokud neni definovana tak je adresa brana z Launcheru subject="lednicka un je zase OK" body="na lednicce uz neni nedostatek zbozi" trigger="trigger3" End
Výstup[edit]
Filtr vyhodnocuje dvě hodnoty
- weight - konkrétní detekovanou váhu
- delta - změnu oproti poslednímu vážení
Z toho vyhodnocuje nezávisle STATE
- MIN - pokud weight < min uvedené v settings
- MAX - pokud weight > max uvedené v settings
- NORMAL - pokud weight se navrátí do intervalu min - max
a událost EVENT
- PICKUPX - pokud delta je záporná a < pickupX v settings
- STOCKX - pokud delta je kladná a > stockX v settings
- NOICE - pokud delta je v intervalu pickup1 a stock1 (defultně vypnuto)
- X může nabívat od 1 do 5
- Vyhodnocuje se od největší hodnoty (tedy 5) k nejmenší
Permissions[edit]
Pro správné fungování musí být v aplikaci správně implemtované permission pro přístup k USB řadičům.
Server Listener[edit]
Pouštění triggerů přes síť na lokální server. Server musí být zapnutý. Defaultně je server vypnutý.
Trigger options > On start run http server
Adresa spouštějící trigger4. IP adresa musí patřit zařízení.
http://192.168.1.175:8080/trigger?id=trigger4
Emitace triggeru return po síti
http://192.168.1.175:8080/trigger?id=return
Rutiny a kód[edit]
Databáze[edit]
Pro fungování Triggerů jsou informace pro chod persistovány do tabulek
Tabulka triggers[edit]
Položky tabulky
public static final String TE__ID = "_id"; // int - Table unique ID
public static final String TE_TID = "tid"; // int - Trigger id
public static final String TE_ID = "id"; // int - File id
public static final String TE_URL = "url"; // str - URL of playlist on server
public static final String TE_NAME = "name"; // str - Name of trigger - same as tid
public static final String TE_FILE_NAME = "file_name"; // str -
public static final String TE_HASH = "hash"; // str - Id Hash of playlist
public static final String TE_TYPE = "type"; // str - Type of playlist
public static final String TE_DURATION = "duration"; // int - Duration of playlist in sec
Tabulka impulses[edit]
Položky tabulky
public static final String TI__ID = "_id"; // Table unique ID
public static final String TI_TID = "tid"; // Trigger id
public static final String TI_TAG = "tag"; // indicate using
public static final String TI_CODE = "code"; // Assigned code
Devices[edit]
Na triggerování se především používají senzory firmy Prolific
Detailněší náhled se nachází zde
Testování[edit]
Pokud je OnePro v aktivitě správa triggerů dá se odesílat intent, který přepoše příkaz na senzor
adb shell am broadcast -a com.philips.artemis.onepro.COMM_EMIT --es comm "G005B[A 0 100 5]"