[{"data":1,"prerenderedAt":1069},["ShallowReactive",2],{"home-featured-blog-posts":3,"home-store-categories":920},[4],{"id":5,"title":6,"author":7,"body":8,"category":899,"date":900,"description":901,"draft":902,"extension":903,"featured":299,"image":904,"imageAlt":905,"meta":906,"navigation":299,"path":907,"readingTime":908,"seo":913,"stem":914,"tags":915,"__hash__":919},"blog\u002Fblog\u002Fiot-security-best-practices.md","IoT Security Best Practices: Protecting Connected Devices","NodeWave Team",{"type":9,"value":10,"toc":855},"minimark",[11,16,20,24,27,62,66,71,74,85,89,92,106,110,113,127,131,135,138,152,157,163,167,170,202,206,209,235,239,243,246,251,257,261,349,353,356,382,386,390,393,419,423,426,493,497,523,527,531,537,541,544,550,554,557,583,587,591,597,601,654,658,662,688,692,698,702,781,785,789,799,803,811,815,823,827,835,839,842,845,851],[12,13,15],"h2",{"id":14},"the-iot-security-imperative","The IoT Security Imperative",[17,18,19],"p",{},"Connected devices represent a growing attack surface. From industrial robots to medical devices, compromised IoT systems can cause real-world harm. Security must be built in from the start, not added later.",[12,21,23],{"id":22},"the-iot-security-challenge","The IoT Security Challenge",[17,25,26],{},"IoT devices are unique security targets:",[28,29,30,38,44,50,56],"ul",{},[31,32,33,37],"li",{},[34,35,36],"strong",{},"Resource Constraints",": Limited CPU, memory for cryptography",[31,39,40,43],{},[34,41,42],{},"Longevity",": 10-20 year lifespans, older devices less updatable",[31,45,46,49],{},[34,47,48],{},"Heterogeneity",": Devices from multiple manufacturers",[31,51,52,55],{},[34,53,54],{},"Distributed",": Difficult to monitor and update",[31,57,58,61],{},[34,59,60],{},"Privacy-Critical",": Often handle personal data",[12,63,65],{"id":64},"core-security-principles","Core Security Principles",[67,68,70],"h3",{"id":69},"_1-defense-in-depth","1. Defense in Depth",[17,72,73],{},"Multiple security layers prevent any single point of failure:",[75,76,81],"pre",{"className":77,"code":79,"language":80},[78],"language-text","Application Layer\n    ↓ (Authentication)\nAPI Layer\n    ↓ (Authorization)\nNetwork Layer\n    ↓ (Encryption)\nDevice Layer\n    ↓ (Access Control)\nPhysical Security\n","text",[82,83,79],"code",{"__ignoreMap":84},"",[67,86,88],{"id":87},"_2-zero-trust-architecture","2. Zero Trust Architecture",[17,90,91],{},"Assume no device or network is inherently trustworthy:",[28,93,94,97,100,103],{},[31,95,96],{},"Verify every request",[31,98,99],{},"Authenticate every device",[31,101,102],{},"Encrypt all communications",[31,104,105],{},"Monitor all activity",[67,107,109],{"id":108},"_3-secure-by-default","3. Secure by Default",[17,111,112],{},"Devices should be secure without additional configuration:",[28,114,115,118,121,124],{},[31,116,117],{},"Strong default credentials (or no default)",[31,119,120],{},"Encryption enabled by default",[31,122,123],{},"Automatic security updates",[31,125,126],{},"Minimal exposed interfaces",[12,128,130],{"id":129},"device-security","Device Security",[67,132,134],{"id":133},"secure-boot","Secure Boot",[17,136,137],{},"Ensure devices run authorized firmware:",[28,139,140,143,146,149],{},[31,141,142],{},"Hardware-backed key storage",[31,144,145],{},"Cryptographic signature verification",[31,147,148],{},"Rollback protection",[31,150,151],{},"Secure recovery mechanisms",[17,153,154],{},[34,155,156],{},"Implementation",[75,158,161],{"className":159,"code":160,"language":80},[78],"Boot Sequence:\n  ↓\nCheck bootloader signature\n  ↓\nLoad encrypted kernel\n  ↓\nVerify kernel signature\n  ↓\nExecute application\n",[82,162,160],{"__ignoreMap":84},[67,164,166],{"id":165},"firmware-updates","Firmware Updates",[17,168,169],{},"Regular patching is critical:",[28,171,172,178,184,190,196],{},[31,173,174,177],{},[34,175,176],{},"Over-The-Air (OTA) Updates",": Remote deployment",[31,179,180,183],{},[34,181,182],{},"Staged Rollouts",": Test on subset before full deployment",[31,185,186,189],{},[34,187,188],{},"Automatic Rollback",": Revert failed updates",[31,191,192,195],{},[34,193,194],{},"Cryptographic Signatures",": Prevent tampering",[31,197,198,201],{},[34,199,200],{},"Version Pinning",": Control update timing",[67,203,205],{"id":204},"hardware-security","Hardware Security",[17,207,208],{},"Leverage hardware capabilities:",[28,210,211,217,223,229],{},[31,212,213,216],{},[34,214,215],{},"Trusted Platform Module (TPM)",": Cryptographic co-processor",[31,218,219,222],{},[34,220,221],{},"Hardware Security Module (HSM)",": For critical operations",[31,224,225,228],{},[34,226,227],{},"Secure Enclaves",": Intel SGX, ARM TrustZone",[31,230,231,234],{},[34,232,233],{},"Physical Tamper Detection",": Detect physical attacks",[12,236,238],{"id":237},"authentication","Authentication",[67,240,242],{"id":241},"device-identity","Device Identity",[17,244,245],{},"Each device needs cryptographic proof of identity:",[17,247,248],{},[34,249,250],{},"X.509 Certificates",[75,252,255],{"className":253,"code":254,"language":80},[78],"Device Certificate:\n  ├─ Public Key\n  ├─ Device Identifier\n  ├─ Validity Period\n  ├─ Signature\n  └─ Chain to CA\n",[82,256,254],{"__ignoreMap":84},[17,258,259],{},[34,260,156],{},[75,262,266],{"className":263,"code":264,"language":265,"meta":84,"style":84},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","class DeviceAuthenticator:\n    def __init__(self, cert_path, key_path):\n        self.cert = load_certificate(cert_path)\n        self.key = load_private_key(key_path)\n\n    def authenticate_to_server(self, server_url):\n        # Use device certificate for mTLS\n        session = create_tls_session(\n            client_cert=self.cert,\n            client_key=self.key,\n            verify=True  # Verify server\n        )\n        return session.post(server_url, ...)\n","python",[82,267,268,276,282,288,294,301,307,313,319,325,331,337,343],{"__ignoreMap":84},[269,270,273],"span",{"class":271,"line":272},"line",1,[269,274,275],{},"class DeviceAuthenticator:\n",[269,277,279],{"class":271,"line":278},2,[269,280,281],{},"    def __init__(self, cert_path, key_path):\n",[269,283,285],{"class":271,"line":284},3,[269,286,287],{},"        self.cert = load_certificate(cert_path)\n",[269,289,291],{"class":271,"line":290},4,[269,292,293],{},"        self.key = load_private_key(key_path)\n",[269,295,297],{"class":271,"line":296},5,[269,298,300],{"emptyLinePlaceholder":299},true,"\n",[269,302,304],{"class":271,"line":303},6,[269,305,306],{},"    def authenticate_to_server(self, server_url):\n",[269,308,310],{"class":271,"line":309},7,[269,311,312],{},"        # Use device certificate for mTLS\n",[269,314,316],{"class":271,"line":315},8,[269,317,318],{},"        session = create_tls_session(\n",[269,320,322],{"class":271,"line":321},9,[269,323,324],{},"            client_cert=self.cert,\n",[269,326,328],{"class":271,"line":327},10,[269,329,330],{},"            client_key=self.key,\n",[269,332,334],{"class":271,"line":333},11,[269,335,336],{},"            verify=True  # Verify server\n",[269,338,340],{"class":271,"line":339},12,[269,341,342],{},"        )\n",[269,344,346],{"class":271,"line":345},13,[269,347,348],{},"        return session.post(server_url, ...)\n",[67,350,352],{"id":351},"user-authentication","User Authentication",[17,354,355],{},"When users interact with IoT systems:",[28,357,358,364,370,376],{},[31,359,360,363],{},[34,361,362],{},"Multi-Factor Authentication (MFA)",": Password + TOTP + biometric",[31,365,366,369],{},[34,367,368],{},"Session Management",": Timeouts and token rotation",[31,371,372,375],{},[34,373,374],{},"OAuth 2.0",": For third-party integrations",[31,377,378,381],{},[34,379,380],{},"API Keys",": With scopes and expiration",[12,383,385],{"id":384},"data-protection","Data Protection",[67,387,389],{"id":388},"encryption-in-transit","Encryption in Transit",[17,391,392],{},"All communication must be encrypted:",[28,394,395,401,407,413],{},[31,396,397,400],{},[34,398,399],{},"TLS 1.3",": For web and REST APIs",[31,402,403,406],{},[34,404,405],{},"DTLS",": For CoAP (UDP-based)",[31,408,409,412],{},[34,410,411],{},"Mutual TLS",": Both client and server authentication",[31,414,415,418],{},[34,416,417],{},"Certificate Pinning",": Prevent MITM attacks",[67,420,422],{"id":421},"encryption-at-rest","Encryption at Rest",[17,424,425],{},"Sensitive data stored on devices:",[75,427,429],{"className":263,"code":428,"language":265,"meta":84,"style":84},"import cryptography.fernet\n\nclass SecureStorage:\n    def __init__(self, key):\n        self.cipher = Fernet(key)\n\n    def store_config(self, config_data):\n        encrypted = self.cipher.encrypt(config_data)\n        persistent_storage.save(encrypted)\n\n    def load_config(self):\n        encrypted = persistent_storage.load()\n        return self.cipher.decrypt(encrypted)\n",[82,430,431,436,440,445,450,455,459,464,469,474,478,483,488],{"__ignoreMap":84},[269,432,433],{"class":271,"line":272},[269,434,435],{},"import cryptography.fernet\n",[269,437,438],{"class":271,"line":278},[269,439,300],{"emptyLinePlaceholder":299},[269,441,442],{"class":271,"line":284},[269,443,444],{},"class SecureStorage:\n",[269,446,447],{"class":271,"line":290},[269,448,449],{},"    def __init__(self, key):\n",[269,451,452],{"class":271,"line":296},[269,453,454],{},"        self.cipher = Fernet(key)\n",[269,456,457],{"class":271,"line":303},[269,458,300],{"emptyLinePlaceholder":299},[269,460,461],{"class":271,"line":309},[269,462,463],{},"    def store_config(self, config_data):\n",[269,465,466],{"class":271,"line":315},[269,467,468],{},"        encrypted = self.cipher.encrypt(config_data)\n",[269,470,471],{"class":271,"line":321},[269,472,473],{},"        persistent_storage.save(encrypted)\n",[269,475,476],{"class":271,"line":327},[269,477,300],{"emptyLinePlaceholder":299},[269,479,480],{"class":271,"line":333},[269,481,482],{},"    def load_config(self):\n",[269,484,485],{"class":271,"line":339},[269,486,487],{},"        encrypted = persistent_storage.load()\n",[269,489,490],{"class":271,"line":345},[269,491,492],{},"        return self.cipher.decrypt(encrypted)\n",[67,494,496],{"id":495},"key-management","Key Management",[28,498,499,505,511,517],{},[31,500,501,504],{},[34,502,503],{},"Hardware Key Storage",": TPM or HSM",[31,506,507,510],{},[34,508,509],{},"Key Rotation",": Regular updates",[31,512,513,516],{},[34,514,515],{},"Separate Keys",": Device, factory, and master keys",[31,518,519,522],{},[34,520,521],{},"Secure Distribution",": PKI or symmetric key provisioning",[12,524,526],{"id":525},"network-security","Network Security",[67,528,530],{"id":529},"api-security","API Security",[75,532,535],{"className":533,"code":534,"language":80},[78],"IoT Device → Load Balancer → API Gateway → Backend\n                ↑              ↑             ↑\n              DDoS          Rate Limiting  Authentication\n             Protection     WAF            Authorization\n",[82,536,534],{"__ignoreMap":84},[67,538,540],{"id":539},"segmentation","Segmentation",[17,542,543],{},"Isolate IoT devices from critical systems:",[75,545,548],{"className":546,"code":547,"language":80},[78],"DMZ (IoT Devices)\n  ├─ MQTT Broker\n  ├─ API Gateway\n  └─ Data Processors\n    ↓ (Controlled Access)\nInternal Network\n  ├─ Databases\n  ├─ Business Systems\n  └─ Admin Interfaces\n",[82,549,547],{"__ignoreMap":84},[67,551,553],{"id":552},"ddos-protection","DDoS Protection",[17,555,556],{},"IoT botnets represent significant threats:",[28,558,559,565,571,577],{},[31,560,561,564],{},[34,562,563],{},"Rate Limiting",": Prevent device flooding",[31,566,567,570],{},[34,568,569],{},"Traffic Filtering",": Block known malicious IPs",[31,572,573,576],{},[34,574,575],{},"Behavioral Analysis",": Detect abnormal patterns",[31,578,579,582],{},[34,580,581],{},"Anycast Network",": Distribute load",[12,584,586],{"id":585},"access-control","Access Control",[67,588,590],{"id":589},"role-based-access-control-rbac","Role-Based Access Control (RBAC)",[75,592,595],{"className":593,"code":594,"language":80},[78],"Administrator\n  ├─ View\u002FEdit all devices\n  ├─ Change settings\n  └─ Manage users\n\nOperator\n  ├─ View device status\n  ├─ View logs\n  └─ No administrative access\n\nRead-Only User\n  └─ View device status only\n",[82,596,594],{"__ignoreMap":84},[67,598,600],{"id":599},"api-authorization","API Authorization",[75,602,604],{"className":263,"code":603,"language":265,"meta":84,"style":84},"class DeviceAPI:\n    @requires_auth\n    @require_permission('device.read')\n    def get_device_status(self, device_id):\n        return devices.get(device_id).status\n\n    @requires_auth\n    @require_permission('device.write')\n    def update_device_config(self, device_id, config):\n        devices.get(device_id).update(config)\n",[82,605,606,611,616,621,626,631,635,639,644,649],{"__ignoreMap":84},[269,607,608],{"class":271,"line":272},[269,609,610],{},"class DeviceAPI:\n",[269,612,613],{"class":271,"line":278},[269,614,615],{},"    @requires_auth\n",[269,617,618],{"class":271,"line":284},[269,619,620],{},"    @require_permission('device.read')\n",[269,622,623],{"class":271,"line":290},[269,624,625],{},"    def get_device_status(self, device_id):\n",[269,627,628],{"class":271,"line":296},[269,629,630],{},"        return devices.get(device_id).status\n",[269,632,633],{"class":271,"line":303},[269,634,300],{"emptyLinePlaceholder":299},[269,636,637],{"class":271,"line":309},[269,638,615],{},[269,640,641],{"class":271,"line":315},[269,642,643],{},"    @require_permission('device.write')\n",[269,645,646],{"class":271,"line":321},[269,647,648],{},"    def update_device_config(self, device_id, config):\n",[269,650,651],{"class":271,"line":327},[269,652,653],{},"        devices.get(device_id).update(config)\n",[12,655,657],{"id":656},"monitoring-and-incident-response","Monitoring and Incident Response",[67,659,661],{"id":660},"security-monitoring","Security Monitoring",[28,663,664,670,676,682],{},[31,665,666,669],{},[34,667,668],{},"Anomaly Detection",": Unusual device behavior",[31,671,672,675],{},[34,673,674],{},"Log Aggregation",": Centralized logging",[31,677,678,681],{},[34,679,680],{},"Threat Intelligence",": Known malware signatures",[31,683,684,687],{},[34,685,686],{},"Vulnerability Scanning",": Regular assessments",[67,689,691],{"id":690},"alerting-strategy","Alerting Strategy",[75,693,696],{"className":694,"code":695,"language":80},[78],"Real-time: Failed authentication attempts\n         Authentication failures exceed threshold\n         Device offline after being online\n\nHourly: Summary of failed API calls\n        New devices connecting\n\nDaily: Security update status\n       Compliance violations\n       Policy changes\n",[82,697,695],{"__ignoreMap":84},[12,699,701],{"id":700},"security-checklist","Security Checklist",[28,703,706,715,721,727,733,739,745,751,757,763,769,775],{"className":704},[705],"contains-task-list",[31,707,710,714],{"className":708},[709],"task-list-item",[711,712],"input",{"disabled":299,"type":713},"checkbox"," All devices have unique, cryptographic identities",[31,716,718,720],{"className":717},[709],[711,719],{"disabled":299,"type":713}," Communication encrypted with TLS 1.2+",[31,722,724,726],{"className":723},[709],[711,725],{"disabled":299,"type":713}," Authentication required for all API endpoints",[31,728,730,732],{"className":729},[709],[711,731],{"disabled":299,"type":713}," Authorization enforced with RBAC",[31,734,736,738],{"className":735},[709],[711,737],{"disabled":299,"type":713}," Firmware signed and verified before execution",[31,740,742,744],{"className":741},[709],[711,743],{"disabled":299,"type":713}," OTA updates supported with rollback capability",[31,746,748,750],{"className":747},[709],[711,749],{"disabled":299,"type":713}," Default credentials changed on installation",[31,752,754,756],{"className":753},[709],[711,755],{"disabled":299,"type":713}," Logs sent to central location",[31,758,760,762],{"className":759},[709],[711,761],{"disabled":299,"type":713}," Anomalies detected and alerted",[31,764,766,768],{"className":765},[709],[711,767],{"disabled":299,"type":713}," Incident response plan documented",[31,770,772,774],{"className":771},[709],[711,773],{"disabled":299,"type":713}," Security tested quarterly",[31,776,778,780],{"className":777},[709],[711,779],{"disabled":299,"type":713}," Compliance requirements met",[12,782,784],{"id":783},"common-pitfalls","Common Pitfalls",[67,786,788],{"id":787},"_1-hardcoded-credentials","1. Hardcoded Credentials",[17,790,791,794,795,798],{},[34,792,793],{},"Risk",": Credentials extracted from firmware\n",[34,796,797],{},"Solution",": Provisioning at factory, HSM-backed keys",[67,800,802],{"id":801},"_2-ignoring-legacy-devices","2. Ignoring Legacy Devices",[17,804,805,807,808,810],{},[34,806,793],{},": Unpatched security vulnerabilities\n",[34,809,797],{},": Inventory, isolate, replace old devices",[67,812,814],{"id":813},"_3-inadequate-logging","3. Inadequate Logging",[17,816,817,819,820,822],{},[34,818,793],{},": Cannot detect or investigate breaches\n",[34,821,797],{},": Comprehensive logging with retention",[67,824,826],{"id":825},"_4-single-points-of-failure","4. Single Points of Failure",[17,828,829,831,832,834],{},[34,830,793],{},": One compromise affects entire system\n",[34,833,797],{},": Defense in depth, segmentation",[12,836,838],{"id":837},"conclusion","Conclusion",[17,840,841],{},"IoT security is not a checkbox but an ongoing commitment. By implementing these practices, you create systems that protect both your business and your users. Security through obscurity fails; security through architecture succeeds.",[843,844],"hr",{},[17,846,847,850],{},[34,848,849],{},"Related Topics",": Cryptography, Network Security, Compliance, Device Management",[852,853,854],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":84,"searchDepth":284,"depth":284,"links":856},[857,858,859,864,869,873,878,883,887,891,892,898],{"id":14,"depth":278,"text":15},{"id":22,"depth":278,"text":23},{"id":64,"depth":278,"text":65,"children":860},[861,862,863],{"id":69,"depth":284,"text":70},{"id":87,"depth":284,"text":88},{"id":108,"depth":284,"text":109},{"id":129,"depth":278,"text":130,"children":865},[866,867,868],{"id":133,"depth":284,"text":134},{"id":165,"depth":284,"text":166},{"id":204,"depth":284,"text":205},{"id":237,"depth":278,"text":238,"children":870},[871,872],{"id":241,"depth":284,"text":242},{"id":351,"depth":284,"text":352},{"id":384,"depth":278,"text":385,"children":874},[875,876,877],{"id":388,"depth":284,"text":389},{"id":421,"depth":284,"text":422},{"id":495,"depth":284,"text":496},{"id":525,"depth":278,"text":526,"children":879},[880,881,882],{"id":529,"depth":284,"text":530},{"id":539,"depth":284,"text":540},{"id":552,"depth":284,"text":553},{"id":585,"depth":278,"text":586,"children":884},[885,886],{"id":589,"depth":284,"text":590},{"id":599,"depth":284,"text":600},{"id":656,"depth":278,"text":657,"children":888},[889,890],{"id":660,"depth":284,"text":661},{"id":690,"depth":284,"text":691},{"id":700,"depth":278,"text":701},{"id":783,"depth":278,"text":784,"children":893},[894,895,896,897],{"id":787,"depth":284,"text":788},{"id":801,"depth":284,"text":802},{"id":813,"depth":284,"text":814},{"id":825,"depth":284,"text":826},{"id":837,"depth":278,"text":838},"Security","2025-05-10","Essential security practices for IoT deployments including device management, encryption, authentication, and threat monitoring.",false,"md","\u002Fimages\u002Fblog\u002Fiot-security-best-practices\u002Fplaceholder.png","IoT security layers and protection mechanisms",{},"\u002Fblog\u002Fiot-security-best-practices",{"text":909,"minutes":910,"time":911,"words":912},"4 min read",3.405,204300,681,{"title":6,"description":901},"blog\u002Fiot-security-best-practices",[899,916,917,918],"IoT","Best Practices","Privacy","XOgd3Ry6Mlh_mmSVt1htPGEMgjRvkS0qh2zVRcvkC_A",[921,989,1048],{"id":922,"title":923,"badge":924,"body":925,"category":926,"compareAtPrice":927,"compatibility":928,"currency":931,"description":932,"downloads":933,"draft":902,"excerpt":945,"extension":903,"featured":299,"gallery":946,"highlights":955,"image":959,"inStock":299,"meta":960,"navigation":299,"path":966,"price":967,"seo":968,"sku":969,"specs":970,"stem":979,"tags":980,"useCases":984,"__hash__":988},"store\u002Fstore\u002Fdemo-product.md","Product Name","Best Seller","[object Object]","Sensors",59,[929,930],"NodeWave Cloud Dashboard","MQTT brokers","USD","Short product summary for SEO and previews.",[934,940],{"name":935,"url":936,"type":937,"format":938,"size":939},"Datasheet","\u002Fdownloads\u002Fproduct-slug\u002Fdatasheet.pdf","datasheet","pdf","1.2 MB",{"name":941,"url":942,"type":943,"format":938,"size":944},"Quick Start Guide","\u002Fdownloads\u002Fproduct-slug\u002Fquick-start.pdf","manual","820 KB",null,[947,951],{"src":948,"alt":949,"caption":950},"\u002Fimages\u002Fstore\u002Fproduct-slug\u002Fgallery-1.png","Front view of the product","Front view",{"src":952,"alt":953,"caption":954},"\u002Fimages\u002Fstore\u002Fproduct-slug\u002Fgallery-2.png","Mounted installation view","Installed in system",[956,957,958],"Highlight one","Highlight two","Highlight three","\u002Fimages\u002Fstore\u002Fproduct-slug\u002Fhero.png",{"readingTime":961},{"text":962,"minutes":963,"time":964,"words":965},"1 min read",0.3,18000,60,"\u002Fstore\u002Fdemo-product",49,{"title":923,"description":932},"NW-XXXX",[971,975],{"label":972,"value":973,"category":974},"Sensor Type","Temperature","hardware",{"label":976,"value":977,"category":978},"Connectivity","MQTT, HTTP","network","store\u002Fdemo-product",[981,982,983],"mqtt","industrial","low-power",[985,986,987],"Industrial monitoring","Smart buildings","Remote telemetry","FNGtIMSJn8dP5q7Bb5v1mA2HR3EkzyKXYtzQfcUpbjw",{"id":990,"title":991,"badge":992,"body":925,"category":926,"compareAtPrice":967,"compatibility":993,"currency":931,"description":995,"downloads":996,"draft":902,"excerpt":945,"extension":903,"featured":902,"gallery":1000,"highlights":1008,"image":1013,"inStock":299,"meta":1014,"navigation":299,"path":1019,"price":1020,"seo":1021,"sku":1022,"specs":1023,"stem":1040,"tags":1041,"useCases":1043,"__hash__":1047},"store\u002Fstore\u002Fhumidity-sensor-h1.md","NodeWave Humidity Sensor H1","New",[929,994,930],"Edge Gateway G10","Industrial IoT humidity sensor for environmental monitoring with MQTT support and low-power operation.",[997],{"name":935,"url":998,"type":937,"format":938,"size":999},"\u002Fdownloads\u002Fhumidity-sensor-h1\u002Fdatasheet.pdf","900 KB",[1001,1004],{"src":1002,"alt":1003,"caption":950},"\u002Fimages\u002Fstore\u002Fhumidity-sensor-h1\u002Ffront.png","Humidity Sensor front view",{"src":1005,"alt":1006,"caption":1007},"\u002Fimages\u002Fstore\u002Fhumidity-sensor-h1\u002Finstalled.png","Installed in greenhouse environment","Agricultural deployment",[1009,1010,1011,1012],"High-accuracy humidity sensing","MQTT-ready data streaming","Ultra low-power design","Suitable for indoor and agricultural use","\u002Fimages\u002Fstore\u002Fhumidity-sensor-h1\u002Fhero.png",{"readingTime":1015},{"text":962,"minutes":1016,"time":1017,"words":1018},0.98,58800,196,"\u002Fstore\u002Fhumidity-sensor-h1",39,{"title":991,"description":995},"NW-HS-H1",[1024,1026,1030,1034,1036],{"label":972,"value":1025,"category":974},"Capacitive humidity sensor",{"label":1027,"value":1028,"category":1029},"Measurement Range","0% to 100% RH","environmental",{"label":1031,"value":1032,"category":1033},"Accuracy","±2% RH","performance",{"label":976,"value":1035,"category":978},"MQTT \u002F HTTP via gateway",{"label":1037,"value":1038,"category":1039},"Power","Ultra low-power battery operation","power","store\u002Fhumidity-sensor-h1",[1042,981,1029,983],"humidity",[1044,1045,1046],"Greenhouse monitoring","Warehouse humidity control","HVAC optimization","P_CnOlzvITzmT695UqeINxMrplh0MJ5GsI-Rl_Z1J7A",{"id":1049,"title":923,"badge":924,"body":925,"category":926,"compareAtPrice":927,"compatibility":1050,"currency":931,"description":932,"downloads":1051,"draft":902,"excerpt":945,"extension":903,"featured":299,"gallery":1053,"highlights":1055,"image":959,"inStock":299,"meta":1056,"navigation":299,"path":1061,"price":967,"seo":1062,"sku":969,"specs":1063,"stem":1065,"tags":1066,"useCases":1067,"__hash__":1068},"store\u002Fstore\u002Fproduct-name.md",[929,930],[1052],{"name":935,"url":936,"type":937,"format":938,"size":939},[1054],{"src":948,"alt":949,"caption":950},[956,957,958],{"readingTime":1057},{"text":962,"minutes":1058,"time":1059,"words":1060},0.225,13500,45,"\u002Fstore\u002Fproduct-name",{"title":923,"description":932},[1064],{"label":972,"value":973,"category":974},"store\u002Fproduct-name",[981,982,983],[985,986],"UKtQStOyk1KuF_9gTwCuFo7YHXuPwlERuLoMI9Awn7g",1781523793893]