{"id":880,"date":"2020-03-12T12:51:49","date_gmt":"2020-03-12T11:51:49","guid":{"rendered":"https:\/\/db0usd.ralsu.de\/wordpress\/?p=880"},"modified":"2020-09-25T12:11:13","modified_gmt":"2020-09-25T10:11:13","slug":"12-03-2020-db0usd-sendet-nachrichten-und-termine-aus-dem-darc-distrikt-h","status":"publish","type":"post","link":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/2020\/03\/12\/12-03-2020-db0usd-sendet-nachrichten-und-termine-aus-dem-darc-distrikt-h\/","title":{"rendered":"12.03.2020 DB0USD sendet Nachrichten und Termine aus dem DARC Distrikt H"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"alignright\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/db0usd.itbos.eu\/wordpress\/wp-content\/uploads\/2020\/03\/WhatsApp-Image-2020-03-12-at-12.51.32-150x150.jpeg\" alt=\"\" class=\"wp-image-882\"\/><figcaption>News und Termine aus dem Distrikt H auf dem DAPNET-Pager<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Naja, wie das im Journalismus \u00fcblich ist &#8211; die Headline trifft bildet die Wahrheit nur vereinfacht ab. Der eigentliche DMR-Repeater hat ehrlicherweise mit dem Ganzen nur insoweit zu tun, dass er Namensgeber f\u00fcr den DAPNET-Bot ist und dort wo der Bot zu Hause ist, werden jetzt auch Nachrichten in die Rubrik <strong>dl-ni<\/strong> eingespielt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Idee ist aus einer Diskussion in der DAPNET-Telegram-Gruppe entstanden, in der es darum ging, ob man &#8220;verwaiste&#8221; Rubriken nicht neu\/anders zu nutzen. Vorweg, die Rubrik <strong>dl-ni<\/strong> ist nicht verwaist, aber etwas mehr &#8220;Traffic&#8221; schadet ja nicht. Es musste also ein Content her, der a) f\u00fcr Funkamateure interessant ist und b) m\u00f6glichst ohne zus\u00e4tzliche manuelle Handarbeit auskommt, denn das ist langfristig fast immer ein Killerfaktor bei solchen Informationsdiensten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach einem kurzen Austausch mit Karsten DC7OS (Admin der Rubrik), wurde die Idee geboren die Termine des Distriktes von seiner Webseite zu verarbeiten. Nach einer ersten Probesendung kam dann noch die \u00dcberlegung mit dem RSS-Feed des Distriktes hinzu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ob das in der jetzigen neuen Form gut ankommt oder ver\u00e4ndert\/verbessert werden sollte, das m\u00fcsst ihr entscheiden &#8211; scheut nicht davor zur\u00fcck Karsten oder mich zu kontaktieren. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Wie funktioniert das Ganze?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Auf dem Server, der den DAPNET-Bot sowie das Dashboard von db0usd und diese Webseite hostet, laufen seit gestern zwei Skripte unter dem Arbeitstitel dapnet_news. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das erste Skript liest eine von DC7OS auf seiner Webseite bereitgestellte ICalendar-Datei (.ics) die im Wesentlichen Termine vom DARC Distrikt H enth\u00e4lt. Hier werden zweimal t\u00e4glich (7:55 und 17:55) die Termine ausgelesen und f\u00fcr das DAPNET aufbereitet (Zeichen ersetzen und W\u00f6rter abk\u00fcrzen um die Nachrichtenl\u00e4nge m\u00f6glichst sinnvoll begrenzen). Neben den tagesaktuellen Terminen gibt es dann noch eine Vorschau auf die n\u00e4chsten Tage. Insgesamt sind daf\u00fcr die Nachrichten-Positionen 6-10 in der Rubrik &#8220;reserviert&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das zweite Skript bedient sich am RSS-Feed des Distrikts H auf der DARC-Webseite und pr\u00fcft dort die Nachrichten. Die erste Nachricht aus dem Feed wird in der Rubrik auf der Position 5 abgelegt. Das Skript l\u00e4uft jeweils 5 Minuten vor der vollen Stunde, und sendet nur eine neue Rubrikennachricht, wenn sich die &#8220;Topnews&#8221; im Feed ge\u00e4ndert hat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Laufzeit der Skripte 5 Minuten vor der vollen Stunde ist mit Blick auf die Rubrikenaussendung geplant. So ist sichergestellt, dass Skriptlauf, RIC-basierte Aussendung (erfolgt sofort mit dem Ablegen der Nachricht in der Rubrik) und die Rubrikenaussendung zur vollen Stunde m\u00f6glichst dicht beieinander sind.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Die technische Seite<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Realisiert wurde das ganze in meiner Lieblings-Skriptsprache Python. F\u00fcr das Auslesen der Quelldaten werden die Module icalendar und feedparser ben\u00f6tigt. Der Rest ist recht unspektakul\u00e4res Umrechnen und Formatieren von Zeitangaben, Ersetzen von W\u00f6rtern und Zeichen und Erzeugen von JSON-Datens\u00e4tzen f\u00fcr den Upload ins DAPNET via hampager.de.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei bin ich \u00fcbrigens \u00fcber eine kleine Kante gestolpert: ich habe in meinem Leichtsinn gedacht, dass ich ein JSON-Array (also mehrere Nachrichten auf einmal) an die API \u00fcbergeben k\u00f6nnte &#8211; das versteht sie aber nicht und antwortet mit einem 400:bad request und nicht wie erwartet mit einem 201:created. Ist kein Beinbruch, so sendet das Skript halt f\u00fcr jede Nachricht einen eigenen http-Request &#8211; muss man nur wissen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auf dem Server laufen die Skripte nun als cron-Job und brauchen hoffentlich nie wieder angefasst zu werden<strong> \ud83d\ude09 <\/strong>ok, ICS-Skript wird auf jeden Fall noch mal umgebaut, da auch hier eine Pr\u00fcfung rein muss, ob sich \u00fcberhaupt der Content ge\u00e4ndert hat, denn falls nicht, muss man ihn auch nicht unn\u00f6tig senden und hunderte Meldeempf\u00e4nger piepen lassen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die beiden Skripte sind als Source im Github ver\u00f6ffentlicht und d\u00fcrfen gerne f\u00fcr eigene Projekte verwendet werden. \u00dcber eine kurze Info wo und wie ihr das einsetzt w\u00fcrde ich mich sehr freuen .<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Links<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Quellcode der Skripte auf github | <a rel=\"noreferrer noopener\" aria-label=\" (\u00f6ffnet in neuem Tab)\" href=\"https:\/\/github.com\/do6uk\/dapnet_news\/\" target=\"_blank\">https:\/\/github.com\/do6uk\/dapnet_news\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">private Webseite von Karsten DC7OS | <a href=\"https:\/\/dc7os.darc.de\/\">https:\/\/dc7os.darc.de\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Webseite des Distriktes H | <a href=\"https:\/\/www.darc.de\/der-club\/distrikte\/h\/\">https:\/\/www.darc.de\/der-club\/distrikte\/h\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Naja, wie das im Journalismus \u00fcblich ist &#8211; die Headline trifft bildet die Wahrheit nur vereinfacht ab. Der eigentliche DMR-Repeater hat ehrlicherweise mit dem Ganzen nur insoweit zu tun, dass er Namensgeber f\u00fcr den DAPNET-Bot ist und dort wo der Bot zu Hause ist, werden jetzt auch Nachrichten in die Rubrik dl-ni eingespielt. Die Idee [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":882,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,19,3],"tags":[16,17,18],"class_list":["post-880","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-dapnet-bot","category-meilensteine","tag-dapnet","tag-darc","tag-h34"],"_links":{"self":[{"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=880"}],"version-history":[{"count":2,"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/880\/revisions"}],"predecessor-version":[{"id":884,"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/880\/revisions\/884"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/media\/882"}],"wp:attachment":[{"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/db0usd.itbos.eu\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}