text:
# alexa-smarthome-java

_A framework for creating Alexa Smart Home Skills in Java_

[![Build Status](https://travis-ci.org/gdickinson/alexa-smarthome-java.svg?branch=master)](https://travis-ci.org/gdickinson/alexa-smarthome-java)

## About
The Amazon Echo products, and the Alexa Smart Home interface opens up all sorts of possibilities for controlling devices
around the home. Writing an Alexa skill, however, requires writing code for Amazon Lambda. Lambda provides support for
a strong array popular languages including Node.js, Python, and Java, but very few examples are given to
Java in terms of Smart Home Skills, and there are no canonical Java object bindings for the request/response objects
that SmartHome passes to Lambda.

To complicate matters, Lambda's built-in serialization/deserialization for POJOs is of little help for the
request/response objects that SmartHome makes use of, because of the dynamically-typed payload field which require
special handling.

This software attempts to bridge that gap by providing a small framework to cut down on boilerplate and
scaffolding for authors of Amazon Lambda functions for Alexa Smart Home Skills. It has minimal dependencies, and all
business logic is left up to the user to implement, using whatever additional libraries they wish.

In short, it's tedious to write all this object serialization - I wrote all the boilerplate so you don't have to.

## Usage
Lambda's execution model of completely stateless application code means that you can't assume very much about where and
how things will run, how many times your code gets executed, and so on. From a scaling perspective that's appealing, but
as Java service developers, that's a bit of a pain because we're so used to writing applications which can take a
while to start up as long as they're quick for the rest of the time they're serving requests.

Since this is Lambda, we're constrained to either a zero-arg or default constructor for the class which implements the
method that Lambda will be calling:

     public final void handleRequest(InputStream inputStream, OutputStream outputStream, Context context)

This framework implements this for you in `SmartHomeDirectiveHandler`. Because this is the main entry point to the
code, this class is also required to have a zero-argument constructor.

Users of this framework configure their application by configuring and registering `RequestHandler`s for each `Request`
type that you expect to process. Be sure to always register a handler for the Device Discovery process. Each `Handler`
should provide the appropriate response; the `Request` objects carry the appropriate type parameters to ensure that
handlers obey this constraint.

Your implementation should extend `SmartHomeDirectiveHandler` and initialize and register handlers by overriding the `init()` method.

Compiled code is available on [Maven Central](https://search.maven.org/#artifactdetails%7Cuk.co.gdickinson%7Calexa-smarthome-java%7C0.1%7Cjar).

## Project State
I have used this myself in a personal project and it "works for me", as they say. I'm still working on adding more tests,
and implementing object types that I didn't happen to need.

This code is in pre-1.0 state and it probably shows. I anticipate making changes, especially optimizations in the
initialization phase which will probably be API-breaking.

## Contact
You can find me on Twitter at [@gdickinson](http://twitter.com/gdickinson).

repository: SteefB/alexa-smarthome-java

gha_language: Java

repo_name: SteefB/alexa-smarthome-java


text:
# kafka-rest-connect
Provides kafka connect features over HTTP/S, can work with any kafka ReST proxy, tested with confluent's ReST Proxy

### Kafka connect
https://kafka.apache.org/documentation/#connect provides framework to publish and consume data from kafka topic, it has pluggable
source and sink connectors to variety of data sources

### Why HTTP?

Kafka connect is powerfull framework but tied to kafka and requires kafka cluster access

Scenario, in which we need kafka connect functionality but do not want to expose kafka cluster to internet, then its a challenge.

With HTTP/S we communicate with kafka-ReST Proxy, which in turn runs kafka producers & consumers

From remote client perspective http is proven and simple way to transfer data through robust faremwork like kafka-connect

 This compoenent provides at least once data publish gurantee.

repository: dhananjaypatkar/kafka-rest-connect

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: dhananjaypatkar/kafka-rest-connect


text:
# democratizing-data
Adding transparency to the process of acquiring data in academia and media

* [Awesome Public Datasets](https://github.com/awesomedata/awesome-public-datasets)
* [Political Datasets](https://github.com/erikgahner/PolData/)
* [Data is Plural](https://www.data-is-plural.com/)
* [Economic Articles with Data](https://ejd.econ.mathematik.uni-ulm.de/)

license: MIT

repository: nadialucas/democratizing-data

branch_name: refs/heads/main

repo_name: nadialucas/democratizing-data


text:
---
title: "[LeetCode] 12. Integer to Roman"
permalink: /algorithm/Integer_To_Roman
excerpt: "Time Complexity : O(n)"
classes: wide
categories:
  - Algorithm
tags:
  - Algorithm
  - LeetCode
---
* Time Complexity : O(n)
* Trial Count : 1
* Performace
   * Time : 5ms, 49.35%
   * Memory : 40.9mb, 11.25%

```java
public String intToRoman(int num) {
    int rangeIdx = 0;
    int rangeNum[] = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
    String rangeStr[] = new String[]{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

    String result = "";

    while(num != 0) {
        if(num - rangeNum[rangeIdx] >= 0) {
            num -= rangeNum[rangeIdx];
            result += rangeStr[rangeIdx];
        } else {
            rangeIdx++;
        }
    }
    return result;
}
```

filename: 2020-02-03-Integer To Roman.md

gha_language: JavaScript

gha_license_id: MIT


text:
# LiteGEM: Solution to PCQM4M-LSC of KDD Cup 2021

* Please refer to our **[techical report](./SuperHelix_PCQM4M.pdf)** for the details of implementation and performance.

## Installation requirements
```
ogb==1.3.0
rdkit>=2019.03.1
obabel>=3.1.0
torch>=1.7.0
paddlepaddle-gpu>=2.1.0
pgl>=2.1.4
```

## Data preparation
Under the root directory, please run following command to downlaod the original pcqm4m dataset,
DFT results for auxiliary tasks, and cross-validation split indexes.

```
mkdir dataset && cd dataset
wget http://ogb-data.stanford.edu/data/lsc/pcqm4m_kddcup2021.zip
unzip pcqm4m_kddcup2021.zip
wget https://baidu-nlp.bj.bcebos.com/PaddleHelix/datasets/PCQM_pretrain/sdf.tar.gz
mv sdf.tar.gz pcqm_pyscf_sdf.tar.gz
tar -xzvf pcqm_pyscf_sdf.tar.gz
wget https://baidu-nlp.bj.bcebos.com/PaddleHelix/datasets/PCQM_pretrain/cross_split.pkl
cd ..
```

## Directory structure
```
|-- ogbg_lsc
    |-- README.md
    |-- src             # scripts
    |-- models          # model definition
    |-- utils
    |-- outputs         # model predictions (generated by training)
    |-- dataset         # the original dataset and customed splits
    |-- checkpoints     # model checkpoints (generated by training)
    |-- ensemble        # submitted predictions and code for ensemble
    |-- logs            # train logs (generated by training)
 ```

## Configuration

Model hyper-parameters and other arguments are all defined in `./src/config.yaml`.

## How to run

Our pipeline consists of 4 steps:

1. Data preprocessing

    ````
    cd ./features
    python mol_tree.py          # takes about 30 min
    ````

2. Model training

    Train the model with 2-fold cross validation:

    ````
    cd ./src
    . ./cross_run.sh 0 1        # training on the whole dataset will take about 10 days
                                # "0 1" defines the CUDA devices
    ````

    Or barely train the model with original validation set:

    ```
    cd ./src
    export CUDA_VISIBLE_DEVICES=0
    python main.py --config config.yaml
    ```

3. Test inference (optional)

    There is no need to call the inference program separately since it is included in the training program. If is needed, please set the model saved path on the `infer_from` hyper-parameter in `./src/config.yaml` after training, then run the following commands:

    ```
    cd ./src
    python test.py --config config.yaml --output_path ./test_result
    ```

    The test result will be saved in `./src/test_result`.

4. Ensemble

    Copy model predictions and do the ensemble:

    ````
    cd ../outputs
    rsync -av * ../ensemble/model_pred/new_run

    cd ../ensemble
    python ensemble.py
    ````

The whole training/ensemble pipeline is collectly defined in `./src/main.sh`. The shortcut to start default training with 2-fold cross validation:

```
cd ./src
sh main.sh
```

## Performance

| Model            | Test MAE | \#Parameters |           Hardware          |
|------------------|:--------:|:------------:|:---------------------------:|
| LiteGEM          |  0.1204  |      74M     | Nvidia Tesla P40 (24GB GPU) |
| GIN*             |  0.1678  |     3.8M     | GeForce RTX 2080 (11GB GPU) |
| GIN-virtual*     |  0.1487  |     6.7M     | GeForce RTX 2080 (11GB GPU) |
| GCN*             |  0.1838  |     2.0M     | GeForce RTX 2080 (11GB GPU) |
| GCN-virtual*     |  0.1579  |     4.9M     | GeForce RTX 2080 (11GB GPU) |
| MLP+Fingerprint* |  0.2068  |     16.1M    | GeForce RTX 2080 (11GB GPU) |

\* Results copied from the [baseline performance for PCQM4M-LSC](https://github.com/snap-stanford/ogb/blob/master/examples/lsc/pcqm4m/README.md#performance).

## Citation

    @misc{fang2021chemrlgem,
        title={ChemRL-GEM: Geometry Enhanced Molecular Representation Learning for Property Prediction},
        author={Xiaomin Fang and Lihang Liu and Jieqiong Lei and Donglong He and Shanzhuo Zhang and Jingbo Zhou and Fan Wang and Hua Wu and Haifeng Wang},
        year={2021},
        eprint={2106.06130},
        archivePrefix={arXiv},
        primaryClass={cs.LG}
    }

repository: PaddlePaddle/PGL

gha_language: Python

repo_name: PaddlePaddle/PGL


text:
# Prooph Event Store Client

PHP 7.4 Event Store Client Implementation.

[![Build Status](https://travis-ci.org/prooph/event-store-client.svg?branch=master)](https://travis-ci.org/prooph/event-store-client)
[![Coverage Status](https://coveralls.io/repos/github/prooph/event-store-client/badge.svg?branch=master)](https://coveralls.io/github/prooph/event-store-client?branch=master)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/prooph/improoph)

## Overview

Prooph Event Store Client supports async non-blocking communication via TCP to [EventStore](https://eventstore.org/).

The `EventStoreConnection` maintains a full-duplex connection between the client and the Event Store server.

### Extensions

The `protobuf` extension from Google is recommended, however it is not required.

When this extension is missing, the client will fallback to use `google/protobuf` installable via composer.

The extension [allegro/php-protobuf](https://github.com/allegro/php-protobuf/) is not compatible.

Additional extensions are only needed if your app necessitates a high numbers of concurrent socket connections.

- [ev](https://pecl.php.net/package/ev)
- [event](https://pecl.php.net/package/event)
- [php-uv](https://github.com/bwoebi/php-uv) (experimental fork)

## Installation

### Client

You can install prooph/event-store-client via composer by adding `"prooph/event-store-client": "dev-master"` as requirement to your composer.json.

### Server

Using docker:

```bash
docker run --name eventstore-node -it -p 2113:2113 -p 1113:1113 eventstore/eventstore
```

Please refer to the documentation of [eventstore.org](https://eventstore.org).

See [server section](https://eventstore.org/docs/server/index.html).

In the docker-folder you'll find three different docker-compose setups (single node, 3-node-cluster and 3-node-dns-cluster).

## Quick Start

For a short overview please see the `examples` folder.

## Unit tests

### Plain PHP

Run the server with memory database

Note: This is the start-script of the Event Store database, not something provided by this library!

```console
./run-node.sh --run-projections=all --mem-db
```

You need to ignore the `ignore` group

```console
./vendor/bin/phpunit --exclude-group=ignore
```

Those are tests that only work against an empty database and can only be run manually.

Before next run, restart the server. This way you can always start with a clean server.

### Using Docker

See: https://github.com/prooph/event-store-client/tree/master/docker/unittest

## Documentation

Documentation is on the [prooph website](http://docs.getprooph.org/).

## Support

- Ask questions on Stack Overflow tagged with [#prooph](https://stackoverflow.com/questions/tagged/prooph).
- File issues at [https://github.com/prooph/event-store-client/issues](https://github.com/prooph/event-store-client/issues).
- Say hello in the [prooph gitter](https://gitter.im/prooph/improoph) chat.

## Contribute

Please feel free to fork and extend existing or add new plugins and send a pull request with your changes!
To establish a consistent code quality, please provide unit tests for all your changes and may adapt the documentation.

## License

Released under the [New BSD License](LICENSE).

repository: prooph/event-store-client

gha_language: PHP

repo_name: prooph/event-store-client


text:
# SFC Support for Openstack4j: code changes.

Service Function Chaining REST Api for the openstack has been available since mitaka release. It deals with four kinds of objects:
flow classifiers, port pairs, port pair groups and port chains. We have submitted the [pull request](https://github.com/ContainX/openstack4j/pull/1141) to the [openstack4j project](https://github.com/ContainX/openstack4j) which deals with flow classifiers only. These changes are summarized here.

The remaining three objects will be submitted later, following the same pattern.

## Design Changes
We add ```SFCService``` under ```api/networking/ext```. This service will be on the same level of service objects as the existing [```NetworkingService```](https://github.com/ContainX/openstack4j/blob/master/core/src/main/java/org/openstack4j/api/networking/NetworkingService.java).

- The ```SFCService``` will return ```FlowClassifierService``` from ```flowclassifiers()``` call.
- Similar calls will later be added for  ```PortGroupService```, ```PortPairService```, ```PortGroupChainService```.
- These four services will be lower-level CRUD services, much like  [```NetworkService```](https://github.com/ContainX/openstack4j/blob/master/core/src/main/java/org/openstack4j/api/networking/NetworkService.java).
- All four lower-level services will implement [```Buildable```](https://github.com/ContainX/openstack4j/blob/master/core/src/main/java/org/openstack4j/common/Buildable.java) and the builders will be provided in the Impl.
-  ```OS.sfc()``` call shall return an implementation of  ```SFCService```

### Code changes.

The following files were added or modified. The new files are underlined red.

![Code changes](./images/FileChanges.png "Code changes")

### FlowClassifier class diagram.
Flow classifiers follow the existing pattern:

![Class diagram](./images/classdiag.png "FlowClassifiers follow the existing pattern")

## Assignees
Dmitry Gerenrot ([dmitryintel](https://github.com/dmitryintel)).

## References
[SFC REST Api for openstack](https://github.com/ContainX/openstack4j/blob/master/core/src/main/java/org/openstack4j/api/networking/NetworkingService.java)

[ContainX/openstack4j project](https://github.com/ContainX/openstack4j)

repository: dmitryintel/community

repo_name: dmitryintel/community


text:
---
slug: /release-notes/middleware/1.3.1
title: Version 1.3.1
---

# fiskaltrust.Middleware 1.3.1 (Germany)
_June 8, 2020_

This release includes many stability and feature improvements for the German middleware, and can be used in production scenarios.

Version 1.3 of the Middleware is meant for the German market only, customers in Austria and France should continue to use version 1.2. We will unify these experiences in an upcoming version.

## Features and general improvements
- Zero receipts support has been improved (including improvements for daily/monthly/yearly receipts)
- Open transactions are now closed when a daily receipt is sent, to be compliant with the requirements of DSFinV-K
- Various logging improvements, including the possibility to set the verbosity to gain detailed information during development time (via the launcher parameter `-verbosity=Debug`)
- The size of a common middleware instance with Queue, SCU and a Helper was reduced to 200MB (from previously up to 1GB)
- HTTP/REST communication now also supports the common JSON date format (e.g. `2019-10-25T13:32:45.133Z`) in addition to the Microsoft-specific date format `/Date(1224043200000)/`
- The gRPC [trailing metadata](https://grpc.io/docs/guides/concepts/#metadata) now includes exception details in case of an error
- The journal endpoint now respects the `from` and `to` parameters, as well as querying German market-specific queue data
- Full support for all [DSFinV-K 2.1](https://www.bzst.de/DE/Unternehmen/Aussenpruefungen/DigitaleSchnittstelleFinV/digitaleschnittstellefinv_node.html) relevant bon types (_Beleg, AVSonstige, AVBelegabbruch, AVRechnung, AVTransfer, AVBestellung, AVSachbezug, AVTraining, AVBelegstorno_) for the _Kassenbeleg-V1_, as well as support for _Bestellung-V1_ and _SonstigerVorgang_
- Enhanced support for complex receipt sequences, e.g. via the now fully supported _info-order_ receipt case

## Stability improvements
- The Middleware now properly handles communication errors and supports the late-signing of receipts
- Open and failed transactions are now persisted in the data layer to support recover in case of e.g. connection errors
- Various lifecycle improvements for the **Swissbit**, **Cryptovision** and **fiskaly** SCUs were implemented. This includes proper handling of self-tests, connection issues, and many other TSE-specific characteristics
- A memory leak was fixed that lead to increased memory consumption in high-load queues
- Some other bugs that were reported by our pilot installation partners were fixed
- Internal improvements to make the handling of receipts severely more reliable were implemented

## Other updates
- The demos and samples on our [GitHub page](https://github.com/fiskaltrust) were drastically extended and enhanced. Among others, we now also provide samples for [Java](https://github.com/fiskaltrust/middleware-demo-java) and [Node.js](https://github.com/fiskaltrust/middleware-demo-node), as well as a [Postman collection](https://github.com/fiskaltrust/middleware-demo-postman) that demonstrates the usage via HTTP. Various other examples can be found in the middleware-demo repository.
- To further simplify the communication with the Middleware, we now provide client packages for our customers who use .NET (for gRPC, HTTP/REST and SOAP). The clients can be downloaded via [NuGet.org](https://www.nuget.org/packages?q=fiskaltrust.Middleware.Client), the code and the documentation are developed on [GitHub](https://github.com/fiskaltrust/middleware-interface-dotnet).
- Our developer documentation on https://docs.fiskaltrust.cloud was improved

## How to update
Existing configurations with 1.3.0 continue to work, but we **strongly recommend all customers to update both their Queues and SCUs, especially in production systems**.

After these packages were updated, please also re-download the Launcher from the portal:
1. Click re-build in the respective cashbox
2. Download the instance by clicking the "dotnet Launcher Download" button
3. Finally, replace the files (fiskaltrust.exe, ...) with the newly downloaded ones.

Alternatively, use the _Launcher Updater_ Powershell script that is provided in the Download area of the Portal.

We generally do not require manual updates of the Launcher, but had to make an exception in this release to resolve some important issues. Future releases will not require any manual interventions (except from updating package versions in the portal). We apologize for any inconvencience caused by this.

### Additional information
- If you are using C#, please update the _fiskaltrust.interface_ NuGet package, or directly migrate to our client packages (as mentioned above).
- If you are using HTTP/REST, SOAP or gRPC via Protobuf directly, no changes are required in your implementation.

Please also note that 1.3.0 and 1.3.1 Queues and SCUs are **not** compatible with each other – this means that in order to use a 1.3.1 SCU, you need to update the Queue as well, and vice versa.

## Next steps
In the upcoming weeks, we will focus on improving our portal to create a better onboarding, development and middleware rollout experience.

repository: LeilaZarban/release-notes

repo_name: LeilaZarban/release-notes


text:
# Singapore Postal Codes
code to list out / map out all Singapore postal codes.

## Disclaimer:
1. USE AT OWN DISCRETION
2. FOR EDUCATIONAL PURPOSES ONLY
3. USE OF THE DATA IS GOVERNED BY THE [OPEN DATA LICENCE](HTTPS://WWW.ONEMAP.SG/LEGAL/OPENDATALICENCE.HTML)
4. THIS DATA DUMP CONTAINS INFORMATION FROM ONEMAP.SG POSTAL CODE SEARCH ACCESSED ON 25 APR 2017, AND LATER

## Demo:
1. (on map) \
https://www.google.com/maps/d/edit?mid=1xY0bu-Aomm-KcEXD58PxdvegZhY5Tcfv&usp=sharing
https://www.google.com/maps/d/edit?mid=19yBcM2JMVOwTZj8svFY2km1j2CXeL95y&usp=sharing
https://www.google.com/maps/d/edit?mid=1JWzJu_GFFe28B7UiSLuf52WqZ-7BhlYr&usp=sharing
2. (listed out) \
https://sg-postalcodes2017.glitch.me/


text:
# Minimal TypeScript project setup for a Node.js project

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

This repository contains a simple setup for a Node.js project with TypeScript. It has been forked from
[here](https://github.com/bobaekang/minimal-typescript-setup) and just tweaked a bit.

Please refer to [this blog post](https://bobaekang.com/blog/minimal-typescript-project-setup-for-curious-minds/) for
the original authors detailed explanation. This is the list of my modifications to the original:

- add a ``.gitignore``
- add [nodemon](https://www.npmjs.com/package/nodemon) and the necessary configuration

## Project setup

```shell
git clone https://github.com/jacsbro/typescript-server.git
cd typescript-server

npm install
npm run start:watch
```

## Use as start for a new local project

```shell
curl -L https://github.com/jacsbro/typescript-server/archive/master.zip -o ts.zip
unzip ts.zip && mv typescript-server-master <new-project-name> && rm ts.zip
cd <new-project-name> && rm LICENSE README.md
```

## Project structure

```
/
/dist   <- compiled JavaScript code goes here
/src    <- TypeScript source code lives here
/test   <- test files (**.test.ts) live     here
```

## Main dependencies

* [TypeScript](https://www.typescriptlang.org/)
* [`ts-node`](https://github.com/TypeStrong/ts-node) for development server
* [ESLint](https://eslint.org/) for linting
* [`typescript-eslint`](https://github.com/typescript-eslint/typescript-eslint) for ESLint plugins to support TypeScript
* [Prettier](https://prettier.io/) for formatting source code
* [Mocha](https://mochajs.org/) for testing
* [Nodemon](https://www.npmjs.com/package/nodemon) for hot reload
## npm scripts

npm script | description
--- | ---
`build` | Compile TypeScript source code to JavaScript
`lint` | Typecheck, lint and format TypeScript source code
`serve` | Run TypeScript source code directly with `ts-node`
`start:watch` | Run changed JavaScript code
`test` | Run tests with Mocha

## License

[MIT](./LICENSE)

repository: jacsbro/typescript-server

repo_name: jacsbro/typescript-server


text:
---
layout: post
title: "Default Parameters and Type Annotation"
categories:
published: true
---

Swift support default Default Parameter for functions
> You can define a default value for any parameter as part of a function’s definition. If a default value is defined, you can omit that parameter when calling the function.

Quick simple example
{% highlight objc %}
class Car {
    func drive(nitro: Bool = false) {
        println("Drive. Use nitro: \(nitro)")
    }
}

class RaisingCar : Car {
    override func drive(nitro: Bool = true) {
        println("Drive. Use nitro: \(nitro)")
    }
}

let car = Car()
car.drive()
//Drive. Use nitro: false

let raising = RaisingCar()
raising.drive()
//Drive fast. Use nitro: true
{% endhighlight %}

This is pretty easy example. We don't provide any argument to the function so default value is used.
Let's try this one

{% highlight objc %}

let rasing2: Car = RaisingCar()
rasing2.drive()
//Drive fast. Use nitro: false
{% endhighlight %}

The result is `Drive fast. Use nitro: false`.
What happens here is:

1. Because of polymorphism ` RaisingCar ` drive function is being called
2. But it's called with `false` default parameter. This happens because swift binds default parameters statically. The static type of rasing2 variable is Car, because we have specified it.

Thanks to **Airspeed Velocity** about [Great post](http://airspeedvelocity.net/2014/06/12/default-parameters-in-swift-are-statically-bound/)

gha_language: Swift


text:
---
description: Guidelines & Best practices for Presenters and Meeting Organizers
---

# All Hands Meeting

These guidelines were defined based on our employees feedback. It aims to improve the quality of our presentation and boost people’s attention and content retention.

### **Objective of this forum**

**1)** Share important information and announcements that have a large impact from a cross-functional standpoint;

**2)** Share some of your department's important initiatives with other departments within our company and give people the opportunity to learn more about your department's responsibilities/activities and members.

## For Presenters

### Guidelines

**1) Share the decision-making process behind projects and activities:** Based on which pillars/guiding principles did your department prioritize this initiative/project? People need to understand the logic/rationality behind decisions.

**2) Transform data into valuable information:** More than just explaining numbers, it's critical to explain why they matter, why they're so useful. Put yourself in the shoes of the other person and consider whether they are aware of the significance of this number. Here's an example: This month, we completed X merges on our code. So, what is the month-to-month average? Are we better than average? What does it all mean? Is there a more qualified coding script now?

**3) Don’t be too technical:** Remember that the All Hands Meeting is an opportunity to spread the word and share key departmental information with others. Do not assume that everyone understands everything you're saying. Make your speech understandable to everyone by translating specific terminology, including a glossary/simple explanation in your presentation, or attempting to swap specific terms for more generic terms whenever possible.

 **4) Send the slides to the owner 24 hours before the All Hands Meeting:** Every presenter should finish their slides 24h before the meeting. This will give us time to review and suggest changes according to the best practices (like adding a summary, presenter names, etc.); this also helps whoever is managing the meeting to prepare with more time in advance (not having to wait until the last minute to upload the presentation to the meeting room).

### **Best Practices**

**1) Slides information:** Even though All Hands Meetings should be attended by all employees, we recognize that timezone is a challenge; this implies that if someone sees your slides asynchronously, they should be **understandable and with clear directions**. Try to include the following items in your presentation: `The name of the project/initiative, the person in charge, the status, and the next steps. It will greatly simplify our lives.`

**2) Summarizing important points:** Remember that you/your department is merely one of several All Hands Meeting presenters. Try to include a concluding slide that recaps and summarizes key points from your presentation. It will also help with material and attention retention, as well as future async consultations on your presentation.

**3) Centralized folder in our Rocket.Chat shared Drive:** We organized an "All Hands Meeting" folder in our Shared Drive in order to consolidate and build a single search for truth. Please consolidate your presentation there, following the folder's arrangement by year > month. `(Location: Shared Drive > Rocket.Chat > All Hands Meeting)`

**4) Important links shared in All Hands Meeting chat:** You must include the `URL of those links shared during All Hands meeting` in your presentation in a visible location to encourage access to it following the All Hands Meeting.

**5) (Culture Pillar) Use this opportunity to thank your team and share critical team deliverables, giving them a voice:** The leader should choose some members of your team to present a significant deliverable that demonstrates the impact of their efforts, the problems they faced, and how they overcame them. It is a method of positively exposing your team's hard work and promoting engagement of your team with the rest of the company.

## For the Organizer/Owner

### Important directions

**1) Shared Drive Folder:** The owner of this assignment must establish a new folder for the month, as well as a new document for the next presentation, in order to keep the single search for the truth up to date.

**2) Ensure that Guidelines & Best Practices are being followed:** We need to have someone to reinforce the importance of following those guidelines and best practices.

### Meeting Planning

* **Every second All Hands meeting of each month:** OKRs track session
* **1 week before All Hands Meeting:** This is an excellent opportunity to reaffirm Guidelines and Best Practices with upcoming presenters.
* **1 day before All Hands Meeting:** Analyze the slides and make some minor changes based on the All Hands Meeting rules and best practices.
* **After each All Hands Meeting: 1)** Insert the `All Hands recording link in the All Hands Meeting folder (`Each month's folder will have a document titled "Recordings All Hands Meeting," which is where you should insert the recordings); **2)** In the `#important channel`, share the URL to the All Hands meeting folder for that month, along with instructions such as "month X" and then "day DD/MM/YYYY," to educate others on where to discover our **"one search for truth."**

repository: RocketChat/handbook

gha_language: TypeScript

gha_license_id: NOASSERTION

repo_name: RocketChat/handbook


text:
---
layout: tutorial
title: "Scalaz module"
section: tutorial
sort_order: 12
---
Kantan.regex has a [scalaz](https://github.com/scalaz/scalaz) module that is, in its current incarnation, fairly bare
bones: it provides decoders for [`Maybe`] and [`\/`] as well as a few useful type class instances.

The `scalaz` module can be used by adding the following dependency to your `build.sbt`:

```scala
libraryDependencies += "com.nrinaudo" %% "kantan.regex-scalaz" % "@VERSION@"
```

You then need to import the corresponding package:

```tut:silent
import kantan.regex.scalaz._
```

## `\/` decoder

The `scalaz` module provides a [`GroupDecoder`] instance for [`\/`]: for any type `A` and `B` that each have a
[`GroupDecoder`] instance, there exists a [`GroupDecoder`] instance for `A \/ B`.

First, a few imports:

```tut:silent
import scalaz._
import kantan.regex.implicits._
```

We can then simply write the following:

```tut
"[123] [true]".evalRegex[Int \/ Boolean](rx"\[(\d+|true|false)\]", 1).foreach(println _)
```

This also applies to [`MatchDecoder`] instances:

```tut
"(1, true) and then (2, foo)".evalRegex[(Int, Boolean) \/ (Int, String)](rx"\((\d+), ([a-z]+)\)").foreach(println _)
```

## `Maybe` decoder

The `scalaz` module provides a [`GroupDecoder`] instance for [`Maybe`]: for any type `A` that has a [`GroupDecoder`]
instance, there exists a [`GroupDecoder`] instance for `Maybe[A]`.

```tut
"[123], []".evalRegex[Maybe[Int]](rx"\[(\d+)?\]", 1).foreach(println _)
```

The same is true for [`MatchDecoder`], although I can't really think of an example for this odd concept.

## Scalaz instances

The following instance for cats type classes are provided:

* [`Functor`] for all decoders ([`GroupDecoder`] and [`MatchDecoder`]).
* [`Order`] for all result types ([`DecodeResult`], [`RegexResult`] and [`CompileResult`]).
* [`Monoid`] for all result types.
* [`Show`] for all result types.
* [`Traverse`] for all result types.
* [`Monad`] for all result types.
* [`BiFunctor`] for all result types.

[`Functor`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Functor
[`BiFunctor`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Bifunctor
[`Order`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Order
[`Show`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Show
[`Traverse`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Show
[`Monad`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Monad
[`Monoid`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Monoid
[`\/`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.$bslash$div
[`Maybe`]:https://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz_2.11/7.2.3/scalaz_2.11-7.2.3-javadoc.jar/!/index.html#scalaz.Maybe
[`GroupDecoder`]:{{ site.baseurl }}/api/kantan/regex/package$$GroupDecoder.html
[`MatchDecoder`]:{{ site.baseurl }}/api/kantan/regex/package$$MatchDecoder.html
[`RegexResult`]:{{ site.baseurl}}/api/index.html#kantan.regex.package$$RegexResult
[`DecodeResult`]:{{ site.baseurl }}/api/kantan/regex/package$$DecodeResult.html
[`CompileResult`]:{{ site.baseurl }}/api/index.html#kantan.regex.package$$CompileResult


text:
# Class=20 (0x14) - Information

    CLASS1.INFORMATION

## Description

Most of the events below have an index parameter that can be used to indicate which of several SECO (sensor/control) units on a node originated the event. Set to zero if the node only control one item.

## Type=0 (0x00) - General event :id=type0
```VSCP_TYPE_INFORMATION_GENERAL```
General Event.
----

## Type=1 (0x01) - Button :id=type1
```VSCP_TYPE_INFORMATION_BUTTON```
A button has been pressed/released.

 | Data byte | Description                                                                                |
 | :---------: | -----------                                                                                |
 | 0         | Bits 0,1,2 If 0 the button has been released. If 1 the button is pressed. If equal to 2 this is a key value (press followed by release). Bits 3-7 is repeats 0-32. |
 | 1         | Zone for which event applies to (0-255). 255 is all zones                                                                                |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones                                                                                |
 | 3         | MSB of code for button.                                                                                |
 | 4         | LSB of code for button.                                                                                |
 | 5         | MSB of optional code-page.                                                                                |
 | 6         | LSB of optional code-page.                                                                                |

----

## Type=2 (0x02) - Mouse :id=type2
```VSCP_TYPE_INFORMATION_MOUSE```
A mouse movement has occurred.

 | Data byte | Description                                                                       |
 | :---------: | -----------                                                                       |
 | 0         | If zero absolute coordinates follow. If equal to one relative coordinates follow. |
 | 1         | Zone for which event applies to (0-255). 255 is all zones                         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones                 |
 | 3         | MSB of normalized X-coordinate.                                                   |
 | 4         | LSB of normalized X-coordinate.                                                   |
 | 5         | MSB of normalized Y-coordinate.                                                   |
 | 6         | LSB of normalized Y-coordinate.                                                   |

----

## Type=3 (0x03) - On :id=type3
```VSCP_TYPE_INFORMATION_ON```
A node indicates that a condition is in its on state. Heater on, lights on are two examples.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | index. Often used as an index for channels within a module.        |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=4 (0x04) - Off :id=type4
```VSCP_TYPE_INFORMATION_OFF```
A node indicates that a condition is in its off state. Heater off, lights off are two examples.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index.                                                             |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=5 (0x05) - Alive :id=type5
```VSCP_TYPE_INFORMATION_ALIVE```
A node tells the world that it is alive.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=6 (0x06) - Terminating :id=type6
```VSCP_TYPE_INFORMATION_TERMINATING```
A node tells the world that it is terminating.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

Byte2 Sub-zone for which event applies to (0-255). 255 is all sub-zones.

----

## Type=7 (0x07) - Opened :id=type7
```VSCP_TYPE_INFORMATION_OPENED```
A node indicates that an open has occurred. This can be a door/window open, a modem line open etc.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=8 (0x08) - Closed :id=type8
```VSCP_TYPE_INFORMATION_CLOSED```
A node indicates that a close has occurred. This can be a door/window close, a modem line closure etc.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=9 (0x09) - Node Heartbeat :id=type9
```VSCP_TYPE_INFORMATION_NODE_HEARTBEAT```
Heartbeats can be used to indicate that a unit is alive or to send periodic data. This can be sent out at predefined intervals to indicate that the node is alive, however, it does not necessarily mean the node is functioning as it should. It simply states that the node is connected to the network. To check if a node is functioning, other properties such as a measurement event or registry should be used. This event should be sent as a response to a “Segment Status Heartbeat” (CLASS1.PROTOCOL, Type=1) in order to provide a method of finding out what is connected to the network. The data bytes from byte 3 and forward can be used to send a descriptive/user friendly name if desired.

**Mandatory.** All nodes should send this event at least once each minute. A Level II node should normally not send this event but instead send [Level II node heartbeat](./class2.information.md#type2). Recommended interval is 30-60 seconds but in a node that need to sleep longer to save resources a longer interval can be used.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=10 (0x0A) - Below limit :id=type10
```VSCP_TYPE_INFORMATION_BELOW_LIMIT```
This indicates that the node has a condition that is below a configurable limit.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=11 (0x0B) - Above limit :id=type11
```VSCP_TYPE_INFORMATION_ABOVE_LIMIT```
This indicates that the node has a condition that is above a configurable limit.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=12 (0x0C) - Pulse :id=type12
```VSCP_TYPE_INFORMATION_PULSE```
This can be used for slow pulse counts. This can be an S0-pulse interface or something similar.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=13 (0x0D) - Error :id=type13
```VSCP_TYPE_INFORMATION_ERROR```
A node indicates that an error occurred.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=14 (0x0E) - Resumed :id=type14
```VSCP_TYPE_INFORMATION_RESUMED```
A node indicates that it has resumed operation.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=15 (0x0F) - Paused :id=type15
```VSCP_TYPE_INFORMATION_PAUSED```
A node indicates that it has paused.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=16 (0x10) - Sleeping :id=type16
```VSCP_TYPE_INFORMATION_SLEEP```
A node indicates that it entered a sleeping state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=17 (0x11) - Good morning :id=type17
```VSCP_TYPE_INFORMATION_GOOD_MORNING```
The system should enter its morning state. This can be a user pressing a button to set his/her house to its morning state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=18 (0x12) - Good day :id=type18
```VSCP_TYPE_INFORMATION_GOOD_DAY```
The system should enter its day state. This can be a user pressing a button to set his/her house to its day state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=19 (0x13) - Good afternoon :id=type19
```VSCP_TYPE_INFORMATION_GOOD_AFTERNOON```
The system should enter its afternoon state. This can be a user pressing a button to set his/her house to its afternoon state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=20 (0x14) - Good evening :id=type20
```VSCP_TYPE_INFORMATION_GOOD_EVENING```
The system should enter its evening state. This can be a user pressing a button to set his/her house to its evening state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=21 (0x15) - Good night :id=type21
```VSCP_TYPE_INFORMATION_GOOD_NIGHT```
The system should enter its night state. This can be a user pressing a button to set his/her house to its night state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=22 (0x16) - See you soon :id=type22
```VSCP_TYPE_INFORMATION_SEE_YOU_SOON```
The system should be on a temporary alert. This can be a user locking the door to go out to the waste bin or similar situation. An alarm system should not be activated in this situation.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=23 (0x17) - Goodbye :id=type23
```VSCP_TYPE_INFORMATION_GOODBYE```
The system should be on a goodbye alert. This can be a user locking the door to go out for a days work or similar situation. All alarm systems should be activated in this situation.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=24 (0x18) - Stop :id=type24
```VSCP_TYPE_INFORMATION_STOP```
A node indicates that a stop event occurred. This can for example be a motor stopping.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=25 (0x19) - Start :id=type25
```VSCP_TYPE_INFORMATION_START```
A node indicates that a start event occurred. This can be a motor starting.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=26 (0x1A) - ResetCompleted :id=type26
```VSCP_TYPE_INFORMATION_RESET_COMPLETED```
A node indicates that a reset occurred. This can be a node doing a warm start.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=27 (0x1B) - Interrupted :id=type27
```VSCP_TYPE_INFORMATION_INTERRUPTED```
A node indicates that a reset occurred. This can also be a node doing a warm start.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=28 (0x1C) - PreparingToSleep :id=type28
```VSCP_TYPE_INFORMATION_PREPARING_TO_SLEEP```
A node indicates that a sleep event occurred. This can be a node going to its inactive state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=29 (0x1D) - WokenUp :id=type29
```VSCP_TYPE_INFORMATION_WOKEN_UP```
A node indicates that a wakeup event occurred. This can be a node going to it awake state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=30 (0x1E) - Dusk :id=type30
```VSCP_TYPE_INFORMATION_DUSK```
A node indicates that the system should enter its dusk state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=31 (0x1F) - Dawn :id=type31
```VSCP_TYPE_INFORMATION_DAWN```
A node indicates that the system should enter its dawn state.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=32 (0x20) - Active :id=type32
```VSCP_TYPE_INFORMATION_ACTIVE```
A node indicates that its active.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=33 (0x21) - Inactive :id=type33
```VSCP_TYPE_INFORMATION_INACTIVE```
A node indicates that its inactive.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=34 (0x22) - Busy :id=type34
```VSCP_TYPE_INFORMATION_BUSY```
A node indicates that its busy.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=35 (0x23) - Idle :id=type35
```VSCP_TYPE_INFORMATION_IDLE```
A node indicates that its idle.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=36 (0x24) - Stream Data :id=type36
```VSCP_TYPE_INFORMATION_STREAM_DATA```
A steam of information from a node can be reported with this event. This can be a serial RS-232 channel or some other sequential stream.

 | Data byte | Description                                                                                |
 | :---------: | -----------                                                                                |
 | 0         | Sequence number which is increased by one for every new event with stream data. The sequence number is increased for every frame sent going from 0 - 255 and back to 0 and so on if needed. A new stream starts with a sequence number of 0. |
 | 1-7       | Stream data.                                                                                |

----

## Type=37 (0x25) - Token Activity :id=type37
```VSCP_TYPE_INFORMATION_TOKEN_ACTIVITY```
This event is used for cards, RFID's, iButtons, GSM phones and other identification devices. The event is generated when the token device is attached/detached to/from the system. Level II has a counterpart to this event that can take more data. CLASS2.INFORMATION Type=1

Depending on the Token device type a number of this event are sent on the segment with frame index increase for each event. The total expected number can be deduced from the type.

 | Data byte | Description                                                                                |
 | :---------: | -----------                                                                                |
 | 0         | Bit 0,1 - Event code. Bit 2-7 - Token device type code.                                          |
 | 1         | Zone.                                                                                |
 | 2         | Sub-zone.                                                                                |
 | 3         | Frame index (Increase by one for every frame sent out for one token activity. Start with zero ). |
 | 4-7       | Token data.                                                                                |

#####  Event codes

 | Code | Description           |
 | ---- | -----------           |
 | 0    | Touched and released. |
 | 1    | Touched.              |
 | 2    | Released.             |
 | 3    | Reserved.             |

##### Token device type codes

 | Code  | Description                                                                                | Size
 | ----  | -----------                                                                                | ----
 | 0     | Unknown Token.                                                                                | 128-bits |
 | 1     | iButton 64-bit token.                                                                                | 64-bits  |
 | 2     | RFID Token.                                                                                | 64-bits  |
 | 3     | RFID Token.                                                                                | 128-bits |
 | 4     | RFID Token.                                                                                | 256-bits |
 | 5-8   | Reserved.                                                                                |          |
 | 9     | ID/Credit card.                                                                                | 128-bits |
 | 10-15 | Reserved.                                                                                |          |
 | 16    | Biometric device.                                                                                | 256-bits |
 | 17    | Biometric device.                                                                                | 64-bits  |
 | 18    | Bluetooth device.                                                                                | 48-bits  |
 | 19    | GSM IMEI code (International Mobile Equipment Identity) AA-BBBBBB-CCCCCC-D packed in 64 bits. https://en.wikipedia.org/wiki/IMEI | 64-bits  |
 | 20    | GSM IMSI code (International Mobile Subscriber Identity) packed in 64 bits. https://en.wikipedia.org/wiki/IMSI                   | 64-bits  |
 | 21    | RFID Token.                                                                                | 40-bits  |
 | 22    | RFID Token.                                                                                | 32-bits  |
 | 23    | RFID Token.                                                                                | 24-bits  |
 | 24    | RFID Token.                                                                                | 16-bits  |
 | 25    | RFID Token.                                                                                | 8-bits   |
 | 26-63 | Reserved.                         |          |
----

## Type=38 (0x26) - Stream Data with zone :id=type38
```VSCP_TYPE_INFORMATION_STREAM_DATA_WITH_ZONE```
A steam of information from a node can be reported with this event. This can be a serial RS-232 channel or some other sequential stream.

 | Data byte | Description                                                                                |
 | :---------: | -----------                                                                                |
 | 0         | Zone.                                                                                |
 | 1         | Sub-zone.                                                                                |
 | 2         | Sequence number which is increased by one for every new event with stream data. The sequence number is increased for every frame sent going from 0 - 255 and back to 0 and so on if needed. A new stream starts with a sequence number of 0. |
 | 3-7       | Stream data.                                                                                |

----

## Type=39 (0x27) - Confirm :id=type39
```VSCP_TYPE_INFORMATION_CONFIRM```
This event can be used as a general confirm event for zoned and stream data.

 | Data byte | Description             |
 | :---------: | -----------           |
 | 0         | Zone.                   |
 | 1         | Sub-zone.               |
 | 2         | Sequence number byte    |
 | 3         | Class MSB.              |
 | 4         | Class LSB.              |
 | 5         | Type MSB.               |
 | 6         | Type LSB.               |

----

## Type=40 (0x28) - Level Changed :id=type40
```VSCP_TYPE_INFORMATION_LEVEL_CHANGED```
Response/confirmation from ex. a dimmer control after a dimmer command or some other unit that change a level.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Relative or absolute level.                                        |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=41 (0x29) - Warning :id=type41
```VSCP_TYPE_INFORMATION_WARNING```
 A node indicates that a warning condition occurred.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Relative or absolute level.                                        |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=42 (0x2A) - State :id=type42
```VSCP_TYPE_INFORMATION_STATE```
A node indicates that a state change has occurred. Th numerical ID for the current state and the state that is about to become active is supplied.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
 | 3         | State changed from.                                                |
 | 4         | New State.                                                         |

----

## Type=43 (0x2B) - Action Trigger :id=type43
```VSCP_TYPE_INFORMATION_ACTION_TRIGGER```
A node indicates that an action has been triggered by this event.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Action ID.                                                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=44 (0x2C) - Sunrise :id=type44
```VSCP_TYPE_INFORMATION_SUNRISE```
A node indicates that sunrise is detected/calculated.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=45 (0x2D) - Sunset :id=type45
```VSCP_TYPE_INFORMATION_SUNSET```
A node indicates that sunset is detected/calculated.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=46 (0x2E) - Start of record :id=type46
```VSCP_TYPE_INFORMATION_START_OF_RECORD```
This event is used to mark the start of a multi-frame data transfer. This can typically be a GPS received which sends a train of events from one GPS record. The index byte can be used to distinguish record between each other.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for record.                                                  |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
 | 3         | Number of frames to follow or zero for not used.                   |

----

## Type=47 (0x2F) - End of record :id=type47
```VSCP_TYPE_INFORMATION_END_OF_RECORD```
This event is used to mark the end of a multi-frame data transfer. The index byte can be used to distinguish record between each other.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for record.                                                  |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=48 (0x30) - Pre-set active :id=type48
```VSCP_TYPE_INFORMATION_PRESET_ACTIVE```
This event is used to tell the system that a pre-set configuration is active. Usually a response from a node after a CLASS1.CONTROL, Type=28 has been received by a node.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
 | 3         | Code for pre-set that has been set.                                |

----

## Type=49 (0x31) - Detect :id=type49
```VSCP_TYPE_INFORMATION_DETECT```
This event is used to tell the system that a detection of some kind has occurred.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index.                                                             |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

The first byte is used as an index if a module have several channels or detectors.

----

## Type=50 (0x32) - Overflow :id=type50
```VSCP_TYPE_INFORMATION_OVERFLOW```
This event is used to tell the system that an overflow of some kind has occurred.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index.                                                             |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

The first byte is used as an index if a module have several channels or detectors.

----

## Type=51 (0x33) - Big level changed :id=type51
```VSCP_TYPE_INFORMATION_BIG_LEVEL_CHANGED```
This is meant to be used as a confirmation event for CLASS1.CONTROL, Type=33 events.

 | Data byte | Description                                                                                |
 | :---------: | -----------                                                                                |
 | 0         | Index.                                                                                |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.                                                |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones.                                        |
 | 3,4,5,6,7 | Level as signed Integer. The range can be adjusted by the user by sending the needed number of bytes 1-5. |

----

## Type=52 (0x34) - Civil sunrise twilight time :id=type52
```VSCP_TYPE_INFORMATION_SUNRISE_TWILIGHT_START```
Civil twilight is the period when the Sun is below the horizon but its center is less than 6 degrees below. The "Civil Twilight Starts" time is the dawn or civil dawn, with the center of the Sun at exactly 6 degrees below the horizon. Equally, the "Civil Twilight Ends" time is dusk or civil dusk, when the Sun is 6 degrees below the horizon in the evening.

During civil twilight, the sky is still illuminated, and with clear weather it is brightest in the direction of the Sun. The Moon and the brightest stars and planets may be visible. It is usually bright enough for outdoor activities without additional lighting.

Near the equator, where the Sun sets and rises in an almost vertical direction, the civil twilight period can last only 21 minutes, a very fast nightfall compared to the much longer periods at southern and northern latitudes. In regions north of 60°24' N or south of 60°24' S, there will be at least one night when it does not get darker than this.

Technically, the start and end times are when the true geocentric position of the Sun is 96 degrees from the zenith position.

A node indicates that sunrise twilight time is detected/calculated.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=53 (0x35) - Civil sunset twilight time :id=type53
```VSCP_TYPE_INFORMATION_SUNSET_TWILIGHT_START```
A node indicates that sunset twilight time is detected/calculated.

Civil twilight is the period when the Sun is below the horizon but its center is less than 6 degrees below. The "Civil Twilight Starts" time is the dawn or civil dawn, with the center of the Sun at exactly 6 degrees below the horizon. Equally, the "Civil Twilight Ends" time is dusk or civil dusk, when the Sun is 6 degrees below the horizon in the evening.

During civil twilight, the sky is still illuminated, and with clear weather it is brightest in the direction of the Sun. The Moon and the brightest stars and planets may be visible. It is usually bright enough for outdoor activities without additional lighting.

Near the equator, where the Sun sets and rises in an almost vertical direction, the civil twilight period can last only 21 minutes, a very fast nightfall compared to the much longer periods at southern and northern latitudes. In regions north of 60°24' N or south of 60°24' S, there will be at least one night when it does not get darker than this.

Technically, the start and end times are when the true geocentric position of the Sun is 96 degrees from the zenith position.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=54 (0x36) - Nautical sunrise twilight time :id=type54
```VSCP_TYPE_INFORMATION_NAUTICAL_SUNRISE_TWILIGHT_START```
A node indicates that nautical sunrise twilight time is detected/calculated.

Nautical twilight is the period when the center of the Sun is between 6 and 12 degrees below the horizon, when bright stars are still visible in clear weather and the horizon is becoming visible. It is too dark to do outdoor activities without additional lighting.

In the morning, nautical twilight starts at nautical dawn, when the Sun rises above 12 degrees below the horizon; it ends when the Sun's center reaches 6 degrees below the horizon. In the evening, nautical twilight begins when the Sun sinks below 6 degrees; it ends at nautical dusk, when the Sun is lower than 12 degrees below the horizon.

For locations north of 54°34' N or south of 54°34' S latitude, the Sun will never be lower than 12 degrees below the horizon for a period in the summer.

Technically, the start and end times are when the true geocentric position of the Sun is 102 degrees from the zenith position.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=55 (0x37) - Nautical sunset twilight time :id=type55
```VSCP_TYPE_INFORMATION_NAUTICAL_SUNSET_TWILIGHT_START```
A node indicates that nautical sunset twilight time is detected/calculated.

Nautical twilight is the period when the center of the Sun is between 6 and 12 degrees below the horizon, when bright stars are still visible in clear weather and the horizon is becoming visible. It is too dark to do outdoor activities without additional lighting.

In the morning, nautical twilight starts at nautical dawn, when the Sun rises above 12 degrees below the horizon; it ends when the Sun's center reaches 6 degrees below the horizon. In the evening, nautical twilight begins when the Sun sinks below 6 degrees; it ends at nautical dusk, when the Sun is lower than 12 degrees below the horizon.

For locations north of 54°34' N or south of 54°34' S latitude, the Sun will never be lower than 12 degrees below the horizon for a period in the summer.

Technically, the start and end times are when the true geocentric position of the Sun is 102 degrees from the zenith position.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=56 (0x38) - Astronomical sunrise twilight time :id=type56
```VSCP_TYPE_INFORMATION_ASTRONOMICAL_SUNRISE_TWILIGHT_START```
A node indicates that astronomical sunrise twilight time is detected/calculated.

Astronomical twilight is the period when the center of the Sun is between 12 and 18 degrees below the horizon. It starts at astronomical dawn, early in the morning when the Sun is higher than 18 degrees below the horizon. From this point, it will be difficult to observe certain faint stars, galaxies, and other objects because the Sun starts to illuminate the sky. Astronomical twilight ends at astronomical dusk in the late evening, when those faint objects again can be visible because the Sun is lower than 18 degrees below the horizon. In locations north of 48°24' N or south of 48°24', it never gets darker than this near the middle of the summer solstice (June or December).

Technically, the start and end times are when the true geocentric position of the Sun is 108 degrees from the zenith position, or directly above the observer.

Astronomical twilight is the period when the center of the Sun is between 12 and 18 degrees below the horizon.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=57 (0x39) - Astronomical sunset twilight time :id=type57
```VSCP_TYPE_INFORMATION_ASTRONOMICAL_SUNSET_TWILIGHT_START```
A node indicates that astronomical sunset twilight time is detected/calculated.

Astronomical twilight is the period when the center of the Sun is between 12 and 18 degrees below the horizon. It starts at astronomical dawn, early in the morning when the Sun is higher than 18 degrees below the horizon. From this point, it will be difficult to observe certain faint stars, galaxies, and other objects because the Sun starts to illuminate the sky. Astronomical twilight ends at astronomical dusk in the late evening, when those faint objects again can be visible because the Sun is lower than 18 degrees below the horizon. In locations north of 48°24' N or south of 48°24', it never gets darker than this near the middle of the summer solstice (June or December).

Technically, the start and end times are when the true geocentric position of the Sun is 108 degrees from the zenith position, or directly above the observer.

Astronomical twilight is the period when the center of the Sun is between 12 and 18 degrees below the horizon.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | User specified.                                                    |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=58 (0x3A) - Calculated Noon :id=type58
```VSCP_TYPE_INFORMATION_CALCULATED_NOON```
This event is used for reporting of a calculated noon (real noon).

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=59 (0x3B) - Shutter up :id=type59
```VSCP_TYPE_INFORMATION_SHUTTER_UP```
Shutter is moving up.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=60 (0x3C) - Shutter down :id=type60
```VSCP_TYPE_INFORMATION_SHUTTER_DOWN```
Shutter is moving down.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=61 (0x3D) - Shutter left :id=type61
```VSCP_TYPE_INFORMATION_SHUTTER_LEFT```
Shutter is moving left.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=62 (0x3E) - Shutter right :id=type62
```VSCP_TYPE_INFORMATION_SHUTTER_RIGHT```
Shutter is moving right.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=63 (0x3F) - Shutter reached top end :id=type63
```VSCP_TYPE_INFORMATION_SHUTTER_END_TOP```
Shutter reached top end.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=64 (0x40) - Shutter reached bottom end :id=type64
```VSCP_TYPE_INFORMATION_SHUTTER_END_BOTTOM```
Shutter reached bottom end.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=65 (0x41) - Shutter reached middle end :id=type65
```VSCP_TYPE_INFORMATION_SHUTTER_END_MIDDLE```
Shutter reached middle end.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=66 (0x42) - Shutter reached preset end :id=type66
```VSCP_TYPE_INFORMATION_SHUTTER_END_PRESET```
Shutter reached preset end.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=67 (0x43) - Shutter reached preset left :id=type67
```VSCP_TYPE_INFORMATION_SHUTTER_END_LEFT```
Shutter reached preset left.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=68 (0x44) - Shutter reached preset right :id=type68
```VSCP_TYPE_INFORMATION_SHUTTER_END_RIGHT```
Shutter reached preset right.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Reserved.                                                          |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=69 (0x45) - Long click :id=type69
```VSCP_TYPE_INFORMATION_LONG_CLICK```
Long click detected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device generating long click. Set to zero if not used.   |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=70 (0x46) - Single click :id=type70
```VSCP_TYPE_INFORMATION_SINGLE_CLICK```
Single click detected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device generating single click. Set to zero if not used. |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=71 (0x47) - Double click :id=type71
```VSCP_TYPE_INFORMATION_DOUBLE_CLICK```
Double click detected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device generating double click. Set to zero if not used. |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=72 (0x48) - Date :id=type72
```VSCP_TYPE_INFORMATION_DATE```
A device generated a date event. Time is UTC.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device generating date. Set to zero if not used.         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
 | 3         | year century                                                       |
 | 4         | year                                                               |
 | 5         | month (1-12)                                                       |
 | 6         | day (1-31)                                                         |

See also [CLASS1.INFORMATION, Type=77](./class1.information.md#type77) which combines date and time in one event.

----

## Type=73 (0x49) - Time :id=type73
```VSCP_TYPE_INFORMATION_TIME```
A device generated a time event. Time is UTC.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device generating time. Set to zero if not used.         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
 | 3         | Hour (0-23)                                                        |
 | 4         | minutes (0-59)                                                     |
 | 5         | seconds (0-60)                                                     |
 | 6         | milliseconds MSB (0-999)                                           |
 | 7         | milliseconds LSB (0-999)                                           |

See also [CLASS1.INFORMATION, Type=77](./class1.information.md#type77) which combines date and time in one event.

----

## Type=74 (0x4A) - Weekday :id=type74
```VSCP_TYPE_INFORMATION_WEEKDAY```
A device generated a weekday event.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device generating weekday info. Set to zero if not used. |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
 | 3         | Weekday ( 0 (Monday) - 6 (Sunday))                                 |

----

## Type=75 (0x4B) - Lock :id=type75
```VSCP_TYPE_INFORMATION_LOCK```
A device got locked.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=76 (0x4C) - Unlock :id=type76
```VSCP_TYPE_INFORMATION_UNLOCK```
A device got unlocked.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=77 (0x4D) - DateTime :id=type77
```VSCP_TYPE_INFORMATION_DATETIME```
A device generated a date/time event. Time is UTC.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
 | 3 - 7     | Date/time in  five byte bit array.                                 |

**Bitfields**

 | Year  | Month | Day   | Hour  | Minute | Second |
 | :----:  | :-----: | :---:   | :----:  | :------: | :------: |
 | 26-37 | 22-25 | 17-21 | 12-16 | 6-11   | 0-5    |

Bit 39 is bit 7 of data byte 4. Bit 0 is bit 0 of data byte 7.

Bit 39 and bit 38 is reserved.

** Valid values**

 | Item    | Value range |
 | :----:    | :-----------: |
 | Year    | 0-4095      |
 | Month   | 1-12        |
 | Day     | 1-31        |
 | Hour    | 0-23        |
 | Minute  | 0-59        |
 | Seconds | 0-59        |

----

## Type=78 (0x4E) - Rising :id=type78
```VSCP_TYPE_INFORMATION_RISING```
A rising (edge) is detected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=79 (0x4F) - Falling :id=type79
```VSCP_TYPE_INFORMATION_FALLING```
A falling (edge) is detected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=80 (0x50) - Updated :id=type80
```VSCP_TYPE_INFORMATION_UPDATED```
Something has been updated.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=81 (0x51) - Connect :id=type81
```VSCP_TYPE_INFORMATION_CONNECT```
Something has been connected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=82 (0x52) - Disconnect :id=type82
```VSCP_TYPE_INFORMATION_DISCONNECT```
Something has been disconnected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=83 (0x53) - Reconnect :id=type83
```VSCP_TYPE_INFORMATION_RECONNECT```
Something has been reconnected.

 | Data byte | Description                                                        |
 | :---------: | -----------                                                        |
 | 0         | Index for device. Set to zero if not used.                         |
 | 1         | Zone for which event applies to (0-255). 255 is all zones.         |
 | 2         | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=84 (0x54) - Enter :id=type84
```VSCP_TYPE_INFORMATION_ENTER```
Enter, something has been entered.

 | Data byte | Description |
 | :---------: | ----------- |
 | 0 | Index for device. Set to zero if not used. |
 | 1 | Zone for which event applies to (0-255). 255 is all zones. |
 | 2 | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

## Type=85 (0x55) - Exit :id=type85
```VSCP_TYPE_INFORMATION_EXIT```
Exit, something has been exited.

 | Data byte | Description |
 | :---------: | ----------- |
 | 0 | Index for device. Set to zero if not used.|
 | 1 | Zone for which event applies to (0-255). 255 is all zones. |
 | 2 | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |

----

[filename](./bottom_copyright.md ':include')

repository: troky/vscp-classes

repo_name: troky/vscp-classes