-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
356 lines (342 loc) · 82.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta><title>Practical IOT House</title><link rel="manifest" href="/manifest.json"><meta name="application-name" content="Practical IOT House"><meta name="msapplication-TileImage" content="/img/favicon.ico"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="Practical IOT House"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="description" content="Raspberry Pi develops home appliance automation, crime prevention, disaster prevention, and voice response control systems"><meta property="og:type" content="blog"><meta property="og:title" content="Practical IOT House"><meta property="og:url" content="https://kujiranodanna.github.io/"><meta property="og:site_name" content="Practical IOT House"><meta property="og:description" content="Raspberry Pi develops home appliance automation, crime prevention, disaster prevention, and voice response control systems"><meta property="og:locale" content="en_US"><meta property="og:image" content="https://kujiranodanna.github.io/img/og_image.png"><meta property="article:author" content="kujiranodanna"><meta property="twitter:card" content="summary"><meta property="twitter:image" content="/img/og_image.png"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","mainEntityOfPage":{"@type":"WebPage","@id":"https://kujiranodanna.github.io"},"headline":"Practical IOT House","image":["https://kujiranodanna.github.io/img/og_image.png"],"author":{"@type":"Person","name":"kujiranodanna"},"description":"Raspberry Pi develops home appliance automation, crime prevention, disaster prevention, and voice response control systems"}</script><link rel="icon" href="/img/favicon.ico"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.0/css/all.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@9.12.0/styles/a11y-dark.css.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;600&family=Source+Code+Pro"><link rel="stylesheet" href="/css/default.css"><style>body>.footer,body>.navbar,body>.section{opacity:0}</style><!--!--><!--!--><!--!--><!--!--><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightgallery@1.6.8/dist/css/lightgallery.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/css/justifiedGallery.min.css"><script src="https://www.googletagmanager.com/gtag/js?id=G-UA-187475715-1" async></script><script>window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-UA-187475715-1');</script><!--!--><script src="https://cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script><!--!--><!--!--><meta name="generator" content="Hexo 5.3.0"></head><body class="is-2-column"><nav class="navbar navbar-main"><div class="container"><div class="navbar-brand justify-content-center"><a class="navbar-item navbar-logo" href="/"><img src="/images/pepolinux_logo.gif" alt="Practical IOT House" height="28"></a></div><div class="navbar-menu"><div class="navbar-start"><a class="navbar-item is-active" href="/">Home</a><a class="navbar-item" href="/archives">Archives</a><a class="navbar-item" href="/categories">Categories</a><a class="navbar-item" href="/tags">Tags</a><a class="navbar-item" href="/about">About</a></div><div class="navbar-end"><a class="navbar-item" target="_blank" rel="noopener" title="Download on osdn" href="https://osdn.net/projects/pepolinux/releases/p15935"><i class="fab fa-raspberry-pi"></i></a><a class="navbar-item search" title="Search" href="javascript:;"><i class="fas fa-search"></i></a></div></div></div></nav><section class="section"><div class="container"><div class="columns"><div class="column order-2 column-main is-8-tablet is-8-desktop is-8-widescreen"><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-06-20T06:35:25.000Z" title="2021/6/20 15:35:25">2021-06-20</time></span><span class="level-item">Updated <time dateTime="2021-06-20T07:52:55.444Z" title="2021/6/20 16:52:55">2021-06-20</time></span><span class="level-item">2 minutes read (About 302 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/06/20/about_me/">About this</a></h1><div class="content"><!-- toc -->
<ul>
<li><a href="#purpose-of-this-site">Purpose of this site</a></li>
<li><a href="#author">Author</a></li>
<li><a href="#what-is-practical-iot-house">What is Practical IOT House?</a></li>
</ul>
<!-- tocstop -->
<h3><span id="purpose-of-this-site">Purpose of this site</span></h3><ul>
<li>About the hardware and software of the IOT House that has been under development for many years</li>
<li>Computers, peripherals, networks, and IT fairy tales that you have experienced so far</li>
<li><b> I hope it will be a hint for an environment where parents can compliment and raise their children. </b><ul>
<li><font color="green"> Practical use of things that children have learned from experiments and play-> Parents are pleased-> Parents praise children-> Children learn more and devise to get praise-> Parents children Compliment-> Children grow up-> Society grows up </font></li>
</ul>
</li>
</ul>
<h3><span id="author">Author</span></h3><ul>
<li>kujiranodanna: A long time ago 1970s Computer peripherals and network equipment maintenance, network engineers, part-time lecturers at IT vocational schools, part-time lecturers at universities (information basics), building management in recent years</li>
<li>People who develop and practice IOT house using Raspberry Pi or old PC and Linux</li>
</ul>
<h3><span id="what-is-practical-iot-house">What is Practical IOT House?</span></h3><ul>
<li>It is a home appliance automation, crime prevention, disaster prevention, voice response, monitoring and control system.</li>
<li>It is built with shell script, C, javascript and can be operated with a browser.<ul>
<li>Check the room temperature from the outside and operate the cooler</li>
<li>Turn on the lights of the entrance and room when it gets dark outside in the evening</li>
<li>Watering the vegetable garden at dawn based on the outside humidity</li>
<li>Email a video when the security sensor works</li>
<li>Play music at a fixed time</li>
<li>Notify by e-mail and phone (wangiri) when the fire detector issues a report</li>
<li>The underfloor ventilation fan is operated intermittently based on the outside air humidity.</li>
</ul>
</li>
<li>Introduced additional Homebridge Alexa, voice and remote control of home appliances with Alexa app</li>
<li>Let’s realize home electronics & home security with Raspberry Pi that is stowed in the back of the desk</li>
</ul>
<p><a target="_blank" rel="noopener" href="https://iot-house.jpn.org/">https://iot-house.jpn.org</a><br><img src="images/iothouse_zero_en.png" alt="Practical IOT House" title="IOT-House_zero"></p>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-06-20T02:15:37.000Z" title="2021/6/20 11:15:37">2021-06-20</time></span><span class="level-item">Updated <time dateTime="2021-06-20T07:53:05.199Z" title="2021/6/20 16:53:05">2021-06-20</time></span><span class="level-item">2 minutes read (About 346 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/06/20/iot-house_old_pc/">IOT-House_old_pc</a></h1><div class="content"><h3><span id="what-is-iot-house_old_pc">What is IOT-House_old_pc?</span></h3><ul>
<li>It’s old and it’s a home and a thing with a laptop using Windows.</li>
<li>IOT-House_old_pc is a port of IOT-House from Raspberry Pi to Ubuntu 18.04 LTS.</li>
<li>Moist Sunhayato’s MM-CP2112A to GPIO with heavy environmental gas, BME680 and temperature sensor AM2320.</li>
<li>IOT-House_old_pc is good and common because it is used.</li>
<li>For the operating environment, enter a notebook with a CPU of 1GHz and a memory of about 1GB.</li>
<li>raspberry pi zero W, the power consumption of the laptop (25W dose) is.<img width="640" alt="iot-house_old_pc_img" src="/images/IOT-House_old_pc.jpeg">
<br><img width="640" alt="Left debug MAC, Right old PC,MM-CP2112A+Self-made board,I2C sensor BME680,AM2320" src="/images/cp2112_debug.jpg">
</li>
</ul>
<h3><span id="hardware">Hardware</span></h3><ul>
<li>Please prepare the flash memory with the following capacity.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">fdisk /dev/sdb</span><br><span class="line"></span><br><span class="line">Welcome to fdisk (util-linux 2.29.2).</span><br><span class="line">Changes will remain in memory only, until you decide to write them.</span><br><span class="line">Be careful before using the write command.</span><br><span class="line"></span><br><span class="line">Command (m for help): p</span><br><span class="line">Disk /dev/mmcblk0: 7.3 GiB, 7820279808 bytes, 15273984 sectors</span><br><span class="line">Units: sectors of 1 * 512 = 512 bytes</span><br><span class="line">Sector size (logical/physical): 512 bytes / 512 bytes</span><br><span class="line">I/O size (minimum/optimal): 512 bytes / 512 bytes</span><br><span class="line">Disklabel type: dos</span><br><span class="line">Disk identifier: 0x15ae16d5</span><br></pre></td></tr></table></figure>
<h3><span id="install">Install</span></h3></li>
<li>Download the image from the URL<a target="_blank" rel="noopener" href="https://ja.osdn.net/projects/pepolinux/releases/p17881" title target>IOT-House_old_pc_xx.7z</a></li>
<li>Unzip the downloaded file, IOT-House_old_pc_xx.7z, and write IOT-House_old_pc_xx.img to flash memory, for example dd command<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">dd if=IOT-House_old_pc_xx.img of=/dev/sdb bs=100M</span><br></pre></td></tr></table></figure>
After installing the flash memory and MM-CP2112A to the USB of the laptop computer, turn on the power, it may take about 5 minutes to start up.</li>
</ul>
<h3><span id="setting">Setting</span></h3><ul>
<li><p>When the login screen appears, log in with user: remote, password: hand</p>
</li>
<li><p>Set the network settings according to each environment. By default, the preferred LAN and host name iot000</p>
</li>
<li><p>From another PC, log in with user: remote, password: hand at <a target="_blank" rel="noopener" href="http://iot000.local/">http://iot000.local</a></p>
</li>
<li><p>Set when the Control panel is displayed</p>
</li>
<li><p>Once the network settings are complete, you can shorten the startup time without the following command GUI.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl set-default multi-user.target</span><br></pre></td></tr></table></figure>
<img width="640" alt="iot-house_old_pc_control_panel-1" src="/images/iot-house_old_pc.png">
<br>
<img width="640" alt="iot-house_old_pc_control_panel-2" src="/images/iot-house_old_pc-2.png">
</li>
<li><p>The setting method is the same as IOT-House of raspberry pi</p>
</li>
</ul>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-04-13T06:33:25.000Z" title="2021/4/13 15:33:25">2021-04-13</time></span><span class="level-item">Updated <time dateTime="2021-04-13T06:51:13.011Z" title="2021/4/13 15:51:13">2021-04-13</time></span><span class="level-item">5 minutes read (About 758 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/04/13/cp2112/">cp2112_BME680</a></h1><div class="content">
<script type="text/javascript"><!--
google_ad_client="pub-8866927345406277";google_ad_host="pub-9941151214016196";google_alternate_color="FFFFFF";google_ad_width=728;google_ad_height=90;google_ad_format="728x90_as";google_ad_type="text_image";google_color_border="003399";google_color_bg="EEEEEE";google_color_link="0000FF";google_color_url="0000FF";google_color_text="000000";//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<h3><span id="what-is-cp2112">What is CP2112?</span></h3><ul>
<li><p>USB<->I2C conversion chip <a target="_blank" rel="noopener" href="https://jp.silabs.com/interface/usb-bridges/classic/device.cp2112">(Silicon Laboratories Single-Chip HID USB to SMBus Master Bridg)</a> for Linux and Windows USB You can use 8 GPIOs and I2C from, here we are using the module board of <a target="_blank" rel="noopener" href="https://www.sunhayato.co.jp/material2/ett09/item_1083">Sunhayato’s MM-CP2122A</a>.</p>
</li>
<li><p>MM-CP2122A Selling phrase<a target="_blank" rel="noopener" href="https://www.sunhayato.co.jp/material2/ett09/item_1083">I2C connection sensor and GPIO (8 pin) can be controlled directly from a PC application without programming the microcomputer.</a> is a difficult task, and programming requires an understanding of the HIDAPI and CP2112 interface specifications below.</p>
<ul>
<li><a target="_blank" rel="noopener" href="http://hidapi-d.dpldocs.info/hidapi.bindings.hid_send_feature_report.html">Hidapi Reference</a></li>
<li><a target="_blank" rel="noopener" href="https://www.silabs.com/documents/public/application-notes/an495-cp2112-interface-specification.pdf">CP2112 Reference AN495: CP2112 Interface Specification</a></li>
<li>I2C connection device verified this time <a target="_blank" rel="noopener" href="https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors/bme680/">BME680 hardware data</a></li>
</ul>
</li>
<li><p>When I connect to the USB of my lubuntu lts 18.04 Linux machine, the driver is loaded as shown below and the HID device is recognized.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"># lsmod |grep cp2112</span><br><span class="line">hid_cp2112 24576 0</span><br><span class="line">hid 102400 3 hid_cp2112,hid_generic,usbhid</span><br><span class="line"># ll /dev/hidraw-cp2112</span><br><span class="line">lrwxrwxrwx 1 root root 7 4月 6 16:54 /dev/hidraw-cp2112 -> hidraw0</span><br></pre></td></tr></table></figure></li>
<li><p>From here, we verified the operation of GPIO and I2C connection temperature/humidity sensor AM2320 and environmental gas sensor BME680 based on the above materials and collected information <a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/BME680_driver/blob/master/example/linux/pepocp2112ctl.c">pepocp2112ctl.c</a>The explanation is based on the program.</p>
<img width="640" alt="cp2112_BME680_debug" src="/images/cp2112_debug.jpg">
</li>
<li><p>Install the package for development <code>libhidapi</code></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># apt install libhidapi-dev</span><br><span class="line">libhidapi-dev libhidapi-hidraw0 libhidapi-libusb0</span><br></pre></td></tr></table></figure></li>
<li><p>Get and compile the following files<a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/BME680_driver">Fork from BoschSensortec/BME680_driver</a></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">bme680.c bme680.h bme680_defs.h pepocp2112ctl.c</span><br><span class="line"># gcc -Wall -o pepocp2112ctl pepocp2112ctl.c bme680.c -lhidapi-hidraw</span><br><span class="line"># ll</span><br><span class="line">total 144</span><br><span class="line">drwxr-xr-x 2 root root 140 4月 6 17:39 ./</span><br><span class="line">drwxr-xr-x 3 www-data www-data 840 4月 6 17:39 ../</span><br><span class="line">-rwxr-xr-x 1 root root 44364 4月 13 2019 bme680.c*</span><br><span class="line">-rwxr-xr-x 1 root root 8353 4月 13 2019 bme680.h*</span><br><span class="line">-rwxr-xr-x 1 root root 17134 4月 13 2019 bme680_defs.h*</span><br><span class="line">-rwxr-xr-x 1 root root 34644 4月 6 17:39 pepocp2112ctl*</span><br><span class="line">-rw-r--r-- 1 root root 30626 3月 28 16:26 pepocp2112ctl.c</span><br></pre></td></tr></table></figure></li>
<li><p>Programming example, SMBus Devices operation only Extract from source and explain only important parts, check the source for others. (Experience shows that GPIO needs to be operated in multiple processes, so there is a considerable amount using semaphore.)</p>
<ul>
<li>CP2112’s I2C connection device BME680 sets the I2C address, required commands, data, and byte counter in the buffer, sends it with hid_send_feature_report, and waits for a response to the command if necessary.</li>
<li>The BME680 write sets the command(CP2112_DATA_WRITE), register address, data, and number of bytes and writes it to the device.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">int8_t user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len)</span><br><span class="line">{</span><br><span class="line"> .</span><br><span class="line"> reg[0] = CP2112_DATA_WRITE;</span><br><span class="line"> reg[1] = BME680_I2C_ADDR_PRIMARY<<1;</span><br><span class="line"> reg[2] = len+1;</span><br><span class="line"> reg[3] = reg_addr;</span><br><span class="line"> for (int8_t i=4; i<len+4; i++)</span><br><span class="line"> reg[i] = reg_data[i-4];</span><br><span class="line"> rslt = hid_send_feature_report(hd, reg, len+4);</span><br></pre></td></tr></table></figure>
<ul>
<li>Dump of buffer etc. during debugging<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">user_i2c_write() dev_id: ec reg_addr: e0 len: 1</span><br><span class="line">user_i2c_write()1 rslt: 5 len: 1</span><br><span class="line">reg dump start</span><br><span class="line">0:14 1:ec 2:02 3:e0 4:b6</span><br><span class="line">reg dump end</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li>The BME680 read first sends the register address with a write command.<br>Next, send the I2C address read request command(CP2112_DATA_READ_REQ),Wait for Polling, status confirmation(CP2112_DATA_READ_RESPONS),until the data is ready(CP2112_DATA_READ_FORCE_SEND),and then read the data from the device.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br></pre></td><td class="code"><pre><span class="line">int8_t user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len)</span><br><span class="line">{</span><br><span class="line"> .</span><br><span class="line"> reg[0] = CP2112_DATA_WRITE;</span><br><span class="line"> reg[1] = BME680_I2C_ADDR_PRIMARY<<1;</span><br><span class="line"> reg[2] = 1;</span><br><span class="line"> reg[3] = reg_addr;</span><br><span class="line"> rslt = hid_send_feature_report(hd, reg, 4);</span><br><span class="line"> .</span><br><span class="line"> user_delay_ms(HID_WAIT);</span><br><span class="line"> reg[0] = CP2112_DATA_READ_REQ;</span><br><span class="line"> reg[1] = BME680_I2C_ADDR_PRIMARY<<1;</span><br><span class="line"> reg[2] = 0x00; // reads length_high</span><br><span class="line"> reg[3] = len; // reads length_low</span><br><span class="line"> rslt = hid_send_feature_report(hd, reg, 4);</span><br><span class="line"> .</span><br><span class="line"> user_delay_ms(HID_WAIT);</span><br><span class="line"> while (retry_cnt < 3)</span><br><span class="line"> {</span><br><span class="line">/* SMBus Polling */</span><br><span class="line"> reg[0] = CP2112_DATA_READ_FORCE_SEND;</span><br><span class="line"> reg[1] = 0x00; // reads length_high</span><br><span class="line"> reg[2] = len; // reads length_low</span><br><span class="line"> rslt = hid_send_feature_report(hd, reg, 3);</span><br><span class="line"> .</span><br><span class="line"> user_delay_ms(HID_WAIT);</span><br><span class="line"> rslt = hid_read_timeout(hd, buf_in, len+3, timeout);</span><br><span class="line"> .</span><br><span class="line">/*</span><br><span class="line"> buf_in[0]:hid_report ID->0x13:CP2112_DATA_READ_RESPONS</span><br><span class="line"> buf_in[1]:hid_status 0x00->Idle ,x01->Busy ,x02->Complete</span><br><span class="line"> ,buf_in[2]:hid_read_length</span><br><span class="line"> buf_in[3]-:Following_BME680_Read_Data</span><br><span class="line">*/</span><br><span class="line"> if (buf_in[0] == CP2112_DATA_READ_RESPONS)</span><br><span class="line"> {</span><br><span class="line"> if (buf_in[1] == 0x00 || buf_in[1] == 0x02 || buf_in[1] == 0x03)</span><br><span class="line"> .</span><br><span class="line"> break;</span><br><span class="line"> retry_cnt++; // Busy or Idle or Other</span><br><span class="line"> user_delay_ms(HID_WAIT);</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> if (buf_in[0] == CP2112_TRANSFER_STATUS_RESP)</span><br><span class="line"> {</span><br><span class="line"> .</span><br><span class="line"> user_delay_ms(HID_WAIT);</span><br><span class="line"> retry_cnt++;</span><br><span class="line"> continue;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> .</span><br><span class="line"> if(buf_in[2] > 0 && rslt > 3 && buf_in[2] < rslt)</span><br><span class="line"> {</span><br><span class="line"> int8_t j = buf_in[2];</span><br><span class="line"> for (int8_t i=0; i < j; i++)</span><br><span class="line"> {</span><br><span class="line"> reg_data[i] = buf_in[i+3];</span><br><span class="line"> }</span><br><span class="line"> return 0;</span><br><span class="line"> }</span><br></pre></td></tr></table></figure>
<ul>
<li>Dump of buffer etc. during debugging<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">user_i2c_read dev_id: ec reg_addr: d0 reg_data: 04 len: 1</span><br><span class="line">user_i2c_read()hid_read_timeout rslt:4 retry_cnt:0</span><br><span class="line">buf_in dump start</span><br><span class="line">0:13 1:02 2:01 3:61</span><br><span class="line">buf_in dump end</span><br><span class="line"></span><br><span class="line">user_i2c_read dev_id: ec reg_addr: 89 reg_data: 04 len: 25</span><br><span class="line">user_i2c_read()hid_read_timeout rslt:28 retry_cnt:0</span><br><span class="line">buf_in dump start</span><br><span class="line">0:13 1:02 2:19 3:40 4:a3 5:66 6:03 7:2f 8:80 9:8e 10:c9 11:d6 12:58 13:ff 14:de 15:19 16:cf 17:ff 18:2f 19:1e 20:00 21:00 22:1a 23:f3 24:e7 25:f6 26:1e 27:02</span><br><span class="line">buf_in dump end</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
</ul>
</li>
<li><p>Please check the source code below<br><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/BME680_driver">https://github.com/kujiranodanna/BME680_driver</a></p>
</li>
</ul>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-02-25T03:07:41.000Z" title="2021/2/25 12:07:41">2021-02-25</time></span><span class="level-item">Updated <time dateTime="2021-02-28T03:12:07.932Z" title="2021/2/28 12:12:07">2021-02-28</time></span><span class="level-item"><a class="link-muted" href="/categories/source/">source</a><span> / </span><a class="link-muted" href="/categories/source/epicon/">epicon</a></span><span class="level-item">5 minutes read (About 756 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/02/25/chobit_prog/epicon/">serial communication software</a></h1><div class="content"><h3><span id="what-is-serial-communication-software-epicon">What is serial communication software epicon?</span></h3><ul>
<li><p>epicon is a Linux serial communication software.</p>
</li>
<li><p>In practice IOT House uses the thermo-hygrometer AM2321 sensor and AI/DIO for control with TOCOS TWE-Lite via serial communication from the USB connection ToCoStick of Raspberry Pi.</p>
</li>
<li><p>I think that network devices such as Switch and Router that can be configured with serial ports and console PCs can be used regardless of manufacturer or model.</p>
</li>
<li><p>When automating the settings, Cisco Switch and Router copy and paste the text data created in advance and fill in the config.<br>At this time, it is important to send delay of characters and line breaks to prevent the config data from being missed.</p>
</li>
<li><p>epicon supports the transmission delay of important characters and line breaks as this serial console, and you can copy and paste the config with confidence.</p>
</li>
<li><p>In addition, file transfer software such as simple telnet and zmodem, shell, macro, start of external software, etc. CUI, but it is multifunctional and compact.</p>
</li>
<li><p>Installation<br>Download<br><a target="_blank" rel="noopener" href="https://osdn.net/projects/pepolinux/releases/p3211">https://osdn.net/projects/pepolinux/releases/p3211</a></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"># tar xvfz epicon-XX.XX.tar.gz</span><br><span class="line"># cd epicon</span><br><span class="line"># ./configure</span><br><span class="line"># make</span><br><span class="line"># make install</span><br><span class="line">uninstall</span><br><span class="line"># make uninstall</span><br></pre></td></tr></table></figure></li>
<li><p>How to use</p>
<ul>
<li>Startup, no options (com1: / dev / ttys0 port, 9600bps, 8bit non-parity)<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"># epicon</span><br><span class="line"></span><br><span class="line">** Welcome to epicon Version-5.2 Copyright Isamu Yamauchi compiled:Feb 24 2021 **</span><br><span class="line"> exec shell ~!</span><br><span class="line"> send binary files ~f</span><br><span class="line"> send break ~b</span><br><span class="line"> call rz,sz,sx,rx ~rz,~sz,~sx,~rx</span><br><span class="line"> call kermit ~sk,~rk</span><br><span class="line"> external command ~C</span><br><span class="line"> change speed ~c</span><br><span class="line"> exit ~.</span><br><span class="line"> Connected /dev/ttyS0</span><br></pre></td></tr></table></figure></li>
<li>How to exit<br><kbd>Enter</kbd><kbd>~</kbd><kbd>.</kbd></li>
<li>Communication state->to shell->コマンド入力->Return to the original communication state with exit<br><kbd>Enter</kbd><kbd>~</kbd><kbd>!</kbd><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"> epicon wait</span><br><span class="line"># ls</span><br><span class="line">AUTHORS README configure.ac install-sh</span><br><span class="line">COPYING aclocal.m4 depcomp missing</span><br><span class="line">ChangeLog autom4te.cache epicon.c patch-gkermit1.0+counter-CentOS4.2</span><br><span class="line">INSTALL config.h epicon.h patch-gkermit1.0+counter1.2.1</span><br><span class="line">Makefile.am config.h.in epicon.nr sample.scr</span><br><span class="line">Makefile.in config.status epicon_main.c stamp-h1</span><br><span class="line">NEWS configure epicon_uty.c</span><br><span class="line"># exit</span><br><span class="line">epicon run</span><br></pre></td></tr></table></figure></li>
<li>Switch settings and options available (/dev/ttyUSB0,19200bps, character delay:30ms, CR delay:50ms) In my old experience, setting this delay will not cause the config to be missed.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># epicon -d 30 -D 50 -s 19200 -l /dev/ttyUSB0</span><br></pre></td></tr></table></figure></li>
<li>Switch settings and options available (telnet, character delay:20ms, CR delay:50ms)<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"># epicon -d 20 -D 50 -n 192.168.0.1:23</span><br><span class="line"></span><br><span class="line">** Welcome to epicon Version-5.2 Copyright Isamu Yamauchi compiled:Feb 24 2021 **</span><br><span class="line"> exec shell ~!</span><br><span class="line"> send binary files ~f</span><br><span class="line"> send break ~b</span><br><span class="line"> call rz,sz,sx,rx ~rz,~sz,~sx,~rx</span><br><span class="line"> call kermit ~sk,~rk</span><br><span class="line"> external command ~C</span><br><span class="line"> change speed ~c</span><br><span class="line"> exit ~.</span><br><span class="line"></span><br><span class="line">Telnet Server 1.10 All rights reserved.</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">login :</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li><p>“-c” option: Specify external script</p>
<ul>
<li><a target="_blank" rel="noopener" href="https://mono-wireless.com/" title="mono-wireless (former: Tocos)" target>mono-wireless</a> Thermo-hygrometer AM2321 sensor, analog input, digital input/output signal from a remote location with wireless modules TWELITE and MONOSTICK Programs for remote monitoring and control
It is used in <a href="/categories/source/pepotocsctl/" title="pepotocsctl"> pepotocsctl </a>.<img width="640" alt="twelite_dip_monostick" src="/images/twelite_dip_monostick_en.png"></li>
<li>The following creates a script that reads the temperature and humidity from the AM2321 sensor and starts epicon.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"># /usr/local/bin/epicon -s 115200 -ql /dev/ttyUSBTWE-Lite -c $CMD</span><br><span class="line"># cat $CMD</span><br><span class="line">#!/bin/bash</span><br><span class="line">RETRY=5</span><br><span class="line">I2CRD="-1"</span><br><span class="line">while [ ${RETRY} -ne 0 ];do</span><br><span class="line"> retry_time=`echo -en $RANDOM |cut -c 1-2`</span><br><span class="line"> echo -en ":7888AA015C0000X\r\n"</span><br><span class="line"> msleep 50</span><br><span class="line"> read -s -t 1 I2CRD || I2CRD="-1"</span><br><span class="line"> echo -en ":7888AA015C03020004X\r\n"</span><br><span class="line"> msleep 50</span><br><span class="line"> read -s -t 1 I2CRD || I2CRD="-1"</span><br><span class="line"> msleep</span><br><span class="line"> echo -en ":7888AA025C0006X\r\n"</span><br><span class="line"> msleep 50</span><br><span class="line"> read -s -n 28 -t 1 I2CRD || I2CRD="-1"</span><br><span class="line"> TMP=`echo -en ${I2CRD} | wc -c`</span><br><span class="line"> [ ${TMP} -eq 28 ] && break</span><br><span class="line"> RETRY=$((${RETRY} - 1))</span><br><span class="line"> [ ${RETRY} -eq 0 ] && break</span><br><span class="line"> RETRY=$((${RETRY} - 1))</span><br><span class="line"> msleep $retry_time</span><br><span class="line"> I2CRD="-1"</span><br><span class="line">done</span><br><span class="line"> echo -en ${I2CRD} >/dev/stderr</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li><p>Manual excerpt</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"># man epicon</span><br><span class="line"></span><br><span class="line">epicon(1) epicon Manuals </span><br><span class="line"></span><br><span class="line">NAME</span><br><span class="line"> epicon is Easy Personal Interface Console terminal software. First I</span><br><span class="line"> am sorry. Because my English linguistic power is very shabby, this sen‐</span><br><span class="line"> tence is being translated by the machine. Because of that, read it in</span><br><span class="line"> the interpretation which it is tolerant of though it thinks that it is</span><br><span class="line"> a little funny translation.</span><br><span class="line"></span><br><span class="line">SYNOPSIS</span><br><span class="line"> usage:</span><br><span class="line"> epicon [-options [argument] [-options [argument]]</span><br><span class="line"> [-b ] <--escape cannot be used</span><br><span class="line"> [-c external_command]</span><br><span class="line"> [-d send_charcacter_delay(ms)]</span><br><span class="line"> [-D send_CR_delay(ms)]</span><br><span class="line"> [-e escape_char]</span><br><span class="line"> [-f send_file]</span><br><span class="line"> [-F send_file_effective_delay]</span><br><span class="line"> [-m ] <--input echo mode</span><br><span class="line"> [-M ] <--line mode</span><br><span class="line"> [-l com_port]</span><br><span class="line"> [-L output_log_file]</span><br><span class="line"> [-n ip_address[:port]]</span><br><span class="line"> [-p [server_port]]</span><br><span class="line"> [-q ] <--quiet mode</span><br><span class="line"> [-s speed]</span><br><span class="line"> [-v ] <--show version</span><br><span class="line"> [-x bit_length (5|6|7) parity(o|e|n) stop_bit (1|2)]</span><br><span class="line"> [-z ] <--auto rz prohibition</span><br><span class="line"></span><br><span class="line"> defaults:</span><br><span class="line"> speed: 9600b/s (Higest of 460800)</span><br></pre></td></tr></table></figure></li>
<li><p>Please check the source code below<br><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/tree/master/raspberrypi/usr/src/epicon">https://github.com/kujiranodanna/IOT-House/tree/master/raspberrypi/usr/src/epicon</a></p>
</li>
</ul>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-02-15T05:29:02.000Z" title="2021/2/15 14:29:02">2021-02-15</time></span><span class="level-item">Updated <time dateTime="2021-02-28T03:14:56.285Z" title="2021/2/28 12:14:56">2021-02-28</time></span><span class="level-item">2 minutes read (About 367 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/02/15/config_irkit/">config_irkit</a></h1><div class="content"><h3><span id="what-is-irkit">What is IRkit</span></h3><ul>
<li><a target="_blank" rel="noopener" href="https://getirkit.com/)" title="IRKit" target>IRKit</a> is a network-compatible learning infrared remote controller
</li>
</ul>
<p><img src="https://getirkit.com/images/composition.png" alt="IRKit Home appliance operation" title="IRKit Home appliance operation"></p>
<ul>
<li>At the IOT House, the Raspberry pi reads infrared data from the IRkit via WiFi, sends it on time and at each input event, and operates home appliances.</li>
</ul>
<img width="640" alt="Operate IRKit with Raspberry pi" src="/images/irkit_rasp_en.png" title="Operate IRKit with Raspberry pi">
<ul>
<li><p>Infrared data of home appliances is read from IRkit, and transmission, scheduled operation, and operation by input event are all performed from a Web browser.</p>
</li>
<li><p>If you do not know the IP address of IRkit, press the <code>Search_Set</code> button in the state of <code>DIO Settings</code> TAB text box <code>none</code> from the Web browser, and the IP address of IRkit will be After a few minutes, it will be automatically detected and displayed, and then perform the following operations.</p>
<ul>
<li>IP address auto-discovery is only possible if the Raspberry pi and IRkit IP addresses are configured in C class.<ul>
<li>Please check the source code below<br><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/www/remote-hand/irkit_search.cgi">https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/www/remote-hand/irkit_search.cgi</a></li>
</ul>
</li>
</ul>
</li>
<li><p>Infrared to IRkit Immediately after operating the remote controller, read the infrared data of home appliances from IRkit with a Web browser. (Data can be read only immediately after operating the infrared remote controller and buttons)</p>
</li>
</ul>
<img width="640" alt="irkit_rasp_reg" src="/images/irkit_reg.png">
<ul>
<li>Read the infrared data of home appliances from IRkit with Raspberry pi with the following GET command.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># curl -s -m $RETRYTIME --retry $RETRY --user-agent ${USERAGENT} http://${IP}/messages --header "X-Requested-With: PepoLinux" >${IRFILE}</span><br></pre></td></tr></table></figure></li>
<li>The read data is stored in the following json format, which is sent out at each timing to operate home appliances.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># cat .irdata_0</span><br><span class="line">{"format":"raw","freq":38,"data":[3968,1927,10762,1927,2911,1037,2911,1037,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,2813,1073,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,2911,1037,1037,1037,2911,1037,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,968,968,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,968,968,2911,968,843,1111,2911,1037,2911,1037,843,1111,2911,1037,2911,1037,843,21415,3834,1927,10762,1927,2911,1037,2911,1037,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,2813,1073,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,2911,1037,1037,1037,2911,1037,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,968,968,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,968,968,2911,968,843,1111,2911,1037,2911,1037,843,1111,2911,1037,2911,1037,843,21415,3834,1927,10762,1927,2911,1037,2911,1037,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,2813,1073,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,2911,1037,1037,1037,2911,1037,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,968,968,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,843,1111,968,968,2911,968,843,1111,2911,1037,2911,1037,843,1111,2911,1037,2911,1037,843]}</span><br></pre></td></tr></table></figure></li>
<li>To read infrared data of home appliances from IRkit with Raspberry pi, use the following POST command.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># curl -s -m $RETRYTIME --retry $RETRY --user-agent ${USERAGENT} -X POST -F upfile=@/${IRFILE} http://${IP}/messages >${DOCFILE}</span><br></pre></td></tr></table></figure></li>
<li>IRkit routine operations are performed with <code>Auto Prosess</code> Tab.</li>
</ul>
<img width="640" alt="irkit_auto_img" src="/images/irkit_post_auto.png">
<ul>
<li>IRkit input event operations are performed with <code>DIO Contorol</code> Tab.</li>
</ul>
<img width="640" alt="irkit_event_img" src="/images/irkit_post_event.png">
<ul>
<li>Please check the source code below</li>
</ul>
<p><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/www/remote-hand/irkit_reg.cgi">https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/www/remote-hand/irkit_reg.cgi</a></p>
<p><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/www/remote-hand/irkit_post.cgi">https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/www/remote-hand/irkit_post.cgi</a></p>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-02-09T05:04:59.000Z" title="2021/2/9 14:04:59">2021-02-09</time></span><span class="level-item">Updated <time dateTime="2021-02-28T03:14:56.285Z" title="2021/2/28 12:14:56">2021-02-28</time></span><span class="level-item"><a class="link-muted" href="/categories/source/">source</a><span> / </span><a class="link-muted" href="/categories/source/pepoiaq2led/">pepoiaq2led</a></span><span class="level-item">a minute read (About 169 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/02/09/chobit_prog/pepoiaq2led/">Smell sensor</a></h1><div class="content"><h3><span id="what-is-pepoiaq2led">What is pepoiaq2led</span></h3><ul>
<li>Gas resistance value read from environmental gas sensor BME680 50 counts every 5 minutes Average value 80%, temperature 10%, humidity 10% Air quality calculated from: IAQ (indoor air quality) 0 to 500 The browser is good (with numerical values) It is expressed in green)~ very_bad (red) colors.</li>
</ul>
<img width="640" alt="bme680_iaq_img" src="/images/bme680_iaq_en.png">
<ul>
<li>You can turn on the 3-color LED from the GPIO output with <code>pepoiaq2led</code>.</li>
<li>If it is always running, it can be used as an odor sensor appliance.</li>
<li><code>pepoiaq2led</code> is started via daemontools with the following command.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># cd /www/pepolinux</span><br><span class="line"># ln -s /usr/local/bin/pepoiaq2led iaqled</span><br><span class="line"># cd /service/</span><br><span class="line"># ln -s /www/pepolinux/iaqled iaqled</span><br></pre></td></tr></table></figure></li>
<li>pepoiaq2led started by daemontools is stopped/started/confirmed by the following command.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># svc -d /www/pepolinux/iaqled</span><br><span class="line"># svc -u /www/pepolinux/iaqled</span><br><span class="line"># svstat /www/pepolinux/iaqled</span><br></pre></td></tr></table></figure></li>
<li>Raspberry pi’s BME680 and 3-color LED detect the smell of garlic in a tube Demo video</li>
</ul>
<div class="video-container"><iframe src="https://www.youtube.com/embed/E2ePIIojxwU" frameborder="0" loading="lazy" allowfullscreen></iframe></div>
<ul>
<li>Please check the source code below<br><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoiaq2led">https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoiaq2led</a></li>
</ul>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-02-06T21:12:46.000Z" title="2021/2/7 6:12:46">2021-02-07</time></span><span class="level-item">Updated <time dateTime="2021-02-28T03:14:56.288Z" title="2021/2/28 12:14:56">2021-02-28</time></span><span class="level-item">a minute read (About 183 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/02/07/config_twelite/">config_twelite</a></h1><div class="content"><h3><span id="make-a-simple-illuminometer-with-a-solar-panel-of-a-one-dolloar-calculator">Make a simple illuminometer with a solar panel of a one dolloar calculator</span></h3><ul>
<li>Measure the generated voltage of the solar panel with the analog input of <a href="/tags/Wireless-GPIO/">TWELITE DIP</a></li>
</ul>
<img width="640" alt="twelite_solar_cell_img" src="/images/twlite.008_en.png">
<ul>
<li>Graph the analog input voltage, correct the variation of the generated voltage depending on the measurement location with the slice voltage, and digitize it as <code>high/low</code></li>
</ul>
<img width="640" alt="twelite_solar_cell_img" src="/images/twlite.010_en.png">
<ul>
<li>Detect sunrise and sunset at high/low, turn on/off the entrance lamp<ul>
<li>Do not simply turn the entrance lamp on and off at high/low (sunset/sunrise)</li>
<li>Turns off for 30 seconds (30000ms) every 5 minutes in consideration of crime prevention and energy saving.</li>
<li>Specific settings are done in <code>Auto Process</code> Tab<ul>
<li>Every 5 minutes from 17:00 to 24:00, <code>outdoor illuminance=low</code> is judged and <code>entrance lamp->low(30seconds)</code>30 seconds after turning off, it lights for about 4 and a half minutes.</li>
<li>Every 5 minutes from 0 to 6 o’clock, <code>Outdoor illuminance=low</code> is judged and <code>Entrance lamp->low(30seconds)</code></li>
<li>Every 5 minutes from 5 to 7 o’clock, <code>Outdoor illuminance=high</code> is judged and <code>entrance lamp->low</code> The lamp turns off after sunrise</li>
</ul>
</li>
</ul>
</li>
</ul>
<img width="640" alt="twelite_solar_cell_img" src="/images/twlite.012_en.png">
<br>
Collaboration video of Raspberry_pi and Tocos wireless module
<div class="video-container"><iframe src="https://www.youtube.com/embed/-_FqOdLbzMw" frameborder="0" loading="lazy" allowfullscreen></iframe></div>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-02-06T07:08:44.000Z" title="2021/2/6 16:08:44">2021-02-06</time></span><span class="level-item">Updated <time dateTime="2021-02-28T03:14:56.285Z" title="2021/2/28 12:14:56">2021-02-28</time></span><span class="level-item"><a class="link-muted" href="/categories/source/">source</a><span> / </span><a class="link-muted" href="/categories/source/pepotocsctl/">pepotocsctl</a></span><span class="level-item">a minute read (About 204 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/02/06/chobit_prog/pepotocsctl/">pepotocsctl</a></h1><div class="content"><h3><span id="what-is-gpio-wireless">What is GPIO wireless?</span></h3><ul>
<li> What is pepotocsctl?<a target="_blank" rel="noopener" href="https://mono-wireless.com/" title="mono-wireless (former: Tocos)" target>mono-wireless</a> The thermo-hygrometer AM2321 sensor, analog input, and digital input/output signals are separated by the wireless modules TWELITE and MONOSTICK. It is a program that can be remotely monitored and controlled from a location.<br>
<img width="640" alt="twlite_img" src="/images/twlite.002_en.png">
<br>
pepotocsctl alone does not work, you need a separate <a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/tree/master/raspberrypi/usr/src/epicon" title="epicon" target>epicon</a>.
You can operate the GPIO and AM2321 sensors of the Tocos wireless module with commands.
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocosctl</span><br><span class="line">usage /usr/local/bin/pepotocosctl read->chno:0-6 | write->chno:0-6 [DO:0|1|f] to 300000ms</span><br></pre></td></tr></table></figure>
Read for 4 ports of DI (digital input)
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># pepotocsctl 0 7</span><br></pre></td></tr></table></figure>
The most port read of DI (digital input)
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># pepotocsctl 1 1</span><br></pre></td></tr></table></figure>
DO (Digital Out Pout) Light 1 to the first port
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocsctl 1 1</span><br><span class="line">1</span><br></pre></td></tr></table></figure>
DO (Digital Out Pout) Write 1 to the first port and hold for 5 seconds
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocsctl 1 1 5000</span><br><span class="line">0</span><br></pre></td></tr></table></figure>
I2C thermo-hygrometer AM2321 sensor read
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocsctl 5</span><br><span class="line">2016/01/20,19:16:19,4.0℃,75.4%</span><br></pre></td></tr></table></figure>
Analog input read
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocosctl 6</span><br><span class="line">4080,4080,4080,4080</span><br></pre></td></tr></table></figure>
Light after read
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocosctl 0 0</span><br><span class="line">7;4080,4080,4080,4080</span><br></pre></td></tr></table></figure>
Digital input and analog input read
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocosctl 7</span><br><span class="line">f;1952,4080,4080,4080</span><br></pre></td></tr></table></figure>
Wait for the read, DI change for the specified time
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># pepotocosctl 7 120</span><br><span class="line">e;4080,4080,4080,4080</span><br></pre></td></tr></table></figure></li>
<li>Please check the source code below<br><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepotocosctl">https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepotocosctl</a></li>
</ul>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-02-04T06:25:47.000Z" title="2021/2/4 15:25:47">2021-02-04</time></span><span class="level-item">Updated <time dateTime="2021-02-06T03:23:55.578Z" title="2021/2/6 12:23:55">2021-02-06</time></span><span class="level-item"><a class="link-muted" href="/categories/source/">source</a><span> / </span><a class="link-muted" href="/categories/source/pepogpioctld/">pepogpioctld</a></span><span class="level-item">a minute read (About 192 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/02/04/chobit_prog/pepogpioctld/">pepogpioctld</a></h1><div class="content"><h3><span id="what-is-pepogpioctld">What is pepogpioctld</span></h3><ul>
<li><p>It is a daemon that quantifies the air quality based on the input / output control of gpio and the data of the environmental gas sensor BME680.</p>
</li>
<li><p>When the BME680 sensor is connected, the gas resistance value is 50 counts every 5 minutes from the <code>2021/02/04/17:22: 23,10.2,43.0,1018.9,3436</code> value created by pepobme680. Based on the average value of 80%, temperature of 10%, and humidity of 10%, the following air quality: IAQ (indoor air quality) is calculated and added.</p>
</li>
<li><p>IAQ is Sample 0(Good) to 500(Hazardous) Temperature(17-28℃):10% Humidity(40-70%):10% Gas(Gas±Gas_base/Gas_base):80%</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">[iot00f:root#] cat /www/remote-hand/tmp/.pepobme680</span><br><span class="line">2021/02/04/17:22:23,10.2,43.0,1018.9,3436</span><br><span class="line">Date/time, temperature, humidity, pressure, gas resistance</span><br><span class="line"></span><br><span class="line">[iot00f:root#] cat /www/remote-hand/tmp/.gpiodi_read_data</span><br><span class="line">di[0]=1</span><br><span class="line">di[1]=1</span><br><span class="line">di[2]=1</span><br><span class="line">di[3]=0</span><br><span class="line">gpio_i2c=17:25:15,10.2,43.0,1019,3436,21</span><br><span class="line">Date/time, temperature, humidity, pressure, gas resistance, air quality</span><br><span class="line">[iot00f:root#] cat /www/remote-hand/tmp/.gpiodo_write_data</span><br><span class="line">do[0]=0</span><br><span class="line">do[1]=0</span><br><span class="line">do[2]=0</span><br><span class="line">do[3]=0</span><br></pre></td></tr></table></figure>
<p><img src="https://osdn.net/projects/pepolinux/wiki/chobit_prog%20pepobme680/attach/BME680_Graph.001.jpeg" alt="Connect the BME680 environmental gas sensor to display a graph" title="BME680 Environmental Gas Sensor Graph"></p>
</li>
<li><p>Please check the source code below<br><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepogpioctld">https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepogpioctld</a></p>
</li>
</ul>
</div></article></div><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item">Posted <time dateTime="2021-01-30T06:02:03.000Z" title="2021/1/30 15:02:03">2021-01-30</time></span><span class="level-item">Updated <time dateTime="2021-02-04T09:04:56.504Z" title="2021/2/4 18:04:56">2021-02-04</time></span><span class="level-item"><a class="link-muted" href="/categories/source/">source</a><span> / </span><a class="link-muted" href="/categories/source/pepoalexado/">pepoalexado</a></span><span class="level-item">3 minutes read (About 382 words)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/2021/01/30/chobit_prog/pepoalexdo/">pepoalexado</a></h1><div class="content"><h3><span id="what-is-pepoalexado">What is pepoalexado</span></h3><ul>
<li><p>Created to turn on / off the lights with Alexa and listen to the temperature, get GPIO output and json data to the Raspberry Pi distributed in the IOT house<br>pepoalexado<br>usage /usr/local/bin/pepoalexado host user password [write->chno:0-17 [DO:0|1] [timer->1 to 300000ms]] or read->json_name</p>
</li>
<li><p>GPIO 3 ON<br>pepoalexado iot001.local remote hand 3 1</p>
</li>
<li><p>GPIO 3 OFF<br>pepoalexado iot001.local remote hand 3 0</p>
</li>
<li><p>Acquire json data of I2C gas sensor BME680<br>pepoalexado iot001.local remote hand gpio_i2c<br>{ “date”: “08:47:11”, “temp”: “27.5℃”, “hum”: “79.7%”, “pres”: “1006hPa”, “gas”: “2055427Ω”, “iaq”: “17” }</p>
</li>
<li><p>Acquire barometric pressure data of I2C gas sensor BME680<br>pepoalexado iot001.local remote hand gpio_i2c.pres<br>1020hPa</p>
</li>
<li><p>Get low / high outdoor illuminance-> Use for judgment such as turning on the lights in the room when the outdoor illuminance becomes dark pepoalexado iot01f.local remote hand ai2di12<br>low</p>
</li>
<li><p>GPIO port 4 input of iot01f.local low-> high Execute the event registered command dio3high<br>dio3high has registered a module camera 10 second video mail, which can activate the module camera of Raspberry Pi connected to another camera from the GPIO input event without camera connection<br>Used to activate security cameras on Alexa at Practical IOT House<br>pepoalexado iot02f.local remote hand dio3high</p>
</li>
<li><p>While a browser such as chrome is browsing <code> https://iot01f</code>, the browser returns voice operation and response with the registered wording.<br>pepoalexado iot01f.local remote hand voice_req Turn off the light-> Turn off the light and execute<br>pepoalexado iot01f.local remote hand voice_req Tell me the room temperature-> The room temperature is 24.0 ℃</p>
</li>
</ul>
<ul>
<li><p>Alexaのhomebridge/config.json Setting Example</p>
<p>Alexa, turn on the dining</p>
<p>Alexa, dining Turn off the lights</p>
<p>Alexa, security camera on</p>
<p>Alexa, security camera off</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">{{{</span><br><span class="line"> "platforms": [</span><br><span class="line"> {</span><br><span class="line"> "platform": "Alexa",</span><br><span class="line"> "name": "Alexa",</span><br><span class="line"> "username": "user",</span><br><span class="line"> "password": "pass"</span><br><span class="line"> }</span><br><span class="line"> ],</span><br><span class="line"> "accessories": [</span><br><span class="line"> {</span><br><span class="line"> "accessory": "CMD",</span><br><span class="line"> "name": "dining",</span><br><span class="line"> "on_cmd": "sudo /usr/local/bin/pepoalexado iot001.local remote hand 3 1",</span><br><span class="line"> "off_cmd": "sudo /usr/local/bin/pepoalexado iot001.local remote hand 3 0"</span><br><span class="line"> },</span><br><span class="line"> {</span><br><span class="line"> "accessory": "CMD",</span><br><span class="line"> "name": "security camera",</span><br><span class="line"> "on_cmd": "sudo /usr/local/bin/pepoalexado iot03f.local remote hand dio3low",</span><br><span class="line"> "off_cmd": "sudo /usr/local/bin/pepoalexado iot02f.local remote hand dio3high"</span><br><span class="line"> },</span><br><span class="line">}}}</span><br></pre></td></tr></table></figure></li>
<li><p>Please check the source code below<br><a target="_blank" rel="noopener" href="https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoalexado">https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoalexado</a></p>
</li>
</ul>
</div></article></div><nav class="pagination" role="navigation" aria-label="pagination"><div class="pagination-previous is-invisible is-hidden-mobile"><a href="/page/0/">Previous</a></div><div class="pagination-next"><a href="/page/2/">Next</a></div><ul class="pagination-list is-hidden-mobile"><li><a class="pagination-link is-current" href="/">1</a></li><li><a class="pagination-link" href="/page/2/">2</a></li><li><a class="pagination-link" href="/page/3/">3</a></li></ul></nav></div><div class="column column-left is-4-tablet is-4-desktop is-4-widescreen order-1"><div class="card widget" data-type="profile"><div class="card-content"><nav class="level"><div class="level-item has-text-centered flex-shrink-1"><div><figure class="image is-128x128 mx-auto mb-2"><img class="avatar" src="/img/avatar.jpg" alt="kujiranodanna"></figure><p class="title is-size-4 is-block" style="line-height:inherit;">kujiranodanna</p><p class="is-size-6 is-block">Practical IOT House</p><p class="is-size-6 is-flex justify-content-center"><i class="fas fa-map-marker-alt mr-1"></i><span>Osaka Japan</span></p></div></div></nav><nav class="level is-mobile"><div class="level-item has-text-centered is-marginless"><div><p class="heading">Posts</p><a href="/archives"><p class="title">22</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">Categories</p><a href="/categories"><p class="title">6</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">Tags</p><a href="/tags"><p class="title">20</p></a></div></div></nav><div class="level"><a class="level-item button is-primary is-rounded" href="https://github.com/kujiranodanna/IOT-House" target="_blank" rel="noopener">Follow</a></div><div class="level is-mobile"><a class="level-item button is-transparent is-marginless" target="_blank" rel="noopener" title="Github" href="https://github.com/kujiranodanna/IOT-House"><i class="fab fa-github"></i></a></div></div></div><!--!--><div class="card widget" data-type="links"><div class="card-content"><div class="menu"><h3 class="menu-label">Links</h3><ul class="menu-list"><li><a class="level is-mobile" href="https://iot-house.jpn.org" target="_blank" rel="noopener"><span class="level-left"><span class="level-item">Practical IOT House</span></span><span class="level-right"><span class="level-item tag">iot-house.jpn.org</span></span></a></li><li><a class="level is-mobile" href="https://osdn.net/projects/pepolinux" target="_blank" rel="noopener"><span class="level-left"><span class="level-item">OSDN project</span></span><span class="level-right"><span class="level-item tag">osdn.net</span></span></a></li><li><a class="level is-mobile" href="https://github.com/kujiranodanna" target="_blank" rel="noopener"><span class="level-left"><span class="level-item">GitHub</span></span><span class="level-right"><span class="level-item tag">github.com</span></span></a></li></ul></div></div></div><div class="card widget" data-type="categories"><div class="card-content"><div class="menu"><h3 class="menu-label">Categories</h3><ul class="menu-list"><li><a class="level is-mobile" href="/categories/source/"><span class="level-start"><span class="level-item">source</span></span><span class="level-end"><span class="level-item tag">5</span></span></a><ul><li><a class="level is-mobile" href="/categories/source/epicon/"><span class="level-start"><span class="level-item">epicon</span></span><span class="level-end"><span class="level-item tag">1</span></span></a></li><li><a class="level is-mobile" href="/categories/source/pepoalexado/"><span class="level-start"><span class="level-item">pepoalexado</span></span><span class="level-end"><span class="level-item tag">1</span></span></a></li><li><a class="level is-mobile" href="/categories/source/pepogpioctld/"><span class="level-start"><span class="level-item">pepogpioctld</span></span><span class="level-end"><span class="level-item tag">1</span></span></a></li><li><a class="level is-mobile" href="/categories/source/pepoiaq2led/"><span class="level-start"><span class="level-item">pepoiaq2led</span></span><span class="level-end"><span class="level-item tag">1</span></span></a></li><li><a class="level is-mobile" href="/categories/source/pepotocsctl/"><span class="level-start"><span class="level-item">pepotocsctl</span></span><span class="level-end"><span class="level-item tag">1</span></span></a></li></ul></li></ul></div></div></div><div class="card widget" data-type="recent-posts"><div class="card-content"><h3 class="menu-label">Recents</h3><article class="media"><div class="media-content"><p class="date"><time dateTime="2021-06-20T06:35:25.000Z">2021-06-20</time></p><p class="title"><a href="/2021/06/20/about_me/">About this</a></p></div></article><article class="media"><div class="media-content"><p class="date"><time dateTime="2021-06-20T02:15:37.000Z">2021-06-20</time></p><p class="title"><a href="/2021/06/20/iot-house_old_pc/">IOT-House_old_pc</a></p></div></article><article class="media"><div class="media-content"><p class="date"><time dateTime="2021-04-13T06:33:25.000Z">2021-04-13</time></p><p class="title"><a href="/2021/04/13/cp2112/">cp2112_BME680</a></p></div></article><article class="media"><div class="media-content"><p class="date"><time dateTime="2021-02-25T03:07:41.000Z">2021-02-25</time></p><p class="title"><a href="/2021/02/25/chobit_prog/epicon/">serial communication software</a></p><p class="categories"><a href="/categories/source/">source</a> / <a href="/categories/source/epicon/">epicon</a></p></div></article><article class="media"><div class="media-content"><p class="date"><time dateTime="2021-02-15T05:29:02.000Z">2021-02-15</time></p><p class="title"><a href="/2021/02/15/config_irkit/">config_irkit</a></p></div></article></div></div><div class="card widget" data-type="archives"><div class="card-content"><div class="menu"><h3 class="menu-label">Archives</h3><ul class="menu-list"><li><a class="level is-mobile" href="/archives/2021/06/"><span class="level-start"><span class="level-item">June 2021</span></span><span class="level-end"><span class="level-item tag">2</span></span></a></li><li><a class="level is-mobile" href="/archives/2021/04/"><span class="level-start"><span class="level-item">April 2021</span></span><span class="level-end"><span class="level-item tag">1</span></span></a></li><li><a class="level is-mobile" href="/archives/2021/02/"><span class="level-start"><span class="level-item">February 2021</span></span><span class="level-end"><span class="level-item tag">6</span></span></a></li><li><a class="level is-mobile" href="/archives/2021/01/"><span class="level-start"><span class="level-item">January 2021</span></span><span class="level-end"><span class="level-item tag">13</span></span></a></li></ul></div></div></div><div class="card widget" data-type="tags"><div class="card-content"><div class="menu"><h3 class="menu-label">Tags</h3><div class="field is-grouped is-grouped-multiline"><div class="control"><a class="tags has-addons" href="/tags/About-this/"><span class="tag">About this</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Automation-settings/"><span class="tag">Automation settings</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Environmental-gas-sensor-BME680/"><span class="tag">Environmental gas sensor BME680</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/I-O-event-settings/"><span class="tag">I/O event settings</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Input-settings/"><span class="tag">Input settings</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Installation/"><span class="tag">Installation</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Learning-infrared-remote-control/"><span class="tag">Learning infrared remote control</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Output-settings/"><span class="tag">Output settings</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Save-settings/"><span class="tag">Save settings</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Security-camera/"><span class="tag">Security camera</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Security-camera-application/"><span class="tag">Security camera application</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Smell-sensor/"><span class="tag">Smell sensor</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Wireless-GPIO/"><span class="tag">Wireless GPIO</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/basic-setting/"><span class="tag">basic setting</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/cp2112andBME680/"><span class="tag">cp2112andBME680</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/gmail-settings/"><span class="tag">gmail settings</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/hardware/"><span class="tag">hardware</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/illuminometer-of-one-dollar-calculator/"><span class="tag">illuminometer of one dollar calculator</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/iot-house-old-pc/"><span class="tag">iot-house_old_pc</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/serial-communication-software/"><span class="tag">serial communication software</span><span class="tag">1</span></a></div></div></div></div></div><div class="card widget" data-type="subscribe-email"><div class="card-content"><div class="menu"><h3 class="menu-label">Subscribe for updates</h3><form action="https://feedburner.google.com/fb/a/mailverify" method="post" target="popupwindow" onsubmit="window.open('https://feedburner.google.com/fb/a/mailverify?uri=','popupwindow','scrollbars=yes,width=550,height=520');return true"><input type="hidden" value="" name="uri"><input type="hidden" name="loc" value="en_US"><div class="field has-addons"><div class="control has-icons-left is-expanded"><input class="input" name="email" type="email" placeholder="Email"><span class="icon is-small is-left"><i class="fas fa-envelope"></i></span></div><div class="control"><input class="button" type="submit" value="Subscribe"></div></div></form></div></div></div></div><!--!--></div></div></section><footer class="footer"><div class="container"><div class="level"><div class="level-start"><a class="footer-logo is-block mb-2" href="/"><img src="/images/pepolinux_logo.gif" alt="Practical IOT House" height="28"></a><p class="is-size-7"><span>© 2021 kujiranodanna</span> Powered by <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a> & <a href="https://github.com/ppoffice/hexo-theme-icarus" target="_blank" rel="noopener">Icarus</a></p></div><div class="level-end"></div></div></div></footer><script src="https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js"></script><script src="https://cdn.jsdelivr.net/npm/moment@2.22.2/min/moment-with-locales.min.js"></script><script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.4/dist/clipboard.min.js" defer></script><script>moment.locale("en");</script><script>var IcarusThemeSettings = {
article: {
highlight: {
clipboard: true,
fold: 'unfolded'
}
}
};</script><script src="/js/column.js"></script><script src="/js/animation.js"></script><a id="back-to-top" title="Back to top" href="javascript:;"><i class="fas fa-chevron-up"></i></a><script src="/js/back_to_top.js" defer></script><!--!--><!--!--><!--!--><script src="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.js" defer></script><script>window.addEventListener("load", () => {
window.cookieconsent.initialise({
type: "info",
theme: "edgeless",
static: false,
position: "bottom-left",
content: {
message: "This website uses cookies to improve your experience.",
dismiss: "Got it!",
allow: "Allow cookies",
deny: "Decline",
link: "Learn more",
policy: "Cookie Policy",
href: "https://www.cookiesandyou.com/",
},
palette: {
popup: {
background: "#edeff5",
text: "#838391"
},
button: {
background: "#4b81e8"
},
},
});
});</script><script src="https://cdn.jsdelivr.net/npm/lightgallery@1.6.8/dist/js/lightgallery.min.js" defer></script><script src="https://cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/js/jquery.justifiedGallery.min.js" defer></script><script>window.addEventListener("load", () => {
if (typeof $.fn.lightGallery === 'function') {
$('.article').lightGallery({ selector: '.gallery-item' });
}
if (typeof $.fn.justifiedGallery === 'function') {
if ($('.justified-gallery > p > .gallery-item').length) {
$('.justified-gallery > p > .gallery-item').unwrap();
}
$('.justified-gallery').justifiedGallery();
}
});</script><!--!--><!--!--><!--!--><!--!--><!--!--><script src="/js/main.js" defer></script><div class="searchbox"><div class="searchbox-container"><div class="searchbox-header"><div class="searchbox-input-container"><input class="searchbox-input" type="text" placeholder="Type something..."></div><a class="searchbox-close" href="javascript:;">×</a></div><div class="searchbox-body"></div></div></div><script src="/js/insight.js" defer></script><script>document.addEventListener('DOMContentLoaded', function () {
loadInsight({"contentUrl":"/content.json"}, {"hint":"Type something...","untitled":"(Untitled)","posts":"Posts","pages":"Pages","categories":"Categories","tags":"Tags"});
});</script></body></html>