瀏覽代碼

add mch2022 blog post

Thomas Buck 2 年之前
父節點
當前提交
a1aa7cb3b3
共有 93 個檔案被更改,包括 247 行新增0 行删除
  1. 222
    0
      input/blog/2022/2022_07_29_MCH2022.md
  2. 25
    0
      input/projects/drinkrobotics.md
  3. 二進制
      static/img/mch_app_1.png
  4. 二進制
      static/img/mch_app_1_small.png
  5. 二進制
      static/img/mch_app_2.png
  6. 二進制
      static/img/mch_app_2_small.png
  7. 二進制
      static/img/mch_app_3.png
  8. 二進制
      static/img/mch_app_3_small.png
  9. 二進制
      static/img/mch_app_4.png
  10. 二進制
      static/img/mch_app_4_small.png
  11. 二進制
      static/img/mch_art.jpg
  12. 二進制
      static/img/mch_art_small.jpg
  13. 二進制
      static/img/mch_badge_name.jpg
  14. 二進制
      static/img/mch_badge_name_small.jpg
  15. 二進制
      static/img/mch_badge_sensor.jpg
  16. 二進制
      static/img/mch_badge_sensor_small.jpg
  17. 二進制
      static/img/mch_bat_signal.jpg
  18. 二進制
      static/img/mch_bat_signal_small.jpg
  19. 二進制
      static/img/mch_crystals_1.jpg
  20. 二進制
      static/img/mch_crystals_1_small.jpg
  21. 二進制
      static/img/mch_crystals_2.jpg
  22. 二進制
      static/img/mch_crystals_2_small.jpg
  23. 二進制
      static/img/mch_datenklo.jpg
  24. 二進制
      static/img/mch_datenklo_small.jpg
  25. 二進制
      static/img/mch_drone.jpg
  26. 二進制
      static/img/mch_drone_small.jpg
  27. 二進制
      static/img/mch_feldtelefon.jpg
  28. 二進制
      static/img/mch_feldtelefon_small.jpg
  29. 二進制
      static/img/mch_food_1.jpg
  30. 二進制
      static/img/mch_food_1_small.jpg
  31. 二進制
      static/img/mch_food_2.jpg
  32. 二進制
      static/img/mch_food_2_small.jpg
  33. 二進制
      static/img/mch_food_3.jpg
  34. 二進制
      static/img/mch_food_3_small.jpg
  35. 二進制
      static/img/mch_food_4.jpg
  36. 二進制
      static/img/mch_food_4_small.jpg
  37. 二進制
      static/img/mch_frubar_grill_1.jpg
  38. 二進制
      static/img/mch_frubar_grill_1_small.jpg
  39. 二進制
      static/img/mch_frubar_grill_2.jpg
  40. 二進制
      static/img/mch_frubar_grill_2_small.jpg
  41. 二進制
      static/img/mch_frubar_night.jpg
  42. 二進制
      static/img/mch_frubar_night_small.jpg
  43. 二進制
      static/img/mch_frubar_rm.jpg
  44. 二進制
      static/img/mch_frubar_rm_small.jpg
  45. 二進制
      static/img/mch_lamp_1.jpg
  46. 二進制
      static/img/mch_lamp_1_small.jpg
  47. 二進制
      static/img/mch_lamp_2.jpg
  48. 二進制
      static/img/mch_lamp_2_small.jpg
  49. 二進制
      static/img/mch_lamp_3.jpg
  50. 二進制
      static/img/mch_lamp_3_small.jpg
  51. 二進制
      static/img/mch_night_1.jpg
  52. 二進制
      static/img/mch_night_1_small.jpg
  53. 二進制
      static/img/mch_night_2.jpg
  54. 二進制
      static/img/mch_night_2_small.jpg
  55. 二進制
      static/img/mch_night_3.jpg
  56. 二進制
      static/img/mch_night_3_small.jpg
  57. 二進制
      static/img/mch_pattern.png
  58. 二進制
      static/img/mch_pozilei.jpg
  59. 二進制
      static/img/mch_pozilei_small.jpg
  60. 二進制
      static/img/mch_ring_of_fire.jpg
  61. 二進制
      static/img/mch_ring_of_fire_small.jpg
  62. 二進制
      static/img/mch_sauna.jpg
  63. 二進制
      static/img/mch_sauna_small.jpg
  64. 二進制
      static/img/mch_seat.jpg
  65. 二進制
      static/img/mch_seat_small.jpg
  66. 二進制
      static/img/mch_stage.jpg
  67. 二進制
      static/img/mch_stage_small.jpg
  68. 二進制
      static/img/mch_tents.jpg
  69. 二進制
      static/img/mch_tents_night.jpg
  70. 二進制
      static/img/mch_tents_night_small.jpg
  71. 二進制
      static/img/mch_tents_small.jpg
  72. 二進制
      static/img/mch_text_1.jpg
  73. 二進制
      static/img/mch_text_1_small.jpg
  74. 二進制
      static/img/mch_text_2.jpg
  75. 二進制
      static/img/mch_text_2_small.jpg
  76. 二進制
      static/img/mch_text_3.jpg
  77. 二進制
      static/img/mch_text_3_small.jpg
  78. 二進制
      static/img/mch_text_4.jpg
  79. 二進制
      static/img/mch_text_4_small.jpg
  80. 二進制
      static/img/mch_text_5.jpg
  81. 二進制
      static/img/mch_text_5_small.jpg
  82. 二進制
      static/img/mch_top_1.jpg
  83. 二進制
      static/img/mch_top_1_small.jpg
  84. 二進制
      static/img/mch_top_2.jpg
  85. 二進制
      static/img/mch_top_2_small.jpg
  86. 二進制
      static/img/mch_ubabot_1.jpg
  87. 二進制
      static/img/mch_ubabot_1_small.jpg
  88. 二進制
      static/img/mch_ubabot_2.jpg
  89. 二進制
      static/img/mch_ubabot_2_small.jpg
  90. 二進制
      static/img/mch_ubabot_3.jpg
  91. 二進制
      static/img/mch_ubabot_3_small.jpg
  92. 二進制
      static/img/mch_ubabot_4.jpg
  93. 二進制
      static/img/mch_ubabot_4_small.jpg

+ 222
- 0
input/blog/2022/2022_07_29_MCH2022.md 查看文件

@@ -0,0 +1,222 @@
1
+title: Blog
2
+post: MCH2022 - May Contain Hackers
3
+description: Nonprofit outdoor hacker camp in the Netherlands
4
+date: 2022-07-29
5
+comments: true
6
+---
7
+
8
+<style>
9
+    body {
10
+        background-image: url("/img/mch_pattern.png");
11
+        background-repeat: repeat;
12
+    }
13
+
14
+    #content {
15
+        margin-top: 20px;
16
+        padding-left: 20px;
17
+        padding-right: 20px;
18
+        border-width: 2px;
19
+        border-style: solid;
20
+        border-radius: 10px;
21
+        border-color: #32CD32;
22
+    }
23
+
24
+    #footer {
25
+        width: fit-content;
26
+        margin: auto;
27
+        margin-top: 10px;
28
+        padding-top: 5px;
29
+        padding-left: 20px;
30
+        padding-right: 20px;
31
+        border-radius: 5px;
32
+    }
33
+
34
+    #content, #footer {
35
+        background-color: #FFFFFF;
36
+    }
37
+
38
+    @media (prefers-color-scheme: dark) {
39
+        #content, #footer {
40
+            background-color: #111111;
41
+        }
42
+    }
43
+</style>
44
+
45
+<!-- ---------------------------------------------------------------------- -->
46
+
47
+From 21st to 26th of July I was at [MCH2022](https://mch2022.org) in Zeewolde.
48
+This was another iteration of the [dutch hacker camps](https://en.wikipedia.org/wiki/Quadrennial_Dutch_hacker_convention) held every four years.
49
+You can already find the talk recordings on [media.ccc.de](https://media.ccc.de/c/MCH2022).
50
+Here are some of my impressions of the event.
51
+
52
+<!--%
53
+lightgallery([
54
+    [ "img/mch_drone.jpg", "Copyright 2022 by EleRas. Used with permission." ],
55
+    [ "img/mch_top_1.jpg", "Copyright 2022 by Roo. Used with permission." ],
56
+    [ "img/mch_top_2.jpg", "Copyright 2022 by Roo. Used with permission." ],
57
+    [ "img/mch_night_1.jpg", "Copyright 2022 by EleRas. Used with permission." ],
58
+    [ "img/mch_night_2.jpg", "Copyright 2022 by EleRas. Used with permission." ],
59
+    [ "img/mch_night_3.jpg", "Copyright 2022 by EleRas. Used with permission." ],
60
+    [ "img/mch_art.jpg", "Copyright 2022 by Roo. Used with permission." ],
61
+    [ "img/mch_bat_signal.jpg", "Copyright 2022 by EleRas. Used with permission." ],
62
+    [ "img/mch_crystals_1.jpg", "Copyright 2022 by EleRas. Used with permission." ],
63
+    [ "img/mch_crystals_2.jpg", "Copyright 2022 by Roo. Used with permission." ],
64
+    [ "img/mch_stage.jpg", "Copyright 2022 by EleRas. Used with permission." ],
65
+    [ "img/mch_tents.jpg", "Copyright 2022 by EleRas. Used with permission." ],
66
+    [ "img/mch_datenklo.jpg", "Copyright 2022 by Anni1337. Used with permission." ],
67
+    [ "img/mch_feldtelefon.jpg", "Copyright 2022 by Anni1337. Used with permission." ],
68
+    [ "img/mch_pozilei.jpg", "Copyright 2022 by Anni1337. Used with permission." ],
69
+    [ "img/mch_sauna.jpg", "Copyright 2022 by Anni1337. Used with permission." ],
70
+    [ "img/mch_ring_of_fire.jpg", "Copyright 2022 by Bluemaex. Used with permission." ],
71
+    [ "img/mch_tents_night.jpg", "Copyright 2022 by Bluemaex. Used with permission." ],
72
+    [ "img/mch_text_1.jpg", "Copyright 2022 by EleRas. Used with permission." ],
73
+    [ "img/mch_text_2.jpg", "Copyright 2022 by EleRas. Used with permission." ],
74
+    [ "img/mch_text_3.jpg", "Copyright 2022 by EleRas. Used with permission." ],
75
+    [ "img/mch_text_4.jpg", "Copyright 2022 by EleRas. Used with permission." ],
76
+    [ "img/mch_text_5.jpg", "Copyright 2022 by Roo. Used with permission." ],
77
+    [ "img/mch_lamp_1.jpg", "Copyright 2022 by EleRas. Used with permission." ],
78
+    [ "img/mch_lamp_2.jpg", "Copyright 2022 by EleRas. Used with permission." ],
79
+    [ "img/mch_lamp_3.jpg", "Copyright 2022 by Roo. Used with permission." ],
80
+])
81
+%-->
82
+
83
+## Frubar Island
84
+
85
+Like at CCCamp2019 I again had the great honor to be able to stay at the [Frubar Island](http://frubar.net). [The village](https://wiki.mch2022.org/Village:Frubar) consisted of ~16 people and they all were great company!
86
+The sheer amount of stuff they brought to MCH was astounding.
87
+We basically all had to eat in the village all the time, just so we would not have to carry all the food ingredients back home.
88
+Other notable stuff included [publicly remote-controlled DMX lights](http://lights.fru.bar) all over the tent as well as a nice sound system.
89
+For the proper camping experience a bunch of IoT environment sensors were also [keeping track of things](http://dashboard.fru.bar/dashboard/view?id=1) in the tent, using the badges as a hardware platform.
90
+
91
+<!--%
92
+lightgallery([
93
+    [ "img/mch_frubar_night.jpg", "Copyright 2022 by EleRas. Used with permission." ],
94
+    [ "img/mch_frubar_rm.jpg", "Copyright 2022 by DrScream. Used with permission." ],
95
+    [ "img/mch_badge_sensor.jpg", "Copyright 2022 by EleRas. Used with permission." ],
96
+    [ "img/mch_frubar_grill_1.jpg", "Copyright 2022 by EleRas. Used with permission." ],
97
+    [ "img/mch_frubar_grill_2.jpg", "Copyright 2022 by EleRas. Used with permission." ],
98
+])
99
+%-->
100
+
101
+Besides grilling meat we also represented our swabian roots and made a huge amount of [Kässpätzle](https://en.wikipedia.org/wiki/K%C3%A4sesp%C3%A4tzle) (two batches actually), with fresh g'schabte (or rather g'siebte) Spätzle cooked on a gas stove, the cheese melted into them using a gas grill, with onions made before in a cast-iron pan.
102
+It was awesome.
103
+We are considering doing that again as `Swabian Embassy` in the future.
104
+
105
+<!--%
106
+lightgallery([
107
+    [ "img/mch_food_1.jpg", "Copyright 2022 by Bluemaex. Used with permission." ],
108
+    [ "img/mch_food_4.jpg", "Copyright 2022 by Bluemaex. Used with permission." ],
109
+    [ "img/mch_food_2.jpg", "Copyright 2022 by Bluemaex. Used with permission." ],
110
+    [ "img/mch_food_3.jpg", "Copyright 2022 by Bluemaex. Used with permission." ],
111
+])
112
+%-->
113
+
114
+## UbaBot Cocktail Machine
115
+
116
+Of course [we](http://drinkrobotics.de) also brought our [UbaBot Cocktail Machine](https://www.xythobuz.de/drinkrobotics.html) and ran it at Frubar over the whole event.
117
+Operations were slightly hindered by an unbelievable amount of wasps while the sun was out.
118
+They really loved the sugary sirups and for a considerable part of the day you could not get a drink without having to fish out at least one wasp that fell in while dispensing.
119
+
120
+Otherwise it worked great.
121
+We did not have as many guests compared to the CCCamp2019, because back then the village location was very optimal.
122
+We also didn't do any promotion, like sending out Chaospost postcards and inviting people, or hanging signs.
123
+Still we were able to use up our batch of ingredients we brought with us.
124
+
125
+We also developed a fun new feature for the machine... [⬇️](2022_07_29_MCH2022.html#app)
126
+
127
+<!--%
128
+lightgallery([
129
+    [ "img/mch_ubabot_3.jpg", "UbaBot on MCH2022, front." ],
130
+    [ "img/mch_ubabot_4.jpg", "UbaBot on MCH2022, back." ],
131
+    [ "img/mch_ubabot_1.jpg", "Copyright 2022 by EleRas. Used with permission." ],
132
+    [ "img/mch_ubabot_2.jpg", "Copyright 2022 by EleRas. Used with permission." ],
133
+])
134
+%-->
135
+
136
+## Badge App Development
137
+<a class="anchor" name="app"></a>
138
+
139
+As is custromary for these events, every ticket-holder received an [MCH2022 Badge](https://badge.team/docs/badges/mch2022/) at the entrance.
140
+It contains a bunch of real nice gimmicks, like an FPGA and an RP2040 as well as an ESP32.
141
+And besides displaying a name-tag it can also be used to run custom software!
142
+
143
+<!--%
144
+lightgallery([
145
+    [ "img/mch_badge_name.jpg", "MCH2022 Badge running name app" ],
146
+])
147
+%-->
148
+
149
+Sitting in the village tent, looking at our new badges while setting up the UbaBot at the same time, we quickly had the idea to develop some kind of UbaBot app for the badge.
150
+Thinking about the UX of the machine, a way to do that soon became obvious.
151
+In our normal setup, every user should register at the UbaBot for a user account with accompanying RFID tag.
152
+This tag can then be used to log-in to the machine to dispense drinks.
153
+This way we can control who is allowed to drink, as well as keeping track of stuff like who drank what, to show approximate blood alcohol contents.
154
+Of course this means there is a time-consuming setup process where each user has to register.
155
+For events like Camps we usually provide an anonymous RFID tag at the machine, so everyone can get a drink without registering.
156
+
157
+Because in this case every potential user already has the badge, we were able to stream-line the user-registration process.
158
+You just need to press a single button on the badge to login to the machine.
159
+The API backend on the Raspberry Pi will automatically create a new user-account for the nickname stored in the badge, if it doesn't already exist, and log it in if no other user is currently logged in.
160
+The app then shows the auto-generated username and password for the newly created account, so users of the badge can then use their account as usual, if they choose to do so.
161
+
162
+For the implementation we used MicroPython on the badge.
163
+This allowed us to do stuff like send HTTP requests to the machine easily.
164
+Fortunately the badge provides an API to control the WiFi, so we could use that to connect to the local WiFi of the UbaBot.
165
+This also took care of DDoS issues, as physical proximity to the machine is required to use the app.
166
+Also this means users don't have to fiddle with their WiFi settings, the App connects to our Access Point without modifying the stored credentials.
167
+At first the code was a bit spaghetti-like, as it grew while we were experimenting.
168
+Later I re-did the logic of the application using a state-machine, similar to what I did for the [Gieß-o-mat](giessomat.html).
169
+
170
+For the backend we had to implement a bunch of API calls in our Bartendro fork.
171
+While the event was running we only really used the login functionality.
172
+But we also started to implement an endpoint to display the BAC on the badge app, as well as showing the menu to pre-order drinks.
173
+
174
+The documentation for the app development process was a bit sparse.
175
+Apparently many people had problems.
176
+There is a [MicroPython Getting Started Guide](https://badge.team/docs/badges/mch2022/software-development/micropython/introduction/) that explains how to run a REPL and load an app via USB (you need to create the folder for it via the REPL!).
177
+There is also an [API description](https://badge.team/docs/esp32-platform-firmware/esp32-app-development/api-reference/#badgeteam-platform-apis).
178
+Some other stuff I got from looking at other apps in the Hatchery.
179
+There's even a [simulator](https://wokwi.com/projects/335445228923126356) which I used to get the screenshots.
180
+
181
+The [UbaBot App](https://mch2022.badge.team/projects/ubabot) can be found in the [MCH2022 Hatchery](https://mch2022.badge.team/) or in the Hatchery App on the badge.
182
+The source code also is available on [GitHub](https://github.com/drinkrobotics/ubabot-mch2022).
183
+
184
+<!--%
185
+lightgallery([
186
+    [ "img/mch_app_1.png", "WiFi connection screen of UbaBot app" ],
187
+    [ "img/mch_app_2.png", "Login screen of UbaBot app" ],
188
+    [ "img/mch_app_3.png", "Login screen of UbaBot app" ],
189
+    [ "img/mch_app_4.png", "Status screen of UbaBot app" ],
190
+])
191
+%-->
192
+
193
+Also I have to say, this was the first time I saw a whole bunch of people running code that I wrote to actually do something useful 😊
194
+
195
+## Other Notes
196
+
197
+Unfortunately my sleeping pad broke after only one night.
198
+I tried to sleep another night on it which was a pretty bad idea, it was very uncomfortable.
199
+We then tried to find the hole to attempt a repair, but broke it even further while doing that.
200
+Fortunately there was a [Supermarket](https://wiki.mch2022.org/Supermarket) available on the campgrounds providing all basic needs, like air-mattresses, so I could sleep well for the remaining time.
201
+
202
+I was a bit surprised by the Dutch laws about serving alcohol.
203
+Apparently it is not possible to buy any alcoholic beverages from 02:00 until 14:00.
204
+Of course I was only made aware of that when I tried to order a [Tschunk](https://entropia.de/Tschunk) at the bar. At the same time, running dangerous equipment like flame-throwers immediately next to and above event visitors does not seem to be any cause for concern over there! 😅
205
+
206
+Surprisingly the train travel towards the camp was uneventful, but on our way back home things took a different turn.
207
+It started by us thinking we are in Düsseldorf, where we had to switch trains.
208
+We actually were in Duisburg and only noticed after our train we just disembarked had left.
209
+Fortunately another train drove us to Düsseldorf after only a couple of minutes waiting time, so we were able to catch our original connection without problems.
210
+Later, between Stuttgart and Ulm, another passenger [pulled the emergency breaks](https://www.presseportal.de/blaulicht/pm/116091/5282567) without reason and caused quite some delay.
211
+Because of this I could no longer catch my original connection home.
212
+On the last train from Ravensburg, where the [Rutenfest](https://www.rutenfest.com/) was held, a whole bunch of drunken passengers stepped on, causing quite some chaos and threatening violence to each other.
213
+This was quite the contrast to the camp experience just hours before 😔<br>
214
+I then had to take a Taxi for the last couple of kilometers home and arrived at about 02:00 at night.
215
+
216
+<!--%
217
+lightgallery([
218
+    [ "img/mch_seat.jpg", "Copyright 2022 by EleRas. Used with permission." ],
219
+])
220
+%-->
221
+
222
+<span class="listdesc">The background pattern for this page has been generated [with the official MCH2022 design generator](https://mch2022.org/design/).</span>

+ 25
- 0
input/projects/drinkrobotics.md 查看文件

@@ -12,6 +12,31 @@ There I got to know cocktail machines and later took part in [drinkrobotics](htt
12 12
 It originally used relais to power the pumps, but we had a motor driver PCB that we wanted to use instead, [so I wrote a Firmware for it](https://github.com/drinkrobotics/avr_pump_board).
13 13
 We got an award for this machine at Makerfaire Friedrichshafen, presented it at Makerfaire Hannover, visited the [Verschwörhaus Ulm](https://verschwoerhaus.de/) and various other events over the years.
14 14
 
15
+### MCH2022
16
+
17
+Here are some photos of our tent at the MCH2022 summer hacker camp in the Netherlands.
18
+
19
+<!--%
20
+lightgallery([
21
+    [ "img/mch_ubabot_3.jpg", "UbaBot on MCH2022, front." ],
22
+    [ "img/mch_ubabot_4.jpg", "UbaBot on MCH2022, back." ],
23
+    [ "img/mch_ubabot_1.jpg", "Copyright 2022 by EleRas. Used with permission." ],
24
+    [ "img/mch_ubabot_2.jpg", "Copyright 2022 by EleRas. Used with permission." ],
25
+])
26
+%-->
27
+
28
+We also developed an app for the MCH2022 Badge that can be used to login to the machine.
29
+The app source code can be found on [GitHub](https://github.com/drinkrobotics/ubabot-mch2022) and in the [MCH2022 Badge Hatchery](https://mch2022.badge.team/projects/ubabot).
30
+
31
+<!--%
32
+lightgallery([
33
+    [ "img/mch_app_2.png", "Login screen of UbaBot app" ],
34
+    [ "img/mch_app_4.png", "Status screen of UbaBot app" ],
35
+])
36
+%-->
37
+
38
+You can find some more on my [blog post about MCH2022](2022_07_29_MCH2022.html).
39
+
15 40
 ### CCCamp2019
16 41
 
17 42
 Here are some photos and videos of our tent at the CCCamp2019 summer hacker camp near Berlin.

二進制
static/img/mch_app_1.png 查看文件


二進制
static/img/mch_app_1_small.png 查看文件


二進制
static/img/mch_app_2.png 查看文件


二進制
static/img/mch_app_2_small.png 查看文件


二進制
static/img/mch_app_3.png 查看文件


二進制
static/img/mch_app_3_small.png 查看文件


二進制
static/img/mch_app_4.png 查看文件


二進制
static/img/mch_app_4_small.png 查看文件


二進制
static/img/mch_art.jpg 查看文件


二進制
static/img/mch_art_small.jpg 查看文件


二進制
static/img/mch_badge_name.jpg 查看文件


二進制
static/img/mch_badge_name_small.jpg 查看文件


二進制
static/img/mch_badge_sensor.jpg 查看文件


二進制
static/img/mch_badge_sensor_small.jpg 查看文件


二進制
static/img/mch_bat_signal.jpg 查看文件


二進制
static/img/mch_bat_signal_small.jpg 查看文件


二進制
static/img/mch_crystals_1.jpg 查看文件


二進制
static/img/mch_crystals_1_small.jpg 查看文件


二進制
static/img/mch_crystals_2.jpg 查看文件


二進制
static/img/mch_crystals_2_small.jpg 查看文件


二進制
static/img/mch_datenklo.jpg 查看文件


二進制
static/img/mch_datenklo_small.jpg 查看文件


二進制
static/img/mch_drone.jpg 查看文件


二進制
static/img/mch_drone_small.jpg 查看文件


二進制
static/img/mch_feldtelefon.jpg 查看文件


二進制
static/img/mch_feldtelefon_small.jpg 查看文件


二進制
static/img/mch_food_1.jpg 查看文件


二進制
static/img/mch_food_1_small.jpg 查看文件


二進制
static/img/mch_food_2.jpg 查看文件


二進制
static/img/mch_food_2_small.jpg 查看文件


二進制
static/img/mch_food_3.jpg 查看文件


二進制
static/img/mch_food_3_small.jpg 查看文件


二進制
static/img/mch_food_4.jpg 查看文件


二進制
static/img/mch_food_4_small.jpg 查看文件


二進制
static/img/mch_frubar_grill_1.jpg 查看文件


二進制
static/img/mch_frubar_grill_1_small.jpg 查看文件


二進制
static/img/mch_frubar_grill_2.jpg 查看文件


二進制
static/img/mch_frubar_grill_2_small.jpg 查看文件


二進制
static/img/mch_frubar_night.jpg 查看文件


二進制
static/img/mch_frubar_night_small.jpg 查看文件


二進制
static/img/mch_frubar_rm.jpg 查看文件


二進制
static/img/mch_frubar_rm_small.jpg 查看文件


二進制
static/img/mch_lamp_1.jpg 查看文件


二進制
static/img/mch_lamp_1_small.jpg 查看文件


二進制
static/img/mch_lamp_2.jpg 查看文件


二進制
static/img/mch_lamp_2_small.jpg 查看文件


二進制
static/img/mch_lamp_3.jpg 查看文件


二進制
static/img/mch_lamp_3_small.jpg 查看文件


二進制
static/img/mch_night_1.jpg 查看文件


二進制
static/img/mch_night_1_small.jpg 查看文件


二進制
static/img/mch_night_2.jpg 查看文件


二進制
static/img/mch_night_2_small.jpg 查看文件


二進制
static/img/mch_night_3.jpg 查看文件


二進制
static/img/mch_night_3_small.jpg 查看文件


二進制
static/img/mch_pattern.png 查看文件


二進制
static/img/mch_pozilei.jpg 查看文件


二進制
static/img/mch_pozilei_small.jpg 查看文件


二進制
static/img/mch_ring_of_fire.jpg 查看文件


二進制
static/img/mch_ring_of_fire_small.jpg 查看文件


二進制
static/img/mch_sauna.jpg 查看文件


二進制
static/img/mch_sauna_small.jpg 查看文件


二進制
static/img/mch_seat.jpg 查看文件


二進制
static/img/mch_seat_small.jpg 查看文件


二進制
static/img/mch_stage.jpg 查看文件


二進制
static/img/mch_stage_small.jpg 查看文件


二進制
static/img/mch_tents.jpg 查看文件


二進制
static/img/mch_tents_night.jpg 查看文件


二進制
static/img/mch_tents_night_small.jpg 查看文件


二進制
static/img/mch_tents_small.jpg 查看文件


二進制
static/img/mch_text_1.jpg 查看文件


二進制
static/img/mch_text_1_small.jpg 查看文件


二進制
static/img/mch_text_2.jpg 查看文件


二進制
static/img/mch_text_2_small.jpg 查看文件


二進制
static/img/mch_text_3.jpg 查看文件


二進制
static/img/mch_text_3_small.jpg 查看文件


二進制
static/img/mch_text_4.jpg 查看文件


二進制
static/img/mch_text_4_small.jpg 查看文件


二進制
static/img/mch_text_5.jpg 查看文件


二進制
static/img/mch_text_5_small.jpg 查看文件


二進制
static/img/mch_top_1.jpg 查看文件


二進制
static/img/mch_top_1_small.jpg 查看文件


二進制
static/img/mch_top_2.jpg 查看文件


二進制
static/img/mch_top_2_small.jpg 查看文件


二進制
static/img/mch_ubabot_1.jpg 查看文件


二進制
static/img/mch_ubabot_1_small.jpg 查看文件


二進制
static/img/mch_ubabot_2.jpg 查看文件


二進制
static/img/mch_ubabot_2_small.jpg 查看文件


二進制
static/img/mch_ubabot_3.jpg 查看文件


二進制
static/img/mch_ubabot_3_small.jpg 查看文件


二進制
static/img/mch_ubabot_4.jpg 查看文件


二進制
static/img/mch_ubabot_4_small.jpg 查看文件


Loading…
取消
儲存