smart_home/Server.md
... ...
@@ -1,75 +0,0 @@
1
-# Voraussetzungen
2
-
3
-## Hardware
4
-
5
-Funkschaltung so eingerichtet wie in [Doku](Funksteckdose über 433MHz von Raspi ansteuern) beschrieben
6
-
7
-## Software
8
-
9
-### Node.js Grunlagen
10
-
11
-Node.js installieren (s. https://nodejs.org). An gewünschter Stelle (aktuell `/home/pi/Desktop/nodejs-server`) intialisieren:
12
-```
13
-npm init
14
-```
15
-und als nötige Pakete
16
-```
17
-npm install express
18
-npm install child_process
19
-npm install process
20
-```
21
-hinzufügen. Grundstruktur des node.js-Servers (aktuell `home/pi/Desktop/nodejs-server/server.js`) mit zwei einfachen Tests:
22
-```
23
-const express = require('express');
24
-const {exec} = require('child_process');
25
-const {stderr} = require('process')
26
-
27
-const app=express();
28
-const port=3000;
29
-
30
-app.get('/helloserver',(req,res,next)=>{
31
- res.send("hello world!");
32
-})
33
-
34
-app.get('/helloshell', (req,res,next)=>{
35
- exec('touch /home/pi/Desktop/ShellTestSuccess.txt');
36
- res.send('yay!')
37
-})
38
-
39
-
40
-app.listen(port);
41
-```
42
-Server einschalten:
43
-```
44
-node /home/pi/Desktop/nodejs-server/server.js
45
-```
46
-Zum ausschalten `ctrl + C`.
47
-
48
-
49
-Tests: Ein Gerät im lokalen Netzwerk sollte durch GET-Anfrage an `[IP des Raspi]:3000/helloserver` die Antwort "hello world!" erhalten. Durch GET-Anfrage an `[IP des Raspi]:3000/helloshell` sollte auf dem Desktop des Raspi eine leere Text-Datei namens `ShellTestSuccess.txt` angelegt werden und an das anfragende Gerät die Antwort "yay!" geschickt werden.
50
-
51
-### Lichtsteuerung
52
-Der Server stellt wie folgt Endpunkte bereit, die das An-/Ausschalten des Lichts auslösen:
53
-```
54
-app.get('/lichtan', (req,res,next)=>{
55
- exec('/usr/local/bin/send 01001 1 1');
56
- res.send('yay!')
57
-})
58
-
59
-app.get('/lichtaus', (req,res,next)=>{
60
- exec('/usr/local/bin/send 01001 1 0');
61
- res.send('yay!')
62
-})
63
-
64
-```
65
-Durch GET-Anfrage an `[IP des Raspi]:3000/lichtan` wird das Licht mit dem Identifikator 01001 1 (vgl. [Doku](Funksteckdose über 433MHz von Raspi ansteuern)) eingschaltet; entsprechend zum Ausschalten und durch Veränderung des Identifikators für andere Funksteckdosen.
66
-
67
-### Foto von Kamera holen
68
-Der folgende Endpunkt setzt das Verzeichnis `/home/pi/Desktop/nodejs-server/photos` voraus.
69
-```
70
-app.get('/photo', (req,res,next)=>{
71
- exec('raspistill -o /home/pi/Desktop/nodejs-server/photos/test.jpg');
72
- res.sendFile('/home/pi/Desktop/nodejs-server/photos/test.jps');
73
-})
74
-```
75
-Durch GET-Anfrage an `[IP des Raspi]:3000/photo` wird die Aufnahme eines Fotos auf dem Raspi ausgelöst, das dieser in dem o.g. Pfad ablegt (to do: Zeitstempel, damit die Bilder behalten statt überschrieben werden) und als Antwort an das anfragende Gerät zurückschickt.