1675312560
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.
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
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.
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.
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.
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
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.
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.
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.
The highlighted below are the various types of IoT Testing:
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 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.
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 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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
They provide automated functional mobile testing that replicates end-user experience and confirms that the application works and is enhanced.
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.
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.
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.
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.
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/
1672388924
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
1671811200
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.
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.
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.
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.
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-
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:
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.
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.
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!
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.
Its apps can be used to track the position of the vehicle. Connected cars maintain internet connections and its devices within or around them.
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.
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.
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.
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.
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.
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.
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.
Its deployments in other industries face many of the same difficulties that automotive internet of things does, including:
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/
1671694020
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.
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:
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.
The five essential steps to becoming an IoT Architect are as follows.
An IoT solutions architect should possess the following skills.
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.
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.
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.
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.
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.
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.
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
1671577260
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 .jmx
format) 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:
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.
The following configuration items control whether a test continues when an error is encountered:
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.
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.
Sets the number of loops per thread in the thread group before ending.
By default, all threads are created when the test starts. If this option is checked, threads are created when they are needed.
Control the execution time of thread groups. You can set the duration and startup delay (in seconds).
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.
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:
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
.
The HTTP Sampler sends HTTP and HTTPS requests to the web server.
Here are the settings available:
Connection: keep-alive
is added to the request header when JMeter communicates with the target server.multipart/form-data or application/x-www-form-urlencoded
.application/json
in the request header.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.
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).
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 3
under the Once Only Controller is only executed once, and other requests are executed twice.
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.
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 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.
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:
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}
.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.
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].name
value 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:
Go back to JSON Assertion and check the Invert assertion.
Run the script, check the results, and you can see that the assertion failed:
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.
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:
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).
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.
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
1671241500
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.
IoT implementations have unquestioned benefits for both doctors and the patients they treat. Among the most common benefits:
IoMT use cases are popping up all over the healthcare landscape. Among the most popular and impactful examples of IoT in healthcare:
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.
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.
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.
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.
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
1671082980
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.
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).
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.
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 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
1671053040
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.
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.
This is an electronic data encryption specification that has been the standard for IoT device transport layer security since 2001.
A method of expediting communication between computers and hardware/software platforms.
This permits small network transmitters to interact with systems utilizing low-power Bluetooth. Apple’s version is called iBeacon.
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.
A wireless, personal-area network characterized by lower power usage and a limited range for data transmission. It’s also called Bluetooth 4.0.
Remote servers connected via a network and used for data storage, processing, and management, instead of relying on a local, in-house physical server.
The computer software that controls hardware devices and systems that are not usually considered computers, like a smart refrigerator, for instance.
Also known as FOTA, this technology allows the remote wireless installation, repair, and upgrading of software and services on mobile devices.
This is any device that gathers information from various network points and sends that information on to another network.
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.
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.
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.
A network offering a low range and low power consumption, used primarily for M2M communications.
A collection of scattered, independent devices that measure environmental or physical conditions, all without significant power consumption.
A long-range digital wireless communication technique to facilitate IoT and M2M communications.
A more power-efficient standard for machine communications.
Also known as M2M for short, it’s the process of machines or other connected devices communicating with each other without human intervention.
A data link layer (DLL) sublayer transmits data packets to and from a network interface card.
A network system where devices transmit their data while also serving as relays to other nodes.
Low power, wide area devices used in conjunction with mobile devices interfacing with IoT networks.
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.
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.
A measurement of how well a network supports IT connectivity. This covers elements such as transmission delays, availability of connections, and data loss.
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.
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.
A device used to extend network range by receiving a digital signal and re-transmitting it.
A device or group of devices that monitor and collect environmental data from a variety of locations in network range.
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.
A network method that reassigns information flow control from hardware in favor of a software controller.
A computer system designed for long-distance data transmissions, the most ubiquitous example being GPS and satellite radio tech installed in automobiles.
Better known as TCP/IP, this is the basic protocol suite for all Internet and private network communications and connections.
The UWB is a weak signal sent over a wide frequency and is employed mostly as a localizing signal and distance measurement.
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).
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 -
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
1671045360
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.
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:
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.
The five essential steps to becoming an IoT Architect are as follows.
An IoT solutions architect should possess the following skills.
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.
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.
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.
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.
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.
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.
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
1670737740
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.
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.
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:
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:
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 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.
2. Add the HTTP page under test: Right-click on the Thread Group > Add > Sampler > HTTP Request
In the sample test script, use the default HTTP request settings to initiate an HTTP request to a website.
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.
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
1670579700
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
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.
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 -
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 -
Some of the data pipeline applications are as follows -
There are several challenges which are faced by the IoT industries when it comes to data processing some of the are as follows -
Several solutions behind streaming processing using Apache Flink in IoT are as follows -
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 -
Several solutions behind streaming processing using Nats IO in Iot are as follows -
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 -
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/
1669019005
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:
Table Contents:
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:
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.
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:
This article focuses on the third through fifth steps, but the wiring for the tutorial will be made available.
To follow this article, you will need some software installed along with some hardware.
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, 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:
Afterwards, run the following commands to install avr-gcc
and avrdude
:
scoop install avr-gccscoop install avrdude
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
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.
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:
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);
}
}
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.
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:
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
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.
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.
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
1668502143
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.
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.
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.
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.
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.
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.
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.
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.
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
Also Read: A Guide to building cloud-based IoT solutions in AWS
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
1668080100
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.
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
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:
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 exposes three principal contribution interfaces that enable developers to build common capabilities and functionality. These contribution interfaces include:
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
We've made getting started with Flogo Flows as easy as possible. The current set of tooling is designed for:
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 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:
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
We’ve made building powerful streaming pipelines as easy as possible. Develop your pipelines using:
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
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 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
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!
In short...
Flogo is... | Flogo is not... |
---|---|
an ecosystem of opinionated, event-driven capabilities | a front-end web app or analytics framework |
a Go lib to increase dev productivity | an 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:
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:
For additional details, refer to the Contribution 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.
Author: TIBCOSoftware
Source Code: https://github.com/TIBCOSoftware/flogo
License: BSD-3-Clause license
1667724360
The fastest WebAssembly interpreter, and the most universal runtime.
Based on CoreMark 1.0 and independent benchmarks. Your mileage may vary.
Here's a small getting started guide. Click here to start:
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, Particle │ QuickJS
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:
wasm3
can execute wasm3
(self-hosting)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 |
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.
Demos
Installation instructions
Cookbook
Troubleshooting
Build and Development instructions
Supported Hardware
Testing & Fuzzing
Performance
Interpreter Architecture
Logging
Awesome WebAssembly Tools
Author: wasm3
Source Code: https://github.com/wasm3/wasm3
License: MIT license