Battlescore - Spielstand-Zähler: ESP8266 Projekt

ESP8266 Apr. 22, 2020
https://my.makesmart.net/topic/66/battlescore-spielstand-z%C3%A4hler-esp8266-projekt

Ich bin das absolute Gegenteil eines Vielspielers, wer auch immer sich dieses Wort ausgedacht hat.

Trotzdem kommt es in letzter Zeit vermehrt vor, dass am Tag mindestens 10 Runden UNO gespielt werden - mit 40 Karten - zu zweit. Ein richtiger Spaß ist das sag ich euch … 🍻

Ich weiß nicht ob es an Corona und der vielen Freizeit liegt, oder an unsererm neuen Gadget.

Battlescore


Kennt ihr diese Diskussionen?

Steh du auf!

Nein steh du auf! Ich bin letztes mal schon aufgestanden.

Mit Battlescore ist das vorbei! Der Gewinner kann sich ausruhen während der Verlierer, im wahrsten Sinne des Wortes, die Arschkarte zieht.

Battlescore ist das Codewort meines jüngsten ESP8266 Projekt - eine Fernbedienung mit der man Punkte vergeben kann. Entweder Spiel gewonnen, oder Spiel verloren.


Die Idee war relativ simple: Aufgrund der vielen Diskussionen, … oder lasst mich sagen:

Schatz, tust du mir einen Gefallen … ?

Hatte ich die Idee, diese ganzen UNO-Runden festzuhalten. Und zwar per Knopfdruck.

Beschreibung


ESP8266 Schaltpan demo

Per Knopfdruck an einem ESP8266 wird ein Punkt in einer MySQL-Datenbank gespeichert. Die Punkte kann man von dort aus beliebig weiterverarbeiten - Man könnte Graphen oder Statistiken erstellen, man könnte eine Abfrage fürs Smarthome einbauen, man kann einfach alles machen, was man mit Datensätzen eben machen kann.


Beim Speichern eines Punktes wird je eine Push-Nachricht an das Handy der Freundin und an das eigene Handy geschickt (damit keiner schummeln kann). Vertrauen ist gut, Kontrolle ist besser. Es geht schließlich darum, wer das nächste mal aufstehen muss…

Pushover Push


Auf einer Webseite, die lokal auf meinem makesmart-server läuft, bekommt man eine grobe Übersicht:

  • Gesamtanzahl der Matches.
  • wer führt gerade?
  • wie viele Punkte fehlen zum Ausgleich?

makesmart-server Vorschau

Und bevor ihr mir jetzt 'nen Vogel zeigt, … ja das braucht eigentlichen keine Sau und man kann die Zeit auch definitiv sinnvoller nutzen, aber das ist ein super Projekt zum “hinter die Kulissen schauen”.


Trotzdem ist es doch irgendwie eine WIN-WIN Situation. Ich hab Bock zum zocken, die Freundin ist glücklich, ich muss nicht mehr aufstehen und bin ebenfalls glücklich. Fazit: Einfach alle sind glücklich…

… auch wenn das Ding komplett beschissen aussieht.

battlescore esp8266 projekt

telegram antworten


Aber wen interessiert schon die Optik, eigentlich sind wir doch alle nur an den inneren Werten interessiert, nicht wahr? @marcobaumann @Nick


Bestandteile

Das Projekt beinhaltet folgende Hauptkomponenten

  • ESP8266 DeepSleep

  • ESP8266 HTTP-Request

  • PHP Web-API

  • PHP MySQL-Queries

  • Pushover API

Ablauf


Punktevergabe | ESP8266 HTTP-Request

Sobald man auf den schwarzen Taster drückt, wird der ESP aktiviert und die blaue LED fängt an zu leuchten.

Ab da an hat man 5 Sekunden Zeit einen Punkt zu vergeben, ansonsten geht der ESP8266 zurück in den Standby.


Punkte werden mit dem roten- und mit dem blauen Taster vergeben. Blau ist meiner, rot ist der der Freundin… Gehen wir davon aus, dass ich gewonnen hab.

Auf Knopfdruck callt der ESP die mit PHP programmierte GET-API. Es wird die Variable winner mit dem Wert cooper übergeben.

http://makesmart-server/private/battlescore/add.php?winner=cooper
if (sender.begin("http://makesmart-server/private/battlescore/add.php?winner=cooper")) {      int httpCode = sender.GET();             //Anfrage wurde gesendet und Server hat geantwortet      if (httpCode == HTTP_CODE_OK) {          // Die URL wurde erfolgreich gecallt        // und das PHP-Script wird ausgeführt                  }        sender.end();      ESP.deepSleep(0);}

Sobald von der gecallten URL ein HTTP-OK kommt, ist der Request abgeschlossen, und der ESP wird mithilfe von ESP.deepSleep(0) wieder in den Standby versetzt - bis man wieder den schwarzen Taster drückt.

Code: HTTP-GET Request
Tutorial: ESP8266 Deep-Sleep


Punkte speichern | PHP GET-API

Die vom ESP8266 übergebene GET-Variable winner=cooper wird von einem PHP-Script verarbeitet.

Zuerst wird der Wert der GET-Variable erneut in eine Variable (für das PHP-Script) gespeichert.

Anschließend wird ein Datensatz in die MySQL-Tabelle count geschrieben.

$winner = $_GET['winner'];
INSERT INTO `count` (`id`, `name`, `time`, `active`) VALUES (NULL, '$winner', CURRENT_TIMESTAMP, '1')";
idnametimeactive
1cooper2020-04-20 20:04:121

Push-Benachrichtigung | PHP & Pushover


Die Push-Benachrichtigung wird ebenfalls vom PHP-Script gesendet. Das passiert über die API von dem Service Pushover.

curl_setopt_array($ch = curl_init(), array(        CURLOPT_URL => "https://api.pushover.net/1/messages.json",        CURLOPT_POSTFIELDS => array(          "token" => "meintoken98zf2fj2f2",          "user" => "meinuserfo9h2f23f23f",          "device" => "cooper_iphone_x,cooper_gf_iphone_8",          "message" => "Punkt für cooper! Am " . date("d.m") . " um " . date("H:i") . " Uhr",          "html" => 1        ),        CURLOPT_SAFE_UPLOAD => true,        CURLOPT_RETURNTRANSFER => true,      ));      curl_exec($ch);      curl_close($ch);

Und fertig ist der Battlescore! 🤣


Schlusswort

Mir ist klar, dass das nicht unbedingt das sinnvollste Gadget auf Erden ist. Aber gerade solche Projekte sind perfekt dafür geeignet, neue Dinge unkompliziert und im kleinen Rahmen auszuprobieren.

Die Codes sind natürlich nur auf die allernötigsten Schnipsel gekürz und dienen rein zur Veranschaulichung. Dementsprechend funktionieren die Codeschnipsel in diesem Post nicht, wenn man sie 1:1 kopiert.


Die Themen wie Push-Benachrichtigung und MySQL-Insert können genauso gut auf dem ESP8266 selbst ausgeführt werden. Aber ich habe mich bewusst dagegen entschieden. Bei mir sollte der ESP lediglich als Event-Trigger dienen.

Ein PHP-Script lässts sich einfach komfortabler bearbeiten und erweitern, im Gegensatz zu einem Programm das man jedes mal kompilen und auf eine Hardware bekommen muss. 😉

Ich habe noch einige Ideen auf Lager die ich vielleicht miteinbauen möchte. Natürlich zu Lernzwecken.

Aber lasst euch eins sagen: Das Drücken auf den Knopf nach einem Sieg ist mehr als befriedigend. 🤣

Ich hoffe ich konnte irgendjemand in irgendeiner Form für irgendwas inspirieren.

winnie.gif


Viel Spaß mit euren Projekten,

cooper

Community

Die makesmart Community ist der Ort, an dem du deine Ideen mitteilen und deine Erfahrungen austauschen kannst.

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließe als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Du hast dich erfolgreich angemeldet.
Erfolg! Dein Konto ist vollständig aktiviert, du hast jetzt Zugang zu allen Inhalten.