vtally
Version:
An affordable and reliable Tally Light that works via WiFi based on NodeMCU / ESP8266. Supports multiple video mixers.
604 lines (337 loc) • 19.3 kB
HTML
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="A low-cost, high-reliable Open Source WiFi Tally Light">
<link rel="canonical" href="https://wifi-tally.github.io/index.html">
<link rel="icon" href="images/favicon.png">
<meta name="generator" content="mkdocs-1.2.3, mkdocs-material-8.1.9">
<title>vTally – Open Source Tally Light</title>
<link rel="stylesheet" href="assets/stylesheets/main.2b4465f4.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.e6a45f82.min.css">
<script>__md_scope=new URL(".",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#open-source-tally-light" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="index.html" title="vTally – Open Source Tally Light" class="md-header__button md-logo" aria-label="vTally – Open Source Tally Light" data-md-component="logo">
<img src="images/logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
vTally – Open Source Tally Light
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Open Source Tally Light
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/wifi-tally/wifi-tally/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="index.html" title="vTally – Open Source Tally Light" class="md-nav__button md-logo" aria-label="vTally – Open Source Tally Light" data-md-component="logo">
<img src="images/logo.png" alt="logo">
</a>
vTally – Open Source Tally Light
</label>
<div class="md-nav__source">
<a href="https://github.com/wifi-tally/wifi-tally/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Open Source Tally Light
<span class="md-nav__icon md-icon"></span>
</label>
<a href="index.html" class="md-nav__link md-nav__link--active">
Open Source Tally Light
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
Features
</a>
</li>
<li class="md-nav__item">
<a href="#supported-video-mixers" class="md-nav__link">
Supported Video Mixers
</a>
</li>
<li class="md-nav__item">
<a href="#get-started" class="md-nav__link">
Get Started
</a>
</li>
<li class="md-nav__item">
<a href="#download" class="md-nav__link">
Download
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="download.html" class="md-nav__link">
Installation
</a>
</li>
<li class="md-nav__item">
<a href="protocol.html" class="md-nav__link">
Protocol
</a>
</li>
<li class="md-nav__item">
<a href="tally.html" class="md-nav__link">
Tally
</a>
</li>
<li class="md-nav__item">
<a href="troubleshooting.html" class="md-nav__link">
Troubleshooting
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6">
Getting started
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Getting started" data-md-level="1">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Getting started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="getting-started/index.html" class="md-nav__link">
Getting started
</a>
</li>
<li class="md-nav__item">
<a href="getting-started/setup-hub.html" class="md-nav__link">
Set up the hub
</a>
</li>
<li class="md-nav__item">
<a href="getting-started/setup-web-tally.html" class="md-nav__link">
Set up a Web Tally
</a>
</li>
<li class="md-nav__item">
<a href="getting-started/setup-wifi-tally.html" class="md-nav__link">
Build and set up a WiFi Tally
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
Features
</a>
</li>
<li class="md-nav__item">
<a href="#supported-video-mixers" class="md-nav__link">
Supported Video Mixers
</a>
</li>
<li class="md-nav__item">
<a href="#get-started" class="md-nav__link">
Get Started
</a>
</li>
<li class="md-nav__item">
<a href="#download" class="md-nav__link">
Download
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/wifi-tally/wifi-tally/edit/master/documentation/docs/index.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
</a>
<h1 id="open-source-tally-light">Open Source Tally Light<a class="headerlink" href="#open-source-tally-light" title="Permanent link">¶</a></h1>
<p>vTally is an Open Source Wifi Tally Light based on the ESP8266.</p>
<p>It aims to be affordable without sacrificing reliability and works with most
common video mixers.</p>
<p>Its architecture uses a central Hub that connects the tallies to the video mixer and
allows easy configuration and monitoring.</p>
<p><img alt="Architecture Setup" src="images/architecture.png" />
<span style="font-size:smaller;opacity:0.8">uses icons from the Noun Project by
<a href="https://thenounproject.com/browse/?i=3151803">Eucalyp</a>,
<a href="https://thenounproject.com/browse/?i=1294543">Atif Arshad</a>,
<a href="https://thenounproject.com/browse/?i=1637910">priyanka</a>,
<a href="https://thenounproject.com/browse?i=3014911">Hrbon</a> and
<a href="https://thenounproject.com/browse/?i=1086042">ProSymbols</a>, all licensed <a href="https://creativecommons.org/licenses/by/3.0/us/legalcode">CC-BY-3.0</a></span></p>
<p><img alt="Tally Hub" src="images/tally-hub.png" /></p>
<h2 id="features">Features<a class="headerlink" href="#features" title="Permanent link">¶</a></h2>
<ul>
<li>WiFi Tally Light based on the ESP8266</li>
<li>Hardware costs of about 10€</li>
<li>flexible USB power (battery pack, camera outlet, stationary)</li>
<li>Fast communication and lightweight protocol</li>
<li>uses a central Hub to communicate, that allows easy monitoring</li>
<li>utilizes your local network and access points</li>
<li>support for RGB Leds (anode, cathode), WS2812, NeoPixel, etc</li>
<li>alternatively: turn any device with a browser (smartphone, tablet) into a Tally</li>
<li>Open Source / Open Hardware</li>
</ul>
<h2 id="supported-video-mixers">Supported Video Mixers<a class="headerlink" href="#supported-video-mixers" title="Permanent link">¶</a></h2>
<ul>
<li><a href="https://www.blackmagicdesign.com/products">Blackmagic Design ATEM</a></li>
<li><a href="https://obsproject.com/">OBS Studio</a></li>
<li><a href="https://proav.roland.com/de/products/v-8hd/">Roland V-8HD</a>, <a href="https://proav.roland.com/de/products/v-60hd/">Roland V-60HD</a>, and maybe others</li>
<li><a href="https://www.vmix.com/software/">vMix</a></li>
</ul>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>Please <a href="https://github.com/wifi-tally/wifi-tally/issues">open an issue</a>
if you want others to be supported too. It is really simple to integrate them
and the only reason they have not been integrated yet, is that nobody has needed it already. :D</p>
</div>
<h2 id="get-started">Get Started<a class="headerlink" href="#get-started" title="Permanent link">¶</a></h2>
<p>Refer to <a href="getting-started/index.html">Getting Started</a> to start running your own vTally setup.</p>
<h2 id="download">Download<a class="headerlink" href="#download" title="Permanent link">¶</a></h2>
<p>See the <a href="download.html">download page</a>.</p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer">
<a href="download.html" class="md-footer__link md-footer__link--next" aria-label="Next: Installation" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Installation
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/wifi-tally" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "assets/javascripts/workers/search.22074ed6.min.js"}</script>
<script src="assets/javascripts/bundle.960e086b.min.js"></script>
</body>
</html>