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

MoinMoin

#5475
Hab den Source jetzt so erweitert, so gehts wieder:

   printToWebClient(PSTR("<a href='/"));
   printPassKey();
   printToWebClient(PSTR("' id=\"main_link\">"));
   printToWebClient(PSTR("<img width=10% height=10% src='/favicon.svg'></a>"));


MoinMoin

Ich hab noch eine weitere Anomalie bei meinem Thision S 17.1

Bei Wert 888 zeigt er mir in BSB-LAN immer das Doppelte an, wie an der Heizung direkt.
Also 50% an der Heizung => 100 in BSB-LAN (75% => 150).

Zudem kann ich den Wert über BSB-LAN nicht schreiben. Beschreibbar ist der Wert auch nicht.

freetz

Ja, das ist mir wohl bei der Änderung durchgerutscht. So wie Du es jetzt geändert hattest, hatte ich es ursprünglich auch vorgesehen, aber da wird dann das Logo beim Überfahren mit einem gelben Balken unterlegt, oder?

Bei Parameter 888 brauche ich die Logs zusammen mit dem gerade angezeigten Wert an der Heizung und die Ausgabe von /Q, dann kann ich das nachtragen.
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

MoinMoin

Ja das ist richtig mit dem gelben Balken. Stört mich jetzt weniger...

Betreffend logs - mach ich später.
Danke!

freetz

Hab es jetzt so geändert, dass es ohne gelbe Balken passt, neue Version auf GitHub.
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

Schotty

@all:
Kurze Info bzgl. Handbuch:
Ich habe das Handbuch komplett umstrukturiert.
In vorherigen Beiträgen gepostete Links funktionieren also nicht mehr, etwaige gesetzte Lesezeichen auf bestimmte Kapitel müssten auch neu gesetzt werden.

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

MoinMoin

#5481
Zitat von: freetz am 14 März 2021, 13:52:44
Hab es jetzt so geändert, dass es ohne gelbe Balken passt, neue Version auf GitHub.
Super, danke!



Ich hab (für mich) jetzt noch folgendes gemacht:

Anstelle
printFmtToWebClient(PSTR("<tr><td><a href='K%d'$>"), cat)

folgendes:
               switch(cat){
                case 0: printFmtToWebClient("<tr><td><a href='0/1/2/3/5/6'>"); break;
                case 1: printFmtToWebClient("<tr><td><a href='70'>"); break;
                case 3: printFmtToWebClient("<tr><td><a href='500/501/502/503/504/505/506/516'>"); break;
                case 4: printFmtToWebClient("<tr><td><a href='520/521/522/523/524/525/526/536'>"); break;
                case 5: printFmtToWebClient("<tr><td><a href='540/541/542/543/544/545/546/556'>"); break;
                case 6: printFmtToWebClient("<tr><td><a href='560/561/562/563/564/565/566/576'>"); break;
                case 8: printFmtToWebClient("<tr><td><a href='632/633/648'>"); break;
                case 9: printFmtToWebClient("<tr><td><a href='649/650/665'>"); break;
                case 10: printFmtToWebClient("<tr><td><a href='666/667/682'>"); break;
                case 13: printFmtToWebClient("<tr><td><a href='1000/1001/1010/1011/1012/1014/1020/1021/1026/1030/1032/1040/1041/1050/1060/1070/1080/1090/1091/1100/1101/1110/1130/1134/1135/1136/1150/1151/1155/1156'>"); break;
                case 15: printFmtToWebClient("<tr><td><a href='1300/1301/1310/1311/1312/1314/1320/1321/1326/1330/1332/1340/1341/1360/1370/1380/1390/1391/1400/1401/1410/1430/1434/1435/1436/1450/1451/1455/1456'>"); break;
                case 16: printFmtToWebClient("<tr><td><a href='1600/1602/1603/1610/1612/1614/1620/1640/1641/1642/1644/1645/1646/1647/1660/1661'>"); break;
                case 24: printFmtToWebClient("<tr><td><a href='2201/2210/2212/2214/2215/2270/2440/2441/2442/2443/2444/2445/2446/2451/2452/2453/2454/2455/2456/2459/2471/2472/2521/2522/2540/2543/2630/2655/2656/2657'>"); break;
                case 25: printFmtToWebClient("<tr><td><a href='2700/2702/2703/2704/2705/2727/2731/2732'>"); break;
                case 30: printFmtToWebClient("<tr><td><a href='3810/3811/3812/3831/3840/3850/3860'>"); break;
                case 32: printFmtToWebClient("<tr><td><a href='4721/4722'>"); break;
                case 33: printFmtToWebClient("<tr><td><a href='5010/5019/5020/5024/5025/5026/5027/5028/5029/5050/5051/5055/5070/5100'>"); break;
                case 34: printFmtToWebClient("<tr><td><a href='5400/5430/5431/5432/5433/5434/5435/5450/5451/5452/5453/5454/5455/5456/5480/5481/5482/5483/5486'>"); break;
                case 36: printFmtToWebClient("<tr><td><a href='5701/5710/5715/5721/5732/5733/5761/5920/5921/5922/5923/5924/5926/5927/5928/5950/5957/5970/5971/5973/5975/5976/5978/6089/6092/6110/6112/6120/6127/6140/6141/6142/6150/6151/6152/6180/6181/6182/6220/6221/6223/6224/6225/6226/6227/6230/6236/6240/6250/6260/6270/6280/6290/6300/6310/6330'>"); break;
                case 37: printFmtToWebClient("<tr><td><a href='6600/6601/6606/6621'>"); break;
                case 38: printFmtToWebClient("<tr><td><a href='6705/6706/6740/6741/6742/6800/6801/6805/6806/6810/6811/6815/6816/6820/6821/6825/6826/6830/6831/6835/6836/6840/6841/6845/6846'>"); break;
                case 39: printFmtToWebClient("<tr><td><a href='7001/7007/7010/7011/7012/7040/7041/7042/7043/7044/7045/7046/7050/7051/7130/7140/7143/7145/7146'>"); break;
                case 41: printFmtToWebClient("<tr><td><a href='7708/7719'>"); break;
                case 42: printFmtToWebClient("<tr><td><a href='8000/8001/8003/8005/8007'>"); break;
                case 44: printFmtToWebClient("<tr><td><a href='8310/8311/8314/8316/8323/8324/8326/8327/8328/8329/8336/8337/8338/8339/8340/8510/8530'>"); break;
                case 45: printFmtToWebClient("<tr><td><a href='8700/8703/8704/8740/8741/8742/8743/8744/8750/8770/8771/8772/8773/8774/8800/8801/8802/8803/8804/8830/8831/8832/8836/8950/8980'>"); break;
                case 46: printFmtToWebClient("<tr><td><a href='9500/9502/9504/9510/9512/9520/9522/9524/9527/9540/9550/9560/9563'>"); break;
                case 47: printFmtToWebClient("<tr><td><a href='10004/10100'>"); break;
                case 49: printFmtToWebClient("<tr><td><a href='20000/20001/20002/20003/20004/20005/20006/20050/20051/20100/20101/20102/20103/20700/20701/20702/20703/20704/20705/20706/20707/20708/20709/20710/20711/20712/20713/20714/20715/20716/20717/20718/20719/20800/20801/20802/20803/20804/20805/20806/20807/20808/20809/20810/20811/20812/20813/20814/20815/20816/20817/20818/20819'>"); break;
                default: printFmtToWebClient(PSTR("<tr><td><a href='K%d'$>"), cat);break;
             }


Also Anstelle K1 lädt er nur meine verfügbaren Werte. (0/1/2/3/5/6)
Man kann die nicht-verfügbaren Werte ja ausblenden, aber er lädt sie im Hintergrund ja doch, was das Laden je nach Kategorie verzögert.

Spricht was dagegen? Läuft einwandfrei bis jetzt.

Die Werte sind für meinen Thision S17.1

Folgendes C#-Progrämmchen erzeugt (nach ein paar Minuten) die Werte für euer Gerät:
            string url = "http://heiz.ung/K";
            string outputstring = "               switch(cat){";
            WebClient client = new WebClient();
            string downloadString = client.DownloadString(url);
            string[] q = downloadString.Split(new[] { "<tr><td><a href='K" }, StringSplitOptions.None);
            for (int i = 1; i < q.Length; i++)
            {
                string l = q[i].Split(new[] { "'>" }, StringSplitOptions.None)[0];
                downloadString = client.DownloadString(url + l);
                string[] q1 = downloadString.Split(new[] { "id='value" }, StringSplitOptions.None);
                string values = "";
                for (int i1 = 1; i1 < q1.Length; i1++)
                {
                    string val = q1[i1].Split(new[] { "'" }, StringSplitOptions.None)[0];
                    values = String.IsNullOrEmpty(values) ? val : values + "/" + val;
                }
                if (!string.IsNullOrEmpty(values))
                {
                    outputstring += "\r\n                case " + l + ": printFmtToWebClient(\"<tr><td><a href='" + values + "'>\"); break;";
                }

            }
            outputstring += "\r\n                default: printFmtToWebClient(PSTR(\"<tr><td><a href='K%d'$>\"), cat);break;";
            outputstring += "break;\r\n             }";


Falls es jemand interessiert - ich hab ein Windows-Progrämmchen angehängt. Einfach die 2 Dateien in den Source-Ordner von BSB-LAN kopieren, ausführen, IP/Hostname angeben und auf GO klicken.
Nach ein paar Minuten ist der Prozess beendet und kann dann direkt über Arduino IDE geflashed werden.
Source liegt bei.

freetz

Da spricht grundsätzlich nichts dagegen (und danke für das Script), außer, dass die ganze Arbeit bei einem Update erneut gemacht werden muss. Ist halt die Frage, wie oft man ganze Kategorien aufruft. Am Anfang macht man das sicher öfter, um herauszufinden, was sich wohinter verbirgt, aber nach einer Weile weiß man dann, was die Parameter sind, die man regelmäßig braucht, und die kann man sich entweder unter einem Link abspeichern (also z.B. http://192.168.178.50/700/710/712/8700) oder man trägt sie für das IPWE-Modul ein.
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

MoinMoin

Ok Danke.
Ja mit dem Progrämmchen ist es 1 Klick und dann nochmals uploaden/flashen...

Danke nochmals für euer Programm, ich hab grosse Freude daran (verwende es mit IoBroker und habs damit in meine eigene Smarthome-App integriert.)

freetz

Cool, kannst Du uns sagen, welche App Du da verwendest? Wir suchen immer nach Beispiel-Einbindungen, die man dann ggf. auch im Handbuch erwähnen könnte.

Ein Nachteil ist mir bei Deiner Variante übrigens noch aufgefallen:
Die Funktion "Prüfe auf neue Parameter" wird dadurch nicht mehr möglich sein, bzw. nie ein Ergebnis bringen. Diese basiert ja darauf, dass alle Command IDs, die _nicht_ zur eigenen Heizung gehören, darauf überprüft werden, ob sie doch zur eigenen Gerätefamilie passen.
Neue Parameter für andere Heizungstypen kommen immer mal wieder dazu, auch für ältere Geräte, weil wir z.B. noch nie jemanden hatten, der für Modell XYZ das Solarmodul aktiv hatte und wir daher die Command ID nicht kannten. Wenn diese nun von jemandem geliefert wird und diese CommandID auch für andere Gerätefamilien passt, würde "Prüfe auf neue Parameter" das anzeigen.

Nun könnte man sich auf den Standpunkt stellen und sagen: "Dann warte ich eben, bis jemand anderes den Code für meine Gerätefamilie herausfindet", aber das wäre kein besonders soziales Verhalten und beeinträchtigt damit die Weiterentwicklung für alle. Das kann und muss natürlich jeder selber für sich entscheiden. Da ich aber nicht glaube, dass Leute bei jedem Update zuerst die "Vollversion" hochladen, dann auf neue Parameter prüfen und dann die entsprechend modifizierte version installieren, werden wir diese Variante von unserer Seite her nicht empfehlen oder im Handbuch bewerben.
Trotzdem danke für Deinen Einsatz und die Idee, die an sich ja gut ist (und die wir in abgewandelter Form zur Reduktion des Codes für die veraltete Mega-Plattform ja auch so einsetzen).
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

Shortypower

Hallo noch mal

Mein BSB Lan Adapter läuft. Alles prima soweit. Jetzt möchte ich aber die neue Version drauf flashen, da ich auch keine Werte setzen kann.
Ich kann machen was ich will, die Firmware wird nicht erneuert. Spaßeshalber mal eine andere wlan verbindung konfiguriert. Es bleibt bei der alten.
Muss man da irgendwas machen??

Ich kann eine komplett andere firmware aufspielen, zb. dieses ChipID Beispiel. Das funktioniert.
Lade ich dann die neuen BSB Sourcen, sehe ich diese auch, aber hoch geladen werden meine alten ????


Schotty

#5486
Zuletzt hattest du doch Probleme mit MQTT - kannst du uns vielleicht noch die (Auf)Lösung mitteilen..?

Zitat von: Shortypower am 15 März 2021, 09:21:06
Mein BSB Lan Adapter läuft. Alles prima soweit. Jetzt möchte ich aber die neue Version drauf flashen, da ich auch keine Werte setzen kann.
Dazu brauchst du keine neue Version, denn auch der musst du Schreibzugriff gewähren. Hast du das bei deiner jetzigen Version getan? 
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

freetz

Doch, Schotty, er braucht die neueste Version, weil es da einen Bug gab, den er sogar selber gefixt hat, siehe oben...
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

Schotty

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

Shortypower

naja selber gefixt ist vielleicht was übertrieben, vielleicht ein wenig dabei geholfen.
mqtt läuft, wenn man es richtig konfiguriert.

Neu geflashed bekomme ich trotzdem das ding nicht ;-)