Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Openweather API

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Openweather API

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
11 Beiträge 3 Kommentatoren 6.7k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    schrieb am zuletzt editiert von
    #2

    Falls jemand die Daten aus seiner Stadt in Variablen schreiben möchte.

    Um Tipparbeit zu sparen, anbei der Flow.

    Im Beispiel für die Städte Düsseldorf und Ratingen.

    327_2015-05-03_node-red_openweathermap.jpg

    [{"id":"31f0063c.ce0ffa","type":"http request","name":"Openweathermap Düsseldorf","method":"GET","ret":"obj","url":"http://api.openweathermap.org/data/2.5/weather?q=Duesseldorf,de&units=metric&lang=de","x":576.285758972168,"y":3414.8253536224365,"z":"c8f61395.3709f","wires":[["99e0ffb0.661f","81652e01.7e9ad","5be9f9a7.a41608","57b76f72.a8489","d3eb6296.2c14a","502c6827.afd398","b15add60.4ea52","e6ba0720.1945f8","c5e75ea1.3a18a","5e981f4a.a167e"]]},{"id":"49f2a5e5.b60d5c","type":"inject","name":"Trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":327.5714797973633,"y":3414.8253498077393,"z":"c8f61395.3709f","wires":[["31f0063c.ce0ffa","30b66901.cf4996"]]},{"id":"8bd529ed.742ad8","type":"debug","name":"","active":false,"console":"false","complete":"false","x":1159.1746292114258,"y":3363.8253135681152,"z":"c8f61395.3709f","wires":[]},{"id":"99e0ffb0.661f","type":"function","name":"Temperatur","func":"msg.payload = msg.payload.main.temp;\n\nreturn msg;","outputs":1,"x":893.4603958129883,"y":3408.8253536224365,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","f10a8e1b.0ef57"]]},{"id":"81652e01.7e9ad","type":"function","name":"Luftdruck","func":"msg.payload = msg.payload.main.pressure;\n\nreturn msg;","outputs":1,"x":893.4604263305664,"y":3444.8252925872803,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","73419212.8cbe6c"]]},{"id":"5be9f9a7.a41608","type":"function","name":"Luftfeuchtigkeit","func":"msg.payload = msg.payload.main.humidity;\n\nreturn msg;","outputs":1,"x":900.4604263305664,"y":3485.8252925872803,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","8e3e598b.71c1a8"]]},{"id":"57b76f72.a8489","type":"function","name":"Windgeschwindigkeit","func":"msg.payload = msg.payload.wind.speed;\n\nreturn msg;","outputs":1,"x":905.4604263305664,"y":3565.825170516968,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","32593c69.cda6c4"]]},{"id":"d3eb6296.2c14a","type":"function","name":"Windrichtung","func":"msg.payload = msg.payload.wind.deg;\n\nreturn msg;","outputs":1,"x":905.4604263305664,"y":3598.8252925872803,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","1f600994.e09ff6"]]},{"id":"c5e75ea1.3a18a","type":"debug","name":"","active":true,"console":"false","complete":"false","x":597.4604415893555,"y":3627.39656829834,"z":"c8f61395.3709f","wires":[]},{"id":"502c6827.afd398","type":"function","name":"Wetter","func":"msg.payload = msg.payload.weather[0].description;\n\nreturn msg;","outputs":1,"x":906.4604263305664,"y":3662.8252925872803,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","c91a4fc8.36e5b"]]},{"id":"b15add60.4ea52","type":"function","name":"Sonnenaufgang","func":"msg.payload = msg.payload.sys.sunrise;\n\nreturn msg;","outputs":1,"x":914.4604263305664,"y":3719.8252925872803,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","8dcd3e6f.7232c"]]},{"id":"e6ba0720.1945f8","type":"function","name":"Sonnenuntergang","func":"msg.payload = msg.payload.sys.sunset;\n\nreturn msg;","outputs":1,"x":915.4604263305664,"y":3758.8252925872803,"z":"c8f61395.3709f","wires":[["8bd529ed.742ad8","33693888.cc96c8"]]},{"id":"30b66901.cf4996","type":"http request","name":"Openweathermap Ratingen","method":"GET","ret":"obj","url":"http://api.openweathermap.org/data/2.5/weather?q=Ratingen,de&units=metric&lang=de","x":573.174560546875,"y":3944.254117012024,"z":"c8f61395.3709f","wires":[["c5e75ea1.3a18a","f421d300.0bde3","fa52aae3.05ad58","3e653e21.c19ac2","b2446bef.4dbb98","4262d813.bd9d28","83278cad.7cd87","17057cd8.e8fa83","663b03f3.99c4fc","18c7ceb4.e73831"]]},{"id":"7df41760.820be8","type":"comment","name":"Wetterdaten aktuell aus der Openweathermap abfragen","info":"","x":439.46033477783203,"y":3325.4921016693115,"z":"c8f61395.3709f","wires":[]},{"id":"f10a8e1b.0ef57","type":"ioBroker out","name":"","topic":"openWeatherDusTemperatur","ack":"true","autoCreate":"true","x":1198.5714111328125,"y":3402.8571548461914,"z":"c8f61395.3709f","wires":[]},{"id":"73419212.8cbe6c","type":"ioBroker out","name":"","topic":"openWeatherDusLuftdruck","ack":"true","autoCreate":"true","x":1200,"y":3444.285888671875,"z":"c8f61395.3709f","wires":[]},{"id":"8e3e598b.71c1a8","type":"ioBroker out","name":"","topic":"openWeatherDusLuftfeuchtigkeit","ack":"true","autoCreate":"true","x":1198.5714111328125,"y":3481.4287109375,"z":"c8f61395.3709f","wires":[]},{"id":"32593c69.cda6c4","type":"ioBroker out","name":"","topic":"openWeatherDusWindgeschwindigkeit","ack":"true","autoCreate":"true","x":1211.4286041259766,"y":3565.7145385742188,"z":"c8f61395.3709f","wires":[]},{"id":"1f600994.e09ff6","type":"ioBroker out","name":"","topic":"openWeatherDusWindrichtung","ack":"true","autoCreate":"true","x":1208.5714111328125,"y":3605.71435546875,"z":"c8f61395.3709f","wires":[]},{"id":"c91a4fc8.36e5b","type":"ioBroker out","name":"","topic":"openWeatherDusWetterBeschreibung","ack":"true","autoCreate":"true","x":1212.857177734375,"y":3660,"z":"c8f61395.3709f","wires":[]},{"id":"8dcd3e6f.7232c","type":"ioBroker out","name":"","topic":"openWeatherDusSonnenaufgang","ack":"true","autoCreate":"true","x":1212.857177734375,"y":3715.71435546875,"z":"c8f61395.3709f","wires":[]},{"id":"33693888.cc96c8","type":"ioBroker out","name":"","topic":"openWeatherDusSonnenuntergang","ack":"true","autoCreate":"true","x":1215.71435546875,"y":3758.571533203125,"z":"c8f61395.3709f","wires":[]},{"id":"f421d300.0bde3","type":"function","name":"Temperatur","func":"msg.payload = msg.payload.main.temp;\n\nreturn msg;","outputs":1,"x":904.2856674194336,"y":4122.85746383667,"z":"c8f61395.3709f","wires":[["15af9518.ea506b","5d2280ee.a2dd8"]]},{"id":"fa52aae3.05ad58","type":"function","name":"Luftdruck","func":"msg.payload = msg.payload.main.pressure;\n\nreturn msg;","outputs":1,"x":904.2856979370117,"y":4158.857402801514,"z":"c8f61395.3709f","wires":[["4752a912.b8ad58","5d2280ee.a2dd8"]]},{"id":"3e653e21.c19ac2","type":"function","name":"Luftfeuchtigkeit","func":"msg.payload = msg.payload.main.humidity;\n\nreturn msg;","outputs":1,"x":911.2856979370117,"y":4199.857402801514,"z":"c8f61395.3709f","wires":[["1733cc7c.e8cc34","5d2280ee.a2dd8"]]},{"id":"b2446bef.4dbb98","type":"function","name":"Windgeschwindigkeit","func":"msg.payload = msg.payload.wind.speed;\n\nreturn msg;","outputs":1,"x":916.2856979370117,"y":4279.857280731201,"z":"c8f61395.3709f","wires":[["fd89fe3b.0276","5d2280ee.a2dd8"]]},{"id":"4262d813.bd9d28","type":"function","name":"Windrichtung","func":"msg.payload = msg.payload.wind.deg;\n\nreturn msg;","outputs":1,"x":916.2856979370117,"y":4312.857402801514,"z":"c8f61395.3709f","wires":[["6d3fe98c.92c018","5d2280ee.a2dd8"]]},{"id":"83278cad.7cd87","type":"function","name":"Wetter","func":"msg.payload = msg.payload.weather[0].description;\n\nreturn msg;","outputs":1,"x":917.2856979370117,"y":4376.857402801514,"z":"c8f61395.3709f","wires":[["70d219d5.8f2de8","5d2280ee.a2dd8"]]},{"id":"17057cd8.e8fa83","type":"function","name":"Sonnenaufgang","func":"msg.payload = msg.payload.sys.sunrise;\n\nreturn msg;","outputs":1,"x":925.2856979370117,"y":4433.857402801514,"z":"c8f61395.3709f","wires":[["44aec1c.fbb514","5d2280ee.a2dd8"]]},{"id":"663b03f3.99c4fc","type":"function","name":"Sonnenuntergang","func":"msg.payload = msg.payload.sys.sunset;\n\nreturn msg;","outputs":1,"x":926.2856979370117,"y":4472.857402801514,"z":"c8f61395.3709f","wires":[["32d6a60e.cd295a","5d2280ee.a2dd8"]]},{"id":"15af9518.ea506b","type":"ioBroker out","name":"","topic":"openWeatherRatTemperatur","ack":"true","autoCreate":"true","x":1209.3966827392578,"y":4116.889265060425,"z":"c8f61395.3709f","wires":[]},{"id":"4752a912.b8ad58","type":"ioBroker out","name":"","topic":"openWeatherRatLuftdruck","ack":"true","autoCreate":"true","x":1210.8252716064453,"y":4158.317998886108,"z":"c8f61395.3709f","wires":[]},{"id":"1733cc7c.e8cc34","type":"ioBroker out","name":"","topic":"openWeatherRatLuftfeuchtigkeit","ack":"true","autoCreate":"true","x":1209.3966827392578,"y":4195.460821151733,"z":"c8f61395.3709f","wires":[]},{"id":"fd89fe3b.0276","type":"ioBroker out","name":"","topic":"openWeatherRatWindgeschwindigkeit","ack":"true","autoCreate":"true","x":1222.2538757324219,"y":4279.746648788452,"z":"c8f61395.3709f","wires":[]},{"id":"6d3fe98c.92c018","type":"ioBroker out","name":"","topic":"openWeatherRatWindrichtung","ack":"true","autoCreate":"true","x":1219.3966827392578,"y":4319.746465682983,"z":"c8f61395.3709f","wires":[]},{"id":"70d219d5.8f2de8","type":"ioBroker out","name":"","topic":"openWeatherRatWetterBeschreibung","ack":"true","autoCreate":"true","x":1223.6824493408203,"y":4374.032110214233,"z":"c8f61395.3709f","wires":[]},{"id":"44aec1c.fbb514","type":"ioBroker out","name":"","topic":"openWeatherRatSonnenaufgang","ack":"true","autoCreate":"true","x":1223.6824493408203,"y":4429.746465682983,"z":"c8f61395.3709f","wires":[]},{"id":"32d6a60e.cd295a","type":"ioBroker out","name":"","topic":"openWeatherRatSonnenuntergang","ack":"true","autoCreate":"true","x":1226.5396270751953,"y":4472.603643417358,"z":"c8f61395.3709f","wires":[]},{"id":"5d2280ee.a2dd8","type":"debug","name":"","active":false,"console":"false","complete":"false","x":1159.9999599456787,"y":4082.8571786880493,"z":"c8f61395.3709f","wires":[]},{"id":"5e981f4a.a167e","type":"function","name":"openstreetmap Adresse http","func":"\n// Koordinate inkl. Marker\nmsg.payload = \"http://www.openstreetmap.org/?mlon=\" \n       + msg.payload.coord.lon + \"&mlat=\"\n       + msg.payload.coord.lat + \"&zoom=17#map=17/\" // Zoom Stufe 17 (beide Werte anpssen, wenn Änderung gewünscht)\n       + msg.payload.coord.lat + \"/\"\n       + msg.payload.coord.lon;\nreturn msg;\n","outputs":"1","x":941.4285888671875,"y":3804.285888671875,"z":"c8f61395.3709f","wires":[["4eefbe15.b1104","5eb8d843.a14728"]]},{"id":"4eefbe15.b1104","type":"ioBroker out","name":"","topic":"openWeatherDusOpenstreetmapURL","ack":"true","autoCreate":"true","x":1210.0000305175781,"y":3801.428776741028,"z":"c8f61395.3709f","wires":[]},{"id":"5eb8d843.a14728","type":"debug","name":"","active":false,"console":"false","complete":"false","x":1421.4286499023438,"y":3801.4287071228027,"z":"c8f61395.3709f","wires":[]},{"id":"18c7ceb4.e73831","type":"function","name":"openstreetmap Adresse http","func":"\n// Koordinate inkl. Marker\nmsg.payload = \"http://www.openstreetmap.org/?mlon=\" \n       + msg.payload.coord.lon + \"&mlat=\"\n       + msg.payload.coord.lat + \"&zoom=17#map=17/\" // Zoom Stufe 17 (beide Werte anpssen, wenn Änderung gewünscht)\n       + msg.payload.coord.lat + \"/\"\n       + msg.payload.coord.lon;\nreturn msg;\n","outputs":"1","x":954.2856750488281,"y":4518.571251869202,"z":"c8f61395.3709f","wires":[["299181d2.d66e7e","891fd3bc.76e03"]]},{"id":"299181d2.d66e7e","type":"ioBroker out","name":"","topic":"openWeatherRatOpenstreetmapURL","ack":"true","autoCreate":"true","x":1222.8571166992188,"y":4515.7141399383545,"z":"c8f61395.3709f","wires":[]},{"id":"891fd3bc.76e03","type":"debug","name":"","active":false,"console":"false","complete":"false","x":1447.1428298950195,"y":4515.713824272156,"z":"c8f61395.3709f","wires":[]}]
    

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Antwort Letzte Antwort
    0
    • derAugeD Offline
      derAugeD Offline
      derAuge
      schrieb am zuletzt editiert von
      #3

      Das sind die richtigen Sachen zum lernen. ;)

      Hatte auch den Ansatz.

      Jedoch mit einer Funktion. Und durch deine Hilfe konne ich nun die letzten Parammeter herausfinden.
      315_node-red_wetterbor.png

      Ist an deinem Vorschlag angelehnt

      ! [{"id":"c85bd032.32ed08","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":125,"y":65,"z":"9754ee99.65c0c8","wires":[["f9322c39.6b25a8"]]},{"id":"f9322c39.6b25a8","type":"http request","name":"Wetter in Borken","method":"GET","ret":"obj","url":"http://api.openweathermap.org/data/2.5/ … c8":[["a22d4c1b.313608"]]},{"id":"a22d4c1b.313608","type":"function","name":"Daten extrahieren","func":"msg1 = {};\nmsg1.payload = msg.payload.main.temp;\nmsg2 = {};\nmsg2.payload = msg.payload.main.pressure;\nmsg3 = {};\nmsg3.payload = msg.payload.main.humidity;\nmsg4 = {};\nmsg4.payload = msg.payload.wind.speed;\nmsg5 = {};\nmsg5.payload = msg.payload.wind.deg;\nmsg6 = {};\nmsg6.payload = msg.payload.weather[0].description;\nmsg7 = {};\nmsg7.payload = msg.payload.sys.sunrise;\nmsg8 = {};\nmsg8.payload = msg.payload.sys.sunset;\nmsg9 = {};\n\nmsg10 = {};\n// Koordinate inkl. Marker\nmsg10.payload = "http://www.openstreetmap.org/?mlon=" \n + msg.payload.coord.lon + "&mlat="\n + msg.payload.coord.lat + "&zoom=17#map=17/" // Zoom Stufe 17 (beide Werte anpssen, wenn Änderung gewünscht)\n + msg.payload.coord.lat + "/"\n + msg.payload.coord.lon;\n\nreturn [msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,msg10];","outputs":"10","valid":true,"x":338,"y":141,"z":"9754ee99.65c0c8","wires":[["f09a27cf.f7bfb"],["571ec36b.2305f4"],["d599dff2.d2b74"],["f0adeafa.14cdf8"],["1cebc15a.7b89f7"],["1f7cb16d.d889cf"],["38368cd9.2b03d4"],["23c3b3ae.0960e4"],[],["a7734dac.696ef8","f47ee89.9694618"]]},{"id":"f09a27cf.f7bfb","type":"ioBroker out","name":"","topic":"openWeatherBorTemperatur","ack":"true","autoCreate":"true","x":666.396728515625,"y":43.031829833984375,"z":"9754ee99.65c0c8","wires":[]},{"id":"571ec36b.2305f4","type":"ioBroker out","name":"","topic":"openWeatherBorLuftdruck","ack":"true","autoCreate":"true","x":663.8253173828125,"y":91.4605712890625,"z":"9754ee99.65c0c8","wires":[]},{"id":"d599dff2.d2b74","type":"ioBroker out","name":"","topic":"openWeatherBorLuftfeuchtigkeit","ack":"true","autoCreate":"true","x":680.396728515625,"y":139.6033935546875,"z":"9754ee99.65c0c8","wires":[]},{"id":"f0adeafa.14cdf8","type":"ioBroker out","name":"","topic":"openWeatherBorWindgeschwindigkeit","ack":"true","autoCreate":"true","x":695.25390625,"y":182.88922119140625,"z":"9754ee99.65c0c8","wires":[]},{"id":"1cebc15a.7b89f7","type":"ioBroker out","name":"","topic":"openWeatherBorWindrichtung","ack":"true","autoCreate":"true","x":673.396728515625,"y":229.8890380859375,"z":"9754ee99.65c0c8","wires":[]},{"id":"1f7cb16d.d889cf","type":"ioBroker out","name":"","topic":"openWeatherBorWetterBeschreibung","ack":"true","autoCreate":"true","x":698.6824951171875,"y":272.1746826171875,"z":"9754ee99.65c0c8","wires":[]},{"id":"38368cd9.2b03d4","type":"ioBroker out","name":"","topic":"openWeatherBorSonnenaufgang","ack":"true","autoCreate":"true","x":685.6824951171875,"y":316.8890380859375,"z":"9754ee99.65c0c8","wires":[]},{"id":"23c3b3ae.0960e4","type":"ioBroker out","name":"","topic":"openWeatherBorSonnenuntergang","ack":"true","autoCreate":"true","x":694.5396728515625,"y":361.7462463378906,"z":"9754ee99.65c0c8","wires":[]},{"id":"a7734dac.696ef8","type":"ioBroker out","name":"","topic":"openWeatherBorOpenstreetmapURL","ack":"true","autoCreate":"true","x":632.825439453125,"y":464.6033935546875,"z":"9754ee99.65c0c8","wires":[]},{"id":"f47ee89.9694618","type":"debug","name":"","active":true,"console":"false","complete":"false","x":551,"y":514,"z":"9754ee99.65c0c8","wires":[]}]

      Was ist nun der Vorteil / Nachteil ob man es mit einer oder mehreren Funktionen macht?

      EDIT: Wie kann ich die Uhrzeiten (Unix-Version) in "iso" anzeigen lassen?

      openWeatherBorSonnenaufgang	1430625525	
      openWeatherBorSonnenuntergang	1430679602
      

      Gruß

      derAuge

      1 Antwort Letzte Antwort
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        schrieb am zuletzt editiert von
        #4

        @derAuge:

        Was ist nun der Vorteil / Nachteil ob man es mit einer oder mehreren Funktionen macht? `

        Wahrscheinlich Geschmacksache ;-)

        Ich habe die Kombi "Funktion" -> Variable gewählt, um einfach per Maus schnell ein Pärchen löschen zu können, per cpoy&paste die nächste Variable hinzuzufügen und die Zuordnung (JSON Objekt zur Variable) direkt zu sehen, ohne in das Script schauen zu müssen. Deine Variante sieht professioneller und aufgeräumter aus.

        @derAuge:

        EDIT: Wie kann ich die Uhrzeiten (Unix-Version) in "iso" anzeigen lassen?

        openWeatherBorSonnenaufgang	1430625525	
        openWeatherBorSonnenuntergang	1430679602
        ```` `  
        

        Ich hatte hier http://forum.iobroker.org/viewtopic.php?f=32&t=653 die Funktion beschrieben.

        Einfach die Funktion hinter der Funktion ziehen, die den Timestamp aus dem JSON ermittelt.

        Dann kannst Du Dich noch zwischen den Varianten entscheiden, ob der Timestamp aus der Ursprungsmessage kommen soll oder der Timestamp zum Zeitpunkt des Funktionsaufruf genommen werden soll.

        Wenn Du nur das ISO Format haben willst, dann brauchst Du nur die Date(mparseInt(sg.payload.sys.sunrise)) Funktion verwenden. Ich finde das reine ISO Format aber auch nicht so toll.

        var isoZeit     = new Date(mparseInt(sg.payload.sys.sunrise))
        

        Mit der Funktion mit dem Konvertierungsscript, siehe URL oben, kannst Du Dir das Format beliebig zusammenstellen.

        Vorletzter Zeile:

        msg.payload = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;
        

        Gibt das Datum als: 2015-05-03 11:56:20 aus.

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Antwort Letzte Antwort
        0
        • derAugeD Offline
          derAugeD Offline
          derAuge
          schrieb am zuletzt editiert von
          #5

          Habe (nach Datenverlust node-red Update) den Flow wieder eingerichtet und den Anweisungen von ruhr70 gefolgt (Danke für die Erklärungen).

          Nun wird das UNIX-Datum sauber gewandelt

          Nun stellt sich die Frage:

          schicken die falsche Infos?

          • Wetter.Borken.Sonnenaufgang 15:58:45
          Wetter.Borken.Sonnenuntergang 15:59:45 
          

          315_wetter_zeit_ferhlerhaft.png

          ! [{"id":"fa31ff8f.80d708","type":"inject","name":"Start","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":97,"y":117,"z":"2cd3b4a8.0e4174","wires":[["506d3a8c.ac6554"]]},{"id":"506d3a8c.ac6554","type":"http request","name":"holt Wetterinfo für Borken über api (openwethermap)","method":"GET","ret":"obj","url":"http://api.openweathermap.org/data/2.5/ … 74":[["eb988301.d6d57","3ad3ca90.978a16"]]},{"id":"eb988301.d6d57","type":"function","name":"Daten extrahieren","func":"msg1 = {};\nmsg1.payload = msg.payload.main.temp;\nmsg2 = {};\nmsg2.payload = msg.payload.main.pressure;\nmsg3 = {};\nmsg3.payload = msg.payload.main.humidity;\nmsg4 = {};\nmsg4.payload = msg.payload.wind.speed;\nmsg5 = {};\nmsg5.payload = msg.payload.wind.deg;\nmsg6 = {};\nmsg6.payload = msg.payload.weather[0].description;\nmsg7 = {};\nmsg7.payload = msg.payload.sys.sunrise;\nmsg8 = {};\nmsg8.payload = msg.payload.sys.sunset;\nmsg9 = {};\n\nmsg10 = {};\n// Koordinate inkl. Marker\nmsg10.payload = "http://www.openstreetmap.org/?mlon=" \n + msg.payload.coord.lon + "&mlat="\n + msg.payload.coord.lat + "&zoom=17#map=17/" // Zoom Stufe 17 (beide Werte anpssen, wenn Änderung gewünscht)\n + msg.payload.coord.lat + "/"\n + msg.payload.coord.lon;\n\nreturn [msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,msg10];","outputs":"10","noerr":0,"x":136,"y":314,"z":"2cd3b4a8.0e4174","wires":[["cf581be3.4d61c"],["a77254f5.4b33f"],["a108d2f6.73ac08"],["725a5cf7.76233c"],["cecc69dd.611648"],["2d946d5c.6c9cea"],["3a9fad41.c56052","1564d9c4.ea9b26"],["7c8cb6a1.837348","6cd46de8.932b94"],[],["30ce4c89.0a7d74","a708b0e9.397e78"]]},{"id":"cf581be3.4d61c","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Temperatur","ack":"true","autoCreate":"true","x":861.396728515625,"y":20,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"a77254f5.4b33f","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Luftdruck","ack":"true","autoCreate":"true","x":867.8253173828125,"y":70.4605712890625,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"a108d2f6.73ac08","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Luftfeuchtigkeit","ack":"true","autoCreate":"true","x":852.396728515625,"y":120.6033935546875,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"725a5cf7.76233c","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Windgeschwindigkeit","ack":"true","autoCreate":"true","x":837.25390625,"y":170.88922119140625,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"cecc69dd.611648","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Windrichtung","ack":"true","autoCreate":"true","x":861.396728515625,"y":219.8890380859375,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"2d946d5c.6c9cea","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.WetterBeschreibung","ack":"true","autoCreate":"true","x":841.6824951171875,"y":270.1746826171875,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"e05ce497.e20268","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Sonnenaufgang","ack":"true","autoCreate":"true","x":858.6824951171875,"y":325.8890380859375,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"c78b0c07.5cbd98","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Sonnenuntergang","ack":"true","autoCreate":"true","x":852.5396728515625,"y":424.7462463378906,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"30ce4c89.0a7d74","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.OpenstreetmapURL","ack":"true","autoCreate":"true","x":451.825439453125,"y":562.6033935546875,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"a708b0e9.397e78","type":"debug","name":"","active":true,"console":"false","complete":"false","x":337,"y":611,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"3ad3ca90.978a16","type":"debug","name":"","active":true,"console":"false","complete":"false","x":558,"y":23,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"3a9fad41.c56052","type":"function","name":"wandelt timestamp // Zeit aus dem Payload","func":"// (1) wandelt timestamp ins ISO Datumformat um\n//msg.timestamp= new Date().toISOString()\n\n// (2) beliebiges Datum festlegbar: hier: YYYY-MM-DD HH:MM.SS\n// (Ausgabeformat wird danz am Ende zusammengestellt)\nvar now = new Date(msg.payload); // Zeit aus dem Payload\nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n//msg.timestamp = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;\nmsg.payload = hour+':'+minute+':'+second;\n\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":334,"z":"2cd3b4a8.0e4174","wires":[["e05ce497.e20268","f99ef869.066108"]]},{"id":"7c8cb6a1.837348","type":"function","name":"wandelt timestamp // Zeit aus dem Payload","func":"// (1) wandelt timestamp ins ISO Datumformat um\n//msg.timestamp= new Date().toISOString()\n\n// (2) beliebiges Datum festlegbar: hier: YYYY-MM-DD HH:MM.SS\n// (Ausgabeformat wird danz am Ende zusammengestellt)\nvar now = new Date(msg.payload); // Zeit aus dem Payload\nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n//msg.timestamp = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;\nmsg.payload = hour+':'+minute+':'+second;\n\nreturn msg;","outputs":1,"noerr":0,"x":469,"y":426,"z":"2cd3b4a8.0e4174","wires":[["c78b0c07.5cbd98","4ded2049.b212e"]]},{"id":"1564d9c4.ea9b26","type":"debug","name":"","active":true,"console":"false","complete":"false","x":565,"y":374,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"f99ef869.066108","type":"debug","name":"","active":true,"console":"false","complete":"false","x":765,"y":373,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"6cd46de8.932b94","type":"debug","name":"","active":true,"console":"false","complete":"false","x":552,"y":469,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"4ded2049.b212e","type":"debug","name":"","active":true,"console":"false","complete":"false","x":753,"y":471,"z":"2cd3b4a8.0e4174","wires":[]}]
          oder habe ich etwas verbogen?

          Gruß

          Jürgen

          PS.: Leider funktioniert "var isoZeit = new Date(mparseInt(sg.payload.sys.sunrise))" nicht

          1 Antwort Letzte Antwort
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            schrieb am zuletzt editiert von
            #6

            @derAuge:

            PS.: Leider funktioniert "var isoZeit = new Date(mparseInt(sg.payload.sys.sunrise))" nicht `

            Da fehlt mindestens ein "m" (schon bei mir oben).

            msg.payload, nicht sg.payload

            Adapter: Fritzbox, Unify Circuit
            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

            1 Antwort Letzte Antwort
            0
            • derAugeD Offline
              derAugeD Offline
              derAuge
              schrieb am zuletzt editiert von
              #7

              @ruhr70:

              @derAuge:

              PS.: Leider funktioniert "var isoZeit = new Date(mparseInt(sg.payload.sys.sunrise))" nicht `

              Da fehlt mindestens ein "m" (schon bei mir oben).

              msg.payload, nicht sg.payload `

              //var isoZeit = new Date(mparseInt(msg.payload.sys.sunrise));
              //msg.payload = isoZeit;
              
              msg.payload = new Date(mparseInt(msg.payload.sys.sunrise));
              return msg;
              
              

              :(

              Cannot read property 'sunrise' of undefined
              
              
              1 Antwort Letzte Antwort
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                schrieb am zuletzt editiert von
                #8

                @derAuge:

                Habe (nach Datenverlust node-red Update) den Flow wieder eingerichtet und den Anweisungen von ruhr70 gefolgt (Danke für die Erklärungen).

                Nun wird das UNIX-Datum sauber gewandelt

                Nun stellt sich die Frage:

                schicken die falsche Infos?

                • Wetter.Borken.Sonnenaufgang 15:58:45
                Wetter.Borken.Sonnenuntergang 15:59:45 ` 
                

                Adapter: Fritzbox, Unify Circuit
                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                1 Antwort Letzte Antwort
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  schrieb am zuletzt editiert von
                  #9

                  So, habe mir das angesehen (mit den falschen Zeiten).

                  Dir fehlen ein paar Sekunden.

                  Dein msg.payload liefert die Sekunden seit dem 1.1.1970.

                  Die Funktion:

                  var now = new Date(msg.payload); // Zeit aus dem Payload
                  

                  Arbeitet mir den Millisekunden seit dem 1.1.1970

                  Du musst msg.payload noch mit 1.000 multiplizieren. Dann stimmen auch die Zeiten.

                  Wg. dem ISO habe ich noch nicht geschaut.

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Antwort Letzte Antwort
                  0
                  • derAugeD Offline
                    derAugeD Offline
                    derAuge
                    schrieb am zuletzt editiert von
                    #10

                    @ruhr70:

                    Dein msg.payload liefert die Sekunden seit dem 1.1.1970. `

                    Ist das nun bei mir ? Wenn JA, wo kommt das her?

                    Habe den Flow angepasst. und nun gefällt mir auch der Sonnenaufgang :)

                    Die Funktion für die Umrechnung:

                    // (1) wandelt timestamp ins ISO Datumformat um
                    //msg.timestamp= new Date().toISOString()
                    
                    // (2) beliebiges Datum festlegbar: hier: YYYY-MM-DD HH:MM.SS
                    //     (Ausgabeformat wird danz am Ende zusammengestellt)
                    var now     = new Date(msg.payload * 1000); // Zeit aus dem Payload
                    var year    = now.getFullYear();
                    var month   = now.getMonth()+1; 
                    var day     = now.getDate();
                    var hour    = now.getHours();
                    var minute  = now.getMinutes();
                    var second  = now.getSeconds(); 
                    if(month.toString().length == 1) {
                    var month = '0'+month;
                    }
                    if(day.toString().length == 1) {
                    var day = '0'+day;
                    }   
                    if(hour.toString().length == 1) {
                    var hour = '0'+hour;
                    }
                    if(minute.toString().length == 1) {
                    var minute = '0'+minute;
                    }
                    if(second.toString().length == 1) {
                    var second = '0'+second;
                    } 
                    //msg.timestamp = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;
                    msg.payload = day+'.'+month+'.'+year+' - '+hour+':'+minute+':'+second;
                    
                    return msg;
                    
                    

                    erzeugt nun auch eine saubere Ausgabe

                    • Wetter.Borken.Sonnenaufgang 09.07.2015 - 05:24:22 true node-red.0 2015-07-09 08:20:03 2015-07-09 07:23:03
                    Wetter.Borken.Sonnenuntergang 09.07.2015 - 21:50:30 true node-red.0 2015-07-09 08:20:03 2015-07-09 07:23:03 
                    

                    Der überarbeitete Flow:

                    ! [{"id":"fa31ff8f.80d708","type":"inject","name":"Start # Jede Minute","topic":"","payload":"","payloadType":"none","repeat":"60","crontab":"","once":true,"x":135,"y":104,"z":"2cd3b4a8.0e4174","wires":[["506d3a8c.ac6554"]]},{"id":"506d3a8c.ac6554","type":"http request","name":"holt Wetterinfo für Borken über api (openwethermap)","method":"GET","ret":"obj","url":"http://api.openweathermap.org/data/2.5/ … 74":[["eb988301.d6d57","3ad3ca90.978a16"]]},{"id":"eb988301.d6d57","type":"function","name":"Daten extrahieren","func":"msg1 = {};\nmsg1.payload = msg.payload.main.temp;\nmsg2 = {};\nmsg2.payload = msg.payload.main.pressure;\nmsg3 = {};\nmsg3.payload = msg.payload.main.humidity;\nmsg4 = {};\nmsg4.payload = msg.payload.wind.speed;\nmsg5 = {};\nmsg5.payload = msg.payload.wind.deg;\nmsg6 = {};\nmsg6.payload = msg.payload.weather[0].description;\nmsg7 = {};\nmsg7.payload = msg.payload.sys.sunrise;\nmsg8 = {};\nmsg8.payload = msg.payload.sys.sunset;\nmsg9 = {};\n\nmsg10 = {};\n// Koordinate inkl. Marker\nmsg10.payload = "http://www.openstreetmap.org/?mlon=" \n + msg.payload.coord.lon + "&mlat="\n + msg.payload.coord.lat + "&zoom=10#map=10/" // Zoom Stufe 17 (beide Werte anpssen, wenn Änderung gewünscht)\n + msg.payload.coord.lat + "/"\n + msg.payload.coord.lon;\n\nreturn [msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,msg10];","outputs":"10","noerr":0,"x":136,"y":314,"z":"2cd3b4a8.0e4174","wires":[["cf581be3.4d61c"],["a77254f5.4b33f"],["a108d2f6.73ac08"],["725a5cf7.76233c"],["cecc69dd.611648"],["2d946d5c.6c9cea"],["3a9fad41.c56052","1564d9c4.ea9b26"],["7c8cb6a1.837348","6cd46de8.932b94"],[],["30ce4c89.0a7d74","a708b0e9.397e78"]]},{"id":"cf581be3.4d61c","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Temperatur","ack":"true","autoCreate":"true","x":861.396728515625,"y":20,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"a77254f5.4b33f","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Luftdruck","ack":"true","autoCreate":"true","x":867.8253173828125,"y":70.4605712890625,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"a108d2f6.73ac08","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Luftfeuchtigkeit","ack":"true","autoCreate":"true","x":852.396728515625,"y":120.6033935546875,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"725a5cf7.76233c","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Windgeschwindigkeit","ack":"true","autoCreate":"true","x":837.25390625,"y":170.88922119140625,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"cecc69dd.611648","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Windrichtung","ack":"true","autoCreate":"true","x":861.396728515625,"y":219.8890380859375,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"2d946d5c.6c9cea","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.WetterBeschreibung","ack":"true","autoCreate":"true","x":841.6824951171875,"y":270.1746826171875,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"e05ce497.e20268","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Sonnenaufgang","ack":"true","autoCreate":"true","x":858.6824951171875,"y":325.8890380859375,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"c78b0c07.5cbd98","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.Sonnenuntergang","ack":"true","autoCreate":"true","x":852.5396728515625,"y":424.7462463378906,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"30ce4c89.0a7d74","type":"ioBroker out","name":"","topic":"node-red.0.Wetter.Borken.OpenstreetmapURL","ack":"true","autoCreate":"true","x":451.825439453125,"y":562.6033935546875,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"a708b0e9.397e78","type":"debug","name":"","active":true,"console":"false","complete":"false","x":337,"y":611,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"3ad3ca90.978a16","type":"debug","name":"","active":true,"console":"false","complete":"false","x":558,"y":23,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"3a9fad41.c56052","type":"function","name":"wandelt timestamp // Zeit aus dem Payload","func":"// (1) wandelt timestamp ins ISO Datumformat um\n//msg.timestamp= new Date().toISOString()\n\n// (2) beliebiges Datum festlegbar: hier: YYYY-MM-DD HH:MM.SS\n// (Ausgabeformat wird danz am Ende zusammengestellt)\nvar now = new Date(msg.payload * 1000); // Zeit aus dem Payload\nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n//msg.timestamp = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;\nmsg.payload = day+'.'+month+'.'+year+' - '+hour+':'+minute+':'+second;\n\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":334,"z":"2cd3b4a8.0e4174","wires":[["e05ce497.e20268","f99ef869.066108"]]},{"id":"7c8cb6a1.837348","type":"function","name":"wandelt timestamp // Zeit aus dem Payload","func":"// (1) wandelt timestamp ins ISO Datumformat um\n//msg.timestamp= new Date().toISOString()\n\n// (2) beliebiges Datum festlegbar: hier: YYYY-MM-DD HH:MM.SS\n// (Ausgabeformat wird danz am Ende zusammengestellt)\nvar now = new Date(msg.payload * 1000); // Zeit aus dem Payload\nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n//msg.timestamp = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;\nmsg.payload = day+'.'+month+'.'+year+' - '+hour+':'+minute+':'+second;\n\nreturn msg;","outputs":1,"noerr":0,"x":469,"y":426,"z":"2cd3b4a8.0e4174","wires":[["c78b0c07.5cbd98","4ded2049.b212e"]]},{"id":"1564d9c4.ea9b26","type":"debug","name":"","active":true,"console":"false","complete":"false","x":460,"y":366,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"f99ef869.066108","type":"debug","name":"","active":true,"console":"false","complete":"false","x":765,"y":373,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"6cd46de8.932b94","type":"debug","name":"","active":true,"console":"false","complete":"false","x":459,"y":456,"z":"2cd3b4a8.0e4174","wires":[]},{"id":"4ded2049.b212e","type":"debug","name":"","active":true,"console":"false","complete":"false","x":753,"y":471,"z":"2cd3b4a8.0e4174","wires":[]}]

                    Gruß

                    Jürgen

                    1 Antwort Letzte Antwort
                    0
                    • C Offline
                      C Offline
                      chefffe
                      schrieb am zuletzt editiert von
                      #11

                      Hallo,

                      ich nutze die openweather API und möchte mir Sonnenaufgang/-untergang anzeigen lassen.

                      Ich habe nach diese Anleitung benutzt, funktioniert auch alles soweit.

                      Habe lediglich noch das Problem das ich derzeit -2 Stunden Zeitverschiebung habe in der Anzeige.

                      Ich weiß das es sich hier um die UTC Zeitangabe handelt.

                      Wie bringe ich meinem Node Red bzw dem Raspberry bei meine Zeitzone bei der Berechnung zu berücksichtigen?

                      Die Zeitzone am Raspberry ist richtig eingestellt.

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      647

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe