SeaMonkey Browser – modify the UserAgent string

ATTENTION, please ! Playing with browser’s preferences may DAMAGE or ERASE your browser’s and email accounts and data ! So, it’s MANDATORY to create a backup of the user’s profile before starting the activity !

I need for a sort of “filter” to make “private” some PHP scripts on my website. I just want that such scripts will work only when accessed by my PC’s browser. My public IP changes very often (it’s dynamic) so can’t be used as a proof of a request coming from my PC. An easy way can be to add a personalized message to the usual UserAgent string of my browser. I use “SeaMonkey” ’cause is very fast and “light” and also integrates the email client ; looking at the configuration options I didn’t found how to modify the UserAgent string, but googling for an answer I found that there is a preference that can be set to override the default one. The problem is that I don’t want just to override the “normal” UserAgent, but I just want to “append” my own string. So I created a very small PHP script just to know what’s my actual UserAgent. I called this script “UAget.php” ; it’s very simple, look at the picture below (note that clicking on the pictures loads 1:1 scale view)

The PHP script UAget.php

The PHP script UAget.php

I saved that script to an executable folder of my website (that can handle PHP scripts, obviously). Now, starting SeaMonkey and giving the URL of my script I had this result :

UAmod-pic1That’s my actual UserAgent. Well, I copied the whole string to the clipboard (ctrl-C) for future use.

UAmod-pic2At this point, I can try to add my personalized string to the UserAgent. For adding a new preference to the SeaMonkey’s configuration, you have to type “about:config” in the URL bar. You will receive an alert like this:

UAmod-pic3Don’t care about this, just click the button “I’ll be careful, etc” and go on…

UAmod-pic4Now you can see a list of option keys. Just click in empty space the right mouse key and on the descending menu choose: New, then: string and click for confirmation. You will be asked about the name of new preference:

UAmod-pic5The name will be: “general.useragent.override”, so write it down and click OK. Now a new box opens, requesting the string related to the new preference:

UAmod-pic6At this point, we paste (ctrl-V) the contents of the clipboard, that’s the original UserAgent string, and then append our personal string, in this example: ” Pippo/9.1.2015″, clicking OK to confirm. Look, our new “key” is part of the preferences list.

UAmod-pic7Ok, now we close the browser, then open it again and again we write the URL that points to our “UAget.php” script and this is the result:

UAmod-pic8Well done… our browser’s UserAgent, now, has an additional field: ” Pippo/9.1.2015″. This can be used in our PHP scripts to determine if the script itself will answer to requests or not, by means of parameter $_SERVER[‘HTTP_USER_AGENT’] used as filter. If the parameter contains our personalized string, then the script has been accessed by our browser (or by any other device that has ” Pippo/9.1.2015″ as part of the UserAgent).

Riciclare un vecchio tablet

Iniziai nel 2011 ad utilizzare dei tablet “cinesi” come economiche periferiche di I/O per i miei circuiti elettronici. Costruire “da zero” un dispositivo equivalente, cioè un display touch-screen 7″ a colori, con dispositivo audio, interfaccia USB Host, connessioni LAN e Wi-Fi, lettore di microSD, batteria ricaricabile al Litio di considerevole capacità e con un processore che “gira” a 800MHz o più, mi costerebbe almeno 150-200 Euro, anche se acquistassi i materiali per quantità non indifferenti (un centinaio di pezzi). Ricordo di aver comprato, negli anni passati, diversi modelli di tablet 7″ a meno di 70 Euro l’uno ed oggi costano anche molto meno ! Quindi, l’utilizzo di un tablet come periferica di I/O è sempre un “buon affare”. Ora, però, ho alcuni vecchi tablet da 7″ con touch-screen resistivo che non hanno più “mercato”, cioè sono superati come prestazioni per poterli utilizzare in nuove applicazioni e difficilmente “rivendibili” anche a metà del costo perché nei vari shop on-line si trovano modelli nuovi a prezzi “stracciati”. Allora… cosa farne ? Ecco la mia soluzione: un Flip-Clock, cioè un orologio “da parete” con le cifre che “flippano”, cioè cambiano come nei modelli meccanici dei vecchi tempi. Per chiarire il concetto, ecco lo “screenshot” dell’applicazione che gira su un tablet.

L'applicazione in funzione su tablet con schermo 800x480 scala:1

L’applicazione in funzione su tablet con schermo 800×480 scala:1

L’applicazione è stata testata su un vecchio tablet Android 2.2 con dimensioni di schermo 800×480 scala:1 e anche su un recente Phablet 6.5″ (Phone Tablet, quello usato per catturare lo screenshot visibile in figura) con Android 4.2 e comunque con display 800×480 scala:1 ; l’importante è che lo schermo sia delle dimensioni citate, altrimenti le cifre -con ogni probabilità- andranno a finire fuori dalle “finestre” previste nello sfondo. L’applicazione rimane sempre “accesa”, bloccando il normale autospegnimento del dispositivo. Se si desidera spegnere il tablet, si deve uscire dall’applicazione e quindi effettuare il normale spegnimento.
Nota 6/1/2015: Ho modificato l’App perché possa essere utilizzata anche su smartphone con schermo 1280×720 scala 2 ; test Ok su Samsung Galaxy Nexus con Android 4.3.

Tutto qui. L’applicazione è disponibile gratuitamente sulla mia pagina di Google Play .

Firmware e App per Meteo RX con Passive Infrared Sensor

Ho aggiunto al ricevitore per il sensore Oregon Scientific modello THGR228NF, che lavora in RF a 433 MHz (vedi link_1 e link_2), una parte di firmware per interfacciare un rivelatore PIR (Passive InfraRed) di tipo HC-SR501 o simile.

Sensore di movimento Passive Infrared

Sensore di movimento Passive Infrared

Lo scopo di questa aggiunta è di passare al tablet (o smartphone) collegato, l’informazione relativa alla presenza di una persona. Il circuito, tramite la connessione seriale, informa l’applicazione che c’è un movimento e così lo schermo passa da bassa ad alta luminosità (e viceversa). Sulle specifiche del componente si legge che l’uscita può avere livello 0V (non attivo) oppure 3.3V (attivo) ; il livello di 3.3V sarebbe un po’ basso come “logic high” per essere collegato direttamente al pin di input di un microcontrollore alimentato a 5V, ma usando la pull-up interna del micro e considerando lo schema interno del sensore (la linea di out ha una piccola resistenza in serie), si ottiene un livello accettabile.

Il ricevitore collegato al sensore PIR e di fianco il sensore Thermo-Hygro THGR228NF

Il ricevitore collegato al sensore PIR e di fianco il sensore Thermo-Hygro THGR228NF

Il nuovo firmware per il micro ATtiny2313 della Atmel è disponibile per il download ; il file zippato rxmet-ir.zip contiene il file .hex che si dovrà trasferire nel microcontrollore. La password per decomprimere questo file è eficara. La configurazione dei “fusibili” per il micro ATtiny2313 è la seguente:

High fuses: 11001001 (0xC9) Low fuses: 11011101 (0xDD)

Lo schema elettrico è stato modificato come in figura sotto ; non ho rifatto il circuito stampato, perché tutte le aggiunte sono state apportate semplicemente saldando dei fili alle nuove periferiche collegate (l’interfaccia USB-TTL e il sensore PIR).

Lo schema del circuito modificato

Lo schema del circuito modificato

Una volta programmato il micro, si potrà fare un test usando il terminale seriale di Windows (Hyperterm) o un qualsiasi altro terminale settato per 19200,N,8,1 come nella figura sottostante:

Il terminale seriale mostra messaggi ricevuti dal meteoRX

Il terminale seriale mostra messaggi ricevuti dal meteo-RX

Notate i messaggi IRsens=1 e IRsens=0 : questi vengono trasmessi, rispettivamente, quando il sensore PIR si attiva per un movimento “umano” e quando si disattiva. L’applicazione aumenta al massimo la luminosità del display nel primo caso, mentre la diminuisce nel secondo. In funzione della versione di Android e del dispositivo su cui si fa girare l’applicazione, si potrà avere un comportamento diverso ; la riduzione a zero, infatti, non ha un comportamento univoco. Sugli apparecchi che ho potuto provare, il display rimane comunque acceso con bassa luminosità, ma dalla “letteratura tecnica” sull’argomento, si deduce che in qualche caso lo schermo possa spegnersi del tutto. Modifica 23 Dic 2014: ho testato il funzionamento del comando di luminosità su un vecchio tablet Android 2.2 ed effettivamente, con la luminosità a zero, lo schermo si spegne del tutto e in più l’applicazione viene chiusa, cosa che assolutamente non è auspicabile. Per tagliare la testa al toro, ho modificato il programma in modo che la luminosità non vada più a zero, ma ad un valore appena superiore. L’effetto di “dimming”, visivamente, è identico, ma il tablet rimane acceso e l’applicazione attiva. In ogni caso, questa particolare applicazione, che fa uso di una interfaccia USB-TTL, non può essere installata su un dispositivo Android V2.2 , perché la gestione delle periferiche USB è completamente diversa ; nelle vecchie versioni di Android, infatti, se il chip montato sulla periferica USB è riconosciuto dal sistema, come nel caso del PL2303 Prolific o del CP2102 Silabs, nell’elenco delle periferiche (sulla directory /dev) appare la ttyUSB5, che può quindi essere utilizzata come porta seriale. Sul mio vecchio tablet (aperto, smontato e pesantemente modificato) ho utilizzato, per la comunicazione con il MeteoRX, addirittura la porta ttyS0 (la seriale standard), modificando l’avvio di Linux per disattivare il servizio “Console” normalmente attivo proprio su tale porta. Non pubblico su Google Play anche questa versione dell’applicazione, perché richiede la modifica del firmware del tablet per poter funzionare.

Nella foto sottostante vedete l’applicazione che gira su un tablet da 6.5″ con risoluzione 800×480, scala=1 :

App in funzione su tablet 800x480 scala=1

App in funzione su tablet 800 x 480 scala=1

Nella prossima foto, invece, c’è l’applicazione in funzione su uno smartphone con schermo da 4.3″ con risoluzione 1280×720 scala=2 :

App in funzione su smartphone 1280x720 scala=2

App in funzione su smartphone 1280 x 720 scala=2

L’applicazione è disponibile gratuitamente per il download sulla mia pagina di Google Play, mentre il circuito deve essere autocostruito perché non è disponibile in commercio. Buon divertimento… e auguri di buon Natale e felice anno nuovo :)

Meteo RX riscritto su tablet Android

Ho modificato il circuito del ricevitore Meteo per sensore Oregon Scientific (vedi articolo). Nello schema sottostante si possono vedere le modifiche che consistono in due tagli (dove ci sono le X rosse) e in una resistenza aggiunta. In questa versione, il circuito viene alimentato direttamente dall’interfaccia USB-TTL, attraverso il pin Vcc (oppure 5.0V) che trasferisce direttamente la tensione di 5V dal sistema ospite; la resistenza aggiunta serve a fare da partitore, in quanto l’uscita seriale del micro è tra 0 e 5V mentre il convertitore USB a cui deve essere collegato lavora a 3.3V (tramite un regolatore interno) ; alcuni integrati sono in grado di tollerare un input a 5V anche se lavorano a 3.3V, ma per stare tranquilli ed avere un circuito “per usi generali” ho preferito aggiungere questo componente.

Schema modificato. Cliccare per ingrandire

Schema modificato. Cliccare per ingrandire

Dopo aver modificato il circuito e collegato l’interfaccia USB-TTL, ho scritto una applicazione “elementare” per un tablet Android low-cost. Per semplificare il lavoro, ho usato la versione del micro che invia i dati relativi alla temperatura ed umidità in “plain text”, eseguendo la decodifica del protocollo del sensore direttamente “on-chip”. Per questa ragione il software sul tablet è estremamente semplice, in quanto si limita a “splittare” la stringa di dati ricevuta dal microcontrollore nelle due finestre relative rispettivamente alla temperatura e all’umidità. Il prossimo passo sarà l’invio di queste informazioni al server web e poi la realizzazione di uno script PHP che le inserirà nella foto che viene inviata dalla mia webcam. In questo modo avrò a disposizione sia un bel display per leggere la temperatura, sia una webcam più ricca di informazioni. Nella foto sottostante potete ammirare l’insieme di tablet, ricevitore e convertitore USB-TTL in funzione.

IMG_20141210_104420

Una webcam da esterno fatta in casa

Un box stagno in plastica per alimenti, una ventolina a 12V, un regolatore autocostruito da 12V a 5V, un vetro temperato preso da una vecchia maschera subacquea e infine una economica telecamera WiFi… Questi gli elementi che costituiscono l’hardware della mia webcam molto, ma molto casalinga.

home-webcamLa costruzione dell’oggetto non ha richiesto molto tempo. Ho usato un taglierino per liberare un lato del box dove incollare il vetro temperato, sfruttando poi del silicone trasparente per sigillarlo. Ho poi fatto dei fori per montare il supporto della telecamera e una striscia di metallo per il fissaggio dell’intero box al muro. Ho infine bloccato con la colla a caldo una ventolina a 12V per far circolare l’aria nel box ed evitare la condensazione ; poi ho costruito un circuito regolatore di tensione da 12V a 5V (la tensione richiesta dalla telecamera) con un normale LM7805 montato su un’aletta di raffreddamento. Ho fissato il circuito vicino alla ventola e così il calore dissipato viene distribuito dalla circolazione forzata nel box, contribuendo così a non far “gelare” l’elettronica nelle giornate fredde.

Quanto durerà ? Non ne ho idea. Staremo a vedere…

Ho scritto un piccolo programmino in PHP (sul server) per sovraimporre alla foto ripresa dalla telecamera anche la data e l’ora. Al momento attuale l’immagine viene aggiornata ogni 20 minuti (durante il giorno). Sto rimettendo in funzione il circuito per intercettare i dati trasmessi dal sensore Hygro-Thermo della Oregon Scientific (presentato in un vecchio articolo) in modo da aggiungere anche la temperatura e l’umidità campionate nel momento in cui viene salvata la foto. Questa volta, invece di utilizzare un PC per ricevere i dati, scriverò l’applicazione per tablet Android da 7″, dato che ne ho qualcuno avanzato da precedenti esperimenti :) quindi pubblicherò l’App su Google Play, in forma gratuita. A presto…

Usare lo smartphone come telecomando TV

Qualche tempo fa ho proposto in queste pagine un circuitino basato su un convertitore USB-RS232 da collegare ad un tablet Android per realizzare un telecomando a raggi infrarossi. In quell’occasione il convertitore USB veniva “visto” da Android come una porta seriale ttyUSB5, ma si trattava di una vecchia versione del sistema operativo (la 2.6 se ricordo bene). Nelle nuove versioni, le periferiche USB sono gestite in modo del tutto diverso e così la vecchia applicazione che avevo scritto un paio d’anni fa non funziona sui nuovi dispositivi. A questo punto, ho pensato di riscriverla perché possa funzionare sui nuovi smartphone (o tablets) basati su Android 4.0 e successivi. Nella foto sottostante potete vedere il mio smartphone con la periferica collegata e il programma in funzione.

IRemoteUSB-pic1A parte la gestione dell’interfaccia USB, il principio di funzionamento è lo stesso. Si sfrutta la porta seriale per inviare dati formattati in un modo particolare. Utilizzando la velocità di 115200 BPS, una lunghezza di 7 bits ed 1 stop bit, infatti, si ha la possibilità di generare dei “bursts” di 38.4 KHz che vengono ricevuti molto bene dal sensore IR contenuto nel TV. Nel disegno qui sotto si vede come questo sia possibile:

serial7bitIn questo esempio vediamo la trasmissione seriale di due caratteri di valore 0x5B (hex) ; se però guardiamo la forma d’onda da un punto di vista differente, scorgiamo un burst di 6 impulsi con una frequenza di 38.4 KHz ! Ogni bit, a 115200 BPS, dura infatti 8.68 uS ; noi usiamo 3 bits per definire un periodo della nostra onda rettangolare e così la durata totale è di 26.04 uS che corrisponde appunto alla frequenza di 38.4 KHz. Grazie a questa “fortunata coincidenza”, possiamo usare la porta seriale per emettere una serie di caratteri che formano bursts e pause rispettando il protocollo di trasmissione di un telecomando a raggi infrarossi. La mia applicazione per Android utilizza il protocollo SONY e funziona perfettamente con un televisore di modello “Bravia”. Si possono realizzare senza problemi anche altri protocolli, quali il NEC o il Philips (RC5) ; il programma sarà diverso, ma il principio resta lo stesso.

Ovviamente, non basta usare lo smartphone e scaricare l’applicazione, si deve avere una interfaccia USB-TTL e in più si deve costruire un piccolo circuitino. La figura seguente mostra lo schema elettrico ed il prototipo.

IRemoteUSB-schEsistono moltissimi modelli di interfaccia USB-TTL, io ho comprato quella mostrata in figura presso un “noto negozio on-line” ed ho speso (compresa la spedizione dalla Cina) meno di due Euro. Il circuitino con il transistor serve a dare un po’ di potenza al LED infrarosso ; con questa interfaccia e “mirando” bene verso il sensore del TV, ho raggiunto una distanza utile di oltre tre metri.

L’applicazione per Android è molto semplice: ha solo sei tasti che servono per le funzioni “classiche”, che sono il cambio di canale (CH+ e CH-), la modifica del volume (VOL+, VOL- e MUTE) e l’accensione / spegnimento del TV (POWER).

Screenshot_2014-11-27-13-46-43Se si lancia l’applicazione SENZA aver collegato l’interfaccia USB, si riceve una schermata di errore.

Screenshot_2014-11-27-13-26-26Se invece si lancia l’applicazione con l’interfaccia collegata, viene richiesta l’autorizzazione all’uso di tale periferica da parte del programma.

Screenshot_2014-11-27-13-46-30L’applicazione è disponibile gratuitamente su Google Play , mentre il circuito lo dovete costruire voi… ;) Buon divertimento.

All Stars – rompicapo per Android

Aggiornamento: 19 Nov 2014 (vedi sotto)

Una domenica con meteo tipicamente autunnale ; nebbiolina e grigio ovunque… giornata ideale per programmare un rompicapo per smartphone Android. La prima versione di questo programma la realizzai per Windows nel 2002, ispirandomi al un gioco brevettato dalla Tiger nel 1999 che si chiamava Lights-out. L’originale era una scatoletta di plastica con 25 bottoni di gomma semitrasparente disposti a matrice 5×5, con sotto altrettanti leds. Premendo un pulsante, si cambiava lo stato del led sottostante e di quelli a nord, sud, est e ovest, se esistenti. La versione per PC l’avevo chiamata Flip-Flop ed i pulsanti avevano come simboli lo zero per lo stato di spento e l’ uno per quello di acceso. Si partiva sempre da una condizione casuale. In questa versione per Android, invece, ho utilizzato dei “bottoni” circolari che sono senza alcun segno (spento) o con una stella al centro (acceso). Per questo ho chiamato il gioco “All Stars”, perché lo scopo è di arrivare, cliccando i bottoni, ad una condizione in cui tutte le stelle siano accese.

 Nella figura sottostante si vede il gioco appena avviato…

Screenshot_2014-11-09-15-15-20…mentre in quella seguente si vede il gioco risolto. Partendo dalla condizione base (tutto spento) bastano 15 click per arrivare alla condizione di “All Stars”.

Screenshot_2014-11-09-15-55-50Naturalmente, se si preme il pulsante MIX le cose si fanno più complicate. Questo pulsante, infatti, provoca 100 mosse casuali a partire dalla condizione corrente, cioè preme “a casaccio” per cento volte uno dei 25 pulsanti, creando una nuova situazione di gioco.

L’applicazione è disponibile gratuitamente su Google Play .

19/11/2014 - Un amico ha installato il gioco e mi ha detto: “Ma… sei sicuro che funzioni ?”. Ho così deciso di aggiungere qui una delle possibili soluzioni, quella che parte dalla condizione iniziale del gioco (con tutte le stelline spente). Con 15 clicks è possibile arrivare al risultato di “all stars”. Nella figura sottostante potete vedere dove cliccare ; per comodità andate dall’uno al quindici, ma potete anche seguire un ordine diverso…

starsolution

Semplice rompicapo

In occasione della festa di tutti i Santi ho deciso di scrivere questa piccola applicazione. Per meglio dire, l’ho tradotta dalle versioni che avevo scritto in precedenza per smartphone WM6 e per PC (sotto Linux), in modo da poterla far “girare” su uno smartphone (o un tablet) Android. Si tratta del ben noto rompicapo che si giocava da bambini con un quadrato di plastica provvisto di 15 tessere mobili. Si facevano un po’ di mosse a casaccio per mettere le tessere in disordine (o si chiedeva ad un amico di “mischiare”) e poi si iniziava a risolvere il gioco, tentando di rimettere tutto a posto. Alcuni si stufavano e smontavano le tesserine con un piccolo giravite per poi rimontarle nell’ordine giusto. Beh, non usate quest’ultimo sistema sul vostro smartphone ! Potreste rovinare lo schermo :)

Nella figura sottostante potete vedere quello che appare sullo schermo una volta lanciata l’applicazione :

Screenshot_2014-11-01-12-17-49Premendo il tasto “MIX” verranno eseguite automaticamente delle mosse casuali e ci troveremo davanti ad una situazione come quella sottostante :

Screenshot_2014-11-01-12-17-26Ora dovremo cercare di rimettere tutto a posto, toccando le tessere che sono “mobili”, cioè quelle che hanno un lato adiacente allo spazio vuoto. Nel caso della figura mostrata, come prima mossa potremo spostare solo le tessere numerate: 2, 15, 7 e 1 . La tessera mossa occuperà lo spazio libero e ne lascerà uno nuovo al proprio posto.

L’applicazione per Android è disponibile, gratuitamente, su Google Play .

Fammi luce ! Semplice e “illuminante” applicazione Android

La scorsa domenica stavo dando una “ripulita” alle numerose applicazioni presenti sul mio Samsung Nexus. Una tra queste era la “torcia”, utilissima per illuminare la serratura del portone in sere buie. Quando ho visto che questa App occupava più di 7 Megabytes della memoria del mio telefonino, m’è preso un colpo… 7 MB per accendere un Led ? Mi pare decisamente troppo. Allora ho deciso di impegnare un’oretta dell’ozioso pomeriggio per riscrivere lo stesso programma per conto mio. Dato che per controllare il suddetto Led bisogna comunque attivare la libreria per la gestione della telecamera, ho quindi deciso di aggiungere anche una finestra di immagine che riprende ciò che viene illuminato dal Led. Nella foto sottostante vedete lo screenshot dell’applicazione:

fammiluce-scrCome potete notare, il programma è essenziale, niente fronzoli. Semplicemente premete il pulsante On / Off per accendere e spegnere il Led. Tutto qui.

L’applicazione è disponibile gratuitamente su Google Play.

Circuito di test per display LCD basato su controller NEC µPD7225G

Questo articolo è stato già pubblicato sul mio vecchio sito, che ora non esiste più. Ho notato che ci sono diversi link su Internet che puntano a quel vecchio documento, così ho deciso di metterlo nuovamente on-line sul mio blog. Eccolo di seguito:

Circuitino di test per accendere un display LCD basato sul controller NEC µPD7225G.

Il prototipo montato e funzionante

Il prototipo montato e funzionante

Il microcontrollore utilizzato è un ATmega48 in package DIP.
Lo schema è visibile nella figura sottostante (cliccare l’immagine per una visione ingrandita):

sch131Ho disegnato anche un piccolo circuito stampato per usi generali (vedi sotto) :

cs131comp131Per una stampa precisa, utilizzare il file nel formato PDF che si trova nello zip scaricabile.

Il display utilizzato per il test ha 12 caratteri da 7 segmenti più numerosi segnalatori.
I segmenti sono mappati secondo la tabella sottostante:

disp131mapIl file sorgente in C contiene le routines di gestione del controller e un piccolo programma di prova che accende, uno alla volta, tutti i segmenti del display.
Per chi non ha il compilatore, c’è anche il file HEX già pronto per essere scaricato nel micro.

Il file ef131.zip contiene:

  • cs131.pdf – il disegno del master in PDF stampabile in scala 1:1
  • main.c – il file sorgente in C del programma di test
  • upd7225.hex – il file compilato pronto per essere trasferito sul micro