Jack
Published © GPL3+

IFTTT’s Maker Channel With PHPoC Blue

This project shows how to use IFTTT maker channel.

IntermediateShowcase (no instructions)8 hours900
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
5 projects • 9 followers
Contact

Comments

Please log in or sign up to comment.