Rick's b.log - 2023/01/30 |
|
It is the 21st of November 2024 You are 3.145.93.227, pleased to meet you! |
|
mailto:
blog -at- heyrick -dot- eu
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.
It went up to 8.4°C, which is more than it's been in quite a while. So
All of the rest is to do with hacking around with my new internet radio...
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.
UPDATE July 2023: The URLs have changed. Where it used to be
There are four prerequisites:
In between are numerous genres, sorted in alphabetical order, that look like this:
The following countries have state information: Canada (2), China (6), Germany (15), and United States (1).
Here's a convenient form to fiddle with:
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...
Here's a form to play with:
Once the header has been output, a list of stations will follow, like:
This provides the following information:
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.
And translating station IDs into stream URLs?
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.
Here is the mapping of recognised key codes:
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:
You can download the XML file of the above layout:
Import that file into irplus and you're good to go.
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.
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.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.
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½ hours?Denver IR-135 and user-side SkyTune integration
I had a play over the weekend.
/newweb/php/...
, it is now just /php/...
.
This page has been updated accordingly.
{
" 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.
{"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 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:
EN
', other values don't seen to make any difference (I tried FR, ES, and CN).
16
' is France and '17
' is the UK.
C
', other values tried didn't seem to make any difference, but I'm guessing 'C' for Country?
Y
', I tried 'N' and 'X', no difference.
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.
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.
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.
{"id":"71407","name":102.7 Jack FM - Baltimore","icon":null","web":0,"act":"1","country":"1","state":"53"},
"data:image\/png;base64,
" followed by a lot of gibberish. An example of an embedded PNG is WYPR-HD2 BBC World Service Stream - Baltimore, MD.
0
' and sometimes '1
'. I'm not sure what the significance is.
1
'.
0
' if not applicable.
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
Note that what you provide will be recorded in the station history, and it's not erasable (well, not without a complete system reset).
*#
' and suffixed with '#
', like '*#2878#
' for 100.7 The Bay - WZBA, but it looks like this is actually unused.
2878
') and this is used to tell the radio what to tune to.
-1
', which makes a mockery of the requirement to provide a country for custom added stations.
-1
', which makes a mockery of the requirement to provide a genre for custom added stations.
Messing with the caption.
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.
The bytes are sent least significant byte first.
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.
IR control using the irplus app.
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.
© 2023 Rick Murray |
This web page is licenced for your personal, private, non-commercial use only. No automated processing by advertising systems is permitted. RIPA notice: No consent is given for interception of page transmission. |