{"id":14241,"date":"2020-03-21T15:03:30","date_gmt":"2020-03-21T14:03:30","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=14241"},"modified":"2020-03-21T15:04:16","modified_gmt":"2020-03-21T14:04:16","slug":"corona-dashboard-mit-nodered-erstellen","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=14241","title":{"rendered":"Corona Dashboard mit NodeRed erstellen"},"content":{"rendered":"<p>Auf meinem Raspberry Pi l\u00e4uft NodeRed. Damit kann man schnell eine Coron-Dashboard f\u00fcr Deutschland (oder jedes andere Land) erstellen. Es wird jede Stunde aus den Daten des CSSE via REST-API https:\/\/covid19.mathdro.id\/api\/confirmed gespeist.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-gui.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-gui.png\" alt=\"\" width=\"844\" height=\"1538\" class=\"aligncenter size-full wp-image-14242\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-gui.png 844w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-gui-165x300.png 165w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-gui-562x1024.png 562w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-gui-768x1400.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-gui-843x1536.png 843w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Daf\u00fcr einmalig die <a href=\"https:\/\/flows.nodered.org\/node\/node-red-dashboard\" rel=\"noopener noreferrer\" target=\"_blank\">GUI Elemente<\/a> installieren \u00fcber: <strong>npm install node-red-dashboard<\/strong> oder<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/gui-node-red.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/gui-node-red.png\" alt=\"\" width=\"1418\" height=\"580\" class=\"aligncenter size-full wp-image-14245\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/gui-node-red.png 1418w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/gui-node-red-300x123.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/gui-node-red-1024x419.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/gui-node-red-768x314.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Dann diese Nodes zusammenklicken:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red.png\" alt=\"\" width=\"2154\" height=\"394\" class=\"aligncenter size-full wp-image-14247\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red.png 2154w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red-300x55.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red-1024x187.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red-768x140.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red-1536x281.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-flow-node-red-2048x375.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>oder von hier importieren:<!--more--><\/p>\n<pre class=\"lang:default decode:true \" >[\r\n    {\r\n        \"id\": \"622e582b.b2261\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"www.wenzlaff.info\",\r\n        \"info\": \"\",\r\n        \"x\": 450,\r\n        \"y\": 480,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"8c6d68f.1965618\",\r\n        \"type\": \"inject\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Jede Stunde\",\r\n        \"topic\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"repeat\": \"3600\",\r\n        \"crontab\": \"\",\r\n        \"once\": false,\r\n        \"onceDelay\": 0.1,\r\n        \"x\": 140,\r\n        \"y\": 540,\r\n        \"wires\": [\r\n            [\r\n                \"3198308f.b1d0b\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"3198308f.b1d0b\",\r\n        \"type\": \"http request\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Covid-19 abfragen f\u00fcr Deutschland\",\r\n        \"method\": \"GET\",\r\n        \"ret\": \"obj\",\r\n        \"paytoqs\": false,\r\n        \"url\": \"https:\/\/covid19.mathdro.id\/api\/confirmed\",\r\n        \"tls\": \"\",\r\n        \"persist\": false,\r\n        \"proxy\": \"\",\r\n        \"authType\": \"basic\",\r\n        \"x\": 280,\r\n        \"y\": 600,\r\n        \"wires\": [\r\n            [\r\n                \"1e19af2c.3c92f1\",\r\n                \"e935b158.b1c868\",\r\n                \"bb021e94.c516c8\",\r\n                \"85336713.7e3e5\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"71ae5876.b57de8\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"via Service von https:\/\/covid19.mathdro.id\/api\/confirmed\",\r\n        \"info\": \"\",\r\n        \"x\": 830,\r\n        \"y\": 480,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"8e007bf2.5451c8\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"covid-19 Live-Ticker f\u00fcr Deutschland\",\r\n        \"info\": \"\",\r\n        \"x\": 190,\r\n        \"y\": 480,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"f7ef9b21.d54418\",\r\n        \"type\": \"ui_gauge\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Best\u00e4tigt\",\r\n        \"group\": \"9a7db4b9.81f32\",\r\n        \"order\": 0,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"gtype\": \"gage\",\r\n        \"title\": \"Best\u00e4tigt\",\r\n        \"label\": \"Personen\",\r\n        \"format\": \"{{msg.payload | number:0}}\",\r\n        \"min\": 0,\r\n        \"max\": \"50000\",\r\n        \"colors\": [\r\n            \"#e5e500\",\r\n            \"#e6e600\",\r\n            \"#e5e500\"\r\n        ],\r\n        \"seg1\": \"\",\r\n        \"seg2\": \"\",\r\n        \"x\": 880,\r\n        \"y\": 540,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"1e19af2c.3c92f1\",\r\n        \"type\": \"function\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Wert ermitteln\",\r\n        \"func\": \"\/\/ Hier das gew\u00fcnschte Land angeben\\nvar land = \\\"Germany\\\"\\n\\n\/\/ Suche den Index des Land\\nfor (var i = 0; i &lt; msg.payload.length; i++){\\n    if (msg.payload[i].countryRegion == land ){\\n        land = i\\n        break\\n    }\\n}        \\n\\nvar anzahl = msg.payload[land].confirmed\\n\\nmsg.payload = anzahl\\n\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"x\": 700,\r\n        \"y\": 540,\r\n        \"wires\": [\r\n            [\r\n                \"f7ef9b21.d54418\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"7f979e06.0f8f38\",\r\n        \"type\": \"ui_gauge\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Gestorben\",\r\n        \"group\": \"9a7db4b9.81f32\",\r\n        \"order\": 0,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"gtype\": \"gage\",\r\n        \"title\": \"Gestorben\",\r\n        \"label\": \"Personen\",\r\n        \"format\": \"{{msg.payload | number:0}}\",\r\n        \"min\": 0,\r\n        \"max\": \"500\",\r\n        \"colors\": [\r\n            \"#ff4f3e\",\r\n            \"#ff4c36\",\r\n            \"#ff493f\"\r\n        ],\r\n        \"seg1\": \"\",\r\n        \"seg2\": \"\",\r\n        \"x\": 890,\r\n        \"y\": 580,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"e935b158.b1c868\",\r\n        \"type\": \"function\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Wert ermitteln\",\r\n        \"func\": \"\/\/ Hier das gew\u00fcnschte Land angeben\\nvar land = \\\"Germany\\\"\\n\\n\/\/ Suche den Index des Land\\nfor (var i = 0; i &lt; msg.payload.length; i++){\\n    if (msg.payload[i].countryRegion == land ){\\n        land = i\\n        break\\n    }\\n}        \\n\\nvar anzahl = msg.payload[land].deaths\\n\\nmsg.payload = anzahl\\n\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"x\": 700,\r\n        \"y\": 580,\r\n        \"wires\": [\r\n            [\r\n                \"7f979e06.0f8f38\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"76728699.1a9478\",\r\n        \"type\": \"ui_gauge\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Genesen\",\r\n        \"group\": \"9a7db4b9.81f32\",\r\n        \"order\": 0,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"gtype\": \"gage\",\r\n        \"title\": \"Genesen\",\r\n        \"label\": \"Personen\",\r\n        \"format\": \"{{msg.payload | number:0}}\",\r\n        \"min\": 0,\r\n        \"max\": \"500\",\r\n        \"colors\": [\r\n            \"#46b22a\",\r\n            \"#e6e600\",\r\n            \"#ca3838\"\r\n        ],\r\n        \"seg1\": \"\",\r\n        \"seg2\": \"\",\r\n        \"x\": 880,\r\n        \"y\": 620,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"bb021e94.c516c8\",\r\n        \"type\": \"function\",\r\n        \"z\": \"884ebfce.72d028\",\r\n        \"name\": \"Wert ermitteln\",\r\n        \"func\": \"\/\/ Hier das gew\u00fcnschte Land angeben\\nvar land = \\\"Germany\\\"\\n\\n\/\/ Suche den Index des Land\\nfor (var i = 0; i &lt; msg.payload.length; i++){\\n    if (msg.payload[i].countryRegion == land ){\\n        land = i\\n        break\\n    }\\n}        \\n\\nvar anzahl = msg.payload[land].recovered\\n\\nmsg.payload = anzahl\\n\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"x\": 700,\r\n        \"y\": 620,\r\n        \"wires\": [\r\n            [\r\n                \"76728699.1a9478\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"9a7db4b9.81f32\",\r\n        \"type\": \"ui_group\",\r\n        \"z\": \"\",\r\n        \"name\": \"Covid-19 in Deutschland\",\r\n        \"tab\": \"9f205757.68494\",\r\n        \"disp\": true,\r\n        \"width\": \"6\",\r\n        \"collapse\": false\r\n    },\r\n    {\r\n        \"id\": \"9f205757.68494\",\r\n        \"type\": \"ui_tab\",\r\n        \"z\": \"\",\r\n        \"name\": \"wenzlaff.de\",\r\n        \"icon\": \"dashboard\",\r\n        \"disabled\": false,\r\n        \"hidden\": false\r\n    }\r\n]<\/pre>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-schutz.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-schutz.png\" alt=\"\" width=\"920\" height=\"720\" class=\"aligncenter size-full wp-image-14250\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-schutz.png 920w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-schutz-300x235.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-schutz-768x601.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auf meinem Raspberry Pi l\u00e4uft NodeRed. Damit kann man schnell eine Coron-Dashboard f\u00fcr Deutschland (oder jedes andere Land) erstellen. Es wird jede Stunde aus den Daten des CSSE via REST-API https:\/\/covid19.mathdro.id\/api\/confirmed gespeist. Daf\u00fcr einmalig die GUI Elemente installieren \u00fcber: npm install node-red-dashboard oder Dann diese Nodes zusammenklicken: oder von hier importieren:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,2520,1023,2713],"tags":[3925,3947,252,680,2824,282],"class_list":["post-14241","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-node-red","category-raspberry-pi","category-statistik","tag-corona","tag-covid-19-dashboard","tag-dashboard","tag-gui","tag-nodered","tag-virus"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/14241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14241"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/14241\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14241"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}