Compare commits
3 commits
2aff11395c
...
363e242654
Author | SHA1 | Date | |
---|---|---|---|
363e242654 | |||
c693412535 | |||
5f218f6d40 |
6 changed files with 77 additions and 23 deletions
3
.env
3
.env
|
@ -9,3 +9,6 @@ SERIAL_SPEED=9600
|
||||||
|
|
||||||
# FIFO filename
|
# FIFO filename
|
||||||
FIFO="/tmp/mapid"
|
FIFO="/tmp/mapid"
|
||||||
|
|
||||||
|
# fifo_bridge.py PID file
|
||||||
|
FIFO_BRIDGE_PID_FILE="/tmp/mapid_fifo_bridge.pid"
|
|
@ -72,3 +72,11 @@ PHP based Web interface for `fifo_bridge.py` supporting all commands of *MAPID/C
|
||||||
### `notification.sh`
|
### `notification.sh`
|
||||||
|
|
||||||
Use the LED and display to show a notification, the purpose of the whole MAPID project.
|
Use the LED and display to show a notification, the purpose of the whole MAPID project.
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
- [My blog post about MAPID (German)](https://malte70.de/blog/mapid/)
|
||||||
|
- Arduino libraries
|
||||||
|
- [SerialCommand Advanced](https://github.com/shyd/Arduino-SerialCommand)
|
||||||
|
- [serLCD](http://playground.arduino.cc/Code/SerLCD)
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,10 @@ if (!file_exists(FIFO))
|
||||||
|
|
||||||
$f = fopen(FIFO, "w+");
|
$f = fopen(FIFO, "w+");
|
||||||
|
|
||||||
switch ($_POST["cmd"]) {
|
if (count($_POST) == 0)
|
||||||
|
$_POST = json_decode(file_get_contents('php://input'), true);
|
||||||
|
|
||||||
|
switch (@$_POST["cmd"]) {
|
||||||
case "getty":
|
case "getty":
|
||||||
fwrite($f, "GETTY");
|
fwrite($f, "GETTY");
|
||||||
break;
|
break;
|
||||||
|
@ -36,6 +39,16 @@ switch ($_POST["cmd"]) {
|
||||||
fwrite($f, "ECHO ");
|
fwrite($f, "ECHO ");
|
||||||
fwrite($f, $_POST["text"]);
|
fwrite($f, $_POST["text"]);
|
||||||
break;
|
break;
|
||||||
|
case "echo2":
|
||||||
|
fwrite($f, "CLS\n");
|
||||||
|
fwrite($f, "LINE 1\n");
|
||||||
|
fwrite($f, "ECHO ");
|
||||||
|
fwrite($f, $_POST["line1"]);
|
||||||
|
fwrite($f, "\n");
|
||||||
|
fwrite($f, "LINE 2\n");
|
||||||
|
fwrite($f, "ECHO ");
|
||||||
|
fwrite($f, $_POST["line2"]);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fwrite($f, "\n");
|
fwrite($f, "\n");
|
||||||
|
|
|
@ -15,18 +15,21 @@ $Title = "MAPID-FIFO Web-UI";
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main>
|
||||||
<section>
|
<section>
|
||||||
|
<h3>Welcome message</h3>
|
||||||
<form action="command.php" method="POST">
|
<form action="command.php" method="POST">
|
||||||
<input type="hidden" name="cmd" value="getty">
|
<input type="hidden" name="cmd" value="getty">
|
||||||
<button type="submit">Getty</button>
|
<button type="submit">Getty</button>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
<h3>Clear screen</h3>
|
||||||
<form action="command.php" method="POST">
|
<form action="command.php" method="POST">
|
||||||
<input type="hidden" name="cmd" value="cls">
|
<input type="hidden" name="cmd" value="cls">
|
||||||
<button type="submit">Clear</button>
|
<button type="submit">Clear</button>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
<h3>Control LED</h3>
|
||||||
<form action="command.php" method="POST">
|
<form action="command.php" method="POST">
|
||||||
<input type="hidden" name="cmd" value="on">
|
<input type="hidden" name="cmd" value="on">
|
||||||
<button type="submit">LED On</button>
|
<button type="submit">LED On</button>
|
||||||
|
@ -37,6 +40,7 @@ $Title = "MAPID-FIFO Web-UI";
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
<h3>Control display</h3>
|
||||||
<form action="command.php" method="POST">
|
<form action="command.php" method="POST">
|
||||||
<input type="hidden" name="cmd" value="lcdon">
|
<input type="hidden" name="cmd" value="lcdon">
|
||||||
<button type="submit">Display On</button>
|
<button type="submit">Display On</button>
|
||||||
|
@ -47,6 +51,7 @@ $Title = "MAPID-FIFO Web-UI";
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
<h3>Line selection for output</h3>
|
||||||
<form action="command.php" method="POST">
|
<form action="command.php" method="POST">
|
||||||
<input type="hidden" name="cmd" value="line">
|
<input type="hidden" name="cmd" value="line">
|
||||||
<select name="line" height="1">
|
<select name="line" height="1">
|
||||||
|
@ -57,12 +62,22 @@ $Title = "MAPID-FIFO Web-UI";
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
<h3>Single line output</h3>
|
||||||
<form action="command.php" method="POST">
|
<form action="command.php" method="POST">
|
||||||
<input type="hidden" name="cmd" value="echo">
|
<input type="hidden" name="cmd" value="echo">
|
||||||
<input type="text" name="text" placeholder="Text">
|
<input type="text" name="text" placeholder="Text">
|
||||||
<button type="submit">Output</button>
|
<button type="submit">Output</button>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Multi line output</h3>
|
||||||
|
<form action="command.php" method="POST">
|
||||||
|
<input type="hidden" name="cmd" value="echo2">
|
||||||
|
<input type="text" name="line1" placeholder="Text line 1"><br>
|
||||||
|
<input type="text" name="line2" placeholder="Text line 2">
|
||||||
|
<button type="submit">Output</button>
|
||||||
|
</form>
|
||||||
|
</section>
|
||||||
</main>
|
</main>
|
||||||
<footer>
|
<footer>
|
||||||
<p><a href="https://git.un-hack-bar.de/malte70/mapid">mapid Git-Repo</a></p>
|
<p><a href="https://git.un-hack-bar.de/malte70/mapid">mapid Git-Repo</a></p>
|
||||||
|
|
|
@ -29,35 +29,36 @@ input, select {
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
padding: 6px 14px;
|
padding: 6px 14px;
|
||||||
|
|
||||||
/*background: #DFDEDF;*/
|
/*background: #DFDEDF;*/
|
||||||
background: #efefef;
|
background: #efefef;
|
||||||
/*box-shadow: 0px 0.5px 1px rgba(0, 0, 0, 0.1), inset 0px 0.5px 0.5px rgba(255, 255, 255, 0.5), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.12);*/
|
/*box-shadow: 0px 0.5px 1px rgba(0, 0, 0, 0.1), inset 0px 0.5px 0.5px rgba(255, 255, 255, 0.5), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.12);*/
|
||||||
color: #6E6D70;
|
color: #6E6D70;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-right: .5em;
|
margin-right: .5em;
|
||||||
|
margin-bottom: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* https://getcssscan.com/css-buttons-examples */
|
/* https://getcssscan.com/css-buttons-examples */
|
||||||
button {
|
button {
|
||||||
/*display: flex;
|
/*display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;*/
|
align-items: center;*/
|
||||||
padding: 6px 14px;
|
padding: 6px 14px;
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
border: none;
|
border: none;
|
||||||
|
|
||||||
background: #6E6D70;
|
background: #6E6D70;
|
||||||
box-shadow: 0px 0.5px 1px rgba(0, 0, 0, 0.1), inset 0px 0.5px 0.5px rgba(255, 255, 255, 0.5), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.12);
|
box-shadow: 0px 0.5px 1px rgba(0, 0, 0, 0.1), inset 0px 0.5px 0.5px rgba(255, 255, 255, 0.5), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.12);
|
||||||
color: #DFDEDF;
|
color: #DFDEDF;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
touch-action: manipulation;
|
touch-action: manipulation;
|
||||||
}
|
}
|
||||||
|
|
||||||
button:focus {
|
button:focus {
|
||||||
box-shadow: inset 0px 0.8px 0px -0.25px rgba(255, 255, 255, 0.2), 0px 0.5px 1px rgba(0, 0, 0, 0.1), 0px 0px 0px 3.5px rgba(58, 108, 217, 0.5);
|
box-shadow: inset 0px 0.8px 0px -0.25px rgba(255, 255, 255, 0.2), 0px 0.5px 1px rgba(0, 0, 0, 0.1), 0px 0px 0px 3.5px rgba(58, 108, 217, 0.5);
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:link, a:visited {
|
a:link, a:visited {
|
||||||
|
|
|
@ -16,20 +16,32 @@ def main():
|
||||||
if len(sys.argv) == 2:
|
if len(sys.argv) == 2:
|
||||||
FIFO = sys.argv[1]
|
FIFO = sys.argv[1]
|
||||||
|
|
||||||
|
# Write PID
|
||||||
|
FIFO_BRIDGE_PID_FILE = os.environ.get("FIFO_BRIDGE_PID_FILE")
|
||||||
|
f = open(FIFO_BRIDGE_PID_FILE, "w")
|
||||||
|
f.write(os.getpid())
|
||||||
|
f.close()
|
||||||
|
del f
|
||||||
|
|
||||||
|
# Create MAPIDCP object to communicate with the Arduino
|
||||||
m = mapid.MAPIDCP()
|
m = mapid.MAPIDCP()
|
||||||
|
|
||||||
|
# Create FIFO
|
||||||
os.mkfifo(FIFO)
|
os.mkfifo(FIFO)
|
||||||
time.sleep(0.2)
|
time.sleep(0.2)
|
||||||
print("Created FIFO " + FIFO, file=sys.stderr)
|
print("Created FIFO " + FIFO, file=sys.stderr)
|
||||||
|
|
||||||
f = open(FIFO, "r")
|
f = open(FIFO, "r")
|
||||||
print("Opened FIFO for reading", file=sys.stderr)
|
print("Opened FIFO for reading", file=sys.stderr)
|
||||||
|
|
||||||
|
# Show greeting on screen
|
||||||
m.cls()
|
m.cls()
|
||||||
m.line(1)
|
m.line(1)
|
||||||
m.echo("fifo_bridge.py")
|
m.echo("fifo_bridge.py")
|
||||||
m.line(2)
|
m.line(2)
|
||||||
m.echo(FIFO)
|
m.echo(FIFO)
|
||||||
|
|
||||||
|
# Main loop: read commands from FIFO and execute it
|
||||||
keep_going = True
|
keep_going = True
|
||||||
while keep_going:
|
while keep_going:
|
||||||
try:
|
try:
|
||||||
|
@ -42,7 +54,9 @@ def main():
|
||||||
keep_going = False
|
keep_going = False
|
||||||
print("Caught a SerialException. Exiting now...", file=sys.stderr)
|
print("Caught a SerialException. Exiting now...", file=sys.stderr)
|
||||||
|
|
||||||
|
# Remove FIFO and PID files
|
||||||
os.remove(FIFO)
|
os.remove(FIFO)
|
||||||
|
os.remove(FIFO_BRIDGE_PID_FILE)
|
||||||
print("Removed FIFO.", file=sys.stderr)
|
print("Removed FIFO.", file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue