LAN-Anbindung für BSB-Bus (Brötje, Elco Thision etc.)

Begonnen von justme1968, 29 November 2014, 19:50:40

Vorheriges Thema - Nächstes Thema

Malz1902

Hallo zusammen, gerne würde ich über ein Javaskript das Zeitprogramm ändern. Mein BSB Lan ist via User und PW gesichert. Wie muss der URL Aufruf aussehen?

request('http://ip-bsblan/S501=06:00-22:00_xx:xx-xx:xx_xx:xx-xx:xx'

Dies klappt leider nicht, irgendwie müsste ich noch User/PW mitgeben, aber leider finde ich dazu keine Infos

freetz

Das kommt auf den Browser an, ob das (noch) geht, ansonsten wäre der Aufruf
http://username:password@ip-bsblan/...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Malz1902


freetz

Ja, die meisten Browser haben diese Funktion aus Sicherheitsgründen deaktiviert, weil darüber ja Zugangsdaten im Klartext stehen, und vermutlich klappt das dann auch in JavaScript nicht mehr. Ärgert mich auch, ein Ausweichen wäre der Aufruf eines Scriptes, das dann wiederum BSB-LAN mit den Zugangsdaten kontaktiert und die Ausgabe an das JavaScript weitergibt.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

sust

Also das geht bei mir noch in der 2.093 und in der V0.44 auch:

http://<ip-bsblan>/<password>/S500=06:00-22:30

Damit das geht darf der User-Name nicht gesetzt sein.

Stellt sich natürlich die Frage, ob das so für das Vorhaben von Malz1904 "reicht" und ob man sich das Sicherheitsrisiko antun will...

freetz

Das sind zwei verschiedene Sachen, Du beschreibst den Passcode (als Teil der URL), Malz1904 geht es um die HTTP-Authentifizierung.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

sust

Ja, das stimmt freetz, mein beschriebener Weg ist ein anderer. und auch wesentlich unsicherer....
Ich hatte den 1. Beitrag von Malz1902 zu dem Thema so verstanden, das es ihm primär um das setzten des 501er per URL geht.

Malz1902

@sust ja es geht um das Setzen von dem Parameter via URL aufruf über ein Javascript, da aber der BSB Lan Zugang mit User/Passwort gesichert ist, müsste ich das an der Stelle irgendwie mit übergeben

sust

@malz1902 Wenn du an der HTTP Authentification festhalten musst und die Absicherung mit Passcode zu schwach ist, wirds schwierig.
Ich weiß da keinen anderen Weg...
Evtl. gibts ja aber noch irgendwo einen Browser der funktioniert.

tiger42

Die HTTP Basic Authentifizierung ist eigentlich gar kein Hindernis für JavaScript. Das Problem ist vielmehr, dass der BSB-LAN HTTP Server keinen CORS Header (Access-Control-Allow-Origin) sendet. Dadurch funktioniert kein XMLHttpRequest, der in unserem Fall scheinbar nötig ist, um eine richtige Session aufzubauen.

Zuerst hab ich es mit mit einem Einzelrequest versucht, ohne Erfolg:

const fetchData = async (url, user, password) => {
    const response = await fetch(url, {
        method: 'GET',
        headers: { 'Authorization': 'Basic ' + btoa(`${user}:${password}`) },
        mode: 'no-cors',
    });

    return await response.text();
};

fetchData('http://bsb-lan/...', 'user', 'password')
.then(data => {
    console.log(data);
});


Dann die Version mit Session-Aufbau, die funktioniert bei mir auch nicht:

const fetchData = async (url, user, password) => {
    const xhr = new XMLHttpRequest();
    xhr.open('GET', url, false, user, password);
    xhr.send('');

    const response = await fetch(url, {
        method: 'GET',
    });

    return await response.text();
};

fetchData('http://bsb-lan/...', 'user', 'password')
.then(data => {
    console.log(data);
});


Ich bin mir aber ziemlich sicher, dass letztere Version funktionieren würde, wenn der Server einen "Access-Control-Allow-Origin" Header senden würde. Allerdings müsste man den jeweils spezifisch im Code anpassen, das allgemeine "Access-Control-Allow-Origin: *" dürfte laut Spezifikation nicht funktionieren, weil das im Zusammenspiel mit Credentials nicht erlaubt ist.
Vielleicht baut ja jemand den Header in den BSB-LAN Code ein und probiert das mal aus...

freetz

Danke für die Info, ich erinnere mich, dass wir diesen allgemeinen Header schon aus Gründen der Fernabfrage hinzugefügt hatten, ich kenne mich mit den Details aber nicht so gut aus. Was müsste da konkret stehen, damit das funktioniert?
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

loetmeister

Hi,

müsste das nicht wie in diesem Beispiel funktionieren? Zwei GET Anfragen, die erste wird immer mit 401 beantwortet, die zweite schickt dann basic im header mit...
https://perlmaven.com/basic-authentication-with-lwp-useragent-and-http-request-common

Gruß,
Thomas

tiger42

Zitat von: freetz am 19 Juni 2021, 16:09:48
Danke für die Info, ich erinnere mich, dass wir diesen allgemeinen Header schon aus Gründen der Fernabfrage hinzugefügt hatten, ich kenne mich mit den Details aber nicht so gut aus. Was müsste da konkret stehen, damit das funktioniert?
Hier ist eine ganz gute Erklärung zur Funktionsweise des Headers: https://www.freecodecamp.org/news/access-control-allow-origin-header-explained/.
Kurz zusammengefasst: Der Header muss die Adresse(n) (inkl. Protokoll) der Seite(n) enthalten, von wo aus der Request per JavaScript erlaubt sein soll. Dies ist natürlich bei jedem anders, daher müsste jeder für sich den Header im BSB-LAN Code anpassen.

n300

Frage in die Runde:
Was verwendet ihr denn als Signalkabel? Würde wirklich lieber wie beschrieben eher ein solches verlegen anstatt nem LAN-Kabel. Dann könnte ich mir auch ne weitere Steckdose im Heizraum sparen. Des Weiteren ist der "Kabelkanal" schon recht voll, da wäre ein dünnes Kabel auch weit einfacher zu verlegen.
Lt. Anleitung wird ja nen Kabel von min. 2x0,8mm² empfohlen. Verdrillt find ich sowas gar nicht. Wenn es denn nach Datenkabel ausschaut, ist der Querschnitt viel kleiner und meistens auch gleich 4Adrig. Wenn es ein geschirmtes Kabel ist müsste es doch mit nem dünneren Kabel auch passen, oder?
Brauche so ca. 10m, mit etwas Reserve würd ich 15m veranschlagen. Muss sozusagen in den übernächsten Raum, wo dann die nächste RJ45 Buchse ist.

Schotty

Hi,
wie ich im Handbuch erwähnt habe kommen mehrere Varianten in der Praxis zum Einsatz. Ich persönlich habe u.a. das erwähnte 2x0.75er Lautsprecherkabel sowie ein vieradriges Telefonkabel(?) in Benutzung, beides in etlichen Metern Länge. Funktioniert problemlos.
Bzgl Schirmung&/Verdrillung kommt es m.A.n. darauf an, ob du das Kabel im Kabelkanal meterlang direkt neben stromführende Kabel verlegst, denn das könnte Störungen hervorrufen.
Hast du denn schon/noch irgendwas doppeladriges in der gewünschten Länge und Stärke rumliegen, das noch in den Kabelkanal passen würde? Evtl Lautsprecherkabel? Dann einfach verlegen und testen..

Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/