diff --git a/ISS on Map b/ISS on Map new file mode 100644 index 0000000..2b8e016 --- /dev/null +++ b/ISS on Map @@ -0,0 +1,186 @@ +[ + { + "id": "7acd8130567766f8", + "type": "worldmap", + "z": "99f6cfdbf054c46b", + "name": "Sky Above", + "lat": "51.41791", + "lon": "7.2800424", + "zoom": "", + "layer": "OSMC", + "cluster": "", + "maxage": "60", + "usermenu": "show", + "layers": "show", + "panit": "false", + "panlock": "false", + "zoomlock": "false", + "hiderightclick": "false", + "coords": "deg", + "showgrid": "true", + "showruler": "false", + "allowFileDrop": "false", + "path": "/map", + "overlist": "DR,CO,RA,DN,AC,HM", + "maplist": "OSMC,EsriC,EsriS,EsriT,EsriDG,UKOS,SW", + "mapname": "", + "mapurl": "", + "mapopt": "", + "mapwms": false, + "x": 910, + "y": 820, + "wires": [] + }, + { + "id": "562c308036e56664", + "type": "switch", + "z": "99f6cfdbf054c46b", + "name": "", + "property": "topic", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "issdistance", + "vt": "str" + }, + { + "t": "eq", + "v": "issdata", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 2, + "x": 690, + "y": 540, + "wires": [ + [ + "e1d46d52f1220698", + "83396d86dd84177e", + "03bac232919c6448", + "6b8ac1aa242bddc6" + ], + [ + "7acd8130567766f8", + "773cf5e6a77e41bf" + ] + ] + }, + { + "id": "30d6055a2b5bc35e", + "type": "function", + "z": "99f6cfdbf054c46b", + "name": "Generate Flight Data ISS", + "func": "// ISS Tracking\nvar issLatitude = msg.payload.latitude; // Breitengrad der ISS\nvar issLongitude = msg.payload.longitude; // Längengrad der ISS\nvar yourLatitude = 51.4; // Hier musst du deine Breitengrad-Koordinate eintragen\nvar yourLongitude = 7.2; // Hier musst du deine Längengrad-Koordinate eintragen\nvar notificationDistance = 1000; // Schwellenwert in Kilometern, du kannst diesen Wert anpassen\n\n// Funktion, um die Distanz zwischen zwei Koordinaten zu berechnen (Haversine-Formel)\nfunction getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {\n var R = 6371; // Radius der Erde in Kilometern\n var dLat = deg2rad(lat2 - lat1);\n var dLon = deg2rad(lon2 - lon1);\n var a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *\n Math.sin(dLon / 2) * Math.sin(dLon / 2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n var distance = R * c;\n return distance;\n}\n\nfunction deg2rad(deg) {\n return deg * (Math.PI / 180);\n}\n\n// Berechne die Distanz zwischen der ISS und deinem Standort\nvar distanceToISS = getDistanceFromLatLonInKm(issLatitude, issLongitude, yourLatitude, yourLongitude);\nconst newMsg1 = {\n payload: distanceToISS,\n topic: \"issdistance\" // Setze das gewünschte Topic für die Objekte im Array\n};\nnode.send(newMsg1);\n// Wenn die ISS in der Nähe ist, sende eine Benachrichtigung\nif (distanceToISS <= notificationDistance) {\n const newMsg = {\n payload: distanceToISS,\n topic: \"issoverhead\" // Setze das gewünschte Topic für die Objekte im Array\n };\n node.send(newMsg);\n}\n\n// Weitere Verarbeitung der ISS-Daten (falls erforderlich)\nvar flight = {\n \"name\": msg.payload.name,\n \"lat\": msg.payload.latitude,\n \"lon\": msg.payload.longitude,\n \"speed\": msg.payload.velocity,\n \"label\": msg.payload.name,\n \"icon\": \"satellite\",\n \"tooltip\": msg.payload.visibility\n};\n\nnode.send({ payload: flight, topic: \"issdata\" });", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 750, + "y": 500, + "wires": [ + [ + "562c308036e56664" + ] + ] + }, + { + "id": "1db197436d86e7f9", + "type": "json", + "z": "99f6cfdbf054c46b", + "name": "", + "property": "payload", + "action": "", + "pretty": false, + "x": 690, + "y": 300, + "wires": [ + [ + "cf120a168cf92ca1", + "c6d63851b4cf7240", + "bc1b76e745f805af", + "30d6055a2b5bc35e", + "2e428b0358314384", + "0a63dce24b0c185e" + ] + ] + }, + { + "id": "5d6f6aded7fa7a2e", + "type": "http request", + "z": "99f6cfdbf054c46b", + "name": "", + "method": "GET", + "ret": "txt", + "paytoqs": "ignore", + "url": "https://api.wheretheiss.at/v1/satellites/25544", + "tls": "", + "persist": false, + "proxy": "", + "insecureHTTPParser": false, + "authType": "", + "senderr": false, + "headers": [], + "x": 450, + "y": 300, + "wires": [ + [ + "1db197436d86e7f9" + ] + ] + }, + { + "id": "287665c1281d2909", + "type": "configurable interval", + "z": "99f6cfdbf054c46b", + "name": "configurable interval", + "interval": "30", + "onstart": false, + "do_enable": true, + "msg": "0", + "showstatus": true, + "unit": "seconds", + "statusformat": "YYYY-MM-D HH:mm:ss", + "x": 120, + "y": 300, + "wires": [ + [ + "5d6f6aded7fa7a2e" + ] + ] + }, + { + "id": "ced4cf966568dab9", + "type": "inject", + "z": "99f6cfdbf054c46b", + "name": "", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "0", + "payloadType": "str", + "x": 170, + "y": 220, + "wires": [ + [ + "ef5b4a597f101f9a", + "4231d423449a75f1", + "30fa9a823535c6f9", + "c45f177109c5accc", + "cf720743fd64559a", + "81a7ba8591b4ac72", + "5d6f6aded7fa7a2e" + ] + ] + } +]