Carica Io
, (*1)
License: The MIT License, (*2)
Copyright: 2013-2019 Thomas Weinert thomas@weinert.info, (*3)
Carica Io is a collection of experimental php classes and scripts
for non-blocking I/O. It provides the basic building blocks for
hardware control using Firmata (Arduino) and GPIO (Raspberry PI)., (*4)
Basics
The repository provides the API needed for non-blocking I/O. A
simple event loop and event emitter are included. The loop
implementation is not performance optimized. However it is possible to use
an adapter for ReactPHP or AMPHP., (*5)
It includes an (incomplete) HTTP server that should be enough for the first steps.
It supports GET requests and WebSocket connections., (*6)
+---------------+
| Carica\Chip |
+-------+-------+
^
|
+----------+----------+
| |
+-------+-------+ +--------+-------+
| Carica\GPIO | | Carica\Firmata |
+-------+-------+ +--------+-------+
^ ^
| |
+----------+----------+
|
+-------+-------+
| Carica\Io |
+---------------+
Carica/Io provides the classes for event based programming and a simple web server.
It defines interfaces for hardware control (Pin, ShiftOut, ...).
Carica/Firmata is a client library
for the Firmata protocol it allows to control
Arduino boards over a serial or a network connection. Carica/GPIO implements GPIO
into PHP using the file system or the WiringPI library for the Raspberry PI., (*7)
Carica/Chip implements classes for hardware objects. Like a LED, a RGB-LED, a Servo,..., (*8)
Usage
You will need to get the loop instance from the factory,
attach events and run it., (*9)
$loop = Carica\Io\Event\Loop\Factory::get();
$loop->setInterval(
static function () {
static $i = 0;
echo $i++;
},
1000
);
$loop->run();