Wifi RGB iPhone

Wifi RGB iPhone è il primo di una serie di articoli in cui ho voluto esplorare la possibilità di controllare una striscia di led dal mio smartphone.

Wifi RGB

Se leggi il blog con continuità sai che la luce ed in particolare i led sono la mia passione nel campo dell’elettronica ed il controllo con arduino è un argomento che ritorna spesso tra i miei studi ed approfondimenti.

Ti riporto alcuni dei miei articoli sui led ed arduino se vuoi approfondire l’argomento:

Il progetto Wifi RGB iPhone

Il progetto nasce da una mia esigenza personale: arredare un abbassamento in cartongesso che ho dovuto realizzare per canalizzare l’aria calda proveniente da una stufa a pellet.

Il cartongesso non è ancora pronto ma l’ordine per la striscia di led è già partito quindi in attesa del corriere mi sono premurato di ricercare una applicazione per iPhone ed Android che potessi utilizzare per il mio progetto.

Ne ho trovate molte dedicate al controllo di strisce RGB quasi tutte proprietarie o legate ad un prodotto specifico.

Cercando nell’applestore mi sono imbattuto in una applicazione “Wifi Controller 2” che sembra essere slegata da un produttore in particolare e che è utilizzata da molti produttori indipendentemente gli uni dagli altri:

Wifi RGB iphone App Wifi Controller 2

essendo gratuita e con un layout gradevole ho provato ad installarla e verificare se potesse essere adeguata al mio progetto Wifi rgb iphone:

Wifi RGB iphone app controller 2

ho trovato l’app molto stabile e con alcune caratteristiche davvero interessanti.

Caratteristiche dell’App Wifi Controller 2

La prima caratteristica che mi ha colpito è la possibilità sia di utilizzare il classico controllo wifi rgb iphone con la “rondella arcobaleno” sia di controllare tre distinte funzioni sulle luci ciascuna con un + ed un –

Wifi RGB iphone app controller 2

mi riferisco ai tre pulsanti in basso “B”, “S”, “M” che ho inizialmente immaginato di utilizzare per controllare la luminosità del bianco caldo ( Warm White ).

Per avere anche la funzione di controllo del bianco caldo il progetto ha subito la sua prima variazione passando da rgb a rgbw o rgbww dove la w e la ww indicano il warm white, bianco caldo.

Successivamente mi sono accorto che l’app ha anche una seconda schermata che puoi utilizzare per controllare anche solo il bianco:

Wifi RGB iphone blue

sono numerose le possibilità di controllo che sto immaginando di poter realizzare con questa app ed arduino.

Un’altra caratteristica interessante è la possibilità di creare delle stanze o ambienti della casa ciascuno con la propria configurazione di rete ( IP e porta ) in modo indipendente:

Wifi RGB iphone configure ambient

in questo modo puoi inserire più progetti Arduino nella tua abitazione e controllarli tutti dalla stesa App.

Il funzionamento dell’App wifi

Prima di poter realizzare il codice arduino ho dovuto comprendere come l’app è in grado di comunicare via wifi il primo passo è stato configurare l’app creando un dispositivo “test”, i nomi non sono il mio forte, e configurare al suo interno un IP ed una posta a cui connettersi:

Wifi RGB iphone config ip and port

ho scelto l’IP del mio portatile perché ho a disposizione tcpdump per analizzare la comunicazione di rete con l’app.

Compreso che il protocollo utilizzato dall’app è UDP ho realizzato una semplice pagina php che apre un socket udp sul mio portatile e scrive in output quello che gli arriva sulla porta su cui è in ascolto:

Wifi RGB iphone udp php

 

il risultato premendo i tasti dell’app è quello che ho riportato nelle figure seguenti:

Wifi RGB iphone rgb circle

sopra trovi le corrispondenze tra la corona rgb ed i valori passati al progetto wifi rgb iphone, partendo dall’alto il cerchio invia 255 valori mentre il tuo dito scorre in senso orario, la corrispondenza tra i colori ed i valori devi ricavartela. Nella figura sotto ho riportato la corrispondenza tra la pressione dei tasti presenti in questa schermata:

Wifi RGB iphone rgb on off B+ B- S+ S- M+ M-

passa alla schermata successiva, quella in blu, e osserverai che la corrispondenza tra i numeri ed i pulsanti varia in modo che lato arduino, o altro microcontrollore, tu possa intepretare in modo chiaro se stai inviando comandi dalla prima o dalla seconda schermata:

Wifi RGB iphone on off 1on 1off

anche il cerchio centrale invia comandi singoliper i 4 lati:

Wifi RGB iphone up down dx sx

Come ho ricavato tutte queste informazioni ?

per recuperare queste informazioni ho in primo luogo utilizzato tcpdump, un tool fondamentale per le analisi di rete, da cui ho compreso che l’app dialoga in udp con il controllo luci wifi rgb iphone ed ho quindi utilizzato questo programma in php per scrivere a video il risultato della pressione di ciascun tasto:

<?php
 
error_reporting(~E_WARNING);
if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
     
    die("Couldn't create socket: [$errorcode] $errormsg \n");
}
 
echo "Socket created \n";
 
if( !socket_bind($sock, "172.22.123.149" , 5001) )
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
     
    die("Could not bind socket : [$errorcode] $errormsg \n");
}
 
echo "Socket bind OK \n";
 
while(1)
{
    echo "Waiting for data ... \n";
     
    $r = socket_recvfrom($sock, $buf, 65535, 0, $remote_ip, $remote_port);
    $stz = bin2hex($buf);
    for($i=0;$i<(strlen($stz)-1)/2;$i++)
    {
      $e = "00";
      $e[0] = $stz[$i*2];
      $e[1] = $stz[$i*2+1];
      $f = hexdec($e);

      echo $remote_ip . " [" . $remote_port . "] -- ".$f." \n";
    }
    socket_sendto($sock, "OK " . $buf , 100 , 0 , $remote_ip , $remote_port);
}
 
socket_close($sock);
?>

Nei prossimi articoli vedrai anche altre applicazioni che ho analizzato e le app che ho trovato fino ad arrivare alla realizzazione del codice arduino e dell’installazione delle luci nel cartongesso.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/informatica/wifi-rgb-iphone.html

12 commenti

1 ping

Vai al modulo dei commenti

    • Michele Conati il 25 Settembre 2014 alle 20:44
    • Rispondi

    Ciao bellissimo blog e progetti volevo chiederti di considerare l’ idea di fare un progetto con ecoduino visto che conosci la maggior parte dell’ universo di arduino, lo apprezzerei molto

    1. Ciao Michele,
      se riesco a procurarmi un ecoduino ci provo, tutto il materiale per i miei tutorial lo acquisto o mi viene donato da appassionati che vorrebbero leggere articoli dedicati.

        • Michele Conati il 27 Settembre 2014 alle 10:09
        • Rispondi

        Purtroppo neanche io saprei dove procurarmelo, visto che sarebbe più comodo rispetto a riprogettare arduino uno

        1. Ciao Michele, non è in vendita ?

    • Michele Conati il 29 Settembre 2014 alle 22:12
    • Rispondi

    So che c’è su robotdomestici.it

    1. Bene puoi acquistarla da loro.

    • Michael il 8 Novembre 2014 alle 14:21
    • Rispondi

    Ciao, ci sono novità riguardo lo sviluppo di uno sketch x arduino che utilizzi questo software?

    1. Ciao Michael,
      tra i mille impegni procede un po a rilento.
      Se ti va di iniziare a sviluppare il progetto e poi condividerlo posso pubblicare quello che realizzi.

  1. Salve Michele, complimenti per il tutorial, molto interessante, sono già riuscito a implementare il reader udp direttamente con Arduino, se può servire ti confivido il codice, mi chiedevo se fossi riuscito a capire come convertire da un singolo intero i 3 valori RGB

    1. Ciao Marco,
      capita a molti di confondersi con Michele, un professore eccellente che gestisce un suo blog su arduino, io sono Mauro 🙂 ma non preoccuparti, come dicevo, capita.
      Purtroppo non penso ci sia una formula utilizzabile e dovremmo procedere con la decodifica empirica.

    • marco il 29 Gennaio 2015 alle 19:30
    • Rispondi

    Ciao Mauro complimenti per il blog. io ho un controller rgb identico al tuo e ti volevo chiedere riesco a comandarlo tramite un programma che mandi comandi tcp udp ecc senza la sua app nativa ? ti spiego meglio io uso commandfusion per comandare (arduino -apple tv – xbmc- smart tv- ecc ) non so se conosci questo programma e mi piacerebbe integrare anche questo controller.

    1. Ciao Marco,
      non conosco il programma di cui mi scrivi, ho dato un occhio alla pagina di uno dei vendor ma non posso dire di conoscerlo.
      Io sto lavorando all’uso dell’app “wifi controller 2” per usarla con Arduino potresti sfruttare lo stesso ragionamento per “insegnare” all’app commandfusion come interagire con il tuo controller.

  1. […] Wifi RGB iPhone […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.