Mit einen einfachen NodeRed Flow wollen wir mal die ISS tracken.
Es gibt einen öffentlichen Open-Notify Web-Service der die Position der ISS liefert. Und auch wieviel Leute da im moment sind (zwei sind eben gegangen 2.7.2020).
Also mal eben einen kleinen NodeRed-Flow zusammen geklickt, der den Webservice alle 10 Sekunden abfragt und das Ergebniss in eine CSV-Datei auf dem Raspberry Pi speichern.
Der Webservice liefert das JSON Format, z.B.
1 2 3 4 |
{"message":"success","timestamp":1596176595,"iss_position":{"longitude":"87.1150","latitude":"2.4840"}} {"message":"success","timestamp":1596176610,"iss_position":{"longitude":"87.6557","latitude":"3.2446"}} {"message":"success","timestamp":1596176625,"iss_position":{"longitude":"88.1973","latitude":"4.0047"}} {"message":"success","timestamp":1596176640,"iss_position":{"longitude":"88.7401","latitude":"4.7645"}} |
und wird in das CSV Dateiformat umgewandelt: timestamp, longitude, latitude
Dann die Daten mal für eine Erdumrundung (= 93 Minuten) laufen gelassen und mit einer Visualisierung mit OpenStreetMap unterlegt:
Hier 4 Umrundungen:
Und hier mit Überflug am Horizont von Langenhagen:
Und hier der NodeRed-Flow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
[ { "id": "ab7bad7.968425", "type": "tab", "label": "iss", "disabled": false, "info": "" }, { "id": "763a2a37.7faecc", "type": "inject", "z": "ab7bad7.968425", "name": "alle 10 Sekunden", "topic": "", "payload": "", "payloadType": "date", "repeat": "10", "crontab": "", "once": false, "onceDelay": 0.1, "x": 170, "y": 80, "wires": [ [ "9c04f3a9.8378a" ] ] }, { "id": "4d064986.fe84e", "type": "debug", "z": "ab7bad7.968425", "name": "Debug Data", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 690, "y": 200, "wires": [] }, { "id": "9c04f3a9.8378a", "type": "http request", "z": "ab7bad7.968425", "name": "Open Data von open-notify.org abfragen", "method": "GET", "ret": "obj", "paytoqs": false, "url": "http://api.open-notify.org/iss-now.json", "tls": "", "persist": false, "proxy": "", "authType": "basic", "x": 240, "y": 200, "wires": [ [ "f387efbd.b5b6", "4d064986.fe84e" ] ] }, { "id": "12fc9796.6ae6d8", "type": "file", "z": "ab7bad7.968425", "name": "In Datei iss-standort.csv speichern", "filename": "/home/openhabian/iss-data/iss-standort.csv", "appendNewline": true, "createDir": false, "overwriteFile": "false", "encoding": "none", "x": 480, "y": 380, "wires": [ [] ] }, { "id": "3c15c01e.ab9e", "type": "comment", "z": "ab7bad7.968425", "name": "(c) 2020 Thomas Wenzlaff www.wenzlaff.info", "info": "", "x": 690, "y": 80, "wires": [] }, { "id": "5277f66f.cc79e", "type": "debug", "z": "ab7bad7.968425", "name": "Debug Ausgabe", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 700, "y": 280, "wires": [] }, { "id": "f387efbd.b5b6", "type": "function", "z": "ab7bad7.968425", "name": "CSV Format erzeugen", "func": "var nachricht=msg.payload.timestamp + \",\" + msg.payload.iss_position.longitude + \",\" + msg.payload.iss_position.latitude;\n\nmsg.payload = nachricht;\n\nreturn msg;", "outputs": 1, "noerr": 0, "x": 400, "y": 280, "wires": [ [ "5277f66f.cc79e", "12fc9796.6ae6d8" ] ] }, { "id": "34f57175.37802e", "type": "comment", "z": "ab7bad7.968425", "name": "Tracke ISS Position", "info": "", "x": 390, "y": 80, "wires": [] } ] |