mailto: blog -at- heyrick -dot- eu

Navi: Previous entry Display calendar Next entry
Switch to desktop version

FYI! Last read at 19:03 on 2024/11/21.

Tea jar

I opened a new sack of Tetley on Sunday. A fresh selection of 1,100 bags to work my way through. That's only 220 days with five teas a day. Which is "about average". Of course, when I'm home (weekend, holiday) I consume more.

My last couple of tea sacks I just cut a corner off and dived in whenever I needed a bag. Which meant the tea wasn't it's best coming towards the end of the sack. It doesn't have that punch, you know? Well, maybe not if you're a coffee drinker, but we don't use the C-word around here. ☺

So I dug up the old Le Parfait jar (with rubber seal) that used to hold flour. A clean up, then a few minutes in the oven to dry and sterilise, and it's ready for being repurposed.

All that's required for the perfect cuppa
All that's required for the perfect cuppa.

 

Daylight hours

Still light at half six. Not so much fifteen minutes later, but the sun at at 6pm. Either way, the days are slowly getting longer.
Oh, look, GOF.
Oh, look, GOF.

It went up to 8.4°C, which is more than it's been in quite a while. So fog gof is beginning.
Just looked and it's 1031mb (or hPa if you prefer). Could explain why I have a headache. Looks like there's going to be a high out off the western tip of Spain through the week, so ought to be milder and probably a bit rainy.

 

All of the rest is to do with hacking around with my new internet radio...

 

Denver IR-135 battery life

After running the radio on battery for four hours, I still had between 25% and 50% of the battery remaining. I turned it off at this point at it was 9pm so I went to bed and watched some Netflix with a hot chocolate.
Ought to be good for 5-5.5 hours?
Ought to be good for 5-5½ hours?

The WiFi access point was close, so a signal of -22dBm, and it stayed playing the one channel with volume about a third of maximum, and the display dimmed at 3% intensity. Obviously these things will affect the overall battery life, but it's not bad from a dinky little 18650.

 

Denver IR-135 and user-side SkyTune integration

I had a play over the weekend.

UPDATE July 2023: The URLs have changed. Where it used to be /newweb/php/..., it is now just /php/....
This page has been updated accordingly.

There are four prerequisites:

These files are for building arrays in JavaScript, so all come through as one lump. It may be easier for you to read them in your text editor if you replace "{" with "\n{".

 

The Genre list

The genre list is for matching the genre numbers to their names. The file begins with the text {"genre_name":[ and ends with ]} because it's a JavaScript array.

In between are numerous genres, sorted in alphabetical order, that look like this:

{"id":"88","name":"00s & 10s","clzId":"2"},
Where the '88' is the genre number, the text following "name" is the genre name (in English), and clzId is either '1' (talk radio) or '2' (music).

 

The Continent list

This one is very short. Laid out much like the above, it's a set of "id"s and "name"s to define Africa (5), Americas (1), Asia (2), Europe (3), Internet only (7), MidEast (4), and Oceania (6).

 

The Country list

The countries look like this:
{"id":"138","name":"Afghanistan","continent_id":"2","has_state":0},
It finishes with a list of country numbers (in the same order as the country list) and whether or not state information is provided... which is already present in the main definition...?

The following countries have state information: Canada (2), China (6), Germany (15), and United States (1).

 

The State list

The state list provides state/region/province names for the aforementioned countries.
It looks like this:
{"id":"34","name":"Alabama","country_id":"1"},

 

Searching for stations

There are three ways to search for stations.

 

Searching by country

You'll want to send a POST request to http://www.skytune.net/php/GetStationByCountry.php with the following fields:

Here's a convenient form to fiddle with:

language
country_id
page
op
active

 

Search by genre

This is very similar to the above, but you call http://www.skytune.net/php/GetStationByGenre.php, and you pass a "genre_id" instead of the "country_id".
The "op" this time is 'G', G for Genre, but sending 'C' instead made no difference.

Here's a form to play with, and genre 38 is "Rock (punk and goth)". If you prefer something else, 52 is Classic Rock, 24 is Country, and 90 is Celtic. For others, grab a copy of the genre list...

language
genre_id
page
op
active

 

Search by text

In this case, the *_id is replaced by key which is the text string to look for, and method which is either 0 for containing, 1 for begins with, or 2 for ends with.
It's a substring match, wildcards aren't supported.
And, this time, op is 'F' for Find.

Here's a form to play with:

language
key
method
page
op
active

 

The returned data

The file begins with this:
{"stat":{"currentp":1,"lastp",1,"total":"10","count":10:,"firstr":1,"lastr":10},"stations":[
where There is regularity. For many matches, page 2's count is 30 and firstr=31, lastr=60. Page 3 is 30, 61, and 90 respectively.

Once the header has been output, a list of stations will follow, like:

{"id":"71407","name":102.7 Jack FM - Baltimore","icon":null","web":0,"act":"1","country":"1","state":"53"},

This provides the following information:

 

Sending this to your radio

You'll want to send a POST request to /doApi.cgi?SL=EN&AI=129 on your radio. Mine is at IP address 192.168.1.31 so the full URL would be: http://192.168.1.31/doApi.cgi?SL=EN&AI=129

The following fields should be supplied:

Here's a form. It won't work for you unless your radio is at IP address 192.168.1.31, but you might like to look at the HTML source to see what's going on.

chName
chUrl
chUrl2
chCountry
chGenre

Messing with the caption
Messing with the caption.

 

And translating station IDs into stream URLs?
Sadly, this is an entirely different proposition because it's not possible to get in between the radio and the WiFi access point to snoop on what's being sent and received. At least, not with my equipment.
Therefore, for now, how it actually works internally will remain an enigma.

 

Denver IR-135 IR remote control

By a lot of brute force hacking, thanks to my mobile phone and the irCode Finder app, I can tell you that the radio responds to a standard NEC control packet, as device &10EF (which is actually just device ID '10' (#3) because the &EF part is the inverted device ID.

Running at 38.222kHz (nominal), NEC codes send four bytes as follows. There's a 9ms leading burst, a 4.5ms space, the 8 bit address of the device, the 8 bit logical inverse of the address, an 8 bit command, the 8 bit logical inverse of the command, and a final 562.5µs burst to signal the end of the transmission.
The bytes are sent least significant byte first.

Here is the mapping of recognised key codes:

Device    Command    Key                    
10EF(3)   00FF(0)    0
          807F(1)    1
          40BF(2)    2
          C03F(3)    3
          20DF(4)    4
          A05F(5)    5
          609F(6)    6
          E01F(7)    7
          10EF(8)    8
          906F(9)    9
          50AF(10)   Mute
          D02F(11)   On/Off (Sleep)  <-- only when running on mains power
              (13)   -
          708F(14)   Alarm settings
              (15)   -
          08F7(16)   Home
          8877(17)   EQ
          48B7(18)   Rotate left
          C837(19)   Rotate right
          28D7(20)   Right
          A857(21)   Left
              (22)   -
          E817(23)   Favourites
          18E7(24)   Stop/Play (but only in channel info screen)
          9867(25)   Next station
              (26)   -
              (27)   -
          38C7(28)   Sleep timer
          B847(29)   Add to favourites
          7887(30)   Select (button press)
          F807(31)   Previous station
              (..)   -
          827D(65)   Volume +
          42BD(66)   Volume -
              (..)   -
          32CD(76)   Go to Internet radio -> Local radio
          B24D(77)   Go to Information menu
          728D(78)   Go to Dimmer setup
          F20D(79)   Briefly show icon to show source (My Favourite / Internet Radio)
              (..)   -

Note: There doesn't appear to be an Off keypress.

Adding all of this together, if you have an Android phone with an IR blaster/output, and the free irplus app, you can set up something like this:

IR control using the irplus app
IR control using the irplus app.

You can download the XML file of the above layout:

files/IR-135netradio20230130.irplus

Import that file into irplus and you're good to go.

 

 

Your comments:

David Pilling, 1st February 2023, 12:48
Kilner jar - invented by a relation of Jeremy Clarkson - boycott now! 
I wonder if putting in one of those desiccant sachets would help.
Rick, 1st February 2023, 15:34
The original Kilner jar was a screw top jar made in 1842. 
 
The Le Parfait jar has a clasp to keep it shut, with an attached lid, and it was first made in 1830. 
 
So no Clarkson here. ;)
David Pilling, 1st February 2023, 19:09
You're right 8-( although these days Kilner are commonly thought to be clip top - On YouTube it is possible to see the episode of Who Do you think you are?, where JC visits his past, the old jars he demonstrates are screw top.
J.G.Harston, 2nd February 2023, 02:15
I drink about the same as you, and 240 tea bags is too much before they start going stale, 1000 would be horrendous. I sometimes have people give me sacks of 500+ teabags thinking they're doing me a favour, not realising that 300+ of them will get thrown away.
Rick, 2nd February 2023, 07:36
Given the lack of decent tea, I can't afford to be overly choosy. Stale tea is better than the insipid stuff on sale here. 
However, my last few (hundred) tea bags have been functional rather than nice, which is why I'm trying out keeping them sealed.
C Ferris, 3rd February 2023, 13:43
Best to keep the Tea in the Dark!
Rick, 4th June 2023, 09:03
Okay, the radio had a full workout yesterday while I was tidying the living room. 
 
Located next to the Livebox (so a good WiFi signal) and using line out with the internal speaker muted, the battery started flashing at around the 6 hour mark, but the radio kept on playing until it finally powered itself off after six hours and forty seven minutes. 

Add a comment (v0.11) [help?]
Your name:

 
Your email (optional):

 
Validation:
Please type 73916 backwards.

 
Your comment:

 

Navi: Previous entry Display calendar Next entry
Switch to desktop version

Search:

See the rest of HeyRick :-)