From kobe
Jump to: navigation, search

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

[Collapse]

▼ 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]"