Jack
Published © GPL3+

IFTTT’s Maker Channel With PHPoC Blue

This project shows how to use IFTTT maker channel.

IntermediateShowcase (no instructions)8 hours894
IFTTT’s Maker Channel With PHPoC Blue

Things used in this project

Hardware components

PHPoC Blue
PHPoC Blue
×1
PHPoC Bread Board
PHPoC Bread Board
×1

Software apps and online services

Maker service
IFTTT Maker service

Story

Read more

Code

task0.php

PHP
To fire IFTTT maker channel.
<?php

include_once "/lib/sd_340.php";
include_once "ifttt.php";

echo "PHPoC example : IFTTT maker channel.\r\n";

$switch_state = 0;

uio_setup(0, 0, "in");

while(1)
{
	$state = uio_in(0, 0);
	if($switch_state != $state)
	{
		$value1 = "";
		$switch_state = $state;
		if($switch_state == 0)
			$value1 = "OFF";
		else if($switch_state == 1)
			$value1 = "ON";
		
		ifttt_maker("SWITCH", $value1, "", "");
	}
}

?>

ifttt.php

PHP
Send trigger message to IFTTT.
<?php

include_once "/lib/sn_dns.php";

function ifttt_maker($event, $value1, $value2, $value3)
{
	$host_name = "maker.ifttt.com";

	$host_addr = dns_lookup($host_name, RR_A);

	if($host_addr == $host_name)
		$host_addr = dns_lookup($host_name, RR_A);
	
	if($host_addr == $host_name)
		exit "$host_name : Not Found\r\n";

	$tcp0_pid = pid_open("/mmap/tcp0");

	pid_bind($tcp0_pid, "", 0);

	error_log("connect to $host_addr:80...");
	pid_connect($tcp0_pid, $host_addr, 80);

	for(;;)
	{
		$state = pid_ioctl($tcp0_pid, "get state");

		if($state == TCP_CLOSED)
			pid_connect($tcp0_pid, $host_addr, 80);
		
		if($state == TCP_CONNECTED)
			break;
	}

	error_log("connected\r\n");

	$msg = "";
	if($value1 != "" || $value2 != "" || $value3 != "")
	{
		$msg = "{";
		
		if($value1 != "")
			$msg .= "\"value1\" : \"".$value1."\",";
				
		if($value2 != "")
			$msg .= "\"value2\" : \"".$value2."\",";
				
		if($value3 != "")
			$msg .= "\"value3\" : \"".$value3."\",";
				
		$msg = substr($msg, 0, strlen($msg) - 1);
		
		$msg .= " }";
	}

	$http_req  = "POST /trigger/".$event."/with/key/YOUR_KEY HTTP/1.1\r\n";
	$http_req .= "Host: $host_name\r\n";
	$http_req .= "Content-Type: application/json\r\n";

	if(strlen($msg) > 0)
		$http_req .= sprintf("Content-Length: %d", strlen($msg));
		
	$http_req .= "\r\n\r\n";
	
	if(strlen($msg) > 0)
		$http_req .= $msg;

	error_log($http_req);
	
	$sent = pid_send($tcp0_pid, $http_req);

	$rbuf = "";
	for(;;)
	{
		$temp = "";
		$read = pid_recv($tcp0_pid, $temp);
		if($read > 0)
			$rbuf .= $temp;
			
		if(strpos($rbuf, "\r\n\r\n") !== FALSE)
			break;
	
		if(pid_ioctl($tcp0_pid, "get state") == TCP_CLOSED || pid_ioctl($tcp0_pid, "get state") == SSL_CLOSED)
			break;
	}
	pid_close($tcp0_pid);
	error_log($rbuf);
	error_log("\r\nconnection closed\r\n");
}

?>

Credits

Jack

Jack

5 projects • 9 followers

Comments