diff --git a/app/Commands/InitCommand.php b/app/Commands/InitCommand.php new file mode 100644 index 0000000..f91f65c --- /dev/null +++ b/app/Commands/InitCommand.php @@ -0,0 +1,92 @@ +getList()); + + if ($printers->isEmpty()) { + $this->error('We could not find any printers! Setup them first :)'); + return; + } + + $this->info('Please register printers first at:'); + $this->info('https://events.anikeen.com/console/resources/printers'); + + $password = $this->ask('What is your password?', match ($username) { + 'print-cli' => 'print-cli', + 'orangepi' => 'orangepi', + default => null, + }); + + $filename = $home . '/print-cli.yml'; + + $yaml = Yaml::dump( + input: [ + 'base_url' => 'https://events.anikeen.com', + 'printers' => $printers->map(function (Printer $printer) use ($username, $password) { + $attributes = $printer->getAttributes(); + + $id = $this->ask(sprintf('What is your ID for %s?', $printer->getName())); + + return [ + 'id' => $id, + 'name' => $printer->getName(), + 'driver' => 'cups', + 'address' => $attributes['printer-uri-supported'][0], + 'username' => $username, + 'password' => $password, + ]; + })->toArray(), + ], + inline: 100, + indent: 2, + flags: Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK + ); + + file_put_contents( + filename: $filename, + data: preg_replace('/-\n\s+/', '- ', $yaml) + ); + + $this->info(sprintf('Created configuration at %s', $filename)); + } +} diff --git a/app/Commands/InitSupervisorCommand.php b/app/Commands/InitSupervisorCommand.php new file mode 100644 index 0000000..6e91a68 --- /dev/null +++ b/app/Commands/InitSupervisorCommand.php @@ -0,0 +1,45 @@ + Make sure to replace the `your-printer-uuid`, `address`, `username`, and `password` with your own -> values. Also make sure to replace the `base_url` with the correct URL to our events platform. - -```yaml -base_url: 'https://events.anikeen.com' -printers: - - id: 'your-printer-uuid' - name: EPSON ET 2750 - driver: cups - address: 'ipp://127.0.0.1:631/printers/EPSON_ET_2720_Series' - username: 'orangepi' - password: 'orangepi' +```bash +print-cli init ``` To test the configuration, run the following command: @@ -144,16 +132,8 @@ and control a number of processes on UNIX-like operating systems. Create a new configuration file `/etc/supervisor/conf.d/print-cli.conf`: -```ini -[program:print-cli] -directory = /home/orangepi -command = /usr/bin/php /home/orangepi/.config/composer/vendor/bin/print-cli serve -autostart = true -autorestart = true -stderr_logfile = /var/log/print-cli.err.log -stdout_logfile = /var/log/print-cli.out.log -stopwaitsecs = 3600 -user = print-cli +```bash +print-cli init:supervisor | sudo tee /etc/supervisor/conf.d/print-cli.conf > /dev/null ``` Now, update Supervisor to read the new configuration file and start the Print-CLI service: @@ -167,3 +147,33 @@ sudo supervisorctl start print-cli ## WLAN https://www.makeuseof.com/connect-to-wifi-with-nmcli/ + +## Printer Offsets + +### EPSON ET-2750 Series (with Gutenprint @ OrangePI) + +> Some other OS and drivers need other offsets. + +```json +{ + "badge": { + "offset": { + "y": 0, + "x": 0 + } + } +} +``` + +### EPSON ET-2860 Series (Unconfirmed) + +```json +{ + "badge": { + "offset": { + "y": 0, + "x": 0 + } + } +} +``` diff --git a/raspberry.md b/raspberry.md index 8db7958..b2e9ca3 100644 --- a/raspberry.md +++ b/raspberry.md @@ -88,23 +88,10 @@ composer global require anikeen/print-cli ## Step 5: Configure Print-CLI -In this tutorial, we're using the home directory of the `print-cli` user to store the configuration file. If you're -using a different user, make sure to replace `print-cli` with the correct username. +With the latest version, you can automatically create your `/home/print-cli/print-cli.yml` with: -Next create a configuration file `~/print-cli.yml`, and add the following content: - -> Make sure to replace the `your-printer-uuid`, `address`, `username`, and `password` with your own -> values. Also make sure to replace the `base_url` with the correct URL to our events platform. - -```yaml -base_url: 'https://events.anikeen.com' -printers: - - id: 'your-printer-uuid' - name: EPSON ET 2750 - driver: cups - address: 'ipp://127.0.0.1:631/printers/EPSON_ET_2720_Series' - username: 'print-cli' - password: 'password' +```bash +print-cli init ``` To test the configuration, run the following command: @@ -130,16 +117,8 @@ and control a number of processes on UNIX-like operating systems. Create a new configuration file `/etc/supervisor/conf.d/print-cli.conf`: -```ini -[program:print-cli] -directory = /home/print-cli -command = /usr/bin/php /home/print-cli/.config/composer/vendor/bin/print-cli serve -autostart = true -autorestart = true -stderr_logfile = /var/log/print-cli.err.log -stdout_logfile = /var/log/print-cli.out.log -stopwaitsecs = 3600 -user = print-cli +```bash +print-cli init:supervisor | sudo tee /etc/supervisor/conf.d/print-cli.conf > /dev/null ``` Now, update Supervisor to read the new configuration file and start the Print-CLI service: