- 1 General
- 2 Control
- 3 NLP
- 4 Bots
- 5 Keyword detection
- 6 Virtual assistant
- 7 Hardware
- 8 Web
- 9 Growing
- https://en.wikipedia.org/wiki/X10_(industry_standard) - a protocol for communication among electronic devices used for home automation (domotics). It primarily uses power line wiring for signaling and control, where the signals involve brief radio frequency bursts representing digital information. A wireless radio based protocol transport is also defined. X10 was developed in 1975 by Pico Electronics of Glenrothes, Scotland, in order to allow remote control of home devices and appliances. It was the first general purpose domotic network technology and remains the most widely available. Although a number of higher bandwidth alternatives exist, X10 remains popular in the home environment with millions of units in use worldwide, and inexpensive availability of new components.
- https://en.wikipedia.org/wiki/xPL_Protocol - an open protocol intended to permit the control and monitoring of home automation devices. The primary design goal of xPL is to provide a rich set of features and functionality, whilst maintaining an elegant, uncomplicated message structure. The protocol includes complete discovery and auto-configuration capabilities which support a fully "plug-n-play" architecture - essential to ensure a good end-user experience. xPL benefits from a strongly specified message structure, required to ensure that xPL-enabled devices from different vendors are able to communicate without the risk of incompatibilities. Communications between xPL applications on a Local Area Network (LAN) use UDP on port 3865. xPL development has primarily occurred in the DIY community, where users have written connecting software to existing protocols and devices. Some examples include bridges to other home automation protocols like Z-Wave and UPB. Commercially, the Logitech SqueezeCenter software for the Squeezebox supports xPL.
- PiHAT - Rasberry Pi Home Automation Transmitter
- https://github.com/s7mx1/pihat - cloned from original pihat, cloned from original pihat
- WallPanel - an Android application for Web Based Dashboards and Home Automation Platforms.
See also Dataflow
- openHAB - a vendor and technology agnostic open source automation software for your home
- https://github.com/hollie/misterhouse - Perl open source home automation program. It's fun, it's free, and it's entirely geeky.
- https://github.com/nfarina/homebridge - a lightweight NodeJS server you can run on your home network that emulates the iOS HomeKit API. It supports Plugins, which are community-contributed modules that provide a basic bridge from HomeKit to various 3rd-party APIs provided by manufacturers of "smart home" devices.
- Home Assistant - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.
- https://github.com/frenck/awesome-home-assistant - A curated list of amazingly awesome Home Assistant resources.
- Hass.io - turns your Raspberry Pi (or another device) into the ultimate home automation hub powered by Home Assistant. With Hass.io you can focus on integrating your devices and writing automations.
See also Speech
- https://en.wikipedia.org/wiki/Natural_language_processing - a subfield of linguistics, computer science, information engineering, and artificial intelligence concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of natural language data.Challenges in natural language processing frequently involve speech recognition, natural language understanding, and natural language generation.
- https://en.wikipedia.org/wiki/History_of_natural_language_processing - describes the advances of natural language processing (Outline of natural language processing). There is some overlap with the history of machine translation, the history of speech recognition, and the history of artificial intelligence.
- https://en.wikipedia.org/wiki/Natural-language_understanding - or natural-language interpretation (NLI) is a subtopic of natural-language processing in artificial intelligence that deals with machine reading comprehension. Natural-language understanding is considered an AI-hard problem. There is considerable commercial interest in the field because of its application to automated reasoning, machine translation, question answering, news-gathering, text categorization, voice-activation, archiving, and large-scale content analysis.
- https://en.wikipedia.org/wiki/Natural-language_generation - a software process that transforms structured data into natural language. It can be used to produce long form content for organizations to automate custom reports, as well as produce custom content for a web or mobile application. It can also be used to generate short blurbs of text in interactive conversations (a chatbot) which might even be read out by a text-to-speech system.Automated NLG can be compared to the process humans use when they turn ideas into writing or speech. Psycholinguists prefer the term language production for this process, which can also be described in mathematical terms, or modeled in a computer for psychological research. NLG systems can also be compared to translators of artificial computer languages, such as decompilers or transpilers, which also produce human-readable code generated from an intermediate representation. Human languages tend to be considerably more complex and allow for much more ambiguity and variety of expression than programming languages, which makes NLG more challenging.
- TextBlob - a Python (2 and 3) library for processing textual data. It provides a simple API for diving into common natural language processing (NLP) tasks such as part-of-speech tagging, noun phrase extraction, sentiment analysis, classification, translation, and more.
- https://github.com/neilgupta/Sherlock - parses events written in plain English, and returns an object defining a basic event.
- Tutorial: Computational modelling of metaphor | EACL 2014 - Metaphor processing is a rapidly growing area in NLP. The ubiquity of metaphor in language has been established in a number of corpus studies and the role it plays in human reasoning has been confirmed in psychological experiments. This makes metaphor an important research area for computational and cognitive linguistics, and its automatic identification and interpretation indispensable for any semanticsoriented NLP application. The tutorial is targeted both at NLP researchers who are new to metaphor and need a comprehensive overview of metaphor processing techniques and applications, as well as at scientists working in the field who want to stay up to date on the recent advances in metaphor research.
- languagengine - Blog - What Happened to Old School NLP? - For the last 25 or so years, NLP has consisted almost entirely of fairly simple statistical models of language have prevailed. Rather than using carefully built grammars and fancy parsers, rather than trying to build systems that rely on linguistics, instead modern NLP tries to learn as much as possible from scratch. NLP research is now, essentially, just a branch of machine learning rather than a branch of linguistics. What happened? 
- -1803.11175- Universal Sentence Encoder - We present models for encoding sentences into embedding vectors that specifically target transfer learning to other NLP tasks. The models are efficient and result in accurate performance on diverse transfer tasks. Two variants of the encoding models allow for trade-offs between accuracy and compute resources. For both variants, we investigate and report the relationship between model complexity, resource consumption, the availability of transfer task training data, and task performance. Comparisons are made with baselines that use word level transfer learning via pretrained word embeddings as well as baselines do not use any transfer learning. We find that transfer learning using sentence embeddings tends to outperform word level transfer. With transfer learning via sentence embeddings, we observe surprisingly good performance with minimal amounts of supervised training data for a transfer task. We obtain encouraging results on Word Embedding Association Tests (WEAT) targeted at detecting model bias. Our pre-trained sentence encoding models are made freely available for download and on TF Hub. 
- https://github.com/zalandoresearch/flair - A very simple framework for state-of-the-art Natural Language Processing (NLP) 
- Metacat - a computer model of analogy-making and perception that builds on the foundations of an earlier model called Copycat. Copycat was originally developed by Douglas Hofstadter and Melanie Mitchell as part of a research program aimed at computationally modeling the fundamental mechanisms underlying human thought processes. Central to the philosophy of this research is the belief that the mind's ability to perceive connections between apparently dissimilar things, and to make analogies based on these connections, lies at the heart of intelligence. According to this view, to understand the analogical mechanisms of thinking and perception is to understand the source of the remarkable fluidity of the human mind, including its hidden wellsprings of creativity.
Like Copycat, Metacat operates in an idealized world of analogy problems involving short strings of letters. Although the program understands only a limited set of concepts about its letter-string world, its emergent processing mechanisms give it considerable flexibility in recognizing and applying these concepts in a wide variety of situations. The program's high-level behavior emerges in a bottom-up manner from the collective actions of many small nondeterministic processing agents (called codelets) working in parallel, in much the same way that an ant colony's high-level behavior emerges from the individual behaviors of the underlying ants, without any central executive directing the course of events.
Metacat focuses on the issue of self-watching: the ability of a system to perceive and respond to patterns that arise not only in its immediate perceptions of the world, but also in its own processing of those perceptions. Copycat lacked such an "introspective" capacity, and consequently lacked insight into how it arrived at its answers. It was unable to notice similarities between analogies, or to explain the differences between them or why one might be considered to be better or worse than another. In contrast, Metacat's self-watching mechanisms enable it to create much richer representations of analogies, allowing it to compare and contrast answers in an insightful way. Furthermore, it is able to recognize, remember, and recall patterns that occur in its own "train of thought" as it makes analogies. For instance, by monitoring its own processing, Metacat can often recognize when it has fallen into a repetitive cycle of behavior, enabling it to break out of its "rut" and try something else. 
See also IRC#Bots
Microsoft Bot Framework
- Microsoft Bot Framework - A comprehensive framework for building enterprise-grade conversational AI experiences. 
- Rasa Core - robot open source chatbot framework with machine learning-based dialogue management - Build contextual AI assistants
- Wit.ai - makes it easy for developers to build applications and devices that you can talk or text to. Our vision is to empower developers with an open and extensible natural language platform. Wit.ai learns human language from every interaction, and leverages the community: what's learned is shared across developers.
- SUSI.AI - Open Source Artificial Intelligence for Personal Assistants, Robots, Help Desks and Chatbots.
- Porcupine - On-device wake word (a.k.a. keyword spotting, trigger word detection, hotword detection, and voice command) detection engine powered by deep learning trained in real-world situations. It enables developers to build always-listening voice-enabled applications. Compact and computationally-efficient making it suitable for IoT. It can run with as low as 20 KB RAM on an MCU. It is implemented in fixed-point ANSI C. Currently Raspberry Pi (all variants), Beagle Bone, Android, iOS, watchOS, Linux (x86_64), Mac, Windows, and web browsers WebAssembly) are supported. Furthermore, Support for various ARM Cortex-A and ARM Cortex-M processors and DSP cores is available for commercial customers. It can detect multiple (possibly many) voice commands concurrently with no added CPU/memory footprint. Developers are empowered to choose from a set of predefined wake phrases on different platforms and use them for free. In addition, developers can generate custom wake phrases using Picovoice Console (subject to certain limitations and only on Linux, Mac, or Windows) for non-commercial, personal, and evaluation-only purposes.
- Jasper - an open source platform for developing always-on, voice-controlled applications 
- https://github.com/nickoala/judy - Simplified Voice Control on Raspberry Pi, fork of Jasper, undeveloped
- Naomi - An open source platform for developing always-on, voice-controlled applications. Based on the previous work from Jasper.
- Mycroft Mycroft - the world’s first open source assistant. Mycroft runs anywhere – on a desktop computer, inside an automobile, or on a Raspberry Pi. This is open source software which can be freely remixed, extended, and improved. Mycroft may be used in anything from a science project to an enterprise software application.
- https://github.com/MycroftAI/mycroft-precise - A lightweight, simple-to-use, RNN wake word listener
- Kalliope - a modular always-on voice controlled personal assistant designed for home automation.
- https://github.com/DragonComputer/Dragonfire - the open-source virtual assistant for Ubuntu based Linux distributions
- Almond - The Open, Privacy-Preserving Virtual Assistant. Almond translates your commands into a personalized program.
- Leon - an open-source personal assistant who can live on your server. He does stuff when you ask for it. You can talk to him and he can talk to you. You can also text him and he can also text you. If you want to, Leon can communicate with you by being offline to protect your privacy.
- Stephanie - an open-source platform built specifically for voice-controlled applications as well as to automate daily tasks imitating much of a virtual assistant's work.
- Rhasspy - (pronounced RAH-SPEE) is an open source, fully offline voice assistant toolkit for many languages that works well with Home Assistant, Hass.io, and Node-RED. 
- https://github.om/rob-mccann/Pi-Voice - The beginnings of a Star Trek-like computer. Run the program, speak into your microphone and hear the response from your speakers. Undeveloped.
- https://github.com/alexa-pi/AlexaPi - a client for Amazon's Alexa service. It is intended and tested to run on a wide range of platforms, such as Raspberry Pi, Orange Pi, CHIP and ordinary Linux or Windows desktops. Undeveloped.
- https://github.com/respeaker/avs - python implementation of alexa voice service app, 支持DuerOS
- https://github.com/alexa/avs-device-sdk - An SDK for commercial device makers to integrate Alexa directly into connected products.
- https://github.com/ItsWendell/google-assistant-desktop-client - A Cross-Platform client for Google Assistant, written in NodeJS / Electron.
- 2018-04-20: Making a Window Manager (part 1) - You know what happens in the office, usually late in the afternoon? That’s right! Exactly when you’re at the peak of productivity, Mr. Sun basically slams into your window and mocks you. In the face. You could raise from the chair and turn the shades, I guess. You could. But I can not. I need an automatic sun-b-gone mechanism! Something smart, IOT and with blockchain technology. A true Window Manager™. Can we make it using only assorted junk found on the desk? Looking through the stuff I think I see a small stepper and some micros… I believe We Can
- The Adaptive House - Michael C. Mozer
- https://github.com/gmag11/EnigmaIOT - an open source solution for wireless multi sensor systems. It has two main components, multiple nodes and one gateway.A number of nodes with one or more sensors each one communicate in a secure way to a central gateway in a star network using EnigmaIoT protocol.
See also Lighting#Bulbs
- https://github.com/xoseperez/espurna - a custom firmware for ESP8285/ESP8266 based smart switches, lights and sensors. It uses the Arduino Core for ESP8266 framework and a number of 3rd party libraries.
- https://github.com/arendst/Tasmota - Alternative Firmware for ESP8266 based devices like itead Sonoff, with Web, Timers, OTA, MQTT, KNX and Sensors Support, to be used on Smart Home Systems. Written for Arduino IDE and PlatformIO
- https://gitlab.com/stavros/espota-server - an HTTP server that can hold firmware for flashing with the ESP8266 Arduino firmware. It's useful when you have many ESP8266-based devices in the field and want them to download their own firmware to update themselves, rather than you having to push firmware to each one separately.The main difference between the espota-server and any other HTTP server is that it only serves firmware to the device if there's a newer version of the firmware available. If there's no newer version, it just responds with a "no new version" and the device goes on its merry way.
Espressif Audio Development Framework
- https://github.com/espressif/esp-adf - supports development of audio applications for the Espressif Systems ESP32 chip in the most comprehensive way. With ESP-ADF, you can easily add features, develop audio applications from simple to complex: Music player or recorder supports audio formats such as MP3, AAC, FLAC, WAV, OGG, OPUS, AMR, TS, EQ, Downmixer, Sonic, ALC, G.711... Play music from sources: HTTP, HLS (HTTP Live Streaming), SPIFFS, SDCARD, A2DP-Source, A2DP-Sink, HFP ... Integrate Media services such as: DLNA, VoIP ... Internet Radio; Voice recognition and integration with online services such as Alexa, DuerOS, ...
- https://github.com/karawin/Ka-Radio - A wifi webradio with only low cost boards ESP8266 and VS1053
- https://github.com/vedranMv/Ka-Radio32 - Fork of Ka-Radio (karawin/Ka-Radio) which implements both internet radio and bluetooth speaker allowing you to seamlesly switch between the two on-the-fly
See also WebDev
- Huginn is a system for building agents that perform automated tasks for you online. They can read the web, watch for events, and take actions on your behalf. Huginn's Agents create and consume events, propagating them along a directed event flow graph. Think of it as Yahoo! Pipes plus IFTTT on your own server. 
- Open Ag Toolkit - Precision Farm Management. Android software for agriculture management that improvs the way farmers are able to collect and use information.
- Open Ag Toolkit - Precision Farm Management. We want to make it easier to manage farms by improving the way farmers are able to collect and use information. So, we're writing some simple, free, open-source mobile apps that sync across everyone on a farm through existing cloud services like Trello and Dropbox.
- BuckyBox - powering your local food enterprise. We have built all of your daily operations into a simple to use web app that customers love and which saves you time. Bucky Box is open-source software, we charge for hosting only. Technical support is not included and billed separately.
- Open Sprayer - An autonomous land drone crop sprayer