MAD has an internal cronjob-like job processing mechanism. With this mechanism, you can run jobs manually or schedule them.
Features:
Install or update apps on your devices
Run any command on your devices
Create a personal_commands folder in MAD’s root directory. Save custom jobs as .json file. MAD must be restarted for new jobs to appear.
Example Job to read the game’s version:
{
"Readout Pogo Version":
[
{
"TYPE": "jobType.PASSTHROUGH",
"SYNTAX": "dumpsys package com.nianticlabs.pokemongo | grep versionName",
"FIELDNAME": "POGO_Version",
"WAITTIME": 5
}
]
}
Readout Pogo Version
: Name of job that will appear in MADmin
TYPE: jobType.PASSTHROUGH
: Type of job. See Job types for a list of supported jobs
SYNTAX: dumpsys package com.nianticlabs.pokemongo | grep versionName
: Shell command
FIELDNAME: POGO_Version
: Field name for returning Value
WAITTIME: 5
: Wait 5 minutes before starting the job
You can chain multiple jobs together. See Nested jobs.
MAD can create a job to install an APK on your devices just by uploading the app via MADmin.
Use upload_path
in config.ini to define the software folder for these APKs (Default: upload/
in MAD root folder)
Select APK and Upload it.
MAD supports the following job types:
jobType.INSTALLATION
: Install APK on device
jobType.REBOOT
: Reboot device
jobType.RESTART
: Restart Pogo
jobType.STOP
: Stop Pogo
jobType.START
: Start Pogo
jobType.PASSTHROUGH
: Send command to device
You can configure MAD to launch jobs based on certain timings.
Create file “autocommands.json” in your configured file_path/
directory. You can set the path via config.ini.
Example content:
[
{
"redo": true,
"algotype": "loop",
"algovalue": 10,
"startwithinit": true,
"origins": "tv1",
"job": "Readout Pogo Version",
"redoonerror": true
},
{
"redo": true,
"algotype": "daily",
"algovalue": "21:00",
"startwithinit": true,
"origins": "tv5|tv6|tv7",
"job": "Readout RGC Version",
"redoonerror": false
}
]
Description:
redo
: true
will reschedule jobs after finish. false
will set this jobs to run only once
algotype
: daily
runs this job once a day. loop
will looü the job every x minutes
algovalue
: depends on algotype. :code: daily sets time like “21:30” (24h format). loop
sets loop time in minutes (120 = every 2 hours)
startwithinit
: true
will start the job after MAD start. false
starts the job according to schedule
origins
: Single or list of devices (separated by |
)
job
: Name of the job
redoonerror
: Reschedule jobs after getting an error
Madmin provides a read-only endpoint via GET /jobstatus
to read all processed jobs’ return value.
Example:
{
"my_device_name": {
"POGODROID_Version": "[versionName=1.1.3.0]",
"POGO_Version": "[versionName=0.153.2]",
"RGC_Version": "[versionName=1.9.3, versionName=1.8.34]"
}
}
You are able to combine more jobs to one nested or chained job. Nested jobs are processed from top to bottom.
Example:
MAD starts the top most job and will schedule the memory usage readout with a delay of 3 minutes. Eventually, the game will start.
{
"Stop/Start Pogo and readout Memory Usage":
[
{
"TYPE": "jobType.STOP",
"SYNTAX": "STOP Pogo"
},
{
"TYPE": "jobType.PASSTHROUGH",
"SYNTAX": "dumpsys meminfo | egrep -w 'Total RAM|Free RAM|Used RAM'",
"FIELDNAME": "MEMORY_USAGE",
"WAITTIME": 3
},
{
"TYPE": "jobType.START",
"SYNTAX": "START Pogo"
}
]
}
Hint
If one of the jobs results in an error, following jobs will be canceled.
MAD is able to submit a job’s state to Discord.
job_dt_wh # Send job status to discord (Default: False)
job_dt_wh_url: # Discord Webhook URL for job messages
job_dt_send_type: # Kind of Job Messages to send - separated by pipe | (Default: SUCCESS|FAILURE|NOCONNECT|TERMINATED)
job_dt_wh
: Enable Discord support
job_dt_wh_url
: Discord webhook URL
job_dt_send_type
: Define the kind of submission (separated by |
) (Default: SUCCESS|FAILURE|NOCONNECT|TERMINATED)
Examples: