泚ïŒHackerèªã®èšäºã®å®å šçã®åºçç©ã·ãªãŒãºãç¶ç¶ããŸãã èè ã®ã¹ãã«ãšå¥èªç¹ãä¿åãããŸããã
ã¢ãã®ã€ã³ã¿ãŒãããã¯ãåãªãã¹ããŒãããŒã ãã¹ããŒãããžãã¹ã§ã¯ãããŸããã å°é家ã¯ãè¿ãå°æ¥ãæ°ååã®ããã€ã¹ãããŸããŸãªåéã®ããŸããŸãªåé¡ã解決ãããšäºæž¬ããŠããŸãã ã¯ãã圌ãã¯ãã§ã«å€ãã®åé¡ã解決ããŠããŸãã
ããšãã°ãæãäžè¬çãªã¿ã¹ã¯ãåæããŠã¿ãŸããããã»ã³ãµãŒãæèŒããããã€ã¹ã¯ããã®ã»ã³ãµãŒããååŸããããŒã¿ãã¯ã©ãŠãã«éä¿¡ããŸãã 次ã®åçã«ãå ã»ã³ãµãŒïŒãã©ãã¬ãžã¹ã¿ãŒïŒããããŒã¿ãååŸããããã€ã¹ã®æãç°¡åãªäŸã瀺ããŸãã
ãã®ããã€ã¹ã¯ããã€ã¯ãUSBã³ãã¯ã¿ãã絊é»ã§ããŸãã æèŒãããŠããGenuino MKR1000ã¯ãçµ±åWi-Fiã¢ãžã¥ãŒã«ã§ãã æéã¯çŽ35ç±³ãã«ã§ãã éåžžãããã»ã³ãµãŒãå¥ã®ã»ã³ãµãŒã«çœ®ãæããŠããåè·¯ãç¹ã«è€éã«ãªãããšã¯ãããŸããã ã芧ã®ããã«ãããã¯ã¢ãããããä¿¡å·ãå®å®ãããããŸããŸãªå¹²æžã圱é¿ãäžããªãããã«ããæµæã䜿çšãããŠããŸãã ããããããã«ã€ããŠã¯éåžžã«å€ãã®å°éæç®ããããŸãã ä»ãäœãä»ã®ãã®ã«ã€ããŠã
Azureã¯ã©ãŠãã§åäœããããã€ã¹ã®æ¬¡ã®æ©èœå³ãèŠãŠã¿ãŸããããããã¯äžè¬çãªãã®ãšåŒã¶ããšãã§ããŸãã
ãã®äžã§ãããã€ã¹ã¯IoTãããšå¯Ÿè©±ããŸãã IoTããã¯ãã¢ãã®ã€ã³ã¿ãŒãããã®ã»ã³ã¿ãŒãšããŠãã·ã¢èªã«ç¿»èš³ãããŠããŸãã ååãšããŠããã®ãµãŒãã¹ã¯ããã€ã¹ãšã®å¯Ÿè©±ã«äœ¿çšãããããããã®ååã¯ãã®æ¬è³ªãéåžžã«äŒããŠããŸãã ããã€ã¹ããããŒã¿ãåä¿¡ããã¡ãã»ãŒãž/ã³ãã³ããéä¿¡ã§ããŸãã
ã¢ãã®ã€ã³ã¿ãŒãããã»ã³ã¿ãŒã«å ããŠãã€ãã³ããããšåŒã°ããå¥ã®ãµãŒãã¹ãããã€ã¹ãšå¯Ÿè©±ã§ããŸãã ãããã®ãµãŒãã¹ã®æ倧ã®éãã¯ãIoT Hubã¯æ°çŸäžå°ã®ããã€ã¹ã§åäœããEvent Hubã¯æ°åå°ã®ããã€ã¹ã§åäœããŸããã1ç§ãããæ°çŸäžã®ã¡ãã»ãŒãžãåä¿¡ã§ããããšã§ãã 2çªç®ã®å€§ããªéãã¯ãIoTããã¯ããã€ã¹ã«ã³ãã³ããéä¿¡ã§ããã®ã«å¯Ÿããã€ãã³ãããã¯éä¿¡ã§ããªãããšã§ãã äžè¬ã«ãIoTããã«ã¯ããã«å€ãã®ãªãã·ã§ã³ããããŸãã ãã ããã€ãã³ãããã¯æ©æã«å»æ¢ãããŸãã ãã§ã«æžããããã«ãéåžžã«é«ã垯åå¹ ãæã£ãŠããŸãã å€ãã®å Žåãã€ãã³ãããã¯ãããã€ã¹ãšå¯Ÿè©±ããããã§ã¯ãªããäžéãµãŒãã¹ãšããŠãããžã§ã¯ãã§äœ¿çšãããŸãã
Azure IoT CenterãšAzure Event Hubsã®è©³çŽ°ãªæ¯èŒã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
IoTããã¯ãMQTTãWebSocketçµç±ã®MQTTãAMQPãWebSocketçµç±ã®AMQPãHTTPãªã©ã®ãããã³ã«ããµããŒãããŠããŸãã ã€ãã³ãããã¯ãAMQPãWebSocketçµç±ã®AMQPãããã³HTTPããµããŒãããŠããŸãã
ãããã³ã«ã®ã«ãŒã«ã«åŸã£ãŠã¡ãã»ãŒãžãçæããŠéä¿¡ããã³ãŒããäœæã§ããŸãããSDKã䜿çšããããšããå§ãããŸãã ArduinoããŒãããHTTPãããã³ã«ã䜿çšããã¡ãã»ãŒãžã®åœ¢æã¯ãã®èšäºã§æ¢ã«è°è«ãããŸããã
ãã®ã³ãŒãã¯æ©èœããŸãããçæ³ããã¯ã»ã©é ãã§ãã åãèšäºã§ãIoTããã®æ§æãšããã€ã¹ã®ãã¢ãªã³ã°ã«ã€ããŠèª¬æããŸããã
çŸåšãæ°ããæ©èœããããSDKã®äœ¿çšãæ€èšããããã®æ§æãå°ãç°ãªãåŽé¢ã§åæ€èšããŸãã ããã«ãä»ã®Azure IoTãµãŒãã¹ã®æ§æãæ€èšããŠãã ããã
IoTããã®äœæ
1ã€ã®ããã€ã¹ã§IoTãããäœæããŸãã åäžã®ããã€ã¹ã䜿çšããå ŽåãIoTããã¯ç¡æã§äœ¿çšã§ããŸãã ç§ãã¡ãæãã€ãããã®ååã
ãã³ãïŒIoTããã«ã¯ãããã€ã¹ãããã¡ã€ã«ãåä¿¡ããæ©èœããããŸãã ãã®æ©èœã¯åæ³çãªããã¯ãšããŠäœ¿çšãããå ŽåããããŸãã è€æ°ã®ããã€ã¹ããã®ããŒã¿ã¯1ã€ã®ã¡ã€ã³ããã€ã¹ã«è»¢éãããç¹å®ã®ãã©ãŒãããã®ããã¹ããã¡ã€ã«ã«æ¢ã«ä¿åãããŠã¯ã©ãŠãã«éä¿¡ãããŸãã
ããã€ã¹ãã€ã³ãäœæããŠSASãååŸãã
次ã«ãå®éã®ããã€ã¹ã«äžèŽããä»®æ³ããã€ã¹ãAzureã¯ã©ãŠãã«äœæããå¿ èŠããããŸãã è±èªã§ã¯ããã®ããã€ã¹ã¯ããã€ã¹ãã€ã³ãšåŒã°ããããã«ããã€ã¹ãæå³ããŸãã
以åã¯ãWindowsãã¹ã¯ããããŠãŒãã£ãªãã£ã®ããã€ã¹ãšã¯ã¹ãããŒã©ãŒã䜿çšããŠããã®ãããªããã€ã¹ãäœæã§ããŸããã 次ã®ãªã³ã¯ããããŠã³ããŒãããŠãææ°ã®SetupDeviceExplorer.msi
SetupDeviceExplorer.msi
èŠã€ããããiothub-explorerã¯ãã¹ãã©ãããã©ãŒã ãŠãŒãã£ãªãã£ã䜿çšã§ããŸããããã¯ãNPMïŒNode.jsããã±ãŒãžãããŒãžã£ãŒïŒã䜿çšããŠã€ã³ã¹ããŒã«ã§ããŸãã
æ°ã«ããå¿ èŠã¯ãããŸãããããèšå®ã§ããã€ã¹ãšã¯ã¹ãããŒã©ãŒãèŠã€ããããšã§ãAzureããŒã¿ã«ã§ããã€ã¹ãäºéã«äœæã§ããŸãã
ããã€ã¹ãšã¯ã¹ãããŒã©ãŒã§äœæããããã€ã¹ãã¯ãªãã¯ãããšãããã€ã¹æ å ±ãéãããšãã§ããŸãã ãããã®ãã¡ãäž»ããŒã§ããæ¥ç¶æååãååŸããå¿ èŠããããŸãã Arduinoã³ãŒãã§äœ¿çšããŸãã
ArduinoããŒããã¡ãŒã ãŠã§ã¢SSL蚌ææž
Azure IoTèªèšŒãšããŠãããã¯2ã€ã®ãªãã·ã§ã³ã䜿çšããŸãïŒSSL + SASãŸãã¯SSL + X.509蚌ææžã ããããArduinoã®ãªãœãŒã¹ã¯æåã®ãªãã·ã§ã³ã«ã®ã¿ååã§ãã ããã§ãããã®ããã€ã¹ã¯äœé»åã§ãããååãªã³ã³ãã¥ãŒãã£ã³ã°èœåããããŸããã
ãããã«ããŠããSSL蚌ææžã§ããŒãããã©ãã·ã¥ããå¿ èŠãããããšãããããŸãã
ããã¯ãã¯ãã¹ãã©ãããã©ãŒã ãŠãŒãã£ãªãã£WiFi101 Firmware Updaterã䜿çšããããArduino IDEã«çµã¿èŸŒãŸããŠããæ©èœã䜿çšããŠå®è¡ã§ããŸãã
ãããããã®åã«ãArduino IDEã§ããã€ãã®æºåãããå¿ èŠããããŸãã
WiFi101ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãã
IDEã«ã€ã³ã¹ããŒã«ãããšããã®ã©ã€ãã©ãªã®äœ¿çšäŸã衚瀺ãããŸãã FirmwareUpdaterãšåŒã°ãããããã®äŸã®1ã€ãéããŠãããŒãã«æžã蟌ãå¿ èŠããããŸãã æåã«éãïŒ
次ã«ãããŒããã€ã³ã¹ããŒã«ããŠéžæããŸãïŒIoTçšã®ããŒãã¯ãããã©ã«ãã§ã¯IDEé ä¿¡ããã±ãŒãžã«ãŸã å«ãŸããŠããŸããïŒã
ããŒããããŒãžã£ãŒãéããå¿ èŠãªããŒããæ¢ããŸãã ç§ã®å Žåãããã¯MKR1000ã§ãã
ã€ã³ã¹ããŒã«åŸãåãã¡ãã¥ãŒé ç®ã§äœ¿çšãããŠããããŒããããŒã¯ããå¿ èŠããããŸãã
ãããŠããããé 眮ãããŠããããŒããéžæããŸãã
[ã¹ã±ãã-ã¢ããããŒã]ã¡ãã¥ãŒãé£ç¶ããŠã¯ãªãã¯ãããšãã¹ã±ãããããŒãã«ã¢ããããŒããããŸãã ããã§ãã©ãã·ã¥ã§ããŸãã
æåã®ãªãã·ã§ã³ã¯ãIDEã®[ããŒã«]ã¡ãã¥ãŒ-WiFi101 FirmwareUpdaterãéãã[ãã¡ã€ã³ã®è¿œå ]ãã¯ãªãã¯ããŠãIoTããURLãè¿œå ããããšã§ãã
次ã«ãã蚌ææžãWiFiã¢ãžã¥ãŒã«ã«ã¢ããããŒãããã¯ãªãã¯ããŸãã
ãŸãã¯ãå¥ã®WiFi101 Firmware UpdaterãŠãŒãã£ãªãã£ãéããäžéšã®ããã¹ããã£ãŒã«ãã«ããã¢ãã¬ã¹ïŒç§ã®å Žåã¯ArduinoAzureHub.azure-devices.netïŒãå ¥åãã[ãã§ãã]ãã¿ã³ãã¯ãªãã¯ããŸãã
蚌ææžãã³ã³ãã¥ãŒã¿ãŒã«ããŠã³ããŒããããŸãã ãã®åŸãããã€ã¹ãæ¥ç¶ãããŠããCOMããŒããéžæãã衚瀺ããã[蚌ææžã®ã¢ããããŒã]ãã¿ã³ãã¯ãªãã¯ããå¿ èŠããããŸãã
Arduinoçšã®Azure IoTã©ã€ãã©ãªã®ã¹ã±ãããšäœ¿çš
WiFi101ã©ã€ãã©ãªãæè¿ã€ã³ã¹ããŒã«ããã®ãšåãæ¹æ³ã§ã次ã®ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãã
- AzureIoTHub
- AzureIoTUtility
- AzureIoTProtocol_HTTP
- RTCZero
ãœãŒã¹ã³ãŒããããŠã³ããŒããã
examples
ãã©ã«ããŒã«
simplesample_http
ãããžã§ã¯ãããããŸã
samd
ïŒAtmel SAMDããŒã¹ã®ããŒãïŒã®ã³ãŒããèŠã€ããããšãã§ããŸãã
ãã¡ã€ã«
iot_configs.h
cã§ã
IOT_CONFIG_CONNECTION_STRING
å€ããAzureããŒã¿ã«ã§åä¿¡ããæ¥ç¶æååã®å€ã«å²ãåœãŠãŸãã å€
IOT_CONFIG_WIFI_SSID
ããã³
IOT_CONFIG_WIFI_PASSWORD
Wi-Fiã¢ã¯ã»ã¹ãã€ã³ãã®ååãšãã®ãã¹ã¯ãŒããããããå ¥åããŸãã
ã¹ã±ããã³ãŒããåäœå¯èœã«ãªããArduinoã«ã¢ããããŒãã§ããŸãã
次ã®ã³ãŒãã¯ã¢ãã«ã説æããŠããŸãã
DECLARE_MODEL(ContosoAnemometer, WITH_DATA(ascii_char_ptr, DeviceId), WITH_DATA(int, WindSpeed), WITH_DATA(float, Temperature), WITH_DATA(float, Humidity), WITH_ACTION(TurnFanOn), WITH_ACTION(TurnFanOff), WITH_ACTION(SetAirResistance, int, Position) );
WITH_DATA
ã¯ãããã€ã¹ããéä¿¡ã§ããããŒã¿ã瀺ããŸãã
WITH_ACTION
ã¯ãããã€ã¹ãã³ãã³ã
WITH_ACTION
ãšãã«çºçããå¯èœæ§ã®ããã€ãã³ãã瀺ããŸãã
ãã¡ãããäŸã¯ãããžã§ã¯ãã®åºçºç¹ã«ãããŸããã èŠä»¶ã«åãããŠå€æŽã§ãããã³ãã¬ãŒãã äœæããã¢ã¯ã·ã§ã³ãåé€ããŠãç¬èªã®ã¢ã¯ã·ã§ã³ãäœæããããšã奜ã¿ãŸãã ç§ã®èŠç¹ã³ãŒãã¯githubã§ãã¹ããããŠããŸãã
ããã€ã¹ã®ååãšã»ã³ãµãŒããååŸããçªå·ããã³1ã€ã®ã€ãã³ããæ ŒçŽãã2ã€ã®ãã£ãŒã«ããæã€ã¢ãã«ããããŸãã
BEGIN_NAMESPACE(IoTSample); DECLARE_MODEL (LightSensorDataModel, WITH_DATA(ascii_char_ptr, deviceId), WITH_DATA(int, iotdata), WITH_ACTION(DuckAction, int, light) ); END_NAMESPACE(IoTSample);
ç§ã®å Žåã®ã¢ã¯ã·ã§ã³ã³ãŒãã¯ããã§ãïŒ
EXECUTE_COMMAND_RESULT DuckAction(LightSensorDataModel* device, int light) { digitalWrite(2, light); return EXECUTE_COMMAND_SUCCESS; }
lightãã©ã¡ãŒã¿ãŒã®å€ã«ãã£ãŠæŽæ°1ãŸãã¯0ãåä¿¡ããããã©ããã«å¿ããŠãLEDããªã³ãŸãã¯ãªãã«ããŸãã
次ã®JSONãããŒãã«éä¿¡ããããšãã€ãã³ããçºçããŸãã
{"Name" : "DuckAction", "Parameters" : {"light":1}}
ã³ãŒãã§æ¬¡ã®å€æ°ãèŠã€ããå ŽåïŒ
unsigned int minimumPollingTime = 9;
ãæ°ããã¡ãã»ãŒãžã®ããŒãªã³ã°é 延ãå€æŽã§ããŸãã ã€ãŸããããã€ã¹ãæ°ããã¡ãã»ãŒãžã衚瀺ããããã©ããã確èªããé »åºŠã å€ã¯ç§åäœã§ãã
void simplesample_http_run(void)
ã³ãŒãã«ã次ã®ã³ãŒããè¿œå ããŸãã
while (1) { myIoTdata->deviceId = "ArduinoAzureTwin"; myIoTdata->iotdata = analogRead(1); unsigned char* destination; size_t destinationSize; if (SERIALIZE(&destination, &destinationSize, myIoTdata->deviceId, myIoTdata->iotdata) != CODEFIRST_OK) { (void)printf("Failed to serializern"); } else { sendMessage(iotHubClientHandle, destination, destinationSize); } IoTHubClient_LL_DoWork(iotHubClientHandle); ThreadAPI_Sleep(1000); } DESTROY_MODEL_INSTANCE(myIoTdata);
ããã§ã¯ãã¢ããã°ããŒã¿ã¯Arduinoã«æ¥ç¶ãããŠããã¢ããã°ãã³çªå·1ããæ¯ç§ååŸãããŸãã ãã®ããŒã¿ã¯ãã¹ããªã³ã°deviceIdïŒããã€ã¹åïŒãšããŠã¯ã©ãŠãã«éä¿¡ãããããŒã¿èªäœã¯æŽæ°iotdataãšããŠéä¿¡ãããŸãã
ä»ã®AzureãµãŒãã¹ã«æ¥ç¶ãã
ããšãã°ãSQL ServerããŒã¿ããŒã¹ã«ããŒã¿ãä¿åããŸãããã Azureã¯å€ãã®ããŒã¿åœ¢åŒããµããŒãããŠããŸãããSQL Serverãæãäžè¬çãªåœ¢åŒã ãšæããŸãã ãã ããJSONããŒã¿ã倧éã«ä¿åããã«ã¯ãããããNOSQL圢åŒã®æ¹ãé©ããŠããŸãã SQL ServerããŒã¿ããŒã¹ã®äŸ¡æ Œã¯ãæé¡5ç±³ãã«ããã§ãã ã€ãŸãããã®ãéã§ãå®å šã«æ©èœãã2 Gbã¯ã©ãŠãããŒã¹ãååŸã§ããŸãã
ããŒã¿ããŒã¹äœæããã¥ã¢ã«ã¯éåžžã«èšå€§ã§ãããç¹å¥ãªãã¥ã¢ã³ã¹ã¯ãããŸããã®ã§ãå ¬åŒããã¥ã¢ã«ãžã®ãªã³ã¯ãæ®ããŸããAzureããŒã¿ã«ã§Azure SQLããŒã¿ããŒã¹ãäœæãã SQL Server Data Toolsã䜿çšããŠããŒã¿ããŒã¹ã«ããŒãã«ãäœæããŸã ã
å€ãã®å ŽåãVisual Studioãæ¢ã«ã€ã³ã¹ããŒã«ãããŠããå Žåãè¿œå ã®ã€ã³ã¹ããŒã«ã¯å¿ èŠãããŸããã
ããŒã¿ããŒã¹ãç·šéçšã«éãæãç°¡åãªæ¹æ³ã¯ãVisual Studioã¡ãã¥ãŒãã[衚瀺]-[ãµãŒããŒãšã¯ã¹ãããŒã©ãŒ]ãéžæããããšã§ãã ããã§ãAzureãµãã¹ã¯ãªãã·ã§ã³ã«æ¥ç¶ããSQL Serverãªããžã§ã¯ããšã¯ã¹ãããŒã©ãŒã§ããŒã¿ããŒã¹ãéãããšãã§ããŸãã
ããŠããã§ã«ãã®ãŠã£ã³ããŠã§ããŒãã«ãäœæã§ããŸãã
èšåããå¿ èŠããã1ã€ã®ãã€ã³ãã æ¢å®ã§ã¯ãã»ãã¥ãªãã£äžã®çç±ãããAzureã®SQL Serveryãžã®ã¢ã¯ã»ã¹ãããã³ããã«å¿ããŠãã®ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ã¯ãã¹ãŠã®IPã¢ãã¬ã¹ããéããããŸãã ã€ãŸãããŠãŒã¶ãŒåãšãã¹ã¯ãŒããç¥ã£ãŠããŠããããŒã¿ããŒã¹ã«æ¥ç¶ã§ããŸããã AzureããŒã¿ã«ã«ã¢ã¯ã»ã¹ããçŸåšã®IPãèš±å¯ãªã¹ãã«è¿œå ããå¿ èŠããããŸãã
ãã®å ŽåãIoTã§ã¯æåSãã»ãã¥ãªãã£ãæ åœããŠãããšããäºå®ã«ã€ããŠã®ãžã§ãŒã¯ã¯æ©èœããŸããã
ã¹ããªãŒã åæ
2çªç®ã«äººæ°ã®ããAzure IoTãµãŒãã¹ã¯Stream Analyticsã§ãã IoTããããããŒã¿ããŒã¹ã«ããŒã¿ãä¿åããå Žåããã®ãµãŒãã¹ãå¿ èŠã§ãã
éåžžã«ç°¡åã«äœæãããŸãã ååãèãåºããå°åã§ãªãœãŒã¹ã®ã°ã«ãŒããéžæããã ãã§ååã§ãã
çµæã¯æ¬¡ã®ãããªãŠã£ã³ããŠã§ãã
å ¥åããŒã¿ã®ããæ£æ¹åœ¢ãã¯ãªãã¯ãããšãå ¥åããŒã¿ã®ãšã€ãªã¢ã¹ãèŠã€ããŠãIoTããããœãŒã¹ãšããŠç€ºããã©ãŒã ã«èšå ¥ã§ããŸãã
ãããŠããããã®ããã¯ã¹ãã¯ãªãã¯ããŠãåæ§ã«åºåãæ§æããå¿ èŠããããŸãã
ããã§ãIoTããããããŒã¿ããŒã¹ã«ããŒã¿ã転éãããªã¯ãšã¹ããäœæã§ããŸãã ããã¯ãå ¥åãšåºåã®éã®æ£æ¹åœ¢ã§ãã ç§ã®äŸã§ã¯ãã¯ãšãªã¯éåžžã«ç°¡åã§ãã
éžæ
ã€ãã³ãæéãšããŠã®iotdataãdeviceIdãSystem.Timestamp
ããŒã¿ã¢ãŠããž
ãã
ã€ã³ããŒã¿
ã芧ã®ãšãããã¯ãšãªèšèªã¯SQLã«éåžžã«äŒŒãŠããŸãã ãã®å ŽåãããŒã¿ããŒã¹ãšArduinoã³ãŒãã®äž¡æ¹ã«ãiotdataïŒæŽæ°ïŒãã£ãŒã«ããšdeviceIdïŒæååïŒãã£ãŒã«ãããããŸãã ããã«ãdatetimeåã®eventtimeãã£ãŒã«ããããŒã¿ããŒã¹ã«äœæãããŸãã ãããŠããã®ãã£ãŒã«ãã«ã¯ãçä¿¡ãœãŒã¹ããåä¿¡æ©ãžã®ç§»åæã«æéå€ãèšé²ãããŸãã
Power BI
ç¡æã®Power BIãŠãŒãã£ãªãã£ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããåŸãSQL ServerããŒã¿ããŒã¹ã«æ¥ç¶ããã°ã©ããŸãã¯ãã£ãŒãã®åœ¢åŒã§ãã®ããŒã¿ã®è¡šçŸãååŸã§ããŸãã ãŠãŒãã£ãªãã£èªäœã¯Excelã»ã©è€éã§ã¯ãããŸããã ã¿ã€ãã«ã«ã¯æ·±å»ãªèšèãå«ãŸããŠããŸããã BIã¯ããžãã¹ã€ã³ããªãžã§ã³ã¹ã®ç¥ã§ãã
ããã«ã説æãšã¹ã¯ãªãŒã³ã·ã§ããã®å°ããªããã¥ã¢ã«ã
ãããŒã¿ãååŸããã¿ã³-ãè¿œå æ å ±...ããã¿ã³
ãµãŒããŒã®ã¢ãã¬ã¹ãšããŒã¿ããŒã¹ã®ååãå ¥åããŸãã ãã®ããŒã¿ã¯ãSQL ServerããŒã¿ããŒã¹ã®äœææã«èšå®ãããŸãã
ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã
å¿ èŠãªããŒãã«ãéžæããŸãã
ãã®çµæãåæ§ã®ã¹ã±ãžã¥ãŒã«ãååŸã§ããŸãã
ãããã«
ãã®çµæãäžçäžã®ã©ãããã§ãããŒãããååŸããããŒã¿ã«ã¢ã¯ã»ã¹ããæ¹æ³ã®äŸãåŸãããŸããã å¿ èŠã«å¿ããŠãããã€ã¹ããããŒã¿ãåä¿¡ã§ããã ãã§ãªããããã€ã¹ã«ããŒã¿/ã³ãã³ããéä¿¡ããããšãã§ããŸãã
ã¢ãã®ã€ã³ã¿ãŒãããã®ã¯ã©ãŠããã¯ãããžãŒã䜿çšãããšãæå°éã®ããã°ã©ãã³ã°ã§ãããžã§ã¯ããäœæã§ããŸãã ã»ãšãã©ã®å Žåã管çãšæ§æã§ãã
Arduinoãã©ãããã©ãŒã ãä»ã®ãã©ãããã©ãŒã ã§äœæãããããŒã«ã«ãããžã§ã¯ãã®ããŸããŸãªäŸããããããããŸãã ãã ããããã€ã¹ãwi-fiãŸãã¯Bluetoothçµç±ã§ã®ã¿äœ¿çšå¯èœãªå Žåãå®è¡ãããã¿ã¹ã¯ã¯ã»ãšãã©å¶éãããŸãã æªæ¥ã¯ã¢ãã®ã€ã³ã¿ãŒãããã«ãããŸãã
ããã¯ããã«ãŒèªã®èšäºã®å®å šããŒãžã§ã³ã§ããããšãæãåºããŸãã èè ã¯Alexey Sommerã§ãã