GithubHelp home page GithubHelp logo

balboa_worldwide_app's Issues

Pinout

I'm actually looking to do similar with my tub and trying to figure out the pinout. Based on your findings I suspect the wifi module is nothing more than a dumb RS232 to Wifi module and that the protocol from the main to the topside is the same as what you're seeing from the Wifi module. I'm trying to find some documentation on the RJ45 port that Balboa uses on their VS series units. Does anyone have any info on it or can anyone confirm the wifi module isn't anything special?

URI Path RS-485

Where and how exactly do I properly set the uri path for RS-485?

I've tried many variations, and there's currently one that I've commented out. Is this the right line to be putting in the URI.Path? I'm not certain as I'm a not familiar to ruby..

I'm running on a mac, and can't detect the spa. I've attached a photo of the client error.

`
require 'bwa/message'

module BWA

class Client
attr_reader :last_status, :last_control_configuration, :last_control_configuration2, :last_filter_configuration

def initialize(uri)
  uri = URI.parse(uri)
  
  if uri.scheme == 'tcp'
    require 'socket'
    @io = TCPSocket.new(uri.host, uri.port || 4217)
  elsif uri.scheme == 'telnet' || uri.scheme == 'rfc2217'
    require 'net/telnet/rfc2217'
    @io = Net::Telnet::RFC2217.new("Host" => uri.host, "Port" => uri.port || 23, "baud" => 115200)
    @queue = []
  else
    require 'serialport'
    ##@io = SerialPort.open(uri.path:"/dev/tty.usbserial-AR0JVV52", "baud" => 115200)
    @io = SerialPort.open(uri.path, "baud" => 115200)
    @queue = []
  end
  @buffer = ""
end

`

ruby gem

Process takes ~100% cpu

Current platform where Im running it is a raspberry pi 3 +. Directly after starting it takes up 100% cpu and stays there. Question is if there is some while loop without proper sleep or something missing?

Additional commands

I don't have another way of contacting you really, so..

{ 0x0A, 0xBF, 0x22 }, /* BMTS_PANEL_REQ */

Can you try sending:
7E080ABF22XX00YYCK7E
where: CK checksum. XX,YY is one of:
00 01
02 00
04 00

And maybe a few other values too if you want. I got some odd responses, and some interesting ones. Namely, 00/01 gave me a much better config status, and 02/00 gave me the model number, version, and some other version info encoded in hex. I'd like to see your data to see if I can decode it properly. Here is mine:

0,1 - 7E0B0ABF2E 0A0001500000BF7E
2,0 - 7E1A0ABF24 64DC140042503230303047310451800C6B010A0200F97E
4,0 - 7E0E0ABF25 120432635068290341197E

This was my reply from 00/01
SZ 02 03 04 05 06 07 08 09 10 CB
0B 0A BF 2E 0A 00 01 50 00 00 BF

05 - nrof pumps. Bitmask 2 bits per pump.
06 - P6xxxxP5
07 - L2xxxxL1
08 - CxxxxxBL - circpump, blower
09 - xxMIxxAA - mister, Aux2, Aux1

Docs Error - Pi + RS485

The docs state "It is possible to directly connect to the GPIO on a Raspberry Pi" but fro what I can see, none of the models of the Pi support RS485 directly, only with the addition of UART to RS485 adapter shield

"Could not find spa!"

Noticing there has been a lot of activity lately, I figured I'd re-visit.

Current setup:
Pi Zero-W with 485 adapter.

Can confirm communication is on /dev/ttyUSB0 Bus. Previously I had the Pi Set up with ser2net to communicate to a Crestron processor.

Issue:

When attempting to run the program it can't detect the spa for 485 communication.

Attached is a screenshot of .service and the status terminal
image
image
image

I'm stumped. I gave up on this for about a year and went a different path, however I'd still like this functioning regardless.

Blower not working

Hi
If i try to set blower (homie/bwa/spa/blower/set), the service stopps with the following error:
"W, Balboa MQTT Bridge running (version 1.3.0)
W, from mqtt: "" at homie/bwa/spa/blower/set
Traceback (most recent call last):
12: from /usr/local/bin/bwa_mqtt_bridge:23:in <main>' 11: from /usr/local/bin/bwa_mqtt_bridge:23:in load'
10: from /usr/local/share/gems/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:614:in <top (required)>' 9: from /usr/local/share/gems/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:614:in new'
8: from /usr/local/share/gems/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:149:in initialize' 7: from /usr/local/share/gems/gems/mqtt-0.5.0/lib/mqtt/client.rb:404:in get'
6: from /usr/local/share/gems/gems/mqtt-0.5.0/lib/mqtt/client.rb:435:in get_packet' 5: from /usr/local/share/gems/gems/mqtt-0.5.0/lib/mqtt/client.rb:435:in loop'
4: from /usr/local/share/gems/gems/mqtt-0.5.0/lib/mqtt/client.rb:437:in block in get_packet' 3: from /usr/local/share/gems/gems/mqtt-0.5.0/lib/mqtt/client.rb:405:in block in get'
2: from /usr/local/share/gems/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:184:in block in initialize' 1: from /usr/local/share/gems/gems/balboa_worldwide_app-1.3.0/lib/bwa/client.rb:145:in set_blower'
/usr/local/share/gems/gems/balboa_worldwide_app-1.3.0/lib/bwa/client.rb:145:in `-': false can't be coerced into Integer (TypeError)"

BP200G1 no Data via RS485?

Trying to setup my BP200G1 based Whirlpool. But it seems I am not getting Data except the model.
How do I find Information about debugging the Messages?
Any hints what I might be missing?
Using USB RS485 dongle

mosquito output:
homie/bwa/$homie v4.0.0
homie/bwa/$name BWA Spa
homie/bwa/$state init
homie/bwa/$nodes spa
homie/bwa/spa/$name BWA Spa
homie/bwa/spa/$type BP200G1
homie/bwa/spa/$properties priming,heatingmode,temperaturescale,24htime,heating,temperaturerange,currenttemperature,settemperature,filter1,filter2
homie/bwa/spa/priming/$name Is the pump priming
homie/bwa/spa/priming/$datatype boolean
homie/bwa/spa/heatingmode/$name Current heating mode
homie/bwa/spa/heatingmode/$datatype enum
homie/bwa/spa/heatingmode/$format ready,rest,ready_in_rest
homie/bwa/spa/heatingmode/$settable true
homie/bwa/spa/temperaturescale/$name Temperature scale
homie/bwa/spa/temperaturescale/$datatype enum
homie/bwa/spa/temperaturescale/$format fahrenheit,celsius
homie/bwa/spa/temperaturescale/$settable true
homie/bwa/spa/24htime/$name Clock is 24 hour time
homie/bwa/spa/24htime/$datatype boolean
homie/bwa/spa/24htime/$settable true
homie/bwa/spa/heating/$name Heater is currently running
homie/bwa/spa/heating/$datatype boolean
homie/bwa/spa/temperaturerange/$name Current temperature range
homie/bwa/spa/temperaturerange/$datatype enum
homie/bwa/spa/temperaturerange/$format high,low
homie/bwa/spa/temperaturerange/$settable true
homie/bwa/spa/currenttemperature/$name Current temperature
homie/bwa/spa/currenttemperature/$datatype integer
homie/bwa/spa/settemperature/$name Set Temperature
homie/bwa/spa/settemperature/$datatype integer
homie/bwa/spa/settemperature/$settable true
homie/bwa/spa/filter1/$name Filter cycle 1 is currently running
homie/bwa/spa/filter1/$datatype boolean
homie/bwa/spa/filter2/$name Filter cycle 2 is currently running
homie/bwa/spa/filter2/$datatype boolean

Patch to add Filter Cycles and Hold functionality

The attached patch adds the ability to get and set filter cycle 1 and 2 and the "Hold" toggle.
There are also a couple of bug fixes that I needed to make it work.

  • format of the URL (bwa_client)
  • removal of the homie format entry for currenttemperature since this is irrelevant as the value could be well out of the defined range. (e.g. when heating from a fresh fill). In my case, with openhab, this prevented the display of any value outside the format. (bwa_mqtt_bridge)
  • update of default TCP port to 4257 as defined on the Wiki (client.rb)
  • removal of extraneous "&" on when serializing current temperature (status.rb)

I don't have a github fork and don't have much familiarity with git hub, hence a patch instead of a pull request.

filtercycles_patch.txt

Unknown Bus packages

between the known packets, unknown packets appear regularly more often than known ones.
I am directly over rs485 at the bus.

7E 05 11 BF 06 37 7E
7E 05 12 BF 06 8A 7E
7E 05 12 BF 07 8D 7E
7E 05 13 BF 06 E1 7E
7E 05 14 BF 06 F7 7E
7E 05 FE BF 00 AC 7E
7E 05 15 BF 06 9C 7E
7E 05 16 BF 06 21 7E
7E 05 17 BF 06 4A 7E
7E 05 18 BF 06 0D 7E
7E 05 19 BF 06 66 7E
7E 05 1A BF 06 DB 7E
7E 05 1B BF 06 B0 7E
7E 05 10 BF 06 5C 7E

does anyone know what that is?
looks like packages without content to me.

7E Start
05 Message Length
10 Message Type
BF Message Type
06 Message Type
5C CRC
7E Stop

RS485 Connection

Our spa was just delivered and I wonder were the RS485 adapter could be connected.

  • There is a connector for the WLAN module just on the board
  • There is a cable for a second control display
    Which one is correct?

Thanks for help.

Running this without the control panel

Hi there,

My panel is broken. Water got into it I think. The display is messed up and the buttons randomly "press" themselves.

Is this able to work without the control panel? I get a timeout when starting the service if the panel isn't plugged in. If I do journalctl -f -u bwa_mqtt_bridge.service I can see:

Jun 28 13:11:52 hottub bwa_mqtt_bridge[109638]: I,   to spa: #<BWA::Messages::ConfigurationRequest>
Jun 28 13:11:52 hottub bwa_mqtt_bridge[109638]: D, discarding invalid data prior to message 00 7e

With the panel plugged in everything works fine, but then of course the spa goes crazy due to the aforementioned button issues.

Service dont start.

Hi, I got here from the following link.

https://community.home-assistant.io/t/balboa-hot-tub-spa-automation-and-power-savings/353032

I did the installation and edited the file, so that it has the IP of my MQTT and serial port (BT should be disabled):

"ExecStart=/usr/local/bin/bwa_mqtt_bridge mqtt://192.168.x.x/ /dev/ttyAMA0"

But when I start the service, an error pops up.

"bwa_mqtt_bridge.service: Failed to determine user credentials: No such process"
"bwa_mqtt_bridge.service: Failed at step USER spawning /usr/local/bin/bwa_mqtt_bridge: No such process"

Do you happen to know where the problem is?

M100_235 v52.0 Status Message Error

I'm seeing the following error log when running on a RPi 3 with a same model USB RS485 adapter (DSD Tech SH-U11) as you specify.

#<Thread:0x01f22148@/var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:20 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
        6: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:21:in `block in initialize'
        5: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:21:in `loop'
        4: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:23:in `block (2 levels) in initialize'
        3: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/client.rb:26:in `poll'
        2: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/client.rb:26:in `loop'
        1: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/client.rb:27:in `block in poll'
/var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/message.rb:59:in `parse':  Unrecognized data length (32) for message BWA::Messages::Status (BWA::InvalidMessage)

I'm wondering whether this is something tied to my SSID being one that is not mentioned in your documentation/wiki. It is the following: M100_235 v52.0

My Balboa controller is a BP200G3 and I connected my RPi & RS485 adapter not via a Y-cable but directly to the second jumper connector intended for the Wifi controller I believe.

How to contribute to Examples in Wiki

As written in one of the closed issues #22 I would like to contribute also - but do not know how.
Could you please give me a short explanation of how to do this?

…More of a “Question” rather than an “Issue”…

It looks like some very good “decoding” has been done here to figure out what the hot tub controller is saying, and how to also speak back to it. I apologize in advance if this is too elementary, but I would like to understand your use case for this work.

It appears that you run a Ruby program…but what, and how do you interacts with that program?
How do to you tell the Ruby program to adjust the spa conditions? How (and to what) does the Ruby program report back spa conditions?

…At the risk of asking too much, how does one go about running this set of .rb files? ….. (I will do more Googling on how to run ruby, but anything you can say will be appreciated by me and likely many others)…

To better explain why I ask these questions, here is my “use case” that I hope to achieve:

From my home automation and control program (PowerHome), I am hoping that I can run some sort of command line (or write a PH plugin) type program, and have it control and also return spa information.
That would then allow me to integrate my spa more fully into the rest of my HA system (events, touch screens, reporting and control). By better understanding your use case, I hope to see how to achieve mine.

Again, thanks for all your fine work.

Control heating

I would like to prevent the spa from heating when energy prices are too high (My contract has varying prices on an hourly basis) and force heating (in certain ranges) when energy is available from the PV.
What is the best way to do this (of course I can change the settemperature - but maybe there is a better way ...)?
With other words: I have seen the status "Heatingmode" and "Hold" but I do not know the meaning of these.

How to debug this app?

I have a Pi attached to my hot tub with the suggested RS-485 USB adapter.

I start bwa_mqtt_bridge and it runs with no errors.

It registers with my MQTT server but all values are NULL.

I did a hexdump /dev/ttyUSB0 and a large amount of data seems to be going by.

What else can I troubleshoot this? Is there any way to turn on debugging so I can see what's happening?

MQTT ReadMe Question

In the MQTT readme section, your mention to:

sudo curl https://github.com/ccutrer/balboa_worldwide_app/raw/master/contrib/bwa_mqtt_bridge.service -L -o /etc/systemd/system/bwa_mqtt_bridge.service

The curl command pulls in a file that seems to be mostly github "junk".

Question: Should it not rather be:

sudo curl https://github.com/ccutrer/balboa_worldwide_app/tree/main/contrib/bwa_mqtt_bridge.service -L -o /etc/systemd/system/bwa_mqtt_bridge.service? ==>Note that "/raw/master/" was replaced with "/tree/main/"

As you can tell, I am a GitHub novice, so if this is incorrect, please forgive me.

Home Assistant MQTT Auto Discovery

I have the spa hooked up to an RS485 to WiFi dongle and using the docker container here: https://github.com/jshank/bwalink

However, my Home Assistant is not finding anything through MQTT Auto Discovery. Things I have checked and verified:

  • RS485 to WiFi dongle is on, configured and connected to WiFi
  • MQTT broker is on and has valid user accounts
  • Docker container is running and able to connect to both the RS485 dongle and the MQTT broker
  • HA MQTT integration is connected to the MQTT broker and Auto Discovery is enabled (check mark)
  • Topics under homie/# exist when I subscribe to it through HA (I cannot confirm if they are being updated though I assume they are)

What do I need to do to get HA to see and create the device, sensors, and other entities created through the MQTT topic?

Controls go "Unavailable" (Home Assistant)

Hi C,

Sorry, I seem to be the only one banging on about stuff in your issues recently! I am still using this and it's been great for managing power usage on our tub.

I am using this on an Ubuntu 20.04 proxmox VM. It's a fresh install apart from this library (installed with instructions in the README) and I'm using ruby 2.7.0p0. It talks to HA/Mosquitto running on another VM. The tub controller is MQBP20UX V2.1.1, connected with USB -> RS485 converter via USB passthrough from the host machine. All works fine so far.

At around 8:49PM every night the controls in HA become "Unavailable" (greyed out). The clock and timezone is set correctly. For the last few nights it's happened at 20:49:23, 20:49:23 again, 20:49:35, 20:49:47 and 20:49:41 this evening.

I poked around for a few days and found:

  • It does not appear to be related to the timed settings of the tub, like filter cycle and duration.
  • HA and physical controls work fine just before it happens (and all other times in the day).
  • Looking at the MQTT logs at the witching hour, the homie/bwa/$state topic gets set to init then ready, then 3 seconds later lost.
  • I have the systemd file set to DEBUG with LOG_VERBOSITY=1 and nothing unusual is listed in journalctl -u bwa_mqtt_bridge.service.
  • Nothing unusual in syslog either.
  • Nothing unusual is happening in the HA Logbook at the time, apart from all the bwa controls suddenly getting listed as unavailable.
  • After the HA controls stop working, I can look at the homie topics using MQTT Explorer and the physical tub controls still update them.
  • If I manually set /homie/bwa/$state back to ready, I can once again control the tub from HA.

Any idea what this could be, or the best way to proceed to debugging it? I know next to nothing about Ruby unfortunately. Right now my "solution" is to monitor one of the bwa entities in Home Assistant and fire an ssh command at the balboa VM to restart the service. It works, but I'm more curious than anything about what could be causing this...

Control of lights

This is a minor issue, however - I'm wondering if it's possible to control the lights? Any Idea?

Monitoring temperature

Is there a way to get the bridge to regularly retrieve the current state? As far as I can see it currently retrieves the state on startup, then doesn't retrieve it again. I would like it to retrieve it periodically, e.g., every 30 seconds.

PS: thanks very much @ccutrer (and @garbled1 and others) for your work on this awesome project, the photographs and pinouts and discussions made it all very easy to get set up with my new tub, and of course the many hours of decoding is very much appreciated. I'm using a Pi Zero W and a USB RS-485 interface.

Sensors not updating

I've been troubleshooting a number of issues with @jshank but now we think the issues I'm encountering may be due to the brand of controller I have. I have a Balboa MXBP20. All of the sensors and entities get created in MQTT, however they only get updated the first time the app runs. If I make changes local at the front panel, the sensors do not get updated. I can set topics using MQTT Explorer or Home Assistant frontend and things will change at the hot tub, but the corresponding sensor (pump running, temperature set point, etc) will never show this change.

A lot of diagnostics/troubleshooting here: jshank#4 (comment)

Let me know if you need any logs from the app, or MQTT, or anywhere else.

OpenHab autodiscovery not compatible with Homie version 4.0.0

I've just setup your app and I noticed that my spa does not automatically appear in OpenHab as a new Thing. I found out that your app is sending Homie version 4.0.0 which is not yet compatible with OpenHab. So I simply changed the version to 3.0.0 and the spa did appear automatically in the Thing autodiscovery and the items also work.

As far as I've seen there is no need for version 4.0 with the items you defined. Can you change the version in your code too to fix this problem?

Filtering out #<BWA::Messages::ToggleItem 0>

I'm trying to debug bwalink quietly going away after several days of being up.

What's the best way to filter #<BWA::Messages::ToggleItem 0> out of the debug logs? I think the change needs to be in message.rb line 127 but not adept enough at Ruby to filter out ToggleItem type messages with an item of 0.

The issue could be socat or the RS-485 -> IP interface. Debugging is hard because it works fine after I restart the container. I just get a constant stream of these messages in my debug logs preventing me from seeing other behaviors.

D,  read: 7e 07 10 bf 11 00 00 3e 7e
D, from spa: #<BWA::Messages::ToggleItem 0>

8-pin Molex

First of all, a million thanks for this well documented project! I'm using cribskip's ESP project as basis and have it running. Was about to measure and connect it to my spa, but found out I have 8-pin Molex instead of 4-pin. Anyone that could share some insight of the 8-pin Molex? Tried to measure, but seemed to get 10V and didn't find any 12-15V. Also, got 5V "several places", and no 2-3V. So I got a bit reluctant to connect my spa before I figure out some more.

My spa is having a Balboa GL2000 HSEX2000 Mach3 system (part no 54503-01) and is connected to a ML400 panel on the J70 plug (8-pin molex). I also have J71 available for "main panel" it seems. It's a 2007/2008 model.

PS! I realize this is not an issue with this repo, please forgive me for opening this, but I couldn't find anywhere else to ask so I gave it a shot. If there is a more appropriate place to ask, kindly guide me to it.

Need help on this?

I found some helpful stuff to assist in reversing the protocol on tcp/4257 among other protocols used by Balboa. Basically I pulled down their android app and deconstructed it with apktool. Lots of insight in there.

GS 502 PCB only RJ45 connectors

Hi,
Thanks for. this great writeup - most current spa's have a new Balboa PCB board where the 4 wire connector is removed in total. I did do some testing waiting on a protocol analyser to finalise it. But someone might all-ready have solved it but i did not find it in the documentation, where only the 4 wire connection is documented so i'm looking for A and B channels in the 8 pin RJ-45 plug J1 and J2 in below image.

image of GS502

Below so far my measurements and findings i'm not seeing a 12V wire hence my ask and need to further investigate before connecting components and a pi to the spa.

#| interface side | voltage | function |
#|----------------|---------|----------|
#|  pin 1         |  5.15v     vcc ?
#|  pin 2         |  0v        gnd ?
#|  pin 3         |  0.14v     copy of pin 4 or noice ? 
#|  pin 4         |  0.25v     clock - nice symetic signal 0-1
#|  pin 5         |            did not make sense yet
#|  pin 6         |  3.23v     ?
#|  pin 7         |  0v        gnd  copy ?
#|  pin 8         |  4.98v     vcc copy ?

Thanks Frans

TypeError in poll (client.rb)

I'm using the WiFi module. Port 4217 (client.rb line 11) is not working, so I specified port 4257. Then I get the following error:

#<Thread:0x000055bad5654920@/var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:20 run> terminated with exception (report_on_exception is true):

Traceback (most recent call last):
   6: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:21:in `block in initialize'
   5: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:21:in `loop'
   4: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/bin/bwa_mqtt_bridge:23:in `block (2 levels) in initialize'
   3: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/client.rb:26:in `poll'
   2: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/client.rb:26:in `loop'
   1: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/client.rb:33:in `block in poll'
/var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.1.2/lib/bwa/client.rb:33:in `send': no implicit conversion of Symbol into String (TypeError)

My Balboa controller is a BP2100G0.

Blower Informations

Hi,

I found out about how you can find the Bolwer status and how you can use it in Toggle Item.
this workes for me with aspa Felicity from fonteyn with a Balboa TP800 9 9utton display

Status Update
MS ML MT MT MT 00 F1 CT HH MM F2 00 00 00 F3 F4 PP 00 CP LF 00 00 00 00 00 ST 00 00 00 CB ME

Flag CP is
CP: Circ pump: 0x02 = on
CP: Blower: 0x0C = on

Toggle Item
Message type 0a bf 11
0x0C - Blower

filterx settings throw NoMethodError

I've not had any luck setting any of the new filter options via MQTT. They all throw NoMethodError and then Balboa MQTT Bridge restarts.

Setting filter1hour to 12

W, Balboa MQTT Bridge running (version 1.3.0)
W, from mqtt: "ready" at homie/bwa/spa/heatingmode/set
W, from mqtt: "12" at homie/bwa/spa/filter1hour/set
/usr/local/bundle/gems/balboa_worldwide_app-1.3.0/lib/bwa/client.rb:67:in `send_message': undefined method `src=' for "\n\xBF#\f\x00\x03\x00\b\x00\x00\x0F":String (NoMethodError)
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/lib/bwa/client.rb:200:in `set_filtercycles'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:186:in `block in initialize'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:405:in `block in get'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:437:in `block in get_packet'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:435:in `loop'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:435:in `get_packet'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:404:in `get'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:147:in `initialize'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:602:in `new'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:602:in `<top (required)>'
   from /usr/local/bundle/bin/bwa_mqtt_bridge:23:in `load'
   from /usr/local/bundle/bin/bwa_mqtt_bridge:23:in `<main>'

Setting filter1minute to 10

W, from mqtt: "10" at homie/bwa/spa/filter1minute/set
/usr/local/bundle/gems/balboa_worldwide_app-1.3.0/lib/bwa/client.rb:67:in `send_message': undefined method `src=' for "\n\xBF#\r\n\x03\x00\b\x00\x00\x0F":String (NoMethodError)
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/lib/bwa/client.rb:200:in `set_filtercycles'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:186:in `block in initialize'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:405:in `block in get'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:437:in `block in get_packet'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:435:in `loop'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:435:in `get_packet'
   from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:404:in `get'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:147:in `initialize'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:602:in `new'
   from /usr/local/bundle/gems/balboa_worldwide_app-1.3.0/bin/bwa_mqtt_bridge:602:in `<top (required)>'
   from /usr/local/bundle/bin/bwa_mqtt_bridge:23:in `load'
   from /usr/local/bundle/bin/bwa_mqtt_bridge:23:in `<main>'
W, Balboa MQTT Bridge running (version 1.3.0)

Gem can't be installed on Raspberry

Hi,

I just tried to install your gem on an Raspberry Pi 2 Model B Rev 1.1 - but got this error message:

root@loxberry:/opt/loxberry# gem install balboa_worldwide_app
Building native extensions. This could take a while...
ERROR:  Error installing balboa_worldwide_app:
        ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.5.0/gems/digest-crc-0.6.4/ext/digest
/usr/bin/ruby2.5 -rrubygems /usr/share/rubygems-integration/all/gems/rake-12.3.1/exe/rake RUBYARCHDIR=/var/lib/gems/2.5.0/extensions/arm-linux/2.5.0/digest-crc-0.6.4 RUBYLIBDIR=/var/lib/gems/2.5.0/extensions/arm-linux/2.5.0/digest-crc-0.6.4
/usr/bin/ruby2.5: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-12.3.1/exe/rake (LoadError)

rake failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.5.0/gems/digest-crc-0.6.4 for inspection.
Results logged to /var/lib/gems/2.5.0/extensions/arm-linux/2.5.0/digest-crc-0.6.4/gem_make.out

Do you have any advice what to do?
It's a Raspbian distribution:
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Thanks for your help!

How to start app with WIFI connection

Could you please give an example how to execute the app when connectin via Wifi (with an IP address).
I tried it this way:

/usr/local/bin/bwa_mqtt_bridge mqtt://localhost 192.168.178.199

but got an error message:

Traceback (most recent call last):
        7: from /usr/local/bin/bwa_mqtt_bridge:23:in `<main>'
        6: from /usr/local/bin/bwa_mqtt_bridge:23:in `load'
        5: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.2.4/bin/bwa_mqtt_bridge:278:in `<top (required)>'
        4: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.2.4/bin/bwa_mqtt_bridge:278:in `new'
        3: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.2.4/lib/bwa/client.rb:18:in `initialize'
        2: from /var/lib/gems/2.5.0/gems/balboa_worldwide_app-1.2.4/lib/bwa/client.rb:18:in `new'
        1: from /var/lib/gems/2.5.0/gems/ccutrer-serialport-1.0.0/lib/ccutrer/serial_port.rb:7:in `initialize'
/var/lib/gems/2.5.0/gems/ccutrer-serialport-1.0.0/lib/ccutrer/serial_port.rb:7:in `initialize': No such file or directory @ rb_sysopen - 192.168.178.20 (Errno::ENOENT)

Thanks!

Does this allow you to set values, or simply read?

It seems like this Ruby gem queries the Spa and then publishes the resulting data (temp, pump status, etc) to the MQTT broker.

Does it also listen to that same MQTT broker on particular topics for SET commands, and then turn around and set temperature, turn on pumps, etc? I'm not seeing that, from digging through the code...

HomeAssistant & MQTT user hoping to integrate my Tub with this...

Toggle item 29 (0x1D)

Hi and thanks for this software. It works straight away with my controller (MQBP20UX) and I can control it with Home Assistant.

I saw a toggle item which is not in the wiki: number 29 (0x1D) which is generated by pressing the "soak" button on my control panel. This button turns all the pumps off.

I'm not sure how widely supported it is, but it might make for a better method of turning the pump off, rather than cycling the pump mode back to 0. Currently when I select 0 for the pump speed, sometimes it misses a toggle and is stuck on 2.

I will try to experiment by adding this command to the code, but I am very new to ruby.

thanks!

Patent for a "Method and system for testing spas"

Perhaps this Balboa patent contains relevant information on how to decode the TTL side of the interface.

It describes a test setup for Balboa controlled spas, and the configuration indicates 7 different models around year 2003. Maybe the internal control protocol has not changed that much...

https://www.google.com/patents/US7158909

Thanks for your efforts so far. Myself I just realized after buying that I need an internet control for the spa. It has a Balboa GS510Z controller with VL801 panel. There is no Wifi module or BWA for that, so I look for a way to interface directly on the SPI bus in order to connect an IoT device, and hopefully a mobile app that communicates with that over the internet.

handling of MQTT URI with special character

I have a username/password that contains special characters. When I setup the MQTT URI as such: mqtt://username:pa##[email protected]:port the app starts, throws an error asking if the URI is actually a URI, then stops unexpectedly. I am running the app in a docker container created by @jshank and he determined his container image properly passes the environment variable to the app, but the app is having difficulty parsing it. I have tried passing the URI in the environment variable using single quotes and also tried escaping the # but neither worked. This is the error in the docker container log:

/usr/local/lib/ruby/2.6.0/uri/rfc3986_parser.rb:67:in `split': bad URI(is not URI?): "mqtt://username:pa##word@ip:port" (URI::InvalidURIError)
	from /usr/local/lib/ruby/2.6.0/uri/rfc3986_parser.rb:73:in `parse'
	from /usr/local/lib/ruby/2.6.0/uri/common.rb:234:in `parse'
	from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:562:in `parse_uri'
	from /usr/local/bundle/gems/mqtt-0.5.0/lib/mqtt/client.rb:152:in `initialize'
	from /usr/local/bundle/gems/balboa_worldwide_app-1.2.5/bin/bwa_mqtt_bridge:13:in `new'
	from /usr/local/bundle/gems/balboa_worldwide_app-1.2.5/bin/bwa_mqtt_bridge:13:in `initialize'
	from /usr/local/bundle/gems/balboa_worldwide_app-1.2.5/bin/bwa_mqtt_bridge:283:in `new'
	from /usr/local/bundle/gems/balboa_worldwide_app-1.2.5/bin/bwa_mqtt_bridge:283:in `<top (required)>'
	from /usr/local/bundle/bin/bwa_mqtt_bridge:23:in `load'	
	from /usr/local/bundle/bin/bwa_mqtt_bridge:23:in `<main>'

I have not tried this again on the 1.3.0 app version. Ultimately I ended up creating a new username/password that did not contain special characters and that worked.

8-pin pinout?

So there is heaps of (amazing!) information here, but I seem to be coming up a little short.

I've got a GS-510DZ. It has a J1 and J2 connector, both RJ45. J1 goes to the control panel.

There are markings on the pcb for J1A and J2A, which is where the Molex connectors seem to be on other models in the family. To the point it seems that it's the same thing, just different connectors.

The fact they aren't populated on mine is fine, I'm happy enough to solder in a connector, or if the RJ45 socket is the same thing, then to use that instead.

PCB traces for the 2 "A" connectors appear to be connected in series, suggesting rs485.

In fact I can see the J1/J1A has extra connectors on the top 2 pins, which fits with the manual warnings that back-lit control panels will only work on J1, I'm guessing it's an extra power supply for the leds.

image

So in short, I believe there is rs485 here, but I'm confused as to which pins it will be on in the 8-pin connector.

I'll assume not pins 1-2, due to the extra power and non-connection to J2. Looks like pin 8 is also connected, but pin 7 is not connected on J1, connected elsewhere on J2.

So I'm going to guess the RS485 is pins 3,4,5,6 out of the 8, with 1-2 for extra power and 7-8 unknown.

What's the best way to safely test for rs485 here? I don't want to kill it :)

Concurrent or nearly concurrent access

Hi

I would like opinion of other.
Configuration:

  • Balboa spa with Wifi option
  • Balboa app
  • Python script to acess my spa through domoticz

Sometimes I saw that some orders are not sent to the spa. I dive into the cli python version and indeed sometimes it won't simply connect to the spa (timeout).
After several trials my feeling is that it works well if I did not connect with Balboa app before.
If I did not use Balboa app for 5-10min, it works
If I did use Balboa app before (for example to check if the command is being sent), it fails.
My feeling is that it also happens the other way around: if I send a command with my Python script and then try to connect with Balboa app in local, it fails...

So it is like the wifi module avoid concurrent access.
Does anybody has got the same feeling?

Blower not working with Balboa Verona Alpha spa.

After setting up your spa bridge I noticed that the blower command does not work with my spa. (Balboa Verona Alpha) This spa only has one speed for the blower and the pumps. (On or Off)

I noticed that the blower topic is configured as an integer value, but the value that was sent by the bridge was "false". I did take a look at the code and found a workarround that works for me:

In bin/bwa_mqtt_bridge I changed the line
publish_attribute("spa/blower", message.blower) if @bwa.last_control_configuration2&.blower.to_i != 0
to
publish_attribute("spa/blower", message.blower ? 1 : 0) if @bwa.last_control_configuration2&.blower.to_i != 0

And in the lib/bwa/client.rb file I change the line
times = (desired - last_status.blower) % (last_control_configuration2.blower + 1)
to
times = (desired - (last_status.blower ? 1 : 0)) % (last_control_configuration2.blower + 1)

I guess this fix only works for spa's with only one speed setting. I'm not too familiar with Ruby and this code, so I'm hoping that you can find a better solution for this.

There is also a strange behaviour with the pumps. If I set the pumps to 1 they turn on, so far so good. If I then set the pumps back to 0 nothing happens. But If I then change the value back to 1 the pumps turn off and the number automatically changes to 0. This also happens if I set the value to 2.

I guess the best solution would be to detect if the blower and pumps only support one speed and set the Homie device datatype to boolean instead of integer. Can you please take a look at this?

New java implementation

Thanks for your great documentation. I have created a quick JAVA APP to control and read the most important settings for balboa. The goal is to use that java app in homematic or other smart environments.

If you would like to you could add the link to the source to your reference projects.

https://github.com/mikes222/balboa

Regards, Mike

Unknown Messages / Partial Communication

Hello,
I need some help decoding w messages from my 2021 Sundance 780 series spa. I recognize this is not a supported main board by the balboa worldwide app but I'm not sure where else to ask this.

I successfully connected a RS485<>Ethernet converter as described here: https://github.com/jshank/bwalink. I first attempted to use the this app as well as pybalboa unmodified with out success. I turned to manually adapting pybalboa to print raw data to try to identify the issue

I demonstrated I think I have my hardware working as expected by succeeding at implementing the channel assignment sequence:

  1. Wait for New Client Clear to Send (Confirmed at 1hz for my board)
  2. Sent Channel Assignment Request
  3. Received Channel Assignment Response (Channel assigned started at 0x20 and incrementing by 1 each time)
  4. Sent Channel Assignment Ack
  5. Main board began to send Clear To Send (CTS) Messages for the newly assigned channel
  6. Returned Nothing to Send response and see main board moving to next channel upon receipt.
  7. Repeated steps above and received channel assignments incremented by 1 each time
    

With some confidence I then tired to send the following settings request messages (Type 0x22) after a CTS message in-place of a Nothing To Send message, with either codes 0, or 4 (Configuration, Information). However I observed no response to these messages. I also tried hard coding channel 0x0A (Wifi) without success.

Further, I am not receiving the known Status Update (0x13) message, nor was I able to capture the control panel sending any known message types by pressing controls. Instead I only receive a 3 different types of message at > 1hz rates.

Channel : Message Type: Number of Fields
0x10 : 0xCC : 2
0xFF : 0xCA : 29
0xFF : 0xC4 : 33

Example messages:
Ch: 0x10 Type: 0xCC Len 7 - Data ['B1', '51']
Ch: 0xFF Type: 0xC4 Len 38 - Data ['35', '21', '31', '30', '3F', '3F', 'A6', 'C6', '3E', '3A', '5C', '3A', '07', '26', 'C5', '26', '47', '22', '20', '36', '2F', '2E', '01', '2C', 'B0', '2A', '29', '7C', '72', '16', '15', '14', '13']
Ch: 0x10 Type: 0xCC Len 7 - Data ['A4', '44']
Ch: 0xFF Type: 0xC4 Len 38 - Data ['C7', 'D3', 'C3', 'C2', 'CD', 'CD', '54', '34', 'CC', 'C8', 'AE', 'C8', 'F5', 'D4', '37', 'D4', 'B5', 'D0', 'D2', 'C4', 'DD', 'DC', 'F3', 'DE', '42', 'D8', 'DB', '8E', '80', 'E4', 'E7', 'E6', 'E1']
Ch: 0xFF Type: 0xCA Len 34 - Data ['C3', '7F', '83', '82', '8D', '8C', '8F', 'B2', '89', '88', '8B', '75', '95', '94', '97', '96', '91', '90', '93', '92', '9D', '9C', '9F', '9E', '99', '98', '9B', '9A', 'A5']
Ch: 0x10 Type: 0xCC Len 7 - Data ['B2', '52']
Ch: 0xFF Type: 0xC4 Len 38 - Data ['9F', '8B', '9B', '9A', '95', '95', '0C', '6C', '94', '90', 'F6', '90', 'AD', '8C', '6F', '8C', 'ED', '88', '8A', '9C', '85', '84', 'AB', '86', '1A', '80', '83', 'D6', 'D8', 'BC', 'BF', 'BE', 'B9']
Ch: 0xFF Type: 0xC4 Len 38 - Data ['39', '2D', '3D', '3C', '33', '33', 'AA', 'CA', '32', '36', '50', '36', '0B', '2A', 'C9', '2A', '4B', '2E', '2C', '3A', '23', '22', '0D', '20', 'BC', '26', '25', '70', '7E', '1A', '19', '18', '1F']
Ch: 0x10 Type: 0xCC Len 7 - Data ['1E', 'FE']
Ch: 0xFF Type: 0xC4 Len 38 - Data ['03', '17', '07', '06', '09', '09', '90', 'F0', '08', '0C', '6A', '0C', '31', '10', 'F3', '10', '71', '14', '16', '00', '19', '18', '37', '1A', '86', '1C', '1F', '4A', '44', '20', '23', '22', '25']
Ch: 0x10 Type: 0xCC Len 7 - Data ['DF', '3F']

My observations are:

  1. The lower nibble of message type 0xCC is always identical for both data bytes.
  2. For both message types 0xCA and 0xC4: For a given first data byte, most messages received will be exactly identical. For example if the first data byte of message type 0xC4 is 0x39, then for most messages the rest of the data will be '2D', '3D', '3C', '33', '33', 'AA', 'CA', '32', '36', '50', '36', '0B', '2A', 'C9', '2A', '4B', '2E', '2C', '3A', '23', '22', '0D', '20', 'BC', '26', '25', '70', '7E', '1A', '19', '18', '1F'
  3. If there are differences in messages for a given message type and first data byte, there are at most 5 bytes different, typically with only one or two bits within any given byte being alerted.
    
  4. When Message of types CA or C4 contain byte values different from first observed, the difference tends to be the same for several messages before returning to its original values, with a couple of exceptions that may be indicative of the values representing a longer term trend such as possibly representing temperature.
  5. There appears to be no pattern or correlation between the message types, or from message to message that I see so far (ex, no incrementing counters, no consistency in order).

So,
I’m hoping someone might be able to point me in the right direction to try to narrow in further. Any ideas?

Modifying filter-cycles

I try to enhance the code to be able to modify the filter cycles.
The easy part was to read out the data and send it to the MQTT broker.
But I haven't understood yet the mechanism to send modified date back to the bwa.
Could you please give me a short explanation how this is working?
Thanks.

Use Putty to see this data?

Non programmer here...just a home automation hack.

I am trying to use Putty to see this data stream (to help me better understand the document protocol).
Using Putty I can connect my device to IP 192.168.0.65, port 4257.

I can see an improperly translated data streaming spewing out......my question is, what is the proper character encoding?
I am using the "telnet" (which is TCP ) setting in putty, but specifying port 4257.

In the translation section of putty, I cannot find a selection that makes the data stream look readable. Ideas?

Unable to turn off pumps

I've lost the ability to turn pumps back off. It looks like bwa is crashing without error (logging set to debug). It seems to be related to the switch to pumps as true false instead of 0,1,2.

MQTT Logs

homie/bwa/$homie 4.0.0
homie/bwa/$name BWA Link
homie/bwa/$state ready
homie/bwa/$nodes spa,filter-cycle1,filter-cycle2
homie/bwa/spa/$name Hot Tub
homie/bwa/spa/$type CL501X1
homie/bwa/spa/$properties hold,priming,heating-mode,temperature-scale,twenty-four-hour-time,heating,temperature-range,current-temperature,target-temperature,circulation-pump,pump1,pump2,pump3,light1
homie/bwa/spa/priming false
homie/bwa/spa/priming/$name Priming
homie/bwa/spa/priming/$datatype boolean
homie/bwa/spa/heating false
homie/bwa/spa/heating/$name Heating
homie/bwa/spa/heating/$datatype boolean
homie/bwa/spa/pump1 true
homie/bwa/spa/pump1/$name Pump 1
homie/bwa/spa/pump1/$datatype boolean
homie/bwa/spa/pump1/$settable true
homie/bwa/spa/pump2 false
homie/bwa/spa/pump2/$name Pump 2
homie/bwa/spa/pump2/$datatype boolean
homie/bwa/spa/pump2/$settable true
homie/bwa/spa/pump3 false
homie/bwa/spa/pump3/$name Pump 3
homie/bwa/spa/pump3/$datatype boolean
homie/bwa/spa/pump3/$settable true
homie/bwa/spa/light1 false
homie/bwa/spa/light1/$name Lights
homie/bwa/spa/light1/$datatype boolean
homie/bwa/spa/light1/$settable true
homie/bwa/spa/hold false
homie/bwa/spa/hold/$name Hold
homie/bwa/spa/hold/$datatype boolean
homie/bwa/spa/hold/$settable true
homie/bwa/spa/heating-mode ready
homie/bwa/spa/heating-mode/$name Heating Mode
homie/bwa/spa/heating-mode/$datatype enum
homie/bwa/spa/heating-mode/$format ready,rest,ready_in_rest
homie/bwa/spa/heating-mode/$settable true
homie/bwa/spa/temperature-scale fahrenheit
homie/bwa/spa/temperature-scale/$name Temperature Scale
homie/bwa/spa/temperature-scale/$datatype enum
homie/bwa/spa/temperature-scale/$format fahrenheit,celsius
homie/bwa/spa/temperature-scale/$settable true
homie/bwa/spa/twenty-four-hour-time false
homie/bwa/spa/twenty-four-hour-time/$name 24 Hour Time
homie/bwa/spa/twenty-four-hour-time/$datatype boolean
homie/bwa/spa/twenty-four-hour-time/$settable true
homie/bwa/spa/temperature-range high
homie/bwa/spa/temperature-range/$name Temperature Range
homie/bwa/spa/temperature-range/$datatype enum
homie/bwa/spa/temperature-range/$format high,low
homie/bwa/spa/temperature-range/$settable true
homie/bwa/spa/current-temperature 99
homie/bwa/spa/current-temperature/$name Current Water Temperature
homie/bwa/spa/current-temperature/$datatype float
homie/bwa/spa/current-temperature/$format 32:108
homie/bwa/spa/current-temperature/$unit °F
homie/bwa/spa/target-temperature 99
homie/bwa/spa/target-temperature/$name Target Water Temperature
homie/bwa/spa/target-temperature/$datatype float
homie/bwa/spa/target-temperature/$format 50:106
homie/bwa/spa/target-temperature/$settable true
homie/bwa/spa/target-temperature/$unit °F
homie/bwa/spa/circulation-pump true
homie/bwa/spa/circulation-pump/$name Circulation Pump Running
homie/bwa/spa/circulation-pump/$datatype boolean
homie/bwa/filter-cycle1/$name Filter Cycle 1
homie/bwa/filter-cycle1/$type Filter Cycle
homie/bwa/filter-cycle1/$properties running,start-hour,start-minute,duration
homie/bwa/filter-cycle1/running false
homie/bwa/filter-cycle1/running/$name Running
homie/bwa/filter-cycle1/running/$datatype boolean
homie/bwa/filter-cycle1/start-hour 13
homie/bwa/filter-cycle1/start-hour/$name Start Hour
homie/bwa/filter-cycle1/start-hour/$datatype integer
homie/bwa/filter-cycle1/start-hour/$format 0:23
homie/bwa/filter-cycle1/start-hour/$settable true
homie/bwa/filter-cycle1/start-hour/$unit hours
homie/bwa/filter-cycle1/start-minute 0
homie/bwa/filter-cycle1/start-minute/$name Start Minute
homie/bwa/filter-cycle1/start-minute/$datatype integer
homie/bwa/filter-cycle1/start-minute/$format 0:59
homie/bwa/filter-cycle1/start-minute/$settable true
homie/bwa/filter-cycle1/start-minute/$unit minutes
homie/bwa/filter-cycle1/duration 180
homie/bwa/filter-cycle1/duration/$name Duration
homie/bwa/filter-cycle1/duration/$datatype integer
homie/bwa/filter-cycle1/duration/$format 0:1439
homie/bwa/filter-cycle1/duration/$settable true
homie/bwa/filter-cycle1/duration/$unit minutes
homie/bwa/filter-cycle2/$name Filter Cycle 2
homie/bwa/filter-cycle2/$type Filter Cycle
homie/bwa/filter-cycle2/$properties running,start-hour,start-minute,duration,enabled
homie/bwa/filter-cycle2/running false
homie/bwa/filter-cycle2/running/$name Running
homie/bwa/filter-cycle2/running/$datatype boolean
homie/bwa/filter-cycle2/start-hour 8
homie/bwa/filter-cycle2/start-hour/$name Start Hour
homie/bwa/filter-cycle2/start-hour/$datatype integer
homie/bwa/filter-cycle2/start-hour/$format 0:23
homie/bwa/filter-cycle2/start-hour/$settable true
homie/bwa/filter-cycle2/start-hour/$unit hours
homie/bwa/filter-cycle2/start-minute 0
homie/bwa/filter-cycle2/start-minute/$name Start Minute
homie/bwa/filter-cycle2/start-minute/$datatype integer
homie/bwa/filter-cycle2/start-minute/$format 0:59
homie/bwa/filter-cycle2/start-minute/$settable true
homie/bwa/filter-cycle2/start-minute/$unit minutes
homie/bwa/filter-cycle2/duration 15
homie/bwa/filter-cycle2/duration/$name Duration
homie/bwa/filter-cycle2/duration/$datatype integer
homie/bwa/filter-cycle2/duration/$format 0:1439
homie/bwa/filter-cycle2/duration/$settable true
homie/bwa/filter-cycle2/duration/$unit minutes
homie/bwa/filter-cycle2/enabled/$name Enabled
homie/bwa/filter-cycle2/enabled/$datatype boolean
homie/bwa/filter-cycle2/enabled/$settable true
homie/bwa/spa/pump1/set false
homie/bwa/$state lost
homie/bwa/$state init
homie/bwa/$state ready
homie/bwa/spa/pump1/set false
homie/bwa/$state lost
homie/bwa/$state init
homie/bwa/$state ready

BWA Logs
The same 2 lines repeat forever when controlling the pumps.

D,  read: 7e 07 10 bf 11 00 00 3e 7e
D, from spa: #<BWA::Messages::ToggleItem 0>

Chromazon3 not working

I can't toggle the lights. It is probably because the lights are part of the chromazon3 system.
Is there a way if controlling them?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.