Putty, SSH und Server refused our key

Du hast dir die Mühe gemacht, deinen Debian oder Linux-Server mit Pubkey-Zertifikaten abzusichern und nun bekommst du bei einem neuen Server dauernd die Meldung „Server refused our key“, wenn du dich per Putty verbinden willst?

Hast Du eventuell auch Debian 12, bookworm neu installiert?

Was bisher immer tadellos funktionierte, benötigt offensichtlich nun eine extra Zeile in der

/etc/ssh/sshd_config

PubkeyAcceptedAlgorithms +ssh-rsa

starte danach deinen SSH-Server neu mit:

$ sudo systemctl restart sshd

und der Login über deinen Schlüssel sollte wie bisher weiter funktionieren.

Du kannst im Vorfeld auch selbst überprüfen, ob die Einschränkung des Algorithmus die Ursache ist:
Dazu hast du die Möglichkeit, den Loginprozess auf den SSH-Server zu mitzuloggen, bzw. die Ausgaben live abzusehen.

Starte hierzu einen extra SSH-Serverprozess auf der Linux-Shell mit z.B. Port 2020

sudo `which sshd` -p 2020 -Dd

Du bekommst dann schonmal rund 13 Zeilen Debug-Ausgaben mit dem Hinweis, dass der Server nun an Port 2020 lauscht.
Nun kannst du dich vom Client her, z.B. Putty, auf diesen Port verbinden und dabei wie gewohnt deinen Private-Key mit einbinden.

Wenn bei den Debug-Ausgaben auf dem Linux-Rechner dabei folgende Zeile enthalten ist:

debug1: userauth-request for user mustermax service ssh-connection method publickey [preauth]

, dann ist das der definitive Hinweis, dass du die oben erwähnte Zeile (PubkeyAcceptedAlgorithms +ssh-rsa) in die SSH-Config eintragen darfst.


Copenhagen Trackers – meine Erfahrung

Ein kleiner GPS-Tracker, ohne Bezahl-Subscribtion, der batteriebetrieben jahrelange durchhält und nur bei Bedarf seine Koordinaten sendet? Wäre zu schön gewesen, um wahr zu sein.

Zugegeben, es war ein Experiment. Die Rezensionen einiger Käufer im Internet und auch im Appstore haben schon angedeutet, dass es einen gewissen „Funktionsvarianz“ gibt. Also entweder gehört man zu den Käufern, bei denen das Gerät funktioniert, oder eben nicht.

Heute habe ich Gewissheit: Der sogenannte Cobblestone GPS-Tracker funktioniert bei mir NICHT. Oder genauer: Nicht mehr.

Am 07. Juli 2023 in Betrieb genommen, hatte er anfangs täglich mindestens ein Mal die Position eines „beweglichen Objektes“ gesendet. Auch wenn das Fahrzeug mehrer Tage geparkt war, vermeldete der Tracker trotzdem gelegentlich etwas „Bewegung“. Vielleicht aufgeweckt durch Vibrationen, wer weiß das schon?

Nach 17. Juli schon beschloss das Gerät, die erste längere Auszeit zu nehmen. Ein Zwischenstop in Münster, und dort blieb die Position dann „hängen“. Bis zum 7. August, als der Tracker urplötzlich wieder aktuelle Koordinaten meldete – und das sogar in Frankreich. Doch der Zauber hielt nicht lange an, denn am 11. August beschloss das Gerät, wieder seine Arbeit einzustellen.

Nun reichts. Das Gerät geht zurück zum Verkäufer. Schade drum. Meine Erfahrungen mit dem Cobblestone GPS-Tracker befinden damit leider auf dem Niveau von Elektromüll.


https://cphtrackers.com

Internet im Wohnmobil

Um im WoMo vernünftigen Mobilfunk-Empfang zu haben, habe ich auf das Dach eine 5G-Empfangsantenne montiert.
Eine heikle Angelegenheit, wenn man betrachtet, dass man dadurch ein Loch durch das Dach bohren muss, das einen sonst zuverlässig davor bewahrt, dass man bei Regen nass wird.

Als Antenne habe ich mich für die 5G-Antenne von FTS-Hennig entschieden. Nach etlichen Versuchen, dort jemand an die Strippe zu bekommen, war ich irgendwann erfolgreich. Meine Frage nach den Unterschieden zwischen den verschiedenen Modelle im Shop wurde damit beantwortet, dass die alle sehr ähnlich seien, aber sie aufgrund der vorhandenen Lieferengpässe kurzerhand selbst ein Modell entwickelt hätten und dieses in der Funktion den Konkurrenten nichts nachstehen würde. Soweit …

Ich habe daher folgende Antenne verbaut:
https://www.fts-hennig.de/antennen/fahrzeugantennen/fts-complete-car-5g.html

5G Mobilfunk Fahrzeugantenne
5G Mobilfunk Fahrzeugantenne


Erfahrung bisher:
5G Empfang funktioniert – inwiefern besonders gut, das kann ich nicht beurteilen.
Allerdings ist die WLAN-Leistung verhältnismäßig schwach, wenn ich ihn ins Verhältnis zur alten Antenne auf dem Wohnwagen setze. Bei 50 Metern Abstand mit Sichtverbindung ist kaum noch Empfang möglich. Bei der alten Antenne konnte ich mich mehrere 100 Meter entfernen und immer noch „den Wohnwagen“ empfangen. Das ist nun leider anders.

Also ran ans Einbauen:

Als besten Ort für ein Loch habe ich eine Stelle im Schrank gefunden, bei der das Dach mit einer Holzeinlage versehen sein soll – für die Montage eines Antennenmastes. Wohl für Satellitenschüsseln vorgesehen.

Zuerst habe ich ein 4 mm Pilotloch von unten (innen) nach oben (außen) gebohrt. Wichtig ist hierbei, dass jemand aufpasst, dass man nicht schief bohrt. Weil sonst wird danach das große Loch auch schief und die Antennenhalterung samt Antenne sitzt dann auch nicht gerade. Das ist für die Abdichtung dann eher ungünstig.

hier das fertige Loch von innen


Optimalerweise liegt bei mir dort auch ein Stromkabel als Vorbereitung für eine Solaranlage. Das habe ich gleich „rübergezogen“, um es für meine Zwecke zu nutzen.

Oben habe ich das Dach vorher ordentlich gesäubert, damit die Abdichtmasse (Dekaseal) später gut kontaktiert.

Das Dichtmittel

Durch das Pilotloch geführt, habe ich dann von oben (außen) herab mit einem 29mm Lochsägenbohrer nach unten durchgebohrt. Hiermit:
https://www.conrad.de/de/p/toolcraft-to-6803625-lochsaegen-set-6teilig-22-mm-29-mm-35-mm-44-mm-51-mm-68-mm-1-set-2267875.html

Der Antennenschaft hat etwa 28mm Durchmesser

Dabei sollte man speziell am Ende mit viel Sorgfalt vorgehen oder ein Brett von unten dagegenhalten, damit es nicht ausfranzt. Warum von oben? Damit das GfK-Dach nicht nach oben ausfranzt, wenn man durchbricht. Das wäre sehr unschön, auch wenns verdeckt wäre.

Das Ergebnis war gut:

Das Bohrloch von Außen auf dem Dach
Das Bohrloch von Außen auf dem Dach, Nahaufnahme.

Das Bohrloch selbst habe ich von innen vorsichtshalber mit wasserfestem Holzkleber ausgekleidet, um es noch zusätzlich abzudichten.

Die fertig montierte Antenne auf dem Dach.

Die Antenne selbst wird mit einer Gummimatte zusätzlich als Unterlage geliefert. Die dürfte prinzipiell von selbst schon ziemlich gut abdichten:

Antenne mit Abdichmatte

Die Unterseite und Oberseite dieser Matte habe ich mit drei konzentrischen Ringen aus Dekaseal-„Würsten“ versehen und dann auf das Dach gebracht und gepresst. So gibt es drei Barrieren für Wasser, das aus unerklärlichen Gründen noch eindringen könnte. Das Ding ist sowas von dicht.
Von unten wird das Teil per Ring ordentlich festgezogen und sitzt wirklich fest.

Im Schrank haben ich im hinteren Bereich eine Hutschiene mit zwei Schrauben angebracht, an den ich den Router – Teltonika RUT50X – hängen kann.

Und (fast) ganz fertig sieht es dann so aus:

Jetzt fehlt noch ein vernünftiger Ein-/Ausschalter am Stromkabel.

Wir sollten Reden

… viel mehr direkt, von Angesicht zu Angesicht und viel öfter.

Wir verbringen heute viel zu viel Zeit vor Bildschirmen und sonstigen technischen Geräten, anstatt direkt in Kontakt zu kommen.

Unsere Aufmerksamkeit wird von Dingen in Anspruch genommen, die uns zwar für die Zeit, in der wir sie benutzen, beschäftigen und sich gut anfühlen, die uns aber, sobald wir sie weglegen, in einer „Leere“ zurücklassen.

Was wir seit Jahren nicht mehr auf dem Schirm haben: Wir haben weniger echten menschlichen Kontakt. Unsere Realitäten driften auseinander. Weil wir weniger gemeinsame Erlebnisse und Reflexionen haben.

Es ist ein schleichender Prozess, der in unseren Köpfen als degenerativer Abbau unbemerkt stattfindet.

Wir werden unsicher. Wir brauchen mehr Geräte und Bildschirme. Wir brauchen noch mehr Input. Aus Kanälen, aus Entfernung, aus sicherer Distanz.

Dabei:

Reden hilft. Reden bringt zusammen.

Reden ist zweifellos das effektivste Mittel, um zum Beispiel:

  • das eigene Gehalt neu zu verhandeln
  • Konflikte auszusprechen und zu lösen
  • Partner zu finden
  • den Weg zu erfragen
  • persönliche Ziele zu erreichen
  • UND, um sich nachhaltig besser zu fühlen
  • um neue echte, fühlbare Inspiration zu finden
  • um Feedback zu kriegen
  • um sich weiterzuentwickeln …

Ich baue mir eine neue Existenz auf, die Menschen hilft, mehr Qualität und Erfolg in ihr Leben zu bringen. Die genau das Gegenteil von Bildschirmzeit ist. Denn es geht um Redezeit, um Kommunikation, Wirkung, und … Menschen:

https://www.freies-sprechen.com

Photovoltaik Werte einer Kostal Piko in Node-Red

Hier ist ein „Flow“, um die Werte eines Photovoltaik-Inverters von Kostal per Node-Red auszulesen und zusätzlich als MQTT-Nachrichten zu versenden.

Der Hintergrund ist, dass die Anlage nicht per SNMP oder ähnlich gängigen Verfahren auszulesen war, sondern nur über eine Webseite die Werte anzeigte. Zwar gibt es eine Software, aber die hat meine Wünsche nicht wirklich erfüllt.

Mit diesem Flow ist es möglich, die aktuelle Leistung einer PV-Anlage aktiv alle z.B. 20 Sekunden abzufragen, und die gelieferten Werte als Diagramm im Dashboard darzustellen.

Node-Red Flow
Node-Red Flow

Zur Langzeitvisualisierung versende ich die Werte zusätzlich an ein weiteres System (Zabbix). Das sieht dann so aus:

Zabbix Visualisierung

Und hier kommt der „Flow“-Code:

[
{
"id": "347111747d6d4c72",
"type": "tab",
"label": "Kostal Pico",
"disabled": false,
"info": "",
"env": []
},
{
"id": "4ad0e46.7796d1c",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse http",
"func": "acPowerCurrent = parseInt(msg.payload[14].replace(/([^a-z0-9]+)/gi, ''));\ntotalEnergy = parseInt(msg.payload[17].replace(/([^A-Z0-9]+)/gi, ''));\ndailyEnergy = parseInt(msg.payload[26].replace(/([^a-z0-9]+)/gi, ''))/100;\nstring1voltage = parseInt(msg.payload[56].replace(/([^a-z0-9]+)/gi, ''));\nstring1current = parseInt(msg.payload[65].replace(/([^a-z0-9]+)/gi, ''))/100;\nstring2voltage = parseInt(msg.payload[82].replace(/([^a-z0-9]+)/gi, ''));\nstring2current = parseInt(msg.payload[91].replace(/([^a-z0-9]+)/gi, ''))/100;\nline1voltage = parseInt(msg.payload[59].replace(/([^a-z0-9]+)/gi, ''));\nline1power = parseInt(msg.payload[68].replace(/([^a-z0-9]+)/gi, ''));\nline2voltage = parseInt(msg.payload[85].replace(/([^a-z0-9]+)/gi, ''));\nline2power = parseInt(msg.payload[94].replace(/([^a-z0-9]+)/gi, ''));\nline3voltage = parseInt(msg.payload[111].replace(/([^a-z0-9]+)/gi, ''));\nline3power = parseInt(msg.payload[120].replace(/([^a-z0-9]+)/gi, ''));\nstatus = msg.payload[32].replace(/\r?\n|\r/g, '').replace(/\s/g, \"\");\n\n\nif (Number.isNaN(acPowerCurrent) === true){\n acPowerCurrent = 0;\n}\nif (Number.isNaN(totalEnergy) === true){\n totalEnergy = -1;\n}\nif (Number.isNaN(dailyEnergy) === true){\n dailyEnergy = 0;\n}\nif (Number.isNaN(string1voltage) === true){\n string1voltage = 0;\n}\nif (Number.isNaN(string1current) === true){\n string1current = 0;\n}\nif (Number.isNaN(string2voltage) === true){\n string2voltage = 0;\n}\nif (Number.isNaN(string2current) === true){\n string2current = 0;\n}\nif (Number.isNaN(line1voltage) === true){\n line1voltage = 0;\n}\nif (Number.isNaN(line1power) === true){\n line1power = 0;\n}\nif (Number.isNaN(line2voltage) === true){\n line2voltage = 0;\n}\nif (Number.isNaN(line2power) === true){\n line2power = 0;\n}\nif (Number.isNaN(line3voltage) === true){\n line3voltage = 0;\n}\nif (Number.isNaN(line3power) === true){\n line3power = 0;\n}\n\nmsg.payload = {\n \"acPowerCurrent\" : acPowerCurrent,\n \"totalEnergy\" : totalEnergy,\n \"dailyEnergy\" : dailyEnergy,\n \"status\" : status,\n \"string1voltage\" : string1voltage,\n \"string1current\" : string1current,\n \"string2voltage\" : string2voltage,\n \"string2current\" : string2current,\n \"line1voltage\" : line1voltage,\n \"line1power\" : line1power,\n \"line2voltage\" : line2voltage,\n \"line2power\" : line2power,\n \"line3voltage\" : line3voltage,\n \"line3power\" : line3power\n}\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 590,
"y": 40,
"wires": [
[
"34e425ddfbd52922",
"851d74df4b8af250",
"a0f4b6bc546a5feb",
"6f7347f07dbaddbc",
"debfb65e018929b6",
"796c0ba818f32273",
"4d2581af083ac9fa",
"f83bdf7d776677fd",
"bb682b4f55ea5261",
"0fc320415691c33b",
"c242a15391c6e138",
"cb1f12452ef3f638",
"b1ccbcd5cf01096d"
]
]
},
{
"id": "fd1711f2.7e7b4",
"type": "http request",
"z": "347111747d6d4c72",
"name": "kostal",
"method": "GET",
"ret": "txt",
"paytoqs": "ignore",
"url": "http://192.168.1.2/index.fhtml",
"tls": "",
"persist": false,
"proxy": "",
"authType": "basic",
"senderr": false,
"credentials": {},
"x": 260,
"y": 40,
"wires": [
[
"3f445786.6a93b8"
]
]
},
{
"id": "3f445786.6a93b8",
"type": "html",
"z": "347111747d6d4c72",
"name": "",
"property": "payload",
"outproperty": "payload",
"tag": "td",
"ret": "text",
"as": "single",
"x": 410,
"y": 40,
"wires": [
[
"4ad0e46.7796d1c",
"f3549090d79f4c9c",
"ac418f3bb6f53c8c",
"e40d0ff0542d8491",
"eb1ef10bd2d98a04",
"aa0fd29746e7f82d",
"6bc46f3e373ea374",
"01fd97e66dd1e7ed",
"49d7fbfce0853df5",
"b749aec74297da98",
"1f90685264d36a3b",
"32d7bb0afd1faeb5",
"37e5e4eb0f275f2d",
"4ec5b28516254e78"
]
]
},
{
"id": "b32e7821.c1dc78",
"type": "inject",
"z": "347111747d6d4c72",
"name": "20 sec",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 90,
"y": 40,
"wires": [
[
"fd1711f2.7e7b4"
]
]
},
{
"id": "bf48b05b907a3b46",
"type": "debug",
"z": "347111747d6d4c72",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 270,
"y": 100,
"wires": []
},
{
"id": "34e425ddfbd52922",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "c8c536ef38e613a8",
"order": 3,
"width": 0,
"height": 0,
"name": "",
"label": "GesamtEnergie",
"format": "{{msg.payload.totalEnergy}}",
"layout": "row-spread",
"className": "",
"x": 1080,
"y": 40,
"wires": []
},
{
"id": "851d74df4b8af250",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "c8c536ef38e613a8",
"order": 5,
"width": 0,
"height": 0,
"name": "",
"label": "aktuelle AC-Leistung",
"format": "{{msg.payload.acPowerCurrent}}",
"layout": "row-spread",
"className": "",
"x": 1100,
"y": 120,
"wires": []
},
{
"id": "cb1f12452ef3f638",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "c8c536ef38e613a8",
"order": 4,
"width": 0,
"height": 0,
"name": "",
"label": "TagesEnergie",
"format": "{{msg.payload.dailyEnergy}}",
"layout": "row-spread",
"className": "",
"x": 1070,
"y": 80,
"wires": []
},
{
"id": "a0f4b6bc546a5feb",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "0816668bf0491bd9",
"order": 1,
"width": 0,
"height": 0,
"name": "",
"label": "string1voltage",
"format": "{{msg.payload.string1voltage}}",
"layout": "row-spread",
"className": "",
"x": 1080,
"y": 160,
"wires": []
},
{
"id": "debfb65e018929b6",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "0816668bf0491bd9",
"order": 3,
"width": 0,
"height": 0,
"name": "",
"label": "string2voltage",
"format": "{{msg.payload.string2voltage}}",
"layout": "row-spread",
"className": "",
"x": 1080,
"y": 240,
"wires": []
},
{
"id": "6f7347f07dbaddbc",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "0816668bf0491bd9",
"order": 2,
"width": 0,
"height": 0,
"name": "",
"label": "string1current",
"format": "{{msg.payload.string1current}}",
"layout": "row-spread",
"className": "",
"x": 1080,
"y": 200,
"wires": []
},
{
"id": "796c0ba818f32273",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "0816668bf0491bd9",
"order": 4,
"width": 0,
"height": 0,
"name": "",
"label": "string2current",
"format": "{{msg.payload.string2current}}",
"layout": "row-spread",
"className": "",
"x": 1080,
"y": 280,
"wires": []
},
{
"id": "b1ccbcd5cf01096d",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "2e650c287c8977c6",
"order": 1,
"width": 0,
"height": 0,
"name": "",
"label": "line1voltage",
"format": "{{msg.payload.line1voltage}}",
"layout": "row-spread",
"className": "",
"x": 1070,
"y": 320,
"wires": []
},
{
"id": "f83bdf7d776677fd",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "2e650c287c8977c6",
"order": 3,
"width": 0,
"height": 0,
"name": "",
"label": "line2voltage",
"format": "{{msg.payload.line2voltage}}",
"layout": "row-spread",
"className": "",
"x": 1070,
"y": 400,
"wires": []
},
{
"id": "4d2581af083ac9fa",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "2e650c287c8977c6",
"order": 2,
"width": 0,
"height": 0,
"name": "",
"label": "line1power",
"format": "{{msg.payload.line1power}}",
"layout": "row-spread",
"className": "",
"x": 1070,
"y": 360,
"wires": []
},
{
"id": "bb682b4f55ea5261",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "2e650c287c8977c6",
"order": 4,
"width": 0,
"height": 0,
"name": "",
"label": "line2power",
"format": "{{msg.payload.line2power}}",
"layout": "row-spread",
"className": "",
"x": 1070,
"y": 440,
"wires": []
},
{
"id": "0fc320415691c33b",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "2e650c287c8977c6",
"order": 5,
"width": 0,
"height": 0,
"name": "",
"label": "line3voltage",
"format": "{{msg.payload.line3voltage}}",
"layout": "row-spread",
"className": "",
"x": 1070,
"y": 480,
"wires": []
},
{
"id": "c242a15391c6e138",
"type": "ui_text",
"z": "347111747d6d4c72",
"group": "2e650c287c8977c6",
"order": 6,
"width": 0,
"height": 0,
"name": "",
"label": "line3power",
"format": "{{msg.payload.line3power}}",
"layout": "row-spread",
"className": "",
"x": 1070,
"y": 520,
"wires": []
},
{
"id": "9e8331d8f24e5508",
"type": "ui_chart",
"z": "347111747d6d4c72",
"name": "",
"group": "c8c536ef38e613a8",
"order": 2,
"width": 0,
"height": 0,
"label": "TagesEnergie",
"chartType": "line",
"legend": "false",
"xformat": "HH:mm:ss",
"interpolate": "linear",
"nodata": "",
"dot": false,
"ymin": "",
"ymax": "",
"removeOlder": "12",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": 0,
"useOneColor": false,
"useUTC": false,
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"outputs": 1,
"useDifferentColor": false,
"className": "",
"x": 830,
"y": 180,
"wires": [
[]
]
},
{
"id": "060a6f4f7709d212",
"type": "ui_chart",
"z": "347111747d6d4c72",
"name": "",
"group": "c8c536ef38e613a8",
"order": 1,
"width": 0,
"height": 0,
"label": "GesamtEnergie",
"chartType": "line",
"legend": "false",
"xformat": "HH:mm:ss",
"interpolate": "linear",
"nodata": "",
"dot": false,
"ymin": "",
"ymax": "",
"removeOlder": 1,
"removeOlderPoints": "",
"removeOlderUnit": "604800",
"cutout": 0,
"useOneColor": false,
"useUTC": false,
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"outputs": 1,
"useDifferentColor": false,
"className": "",
"x": 840,
"y": 140,
"wires": [
[]
]
},
{
"id": "f3549090d79f4c9c",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse totalEnergy",
"func": "totalEnergy = parseInt(msg.payload[17].replace(/([^A-Z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(totalEnergy) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = totalEnergy\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 260,
"wires": [
[
"060a6f4f7709d212",
"5d7fd7bd61272bf3"
]
]
},
{
"id": "ac418f3bb6f53c8c",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse dailyEnergy",
"func": "dailyEnergy = parseInt(msg.payload[26].replace(/([^a-z0-9]+)/gi, ''))/100;\n\n\nif (Number.isNaN(dailyEnergy) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = dailyEnergy\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 300,
"wires": [
[
"9e8331d8f24e5508",
"b0d1ee8efbccf83c"
]
]
},
{
"id": "e40d0ff0542d8491",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse acPowerCurrent",
"func": "acPowerCurrent = parseInt(msg.payload[14].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(acPowerCurrent) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = acPowerCurrent\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 360,
"y": 340,
"wires": [
[
"6c98dadd8dfa1b2b",
"98b85716012ff0f1"
]
]
},
{
"id": "6c98dadd8dfa1b2b",
"type": "ui_chart",
"z": "347111747d6d4c72",
"name": "",
"group": "c8c536ef38e613a8",
"order": 2,
"width": 0,
"height": 0,
"label": "aktuelle Leistung",
"chartType": "line",
"legend": "false",
"xformat": "HH:mm:ss",
"interpolate": "linear",
"nodata": "",
"dot": false,
"ymin": "",
"ymax": "",
"removeOlder": "12",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": 0,
"useOneColor": false,
"useUTC": false,
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"outputs": 1,
"useDifferentColor": false,
"className": "",
"x": 850,
"y": 220,
"wires": [
[]
]
},
{
"id": "98b85716012ff0f1",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/acPowerCurrent",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 640,
"y": 340,
"wires": []
},
{
"id": "5d7fd7bd61272bf3",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/totalEnergy",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 620,
"y": 260,
"wires": []
},
{
"id": "b0d1ee8efbccf83c",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/dailyEnergy",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 620,
"y": 300,
"wires": []
},
{
"id": "68f495560987754b",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/string1voltage",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 630,
"y": 380,
"wires": []
},
{
"id": "e33e75fdf4b82aac",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/string1current",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 630,
"y": 420,
"wires": []
},
{
"id": "8d9268aef7b8eba8",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/string2voltage",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 630,
"y": 460,
"wires": []
},
{
"id": "960f3f76488c3e98",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/string2current",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 630,
"y": 500,
"wires": []
},
{
"id": "c5ccb0f701055bc1",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/line1voltage",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 630,
"y": 540,
"wires": []
},
{
"id": "f7dad6605a58f5c6",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/line1power",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 620,
"y": 580,
"wires": []
},
{
"id": "7d0a3ec6865e297e",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/line2voltage",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 630,
"y": 620,
"wires": []
},
{
"id": "7f9fed855e70fed7",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/line2power",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 620,
"y": 660,
"wires": []
},
{
"id": "771b4926c3e76ab5",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/line3voltage",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 630,
"y": 700,
"wires": []
},
{
"id": "6b3309a879659da4",
"type": "mqtt out",
"z": "347111747d6d4c72",
"name": "",
"topic": "tele/photovoltaic/line3power",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "634cbb5f.887d54",
"x": 620,
"y": 740,
"wires": []
},
{
"id": "eb1ef10bd2d98a04",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse string1voltage",
"func": "string1voltage = parseInt(msg.payload[56].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(string1voltage) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = string1voltage\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 360,
"y": 380,
"wires": [
[
"68f495560987754b"
]
]
},
{
"id": "aa0fd29746e7f82d",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse string1current",
"func": "string1current = parseInt(msg.payload[65].replace(/([^a-z0-9]+)/gi, ''))/100;\n\n\nif (Number.isNaN(string1current) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = string1current\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 360,
"y": 420,
"wires": [
[
"e33e75fdf4b82aac"
]
]
},
{
"id": "6bc46f3e373ea374",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse string2voltage ",
"func": "string2voltage = parseInt(msg.payload[82].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(string2voltage) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = string2voltage\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 360,
"y": 460,
"wires": [
[
"8d9268aef7b8eba8"
]
]
},
{
"id": "01fd97e66dd1e7ed",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse string2current",
"func": "string2current = parseInt(msg.payload[91].replace(/([^a-z0-9]+)/gi, ''))/100;\n\n\nif (Number.isNaN(string2current) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = string2current\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 360,
"y": 500,
"wires": [
[
"960f3f76488c3e98"
]
]
},
{
"id": "49d7fbfce0853df5",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse line1voltage",
"func": "line1voltage = parseInt(msg.payload[59].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(line1voltage) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = line1voltage\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 540,
"wires": [
[
"c5ccb0f701055bc1"
]
]
},
{
"id": "b749aec74297da98",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse line1power",
"func": "line1power = parseInt(msg.payload[68].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(line1power) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = line1power\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 580,
"wires": [
[
"f7dad6605a58f5c6"
]
]
},
{
"id": "1f90685264d36a3b",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse line2voltage",
"func": "line2voltage = parseInt(msg.payload[85].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(line2voltage) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = line2voltage\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 620,
"wires": [
[
"7d0a3ec6865e297e"
]
]
},
{
"id": "32d7bb0afd1faeb5",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse line2power",
"func": "line2power = parseInt(msg.payload[94].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(line2power) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = line2power\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 660,
"wires": [
[
"7f9fed855e70fed7"
]
]
},
{
"id": "37e5e4eb0f275f2d",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse line3voltage",
"func": "line3voltage = parseInt(msg.payload[111].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(line3voltage) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = line3voltage\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 700,
"wires": [
[
"771b4926c3e76ab5"
]
]
},
{
"id": "4ec5b28516254e78",
"type": "function",
"z": "347111747d6d4c72",
"name": "parse line3power",
"func": "line3power = parseInt(msg.payload[120].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(line3power) === true){\n totalEnergy = -1;\n}\n\n\nmsg.payload = line3power\n\n\nglobal.set(\"kostal\", msg.payload);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 740,
"wires": [
[
"6b3309a879659da4"
]
]
},
{
"id": "c8c536ef38e613a8",
"type": "ui_group",
"name": "Werte",
"tab": "d3de2ec7ddd38014",
"order": 1,
"disp": true,
"width": "6",
"collapse": false,
"className": ""
},
{
"id": "0816668bf0491bd9",
"type": "ui_group",
"name": "PV-Generator",
"tab": "d3de2ec7ddd38014",
"order": 2,
"disp": true,
"width": "6",
"collapse": false,
"className": ""
},
{
"id": "2e650c287c8977c6",
"type": "ui_group",
"name": "Ausgangsleistung",
"tab": "d3de2ec7ddd38014",
"order": 3,
"disp": true,
"width": "6",
"collapse": false,
"className": ""
},
{
"id": "634cbb5f.887d54",
"type": "mqtt-broker",
"broker": "192.168.1.10",
"port": "1883",
"clientid": "nodeRed",
"autoConnect": true,
"usetls": false,
"protocolVersion": 4,
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"willTopic": "",
"willQos": "0",
"willPayload": ""
},
{
"id": "d3de2ec7ddd38014",
"type": "ui_tab",
"name": "PV-Anlage",
"icon": "dashboard",
"order": 6,
"disabled": false,
"hidden": false
}
]

RØDE Wireless GO II

Vielleicht möchte noch jemand einen Blick in die RØDE Funkmikrofone werfen, wenn diese ebenfalls nach ein paar Wochen schon defekt sind.

Dieses Paar (beide Sender in der Auslieferung) haben das Problem, dass sie sich mitten in der Aufnahme unvermittelt ausschalten. Die Akkuanzeige zeigt zwar „voll“ an, aber das hindert die Geräte nicht daran, mir die Aufnahmen zu vermiesen.

Mit externer Stromversorgung über USB funktionieren die Teile weiterhin. Das ist natürlich keine Lösung, da diese gerade in Vortragssituationen die Taschen erheblich „aufbläht“.

Nachdem man den verklebten Frontdeckel abgehoben hat sieht es so aus:

der weiße Akkustecker ist sehr empfindlich, das Plastik ist sehr weich

OpenVPN zwischen Teltonika und Sophos

Ein VPN mit Netz-zu-Netz (Site2Site) Kopplung zwischen Teltonika Mobile Routern und Sophos Firewalls funktioniert bestens.

Daher hier die Anleitung:

1. Schritt: VPN in Sophos Firewall erstellen

In einer Sophos (getestet mit einer SG-125) eine SSL Verbindung (Site-to-site VPN) anlegen. Das lokale und das entfernte Netz eingeben. Die Verbindung als „Connection type“ Server konfigurieren. Nun die VPN-Verbindungsdatei herunterladen.

2. Schritt: APC Datei „zerpflücken“

Die eben heruntergeladene VPN-Datei hat die Endung .apc, z.B. vpnserver.company.de.apc

Im nächsten Schritt geht es darum, die verbindungsspezifischen Daten zu extrahieren. Für die Gegenstelle (Teltonika-Router) benötigt man drei Dateien, Passwort und Username.

Am Anfang stehen die drei nötigen Zertifikate (in der Reihenfolge „Client Zertifikat, CA und Private Key), jeweils mit einigen für uns unnötigen Inforamtionen dazwischen. Wichtig sind immer die Werte ab:
—–BEGIN CERTIFICATE—– bis einschließlich —–END CERTIFICATE—– bzw. beim
Private Key ab —–BEGIN PRIVATE KEY—– bis einschließlich —–END PRIVATE KEY—–.
Dann steht am Ende der APC-Datei noch der Username und das Passwort. Beide beginnen mit REF_, beim Username (ist relativ kurz) steht direkt danach „username“, beim Passwort direkt danach „password“ (dieses ist relativ lang).

Die entsprechenden Teile der Zertifikate und des Private-Keys per z.B. Notepad++ auszuschneiden und in eine neue, leere Datei kopieren.
Wichtig ist auch, dass das „—–BEGIN CERTIFICATE—–“ und „—–END CERTIFICATE—–“ mit in die neu zu erstellende Datei übernommen wird.

Diese entsprechend abspeichern (die Dateiendung scheint egal zu sein), also z.B. pk.txt, ca.txt und cz.txt und für den nächsten Schritt vorhalten.
Die Stellen, an denen sich Username und Password in der Datei befindet, habe ich oben rot markiert.

3. Schritt: Teltonika Router konfigurieren

Im Mobile-Router nun eine neue VPN-Verbindung entsprechend des unten gegebene Screenshots konfigurieren. Die drei Dateien in die zugehörigen Fehler hochladen.

Sofern keine Fehler unterlaufen sind oder die Komponenten bei Sophos oder Teltonika abgeändert wurden, sollte die VPN-Verbindung schnell zustande kommen und beide Netze jeweils gegenseitig erreichbar sein.

Sophos Rejected: RBL (cbl.abuseat.org)

Sophos Firewalls können zum Zeitpunkt dieses Postings (Oktober 2021) eingehenden E-Mail Verkehr ablehnen.

D.h. im Logfile erscheinen plötzlich viele Einträge, in denen ankommenden E-Mails wegen vermeinlichem Blacklist-Eintrag bei cbl.abuseat.org abgelehnt werden. Die manuelle Überprüfung der angezeigten Einträge ergeben bei allen Blacklist-Anbietern jedoch keine Auffälligkeiten, d.h. die es handelt sich um ein „falsches Ablehnen“ (false positives).

Ohne irgendeine Änderung an der Firewall-Konfiguration tritt dieser Fehler bei Kunden plötzlich am 12.10.21 auf. Die eingesetzten Firewall-Geräte sind zwei Sophos SG-135, als Failover-Cluster betrieben. Die installierte Firmware-Version ist 9.707-5.

Die Angelegenheit beeinträchtigt den Geschäftsbetrieb von Unternehmen massiv.

Der Grund dafür scheint bisher nicht klar, wird unter dem „Aktenzeichen“ NUTM-13047 dort untersucht.

https://community.sophos.com/utm-firewall/f/mail-protection-smtp-pop3-antispam-and-antivirus/128016/rbl-working-too-well

Es scheint, als habe es etwas mit den eingetragenen DNS-Servern zu tun.

Camping Seeburger See

Etwa 30 Minuten von Göttingen gelegener verhältnismäßig kleiner Campingplatz am Seeburger See. Die Lage ist idylisch und ruhig. Der Platz ist wirklich schön, als großer Rundweg mit davon abgehenden Nebenplätzen angelegt. Dazwischen stehen Mietwaggons oder Mietzelte.

Beim Einchecken gibt es gleich ungefragt einen Code für das WLAN, ausprobiert habe ich es nicht, da die Telekom-Ausleuchtung mit LTE hier noch ausreichend ist.

Es sind Kinder vorhanden, die sich anfreunden und miteinander spielen. Angrenzend ist ein toller Abenteuerspielplatz vorhanden, der rege genutzt wird.

Direkt nebenan ist das schön gestaltete Freibad mit Kinderbecken, Liegewiese, Umkleidekabinen und einem etwa 80 Meter langen Steg ins den See. Ein Kiosk mit erweitertem Angebot lädt zum Essen ein.

Der Seeburger See erscheint naturbelassen und ist idyllisch, es schwimmen Seerosen darauf und an den Ränder befindet sich viel Schilf. Ein Rundgang um den See umfasst rund 5 km.

Der Empfang ist nett, zeigt bei „unreservierter“ Anreise gleich die restlichen Plätze auf, von denen man sich dann nach einer Begehung den besten raussuchen kann. Die Stellplätze sind etwa 60-80qm groß, manche auch kleiner.

Der Campingplatz ist parzelliert, aber weitgehend offen gestaltet. Leider gibt es bei längeren Regenfällen ein großes Problem mit dem lehmigen Boden. Der Platz läuft schnell Gefahr, zu versumpfen. Etliche Stellplätze sind dann kaum bis nicht mehr nutzbar, da man mit den Reifen stecken bleibt. Der niederländische Betreiber hat uns hierüber nicht informiert – was ich allerdings erwarte, denn dieser Umstand kann eine erhebliche Einschränkung darstellen.

Es gibt eine Sanitäranlage, die nur mit Zugangschip zu betreten ist. Die Duschen sind einwandfrei, mit Brauseschlauch. Man wird mit KEINEN Duschmarken oder ähnlich gegängelt.

Teilweise gibt es eine Animation für Kinder.

In der Umgebung ist mindestens Duderstadt und Göttingen einen Besuch wert.

Campingplatz Affolderner See

http://www.campingplatz-affoldernersee.com/

Wir kamen gegen 17:45 Uhr Montags an. Telefonisch wurde uns am Tag zuvor zugesagt, dass einer Anreise nichts im Wege steht. Platz sei vorhanden.

Wir konnten vor Ort niemand Zuständigen antreffen, die Rezeption war geschlossen und auch auf die Klingel reagierte niemand.

Die Schranke vor dem Campingplatz war offen. Mangels Anweisungen oder Informationen haben wir den Platz jedoch nicht einfach befahren.

Hier vor Ort konnten wir jedoch außer sehr kleiner Platzparzellen (50-60qm), einem alten Spielplatz nicht viel Attraktives ausmachen, so dass wir schlicht weiterfuhren.

Wer es sehr ruhig mag, der wird hier sicherlich glücklich sein. Für eine Familie mit bewegungshungrigen Kindern ist der Platz eher nicht die erste Wahl.

Angesteuert haben wir den Platz ursprünglich wegen des „Award 2021“ auf Camping.info. Er hatte gute Bewertungen. Das mag sicherlich auch zutreffen, wir sind nur nicht in dieser Kategorie „Ruhe“ zu verorten.