Having some fun with reverse vending machines – part 2

Alright, so I managed to get a few more receipts!

I got 1 receipt from the same store as before, and 1 receipt from another store (with the same machine, from the looks of it at least).
We can start with the receipt from the new store as I’m not going to go very deep into that at the moment.

I recycled one can in that store, and the EAN code on the receipt was

9 801104 699975

From this we can’t really get much info more than it’s one of the following parts that are important to identify at first (since we got 1 SEK from that can)

9 801104 699975
or
9 801104 699975

Another important thing to note, is the maker and model of the machines.

The first store that I went to, uses a “Tomra T-83 HCpIII”, while the new store I went to today uses a “Tomra T-83 HCpII”.
On the Tomra website they only advertise a “Tomra T-83 HCp”, so the III and II might be a yearly model or a firmware version (since they are not visible on the machine, only on the receipt), but I’ll see if I can dig out some more information about that.

Tomra T-83 HCp website
Tomra T-83 HCp PDF

tomra-t-83hcp_p1

So the first “light” conclusion we can draw here today, is that

1: The receipts can’t be used across stores, even if they are using the same machines.
Although the exact mechanism behind this is still unknown, I have some theories:

  • The store can decide the structure of the EAN code themselves
  • The manufacturer decides the structure per customer (meaning that it could be the same structure in the same chain of stores, although I have to confirm this later)
  • The structure of the EAN depends on the Firmware version (or that II and III model numbers which I have yet to figure out what they more exactly) – friend suggested this one

Now, putting that aside for now (since I only have one receipt anyway, and I want to finish figuring out the first store before I go with another one, although I don’t really see much point in that just yet, other than figuring out if any of the above theories are correct).

Like I mentioned before, I have a new receipt from the first store (the main one in this project).
And it looks like this:

7 cans – 1 SEK each
1 bottle – 2 SEK

And the EAN code is:

9 999900 000900

I suggested in the first blog post about this project, that it could be 907 (although I had taken 900 into consideration, I actually didn’t think it would be that since it felt the least logical to me, but hey, what the heck). So now that we know this, we now have the following list of codes (If you haven’t figured it out yet, the ones in bold are the ones I have so far):

0108
0207
0306
0405
0504
0603
0702
0801
0900
1006
2003

Now that we know all this, we’ll make another assumption.
Since we know 10 and 20, it should probably look something like this

0108
0207
0306
0405
0504
0603
0702
0801
0900
1006
1105
1204
1303
1402
1501
1600
1706
1805
1904
2003

I don’t understand why they would skip number 7 here, but the only way I can see that 20 gets number 3 as a control code is this way.
So my current assumption is that they simply use 0-8 as control numbers for 1 digit values, and 0-6 for 2 digit values.
It doesn’t feel right, and I feel that there’s more to it, but I need more data to draw any other conclusion at the moment.

But just to play around with the thought of this being the case, I made a small Perl script to print the numbers as they might look like.
The problem is here, that I don’t know what happens when the number reaches a new length in digits (like when it goes from 99 to 100), if it ignores the fact that it’s a new one and continues until the control digit reaches 0, or if it stops even if the control digit for 99 is still at 1, and then just resets to 4 right away. But I will assume the later, and then try to get a receipt for 100.

#!/usr/bin/perl
use warnings;
use strict;

my $cont = 8;
my $len = 1;
for(my $i = 1; $i <= 110; ++$i, --$cont)
{
        if($cont < 0 || $len < length($i))
        {
                $len = length($i);
                $cont = 10 - (length($i) * 2);
        }

        print $i . '0' . $cont . "n";
}

To be continued!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.