diff --git a/shroom_internals/sql.go b/shroom_internals/sql.go
index 7499393..0cad09f 100644
--- a/shroom_internals/sql.go
+++ b/shroom_internals/sql.go
@@ -15,6 +15,7 @@ func CreateTable(db *sql.DB) error {
 		humidity REAL,
 		temperature REAL,
 		humidifier_volts REAL
+		humidifier_volts2 REAL
 	);`
 
 	_, err := db.Exec(create_table)
@@ -22,14 +23,15 @@ func CreateTable(db *sql.DB) error {
 }
 
 type Datapoint struct {
-	Time            uint64  `json:"t"`
-	Temperature     float32 `json:"temp"`
-	Humidity        float32 `json:"hum"`
-	HumidifierVolts float32 `json:"hv"`
+	Time             uint64  `json:"t"`
+	Temperature      float32 `json:"temp"`
+	Humidity         float32 `json:"hum"`
+	HumidifierVolts  float32 `json:"hv"`
+	HumidifierVolts2 float32 `json:"hv2"`
 }
 
 func QueryHistory(db *sql.DB, start int64) ([]Datapoint, error) {
-	query := "SELECT time, temperature, humidity, humidifier_volts FROM shrooms WHERE time > ?"
+	query := "SELECT time, temperature, humidity, humidifier_volts, humidifier_volts2 FROM shrooms WHERE time > ?"
 	rows, err := db.Query(query, start)
 	if err != nil {
 		return nil, fmt.Errorf("sql error: %w", err)
@@ -38,7 +40,7 @@ func QueryHistory(db *sql.DB, start int64) ([]Datapoint, error) {
 	results := make([]Datapoint, 0)
 	for rows.Next() {
 		d := Datapoint{}
-		err = rows.Scan(&d.Time, &d.Temperature, &d.Humidity, &d.HumidifierVolts)
+		err = rows.Scan(&d.Time, &d.Temperature, &d.Humidity, &d.HumidifierVolts, &d.HumidifierVolts2)
 		if err != nil {
 			return nil, fmt.Errorf("sql scan error: %w", err)
 		}
@@ -86,8 +88,8 @@ func OldestTime(db *sql.DB) (int64, error) {
 }
 
 func InsertRow(db *sql.DB, s *DataJson) error {
-	_, err := db.Exec("INSERT INTO shrooms (time, temperature, humidity, humidifier_volts) VALUES (?, ?, ?, ?)",
-		*s.Time, *s.Temperature, *s.Humidity, *s.HumidifierVolts)
+	_, err := db.Exec("INSERT INTO shrooms (time, temperature, humidity, humidifier_volts, humidifier_volts2) VALUES (?, ?, ?, ?)",
+		*s.Time, *s.Temperature, *s.Humidity, *s.HumidifierVolts, *s.HumidifierVolts2)
 	return err
 }
 
diff --git a/shroom_internals/tcp_server.go b/shroom_internals/tcp_server.go
index 5840472..05adf1e 100644
--- a/shroom_internals/tcp_server.go
+++ b/shroom_internals/tcp_server.go
@@ -23,22 +23,25 @@ func newlinePos(s []byte) int {
 
 type StatusJson struct {
 	HumOn      *bool `json:"humidifier"`
+	Hum2On     *bool `json:"humidifier2"`
 	ManualMode *bool `json:"manual_mode"`
 }
 
 type DataJson struct {
-	Time            *uint64  `json:"time"`
-	Temperature     *float32 `json:"temp"`
-	Humidity        *float32 `json:"hum"`
-	HumidifierVolts *float32 `json:"hv"`
+	Time             *uint64  `json:"time"`
+	Temperature      *float32 `json:"temp"`
+	Humidity         *float32 `json:"hum"`
+	HumidifierVolts  *float32 `json:"hv"`
+	HumidifierVolts2 *float32 `json:"hv2"`
 }
 
 func (dj *DataJson) ToDatapoint() *Datapoint {
 	return &Datapoint{
-		Time:            *dj.Time,
-		Temperature:     *dj.Temperature,
-		Humidity:        *dj.Humidity,
-		HumidifierVolts: *dj.HumidifierVolts,
+		Time:             *dj.Time,
+		Temperature:      *dj.Temperature,
+		Humidity:         *dj.Humidity,
+		HumidifierVolts:  *dj.HumidifierVolts,
+		HumidifierVolts2: *dj.HumidifierVolts2,
 	}
 }
 
@@ -51,6 +54,7 @@ type ShroomPacket struct {
 type ShroomState struct {
 	sync.RWMutex
 	HumidifierOn   bool
+	Humidifier2On  bool
 	ManualMode     bool
 	NumConnections int
 
@@ -169,7 +173,7 @@ func parseMsg(line []byte, db *sql.DB, state *ShroomState) {
 	}
 	//log.Println("received data ", data)
 	if packet.Data != nil {
-		if packet.Data.Time != nil && packet.Data.Temperature != nil && packet.Data.Humidity != nil && packet.Data.HumidifierVolts != nil {
+		if packet.Data.Time != nil && packet.Data.Temperature != nil && packet.Data.Humidity != nil && packet.Data.HumidifierVolts != nil && packet.Data.HumidifierVolts2 != nil {
 			err = InsertRow(db, packet.Data)
 			state.Cache.Add(packet.Data.ToDatapoint())
 			if err != nil {
@@ -184,6 +188,9 @@ func parseMsg(line []byte, db *sql.DB, state *ShroomState) {
 		if packet.Status.HumOn != nil {
 			state.HumidifierOn = *packet.Status.HumOn
 		}
+		if packet.Status.Hum2On != nil {
+			state.Humidifier2On = *packet.Status.Hum2On
+		}
 		if packet.Status.ManualMode != nil {
 			state.ManualMode = *packet.Status.ManualMode
 		}
diff --git a/shroom_server.go b/shroom_server.go
index 5d3146c..e9472a2 100644
--- a/shroom_server.go
+++ b/shroom_server.go
@@ -28,9 +28,10 @@ var auth_secret string
 var content embed.FS
 
 type statusJson struct {
-	Connected  bool `json:"connected"`
-	Humidifier bool `json:"humidifier"`
-	ManualMode bool `json:"manual_mode"`
+	Connected   bool `json:"connected"`
+	Humidifier  bool `json:"humidifier"`
+	Humidifier2 bool `json:"humidifier2"`
+	ManualMode  bool `json:"manual_mode"`
 }
 
 type adminMsg struct {
@@ -118,12 +119,14 @@ func main() {
 		state.RLock()
 		num_connections := state.NumConnections
 		humidifier := state.HumidifierOn
+		humidifier2 := state.Humidifier2On
 		manual_mode := state.ManualMode
 		state.RUnlock()
 		s := statusJson{
-			Connected:  num_connections > 0,
-			Humidifier: humidifier,
-			ManualMode: manual_mode,
+			Connected:   num_connections > 0,
+			Humidifier:  humidifier,
+			Humidifier2: humidifier2,
+			ManualMode:  manual_mode,
 		}
 		msg, err := json.Marshal(s)
 		if err != nil {