-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for Intex SJB-HS #13
Comments
@Monsardi Please have a look at the project DIYSCIP because it claims to support SSP-xxx and SJB-xxx models. |
Hello |
@mabeca96: That is very interesting. I did not expect that it would work at all. On the assumption that the control principle of my project also works with the SJB model, some changes are required to address the different mapping of the control function like the bubbles. The approach would be:
Because I do not have a SJB I would prefer is someone changes the code, makes tests and submits a merge request. Otherwise I would have to dry code and you could test. My current lack of spare time will not allow me to do the latter, at least not before the summer is over. Luckily there is another option: you could hard code the changes yourself. That way we will quickly know if it really works. Open SBH20IO.cpp and change the values in the enum FRAME_BUTTON. Look into the project DIYSCIP to get the correct values or just try out different values. You already know that the current value of the filter is your value for the bubbles. Let me know if you can make it work this way and if yes, post the details of the changes you made. |
I will try it with hard code. |
Thanks for jumping in the conversation. I can confirm that I have the same buttons/functions that work and the same that fail. |
When I look into the DIYSCP code I don't see a definition for a bubble or a jet button and there seems to be no additional documentation other than the code and the schematic. So I don't have anything to compare or recommend. Please assign an otherwise unused 4digit hex value that sets only 1 bit (1, 2, 4, 8) to one or more of the functions of FRAME_BUTTON (e.g. 0x0010) which do not work for you, build and try these functions. Should be around 16 possibilities - so this should not take too long. You can probably skip all values matching FRAME_TYPE::CUE (0x0100), FRAME_TYPE::LED (0x4000) and FRAME_DIGIT::POS_1 ... POS_4) if the display works for you. Either one of the remaining codes helps or it doesn't. Beware that this way you might be able to send a code that triggers a function reserved by the manufacturer that cannot be triggered by the real panel. Regarding functions the SBH model does not support like the electrolyse - if you can find the button code and it works consistently for you than let me know. |
I found out the following code const uint16 POWER = 0x0400; what I am still missing is the display whether the disinfection is on or not. |
have you found out the missing entries? |
Did you try the setting you posted by changing FRAME_BUTTON in SBH20IO.cpp? If yes, please elaborate your results a little bit. Your current listing has some contradicting lines e.g. TEMP_DOWN and TEMP_UNIT are both 0x2000. Can it be that you do not have a TEMP_UNIT function? On the other hand you added some extra values. I assume these are the extra function of the SJB. What is "F-C"? As soon as I have the hole picture I can add a variant for the SJB model and the necessary command support via MQTT. |
F-C switches the display from fahrenheit to Celsius |
@Monsardi Could you please answer all questions from my last comment in some detail? I do not have a SJB - so without you input I cannot make the required changes. |
Hi, i'm afraid I can't answer your other questions, as it is maceba96 who found out the rest of the code. |
Gibt es schon etwas neues? Habe auch ein Intex SJB und würde diesen gern ansteuern. Für das DIYSCIP Projekt müsste man ja erstmal ein Platinenlayout Datei erstellen. Grüße |
@mabeca96 has reported several codes that work with the SJB (see #13 (comment)). So the hardware and the software of this project seem to be compatible. Now someone with an SJB needs to continue the code analysis, either with a logic analyser or by testing individual codes (see #13 (comment)). 3rd alternative is to try reverse engineering the DIYSCIP code. Once this analysis is complete the support for the SJB can be added with a new configuration option. The coding could be done by me or can be provided as a merge request. Please note that I am still unsure if finding the right codes is all it needs. With a working SJB and a logic analyser finding out is not that hard except for the wiring if you don't want to cut the display cable. |
Can you please help me? What hardware do I need? This? https://amzn.eu/d/cYtB7Zk? Which wires of the display should I connect it to? What should I press so that you can do something with it? |
I will be happy to include anything you can find out. Maybe you need no logic analyser for this. First look at comment #13. It already contains more than half of the solution. Use it as a starting point and confirm what @mabeca96 has documented. For the implementation of a new model it should first be verified that the communication principle of the SB-H20 works at all, by getting any positive reaction to commands and a feedback of a status change using the current firmware. If this is the case, the definitions of FRAME_XXXXX constants in SBH20IO.cpp need to be adjusted, maybe also DIGIT and ERROR. If possible FRAME_BUTTON and FRAME_LED should be completed first. As the SJB-HS has more functions than the SB-H20 you will probably need to select one of the button function to test for the missing commands by changing the values and do something similar with the LED inputs. Typically only 1 bit needs to be set in a command, so there are not that may test that need to be done. In a second step one would add the additional code needed to support the extra functions and add a config entry to make the model selectable. For this seconds step no hardware is needed, so I could cover this or assist. You may also have look at the documentation at the top of SBH20IO.h, to get some background, what this is good for. Please consider that it might not work. Then you may have learnt something but you have also permanently modified the pool and you need to find other uses for the ESP8266 module. Be sure you have a little experience with DIY electronics. Otherwise the pool controller might need replacement, too. If you don't want to build the ES8266 module first or if the tests described above do net get any useful results the logic analyser comes into play. Here is another option. Look at the logic analyser plot and the schematic - the name of the pins to connect to are on the left side of the plot. Having a little experience with this topic is recommended - otherwise you will have a steep learning curve ahead of you. The task it to make recordings of the various operations and extract the interesting sections from the tons of data you will get. Will probably take several days to set it up and get it done. |
Hello all, I have today also thanks Thomas my ESP8266 connected to my SJB-HS-20. Can someone tell me if I operate the control via HomeKit, then it works for me only with the Subscribed Topics. Has now already someone managed to find out the values for SJB-HS-20 for only "filtering" and "salt water treatment". |
Can't help you much with HomeKit, but you basic understanding of MQTT seems to be right. If a node "publishes" something, that's the output to the MQTT server. And "subscribing" is the other direction where a node defines the topics it is interested in. From you other comment I take that the project basically works with the SJB-HS-20. Please don't wait for someone to improve it but try it yourself, because there are not that many users who have your setup. Use my previous comment as a starting point, select any entry of FRAME_BUTTON, e.g. "HEATER", modify the current code value to a previously unused value and test it by modifying "HEATER" via MQTT. Use codes where only 1 bit is set - there are not that many. This is the easiest way to find the missing mappings. The SBH20 has 7 buttons, the SJB-HS has 9, with the extra functions JET and DISINFECTION. @mabeca96 has mentioned above that FILTER is 0x0080 and DISINFECTION is 0x0001, so it looks like only JET is missing. But some other mappings are not unique and need to be clarified. This is the current state of the mapping: CODE FUNCTION Please give it a try and publish your test results. |
Hi Jens, ca we speek in German. If you want we can also communicate by mail or whatsapp's. of course we share the obtained results here in english. Where the adjustments have to be made. I think that if we put a little more energy into this together, we will get a final functional result. |
Deutsch ist kein Problem, aber wir sollten auf GitHub bleiben. Öffne die Datei SBH20IO.cpp mit deiner IDE (z.B. Arduino). Ab Zeile 86 findest du das Button-Mapping namespace FRAME_BUTTON. Ändere den Wert von HEATER auf einen der Werte, die in der Mapping-Liste oben noch nicht zugeordnet sind, erstelle die Firmware neu und ändere über MQTT pool/command/heater zwischen on und off und beobachte, ob etwas passiert und wenn ja, was. Das Ganze so lange wiederholen, bis du die fehlenden Mappings gefunden hast. Vorher solltest du alle MQTT-Kommandos ohne Änderung der Firmware einmal ausprobiert haben, damit du weißt, welche Mappings überhaupt schon richtig sind. Auch die MQTT-Ausgabewerte müssen überprüft werden - sie sollten mit den LEDs und Ziffern auf dem Display übereinstimmen. Setzt voraus, dass du zuerst einmal deine HomeKit-Anbindung zu laufen bekommst, und da kann ich dir nur wenig helfen. Wenn es dir gelingt, das Mapping aller 9 Buttons des JSB-HS zu ermitteln, kann ich mit deinen Angaben das Programm so anpassen, dass es auch eigene MQTT-Kommandos für die beiden zusätzlichen Funktionen JET und DESINFECTION unterstützt. Bitte berücksichtige, dass es bis jetzt nur Hinweise gibt, dass es funktionieren könnte. Das Ergebnis könnte auch sein, dass es nicht ausreicht, nur die Definition von FRAME_BUTTON anzupassen. Dann geht es wahrscheinlich ohne Logic-Analyser, Beharrlichkeit (Analysen, Programmieren, Testen) und eine Portion Glück nicht weiter. |
Super, |
Hi. Sry wenn ich so dazwischen grätsche, aber hat einer von euch vielleicht eine genau Anleitung welche Dateien ich wo genau hin installieren muss auf den ESP? Und wie es mit ESPHome genau abläuft? Ich würde gerne zum steuern Home Assistant nutzen. Warscheinlich habe auch nur irgendwo was überlesen. |
Servus zusammen, also ich hab jetzt mal etwas rum probiert und das Ergebnis sieht folgendermaßen aus. folgende Werte sind für die Steuerung relevant: 0x0001 DISINFECTION ##getestet Die Funktionen wurden alle von mir erfolgreich getestet. Kann mir jemand sagen, wie ich manuell also z.B. per Commandzeile MQTT Befehle absetzen kann. Vielleicht stimmt ja meine HomeKit Konfiguration für das Thermostat noch nicht. english: Hello all, I have now tried something and the result looks like this. The following values are relevant for the control: 0x0001 DISINFECTION ##tested The functions have all been tested successfully by me. Can anyone tell me how I can send MQTT commands manually, e.g. via command line. Perhaps my HomeKit configuration for the thermostat is not yet correct. |
@jnsbyr Hi Jens, I hope you can do something with the information. |
You can use the app MQTT Analyzer for iOS Devices for example or MQTT Explorer for MacOS. Both really suitable tools. Just add your Broker and subscribe to your pool topics and you're ready to rock'n roll |
Jetzt hätte ich nochmal eine Frage an die HomeKit Leute. Der Heizzustand ist ja on/off/standby. So kann ich es auch im IOBROKER sehen. Jemand eine Idee wie man das im HomeKit visualisieren kann. Standardmäßig wenn ich die Funktion als Switch einbaue, dann hab ich ja nur die Möglichkeit ON/OFF en: Now I have another question for the HomeKit people. The heating status is on/off/standby. I can also see it in the IOBROKER. Does anyone have an idea how to visualise this in HomeKit? By default, when I install the function as a switch, I only have the option ON/OFF. |
Sehr gern, wäre toll wenn du da noch mal einen Blick 'drauf werfen könntest, bevor ich eine Firmware fertig mache:
|
servus, klar ich teste das mal durch. ich werde aber erst morgen dazukommen. |
Ich konnte es doch nicht lassen, also TEMP_DOWN 0x0200 ist korrekt und funktioniert nun auch. en: I couldn't leave it alone after all, so TEMP_DOWN 0x0200 is correct and now also works. |
@algermi Experimental support for the Intex PureSpa SJB-HS has been added to the project and the new version 1.0.3.0 is available in the development branch for testing, see commit c185f1f, download here. Changes:
Notes:
|
Moin Jens, ich hab jetzt mal die neue Firmware drauf. Vorher die Datei common.h wie folgt angepasst: Auszug aus der common.h #ifndef COMMON_H #include // select Intex PureSpa model by commenting in the desired variant //#define SERIAL_DEBUG Auch die Config.JSON hochgeladen. Fehlermeldung im Serialmonitoring: rf[112] : 0⸮unsupported Intex PureSpa model MQTT WiFi Exception (3):
ctx: cont rf[112] : 0⸮unsupported Intex PureSpa model MQTT WiFi Controller 1.0.3.0 Exception (3):
ctx: cont |
Danke für's testen. Hatte gehofft, ohne Hardware-Test auszukommen, aber es sollte nicht sein. Konnte aber ein passendens ESP8266 Board finden und damit die Exception nachvollziehen. Der Fehler war erwartungsgemäß nicht offensichtlich, aber nach genauerer Betrachtung nachvollziehbar: Der Modellname ist mit der neuen Version variabel geworden. Der in PureSpaIO::getModelName() mit PSTR geladene Text ist vom Datentyp ein const char*, aber nicht wirklich "const", so dass es beim Zugriff durch den MQTTClient zu einem Fehler kam. Bitte probiers noch mal mit der neuen Version 1.0.3.1 aus dem develop-Branch. |
Servus Jens, also erster Funktionstest abgeschlossen. Danke für's nachbessern des Scripts. Model wird richtig erkannt. Intex PureSpa SJB-HS pool/command/jet geht nur on, off geht nicht. 2. mal on senden, dann geht der Jet wieder aus, bei Bubble geht on/off. pool/command/disinfection on, dann schaltet er auf 3 Stunden Desinfektion. Mehrmals "on" senden bringt keine Veränderung. Also aktuell keine Auswahl 3/5/8 Stunden. Heater On/Off geht. Filter On/Off geht Mega Job, Geiler Schei... . Mit Dir kann man arbeiten. :-) |
was ich gerade noch bemerkt habe, bei Filter=on, da schickt er anscheinend gleich wieder ein "off" hinterher. Wie bereits erwähnt, bei den Bubbles klappt alles wunderbar, meine HomeKit Settings sind bis auf die "Steuergeräte" identisch konfiguriert. Auch wenn ich den Heater anschalte, dann geht ja automatisch der Filter mit an, das kann ich auch nicht erkennen im MQTT Client, da bleibt Filter auf Off. Log: |
Dito. Da ich kein SJB-HS habe und mir wohl auch keiner seins für die Entwicklung vorbeibringt, geht so zusammen trotzdem :-)
Habe noch einen Copy&Past-Bug gefunden, wo der Zustand der Desinfektion als Filterzustand gemeldet wurde. Neue Version 1.0.3.2 verfügbar. Wahrscheinlich ist das der Grund.
Das macht die Intex-Steuerung.
Sollte eigentlich nicht so sein. Nimm die neue Version, schalte manuell am Display den Filter ein- und aus und beobachte, ob das per MQTT gemeldet wird.
Das kann ich leider nicht seblst nachvollziehen. Das erfolgreiche Umschalten hängt u.a. von der LED-Zuordnung ab. Schalte noch mal manuell am Display den Jet ein- und aus und beobachte, ob jede Änderung per MQTT gemeldet wird.
Habe inzwischen einen möglichen Lösungsansatz, aber der ist relativ aufwendig. Würde gern erst die anderen Punkte oben alle abgefrühstückt haben. Du solltest die Zeit manuell am Display einstellen können. Bitte Info, ob sich die Intex-Steuerung beim Neustart der Desinfektion den zuletzt verwendeten Wert merkt oder z.B. immer 3 h vorschlägt. |
Servus, Lg Alex |
Moin Jens, also das mit dem Filter-Thema ist nun gefixt. JET-Thema ist noch offen. Wenn ich per Display JET ON/OFF schalte, wir im MQTT sauber mit protokolliert. (pool/jet = on oder off) wenn ich pool/command/jet On/Off senden, da greift das Kommando (command) aber scheinbar wird der Topic Pool/JET nicht aktualisiert. Zu diesem Thema: Beim drücken des Buttons Desinfektion wird immer als erstes der Wert 3 h vorgeschlagen, erneutes drücken des Buttons ändert dann auf 5 h und nochmaliges drücken auf 8 h. |
Danke für die Rückmeldungen. Es gibt mal wieder eine neue Version (1.0.3.3, 403366e), die möglicherweise das Problem mit dem Jet löst. Zur Desinfektion: Ich gehe davon aus, dass du mit "erneutes drücken des Buttons" den Desinfektions-Button meinst. Hier werden also nicht die hoch/runter-Buttons verwendet, oder doch? Mir wäre dann unklar, wie man die Desinfektion ein- und ausschaltet. Muss man dann 4x drücken? |
Moin, genau richtig, die Hoch/Runter-Buttons spielen für die Desinfektion keine Rolle. Wenn der Desinfektionsbutton 4 mal hintereinander gedrückt wird ist die Desinfektion "wieder deaktiviert" d.h. das Desinfektionsprogramm startet nicht. Wenn das Desinfektionsprogramm z.B. 3 Stunden läuft und man es abschalten will, so muss man 4 mal drücken, läuft das Desinfektionsprogramm für 5 Stunden und soll beendet werden, dann muss man 3 mal drücken usw. Die neue Version werde ich mir gleich mal testen und gebe dir wieder bescheid. |
Moin nochmal. Das Thema Jet ist Erld. on/off command funktioniert. |
Super, danke fürs testen. 👍 Werde die aktuelle Version als "stabil" freigeben, Mit deinen Rückmeldungen zur Bedienung der Desinfektion werde ich mir eine Lösung überlegen. Diese Erweiterung erfordert allerdings größere Umbaumaßnahmen an einer anderen Stelle, deshalb werde ich mir dafür ein paar Wochen Zeit nehmen. |
@jnsbyr |
Hallo,
Gibt es eine Anleitung, wie ich die Firmware mit Arduino Flaschen kann?
Ich habe mir leider die Konfiguration zerschossen.
algermi ***@***.***> schrieb am Fr., 2. Juni 2023, 06:52:
… @jnsbyr <https://github.com/jnsbyr>
Moin Jens, denke das mit der Desinfektion ist nicht zeitkritisch, wichtig
ist, das sie überhaupt läuft. Danke Dir für Deine Bemühungen
—
Reply to this email directly, view it on GitHub
<#13 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AM7AEAJ75YLLCO4KO3MM7EDXJFWRVANCNFSM5X7ZLMBQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Bitte folge den im README unter Firmware beschriebenen Hinweisen. Zusätzlich brauchst du vielleicht einen USB/Seriell-Adapter, wenn du kein Wemos D1 board verwendest. Wie man den an den ESP8266 anschließt, ist schon sehr oft an anderer Stelle in verschiedenen Sprachen beschrieben worden, nimm einfach deine Lieblings-Suchmaschine. Wenn die Verkabelung steht und die Firmware mit der Arduino IDE erfolgreich kompiliert wurde, gib es da auch noch einen "Hochladen" Button. Wenn das nicht reichen sollte, dann versuche etwas genauer zu beschreiben, womit du Schwierigkeiten hast und öffne dafür ein neues Issue. |
Hi, Vielen dank |
@FireSale14 First make sure you use the version 1.0.3.3 form the main branch. From your description it might be possible that the MQTT server immediately tries to change the temperature when connecting and that fails somehow. You should know that the firmware always needs to disconnects for this, but typically this happens only once. You might get more infos if you enable the debug output by commenting in the define at the top of common.h. Have a look for yourself and if it does not tell you anything, post the most interesting part, preferably as a new issue. |
@algermi & all other SJB-HS users There is a new firmware version 1.0.5.1 in branch develop, commit 8500722, that supports reading the disinfection time (see updated README). Before I will make this an official release I would prefer to get your feedback if it is working as expected, because I do not have a SJB-HS to test it myself. |
@jnsbyr |
@SpaWnOL68 Reading the disinfection time and writing the disinfection command are separate things. The new firmware "only" improves on the reading to find out, if it works at all. With your test result I will be able to make a modification for the disinfection command. It currently supports the values on/off but will actually toggle through the available time settings, right? The next version will probably be able to set a specific disinfection time. |
Yes, exactly. 0 = Off and 3/5/8 = On |
Hello, I tried with the new firmware. Intex Desinfection Time Input Select
|
Thank for testing and reporting back. FYI: There is a new release that includes the features that @SpaWnOL68 has tested and additionally avoids disconnecting the MQTT connection while changing the desired water temperature. The new method, though a little slower than the previous approach, mimics the human behaviour when operating the buttons on the physical Intex panel by "listening" to the buzzer and continuously "reading" the new setpoint value from the display. It may still happen temporarily that the setpoint is changed by more than 1 degree in one step, but if this happens when the desired value has been exceeded the new code will simply reverse the direction so that the desired value is still set and saved. Background: In issue #15 RealByron suggested an alternative approach to set the desired water temperature by extending the length of the reply pulse until the falling edge of the latch signal. I tried this variant but had to abandon it, because:
|
Hello,
I have a intex sjb hs with salt electrolyse + jet streams.
Do you think it is possible to add this functionality?
all the best Peter
The text was updated successfully, but these errors were encountered: