WebサヌバヌずJSフロント゚ンドを備えたwi-fiアプラむアンス制埡デバむスを組み立おたす

こんにちは、ハブロビテス。 この蚘事では、DIYぞの埓来のアプロヌチからいくらか逞脱したす-私たちの䞻な目暙は、自己蚓緎の目的で自転車を発明するのではなく、迅速か぀効率的に結果を取埗するこずです。そのため、はんだごおを初めお持っおいる人でも、これをすべお繰り返しお、1000の完成したデバむスを埗るこずができたすルヌブルず䞀日。



はじめに



圌らは怠lazが進歩の゚ンゞンだず蚀いたす。 これは、原則ずしお、本圓の声明です-私は、私がほずんど眠っおいたずきに起きお、明かりを消す必芁があるこずに垞に悩たされおいたした。 したがっお、倧孊での2幎目に、AVRkeにシンプルなデバむスをたずめお、リモヌトコントロヌルを䜿甚しおシャンデリアのオンずオフを切り替えられるようにしたした。 ただ同じ郚屋に蚭眮されおおり、珟圚5幎間、24時間幎䞭無䌑で皌働しおいたす。

リモコンを取り陀く詊みがあった埌-音声コマンド認識システム、同じAVRで、私は同時に倧孊でコヌスワヌクずしお合栌したした-それは機胜したしたが、私が望むほど満足ではなかったので、私はそれを倉曎したせんでした。

しばらくしお、ほずんどの堎合、ラむトをオンたたはオフにする必芁がある堎合、手の届く範囲内でPC、タブレット、たたはコミュニケヌタヌのいずれかが存圚するずいう理解が圢成されたした。したがっお、最も䟿利な方法はそれらを制埡するこずです。

特別な無線モゞュヌルであるNRF24L01Pの実装オプションをスケッチしたした。たずえば、このモゞュヌルのSMDバヌゞョンのサむズはわずか10x15 mmです。 同時に、管理が䟿利であり、アドレス指定、マルチ受信、受信の自動確認などを凊理する独自のプロトコルを備えおいたす。

したがっお、私の掚定によるず、このモゞュヌルには将来的に䜕らかの皮類のUSBドングルが必芁でした。Webサヌバヌを備えたコンピュヌタヌに接続しおモバむルデバむスからの制埡を可胜にし、゚グれクティブデバむスは応答トランシヌバヌを備えおいたす。

非垞に長い間、私の手はこれらのシステムのすべおに届きたせんでした-1幎の間、ワむダヌが壁から突き出おいたした。シャンデリアを含めお、私は毎回手で閉じお、「たあ、職堎で物をすくい取り、サヌキットボヌドを再接続する」ず自分に蚀いたした。

幞いなこずに、䜜業䞭の最埌のプロゞェクトはモバむルデバむスに関連しおおり、STM32や他のCortex M3が提䟛できる以䞊のこずを実行できたはずでした。たた、OpenWRTや最愛のTL-MR3020やTL- WR703、私が最近蚘事を曞いたセットアップに぀いお 。 この経隓に加えお、Linuxずwi-fiを搭茉したデバむスを䜿甚しお、このようなタスクを非垞に迅速か぀非垞に効果的に解決できるこずに気付きたした。 Wi-Fiがはるかに䟿利なためそしお、ビデオ/オヌディオを転送する必芁がある堎合-ほが唯䞀の利甚可胜、すべおの最新のデバむスでサポヌトされるワむダレス手段を提䟛するからです。

もちろん、倚数の制埡オブゞェクトがある堎合、カスタムモゞュヌルでより愚かなアクチュ゚ヌタを䜜成し、ノヌドの圹割をLinuxサヌバヌに任せるのは理にかなっおいたす。 しかし、仮想オブゞェクトに基づいおいない、自宅で実際に䜿甚する補品を補造する堎合、このアプロヌチは時間ずお金のひどい損倱に぀ながりたす。

したがっお、矎しいフロント゚ンドを備え、ボヌド、ファヌムりェア、およびドラむバヌで倧隒ぎせずに、Wi-Fiを介しお家電をオン/オフする最倧1.6KWの消費デバむスを組み立おたしょう。



゜フトりェア郚



䌝統に反しお、ハヌドりェアではなく゜フトりェア郚分から始めたしょう。これは非垞に単玔で、ルヌタヌを賌入した盎埌に、分解せずに確認できるためです。

この時点で、TL-MR3020をすでに賌入しおおり、カヌネルの再構築に関する私の蚘事を読んでもらえれば幞いです。 実際、再構築せずに、公匏のOpenWRTプロゞェクトwikiのファヌムりェアでフラッシュするだけで枈みたす。埌で気が぀いたら、必芁なスクリプトを埋め蟌むこずで簡単に独自のファヌムりェアを䜜成できたす。

では、デバむスはどのように配眮されるのでしょうか



  1. 最小限の詳现を維持するこずが重芁であるため、倖郚フラッシュドラむブたたはハブを䜿甚したせん。そのため、䜿甚可胜なメモリのサむズは4 MBに制限されおいたすが、そのうちの空き容量は通垞1〜1.5 MBです。
  2. ポむント1を考えるず、CGIをサポヌトする最も軜いWebサヌバヌを遞択したす。理想的なオプションは、アドオンなしの20キロバむトのミニhttpdでした。
  3. CGIスクリプトずしお、通垞のBashovスクリプトを䜿甚したす。 原則ずしお、この堎所では最小限のpythonアセンブリを配眮できたす。 確かに、カヌネルを再構築せずにこれを行うこずはできたせん-なぜなら ファヌムりェアがJFFSにむンストヌルされた埌にむンストヌルするすべおのものは、元々SquashFSでビルドされた堎合よりもはるかに時間がかかりたす。 実隓ずしお、私はpython-miniずmini-httpdの䞡方を盎接むメヌゞに組み蟌み、そこから䜙分なものをすべお捚おたした-むメヌゞのJFFSビルドにより、システムはオヌバヌサむズに関する゚ラヌをスロヌし、メモリに未完成のピヌスを残したしたが、SquashFSむメヌゞはうたくいき、私をただ残したした〜250 KBの空き領域で十分です。 もう1぀の泚意-内郚フラッシュドラむブからpythonを起動するず、Bashむンタヌプリタヌを起動するよりもはるかに遅く倖郚USBフラッシュドラむブよりも明らかに遅く、SPIむンタヌフェむスが圱響したす、CGIにPythonスクリプトを䜿甚するず、応答は玄1秒になりたす非垞に重芁ですが、少し面倒です。 ただし、1぀のGPIOをゞャヌクするよりも耇雑なものを曞いた堎合、巚倧で厄介なbashスクリプトに非垞に悩たされ、Pythonむンタヌプリタヌの2番目の開始に我慢したいず思いたす。
  4. bashスクリプトは、䜿甚可胜なGPIOの1぀をプルし、その䞊でLEDがハングしたす。 次に、LEDのはんだ付けを解陀し、゜リッドステヌトリレヌを取り付けたす。その制埡回路は基本的に同じLEDです。
  5. Index.htmlには小さなjs-​​codeが含たれおおり、矎しい画像を衚瀺したす。電球は抌されるず点灯/消灯し、CGIスクリプトぞの非同期リク゚ストを実行したす。たた、すでに電球を点灯しおいる堎合にN秒ごずにゞャヌクしたす別のコンピュヌタヌから-状況に応じお画像を曎新したす。
  6. キットに付属しおいる電源からすべおを䟛絊し、以前に分解し、最終デバむスのサむズを小さくするためにモゞュヌル自䜓をケヌスから取り倖したす。 必芁に応じお、この手順はオプションです-奜きなように食べるこずができたす。




始めたしょう。 この時点で、ルヌタヌを既にOpenWRTにアップグレヌドし、むヌサネットケヌブルで接続する必芁がありたす。

SSH / WinSCPを経由しおルヌタヌに移動し、 / etcに移動したす



wifiを構成する


このためには、 / etc / config / networkに移動し 、そこに曞き蟌みたす



config interface 'wlan' option proto 'dhcp'
      
      





これにより、Wi-Fiコントロヌラヌは、ホヌムWi-FiディストリビュヌタヌのDHCPから別のルヌタヌの前にあるIPルヌタヌを確実に受信したす。

/ etc / config / wirelessでは、思いやりのある最初の起動スクリプトが既に無線蚭定を生成しおおり、wi-fiモゞュヌルを含む行#option disabled 1をコメントアりトし、以䞋のセクションのようなむンタヌフェヌス蚘述子を蚘述したす。



 config wifi-iface option device radio0 option network wlan option mode sta option ssid --- option encryption psk2 option key --
      
      





これらの蚭定はWPA2-PSK甚です。 WPA-PSK暗号化の堎合はpsk、オヌプンポむントの堎合はnone、VEPの堎合はそれぞれ、wep-公匏wiki で詳现を読むこずをお勧めしたす 。

すべおが正垞であるこずを確認しおください



 wifi down wifi iwconfig wlan0
      
      





すべおが正垞であれば、 iwconfigはアクセスポむントに接続しおいるこずを通知したす。その埌、アクセスポむントはむヌサネットから切断され、wi-fi蚭定を続行したす。



GPIOを構成する


次に、ナヌザヌ空間からGPIOピンぞのアクセスを蚱可する必芁がありたす。 コアは独自にこれを行うこずができたす。このために䜕もする必芁はありたせんが、GPIOはLED点滅ドラむバヌによっお既にキャプチャされおいたす。 wikiによるず、いく぀かのアむドル状態のGPIOが地面に匕っ匵られおおり、そのサスペンダヌをはんだ付けしお、自分の目的に䜿甚できるため、LEDずそのドラむバヌに觊れるこずはできたせん。 この堎合、ドラむバヌをアンロヌドする必芁はなく、GPIOを゚クスポヌトするだけです以䞋を参照。 ただし、䜜業結果をすぐに確認するには、LED付きのピンを䜿甚したす。

/etc/rc.localに曞き蟌みたす



 rmmod leds_gpio echo 0 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio0/direction echo 0 > /sys/class/gpio/gpio0/value
      
      





これにより、リ゜ヌスを取埗したドラむバヌをアンロヌドしたす。ナヌザヌ空間でピン0を䜿甚し、LEDをオフにしお出力ず出力0を蚭定するこずを指定した埌。 今、あなたはコマンドでそれを照らすこずができたす



 echo 1 > /sys/class/gpio/gpio0/value
      
      





そしお完枈-これ



 echo 0 > /sys/class/gpio/gpio0/value
      
      





squeakがただ完了しおいないこずを忘れないでください。たず、rebootコマンドでルヌタヌを再起動し、同時に再起動埌にwi-fiがどのように䞊昇するかを確認したす。



mini-httpdを構成する


カヌネルを再構築し、その䞭にmini-httpdを構築した堎合は、構成に盎接進みたす;そうでない堎合は、リポゞトリから配眮したす



 opkg update opkg install mini-httpd
      
      





/etc/mini-httpd.confにいく぀かの小さな倉曎を加えお、最初の行が次のようになるようにしたす。



 cgipat=cgi-bin/**.sh
      
      





サヌバヌは、 / www / cgi-bin /にあるすべおのものをキックし、名前がコマンドずしお.shで終わるものをすべおキックし、その応答をブラりザに倉換したす。



ハヌドりェアボタンを構成する


Wi-Fiにアクセスしたくない堎合は、1぀のボタンに重耇したアクションをハングアップしたす。/etc/hotplug2.rulesで 、 ボタンボタンのチェックを倖すず、 ボタンをクリックするず察応するフォルダヌから凊理スクリプトが呌び出されたす。行は次のようになりたす。



 SUBSYSTEM ~~ (^net$|^input$|button$|^usb$|^ieee1394$|^block$|^atm$|^zaptel$|^tty$) {
      
      





その埌、/ etc/hotplug.d/に移動し、そこにボタンフォルダヌを䜜成し、その䞭にボタンスクリプトを䜜成したす  chmod + xボタンでコマンドを実行する暩限を蚭定するこずを忘れないでください コマンド 。



 #!/bin/sh if [ "$BUTTON" = "wps" ]; then if [ "$ACTION" = "released" ]; then state=`cat /sys/class/gpio/gpio0/value` if [ "$state" = "0" ]; then echo 1 > /sys/class/gpio/gpio0/value else echo 0 > /sys/class/gpio/gpio0/value fi fi fi
      
      





ボタンを抌すず、LEDの状態が切り替わりたす。 必芁に応じお、このボタンの䞋のLEDをコントロヌルず逆䜍盞で点灯させるこずができたす。぀たり、シャンデリアがオフの堎合、ハヌドりェアの電源ボタンが匷調衚瀺され、暗闇での怜玢が簡単になりたす。ピン0を゚クスポヌトするようにピン26をrc.localに゚クスポヌトするだけですそしお、同様の出力ラむン1/0を、れロピンの倀の出力の隣の倀に远加したす。



これはすぐに確認できたす。すべおを正しく行った堎合、ボタンを抌すずLEDのステヌタスが倉化したす。



CGIスクリプトの䜜成


ここで/ etcから出お/ wwwに移動し、 cgi-binディレクトリを䜜成したす。そこには、以䞋の内容のchmod + xを実行するlight-control.shスクリプトがありたす。



 #!/bin/sh echo "content-type: text/html" echo "" input=$(echo $QUERY_STRING | tr "&" "\n") for param in $input do name=`echo $param | cut -f 1 -d "="` value=`echo $param | cut -f 2 -d "="` if [ "$name" = "action" ]; then if [ "$value" = "on" ]; then echo 1 > /sys/class/gpio/gpio0/value elif [ "$value" = "off" ]; then echo 0 > /sys/class/gpio/gpio0/value fi fi done cat /sys/class/gpio/gpio0/value
      
      





/ Bin / shの埌の最初の2行はCGIスクリプトに必芁です-すべおが問題ないこずをブラりザに䌝え、htmlを発行したす。その埌、暙準の芁件に埓っおヘルメットが2぀\ r \ nになりたす。

次に、倉数$ QUERRY_STRINGから、泚意深いmini-httpdが配眮したパラメヌタヌを取埗し、それぞれをnameずvalueに解析したす 。 通垞、ここでは1぀のパラメヌタヌのみを䜿甚したすが、拡匵する堎合に備えお、コヌドをより䞀般的な圢匏にしおください。

さらに確認したす-action = onが䞎えられた堎合、 action = offの堎合、ダむオヌドを点灯したす -消灯したす。

その埌、 倀から読み取った倀を垞に返したす。ダむオヌドがオンの堎合は1、そうでない堎合は0を返したす。 したがっお、 action = on / off以倖のパラメヌタヌたたはたったくパラメヌタヌを指定せずに倖郚からスクリプトをプルするず、LEDの珟圚のステヌタスが取埗されたす。



フロント゚ンドを曞く


ディレクトリ/ wwwからダりンロヌドしたす。 jqueryサむトの-それでajaxク゚リを䜜成するのは本圓に䟿利です-私は人生で初めおこれらのすべおのJavaスクリプトを芋たしたこれは私の研究ず興味から最も遠い領域であるためが、Googleを䜿甚しお5分で必芁なアクションを習埗したした。 jqueryをjquery.jsずしお保存したす

ここでは、シャンデリアを象城する名前lamp_on.jpgおよびlamp_off.jpgの䞋に写真を保存したす。これらは、2぀の郚分に切り分けお簡単に合わせおGoogleから盗たれた写真でできおいたす。 必芁に応じお、任意の写真を䜿甚できたす。











同じ堎所でindex.htmlを䜜成したす。



 <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> function LampImgOn() { $('#lamp_off').hide(); $('#lamp_on').show(); } function LampImgOff() { $('#lamp_on').hide(); $('#lamp_off').show(); } function ProcessResult(data) { if(data=="1\n") LampImgOn(); else LampImgOff(); } $(document).ready(function() { $.ajaxSetup({ cache: false }); $('#lamp_on').hide(); jQuery.get('/cgi-bin/light-control.sh', {'action': 'none'}, ProcessResult); $('#lamp_on').click(function() { jQuery.get('/cgi-bin/light-control.sh', {'action': 'off'}); LampImgOff(); }) $('#lamp_off').click(function() { jQuery.get('/cgi-bin/light-control.sh', {'action': 'on'}); LampImgOn(); }) window.setInterval("jQuery.get('/cgi-bin/light-control.sh', {'action': 'none'}, ProcessResult)",2000); }); </script> </head> <body bgcolor="#000000"> <img id = 'lamp_off' src = 'lamp_off.jpg' height = '40%' style='display:none'> <img id = 'lamp_on' src = 'lamp_on.jpg' height = '40%' style='display:none'> </body> </html>
      
      







ここでは、ランプが点灯および消灯しおいる2぀の最初は䞍可芖の画像をペヌゞに配眮し、開始埌、JavaスクリプトはCGIに珟圚のステヌタスを芁求し action = noneパラメヌタヌを䜿甚、結果がProcessResultに送信され、1぀たたは別の画像がアクティブになりたす。 非同期ステヌタススむッチングリク゚スト写真のクリックむベントハンドラヌで実行されたすの埌に同じ関数が呌び出されたす。たた、タむマヌが開始され、スクリプトはステヌタスを2000ミリ秒ごずにプルしお、誰かが倉曎したむベントの関連デヌタを衚瀺したす別のペヌゞたたはハヌドりェアボタン。



実際、これですべおです。ルヌタヌのIPブラりザにアクセスしお、LEDを制埡する矎しいペヌゞをお楜しみください。 ペヌゞを開いた状態でルヌタヌボタンをクリックしお2秒間埅機するず、タむマヌからの芁求により画像自䜓が倉曎されたす。

これで、゜フトりェアの郚分は終わりたした、鉄片に行きたす。



鉄



ハヌドりェアに関しおは、状況は2぀ありたす。 実際、私たちが持っおいる回路は最も単玔です-゜リッドステヌトリレヌの制埡回路は本質的に同じLEDであり、必芁なのは、電流をオンにするのに十分な電流が流れるこずを保蚌するこずです。 S202S02の堎合、これは少なくずも8 mAです。

残念ながら、GPIOから盎接取埗するこずはできたせん。電圧はGPIO 2.6Vです。その埌、非垞に小さなケヌスに抵抗があり、公称倀は260オヌムで、LEDは玄1.5Vの電圧降䞋がありたす。 したがっお、玄4〜5 mAが流れたす。 S202S02の電圧降䞋は1.2〜1.4Vであるため、ほが同じです。 もちろん、同じケヌスで抵抗噚を探すこずもできたすが、公称倀を小さくしお再はんだ付けし、10 mAで䞍幞なGPIOをロヌドしたすが、より簡単な方法で行く方が良いです-NPNトランゞスタのベヌス-゚ミッタ接合0.75Vでは、0.7 mAの電流が流れ、コレクタヌぞのリレヌ制埡回路をオンにしたす。

問題は異なりたす。 実際には2぀ありたす。



  1. LEDのはんだ付けを解陀しLED4がある、代わりにトランゞスタをはんだ付けする必芁がありたす
  2. リレヌケヌス簡単、小さいず電源の内郚に䜕かを抌し蟌む必芁がありたす。


パラグラフ1に぀いお。回路が実行されるテキ゜ラむトは単玔です。

トラックずパッドは即座に匕きちぎられ、テクストラむトに䞀臎するはんだは、この同じテキ゜ラむトがすでに燃え始めたずきに溶け始めたす。

パラグラフ2の堎合。ケヌスが5 mm高い堎合は問題ありたせん。 しかし、残念ながら、電源ずパルストランスのコンデンサは高すぎおケヌスを閉じるこずができたせん。

残念ながら、私はあなたがケヌスに無敵を矎しく玠早く詰め蟌むこずができる理想的な魔法の解決策を芋぀けたせんでした。 倚くの束葉杖のオプションがありたす-適合するプラスチックケヌス通垞の䞀般的なオプションの賌入から始たり、元のケヌスをそのたた保持するために青い電気テヌプずゎムバンドで終わりたす。

私はその間に䜕かを遞んだ-なぜなら 私はただ倚圢のプラスチックを持っおいた、私は元のケヌスの呚囲にそれの狭いストリップを眮き、それに蓋を抌し蟌んだ。

ですから、この問題に぀いおは、自分に合った解決策を芋぀けるこずを誰もがお勧めしたす。 もちろん、倧きなケヌスを䜿甚する堎合、たたはこの小さなケヌスの倖偎にPSUを取り付ける堎合、ボヌドからコネクタをはんだ付けする必芁はありたせん。私が行ったこずを説明したす。

ボヌドが電源ずずもにケヌスに収たるように、すべおのコネクタむヌサネット、USBホスト、マむクロUSB電源をはんだから倖し、むヌサネットから絶瞁したした。 ボヌドは突然平らになりたした。 これを行う堎合は、非垞に泚意しおください。 ヘアドラむダヌからの流量が倚すぎるために䞍泚意を払ったため、システムに3.3 Vを䟛絊する重芁なU5コンバヌタヌがはんだ付けされおいたせんでした。 さらに、圌は床に吹き飛ばされ、長い間圌を探す必芁がありたした-しかし、幞いなこずに、私たちは圌をはんだ付けするこずができたした。







ゞャンパヌR113 赀䞞に泚目したす-デフォルトでは開いおいたす。 閉じたら、USBホストコネクタを介しおルヌタヌに電力を䟛絊できたす。 圌はSMDではありたせん。 したがっお、 R113を閉じ、電源甚の2本のワむダをコネクタの䞋から穎に静かにはんだ付けしたす。

ワむダヌを「土」の穎にはんだ付けするのがどれほど難しいかに気づきたしたか それはすべおの局の埋め立お地に接続されおいたす-ヒヌトシンクは半狂乱で、私のはんだごおはほずんど管理されおいたせん。

そしお、これが電源の内郚ですスケヌルのためにルヌタヌボヌドの隣







プラグに接続するために䜿甚された2本の脆匱なワむダをはんだ付けし、そこでより信頌性の高いものをはんだ付けしおから、220Vネットワヌクに接続したす。 同時に、ルヌタの電源線に盎接接続するため、USBコネクタのはんだ付けを解陀したす。

電源線が䜕にも觊れないように、はんだ付けによりリレヌを準備したす。 私はこのようにはんだ付けしたした







はんだ付け埌、熱収瞮させお抌し蟌み、電気テヌプで包むか、䜕らかのシヌラントなどで芆いたすちなみに、このシヌラントは電源の写真で芋るこずができたす-元々は䞭囜人もTBの面倒を芋おくれたす。

次に、トランゞスタをはんだ付けしたす。最初に手に入れた2N6517を手に取り、LED4のある領域にベヌスではんだ付けし、2番目に゚ミッタヌではんだ付けしたした。







だからここに。 これは必芁ありたせん。 1回の間違った動きで十分であり、䞡方のパッドを剥がすため、抵抗噚にはんだ付けする必芁がありたす。 现いワむダを䞡方のパッドにはんだ付けし、ボヌド䞊で固定しお安党な堎所に配眮するこずをお勧めしたす。 そしお、はい-あなたが䞍正確にはんだ付けするず、私のように、はんだごおでメモリチップの結論に觊れおそれらを短絡させる危険がありたす。 その埌、曲がった手を呪い、はんだ陀去ポンプ、はんだ付け甚の䞉぀線み、針で1時間クリヌニングしたす-自分で確認したす。 幞いなこずに、私はそれをクリアするこずができたしたが、信じられないほど激しいものでした。

残りはほずんどありたせん-珟圚、オヌプンコレクタヌタむプの出力残りのトランゞスタ出力があり、これにオプトカプラヌの1.3ボルトの降䞋に基づいお抵抗噚をはんだ付けしたす-぀たり、3.3Vから絊電された堎合はんだ付けされおいないコネクタヌP1に接続するのが最も簡単な方法です䞊の写真の右偎にある4番目のピン、10 mAのどこかに電流を䟛絊する必芁がありたす。これは正確に200オヌムを意味したす。

次に、電源ナニットを慎重にルヌタヌボヌドにコンダヌを䞋ろしお眮きたす。玙を眮くこずを忘れないでください。コンダヌの金属䞊郚に通電しないでください。ただし、䜕かが短絡する可胜性があるので、玙を眮いおください。 ルヌタヌの電源線は、ナニットのUSBコネクタからの穎に密閉され、リレヌのプラスピンは3.3V P1の穎4、マむナス-200Ω、トランゞスタコレクタぞの抵抗にはんだ付けされおいたす。

蓋のボスの1぀を電源装眮にかからないようにカットし、ハンドルたたは同じ倚圢䜓からロッドを切り取っお、ボタンを抌すための突起を䌞ばしたす。

たあ、私たちはそれをすべお蓋で抌し、あなたが奜きなように固定したす-倚圢、電気テヌプ、茪ゎム-これは想像力ず材料に十分です。

ルヌタの電源線に220Vを䟛絊し、シャンデリアたたはその他の家電補品のスむッチの代わりにスむッチドリレヌ線をオンにしたす。



うたくいきたしたか おめでずうございたす。シャンデリアにはLinuxベヌスのCGI Webサヌバヌがあり、ナヌザヌにJavaScript Webフロント゚ンドを提䟛したす。すべお玄1,000ルヌブルず1日の倧隒ぎです。



All Articles