This package is abandoned and no longer maintained. No replacement package was suggested.
There is no license information available for the latest version (1.1.0) of this package.

1.1.0 2015-10-19 16:05 UTC

This package is not auto-updated.

Last update: 2021-02-09 17:13:22 UTC


Build Status

PhiKettle is a PHP API which allows you to control your iKettle. The library provides basic functionality for kettle control and response handling. It's built on top of the reactphp library.

A write up of the Kettle protocol:


Using Composer:

composer require loft-digital/phikettle

Kettle IP address discovery

The Kettle can be discovered on your local network using Nmap, default kettle port number and local IP range:

nmap -p 2000 --open

It can also be discovered with IP scanner script using kettle discovery request: \PhiKettle\Config::D_REQUEST. The Kettle will respond with \PhiKettle\Config::D_RESPONSE message.

Example usage

Basic kettle listener

Example file: basic-listener.php

A Kettle object is created using the kettle's local IP address and default port of 2000. After that, the status request message is sent to a kettle stream and a response from the kettle is subsequently handled in a stream listener.

Run listener:

$ php ./examples/basic-listener.php

Kettle socket server

Example file: socket-server.php

A Socket server is created on a localhost and is listening on port 1336. It accepts 2 commands: boil and off. After a command is run, the kettle action is triggered and response is handled in kettle stream listener.

Run socket server:

$ php ./examples/socket-server.php

Run client:

$ telnet localhost 1336
Connected to localhost.
Escape character is '^]'.

Kettle commands:
- boil
- off

Enter your command and press Enter:

=> Kettle was boiled

=> Kettle was turned off


Contributions, suggestions and fixes are more than welcome.

General contribution guidelines apply:

  1. Fork the repository
  2. Create a feature/hotfix branch off of master
  3. Run PHPUnit tests ($ ./vendor/bin/phpunit)
  4. Commit and push the branch
  5. Make a pull request
  6. If you're unsure on whether your contribution will be required then please file an issue first and we can discuss it.