Internet Of Things

Internet Of Things

The Internet of Things, or "IoT" for short, is all about extending the power of the internet beyond computers and smartphones to a whole range of different things like processes, and environments. Probably, you are aware that the Internet of Things has the power to drastically change our lives, right from how we manage and operate our homes to automating jobs across nearly all industries. The Internet of Things, or IoT, refers to the physical devices around the world that are now connected to the internet, all collecting and at the same time sharing data. Thanks to the arrival of supercomputer chips and the ubiquity of wireless networks, for making it possible to turn anything, from something as small as a pill to something as big as an airplane, into a part of the IoT.
Monty  Boehm

Monty Boehm

1675312560

Guide to IoT Testing Tools, Challenges and Its Types

Introduction to IoT Testing

The Internet of Things is the new emerging trend in digital transformation, which many organizations are adopting as the world moves toward digitalization. According to a survey, it is assumed that there will be billions of connected devices by the end of the year 2020.

IoT testing considers functional and Integration testing to perform the functional type of testing and performance testing to check how a particular software handles large amounts of data transmitted within a few seconds.

What are the benefits of IoT testing?

The Internet of Things (IoT) has the most significant impact on digital transformation and manufacturing products and software services businesses worldwide. According to research, it is assumed that there will be billions of connected devices in upcoming years. Delivery of robust, bug-free IoT solutions earlier to the market could be beneficial for organizations. They are testing many diversified devices, and generating data causes consequential challenges in scaling the items, speed, and different types of variety for internal testing teams.

Traditional software applications’ approaches to controlling the processes are not sufficient for such IoT solutions. Order to gain the standard of such difficult IoT solutions requires a multidisciplinary testing approach. Instead of developing pre-planned testing scenarios and strategies, integrating a suitable automation approach, virtualization, and measuring tools are big in IoT testing.

IoT is connected using the Internet capable of sending the data to the Cloud. Click to explore about, IoT Platform and Internet of Things Applications, Use Cases

What are the challenges involved in IoT Testing?

IoT solutions are the composition of several approaches. Firstly, the mixture of solution components consists of – hardware device, application software, server software, network, and client platforms. Secondly, the large scale and throughput at which they're expected to function across networks. Thirdly, the innumerable user and environmental situations under which they're contemplated to work.

The Scale of Operations

IoT solution deployment necessitates thousands of interconnected devices, which hook up with servers (on-premise or within the cloud) over near real-time networks. Server infrastructure and framework are made on multiple and distinct interconnected services and applications from different vendors. Testing such a posh, multi-vendor environment and simulating real-time situations is often a challenge.

Software-Hardware Interconnection

Testing an IoT game plan isn't sensitive to the application or the gear. It requires a joined IoT testing approach for this interconnected and dynamic and incredible and intensive environment. Other than ordinary helpful and non-utilitarian testing of the certifiable programming and gear parts, investigate a couple of commonsense circumstances and even theory ones that contemplate the relationship between them.

Platform Heterogeneity

In such various fields, there are many software, firmware, and hardware platform reconstructions. Additionally, there are distinct network protocols and mechanisms for device-to-server connections like MQTT, HTTP, COAP, and WebSockets. Testing for all possible combinations isn't practical. Shortlisting significant test scenarios requires an intensive understanding of end-use situations, domain knowledge with specifications, and a platform-skeptic and automatic test suite.

Functional Testing reviews every aspect of a piece of software to make sure that it works correctly. Click to explore about, Functional Testing and Its Types

Real-time Data Velocity

Difficulties from eccentric organization equipment and Internet associations could influence gadget execution and, at last, the IoT arrangement. Since these gadgets are, for the most part, distantly associated, such circumstances bring about baffled end-client encounters. Testing the responsiveness of gadgets and applications for genuine results could be a consistent necessity throughout the IoT arrangement advancement life cycle.

User Experience

Consistent and steady client experience covering portable (normally iOS, Android) and work area (commonly Windows, Mac) conditions is fundamental for any IoT arrangement. Further, saving local experience on versatile stages is also a certain necessity. Testing should consider these different client conditions across various brands, forms, and screen sizes.

Security & Privacy

Networked devices and applications exposed on the general public Internet are always liable to being hacked. Conforming devices and applications against the prescribed security standards is significant. As the Internet of Things grows, hackers are constantly trying to seek out system weaknesses. Constant security upgrades and testing could be a must in today's environment.

What are the different types of IoT Testing?

The highlighted below are the various types of IoT Testing:xenonstack-types-of-testing

Functional

This is to make sure that the work product that's visiting is interacting with various other connected devices within the IoT ecosystem. It first works consistently for what it was designed to do.

Usability Testing

Usability testing ensures that the interface of the gadget and the application meets client assumptions and affirmation. The principal focal point of those tests is to affirm the accommodation of utilization for some fundamental tasks, responsiveness, protecting nativity, elegant treatment of blunders, and type to utilize the gadget/application without preparing or an aide.

Reliability Testing

This is to make sure that the work product is ready to perform reliably under distinct changes in the environmental, network, and the other operational conditions and still ready to deliver what's expected.

Security Testing

Security in its simplest form means authorized access is granted to the protected device, and its data and unauthorized access is restricted. Testing is completed using threat modeling tools, static code analysis tools, and runtime check tools, subjecting the device and application to a spread of simulated threats. Security tests also encompass checks for OWASP Top Ten Threats.

Connectivity Testing

This testing intakes checking the device and application behavior by subjecting the network through a load, fragmentary failures, and total loss of connectivity. By inducing these real-life scenarios, the robustness and sturdiness of the device, edge, platform, and application are examined thoroughly.

Performance Testing

Load generators are performance measuring tools on the cloud rate system performance under normal and full load. These tests check their responsiveness to user actions on the device, and on a platform layer, they check the flexibility to handle spikes in traffic gracefully. They've supported metrics for assessing the responsiveness of the device/application and underlying system performance.

Compatibility Testing

In a complex IoT climate, it's basic that gadgets, organizations, stages, applications, and end-client work areas/mobiles add pair. Each of them includes a deep level of fluctuation in the firmware and equipment models and forms; network type, speed, conventions, and adaptations; programming framework type and shapes; program type and forms; screen sizes and show goals, to name a few. Look at the apparatus by and large for potential mixes of those adaptations to downsize disappointments inside the field.

Compliance & Certification Testing

A well-tested IoT product can also require the correct certification to line foot within the market. IoT devices generally must meet distinct certification qualifications for the network, protocol compliance, device drivers, app store submissions, etc.

Beta (Pilot) Testing

After testing in an exceedingly controlled and managed lab environment, the work product must be deployed in its target environment with all the variables to determine its behavior. Beta testing enables acceptance testing because the intended user validates the work product for functionality, usability, reliability, and compatibility. Since end-users do it, beta testing isn't a controlled activity.

Upgrade Testing

Whenever the firmware, software, or hardware updates or upgrades occur, it concerns thorough regression testing as failures may appear because of compatibility issues. To handle this, special tests are often performed in an exceedingly staging environment before upgrades are pushed over-the-air (OTA) to devices and on server systems. Post an upgrade, update, data preservation, and a smooth system restart are critical.

What are IoT Testing Tools?
xenonstack-iot-testing-framework

To accomplish the wide selection of IoT tests listed above in an exceedingly staging environment, the use of the proper simulation, virtualization, automation, counterfeit, and measurement tools is necessary. Number of the tools that would be used are listed below:

Protocol/Device Simulators

Devices and Protocols, which are standards-compliant, are often simulated using tools. They'll be simulated in bulk in addition to being configured to map the desired real-life states.

Record & Play Tools

Whether it’s devices or applications, system and user actions/data are often recorded and replayed on simulators and apps as a method of automating the test execution process.

Mobile Testing Tools

They provide automated functional mobile testing that replicates end-user experience and confirms that the application works and is enhanced.

Security Testing Tools

They can be arranged into static code investigation and runtime danger, danger demonstrating, and inciting devices. Devices Micro Focus, Fortify on Demand, OWASP ZAP, VGC, and Microsoft Threat Modeling Tool distinguish dangers, focus on them, and give suggestions en route to fix them. Acunetix and Netsparker are the premier two open-source security instruments that may assist with uncovering weaknesses.

API Testing Tools

Drastically increasing solutions are now built using REST APIs and Web services. Tools like Postman, SoapUI, Progress, Telerik, FiddlerTM, etc., test their connectivity, response, Latency, and performance.

Automated Deployment Tools

They are wont to create virtual machines either on-premise technically or within the cloud, rapidly commission managed services and configure and deploy custom-built services and applications. Tools like Foreman, Ansible Tower®, and Katello ensure that the staging is up so automated and manual tests are often automatically activated on time in continuous build, Integration, and deployment environments.

Other Tools

Below there are a few tools/equipment which will be used for distinct purposes:
Tcpdump and Wireshark to watch traffic over the network, Fiddler to debug HTTP traffic, and JTAG Dongle and Digital Storage Oscilloscope to check the hardware and monitor its framework and parameters. Additionally, law and defect management tools and proprietary tools can improve internal control execution efficiency, momentum, and effectiveness.

Conclusion

As IoT generates an unabridged new set of testing requirements, automated testing has a significant role. Testing tools and strategic approaches will need to verify various communication protocols, including WiFi, Bluetooth, CDMA, and 3G. Simulation models will also be fundamental, given the summons with real-time testing. IoT solutions are composite and challenging, given the multiple components and interactions between them. Wide-ranging IoT tests can ensure a quality IoT solution. However, executing IoT test cases requires a good strategic testing approach using appropriate test tools.

Original article source at: https://www.xenonstack.com/

#iot #testing #types 

Guide to IoT Testing Tools, Challenges and Its Types
Mahipal Nehra

Mahipal Nehra

1672388924

What is Internet of Things Architecture

This can largely be attributed to the large adoption of the IoT in order to lower operating costs and respond to the need for digitization brought on by the pandemic. IoT architecture has advanced to a point where it has become more scalable and easily available, which makes it an essential piece of the puzzle when trying to navigate changes that come at a rapid and frequent pace. To truly understand the scope of IoT solutions in business, one must delve into what exactly its architecture is and how this serves in actual use cases.

#iot #javadevelopmentcompany #softwaredevelopmentcompany #webappdevelopment #CustomSoftwareDevelopment #hiredevelopers 

What is Internet of Things Architecture
Oral  Brekke

Oral Brekke

1671811200

Automotive App Development in IoT

Introduction of IoT App Development

The automobile industry is one of the world's largest manufacturing sectors. According to Statistic, 78 million pieces were manufactured globally in 2020. Yet, this figure significantly drops from the 97 million automobiles created in 2018. Aside from geopolitical factors, one of the primary reasons for this downturn is a lack of creative innovations in newer car models. If all customers want is four wheels and an engine, they would likely choose an older, less expensive model or used vehicles. For manufacturers to attract customers, future models must adapt using advanced technologies and the Internet of Things. The automotive enterprise is attempting to scale up its ability with it, advancing from the age of merchandise to the age of service and experience from functionality to data as the critical object of value creation.

What is IoT?

The internet of things, is a networked system of interconnected computing devices, electromechanical and digital machinery, items, or people with unique identities (UIDs) and the capacity to transmit files without needing human-to-human or human-to-computer contact. Its devices are hardware devices, including sensors, gadgets, appliances, and machines that collect and exchange records over the internet. For Example-Medical, sensors, smart watches, intelligent security systems, etc. The Internet of Thingscannot work without software, which includes middleware, which is referred to as an internet of things or IoT cloud platform. Its devices share the data they accumulate by connecting to an gateway or different edge device in which data is sent to the cloud to be analyzed or analyzed domestically.

IoT Platform

It is a multi-layered system that allows for simple provisioning, management, and automation of linked devices in the Internet of Things environment. It bridges the gap between equipment and software. Its platform provides developers with fully prepared functionalities, which speeds up development and enables cross-device interoperability.

What is IoT App development for Automotive?

Developing apps for automotive enables complicated systems such as processors, motors, and sensors to communicate with one another and with other cars linked to the internet. Moreover, it uses a unified ecosystem to enable auto connectivity, predictive maintenance, fleet management, etc. These apps help in the development of intelligent and sustainable vehicles. The main motive of its apps in the sector is to deliver personal and immersive patron experience.

Why it is important for Automotive industry?

We are transitioning from a product-centric to a service-centric era, from equipment to application, from functionality to data, as the main objective of creating value. In the industry, it is playing a massive role in bringing this transition, and here are some of the many reasons regarding the need to develop its apps for industry-

  • Its apps are revolutionizing the automobile industry's production to satisfy consumer needs while maintaining traditional corporate objectives.
  • The influence of it may be observed on the industry's core value drivers, which include creation and innovation, increased customer happiness, real-time scheduling, and device lifetime monetization.
  • Present WiFi capabilities, motor performance measures, and temperature management systems are only the tip of the iceberg regarding what solutions can be provided to vehicles by developing apps.
  • The future's designs will be smart automobiles! it includes third-party technologies in addition to just linking it to smartphones. In the next few years, driverless vehicles will play a significant role. Technologies for controlling a self-driving car with a voice-activated app are already in development, and cloud-based applications that employ software will significantly influence online apps for the industrial sector. As a result, the future of the automobile sector will be determined by internet of things apps for vehicles.

What are its use cases in the industry? 

In this sector, internet of things technologies have created countless potential. They can help to improve design and performance and reduce cost while ensuring quality control at the highest level.

The following are the most prevalent use of Mobile apps for internet of things in the automobile industry:

Monitoring the Fleet's location

It can offer remote fleet management using three key technologies:" RFID," "GPS," and "OBD-II." Vehicle sensors and onboard monitoring systems can offer real-time information regarding the fleet's location. They collect data from accelerometers or gyroscopes to monitor changes in speed, idle hours, and route adherence.

Automobile's weight or volume tracking

internet of things apps can be developed to obtain real-time weight information, sensors are mounted on the axles of a large vehicle, such as a truck or trailer. They are also used to transport liquids and other viscous commodities like chemicals and oils.

Monitoring the flow of traffic on the road

For continuous real-time data regarding traffic situations, closed roads, and public transit trip plans through the internet, connected cars deliver predictive maintenance warnings. Its apps and other surrounding devices can communicate with embedded devices on moving vehicles. The critical information is delivered as notifications in real-time with drivers or autonomous driving systems after processing by cognitive intelligence. Internet of things apps make it incredibly convenient to monitor local traffic trends!

Tracking automobiles

Owners and operators of fleets may monitor their inventory holistically using IoT apps. As they transport goods from one area to another, they may monitor the whereabouts of their vehicles. They can anticipate weather or traffic congestion changes thanks to real-time information exchange.

Connected Cars

 Its apps can be used to track the position of the vehicle. Connected cars maintain internet connections and its devices within or around them.

IoT Automotive Maintenance System

Fleet owners can use its apps to take the required precautions to avoid the abrupt failure of their cars with the use of maintenance systems. Drivers are warned about impending maintenance obligations and potential problems by the system.

Advantages of IoT apps for the Automobile industry

The list will only grow as breakthroughs are made in the software sector, particularly in it and artificial intelligence departments. The following are some of the numerous advantages of mobile applications for the automobile industry.

Experience of being connected

It have helped in providing a more connected environment to the drivers. Thanks to the integration of its technology, users of the app will be able to remotely operate numerous components of the car, including the engine heating, air conditioning, and locking systems. Applications can also be used to control windows and lights.

Insightful communication

With the development of it and artificial intelligence, more and more automobiles will be equipped with this technology. They will be able to avoid any mishaps as a result. In the automotive sector, mobile apps are utilized to get rapid updates about any crucial vehicle characteristic, which helps to increase the safety of the drivers, and a portion of the communication system is already in use.

Improvement in the efficiency of automobiles

For example, fuel can be conserved since the application manages fuel usage at specific periods throughout the driving experience. This covers things like shutting off the engine while waiting at a stop sign. Mobile applications may also be deployed in automobile manufacturing to improve the efficiency of several operations, such as supply chain monitoring, sales, and labor issues. Thus, mobile apps might aid in the production process as well.

Simple upgrading capabilities

Because mobile apps are modular, they may be readily modified to integrate the latest advancement in software technology. Such upgrades may be built into the mobile app development process so that they can be readily installed in various types of cars with varying hardware. This is feasible because the application, when linked to it, can recognize the type of car.

Future IoT Applications in the Automotive Sector

It is crucial to next-generation vehicles. One can probably have access to the car from the pocket. One can manage and access the vehicle's statistics with only one swipe on the app. The Business Insider forecast estimates that use cases for the Automotive internet of things will have an expenditure capacity of $267 billion. With Wi-Fi capabilities supported by 3G/4G/5G functioning, the industry is entering a new phase and creating space for more extensive adoption. Soon, all automobiles will be autonomous.

What challenges will the development of IoT apps face in the automotive Industry?

Its deployments in other industries face many of the same difficulties that automotive internet of things does, including:

  • Various gadgets need to be purchased to increase the total cost.
  • Acquiring the appropriate analytical tools should be done concurrently with investing in it.
  •  It is essential to monitor the ecosystem continuously to ensure its proper operation.
  • The optimum communication protocols for the network must be used to maximize connectivity.
  • Protecting against cyber attacks is a constant concern for internet-connected devices

Conclusion

The automobile sector is changing thanks to the internet of things and other disruptive technologies. This industry's evolution has resulted in the creation of ground-breaking connected and autonomous vehicles. Its use has improved auto maintenance and inspection capacities and opened new entertainment channels. Additionally, long-range data transfer made possible by automobile telematics has aided in developing a fleet management system driven by the Internet of Things.
The number of applications in the automobile sector is growing daily. The technology of the Internet of Things is growing, and with it, more advanced use cases for cars that will fundamentally alter how we interact with our cars will emerge.

Original article source at: https://www.xenonstack.com/

#iot #app #development 

Automotive App Development in IoT

How to Become an IoT Architect - For Beginners

In this Iot article, we will Learn about How to Become an IoT Architect - For Beginners. IoT engineers are responsible for the infrastructure that supports the entire technology system. They work on the cloud computing systems that transport data, the platforms that run devices, and the numerous building elements that make up IoT systems to ensure that they all perform properly.

In the internet of the things technology field, an IoT solutions architect develops practical applications and uses. It is typically the job of the IoT solutions architect to facilitate process development with engineers and sales representatives. This article will deal with a detailed process of efficiently becoming an IoT Solutions Architect.

Who Is an IoT Solutions Architect?

An IoT architect's top priority is working with key business and IT leaders to create an IoT vision that sets business objectives and communicates that vision to key organizational stakeholders. 

It consists of the devices, the network structure, and the cloud technology that allow IoT devices to communicate seamlessly. There are three primary layers to IoT architecture: 

  1. Perception (sensors, gadgets, and other devices) 
  2. Networking (connections between devices) 
  3. Application (the layer the user interacts with)

What Does an IoT Solutions Architect Do?

IoT architects bring a broad portfolio of lessons learned and design experience from their participation in IoT implementations. To build IoT solutions, an architect should develop and standardize a process and then guide its evolution and improvement.

Hence, a solutions architect plans a detailed view, creates the overall technical vision for a specific solution to a business problem, and makes the overall technical image for a particular solution to any critical business problem. They are involved in designing, describing, and managing the solution.

How to Become an IoT Solutions Architect? 

The five essential steps to becoming an IoT Architect are as follows.

  • To become an IoT Solutions architect, you should earn a bachelor's degree in information technology, computer science, computer engineering, or a related field. Even with other technological jobs, most employers would commonly require a bachelor's degree to show that you have some expertise in computer technology.
  • You should become familiar with the Internet of Things and other related technologies. To efficiently plan, design, and create solutions, IoT architects must be familiar with the technologies at their disposal. The significant technologies include programming languages, data tools, embedded systems, software and hardware, networks, cloud services, and more.
  • Researching and understanding the solutions businesses that incorporate the internet of things used in the past can help you become a more informed and efficient architect in an organization.
  • Familiarize yourself with data management because data is integral to the design and solution process. Data management and transfer are essential skills for IoT architects as solution leaders. 
  • Earning an IoT certification is essential since this is a relatively new and unique field in technology, and there are no widespread degree offerings in this particular concentration. Hence you can opt for specific training and certification courses that different companies and organizations like Microsoft, Cisco, the Cloud Credential Council, and CertNexus offer to show that you are specialized in this area.

What Are the Skills an IoT Solutions Architect Must Have?

An IoT solutions architect should possess the following skills. 

  • Familiarity with computer operating systems, hardware, and software.
  • Proficiency in Mathematics.
  • You should have the capability to use your endeavor efficiently.
  • Have wisdom in teaching and the ability to design specific courses.
  • Should possess persistence and decisiveness by nature.
  • Have a specific purpose and a passion for succeeding in this field.
  • Should always be adaptable and open to change anytime.

How Much Does an IoT Solutions Architect Earn? 

On average, IoT Solutions Architects with 4-9 years of experience earn an average salary of $10 lakhs, while architects with 10-20 years of high-level experience earn an average salary of $30.1 lakhs.

The top paying industries for IoT Solution Architect in India are

Telecom₹34.0 Lakhs per year
IT Services & Consulting₹32.6 Lakhs per year
Internet₹19.1 Lakhs per year
Industrial Machinery₹3.8 Lakhs per year

 And the top paying cities in India are

Pune ₹25.4 Lakhs per year
Bangalore₹30.9 Lakhs per year
Noida₹32.5 Lakhs per year
Gurgaon₹8.8 Lakhs per year
Chennai₹22.6 Lakhs per year

 This data is based on a sufficient number of responses and information collected from various sources. 

  • IoT Solution Architect salary in India ranges between ₹ 5.2 Lakhs to ₹ 64.8 Lakhs with an average annual wage of ₹ 23.8 Lakhs. 
  • As for employees in the US, their salary ranges from $45,320 to $206,652, with a median salary of $108,400.

FAQs

1. What qualifications do you need to become an IoT Solutions Architect?

In this field, formal education is more important than on-the-job experience because so many technical skills are required. Hence, most employers agree that a bachelor's degree in information technology, computer science, or computer engineering majors is necessary. Many companies offer certifications and related courses required for this relatively new and evolving profession in the market.

2. What is an IoT infrastructure architect?

IoT refers to the Internet of Things which includes any technologies that link users to the internet or other devices. These Architects are responsible for defining a company's vision, strategy, and architecture for the internet of things. The architect will consider present needs and possible forthcoming needs of an organization.

3. Does IoT solutions architect require coding?

As a solutions architect, you don't usually need coding skills to enter or grow your career. Still, understanding coding is necessary to make instructed decisions in favor of the business.

4. Is IoT solutions architect an excellent career?

Working as a solution architect is lucrative and remains in high demand in the market. A systems architect plays a vital role within the company, and many system architectures register a high degree of job satisfaction.

5. Is a solution architect better than a developer?

Solution Architects solve problems on a macro level, while developers are known to solve issues on a micro level. Both professionals are essential to arriving at the goal on time, attaining technical objectives, and aligning with business prerequisites.

Conclusion

Hence, technology professionals should understand the internet of things and how businesses work to match companies with the appropriate internet of things. IoT architects are trendsetters in their field, and they must feel sure and convinced to intercommunicate with fellow technology professionals and business stakeholders.

Original article sourced at: https://www.simplilearn.com

#iot 

How to Become an IoT Architect - For Beginners

How to Create Test Scripts for Your IoT Platform

In this IoT tutorial, we will learn about How to Create Test Scripts for Your IoT Platform. Use JMeter to build test scripts for complex test scenarios in your IoT environment.

In a previous article, I introduced the open-source test tool JMeter and used a simple HTTP test as an example to demonstrate its capabilities. This article shows you how to build test scripts for complex test scenarios.

The user interface displays a JMeter test script in the "tree" format. The saved test script (in the .jmxformat) is XML. The JMeter script tree treats a test plan as the root node, and the test plan includes all test components. In the test plan, you can configure user-defined variables called by components throughout the entire test plan. Variables can also thread group behavior, library files used in the test, and so on. You can build rich test scenarios using various test components in the test plan.

Test components in JMeter generally have the following categories:

  • Thread group
  • Sampler
  • Logic controller
  • Listener
  • Configuration element
  • Assertion
  • Timer
  • Pre-processor
  • Post-processor

Thread Groups

A thread group is the beginning point for all test plans (so all samplers and controllers must be placed under a thread group). A thread group can be regarded as a virtual user pool in which each thread is essentially a virtual user, and multiple virtual users perform the same batch of tasks simultaneously. Each thread is independent and doesn't affect the others. During the execution of one thread, the variable of the current thread doesn't affect the variable value of other threads.

In this interface, the thread group can be configured in various ways.

1. Action to Be Taken After a Sampler Error

The following configuration items control whether a test continues when an error is encountered:

  • Continue: Ignore errors and continue execution.
  • Start Next Thread Loop: Ignore the error, terminate the current loop of the thread, and execute the next loop.
  • Stop Thread: Stop executing the current thread without affecting the normal execution of other threads.
  • Stop Test: Stop the entire thread after executing threads have finished the current sampling.
  • Stop Test Now: The entire test execution stops immediately, even if it interrupts currently executing samplers.

2. Number of Threads

This is the number of concurrent (virtual) users. Each thread runs the test plan completely independently without interfering with any others. The test uses multiple threads to simulate concurrent access to the server.

3. Ramp-Up Period

The ramp-up time sets the time required to start all threads. For example, if the number of threads is set to 10 and the ramp-up time is set to 100 seconds, then JMeter uses 100 seconds to start and runs 10 threads (each thread begins 10 seconds after the previous thread was started).

If the ramp-up value is set small and the number of threads is set large, there's a lot of stress on the server at the beginning of the test.

4. Loop Count

Sets the number of loops per thread in the thread group before ending.

5. Delay Thread Creation Until Needed

By default, all threads are created when the test starts. If this option is checked, threads are created when they are needed.

6. Specify Thread Lifetime

Control the execution time of thread groups. You can set the duration and startup delay (in seconds).

Samplers

A sampler simulates user operations. It's a running unit that sends requests to the server and receives response data from the server. A sampler is a component inside a thread group, so it must be added to the thread group. JMeter natively supports a variety of samplers, including a TCP Sampler, HTTP Request, FTP Request, JDBC Request, Java Request, and so on. Each type of sampler sends different requests to the server according to the set parameters.

TCP Sampler

The TCP Sampler connects to the specified server over TCP/IP, sends a message to the server after the connection is successful, and then waits for the server to reply.

The properties that can be set in the TCP Sampler are as follows:

TCPClient Classname

This represents the implementation class that handles the request. By default, org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl is used, and plain text is used for transmission. In addition, JMeter also has built-in support for BinaryTCPClientImpl and LengthPrefixedBinaryTCPClientImpl. The former uses hexadecimal packets, and the latter adds a 2-byte length prefix to BinaryTCPClientImpl.

You can also provide custom implementation classes by extending org.apache.jmeter.protocol.tcp.sampler.TCPClient.

  • Target server settings: Server Name or IP and Port Number specify the hostname or IP address and port number of the server application.
  • Connection Options: Determines how you connect to the server.
    • Re-use connection: If enabled, this connection is always open; otherwise, it's closed after reading data.
    • Close Connection: If enabled, this connection is closed after the TCP sampler has finished running.
    • Set No-Delay: If enabled, the Nagle algorithm is disabled, and the sending of small packets is allowed.
    • SO_LINGER: Controls whether to wait for data in the buffer to complete transmission before closing the connection.
    • End of line (EOL) byte value: Determines the byte value at the end of the line. The EOL check is skipped if the specified value is greater than 127 or less than -128. For example, if a string returned by the server ends with a carriage return, you can set this option to 10.
      • Timeouts: Set the connect timeout and response timeout.
      • Text to send: Contains the payload you want to send.
      • Login configuration: Sets the username and password used for the connection.

HTTP Request Sampler

The HTTP Sampler sends HTTP and HTTPS requests to the web server.

Here are the settings available:

  • Name and comments
  • Protocol: Set the protocol to send the request to the target server, which can be HTTP, HTTPS, or FILE. The default is HTTP.
  • Server name or IP address: The hostname or IP address of the target server to which the request is sent.
  • Port number: The port number that the web service listens on. The default port is 80 for HTTP and 443 for HTTPS.
  • Request method: The method for sending the request, commonly including GET, POST, DELETE, PUT, TRACE, HEAD, OPTIONS, and so on.
  • Path: The target URL (excluding server address and port) to request.
  • Content encoding: How to encode the request (applicable to POST, PUT, PATCH, and FILE).
  • Advanced request options: A few extra options, including:

    • Redirect Automatically: Redirection is not treated as a separate request and is not recorded by JMeter.
    • Follow Redirects: Each redirection is treated as a separate request and is recorded by JMeter.
    • Use KeepAlive: If enabled, Connection: keep-alive is added to the request header when JMeter communicates with the target server.
    • Use multipart/form-data for POST: If enabled, requests are sent using multipart/form-data or application/x-www-form-urlencoded.
  • Parameters: JMeter uses parameter key-value pairs to generate request parameters and send these request parameters in different ways depending on the request method. For example, for GET, DELETE requests, parameters are appended to the request URL.
  • Message body data: If you want to pass parameters in JSON format, you must configure the Content-Type as application/json in the request header.
  • File upload: Send a file in the request. The HTTP file upload behavior can be simulated in this way (usually).

Logic Controllers

The JMeter Logic Controller controls the execution logic of components. The JMeter website explains it like this: "Logic Controllers determine the order in which Samplers are processed."

The Logic Controller can control the execution order of the samplers. Therefore, the controller needs to be used together with the sampler. Except for the once-only controller, other logic controllers can be nested within each other.

Logic controllers in JMeter are mainly divided into two categories. They can control the logical execution order of nodes during the execution of the test plan (a loop or conditional controller), or they can act in response to specific throughput or transaction count.

Transaction Controller

Sometimes, you want to count the overall response time of a group of related requests. In this case, you need to use a Transaction Controller.

The Transaction Controller counts the sampler execution time of all child nodes under the controller. If multiple samplers are defined under the Transaction Controller, then the transaction is considered successful only when all samplers run successfully.

Add a transaction controller using the contextual menu:

Generate parent sample: If enabled, the Transaction Controller is used as a parent sample for other samplers. Otherwise, the Transaction Controller is only used as an independent sample.

For example, the unchecked Summary Report is as follows:

If checked, the Summary Report is as follows:

Include duration of timer: If enabled, include a timer (a delay is added before and after the sampler runs).

Once Only Controller

The Once Only Controller, as its name implies, is a controller that executes only once. The request under the controller is executed only once during the loop execution process under the thread group. For tests that require a login, you can consider putting the login request in a Once Only Controller because the login request only needs to be executed once to establish a session.

If you set the loop count to 2 and check the result tree after running, you can see that the HTTP request 3under the Once Only Controller is only executed once, and other requests are executed twice.

Listeners

A listener is a series of components that process and visualize test result data. View Results Tree, Graph Results, and Aggregate Report are common listener components.

View Results Tree

This component displays the result, request content, response time, response code, and response content of each sampler in a tree structure. Viewing the information can assist in analyzing whether there is a problem. It provides various viewing formats and filtering methods and can also write the results to specified files for batch analysis and processing.

Configuration Element

Configuration element provides support for static data configuration. It can be defined at the test plan level, or at the thread group or sampler level, with different scopes for different levels. Configuration elements mainly include User Defined Variables, CSV Data Set Config, TCP Sampler Config, HTTP Cookie Manager, etc.

User-Defined Variables

By setting a series of variables, you cause a random selection of values to be used in the performance test. Variable names can be referenced within the scope, and variables can be referenced as ${variable name}.

In addition to the User Defined Variables component, variables can also be defined in other components, such as Test Plans and HTTP Requests:

For example, a defined variable is referenced in an HTTP Request:

Viewing the execution results, you can see that the value of the variable has been obtained:

CSV Data Set Config

During a performance test, you may need parameterized input, such as the username and password, in the login operation. When the amount of concurrency is relatively large, the data generation at runtime causes a heavy burden on the CPU and memory. The CSV Data Set Config can be used as the source of parameters required in this scenario.

The descriptions of some parameters in the CSV Data Set Config:

  • Variable name: Defines the parameter name in the CSV file, which the script can reference as ${variable name}.
  • Recycle on EOF: If set to True, this allows looping again from the beginning when reaching the end of the CSV file.
  • Stop thread on EOF: If set to True, this stops running after reading the last record in the CSV file.
  • Sharing mode: Sets the mode shared between threads and thread groups.

Assertions

The Assertion checks whether the request is returned as expected. Assertions are an important part of automated test scripts, so you should pay great attention to them.

JMeter commonly used assertions include Response Assertion, JSON Assertion, Size Assertion, Duration Assertion, Beanshell Assertion, and so on. Below I introduce the frequently-used JSON Assertion.

JSON Assertion

This is used to assert the content of the response in JSON format. A JSON Assertion is added on an HTTP Sampler in this example, as shown in the following image:

The root of the JSON path is always called $, which can be represented by two different styles: dot-notation (.) or bracket-notation ([]). For example; $.message[0].name or $['message'][0]['name'].

Here's an example of a request made to https://www.google.com/doodles/json/2022/11. The $[0].namevalue represents the 'name' part in the first array element in the response.

The Additionally assert value specifies that the value of 'name' is to be verified, and the Expected value is expected to be '2022-world-cup-opening-day'.

Run the script and look at the results. You can see that the assertion has passed.

Here are the possible conditions and how they're treated:

  • If a response result is not in JSON format, it's treated as a failure.
  • If the JSON path cannot find the element, it fails.
  • If the JSON path finds the element, but no conditions are set, it passes.
  • If the JSON path finds an element that does not meet the conditions, it fails.
  • If the JSON path finds the element that meets the conditions, it passes.
  • If the JSON path returns an array, it iterates to determine whether any elements meet the conditions. If yes, it passes. If not, it fails.

Go back to JSON Assertion and check the Invert assertion.

Run the script, check the results, and you can see that the assertion failed:

Timers

The pause time between requests in the performance test is called "thinking time." In the real world, the pause time can be spent on content search or reading, and the Timer simulates this pause.

All timers in the same scope are executed before the samplers.

If you want the timer to be applied to only one of the samplers, add the timer to the child node of the sampler.

JMeter timers mainly include Constant Timer, Uniform Random Timer, Precise Throughput Timer, Constant Throughput Timer, Gaussian Random Timer, JSR223 Timer, Poisson Random Timer, Synchronizing Timer, and BeanShell Timer.

Constant Timer

A Constant Timer means that the interval between each request is a fixed value.

After configuring the thread delay to 100 and 1000, respectively, run the script:

Check the data in the table, where #1 and #2 are the running results when the configuration is 100 milliseconds, and #4 and #5 are the running results when the configuration is 1000 milliseconds. You can see that the interval between #4 and #5 is significantly greater than that between #1 and #2:

Constant Throughput Timer

The Constant Throughput Timer controls the execution of requests according to the specified throughput.

Configure the target throughput as 120 (note that the unit is minutes), and then select All active threads in current thread group (shared) based on the calculated throughput:

Run the script, check the results, and observe that the throughput is approximately 2/second (120/60).

Pre-Processors and Post-Processors

A pre-processor performs some operations before the sampler request. It's often used to modify parameters, set environment variables, or update variables.

Similarly, a post-processor performs some operations after the sampler request. Sometimes, the response data needs to be used in subsequent requests, and you need to process the response data. For example, if the jwt token in the response is obtained and used for authentication in subsequent requests, the post-processor is used.

Using JMeter

The above is the introduction to the main test components of JMeter, and now you can feel confident in starting your own tests. In another article, I will explain using the MQTT plugin in JMeter.
 

Original article sourced at: https://www.emqx.com

#iot 

How to Create Test Scripts for Your IoT Platform
Noemi  Hintz

Noemi Hintz

1671241500

Learn About internet Of Things (IoT) In Healthcare

In this IoT tutorial, we will learn about Internet of Things (IoT) in Healthcare. The healthcare industry has gone digital in a big way in recent years. The impact of digital technologies like IoT devices and monitors is changing the way doctors and hospitals administer care for their patients, and it’s a positive trend that is helping to simplify healthcare, lower costs, and improve access to critical medical information.  

The global market for what’s now known as the Internet of Medical Things (IoMT) is expected to grow from $41 billion in 2017 to $158 billion in 2022. Connected IoT sensors provide a continuous stream of real-time health data and vital signs such as heart rate, blood pressure and glucose monitoring. And we’re now seeing IoMT device rollout with ultrasounds, thermometers, EKGs, smart beds, and a range of other medical devices. 

Important Benefits of IoT in Healthcare

IoT implementations have unquestioned benefits for both doctors and the patients they treat. Among the most common benefits:

  1. Improved Patient Experience: The more connected patients are to their doctors and families, the better their experience with healthcare. Remote monitoring of vital signs and symptoms makes physical spaces smarter, improving efficiency of operations and clinical tasks – contributing to a more personalized experience. 
  2. Faster and More Precise Diagnosis: Real-time data provided from personal monitoring devices (such as glucose and blood pressure) help doctors make more informed decisions. They provide data to analyze past treatments, diagnose symptoms, reduce errors, and improve ongoing disease management. 
  3. Lower Costs: Remote IoT monitoring reduces operational costs for doctors’ offices and hospitals. Electronically managed healthcare information is also less costly to access and analyze than paper records (with the caveat that connected devices and transmitted information undergo proper security protocol). 

Common Uses of IoT in Healthcare

IoMT use cases are popping up all over the healthcare landscape. Among the most popular and impactful examples of IoT in healthcare:

Diabetes Management 

With more than 100 million adults in the U.S. living with diabetes or prediabetes, blood glucose monitoring has become a vital, booming business. In the old days, diabetic patients were forced to use fingertip pricks to test blood glucose levels. This inconvenient method, unfortunately, leads some patients to check less frequently than they should, which could increase the risk of long-term complications. A lack of real-time data made patients more vulnerable to extreme swings in glucose levels that could have severe health consequences.  

A wave of new IoT-based glucose monitoring devices, however, promises to streamline diabetes management. Patients use wearable sensors that read glucose levels and integrate the data directly to a reader and a mobile tracking app on a smartphone. The data is delivered wirelessly to a centralized system so that family and healthcare professionals can receive immediate updates when a glucose reading is taken and monitor diseases like diabetes in real-time. 

Virtual Hospitals 

Smart IoT devices such as connected personal wearables are creating an innovative new environment of “hospitals without walls,” where outpatient and long-term care are delivered remotely by doctors to patients right in their homes. The benefits are convenience and speed of care to patients, and the freeing up of hospital bed space for patients who need in person intensive care. One example of a virtual hospital is in Sydney, Australia, which opened just as the pandemic was taking hold in 2020. The hospital was redesigned to provide remote care for patients exhibiting COVID symptoms by using pulse oximeters (clipped to a finger) to measure oxygen saturation level and heart rates, as well as armpit patches to measure body temperature. Data was instantly transmitted via mobile phone app to the virtual hospital staff. 

Smart Labs

Today’s smart labs are comprised of lab equipment capable of tracking and transmitting scientific and health-related data. Researchers and healthcare professionals across disciplines are able to capture and share accurate lab data with each other, and do it quickly to speed analysis. Alerts can also be set up to mitigate equipment failures and loss of valuable product information and materials, including lost medical samples. Smart labs provide a better medium for collaboration between researchers and the ability to bring important medical products to the market faster for public consumption. 

COVID Impact on IoT in Healthcare

Since the pandemic began, there has been a dramatic ramp-up of innovation in the healthcare space. Healthcare providers are now more regularly connecting with patients via video chat, and the use of various remote monitoring IoT devices contribute to real-time care without a patient needing to see a doctor in person. The transition has been further supported by insurance payers, some of whom have issued waivers that allow payment parity for health care delivered either via telehealth or in person. As the world emerges from the pandemic, virtual care is expected to continue as the new normal, and even routine follow-up and feedback could potentially be avoided entirely. 

Conclusion: Hitting It Home With IoT in Healthcare

Healthcare may be one of the most visible industries leveraging IoT devices for the good of people everywhere. From continuous health monitoring to virtual hospitals and labs, IoT is having a dramatic impact, and anyone can get a start in the exciting field of IoT with the right training and preparation. 

Original article sourced at: https://www.simplilearn.com

#iot 

Learn About internet Of Things (IoT) In Healthcare
Conor  Grady

Conor Grady

1671082980

Learn About Memory Allocation Resilience Matters in IoT

In this IoT article, we will learn about memory allocation resiliency issues in IoT. Let’s look at how developers can build resilience into their "malloc" approach and what it means for connected device performance.

Memory allocation is one of those things developers don’t think too much about.

After all, modern computers, tablets, and servers count so much space that memory often seems like an infinite resource. And, if there is any trouble, a memory allocation failure or error is so unlikely that the system normally defaults to program exit. 

This is very different, however, when it comes to the Internet of Things (IoT). In these embedded connected devices, memory is a limited resource and multiple programs fight over how much they can consume. The system is smaller and so is the memory. Therefore, it is best viewed as a limited resource and used conservatively. 

It’s in this context that memory allocation — also known as malloc — takes on great importance in our sector. Malloc is the process of reserving a portion of the computer memory in the execution of a program or process. Getting it right, especially for devices connected to the internet, can make or break performance. 

So, let’s take a look at how developers can build resilience into their malloc approach and what it means for connected device performance going forward.

Malloc and Connected Devices: A Short History

Let’s start from the beginning. Traditionally, malloc has not been used often in embedded systems. This is because older devices didn’t typically connect to the internet and, therefore, counted vastly different memory demands. 

These older devices did, however, create a pool of resources upon system start which to allocate resources. A resource could be a connection and a system could be configured to allow n connections from a statically allocated pool.

In a non-internet-connected system, the state of a system is normally somewhat restricted and therefore the upper boundaries of memory allocation are easier to estimate. But this can change drastically once an embedded system connects to the internet. 

For example, a device can count multiple connections and each can have a different memory requirement based on what the connection is used for. Here, the required buffer memory for a data stream on a connection is dependent on the latency of the connection to obtain a certain throughput using some probability function for packet losses or other network-dependent behavior. 

This is normally not a problem on modern high-end systems. But, remember that developers face restricted memory resources in an embedded environment. So, you cannot simply assume there is enough memory. 

This is why it is very important in IoT embedded development to think about how to create software that is resilient to memory allocation errors (otherwise known as malloc fails).

Modern Embedded Connected Systems and Malloc

In modern connected embedded systems, malloc is more frequently used and many embedded systems and platforms have decent malloc implementation. The reason for the shift is that modern connected embedded systems do more tasks and it is often not feasible to statically allocate the maximum required resources for all possible executions of the program.

This shift to using malloc actively in modern connected embedded systems requires more thorough and systematic software testing to uncover errors.

Usually, allocation errors are not tested systematically since it is often thought of as something which happens with such a small probability that it is not worth the effort. Since allocation errors are so rare, any bugs can live for years before being found.

Mallocfail: How to Test for Errors

The good news is that developers can leverage software to test allocation errors. A novel approach is to run a program and inject allocation errors in all unique execution paths where allocation happens. This is made possible with the tool mallocfail

Mallocfail, as the name suggests, helps test malloc failures in a deterministic manner. Rather than random testing, the tool automatically enumerates through different control paths to malloc failure. It was inspired by this Stack Overflow answer.

In a nutshell, this tool overrides malloc, calloc, and realloc with custom versions. Each time a custom allocator runs, the function uses libbacktrace to generate a text representation of the current call stack, and then generates a sha256 hash of that text. 

The tool then checks to see if the new hash has already been seen. If it has never been seen, then the memory allocation fails. The hash is stored in memory and written to disk. If the hash — the particular call stack — has been seen before, then the normal libc version of the allocator is called as normal. Each time the program starts, the hashes that have already been seen are loaded in from disk.

This is something that I’ve used first-hand and found very useful. For example, at my company, we successfully tested mallocfail on our embedded edge software development kit. I’m pleased to report that the tool actually managed to identify a few problems in the SDK and its third-party libraries. As a result, the former problems are now fixed and the latter have received patches.

Handling Malloc Fails

Handling allocation errors can be a bit tricky in a complex system. For example, consider the need to allocate data to handle an event. Different patterns exist to circumvent this problem. The most important is to allocate the necessary memory such that an error can be communicated back to the program in case of an allocation failure, and such that some code path does not fail silently.

The ability to handle malloc fails is something that my team thinks about often. Sure, it’s not much of a problem on other devices, but it can cause big issues on embedded devices connected to the internet. 

For this reason, our SDK counts the functionality to limit certain resources including connections, streams, stream buffers, and more. This is such that a system can be configured to limit the amount of memory used such that malloc errors are less likely to happen (and then it is just a resource allocation error).

Often, a system running out of memory results in a system struggling to perform. So it really makes sense to lower the probability of allocation errors. This is often handled by limiting which functionality/tasks that can occur simultaneously. 

As someone who’s been working in this field for two decades, I believe developers should embrace best malloc practices when it comes to modern embedded connected devices. 

My advice is to deeply consider how your embedded device resolves malloc issues and investigate the most efficient way of using your memory. This means designing with dynamic memory allocations and testing as much as possible. The performance and usability of your device count on it.

Original article sourced at: https://dzone.com

#iot 

Learn About Memory Allocation Resilience Matters in IoT
Conor  Grady

Conor Grady

1671053040

35 Common IoT Terms You Must Know

cIn this IoT article, we will learn about 35 common IoT terms you must know. Whether you’re at work, at home, off on vacation, or simply out on the town doing some shopping, you can’t escape the Internet of Things. For those still not in the know, the Internet of Things is a system of connectivity that takes computer devices, digital technology, objects, and people, and binds them into a network of continually streaming information.

With the Internet of Things, everyday objects like cars, wearable tech, household appliances, even dog collars, can be equipped with sensors and an Internet connection. This setup enables the item in question to send and receive data, which can then be used to collect data that can, in turn, be used to improve products and services.

Are you an IT Professional wanting to gain expertise in Big Data that covers the concepts related to IoT? Then take up the Big Data Hadoop Course now! 

The Internet of Things is growing daily, insinuating itself in every aspect of our lives. According to Forbes, the number of cellular IoT connections is expected to reach 3.5 billion by 2023!

With a field so rich in potential, IT professionals must be well-versed in IoT, and that includes its terminology. That’s why we now present the top 35 IoT terms for your information and edification.

IoT Terms

  1. 6LoWPAN

A fusion of IPv6 (the current Internet protocol), and Low-Power Wireless Personal Area Networks, it permits power-constrained IoT devices to access the TCP/IP Internet directly. This means that even the smallest and weakest IoT devices can have connectivity.

2.    Advanced Encryption Standards

This is an electronic data encryption specification that has been the standard for IoT device transport layer security since 2001.

3.   Application Programming Interface

A method of expediting communication between computers and hardware/software platforms.

4.   Beacon Technology

This permits small network transmitters to interact with systems utilizing low-power Bluetooth. Apple’s version is called iBeacon.

5.   Big Data

Large volumes of information, both structured and unstructured, collected from a massive number of sources and delivered at extremely rapid speed. This information is raw data that is used by analysts to devise better-informed strategies for businesses and other organizations. IoT is a huge source for Big Data.

6.   Bluetooth Low Energy 

A wireless, personal-area network characterized by lower power usage and a limited range for data transmission. It’s also called Bluetooth 4.0.

7.   Cloud Computing 

Remote servers connected via a network and used for data storage, processing, and management, instead of relying on a local, in-house physical server.

8.   Embedded Software

The computer software that controls hardware devices and systems that are not usually considered computers, like a smart refrigerator, for instance.

9.   Firmware-Over-The-Air

Also known as FOTA, this technology allows the remote wireless installation, repair, and upgrading of software and services on mobile devices.

10.   Gateway 
 

This is any device that gathers information from various network points and sends that information on to another network.

11.   Global Navigation Satellite System

The GNSS is any satellite navigation system that offers autonomous geo-spatial positioning, timing, and navigation, either by region or globally.     

Want to begin your career as a Big Data Engineer? Check out the Big Data Engineer Training Course and get certified.

12.  Industrial IoT

This is the means for machines and industrial applications to have real-time communication with each other (M2M). This will probably be what brings SkyNet online.

13.  Link Budget 

This is a telecommunication system jargon that describes an accounting of all of the gains and losses going from a transmitter, passing through the medium, and ending up at the receiver. 

14.  Low-Power Wide-Area

A network offering a low range and low power consumption, used primarily for M2M communications.

15.  Low-Power Wireless Sensor Network

A collection of scattered, independent devices that measure environmental or physical conditions, all without significant power consumption.

16.  Lora Protocol 

A long-range digital wireless communication technique to facilitate IoT and M2M communications.

17.  LTE-M

A more power-efficient standard for machine communications.

18.  Machine-to-Machine

Also known as M2M for short, it’s the process of machines or other connected devices communicating with each other without human intervention.

19.  Media Access Control 

A data link layer (DLL) sublayer transmits data packets to and from a network interface card.

20.  Mesh Network

A network system where devices transmit their data while also serving as relays to other nodes.

21.  Mobile IoT
 

Low power, wide area devices used in conjunction with mobile devices interfacing with IoT networks.

22.  NB-IoT
 

This stands for Narrow Band IoT and is used as a convenient, cost-effective means of expanding IoT into a whole new series of devices and everyday household items. This is a low-power, wide-area technology, and will be instrumental in increasing the scope of IoT in the years to come.

22.  Near-Field Communication

Otherwise known as NFC, it permits two-way communication between closely located endpoints. It’s a short-range, low-power, low-speed form of radio communication.

23.   Quality of Service

A measurement of how well a network supports IT connectivity. This covers elements such as transmission delays, availability of connections, and data loss.

24.   Radio Frequency Identification
 

Commonly called RFID tags, uses electromagnetic coupling and radio frequencies to identify people and things. It has a limited range and data transmission capabilities. The number bibs that runners use in road races, for instance, are equipped with RFID tags to confirm they passed certain course checkpoints.

25.  RF Geolocation
 

Otherwise known as using a radio transceiver to find another radio transceiver. The classic example of this is the ever-popular GPS, found in many models of cars.

26.  Repeater
 

A device used to extend network range by receiving a digital signal and re-transmitting it.

27.  Sensor/Sensor Network
 

A device or group of devices that monitor and collect environmental data from a variety of locations in network range.

28.   Smart Meter
 

A device used by utility companies to collect information about energy consumption (e.g., electricity, natural gas, water), and transmit the data back to the company or even to the consumer.

29.  Software-Defined Network
 

A network method that reassigns information flow control from hardware in favor of a software controller.

30.  Telematics
 

A computer system designed for long-distance data transmissions, the most ubiquitous example being GPS and satellite radio tech installed in automobiles.

31.  Transmission Control Protocol/Internet Protocol
 

Better known as TCP/IP, this is the basic protocol suite for all Internet and private network communications and connections.

32.  Ultra-Wide Band
 

The UWB is a weak signal sent over a wide frequency and is employed mostly as a localizing signal and distance measurement.

33.  Wearable
 

Devices were worn by people and equipped with sensors, monitors, and an Internet connection to gather data regarding the wearer’s activity, life, and environment (e.g., Apple Watch, Fitbit).

34.  Zigbee/Z-Wave
 

Used for personal-area networks (PAN), this is a short-range, low-power standard employed for control and sensing, and can also be used to create a more extended range, energy-efficient, low data transfer rate networks.

And there you have it, almost three dozen IoT terms that give you a better understanding of this rapidly expanding technology. If you want even more of an understanding of IoT, then perhaps some education is in order. For example -

Learning About Big Data

While learning IoT-related jargon is a great thing, it’s even better when you master the concepts that relate to IoT. Simplilearn can help you accomplish this with its Big Data Architect master’s program. The IoT is a huge contributor to Big Data, and one of the best tools for processing Big Data is called Hadoop.

Original article sourced at: https://www.simplilearn.com

#iot 

35 Common IoT Terms You Must Know
Conor  Grady

Conor Grady

1671045360

Who Is an IoT Solutions Architect?

In this IoT article, we will learn about Who is an IoT Solution Architect? How to become an IoT Solution Architect. IoT engineers are responsible for the infrastructure that supports the entire technology system. They work on the cloud computing systems that transport data, the platforms that run devices, and the numerous building elements that make up IoT systems to ensure that they all perform properly.

In the internet of the things technology field, an IoT solutions architect develops practical applications and uses. It is typically the job of the IoT solutions architect to facilitate process development with engineers and sales representatives. This article will deal with a detailed process of efficiently becoming an IoT Solutions Architect.

Who Is an IoT Solutions Architect?

An IoT architect's top priority is working with key business and IT leaders to create an IoT vision that sets business objectives and communicates that vision to key organizational stakeholders. 

It consists of the devices, the network structure, and the cloud technology that allow IoT devices to communicate seamlessly. There are three primary layers to IoT architecture: 

  1. Perception (sensors, gadgets, and other devices) 
  2. Networking (connections between devices) 
  3. Application (the layer the user interacts with)

What Does an IoT Solutions Architect Do?

IoT architects bring a broad portfolio of lessons learned and design experience from their participation in IoT implementations. To build IoT solutions, an architect should develop and standardize a process and then guide its evolution and improvement.

Hence, a solutions architect plans a detailed view, creates the overall technical vision for a specific solution to a business problem, and makes the overall technical image for a particular solution to any critical business problem. They are involved in designing, describing, and managing the solution.

How to Become an IoT Solutions Architect? 

The five essential steps to becoming an IoT Architect are as follows.

  • To become an IoT Solutions architect, you should earn a bachelor's degree in information technology, computer science, computer engineering, or a related field. Even with other technological jobs, most employers would commonly require a bachelor's degree to show that you have some expertise in computer technology.
  • You should become familiar with the Internet of Things and other related technologies. To efficiently plan, design, and create solutions, IoT architects must be familiar with the technologies at their disposal. The significant technologies include programming languages, data tools, embedded systems, software and hardware, networks, cloud services, and more.
  • Researching and understanding the solutions businesses that incorporate the internet of things used in the past can help you become a more informed and efficient architect in an organization.
  • Familiarize yourself with data management because data is integral to the design and solution process. Data management and transfer are essential skills for IoT architects as solution leaders. 
  • Earning an IoT certification is essential since this is a relatively new and unique field in technology, and there are no widespread degree offerings in this particular concentration. Hence you can opt for specific training and certification courses that different companies and organizations like Microsoft, Cisco, the Cloud Credential Council, and CertNexus offer to show that you are specialized in this area.

What Are the Skills an IoT Solutions Architect Must Have?

An IoT solutions architect should possess the following skills. 

  • Familiarity with computer operating systems, hardware, and software.
  • Proficiency in Mathematics.
  • You should have the capability to use your endeavor efficiently.
  • Have wisdom in teaching and the ability to design specific courses.
  • Should possess persistence and decisiveness by nature.
  • Have a specific purpose and a passion for succeeding in this field.
  • Should always be adaptable and open to change anytime.

How Much Does an IoT Solutions Architect Earn? 

On average, IoT Solutions Architects with 4-9 years of experience earn an average salary of $10 lakhs, while architects with 10-20 years of high-level experience earn an average salary of $30.1 lakhs.

The top paying industries for IoT Solution Architect in India are

Telecom₹34.0 Lakhs per year
IT Services & Consulting₹32.6 Lakhs per year
Internet₹19.1 Lakhs per year
Industrial Machinery₹3.8 Lakhs per year

 And the top paying cities in India are

Pune ₹25.4 Lakhs per year
Bangalore₹30.9 Lakhs per year
Noida₹32.5 Lakhs per year
Gurgaon₹8.8 Lakhs per year
Chennai₹22.6 Lakhs per year

 This data is based on a sufficient number of responses and information collected from various sources. 

  • IoT Solution Architect salary in India ranges between ₹ 5.2 Lakhs to ₹ 64.8 Lakhs with an average annual wage of ₹ 23.8 Lakhs. 
  • As for employees in the US, their salary ranges from $45,320 to $206,652, with a median salary of $108,400.

FAQs

1. What qualifications do you need to become an IoT Solutions Architect?

In this field, formal education is more important than on-the-job experience because so many technical skills are required. Hence, most employers agree that a bachelor's degree in information technology, computer science, or computer engineering majors is necessary. Many companies offer certifications and related courses required for this relatively new and evolving profession in the market.

2. What is an IoT infrastructure architect?

IoT refers to the Internet of Things which includes any technologies that link users to the internet or other devices. These Architects are responsible for defining a company's vision, strategy, and architecture for the internet of things. The architect will consider present needs and possible forthcoming needs of an organization.

3. Does IoT solutions architect require coding?

As a solutions architect, you don't usually need coding skills to enter or grow your career. Still, understanding coding is necessary to make instructed decisions in favor of the business.

4. Is IoT solutions architect an excellent career?

Working as a solution architect is lucrative and remains in high demand in the market. A systems architect plays a vital role within the company, and many system architectures register a high degree of job satisfaction.

5. Is a solution architect better than a developer?

Solution Architects solve problems on a macro level, while developers are known to solve issues on a micro level. Both professionals are essential to arriving at the goal on time, attaining technical objectives, and aligning with business prerequisites.

Conclusion

Hence, technology professionals should understand the internet of things and how businesses work to match companies with the appropriate internet of things. IoT architects are trendsetters in their field, and they must feel sure and convinced to intercommunicate with fellow technology professionals and business stakeholders.

Original article sourced at: https://www.simplilearn.com

#iot 

Who Is an IoT Solutions Architect?

How to Test IoT Platform with Open Source Tools

In this article, We Will Learn How to Test IoT Platforms Using Open Source Tools. This demo of JMeter using EMQX shows how to introduce performance test tools to verify and test platform-related quality indicators.

Introduction

The IoT industry is developing explosively. As the scale of endpoints continues to grow and business logic becomes more complex, it is necessary to verify the availability and reliability of the platform when a large number of devices are connected before the IoT platform is officially launched so as to ensure system quality. Therefore, the value and necessity of IoT performance tests are gradually highlighted. If you're delivering services, then testing your IoT system can help you find bottlenecks in performance and help you plan ahead for scalability.

IoT can consist of any number of different devices using diverse protocols strung together with complex integration architecture. This can make it challenging to design effective and meaningful tests for it. This series of articles will take the IoT platform based on EMQX as an example to introduce how to use performance test tools to verify and test platform-related quality indicators.

EMQX is a scalable messaging (MQTT) broker used to connect IoT devices. It's open source, but because it's a broker, you must have a working node to manage all the messaging traffic. You can accept its business source license (BSL) and gain 10 licenses to use the official EMQX cloud installation. Alternatively, you can install and run EMQX on your own server.

Introduction to JMeter

JMeter is an open-source software of the Apache Foundation. It mainly implements performance tests by simulating concurrent loads, which is currently the mainstream performance test tool in the open-source community. It mainly has the following advantages:

  • Built-in support for multiple protocols, including TCP, HTTP, HTTPS, and more.
  • Provides a flexible plug-in extension mechanism and supports third-party extensions of other protocols.
  • Great community support.

Install JMeter

JMeter is written in Java, so you must install Java if it's not already installed. For Linux, macOS, and Windows, you can use Adoptium.net. On Linux, you may alternatively use SDKMan.

After installing Java, download JMeter, decompress it, and enter the bin subdirectory of the archive directory. Depending on your operating system, run jmeter (Linux and macOS) or jmeter.bat (Windows).

$ wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-X.Y.tgz
$ tar xvf apache-jmeter*tgz
$ cd apache-jmeter-X.Y/bin
$ ./jmeter

 

JMeter's script editing interface is presented here:

JMeter

Next, let's take HTTP as an example to see how to use JMeter to build and run a simple test case.

1. Add a virtual user group (Thread Group): Right-click on the test plan > Add > Threads (Users) > Thread Group

JMeter Add Thread Group

JMeter uses a single thread to simulate a user, and a Thread Group refers to a group of users as a virtual user group simulating access to the system under test.

「Number of Threads」 in 「Thread Properties」 can be used to configure the number of concurrent users in a virtual user group. The higher the value, the greater the amount of concurrency; 「Loop Count」 can be used to configure how many tests each virtual user performs.

JMeter Thread Properties

2. Add the HTTP page under test: Right-click on the Thread Group > Add > Sampler > HTTP Request

JMeter Add the HTTP page

In the sample test script, use the default HTTP request settings to initiate an HTTP request to a website.

JMeter HTTP request

 

3. Add a result listener: Right-click on the thread group > Add > Listener > View Results Tree

The listener is not necessary for the actual performance test, but it can help you see the test results intuitively and facilitate debugging in the process of writing scripts. In this sample script, we will use 「view result tree」 to help view the response information of the request.

JMeter Add a result listener

 

4. Time to run the test

After saving the test script, click「Start」button in the operation bar to run the test script. It is recommended that the number of threads and the loop count in the thread group be set smaller (such as within 10) to avoid being banned.

Now, we have completed a simple HTTP test script. You can draw inferences from this case and try other protocols. In the next article, I'll introduce other test components of JMeter in more detail, which you can use together to build complex test scenarios. For now, explore JMeter to see what you can test.


Original article sourced at: https://dzone.com

#iot 

How to Test IoT Platform with Open Source Tools
Bongani  Ngema

Bongani Ngema

1670579700

Stream Processing with Apache Flink and NATS

Stream Processing with Apache Flink

Apache Flink is a stream processing framework which is developed by Apache Software Foundation. It is an open source platform which is a streaming data flow engine that provides communication, and data-distribution for distributed computations over data streams. Apache Flink is a distributed data processing platform which is used in big data applications and primarily involves the analysis of data stored in the Hadoop clusters. It is capable of handling both the batch and stream processing jobs. It is the alternative of Map-reduce. Some of the best features of it are as follows -

An open-source, distributed processing engine and framework of stateful computations written in JAVA and Scala. Click to explore about our, How to Integrate AIOps for DevOps?

Unified framework - Flink is a unified framework, that allows to build a single data workflow and holds streaming, batch, and SQL. Flink can also process graph with its own Gelly library and use the Machine learning algorithm from its FlinkML library. Apart from This, Flink also supports iterative algorithms and interactive queries.

Custom Memory Manager - Flink implements its memory management inside the JVM and its features are as follows

  • C++ style memory management inside the JVM.
  • User data stored in serialized bytes array in JVM.
  • Memory can be quickly allocated and de allocated.

Native Closed Loop Iteration Operators: Flink has its dedicated support for iterative computations. It iterates on data by using streaming Architecture. The concept of an iterative algorithm is tightly bounded into the flink query optimizer.

Use Cases of Apache Flink

It is one of the best options to develop and run several types of applications because of its extensive features. Some of the use cases of Flink are as follows -

Event Driven Applications - An event-driven application is a type of stateful application through which events are ingested from one or more event streams, and it also reacts to the incoming events. Event-driven applications are based on stateful stream processing applications. Some of the event-driven applications are as follows -

  • Fraud Detection
  • Anomaly Detection
  • Web Application

Data Analytics Application - These types of applications extract the information from the Raw data. With the help of a proper stream processing engine, analytics can also be done in real time.

Some of the data analytics Applications are as follows -

  • Quality monitoring of networks
  • Analysis of product updates and experiment evaluation
  • Large scale graph analysis
  • Data Pipeline Applications - For converting and moving data from one system to another, ETL, i.e. Extract, Transform and Load operation is the general approach and even ETL jobs are periodically triggered for copying the data from the transaction database to analytical database.

Some of the data pipeline applications are as follows -

  • Continuous ETL operations in e-commerce
  • Real-time search index building in e-commerce

Challenges for enabling IoT in Data Processing

There are several challenges which are faced by the IoT industries when it comes to data processing some of the are as follows -

  • Devices produce more amount of data that users do.
  • IoT users also expect real-time information to which they can act on immediately.
  • Connectivity can never be guaranteed in the IoT industries.
  • Integrating and Managing IoT data.

Solutions for Stream Processing Using Apache Flink in IoT

Several solutions behind streaming processing using Apache Flink in IoT are as follows -

  1. Real-Time Data Processing - Many IoT use cases require immediate information and an action to be followed. So, for handling real-time data processing Apache flink is one way.
  2. Event Time for Ordering Data in IoT - When data from the devices travel through a network, it is essential to account for latency and network failures, even if the data was sent to a more stable system, the latency will increase with the distance from the data center.
  3. Tools for Dealing with Messy Data: Generally the pre-processing of the data is the hardest part of the process. When talking about IoT, it is even harder to control the source. Although streaming of data does not fix the problem. But it can provide several tools for it, like windowing, which is a concept of a grouping of data from a particular time together for further processing.
  4. Segmentation Allows for Parallel Processing - Usually, the users of IoT devices are more interested in calculating on subsets of data than calculating on the complete data. So, Flink introduces the concept of grouping by key for that type of purpose. In this once a stream is partitioned, it can be executed in parallel.
  5. Local State is Crucial to Performance - Apache Flink lets us keep data in a proper manner, where the calculations are performed with the help of local state as.
  6. Data Streaming is Conceptually Simple - Although one has to learn how to manage state properly in Flink, once it is familiar of using flink, we can only focus on the core logic of the application, and leave the other part on the framework to handle it.

What is NATS?

NATS is an open source messaging system which consists of a server, a client and a connector framework which is a java based framework used for connecting it with other services. Its server is written in GO programming language. It also provides high performant and flexible messaging capabilities. The essential design principles which makes it easy to use are its performance and scalability. Features of NATS - It provide some of the best and unique features; some of them are as follows -

  • Auto-discovery - This is a feature to discover routes to other servers makes clustering bliss. For getting a better network between the nodes, we can combine auto-discovery and embedded servers.
  • Optional Persistence - The NATS server provides the ability to persist messages to ensure their delivery. This feature makes its server very lighter for the users.
  • Clustered mode Server - Its server can be clustered together and have distributed queuing across the clusters.

Solutions for Stream Processing Using NATS in IoT

Several solutions behind streaming processing using Nats IO in Iot are as follows -

Multiple qualities of service (QoS)

  • At-most-once delivery - NATS delivers messages to immediately eligible subscribers and do not preserve the messages for other subscribers.
  • At-least-once delivery - Messages preserved until delivery to the subscribers has been confirmed, or storage has been exhausted.
  • Load balancing - The application will produce a massive amount of requests, and we would like to use a dynamically scalable pool of worker application instances to ensure the meeting SLAs or other performance targets.
  • Fault tolerance - The application needs to be highly influential to a network that may be beyond the control and we need the underlying application data communication to seamlessly recover from connectivity outages, so it provides a proper fault tolerance capability.

Use Cases of NATS

It is one of the most straightforward and powerful messaging systems and offers multiple quality of Services. Some of the best use cases of Nats are as follows -

  • Command and control - Sending the commands for running the applications or devices and receiving back the status from the devices or the applications like satellite telemetry and IoT.
  • Addressing, discovery - Sending the data to specific application instances or devices, or users or discovering all the applications instances or devices that are connected to the Infrastructure.
  • High Throughput message Fanout - A few numbers of publishers need to send frequently data to a much larger group of subscribers and many of them also share a common interest in specific data sets or categories.

Conclusion 

The proper management of data streams has helped to enterprises to meet the demands of a real-time world. To facilitate Streaming Analytics as your Analytics Approach we advice taking the subsequent steps.

Original article source at: https://www.xenonstack.com/

#apache #stream #nats #iot 

Stream Processing with Apache Flink and NATS
Rust  Language

Rust Language

1669019005

How to run Rust on Arduino, an AVR Microcontroller

In this tutorial, you'll learn how to run Rust on Arduino, an AVR microcontroller made simpler for beginners in embedded systems. Learn how to run Rust on a microcontroller. 

Arduino is an AVR microcontroller made simpler for beginners in embedded systems. While the Arduino UNO is used in this article, it is easier to follow the procedure specified here for other boards.

Rust is a systems programming language that perfectly suits low level systems and communicates properly with hardware systems. It was designed to be a modern-day alternative to C++, but with more memory safety and efficiency, as well as speed.

This tutorial is aimed at beginner- to intermediate-level Rust or embedded systems developers looking to learn how to run Rust on a microcontroller. The prerequisites for going through this article includes:

  • Knowledge of Rust language
  • Development environment for Rust language
  • Basic knowledge of Arduino
  • Basic usage of a Linux environment

Table Contents:

  • Why Rust for embedded systems?
  • What is the Arduino UNO?
  • Tooling
    • Software needs
    • Hardware needs
  • Installation and setup
    • Using Avrdude
      • On Windows
      • On mac OS
      • On Linux
  • Starting a new Arduino project
    • Understanding the embedded Rust code
  • Configuring the microcontroller for flashing
    • Output on the microcontroller
  • Other projects
  • Further support for embedded Rust development

Why Rust for embedded systems?

Embedded systems technology has lacked novelty for decades. The language of choice for programming lightning-fast, embedded devices has been C/C++ for a long time, but Rust provides even faster development support.

Rust is a great fit for embedded systems development because it is:

  • Highly interoperable with C codebases
  • Portable and lightweight
  • A powerful concurrency model
  • Robust support for different microcontrollers
  • Memory safe, so there will be no problems due to memory

If you have already programmed Arduinos in C++, it will be relatively easy to transition to doing so with Rust, once you master the basics. You can learn more about embedded Rust here. You can also see the available microcontroller crates here.

What is the Arduino UNO?

The Arduino UNO is based on the ATMega328P under the AVR microcontrollers family developed by Atmel. The Arduino can be programmed with its programming language, which is derived from C++ using the Arduino IDE editor, but since it is also an open source project, other systems-compatible programming languages can also be used to program the Arduino.

The normal procedure for embedded systems development with the Arduino involves the following steps:

  1. Sketching the electrical diagram of the intended circuit
  2. Connecting the electrical components to match the diagram
  3. Writing the program logic to control the circuit as desired
  4. Connecting the microcontroller via the USB cord to the computer
  5. Flashing (or uploading) the program from the computer onto the board’s Flash memory

This article focuses on the third through fifth steps, but the wiring for the tutorial will be made available.

Tooling

To follow this article, you will need some software installed along with some hardware.

Software needs

  • A machine for writing, compiling and flashing the program to the board
  • Cargo installed (see https://rustup.rs)
  • Rust nightly compiler version installed

Hardware needs

  • The Arduino board

Installation and setup

Using Avrdude

A Hardware Abstraction Layer (HAL) is required to run Rust on AVR microcontrollers and other common boards. To get this, you need the nightly Rust compiler that compiles Rust code to AVR on your machine. Run the command below to install it:

rustup toolchain install nightly

On Windows

On Windows, you will need to install Scoop via Powershell using the command:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Needed to run a remote script the first time
irm get.scoop.sh | iex 

The output at the end should be:

Windows output

Afterwards, run the following commands to install avr-gcc and avrdude:

scoop install avr-gccscoop install avrdude

On macOS

On macOS, simply set up the homebrew-avr tap and run the following commands:

xcode-select --install # for the fist time
brew tap osx-cross/avr
brew install avr-binutils avr-gcc avrdude

On Linux

If you use a Linux distribution like Ubuntu, the command is:

sudo apt install avr-libc gcc-avr pkg-config avrdude libudev-dev build-essential

There is an installation guide for all operating systems here, should you come across an obstacle following the guide above.

After either of these steps, the next step is to install the ravedudetool for flashing the microcontroller board against cargo:

cargo +stable install ravedude

This tool handles everything from finding the board, flashing the board, and listening to connections. You simply have to run the cargo run command.

Starting a new Arduino project with avrdude

Starting a new project is made simpler with the cargo-generate crate. Simply run the following commands consecutively to create a new project:

cargo install cargo-generate
cargo generate --git <https://github.com/Rahix/avr-hal-template.git>

After running the command, you should see an input field to specify a name for your project. This article uses rust-x-arduino as the project name.

After inputting your preferred name, click Enter. The next log shows a list of microcontrollers available under the avrdude template. This article uses the Arduino UNO, a variant that is readily available to everyone.

Navigate into the project after the build, and open the folder as a project in your preferred code editor. The project structure should look like the image below:

Arduino project structure

NB: If there is an error in installing the libudev-sys crate, you will have to include it in your cargo.toml file under dependencies:

[dependencies]
libudev-sys = "0.1"

The libudev Rust binding is a crate that provides declarations and linkage for the libudev C library. It is Linux-specific, so it is not available for Windows or OSX operating systems.

Alternatively, you can run the command below to install the libudev-sys crate:

sudo apt-get install libudev-dev

You can consult the libudev-sys repository in case of further issues arising from pkg-config.

Moving on, you can build the project with the build command:

cargo build

It takes a while, since it is a CPU-intensive task. Afterward, you will find a .elf file under target/avr-atmega328p/debug/. To run your own program, you can edit the main.rs file, which already contains an example code for a basic LED Blinking program:

#![no_std]
#![no_main]

use panic_halt as _;

#[arduino_hal::entry]
fn main() -> ! {
    let dp = arduino_hal::Peripherals::take().unwrap();
    let pins = arduino_hal::pins!(dp);

    let mut led = pins.d13.into_output();

    loop {
        led.toggle();
        arduino_hal::delay_ms(1000);
    }
}

Understanding the above embedded Rust code

From the first two lines of code, it is clear that there is no standard library and no main, since it is an embedded project with no operating system.

The line #[arduino_hal::entry] specifies the entry point in the program. The line uses panic_halt as _; is used to handle panics.

In the main function, the Peripherals are unwrapped. In embedded Rust, Peripherals refer to the components that make sense of their surroundings and interact with humans. They include sensors, actuators, motor controllers, as well as the fundamental parts of the microcontroller like the CPU, RAM, or Flash Memory. You can learn more about Peripherals in the embedded Rust book.

Next, we gain access to the pins in the Arduino board in order to set the digital output for the default pin (D13) to high.

Every Arduino program contains the void setup() and the void loop(). We have just gone through the setup; the other part of the code shows the looping.

The toggle method in the loop is used to turn the LED on and off, while the delay_ms method is used to delay the loop by the specified milliseconds.

Configuring the microcontroller for flashing

When working with the Arduino microcontroller in the official Arduino IDE, you simply have to write the program in Arduino, which is C++-based, and upload the program source file to the board via the USB port.

With Rust, we will be following a longer but similar procedure. Start by listing the open USB ports in your machine with the Linux command:

lsusb

If you have your Arduino board plugged into your device via the USB, you should see the name of the USB connected to the Arduino board like in the image below:

Name of the USB connected to the Arduino board

Next, we will be setting the serial com port for ravedude with the script:

export RAVEDUDE_PORT=/dev/ttyUSB0

This tells ravedude which port the Arduino is connected to. Running the command below will build and flash the program into the Arduino:

cargo run

Output on the microcontroller

When the program is uploaded into the microcontroller, the Arduino will behave as programmed. In this case, the LED lights on the board will blink according to the time intervals specified in the program.

Rust Arduino uno final result

Other projects

It is worth mentioning that there is an examples directory on the avr-hal crate/repository, where you can find example Arduino project programs to try out. For example, if you are using the Arduino UNO, you can select it, navigate to the src/bin directory, and find different programs compatible with the Arduino UNO board.

If you wish to write your own project, you have to generate the AVR-HAL template like we did in the previous section.

Further support for embedded Rust development

The official documentation for embedded Rust development is available here, and the book is here. There is also a GitHub repository where all resources related to embedded Rust are stored; it can serve as a useful starting point for trying out new things. It is based off of the official Rust on Embedded Devices Working Group.

If you wish to go further into embedded development with Rust, you can check out an entire playlist by Vers Binarii here.

Original article source at https://blog.logrocket.com

#rust #iot #arduino

How to run Rust on Arduino, an AVR Microcontroller
Aisu  Joesph

Aisu Joesph

1668502143

8 Popular IoT Career Opportunities - Ultimate Guide

IoT or the Internet of Things is one of the hottest areas growing on the internet. Track your vitals while you are running using FitBit? Scanning QR codes from the phone to make payments from your bank account? You name it, and IoT is there for you.

What is IoT? Well, the IoT, in layman’s terms, is to connect things to the internet and be able to control or monitor activities in any scenario irrespective of your location. With 5G under development, the Internet Of Things jobs is foreseen to sell like hotcakes soon.

In this blog, we shall try to pen down some of the assorted career opportunities in this domain. For Full-fledged courses in IoT, check out Great Learning’s IoT Certificate Course. Power ahead in your career by learning cutting-edge technologies from IIT Madras and Great Learning with online classes and mentor training sessions.

IoT Career Opportunities

1. Data Analytics

In simple terms, it is one of the Internet of Things jobs that is aimed at making sense of whatever data you collect using your IoT devices which is otherwise just a heap of data. This role is essential in a firm as in this job; you should be very strong in statistical understanding, able to find correlations, tabulate your findings from data in a graphical and presentable manner and have knowledge of working with statistics-based languages like R, SAS as well as some Python libraries like NumPy, Pandas, etc. An individual having all these skills is considered an asset to a company.

2. Network and the Networking Structure

In the world of IoT, the hardware setup to deploy solutions can get complex, and the huge chunks of sensors and wires rigged up to different peripherals and ports contribute majorly to this complexity. In case even a single wire/connection fails due to some reason, the machine may not work as desired or not work at all. Hence, this calls for the need for a Network Architect. Professionals specializing in Network Setups and Networking would be required to ensure that all the connections work well. In short, employees in this field must be able to design an efficient network architecture that is foolproof of several wiring problems and follows all the communication protocols effectively. 

3. Security

One of the core problems of the Internet is safeguarding the users from hackers and malicious programs. Therefore one of the Internet of Things Jobs is dedicated to securing your devices. If this part of your IoT solution is compromised and a hacker gains control of one device, then eventually, the network does not stand invulnerable anymore, and all your data is put at risk. The professionals in this field are responsible for doing regular testing and challenging the system’s integrity with different techniques, find and fix security flaws wherever the system fails and put the whole process of using an IoT Device under a smooth and secured connection bubble. To work in this field, you must know Vulnerability Evaluation, Public Key Encryption, and know techniques to secure wireless networks. Cyber Security understanding is a good way to start towards this. 

Iot jobs

4. Hardware and Devices

What makes a device ‘Smart’? Is it just by connecting any device to a network? Well, it is more than that. Organizations need to modify their devices to be able to fit the networks and work accordingly. Though it’s mostly an integration of several sensors and transmitters, it is one of the core jobs in the IoT industry. To deem fit for this IoT job, professionals must have the know-how of working with different sensor modules, transmitters, protocols, and integrators like Zigbee, BLE, etc.; and keep themselves updated with working towards any new device/technology that enters the mainstream.

5. User Interface

This IoT job seems easy to design compared to the jobs mentioned above but requires a whole amount of creativity as it is the UI that would sell your product in the market. A normal customer may not understand all the specifications of the device but would leverage his choices based on how comfortable it is to use it. An interactive and eye-catching UI that provides all the controls to customers and understanding is one of the selling points of your IoT product. There was a time when the computers only worked on a black screen with the users using only the Command Terminal and are managed only by some professionals but, with the onset of making all these devices available to the people, it has become our daily essential, and their presentability has changed more to User-friendly mode. If you choose to be a UI developer, your task would be to ensure that users get the best experience (or UX) with your creativity and designing skills. You should be able to put yourself in the shoes of your customers, understand and fulfill their requirements.

6. Sensors And Actuator Professional

Diving deep into the field of hardware and devices, this job will need you to be well versed with the knowledge of setting up the right type of sensors or actuators that serves well for the application and meets the design specifications and power requirements of your system. Your role would also be to test different tools and continuously pick the most optimum solution for any application. You would also be responsible for researching and staying updated with the industry and researching several technologies. As a hobbyist, one could start by buying a set of sensors and trying to do small projects before upskilling to a professional level. 

7. Embedded Programs Engineer

Another Internet of Things job dedicated to hardware is the most crucial part of your IoT device since it handles the software and control code. As an embedded programs engineer, your task would be to design several PCBs that match the utility of the problem under consideration and access the firmware of the device to program certain predefined and non-negotiable functions to access the networking of your device across. Integrating software engineering with non-computer devices and working closely with the hardware is the key role of Embedded Programs engineer. 

8. Artificial Intelligence

AI and Machine Learning Skills become essential when the task involves big data analysis and deriving findings. To create smart applications over huge volumes of data, technologies mentioned in AI and ML help in the long run. Job seekers need to understand algorithms designed in AI, ML, and different have a strong understanding of plotting libraries to represent data efficiently. 

Also Read: Artificial Intelligence Tutorial for Beginners

To sum up, an IoT developer would work on

  1. To research, build, test, and document state-of-the-art IoT solutions with integrated electronics and firmware development.
  2. To develop innovative IoT mechanisms that help to monitor, execute, and perform self-diagnostic processes.
  3. You should be well-versed in embedded software architecture – prior experience in working with UML use-case diagrams, class-diagrams, and sequence diagrams to accurately depict system architecture is highly valued.
  4. To develop MEAN stack solutions.
  5. To learn the functionings of and implement new state-of-the-art tools/techniques to showcase experience in quick prototyping methods and structured implementation.
  6. To design and work on different solutions for cloud-to-edge IoT applications with customizable configuration abilities for deployment to different clients with different needs.
  7. To work on tackling complex real-world problems.
  8. To plan and work on tools to optimize the process.

Also Read: A Guide to building cloud-based IoT solutions in AWS

Notable Skills required to become an IoT Developer

  1. Consider practicing coding with multiple programming languages like embedded-C/C++ and Python. In several cases, people lack DSA skills and therefore can opt for courses like the one offered for free by Great Learning in DSA, GeeksForGeeks’ DSA Self-learning courses, and much more.
  2. Understanding the Linux-OS and its several processes of file handling/ management and process control can help a lot.
  3. You should possess in-depth technical knowledge in working with 32-bit ARM cortex M3/M4 controllers.
  4. You should have prior experience in working with wireless stacks like Zigbee or Thread or BLE-Mesh and expert knowledge in writing business logic on embedded environments using test-driven methodology on RTOS and non-RTOS platforms.
  5. You should be proficient in communication protocols including I2C, SPI, 1-wire, UART, MODBUS, DALI and have excellent communication, problem-solving, and analytical thinking abilities. 

Salary trends in IoT

The IoT India Salary Study maintains that the salary of IoT professionals in India is nearly 76% higher than that of IT professionals. While IoT professionals get a median salary of ₹15.2 LPA, the median salary of IT professionals is around ₹8.65 LPA. For Entry Level- salaries start from: ₹3.5 – ₹6 LPA while the mid-level professionals can make around ₹10-25 LPA. 

Check out Great Learning’s Internet of Things Course and enhance your knowledge about the same.


Original article source at: https://www.mygreatlearning.com

#iot 

8 Popular IoT Career Opportunities - Ultimate Guide
Hermann  Frami

Hermann Frami

1668080100

Flogo: Project Flogo is an Open Source Ecosystem for Event-driven Apps

Project Flogo

Project Flogo is an Open Source ecosystem for event-driven apps

Project Flogo is an ultra-light, Go-based open source ecosystem for building event-driven apps. Event-driven, you say? Yup, the notion of triggers and actions are leveraged to process incoming events. An action, a common interface, exposes key capabilities such as application integration, stream processing, etc. 
 


 

  • App = Trigger(s) + Actions[&Activities]
  • Triggers
    • receive data from external sources.
    • are managed by a configurable threading model
    • have a common interface enabling anyone to build a Flogo trigger.
  • Handlers
    • dispatch events to actions
  • Actions
    • process events in a manner suitable with the implementation
    • have a common interface enabling opinionated event processing capabilities

Project Flogo Ecosystem

All capabilities within the Flogo Ecosystem have a few things in common, they all process events (in a manner suitable for the specific purpose) and they all implement the action interface exposed by Flogo Core.

Some of the key highlights include:

🎈 Ultra-light 20x-50x lighter than Java or Node.js 
⚡️ Event-driven Powerful event-driven programming model based on triggers and actions
⚙️ Common core a single, common core enables reuse and flexibility across all eventing constructs
✏️ Golang based Written entirely in Golang for efficiency
💪 Deployment flexibility Deploy as ultra-lightweight serverless functions, containers or static binaries on IoT edge devices
🧠 Native machine learning Purpose built activity for TensorFlow SavedModel inferencing
😍 100% Open Source for your dev & hacking pleasure
 

  • Integration Flows Application Integration process engine with conditional branching and a visual development environment
     
  • Stream Processing a simple pipeline-based stream processing action with event joining capabilities across multiple triggers & aggregation over time windows
     
  • Contextual Decisioning Declarative Rules for Real-time Contextual Decisions
     
  • Microgateway Microgateway pattern for conditional, content-based routing, JWT validation, rate limiting, circuit breaking and other common patterns
     

The concept is simple, an event is just that, an event, how it’s processed is what differs. Flogo Core eases the burden by enabling a common set of functionality, such as:

  • threading
  • logging
  • data type coercion
  • data mapping
  • tracing & monitoring hooks

While also exposing a common set of contributions via activities and triggers. For example, all available triggers can be leveraged to dispatch events to any action implementation, that is, flows for application integration, streams for stream processing, rules for contextual rule processing, etc.

Flogo Repos

Project Flogo consists of the following sub-projects available as separate repos under a seperated GitHub Org:

Flogo Core

Flogo Core is an event-driven app framework used to develop apps for the cloud & IoT edge. It can also be thought of as a lightweight app kernel used by open source & commercial solutions.

Flogo Core provides the following key benefits:

Action chaining enables communication between one or more capabilities in a single, sub 10MB binary!
🏗 Common contribution model build activities and triggers that can be leveraged by all capabilities
🔨 Extensible easily extend the capabilities available by building your own action using the common interfaces
 

Flogo Core Contribution Model

Flogo Core exposes three principal contribution interfaces that enable developers to build common capabilities and functionality. These contribution interfaces include:

  • Trigger Interface a common interface for building event-consumers that dispatch events to one or more actions. The Kafka subscriber is an example of a trigger.
  • Activity Interface a common interface for exposing common application logic in a reusable manner. Think of this as a function, such as write to database, publish to Kafka, etc that can be used by all Flogo apps.
  • Action Interface a common interface for processing events. Actions contain the specific capability logic, such as integration, stream processing, rule processing, etc. Actions have a great deal of flexibility in how they’re developed and how developers leverage actions within their overall applications. For example, flows and streams expose JSON-based DSLs & Go APIs for maximum developer flexibility.

Flogo Flows

Flogo Flows provides application integration capabilities and includes the following key highlights.

🌈 Painless development Visual modeler with step-back debugging capabilities & elegant DSL
⚙️ Ultra-light process engine for conditional flow control

Getting Started

We've made getting started with Flogo Flows as easy as possible. The current set of tooling is designed for:

  • Serverless function developers
  • Cloud-native microservices developers
  • IoT Solutions developers
  • Go Developers

Zero-code Developers

If your background is in or you prefer to develop your apps using zero-coding environments, then read on, because we’ve got something special for you.

Flows Web UI is available via Docker Hub or Flogo.io. The Docker image contains the Flows Web UI along with all required components to begin developing, testing and building deployable artifacts right from your web browser.

To report any issues with the Issue tracker on this project.

Flogo Web In Action

Flogo Streams

Edge devices have the potential for producing millions or even billions of events at rapid intervals, often times the events on their own are meaningless, hence the need to provide basic streaming operations against the slew of events.

A native streaming action as part of the Project Flogo Ecosystem accomplishes the following primary objectives:

  • Enables apps to implement basic streaming constructs in a simple pipeline fashion
  • Provides non-persistent state for streaming operations
    • Streams are persisted in memory until the end of the pipeline
  • Serves as a pre-process pipeline for raw data to perform basic mathematical and logical operations. Ideal for feeding ML models

Some of the key highlights include:

😀 Simple pipeline construct enables a clean, easy way of dealing with streams of data
Stream aggregation across streams using time or event tumbling & sliding windows
🙌 Join streams from multiple event sources
🌪 Filter out the noise with stream filtering capabilities
 

Getting Started

We’ve made building powerful streaming pipelines as easy as possible. Develop your pipelines using:

  • A simple, clean JSON-based DSL
  • Golang API

See the sample below of an aggregation pipeline (for brevity, the triggers and metadata of the resource has been omitted). Also don’t forget to check out the examples in the project-flogo/stream repo.

  "stages": [
    {
      "ref": "github.com/project-flogo/stream/activity/aggregate",
      "settings": {
        "function": "sum",
        "windowType": "timeTumbling",
        "windowSize": "5000"
      },
      "input": {
        "value": "=$.input"
      }
    },
    {
      "ref": "github.com/project-flogo/contrib/activity/log",
      "input": {
        "message": "=$.result"
      }
    }
  ]

Flogo Rules

Processing Events in real-time to determine next best action is an important function of Event driven applications. With the vast amount of events that are generated from different sources, making sense of the information in a given context can be immensely valuable.

Flogo Rules simplifies the complexity involved with real-time contextual decisions.

Flogo Rules supports

  • Declarative Rules to define conditional logic and trigger result rules
  • Joins/Correlations across multiple Event sources
  • Ability to define Rule Priorities
  • Timer Events; Configurable TTL (time to live) -1 - no expiry, 0 - event expiry set to end of run to completion cycle.
  • Forward chaining for Inferencing

The CLI

The CLI is used to build all applications that leverage the JSON-based DSL. If you’re using the Go API to build your apps, feel free to just go build your stuff without the flogo CLI.

Getting started with the CLI couldn't be any easier (refer to Flogo CLI repo for detail instructions and dependencies):

Install the CLI

go install github.com/project-flogo/cli/...@latest

Create & build your app

  • flogo-cli.gif

flogo the core CLI for creating and building your applications

flogogen a scaffolding tool to begin building your Flogo contributions (activities, triggers & actions)

If you're interested in building your own contribution(s), refer to the Flogo Documentation or join us on the project-flogo/Lobby Gitter Channel.

Golang API

Are you the kind of person who would rather code, but would love to leverage the capabilities of the Flogo Ecosystem? Makes total sense, we just ❤️ to code also! We’ve exposed a number of Go APIs for leveraging the various action types, activities and triggers. Getting started is pretty easy, just follow the steps below.

Create your new project dir and init your module

mkdir test
cd test
go mod init example.com/m

Go get the latest flogo core

go get github.com/project-flogo/core

Optionally, if you're using any of the Flogo contributions, don't forget to get that repo, as well

go get github.com/project-flogo/contrib

Open up your favorite IDE or txt editor and start coding!

package main

import (
    "context"
    "fmt"

    "github.com/project-flogo/contrib/activity/log"
    "github.com/project-flogo/contrib/trigger/rest"
    "github.com/project-flogo/core/activity"
    "github.com/project-flogo/core/api"
    "github.com/project-flogo/core/data/coerce"
    "github.com/project-flogo/core/engine"
)

func main() {

    app := myApp()

    e, err := api.NewEngine(app)

    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    engine.RunEngine(e)
}

func myApp() *api.App {
    app := api.NewApp()

    trg := app.NewTrigger(&rest.Trigger{}, &rest.Settings{Port: 8080})
    h, _ := trg.NewHandler(&rest.HandlerSettings{Method: "GET", Path: "/blah/:num"})
    h.NewAction(RunActivities)

    //store in map to avoid activity instance recreation
    logAct, _ := api.NewActivity(&log.Activity{})
    activities = map[string]activity.Activity{"log": logAct}

    return app
}

var activities map[string]activity.Activity

func RunActivities(ctx context.Context, inputs map[string]interface{}) (map[string]interface{}, error) {

    trgOut := &rest.Output{}
    trgOut.FromMap(inputs)

    msg, _ := coerce.ToString(trgOut.PathParams)
    _, err := api.EvalActivity(activities["log"], &log.Input{Message: msg})
    if err != nil {
        return nil, err
    }

    response := make(map[string]interface{})

    response["id"] = "123"
    response["amount"] = "1"
    response["balance"] = "500"
    response["currency"] = "USD"

    reply := &rest.Reply{Code: 200, Data: response}
    return reply.ToMap(), nil
}

Don't forget to tidy your dependencies

go mod tidy

Before we can build the app, let's generate the metadata for the triggers

go generate

Build the app

go build

When to use Flogo

You’ll look to leverage Flogo if you’re a dev & sick of building all the messy stuff that comes along with coding production apps. Such as connectivity to event-driven messaging platforms, datastores, SaaS apps, etc & want to deploy to a wide range of targets, such as

  • serverless compute
  • IoT edge devices
  • containers

The broader Flogo ecosystem exposes an opinionated perspective on building event-driven apps. If you’re looking to process events in any of the following ways, then read on because the Project Flogo Ecosystem is for you!

  • long running processes with flow-control support geared toward application integration
  • consuming and manipulating large streams of events via a pipeline to act as a pre-processor for time-series data to serve things like machine learning models or to derive simple conclustions via data aggregation
  • contextual, declarative rules for real-time decisioning

In short...

Flogo is...Flogo is not...
an ecosystem of opinionated, event-driven capabilitiesa front-end web app or analytics framework
a Go lib to increase dev productivityan IoT platform

Contributing

Want to contribute to Project Flogo? We've made it easy, all you need to do is fork the repository you intend to contribute to, make your changes and create a Pull Request! Once the pull request has been created, you'll be prompted to sign the CLA (Contributor License Agreement) online.

Not sure where to start? No problem, here are a few suggestions:

  • flogo-contrib: This repository contains all of the standard contributions, such as activities, triggers, etc. Perhaps there is something missing? Create a new activity or trigger or fix a bug in an existing activity or trigger. Don't forget to check all of the other repositores in the project-flogo org on GitHub, as some contributions are large enough to have their own repo.
  • Browse all of the [Project Flogo repositories] and look for issues tagged kind/help-wanted or good first issue

If you have any questions, feel free to post an issue and tag it as a question, email flogo-oss@tibco.com or chat with the team and community:

  • The project-flogo/Lobby Gitter channel should be used for general discussions, start here for all things Flogo!
  • The project-flogo/developers Gitter channel should be used for developer/contributor focused conversations.

For additional details, refer to the Contribution Guidelines.

Usage Guidelines

We’re excited that you’re using Project Flogo to power your project(s). Please adhere to the usage guidelines when referencing the use of Project Flogo within your project(s) and don't forget to let others know you're using Project Flogo by proudly displaying one of the following badges or the Flynn logo, found in the branding folder of this project.

Download Details:

Author: TIBCOSoftware
Source Code: https://github.com/TIBCOSoftware/flogo 
License: BSD-3-Clause license

#serverless #go #golang #iot #lambda #streaming 

Flogo: Project Flogo is an Open Source Ecosystem for Event-driven Apps
Hermann  Frami

Hermann Frami

1667724360

The Fastest WebAssembly interpreter, and The Most Universal Runtime

Wasm3

The fastest WebAssembly interpreter, and the most universal runtime.
Based on CoreMark 1.0 and independent benchmarks. Your mileage may vary.

Getting Started

Here's a small getting started guide. Click here to start:

LIVE DEMO

Installation

Please follow the installation instructions.

Wasm3 can also be used as a library for:

Python3 Rust C/C++ GoLang Zig Perl
Swift .Net Arduino, PlatformIO, ParticleQuickJS

Status

wasm3 passes the WebAssembly spec testsuite and is able to run many WASI apps.

Minimum useful system requirements: ~64Kb for code and ~10Kb RAM

wasm3 runs on a wide range of architectures (x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa, ARC32, ...) and platforms:

  • Linux, Windows, OS X, FreeBSD, Android, iOS
  • OpenWrt, Yocto, Buildroot (routers, modems, etc.)
  • Raspberry Pi, Orange Pi and other SBCs
  • MCUs: Arduino, ESP8266, ESP32, Particle, ... see full list
  • Browsers. Yes, using WebAssembly itself!
  • wasm3 can execute wasm3 (self-hosting)

Features

Webassembly [Core Proposals][WasmProps]Extra
☑ Import/Export of Mutable Globals☑ Structured execution tracing
☑ Non-trapping float-to-int conversions☑ Big-Endian systems support
☑ Sign-extension operators☑ Wasm and WASI self-hosting
☑ Multi-value☑ Gas metering
☑ Bulk memory operations (partial support)☑ Linear memory limit (< 64KiB)
☐ Multiple memories 
☐ Reference types 
☐ Tail call optimization 
☐ Fixed-width SIMD 
☐ Exception handling 

Motivation

Why use a "slow interpreter" versus a "fast JIT"?

In many situations, speed is not the main concern. Runtime executable size, memory usage, startup latency can be improved with the interpreter approach. Portability and security are much easier to achieve and maintain. Additionally, development impedance is much lower. A simple library like Wasm3 is easy to compile and integrate into an existing project. (Wasm3 builds in a just few seconds). Finally, on some platforms (i.e. iOS and WebAssembly itself) you can't generate executable code pages in runtime, so JIT is unavailable.

Why would you want to run WASM on embedded devices?

Wasm3 started as a research project and remains so by many means. Evaluating the engine in different environments is part of the research. Given that we have Lua, JS, Python, Lisp, ... running on MCUs, WebAssembly is actually a promising alternative. It provides toolchain decoupling as well as a completely sandboxed, well-defined, predictable environment. Among practical use cases we can list edge computing, scripting, plugin systems, running IoT rules, smart contracts, etc.

Further Resources

Demos
Installation instructions
Cookbook
Troubleshooting
Build and Development instructions
Supported Hardware
Testing & Fuzzing
Performance
Interpreter Architecture
Logging
Awesome WebAssembly Tools

Download Details:

Author: wasm3
Source Code: https://github.com/wasm3/wasm3 
License: MIT license

#serverless #iot #devops #embedded #wasm 

The Fastest WebAssembly interpreter, and The Most Universal Runtime