Visual device for indicating value of environmental parameter via remote platform

Traditionally, to obtain surf conditions, a person must visit a website, which can be time-consuming, inconvenient, and unartful, and may lead to distraction. Embodiments of a visual device are disclosed that indicates the value of an environmental parameter, representing a surf condition or other environmental condition, using light, according to a color scale that is mapped to enumeration values of the environmental parameter. The visual device may be functional art, capable of being hung on a wall like a painting, such that it can automatically, seamlessly, and artistically inform the user of the environmental condition. The visual device may comprise a controller that acquires the value of the environmental parameter, in the background, via a connection to a platform, and a local access point for easy configuration of the connection. The platform may enable configuration of the environmental parameter, collect environmental data, and calculate values of the environmental parameter.

BACKGROUND

Field of the Invention

The embodiments described herein are generally directed to a visual device, and, more particularly, to a visual device for indicating the value of an environmental parameter, such as a surf condition.

Description of the Related Art

Traditionally, to obtain surf conditions, a person must visit a website using a browser executing on a user system, such as a desktop computer, laptop or tablet computer, mobile device, or the like. This can be time-consuming, inconvenient, and unartful, and may lead to the user becoming distracted by other websites or functions of the user system.

SUMMARY

Accordingly, a visual device is disclosed that indicates the value of an environmental parameter, such as surf conditions.

In an embodiment, a visual device comprises: a visual display comprising at least one illumination element configured to emit light in each of a plurality of colors; and a controller electrically connected to the visual display, wherein the controller is configured to periodically execute an operation that comprises receiving a value of an environmental parameter from a remote platform over at least one network, and controlling the at least one illumination element to emit light in one of the plurality of colors that is associated with the value of the environmental parameter.

The operation may further comprise sending a request to the remote platform over the at least one network, wherein the value of the environmental parameter is received in response to the request. The value of the environmental parameter may be one of a finite plurality of enumeration values, wherein each of the finite plurality of enumeration values is associated with a different one of the plurality of colors than the other ones of the finite plurality of enumeration values. The environmental parameter may represent a weather condition in a beach environment. The weather condition may be a surf condition. Periodically executing the operation may comprise executing the operation after each of a plurality of time intervals. The controller may comprise a wireless communication interface that is configured to connect to the at least one network via a wireless connection.

The controller may comprise a local access point, wherein the controller is further configured to execute a software server that provides a service at a fixed address accessible via the local access point, wherein the software server is configured to: generate a graphical user interface with one or more inputs for inputting a connection configuration; receive the connection configuration via the graphical user interface; and establish a connection with the remote platform, through the at least one network, based on the connection configuration. The connection configuration may comprise access information for the at least one network. The connection configuration may comprise a user identifier and credentials for a user account on the remote platform. The local access point may be configured to: connect directly to a user system via a wireless connection; and provide the graphical user interface to the user system via the wireless connection.

The visual device may further comprise a substrate, wherein the at least one illumination element is attached to and protrudes outwards from a surface of the substrate. The at least one illumination element may be formed in a shape that represents a sport. The sport may be board surfing, kite surfing, sailing, parasailing, snowboarding, skiing, or hang-gliding. The at least one illumination element may be formed in a shape of a string of characters that spell a word. The word may be a name of a sport.

In an embodiment, a system comprises: one or more of the visual device; and the remote platform, wherein the remote platform is configured to, for each of the one or more visual devices, acquire a device configuration associated with the visual device, wherein the device configuration defines an environment and the environmental parameter, acquire environmental data from at least one data source, calculate the value of the environmental parameter based on the device configuration and the environmental data, and send the value of the environmental parameter to the controller of the visual device. The remote platform may be further configured to, for each of the one or more visual devices: receive a registration request from the visual device, wherein the registration request comprises a device identifier of the visual device; associate the device identifier with a user identifier of a user account within a server database of the remote platform; and associate the device identifier with a device configuration within the server database, to thereby associate the visual device with the device configuration. Calculating the value of the environmental parameter based on the device configuration and the environmental data may comprise: extracting values of a plurality of features from the environmental data, based on the device configuration; and inputting the values of the plurality of features to a machine-learning model, which is trained to output the value of the environmental parameter based on the values of the plurality of features, to thereby produce the value of the environmental parameter.

In an embodiment, a visual device comprises: a substrate; a visual display comprising at least one illumination element configured to emit light in each of a plurality of colors, wherein the at least one illumination element is attached to and protrudes outwards from a surface of the substrate, and wherein the at least one illumination element is formed in a shape that represents a sport; a memory storing a value-to-color mapping that maps each of the plurality of colors to one of a finite plurality of enumeration values of an environmental parameter, and a controller electrically connected to the visual display, wherein the controller is configured to periodically execute an operation that comprises receiving a value of the environmental parameter from a remote platform over at least one network, and controlling the at least one illumination element to emit light in one of the plurality of colors that is mapped, in the value-to-color mapping, to one of the finite plurality of enumeration values that equals the value of the environmental parameter.

It should be understood that any of the features above may be implemented individually or with any subset of the other features in any combination. Thus, to the extent that the appended claims would suggest particular dependencies between features, disclosed embodiments are not limited to these particular dependencies. Rather, any of the features described herein may be combined with any other feature described herein, or implemented without any one or more other features described herein, in any combination of features whatsoever.

DETAILED DESCRIPTION

Embodiments of a visual device that indicates the value of an environmental parameter, representing a surf condition or other environmental condition, are disclosed. The visual device may be functional art, capable of being hung on a wall like a painting, such that it can automatically, seamlessly, and artistically inform the user of an environmental condition. This obviates any need by the user to visit a website or otherwise interact with a computing device to ascertain the environmental condition.

1. Example Infrastructure

FIG.1illustrates an example infrastructure in which one or more of the disclosed processes may be implemented, according to an embodiment. The infrastructure may comprise a platform110(e.g., one or more servers) which hosts and/or executes one or more of the various processes, methods, functions, and/or software modules described herein. Platform110may comprise dedicated servers, or may instead be implemented in a computing cloud, in which the resources of one or more servers are dynamically and elastically allocated to multiple tenants based on demand. In either case, the servers may be collocated and/or geographically distributed. Platform110may execute a server application112and/or host a server database114.

Platform110may comprise, be communicatively coupled with, or otherwise have access to server database114. For example, platform110may comprise one or more database servers which manage server database114. Server application112may submit data (e.g., user data, form data, etc.) to be stored in server database114, and/or request access to data stored in server database114. Any suitable database may be utilized, including without limitation MySQL™, Oracle™, IBM™, Microsoft SQL™, Access™, PostgreSQL™, MongoDB™, and the like, including cloud-based databases and proprietary databases.

Platform110may be communicatively connected to one or more user systems130, data sources140, and/or visual devices150, via one or more networks120. While only a few user systems130, data sources140, and visual devices150are illustrated, it should be understood that the infrastructure may comprise any number of user systems130, data sources140, and visual devices150. These systems may communicate with platform110using one or more application programming interfaces (APIs). For example, server application112may provide an application programming interface that includes one or more methods by which another system may acquire data from server application112, provide data to server application112, access functionality of server application112, and/or the like. Similarly, one of the other systems may provide an application programming interface that includes one or more methods by which server application112may acquire data from the other system, provide data to the other system, access functionality of the other system, and/or the like.

Network(s)120may comprise the Internet, and platform110may communicate with other systems, including user system(s)130, data source(s)140, and/or visual device(s)150, through the Internet using standard transmission protocols, such as HyperText Transfer Protocol (HTTP), HTTP Secure (HTTPS), File Transfer Protocol (FTP), FTP Secure (FTPS), Secure Shell FTP (SFTP), and the like, as well as proprietary protocols. While platform110is illustrated as being connected to various systems through a single set of network(s)120, it should be understood that platform110may be connected to the various systems via different sets of one or more networks. For example, platform110may be connected to a subset of systems via the Internet, but may be connected to one or more other systems via an intranet.

User system(s)130may comprise any type or types of computing devices capable of wired and/or wireless communication, including without limitation, desktop computers, laptop computers, tablet computers, smartphones or other mobile devices, servers, game consoles, televisions, set-top boxes, electronic kiosks, point-of-sale terminals, and/or the like. However, it is generally contemplated that a user system130would be a personal computing device, such as a desktop computer, laptop computer, tablet computer, or smartphone or other mobile device, that can be used to establish and manage a user account with server application112, as well as configure a visual device150. Each user system130may execute a client application132and/or host a local database134.

Data source(s)140may also comprise any type or types of computing devices capable of wired and/or wireless communication. However, it is generally contemplated that a data source140would be a third-party server that publishes environmental data. For example, data source140may provide an application programming interface (API) that enables server application112of platform110to acquire or subscribe to the environmental data. While the environmental data may comprise any data related to any environment, in a preferred embodiment, the environmental data comprises weather data related to surf conditions in one or more beach environments. Weather data may include one or more surf-related parameters, such as wave height, wave direction, wave period, swell height, swell direction, swell period, secondary swell, wind wave height, wind wave direction, wind wave period, water temperature, ice coverage, wind speed, wind direction, air temperature, an indication of low tide or high tide, tide direction, time of sunrise, time of sunset, and/or the like. Examples of a data source140, include any data source that provides composite or individual global weather data from one or a plurality of weather institutes, including the National Oceanic and Atmospheric Administration (NOAA), Deutscher Wetterdienst (i.e., the national meteorological service of Germany), Météo-France (i.e., the national meteorological service of France), the MetOffice (i.e., the national meteorological service of the United Kingdom), the Danish Defence Centre for Operational Oceanography (FCOO), and/or the Icosahedral Nonhydrostatic Model (ICON). Data source(s)140are illustrated as remote systems that are separated from platform110by network(s)120. However, in an alternative embodiment, one or more data sources140may be comprised in or hosted by platform110. For example, server database114or a subsystem of platform110could be a data source140.

Visual device(s)150may also comprise any type or types of computing devices capable of wired and/or wireless communication. However, as will be discussed elsewhere herein, it is generally contemplated that each visual device150will be a specialized device that retrieves the value of an environmental parameter from server application112, and indicates the value of that environmental parameter using a visual display. In an embodiment, the visual display artistically represents the value of the environmental parameter using light, according to a color scale that is mapped to the value of the environmental parameter. Each visual device150may execute a software application152and/or host a local database154.

Platform110may comprise web servers which host one or more websites and/or web services. In embodiments in which a website is provided, the website may comprise a graphical user interface, including, for example, one or more screens (e.g., webpages) generated in HyperText Markup Language (HTML) or other language. Platform110transmits or serves one or more screens of the graphical user interface in response to requests from user system(s)130. In some embodiments, these screens may be served in the form of a wizard, in which case two or more screens may be served in a sequential manner, and one or more of the sequential screens may depend on an interaction of the user or user system130with one or more preceding screens. The requests to platform110and the responses from platform110, including the screens of the graphical user interface, may both be communicated through network(s)120, which may include the Internet, using standard communication protocols (e.g., HTTP, HTTPS, etc.). These screens (e.g., webpages) may comprise a combination of content and elements, such as text, images, videos, animations, references (e.g., hyperlinks), frames, inputs (e.g., textboxes, text areas, checkboxes, radio buttons, drop-down menus, buttons, forms, etc.), scripts (e.g., JavaScript), and the like, including elements comprising or derived from data stored in server database114.

In embodiments in which a web service is provided, platform110may receive requests from user system(s)130and/or visual device(s)150, and provide responses in a markup language, such as eXtensible Markup Language (XML), JavaScript Object Notation (JSON), YAML Ain′t Markup Language (YAML), or the like, and/or in any other suitable or desired format. As mentioned above, platform110may provide an application programming interface which defines the manner in which user system(s)130and/or visual device(s)150may interact with the web service. Thus, user system(s)130and/or visual device(s)150can define their own user interfaces, and rely on the web service to implement or otherwise provide the backend functionality, storage, and/or the like, described herein. For example, in such an embodiment, client application132, executing on one or more user systems130, may interact with server application112, executing on platform110, to execute one or more or a portion of one or more of the various processes described herein. Similarly, software application152, executing on one or more visual devices150, may interact with server application112, executing on platform110, to periodically retrieve the value of an environmental parameter from server application112and update a visual display that indicates the value of the environmental parameter.

Client application132on user system130may be “thin,” in which case processing is primarily carried out server-side by server application112on platform110. A basic example of a thin client application132is a browser application, which simply requests, receives, and renders webpages at user system(s)130, while server application112on platform110is responsible for generating the webpages and managing database functions. Alternatively, the client application may be “thick,” in which case processing is primarily carried out client-side by user system(s)130. It should be understood that client application132may perform an amount of processing, relative to server application112on platform110, at any point along this spectrum between “thin” and “thick,” depending on the design goals of the particular implementation.

Software application152on visual device150may similarly be anywhere along the spectrum between “thin” and “thick.” However, it is generally contemplated that software application152should be as thin as possible. This enables a very lightweight processing system to be used to control the visual display of visual device150, such that the dimensions (e.g., size and weight), cost, power consumption, and the like, of visual device150may be minimized. For example, in a preferred embodiment, visual device150is capable of being hung on a wall with a similar footprint as a painting or framed picture.

2. Example Processing Device

FIG.2is a block diagram illustrating an example wired or wireless system200that may be used in connection with various embodiments described herein. For example, system200may be used as or in conjunction with one or more of the processes (e.g., to store and/or execute the software) described herein, and may represent components of platform110, user system(s)130, data source(s)140, visual device(s)150, and/or any other processing devices described herein. System200can be any processor-enabled device (e.g., server, personal computer, etc.) that is capable of wired or wireless data communication. Other processing systems and/or architectures may also be used, as will be clear to those skilled in the art.

System200may comprise one or more processors210. Processor(s)210may comprise a central processing unit (CPU). Additional processors may be provided, such as a graphics processing unit (GPU), an auxiliary processor to manage input/output, an auxiliary processor to perform floating-point mathematical operations, a special-purpose microprocessor having an architecture suitable for fast execution of signal-processing algorithms (e.g., digital-signal processor), a subordinate processor (e.g., back-end processor), an additional microprocessor or controller for dual or multiple processor systems, and/or a coprocessor. Such auxiliary processors may be discrete processors or may be integrated with a main processor210. Examples of processors which may be used with system200include, without limitation, any of the processors (e.g., Pentium™, Core i7™, Core i9™, Xeon™, etc.) available from Intel Corporation of Santa Clara, California, any of the processors available from Advanced Micro Devices, Incorporated (AMD) of Santa Clara, California, any of the processors (e.g., A series, M series, etc.) available from Apple Inc. of Cupertino, any of the processors (e.g., Exynos™) available from Samsung Electronics Co., Ltd., of Seoul, South Korea, any of the processors available from NXP Semiconductors N.V. of Eindhoven, Netherlands, and/or the like.

Processor(s)210may be connected to a communication bus205. Communication bus205may include a data channel for facilitating information transfer between storage and other peripheral components of system200. Furthermore, communication bus205may provide a set of signals used for communication with processor210, including a data bus, address bus, and/or control bus (not shown). Communication bus205may comprise any standard or non-standard bus architecture such as, for example, bus architectures compliant with industry standard architecture (ISA), extended industry standard architecture (EISA), Micro Channel Architecture (MCA), peripheral component interconnect (PCI) local bus, standards promulgated by the Institute of Electrical and Electronics Engineers (IEEE) including IEEE 488 general-purpose interface bus (GPIB), IEEE 696/5-100, and/or the like.

System200may comprise main memory215. Main memory215provides storage of instructions and data for programs executing on processor210, such as any of the software discussed herein. It should be understood that programs stored in the memory and executed by processor210may be written and/or compiled according to any suitable language, including without limitation C/C++, Java, JavaScript, Perl, Python, Visual Basic, .NET, and the like. Main memory215is typically semiconductor-based memory such as dynamic random access memory (DRAM) and/or static random access memory (SRAM). Other semiconductor-based memory types include, for example, synchronous dynamic random access memory (SDRAM), Rambus dynamic random access memory (RDRAM), ferroelectric random access memory (FRAM), and the like, including read only memory (ROM).

System200may comprise secondary memory220. Secondary memory220is a non-transitory computer-readable medium having computer-executable code and/or other data (e.g., any of the software disclosed herein) stored thereon. In this description, the term “computer-readable medium” is used to refer to any non-transitory computer-readable storage media used to provide computer-executable code and/or other data to or within system200. The computer software stored on secondary memory220is read into main memory215for execution by processor210. Secondary memory220may include, for example, semiconductor-based memory, such as programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), and flash memory (block-oriented memory similar to EEPROM).

Secondary memory220may include an internal medium225and/or a removable medium230. Internal medium225and removable medium230may be read from and/or written to in any well-known manner. Internal medium225may comprise one or more hard disk drives, solid state drives, and/or the like. Removable storage medium230may be, for example, a magnetic tape drive, a compact disc (CD) drive, a digital versatile disc (DVD) drive, other optical drive, a flash memory drive, and/or the like.

System200may comprise an input/output (I/O) interface235. I/O interface235provides an interface between one or more components of system200and one or more input and/or output devices. Example input devices include, without limitation, sensors, keyboards, touch screens or other touch-sensitive devices, cameras, biometric sensing devices, computer mice, trackballs, pen-based pointing devices, and/or the like. Examples of output devices include, without limitation, other processing systems, cathode ray tubes (CRTs), plasma displays, light-emitting diode (LED) displays, liquid crystal displays (LCDs), printers, vacuum fluorescent displays (VFDs), surface-conduction electron-emitter displays (SEDs), field emission displays (FEDs), and/or the like. In some cases, an input and output device may be combined, such as in the case of a touch panel display (e.g., in a smartphone, tablet computer, or other mobile device).

System200may comprise a communication interface240. Communication interface240allows software to be transferred between system200and external devices (e.g. printers), networks, or other information sources. For example, computer-executable code and/or data may be transferred to system200from a network server (e.g., platform110) via communication interface240. Examples of communication interface240include a built-in network adapter, network interface card (NIC), Personal Computer Memory Card International Association (PCMCIA) network card, card bus network adapter, wireless network adapter, Universal Serial Bus (USB) network adapter, modem, a wireless data card, a communications port, an infrared interface, an IEEE 1394 fire-wire, and any other device capable of interfacing system200with a network (e.g., network(s)120) or another computing device. Communication interface240preferably implements industry-promulgated protocol standards, such as Ethernet IEEE 802 standards, Fiber Channel, digital subscriber line (DSL), asynchronous digital subscriber line (ADSL), frame relay, asynchronous transfer mode (ATM), integrated digital services network (ISDN), personal communications services (PCS), transmission control protocol/Internet protocol (TCP/IP), serial line Internet protocol/point to point protocol (SLIP/PPP), and so on, but may also implement customized or non-standard interface protocols as well.

Software transferred via communication interface240is generally in the form of electrical communication signals255. These signals255may be provided to communication interface240via a communication channel250between communication interface240and an external system245. In an embodiment, communication channel250may be a wired or wireless network (e.g., network(s)120), or any variety of other communication links. Communication channel250carries signals255and can be implemented using a variety of wired or wireless communication means including wire or cable, fiber optics, conventional phone line, cellular phone link, wireless data communication link, radio frequency (“RF”) link, or infrared link, just to name a few.

Computer-executable code is stored in main memory215and/or secondary memory220. Computer-executable code can also be received from an external system245via communication interface240and stored in main memory215and/or secondary memory220. Such computer-executable code, when executed, may enable system200to perform the various functions of the disclosed embodiments as described elsewhere herein.

In an embodiment that is implemented using software, the software may be stored on a computer-readable medium and initially loaded into system200by way of removable medium230, I/O interface235, or communication interface240. In such an embodiment, the software is loaded into system200in the form of electrical communication signals255. The software, when executed by processor210, preferably causes processor210to perform one or more of the functions described elsewhere herein.

System200may comprise wireless communication components that facilitate wireless communication over a voice network and/or a data network (e.g., in the case of user system130or visual device150). The wireless communication components comprise an antenna system270, a radio system265, and a baseband system260. In system200, radio frequency (RF) signals are transmitted and received over the air by antenna system270under the management of radio system265.

In an embodiment, antenna system270may comprise one or more antennae and one or more multiplexors (not shown) that perform a switching function to provide antenna system270with transmit and receive signal paths. In the receive path, received RF signals can be coupled from a multiplexor to a low noise amplifier (not shown) that amplifies the received RF signal and sends the amplified signal to radio system265.

In an alternative embodiment, radio system265may comprise one or more radios that are configured to communicate over various frequencies. In an embodiment, radio system265may combine a demodulator (not shown) and modulator (not shown) in one integrated circuit (IC). The demodulator and modulator can also be separate components. In the incoming path, the demodulator strips away the RF carrier signal leaving a baseband receive signal, which is sent from radio system265to baseband system260.

Baseband system260is communicatively coupled with processor(s)210, which have access to memory215and220. Thus, software can be received from baseband processor260and stored in main memory210or in secondary memory220, or executed upon receipt. Such software, when executed, can enable system200to perform various functions of the disclosed embodiments.

3. Example Processes

FIG.3illustrates processes300for supporting a visual device150, according to an embodiment. It should be understood that the described processes300may be embodied in one or more software modules that are executed by one or more hardware processors (e.g., processor210), for example, as a software application on the respective system (e.g., server application112on platform110, client application132on user system130, software application152on visual device150, etc.). Alternatively, the described processes may be implemented as a hardware component (e.g., general-purpose processor, integrated circuit (IC), application-specific integrated circuit (ASIC), digital signal processor (DSP), field-programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, etc.), combination of hardware components, or combination of hardware and software components.

To clearly illustrate the interchangeability of hardware and software, the processes are generally described herein in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled persons can implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the invention. In addition, the grouping of functions within a process is for ease of description. Specific functions can be moved from one process to another process without departing from the invention.

Furthermore, while the processes, described herein, are illustrated with a certain arrangement and ordering of subprocesses, each process may be implemented with fewer, more, or different subprocesses and a different arrangement and/or ordering of subprocesses. It should also be understood that any subprocess, which does not depend on the completion of another subprocess, may be executed before, after, or in parallel with that other independent subprocess, even if the subprocesses are described or illustrated in a particular order.

3.1. Registration of User Account

Process300A represents a registration process for a user account. Process300A comprises subprocesses305-320. Subprocesses305and315may be performed by user system130, and subprocesses310and320may be performed by platform110. In particular, subprocesses305and315may be performed by client application132, and subprocesses310and320may be performed by server application112. Any of the described communications between platform110and user system130may be conducted over network(s)120.

In subprocess305, user information may be received from a user of user system130. In particular, the user may access a website provided by platform110(e.g., via server application112), which may provide a graphical user interface, comprising one or more screens, for creating a new user account, via a client application132(e.g., a browser). Alternatively, the user may download a client application132(e.g., mobile app) to user system130, and launch the downloaded client application132, which may provide the graphical user interface for creating a new user account. In either case, the graphical user interface may prompt the user for the user information and comprise one or more inputs for inputting the user information. The user information may comprise a unique user identifier (e.g., username or email address), user credentials for authentication (e.g., a username and/or email address and password), contact information for the user (e.g., user's first and last name, telephone number, address, email address, etc.), user preferences, and/or the like. Once the user has input the user information into the graphical user interface, the user may submit the user information by selecting an input of the graphical user interface. This submission may trigger user system130to send the user information over network(s)120to platform110.

In subprocess310, a user account is created for the user based on the user information that was received and sent by user system130in subprocess305. In particular, server application112may confirm that the user information is acceptable (e.g., a user account has not already been registered for the same username or email address, the password satisfies a security policy, no user information is missing, etc.). When confirming that the user information is acceptable, server application112may generate and store a new data object, comprising the user information, within server database114. This data object represents a new user account for the user, which may be identified by a unique user identifier (e.g., username, email address, or an internal identifier).

In subprocess315, the user may configure the monitoring of an environmental parameter to be indicated by a visual device150. In particular, after the user account is created in subprocess310, the graphical user interface may redirect the user to one or more screens for specifying a device configuration. Alternatively or additionally, the user may navigate to these screen(s), via navigational inputs of the graphical user interface, at any time after signing into the user's user account. The graphical user interface may comprise one or more inputs for inputting the value of each of one or more device settings in the device configuration. These device setting(s) may include, without limitation, device identifier, one or more geographical locations (e.g., beaches) representing the environment of interest, an identification of the environmental parameter of interest, one or more time ranges over which visual device150should operate in a sleep mode (e.g., sleep scheduler that can be configured and/or toggled on and off), user's ability in the sport being represented by visual device150(e.g., beginner, intermediate, advanced), a color to be used by the visual display of visual device150(e.g., whether to use one of a plurality of fixed colors, or a value-to-color mapping according to real-time environmental conditions), and/or the like. In other words, the device configuration may define an environment, comprising one or more geographical locations, and a parameter of that environment to be indicated by visual device150. Once the user has input the value of each device setting into the graphical user interface, the user may submit the device configuration, comprising the value of each device setting, via an input of the graphical user interface. This submission may trigger user system130to send the device configuration over network(s)120to platform110.

In subprocess320, the device configuration, received from user system130, is stored in association with the user account that was created in subprocess310for the user (e.g., in a user configuration table that is associated with the user account). In particular, server application112may store the device configuration, including the value of each device setting, in association with the user account in server database114. Subsequently, the user may modify the value of any device setting in any device configuration, via a subsequent iteration of subprocesses315-320, by signing into the user's user account (e.g., using the credentials associated with the user account), navigating to the relevant screen(s) in the graphical user interface, selecting the device configuration to be modified, inputting a new value for one or more device settings of the selected device configuration, and then resubmitting the new value(s) of the device setting(s) for the selected device configuration. In addition, in an embodiment, a user may create a plurality of device configurations via a plurality of iterations of subprocesses315-320. Thus, whereas subprocesses305-310may only need to be performed once for each user, an iteration of subprocesses315-320may be performed once or a plurality of times, depending on whether or not the user subsequently modifies a device configuration and/or how many device configurations the user creates.

3.2. Configuration of Visual Device

Process300B represents a registration process for a visual device150. Process300B comprises subprocesses325-345. Subprocesses325and335may be performed by user system130, subprocesses330and340may be performed by visual device150, and subprocess345may be performed by platform110. In particular, subprocesses325and335may be performed by client application132, subprocesses330and340may be performed by software application152on visual device150, and subprocess345may be performed by server application112. Any of the described communications between platform110and visual device150may be conducted over network(s)120, whereas any of the described communications between user system130and visual device150may be conducted over a direct wired or wireless connection.

In subprocess325, user system130may establish a connection with visual device150. This connection may be a wired connection, in which case one end of a cable (e.g., Universal Serial Bus (USB) cable) may be inserted into a socket (e.g., USB port) of user system130and the other end of the cable may be inserted into a socket (e.g., USB port) of visual device150. However, in a preferred embodiment, the connection is a wireless connection. In such an embodiment, visual device150may comprise an antenna270that utilizes a standard mid-range (e.g., around 10-300 meters) wireless communication technology, such as Wi-Fi™ or Zigbee™ or a standard short-range (e.g., around 10 meters) wireless communication technology, such as Bluetooth™.

In a preferred embodiment, Wi-Fi™ is used for the connection between user system130and visual device150. In this case, visual device150can utilize the same antenna270to establish both a direct connection with user system130and an indirect connection to platform110via network(s)120. In particular, visual device150may utilize Wi-Fi™ provisioning as a means to connect to network(s)120, instead of having to hard-code network credentials into visual device150. Provisioning generally refers to the process of preparing and configuring a network to enable the network to provide new services. In the present context, provisioning refers to the provision of network credentials, through the connection to user system130, that enable visual device150to connect to a wireless network (e.g., local area network (LAN), operated by or otherwise accessible to the user) and obtain an IP address on the wireless network. In turn, this enables visual device150to communicate with platform110over network(s)120, which include the wireless network.

In this regard, visual device150may comprise a local access point (e.g., comprising antenna270). Software application152, executing on visual device150, may comprise a software server that provides a service at a fixed IP address (e.g., 192.168.4.1) accessible via the local access point. The software server may be configured to broadcast a service set identifier (SSID), using the Wi-Fi™ communication protocol, to identify visual device150. User system130may detect the SSID, also using the Wi-Fi™ communication protocol, and connect to the local access point of visual device150(e.g., in response to a user operation within the graphical user interface of client application132). In an embodiment, a basic password (e.g., “password”) may be required to connect to the local access point. This password may be fixed or, alternatively, may be changeable by the user, via the graphical user interface, after the connection to the local access point has been established.

In subprocess330, regardless of how the connection between visual device150and user system130is established, the user may be prompted to specify connection information for a connection between visual device150and platform110. In particular, once a wired or wireless connection has been established between visual device150and user system130, the software server, executing on visual device150, may generate a graphical user interface, comprising one or more screens for specifying a connection configuration, and send the graphical user interface to user system130. The graphical user interface may be displayed by client application132(e.g., browser, mobile app, etc.) on a display of user system130. The graphical user interface may comprise one or more inputs for inputting the value of each of one or more connection settings in the connection configuration. These connection setting(s) may include, without limitation, access information for a wireless network, account information for the user's user account, a frequency at which visual device150should communicate with platform110via the connection being configured, the selection of one or more colors to be used in the visual display of visual device150, potentially mapped in a value-to-color mapping to the value or ranges of values of the environmental parameter to be indicated by visual device150, and/or the like. The access information for a wireless network may comprise an identifier (e.g., SSID) of the wireless network (e.g., LAN) through which visual device150can access platform110, credentials (e.g., password), if any, required to access the wireless network, and/or the like. The account information may comprise a user identifier (e.g., username or email address) for the user account, credentials (e.g., password) required to sign in to the user account, and/or the like.

In subprocess335, the user may configure the connection between visual device150and platform110by specifying each of the connection setting(s). In particular, the user may input the value of each connection setting in the connection configuration into the graphical user interface, and then submit the connection configuration via an input of the graphical user interface. This submission may trigger user system130to send the configuration information to visual device150, over the direct connection between user system130and visual device150. Notably, since the connection configuration, which may include the password to the user's personal LAN, is sent over a direct connection between user system130and visual device150, this sensitive information is not in danger of being intercepted by a malicious actor.

In subprocess340, visual device150may establish a connection with platform110, based on the connection configuration that was submitted in subprocess335. For example, visual device150may comprise a wireless communication interface (e.g., communication interface240in conjunction with baseband260, radio265, and antenna270) that is configured to connect to the wireless network, specified in the connection configuration (e.g., using the SSID and credentials in the connection configuration), and thereby connect to platform110via network(s)120. Visual device150may also store the connection configuration in non-volatile local memory (e.g., secondary memory220) for subsequent usage.

When a connection is successfully established between visual device150and platform110, software application152, executing on visual device150, may notify the user that the connection was successful via the graphical user interface being sent to and displayed by client application132on the display of user system130. Conversely, when a connection is unable to be established between visual device150and platform110using the submitted connection configuration, software application152may instead notify the user that the connection was unsuccessful and/or prompt the user to reenter the connection setting(s) via the graphical user interface.

In subprocess345, once a connection has been successfully established between visual device150and platform110over network(s)120, server application112, executing on platform110, may associate visual device150with the user account. In particular, visual device150may send a registration request to server application112. The registration request may comprise a unique device identifier of visual device150, such as a Media Access Control (MAC) identifier, and potentially, a user identifier (e.g., username or email address) of the user account. In an embodiment, the registration request may require visual device150to authenticate with platform110, using the account information from the connection configuration. Server application112may associate the device identifier with the user identifier within server database114, to thereby register the visual device150to the user account.

It should be understood that process300B may only need to be performed once for each visual device150. However, a user may register a plurality of visual devices150to a single user account by performing an iteration of process300B for each visual device150to be registered. In an embodiment, each visual device150may be assigned a device configuration, independently from any other visual device150. In particular, the device identifier of each visual device150may be associated with a device configuration (e.g., an identifier of the device configuration) within server database114, to thereby associate the visual device150with the device configuration. Thus, for example, the user may create a first and second device configuration via iterations of subprocesses315-320, register a first and second visual device150via two iterations of process300B, assign the first device configuration to the first visual device150, and assign the second device configuration to the second visual device150. It should be understood that the user could also assign the same device configuration to two or more visual devices150. In an alternative embodiment, the user account may be associated with only a single device configuration, and all visual devices150may be assigned that single device configuration.

In an embodiment, to assign a device configuration to a visual device140, a user may utilize process300B to register the visual device140, then sign in to the user's user account, and utilize one or more inputs in the graphical user interface to assign a device configuration (e.g., created via an iteration of subprocesses315-320) to the registered visual device150. As discussed elsewhere herein, the device configuration may define the environment and environmental parameter to be indicated by visual device150to which the device configuration is assigned. In an alternative or additional embodiment, the device configuration may be specified by the user in subprocess335(e.g., when inputting the connection setting(s)), and included in the registration request. In this case, the device configuration may be associated with the visual device150at the time of registration.

3.3. Acquisition of Data

Process300C represents a collection process for environmental data. Process300C comprises subprocesses350-360. Subprocesses350and360may be performed by platform110, and subprocess355may be performed by data source140. In particular, subprocesses350and360may be performed by server application112, and subprocess355may be performed by a web service executing on data source140. Any of the described communications between platform110and data source140may be conducted over network(s)120.

In subprocess350, platform110may request data from data source140. In particular, server application112, executing on platform110, may perform a remote procedure call, over network(s)120, to a GET method, defined in the application programming interface of data source140, to request environmental data from data source140. The environmental data may be requested for each individual device configuration stored in association with each user account within server database114on platform110, or may be requested collectively for all device configurations stored in association with user accounts within server database114on platform110.

In subprocess355, data source140may send data in response to the request in subprocess350. In particular, a web service, executing on data source140, may retrieve and send the environmental data, requested by server application112, to server application112over network(s)120. In this manner, platform110may acquire environmental data from data source140.

In subprocess360, platform110may process and store the data returned by data source140in subprocess355. In particular, the environmental data, returned by data source140, may be formatted into a standardized format and stored (e.g., in an environmental data table) within server database114. The formatting may comprise converting units of one or more values in the environmental data into a common standard unit of measure, converting the time zone of the environmental data into a single standard time zone, and/or the like. Environmental parameters may be derived, from the stored environmental data, when needed by a visual device150.

It should be understood that process300C may be performed repeatedly for a single data source140or each of a plurality of data sources140. For example, process300C could be performed periodically, according to a fixed time interval (e.g., every minute, every five minutes, every fifteen minutes, every thirty minutes, every hour, every N hours, in which N is any integer greater than one, etc.), for each data source140. Alternatively, process300C could be performed each time the value of an environmental parameter is requested by a visual device150.

In an alternative embodiment, instead of platform110pulling environmental data from data source140, data source140pushes environmental data to platform110. In this case, data source140could periodically, according to a fixed time interval (e.g., every minute, every five minutes, every fifteen minutes, every thirty minutes, every hour, every N hours, in which N is any integer greater than one, etc.), post the environmental data to server application112via a remote procedure call, over network(s)120, to a method provided by an application programming interface of server application112.

3.4. Operation of Visual Device

Process300D represents the operation of a visual device150. Process300D comprises subprocesses365-385. Subprocesses365,380, and385may be performed by visual device150, and subprocesses370and375may be performed by platform110. In particular, subprocesses365,380, and385may be performed by software application152, and subprocesses370and375may be performed by server application112. Any of the described communications between platform110and visual device150may be conducted over network(s)120.

In subprocess365, visual device150requests the value of an environmental parameter from platform110. In particular, visual device150may connect to platform110using the connection configuration submitted in subprocess335, and send a request for the value of the environmental parameter to server application112. The request may be sent via a remote procedure call by software application152, executing on visual device150, to a GET method provided by the application programming interface of server application112. The request may comprise the device identifier of visual device150. The request could also comprise the account information (e.g., username or email address and credentials) for the user's user account, as provided in the connection configuration submitted in subprocess335, in order to authenticate visual device150to platform110.

In subprocess370, platform110may calculate the value of the environmental parameter, in response to the request from visual device150. In particular, server application112may receive the request sent by visual device150in subprocess365, retrieve the device configuration, associated with the visual device150, from server database114, based on the device identifier in the request, and calculate the value of the environmental parameter for the environment, specified in the device configuration, from the environmental data stored within server database112by one or more iterations of process300C. In other words, the value of the environmental parameter is calculated based on the device configuration and the environmental data.

The value of the environmental parameter may be calculated as a numerical rating or other score using an algorithm that aggregates the values of a plurality of features. The values of the plurality of features may be extracted from the environmental data, based on the device configuration. In particular, subprocess370may, for each of the plurality of features, extract the value, from the environmental data that correspond to the environment defined in the device configuration. The aggregation may weight two or more of these features differently to determine the numerical score for the environmental parameter.

In an embodiment, a machine-learning model may be used to calculate the value of the environmental parameter from the plurality of features. In this case, the machine-learning model may be trained using supervised learning. In particular, a training dataset may be generated that comprises labeled feature vectors, in which each feature vector comprises a value for each of the plurality of features and is labeled with a target value for the environmental parameter. The machine-learning model may be trained by minimizing the error between the output of the machine-learning model for each feature vector and the target value with which that feature vector is labeled. In other words, the machine-learning model is trained to output the value of the environmental parameter based on the values of the plurality of features. Once trained to a suitable accuracy, the machine-learning model may be deployed to determine the value of the environmental parameter from real-time values of the plurality of features. Examples of suitable machine-learning models include, without limitation, an artificial neural network, random forest algorithm, linear regression algorithm, logistic regression algorithm, decision tree, support vector machine (SVM), naïve Bayes algorithm, k-Nearest Neighbors (kNN) algorithm, K-means algorithm, dimensionality reduction algorithm, gradient-boosting algorithm, and the like.

In an embodiment, the value (e.g., numerical score) of the environmental parameter is one of a finite plurality of enumeration values (e.g., integers). In this case, subprocess370(e.g., machine-learning model) may be a classifier that classifies a feature vector, comprising a value of each of the plurality of features, into one of a finite plurality of classes. Alternatively, subprocess370may calculate a value over a continuous range of values, and then quantize this value into one of a finite plurality of classes. The number of enumeration values, which the value of the environmental parameter may be, may depend on the particular design goals of visual device150, and may depend on the color scale (e.g., number of light colors) that is representable by the visual display of visual device150. In one particular example, there may be six possible enumeration values, such that the value of the environmental parameter may be zero, one, two, three, four, or five.

One of the enumeration values (e.g., zero) may indicate that visual device150should operate in a sleep mode, as opposed to indicating the actual value of the environmental parameter. In this case, calculating the value of the environmental parameter may comprise determining whether the current time is within a time range that was specified, in the device configuration, for the sleep mode. When determining that the current time is within the time range specified for the sleep mode, the value of the environmental parameter may be set to the enumeration value (e.g., zero) representing the sleep mode. Otherwise, when determining that the current time is not within the time range specified for the sleep mode, the value of the environmental parameter may be calculated to reflect an environmental condition, as described above.

In an embodiment, the environmental parameter represents a weather condition, such as a surf condition, in an environment, such as one or more beaches. In the specific case that the environmental parameter represents a surf condition in a beach environment, the plurality of features may include, without limitation, wave height, wave direction, wave period, swell height, swell direction, swell period, secondary swell, wind wave height, wind wave direction, wind wave period, water temperature, ice coverage, wind speed, wind direction, air temperature, an indication of low tide or high tide, tide direction, time of sunrise, time of sunset, and/or the like, for the beach environment. In an embodiment in which the value of the environmental parameter, representing the surf condition, may be one of six enumeration values, a value of zero may represent a sleep mode, a value of one may represent poor surf conditions, a value of two may represent fair surf conditions, a value of three may represent good surf conditions, a value of four may represent ideal surf conditions, and a value of five may represent dangerous surf conditions (e.g., dangerously high surf).

In subprocess375, regardless of how the environmental parameter is calculated, platform110sends the calculated value of the environmental parameter to visual device150, as a response to the request sent in subprocess365. In particular, server application112, executing on platform110, may send the calculated value of the environmental parameter (e.g., in a JSON objet), over network(s)120, to software application152, executing on visual device150.

In subprocess380, visual device150receives the value of the environmental parameter, sent by platform110in subprocess375. As discussed above, the value of an environmental parameter may be a numerical score of an environmental condition, such as a surf condition or other weather condition. The numerical score may be an integer, which may represent, for example, one of a finite plurality of enumeration values. To minimize the computational resources required at visual device150, all or a substantial portion of processing of the environmental parameter may be performed by server application112on platform110, such that the value of the environmental parameter received in subprocess380may be used with little to no additional processing. This enables visual device150to be a lightweight device, in terms of dimensions (e.g., size and weight) and power consumption, as well as facilitating and reducing the cost of manufacturing visual device150.

In subprocess385, visual device150may control a visual display based on the value of the environmental parameter, received in subprocess380. For example, as will be discussed elsewhere herein, the color of one or more illumination elements in the visual display may be updated to reflect the value of the environmental parameter, according to a value-to-color mapping stored in visual device150. It should be understood that, when the value of the environmental parameter has not changed since the last iteration of process300D, the color of the illumination element(s) in visual display may not change at all in subprocess385. Conversely, when the value of the environmental parameter has changed since the last iteration of process300D, the color of illumination element(s) in the visual display may change from a first color to a second color.

The value-to-color mapping may be fixed or configurable (e.g., via the connection setting(s) in the connection configuration). In either case, the value-to-color mapping may map each of the plurality of enumeration values for the environmental parameter to one of a plurality of colors. Each of the plurality of enumeration values may be mapped to a different one of the plurality of colors than all other ones of the plurality of enumeration values, such that there is a one-to-one mapping of values to colors.

Each illumination element may be configured to emit light in each of the plurality of colors. During operation, the illumination element will emit light in the color that is associated with the current value of the environmental parameter, received in subprocess380. In other words, in subprocess385, visual device150controls at least one illumination element in the visual display of visual device150to emit light in a color that is mapped to the value of the environmental parameter in the value-to-color mapping, to thereby indicate the value of the environmental parameter.

It should be understood that process300D may be performed repeatedly for each visual device150. For example, process300D could be performed periodically according to a fixed time interval, as defined in the connection configuration submitted for the visual device150in subprocess335. In other words, the operation of visual device150, in subprocesses365,380, and385, may be periodically executed after each of a plurality of time intervals. The shorter the time interval, the greater the temporal resolution of indications of the environmental parameter that will be provided in the visual display of visual device150. It is generally contemplated that the fixed time interval would be on the order of minutes (e.g., one minute, three minutes, five minutes, ten minutes, fifteen minutes, etc.). Thus, the visual display of visual device150is updated periodically to reflect real-time environmental conditions.

FIG.4illustrates a process400for training a machine-learning model for calculating the value of an environmental parameter, according to an embodiment. It is generally contemplated that process400would be implemented by server application112, executing on platform110. However, process400could be implemented by any software, hardware, or combination of software and hardware. In addition, while process400is illustrated with a certain arrangement and ordering of subprocesses, process400may be implemented with fewer, more, or different subprocesses and a different arrangement and/or ordering of subprocesses. It should also be understood that any subprocess, which does not depend on the completion of another subprocess, may be executed before, after, or in parallel with that other independent subprocess, even if the subprocesses are described or illustrated in a particular order.

The goal of process400is to train a machine-learning model to accurately output the value of an environmental parameter based on the values of a plurality of features. Process400may be performed under the guidance of a developer, working on behalf of an operator of platform110.

The input to process400may be historical data405comprising or consisting of historical values of the plurality of features at a plurality of different past times. It should be understood that the plurality of features should represent variables that are relevant to the environmental parameter. For example, if the environmental parameter is a surf condition, the plurality of features should comprise surf-related parameters, as discussed elsewhere herein. Similar features can be engineered for other environmental conditions.

In subprocess410, a training dataset415is generated from historical data405. In an embodiment, training dataset415comprises a plurality of labeled feature vectors. Each feature vector contains the value of each of the plurality of features, in historical data405, and is labeled with a target value, representing the ground-truth value of the environmental parameter for that feature vector. The values of the plurality of features may be standardized and/or normalized (e.g., converted to common units of measure) when converting historical data405into feature vectors. As discussed elsewhere herein, the value of the environmental parameter may be one of a finite plurality of enumeration values. In this case, each target value may also be one of the finite plurality of enumeration values. The target value for each feature vector in training dataset415may be determined manually (e.g., via panels with domain expertise), automatically (e.g., using weather models), or semi-automatically (e.g., using weather models and panels with domain expertise).

In subprocess420, the machine-learning model is trained using training dataset415. In particular, the machine-learning model may be trained by minimizing a loss function over a plurality of training iterations. In each training iteration, one feature vector from training dataset415may be input to the machine-learning model to output a value of the environmental parameter, the loss function may calculate an error between the output value and the target value with which the feature vector is labeled, and one or more weights in the machine-learning model may be adjusted, according to a suitable technique (e.g., gradient descent), to reduce the error. A training iteration may be performed for each of at least a major subset of labeled feature vectors in training dataset415. A remainder of the training dataset415may be used for evaluation of the trained machine-learning model. Examples of suitable machine-learning models include, without limitation, an artificial neural network, random forest algorithm, linear regression algorithm, logistic regression algorithm, decision tree, support vector machine (SVM), naïve Bayes algorithm, k-Nearest Neighbors (kNN) algorithm, K-means algorithm, dimensionality reduction algorithm, gradient-boosting algorithm, and the like.

In subprocess430, the machine-learning model, trained in subprocess420, may be evaluated. The evaluation may comprise validating and/or testing the machine-learning model using a portion of training dataset415that was not used to train the machine-learning model in subprocess420. The result of subprocess430may be a performance measure for the machine-learning model, such as an accuracy of the machine-learning model. The evaluation in subprocess430may be performed in any suitable manner.

In subprocess440, it is determined whether or not the machine-learning model, trained in subprocess420, is acceptable based on the evaluation performed in subprocess430. For example, the performance measure from subprocess440may be compared to a threshold or one or more other criteria. If the performance measure satisfies the criteria (e.g., is greater than or equal to the threshold), the machine-learning model may be determined to be acceptable (i.e., “Yes” in subprocess440). Conversely, if the performance measure does not satisfy the criteria (e.g., is less than the threshold), the machine-learning model may be determined to be unacceptable (i.e., “No” in subprocess440). When the machine-learning model is determined to be acceptable (i.e., “Yes” in subprocess440), process400may proceed to subprocess450. Otherwise, when the machine-learning model is determined to be unacceptable (i.e., “No” in subprocess440), process400may return to subprocess410to retrain the machine-learning model (e.g., using a new training dataset415).

In subprocess450, the trained machine-learning model may be deployed as machine-learning model455. In an embodiment, machine-learning model455receives the values of a plurality of features of environmental data as an input, and outputs the value of an environmental parameter. Machine-learning model455may be deployed by moving machine-learning model455from a development environment to a production environment of platform110. For example, machine-learning model455may be made available at an address on platform110(e.g., in a microservice architecture) that is accessible to server application112in subprocess370. Alternatively, machine-learning model455may be comprised in server application112.

FIG.5illustrates a process500for operating machine-learning model455for calculating the value of an environmental parameter, according to an embodiment. Process500may be executed within subprocess370to calculate the value of the environmental parameter. Thus, it is generally contemplated that process500would be implemented by server application112, executing on platform110, or as a service that is accessible to server application112. However, process500could be implemented by any software, hardware, or combination of software and hardware. In addition, while process500is illustrated with a certain arrangement and ordering of subprocesses, process500may be implemented with fewer, more, or different subprocesses and a different arrangement and/or ordering of subprocesses. It should also be understood that any subprocess, which does not depend on the completion of another subprocess, may be executed before, after, or in parallel with that other independent subprocess, even if the subprocesses are described or illustrated in a particular order.

Initially, in subprocess510, environmental data may be received. For example, environmental data relevant to the environment indicated in the device configuration for a visual device150may be retrieved from server database114(e.g., from an environmental data table) or directly from a data source140. The environmental data may represent current data for the environment in the device configuration. It should be understood that “current” in this context may mean at the current time or within a recent time window extending into the past from the current time. This time window may be the same size as the time interval between iterations of process300C.

In subprocess520, the value of each of the plurality of features may be extracted from the environmental data received (e.g., retrieved) in subprocess510. The values of the plurality of features may be extracted in the same manner as they were extracted from historical data405, in subprocess410, to generate the feature vectors in training dataset415. This extraction may include standardizing and/or normalizing the values of the plurality of features in the same manner as in subprocess410.

In subprocess530, machine-learning model455, which was trained in subprocess420of process400and deployed by subprocess450of process400, may be applied to the features, extracted in subprocess520. In particular, a feature vector, comprising the current value of each of the plurality of features, may be input to machine-learning model455.

In subprocess540, the output of machine-learning model455, comprising or consisting of the value of the environmental parameter, may be output. As described with respect to subprocess375of process300D, server application112may send the value of the environmental parameter, output by machine-learning model455in subprocess370, over network(s)120, to visual device150.

5. Example Visual Device

FIG.6illustrates a perspective view of a visual device150, according to an embodiment. Visual device150may comprise a substrate610. Substrate610is illustrated as having a rectangular shape. However, substrate610may have any shape, including a circle, triangle, pentagon, hexagon, heptagon, octagon, nonagon, decagon, or the like. Substrate610may support a visual display comprising at least one illumination element620.

Each illumination element620, in the visual display of visual device150, may be attached to and protrude outwards from a front surface of substrate610. In the illustrated embodiment, the visual display consists of three distinct illumination elements620A,620B, and620C. However, the visual display may comprise any number of illumination elements620, including one, two, four, five, ten, twenty, one hundred, several hundred, one thousand, several thousand, or the like.

Each illumination element620may be configured to emit each of a plurality of colors of light within a color scale. For example, illumination element620may comprise one or a plurality of light-emitting elements. A light-emitting element may include, without limitation, a light-emitting diode (e.g., organic light-emitting diode), incandescent light bulb, fluorescent tube (e.g., compact fluorescent tube), neon cold-cathode tube, or the like. In a preferred embodiment, the light-emitting elements are light-emitting diodes (e.g., 12-volt light-emitting diodes). Each light-emitting element may be configured to emit each of the plurality of colors of light. Alternatively, different subsets of the light-emitting elements may each emit a different one of the plurality of colors of light, and each subset of light-emitting elements may be capable of being turned on or off, while the other subsets of light-emitting elements are turned off or on, respectively. As yet another alternative, visual device150may comprise a plurality of illumination elements620that are each configured to only emit a single one of the plurality of colors of light, which is different than the color of light emitted by the other illumination elements620, and visual device150may be configured to turn each illumination element620on or off, while the other illumination elements620are turned off or on, respectively.

As illustrated, in an embodiment, the light-emitting elements in each of one or more illumination elements620may be arranged such that the illumination620forms a linear or curvilinear light strip. Collectively, illumination element(s)620may be formed in a shape that represents the activity to which the environmental parameter pertains. As an example, the activity may be a sport, such as board surfing, kite surfing, sailing, parasailing, snowboarding, skiing, hang-gliding, or the like. However, it should be understood that any activity, whether sport or non-sport, recreational or non-recreational, which may be affected by weather, can be represented in the shape of illumination element(s)620. Even more generally, anything that can be affected by environmental data can be represented in the shape of illumination element(s)620.

As one example, the shape of illumination element(s)620may depict an apparatus that is utilized in the activity, such as a surfboard for board surfing, a kite board for kite surfing, a sailboat for sailing, a parachute for parasailing, a snowboard for snowboarding, skis for skiing, a hang-glider for hang-gliding, or the like. Additionally or alternatively, the shape of illumination element(s)620may depict a person engaging in the activity, such as a person on a surfboard for board surfing, a person on a kite board for kite surfing, a person on a sailboat for sailing, a person in a parachute being pulled by a boat for parasailing, a person on a snowboard for snowboarding, a person on skis for skiing, a person in a hang-glider for hang-gliding, or the like.

As an alternative or additional example, illumination element(s)620may be formed in the shape of a string of characters that spell a word that is related to the activity. For example, in an embodiment in which the activity is a sport, the word may be the name of the sport, such as “surf” for board surfing or kite surfing, “sail” for sailing or parasailing, “snow” or “board” for snowboarding, “ski” for skiing, “hang” or “glide” for hang-gliding, or the like. The characters may be shaped stylistically to add artistic flair to visual device150.

In the illustrated example, the visual display is formed in the shape of the word “surf,” representing the sport of board surfing or kite surfing. In particular, illumination element620A is formed in the shape of a stylistic “s,” illumination element620B is formed in the shape of a stylistic “ur,” and illumination element620C is formed in the shape of a stylistic “f” In this case, a plurality of illumination elements620are used to form distinct character sets in the word. However, in an alternative embodiment, a single illumination element620could be used to form the entire word (e.g., using cursive).

As illustrated, visual device150may also comprise frame630on or around substrate610. Frame630may add dimension to visual device150and artfully hide the edges of substrate610, as well as facilitate the mounting of visual device150on, for example, a wall. In an alternative embodiment, frame630may be omitted.

Visual device150may comprise a controller700. Controller700may comprise processing system200. It should be understood that controller700may perform all of the processing attributed to visual device150. In particular, controller700may be configured, via software, hardware, or a combination of software and hardware, to perform subprocesses330,340,365,380, and385. Controller700may be mounted on the rear surface of substrate610, mounted on the rear surface of frame630, embedded within substrate610, or the like, such that controller700is not visible when viewing the visual display of visual device150.

Controller700may be electrically connected to each illumination element620by at least one signal line640, which may comprise a cable, conductive trace, or the like, on the front or rear surface of substrate610and/or embedded within substrate610. Controller700may control each illumination element620via a single or respective signal line640to control the color of light emitted by the illumination element620, turn the illumination element620on or off, and/or the like.

6. Example Controller for Visual Device

FIG.7illustrates a schematic of an example of controller700for visual device150, according to an embodiment. Controller700may comprise an electrical board710on which a plurality of components is mounted. The plurality of components may include a system200, a power-supply terminal720, a ground terminal730, a red-light-power-supply terminal740R, a blue-and-green-light-power-supply terminal740BG, a ground terminal750, and three transistors760R,760B, and760G.

In an embodiment, system200of controller700comprises or consists of a system-on-a-chip microcontroller. As an example, system200of controller700may be an ESP32 microcontroller, manufactured by Espressif Systems of Shanghai, China. The ESP32 microcontroller is a low-power system-on-a-chip microcontroller with integrated Wi-Fi™ and dual-mode Bluetooth™ connectivity. System200of controller700may be preloaded with software application152(e.g., within main memory215and/or secondary memory220), which may implement subprocesses330,340,365,380, and385. To power system200of controller700, a voltage-in (VIN) pin of system200may be conductively connected to power-supply terminal720(e.g., which is connected to a power source, such as a 5-volt power source), and a ground (GND) pin of system200may be conductively connected to ground terminal730.

Each transistor760represents one of the primary colors of light: red; blue; or green. In particular, transistor760R represents red, transistor760B represents blue, and transistor760G represents green. Transistor760R may be conductively connected, via terminal762R, to a signal line640that controls whether or not illumination element(s)620emit red light. Transistor760B may be conductively connected, via terminal762B, to a signal line640that controls whether or not illumination element(s)620emit blue light. Transistor760G may be conductively connected, via terminal762G, to a signal line640that controls whether or not illumination element(s)620emit green light.

Each transistor760may comprise three pins: a base pin for control; a collector pin for receiving current; and an emitter pin for draining current. The base pin controls the biasing of transistor760and can be used to turn transistor760on or off. The base pin of each transistor760may be conductively connected to a general purpose input/output (GPIO) pin of system200of controller700through a resistor. For example, the base pin of transistor760R is conductively connected to the IO21pin via a resistor RR, the base pin of transistor760B is conductively connected to the IO22pin via a resistor RB, and the base pin of transistor760G is conductively connected to the IO23pin via a resistor RG. As an example, each resistor RR, RB, and RG may have a resistance value of 560 ohms. The collector pin of each transistor760may be conductively connected to a respective power-supply terminal. For example, the collector pin of transistor760R is conductively connected to red-light-power-supply terminal740R, and the collector pins of transistors760B and760G are each conductively connected to blue-and-green-light-power-supply terminal740BG. The emitter pin of each transistor760may be conductively connected to ground terminal750. When a small current is applied to the base pin of transistor760(i.e., via the connection to a GPIO pin), a much larger current is caused to flow, through the collector-emitter pins, from the respective power-supply terminal740(e.g., which is connected to a power source, such as a 5-volt power source) to ground terminal750. As an example, each transistor760may be a TIP120 transistor, which is an NPN Darlington transistor.

In the illustrated configuration, system200may turn the red light on by supplying an output signal from the IO21pin to transistor760R. This causes transistor760R to output a signal, via signal line640, that causes illumination element(s)620to emit red light. Conversely, system200may turn the red light off by turning off the output signal from the IO21pin to transistor760R. This causes transistor760R to turn off the signal on signal line640, thereby causing illumination element(s)620to not emit red light.

Similarly, system200may turn the blue light on by supplying an output signal from the IO22pin to transistor760B. This causes transistor760B to output a signal, via signal line640, that causes illumination element(s)620to emit blue light. Conversely, system200may turn the blue light off by turning off the output signal from the IO22pin to transistor760B. This causes transistor760B to turn off the signal on signal line640, thereby causing illumination element(s)620to not emit blue light.

Similarly, system200may turn the green light on by supplying an output signal from the IO23pin to transistor760G. This causes transistor760G to output a signal, via signal line640, that causes illumination element(s)620to emit green light. Conversely, system200may turn the green light off by turning off the output signal from the IO23pin to transistor760G. This causes transistor760G to turn off the signal on signal line640, thereby causing illumination element(s)620to not emit green light.

It should be understood that system200may mix the red, blue, and green (RGB) light colors to form additional light colors. For example, red and blue may be mixed to form magenta, red and green may be mixed to form yellow, blue and green may be mixed for form cyan, and red, blue, and green may be mixed to form white. Thus, in the illustrated embodiment, the visual display of visual device150has a color scale of seven different colors: red, blue, green, magenta, yellow, cyan, and white. As a result, anywhere from one to seven different values of the environmental parameter may be indicated by visual device150. In other words, the number of enumeration values can be anywhere from one to seven.

In an alternative embodiment, visual device150may be configured to emit fewer or more light colors. For example, one or more transistors760and associated components may be removed to decrease the number of possible light colors, or one or more transistors760and associated components may be added for additional light colors. Alternatively or additionally, components may be added to controller700to enable controller700to scale the amount of each light color that is emitted, to significantly widen the color scale by enabling the mixing of different amounts of each light color (e.g., red, blue, and green).

Using surf condition as an example of the environmental parameter, the value-to-color mapping in the following table may be used as a default:

ValueColorSurf Condition0None/WhiteSleep mode (e.g., for a time range between sunsetand sunrise), in which the visual device emits nolight or a fixed light color, such as white. Thetime range and light options may be configurableby the user.1BluePoor2CyanFair3GreenGood4YellowIdeal5RedDangerous

The value-to-color mapping, used by controller700, may be stored in memory (e.g., main memory215and/or secondary memory220) of system200of controller700. The value-to-color mapping may be modified by the user via a direct connection between user system130and the local access point of visual device150, either in process300B (e.g., in the connection configuration), or at some other time. In the event of the latter, user system130may connect to visual device150in the same or similar manner as described with respect to subprocess325. The user may then utilize a graphical user interface, provided by the software server of software application152, executing on controller700, to modify the value-to-color mapping, for example, by assigning a color (e.g., via a drop-down menu that lists every color in the available color scale) to each of the plurality of enumeration values for the environmental parameter, and submitting the assignments via an input of the graphical user interface. In an alternative or additional embodiment, the user may sign in to the user's user account on server application112and specify the value-to-color mapping in the device configuration, in the same or similar manner as described above, and then platform110may send the value-to-color mapping to the visual device150associated with that device configuration, either ad hoc or the next time that visual device150requests the value of the environmental parameter in subprocess365.

7. Validation and Feedback

In an embodiment, users may be able to validate the values of the environmental parameter against their own or otherwise known observations. For example, a user may sign in to the user's user account on server application112. The graphical user interface, provided by server application112, may comprise one or more screens with one or more inputs by which the user can view, for a selected device configuration, the current value of the environmental parameter in real time and/or historical values of the environmental parameter at one or more past times. The user can validate a current value of the environmental parameter against a current observation. For example, the user may be present in the environment (e.g., beach) and compare the current value of the environmental parameter to the current, actual, and observed environmental condition (e.g., surf condition). Similarly, the user can validate a historical value of the environmental parameter against a past observation. For example, the user may compare the historical value of the environmental parameter to a known, actual, and observed environmental condition (e.g., from the user's past observation within the environment, weather reports, etc.).

For easier comprehension and validation, the historical values of the environmental parameter may be displayed in a graphical format. For example, the historical values of the environmental parameter may be displayed as a time series in a chart that plots the value of the environmental parameter over time. Thus, the user can easily compare the values of the environmental parameter over time with known environmental conditions at those times.

In an embodiment, users may be able to submit feedback about the values of the environmental parameter. For example, a user may sign in to the user's user account on server application112. The graphical user interface, provided by server application112, may comprise one or more screens with one or more inputs by which the user can provide feedback. The feedback may represent the results of the user's validation, as described above. For example, the feedback may comprise a time (e.g., day and time, represented as a timestamp) and the value or other representation of the environmental parameter that was actually observed at that time. The feedback could also comprise the value of the environmental parameter that was calculated by server application112for that time, and/or an indication of whether or not the actual value and the calculated value matched each other.

The feedback may be used to improve the calculations of values of the environmental parameter in subprocess370. For example, in an embodiment that utilizes a machine-learning model, server application112may extract the values of the plurality of features from the environmental data for the time provided in the feedback, generate a feature vector that comprises the values of the plurality of features and is labeled with the value of the environmental parameter that was actually observed at the time provided in the feedback, and add the labeled feature vector to a new training dataset415. Once a significant amount of feedback has been collected and converted into labeled feature vectors for the new training dataset415, machine-learning model455may be retrained in subprocess420using the new training dataset415, reevaluated in subprocess430, and redeployed in subprocess450when deemed acceptable in subprocess440. Thus, the calculations in subprocess370may improve over time as feedback is collected from users.

As used herein, the terms “comprising,” “comprise,” and “comprises” are open-ended. For instance, “A comprises B” means that A may include either: (i) only B; or (ii) B in combination with one or a plurality, and potentially any number, of other components. In contrast, the terms “consisting of,” “consist of,” and “consists of” are closed-ended. For instance, “A consists of B” means that A only includes B with no other component in the same context.

Combinations, described herein, such as “at least one of A, B, or C,” “one or more of A, B, or C,” “at least one of A, B, and C,” “one or more of A, B, and C,” and “A, B, C, or any combination thereof” include any combination of A, B, and/or C, and may include multiples of A, multiples of B, or multiples of C. Specifically, combinations such as “at least one of A, B, or C,” “one or more of A, B, or C,” “at least one of A, B, and C,” “one or more of A, B, and C,” and “A, B, C, or any combination thereof” may be A only, B only, C only, A and B, A and C, B and C, or A and B and C, and any such combination may contain one or more members of its constituents A, B, and/or C. For example, a combination of A and B may comprise one A and multiple B's, multiple A's and one B, or multiple A's and multiple B's.