Herpstat Spyderweb Sensors

I recently setup my Spyder Robotics Herpstat 2 Spyderweb thermostat that I use to maintain my Leopard Gecko enclosure temperature. The Spyderweb version of the Herpstat connects to the network via Wi-Fi and allows you to expose a JSON endpoint to collect data via the /RAWSTATUS endpoint

Enabling /RAWSTATUS page

  • Navigate to your Herpstat IP address in a browser
  • Enter the admin password (or complete the setup wizard)
  • Go to the Admin section
  • Check the box for “Show Advanced Status Integration Options”
  • Check the newly available “Enable /RAWSTATUS Page” checkbox
  • Save

Home Assistant Configuration

I thought it might be helpful to share my rest configuration since it is a bit tedious to type out the entire thing. Feel free to let me know if there is a better or more simple way of setting this up. I am using Fahrenheit, if you are using Celsius you’ll need to change the unit_of_measurement entries on the probe readings.

Also, you will want to configure your herpstat with a static IP address so that homeassistant can reliably get information from it. I set this up on my network by setting a static address for the Herpstat on my DHCP controller.

Add the following to your configuration.yaml

rest:
  - resource: "http://{YOUR_HERPSTAT_IP_HERE}/RAWSTATUS"
    scan_interval: 60
    sensor:
     #System properies
      - name: "Herpstat MAC"
        value_template: "{{ value_json['system']['mac'] }}"
      - name: "Herpstat Nickname"
        value_template: "{{ value_json['system']['nickname'] }}"
      - name: "Herpstat IP"
        value_template: "{{ value_json['system']['ip'] }}"
      - name: "Herpstat Firmware"
        value_template: "{{ value_json['system']['firmware'] }}"
      - name: "Herpstat Number of Outputs"
        value_template: "{{ value_json['system']['numberofoutputs'] }}"
      - name: "Herpstat Power Resets"
        value_template: "{{ value_json['system']['powerresets'] }}"
      - name: "Herpstat Internal Temperature"
        value_template: "{{ value_json['system']['internaltemp'] }}"
        device_class: "temperature"
        unit_of_measurement: "°F"
      - name: "Herpstat Internal Temp Max"
        value_template: "{{ value_json['system']['internaltempmax'] }}"
        device_class: "temperature"
        unit_of_measurement: "°F"
      - name: "Herpstat Safety Relay"
        value_template: "{{ value_json['system']['safetyrelay'] }}"

     #Output 1 properties
      - name: "Herpstat Output 1 Nickname"
        value_template: "{{ value_json['output1']['outputnickname'] }}"
      - name: "Herpstat Output 1 Mode"
        value_template: "{{ value_json['output1']['outputmode'] }}"
      - name: "Herpstat Output 1 Probe Temperature"
        value_template: "{{ value_json['output1']['probereadingTEMP'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 1 Current Setting"
        value_template: "{{ value_json['output1']['currentsetting'] }}"
        device_class: "temperature"
        unit_of_measurement: "°F"
      - name: "Herpstat Output 1 Ramping"
        value_template: "{{ value_json['output1']['ramping'] }}"
      - name: "Herpstat Output 1 Ramp End"
        value_template: "{{ value_json['output1']['endoframpsetting'] }}"
        device_class: "temperature"
        unit_of_measurement: "°F"
      - name: "Herpstat Output 1 Probe Max Reading"
        value_template: "{{ value_json['output1']['probereadingTEMPMAX'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 1 Probe Min Reading"
        value_template: "{{ value_json['output1']['probereadingTEMPMIN'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 1 Relative Humidity"
        value_template: "{{ value_json['output1']['probereadingRH'] }}"
        device_class: "humidity"
        unit_of_measurement: "%"
      - name: "Herpstat Output 1 Relative Humidity Max Reading"
        value_template: "{{ value_json['output1']['probereadingRHMAX'] }}"
        device_class: "humidity"
        unit_of_measurement: "%"
      - name: "Herpstat Output 1 Relative Humidity Min Reading"
        value_template: "{{ value_json['output1']['probereadingRHMIN'] }}"
      - name: "Herpstat Output 1 Power Output"
        value_template: "{{ value_json['output1']['poweroutput'] }}"
        unit_of_measurement: "%"
      - name: "Herpstat Output 1 Power Output Limit"
        value_template: "{{ value_json['output1']['poweroutputLIMIT'] }}"
      - name: "Herpstat Output 1 High/Low Alarm Enabled"
        value_template: "{{ value_json['output1']['enablehighlowalarm'] }}"
      - name: "Herpstat Output 1 High Alarm"
        value_template: "{{ value_json['output1']['highalarm'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 1 Low Alarm"
        value_template: "{{ value_json['output1']['lowalarm'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 1 Error Code"
        value_template: "{{ value_json['output1']['errorcode'] }}"
      - name: "Herpstat Output 1 Error Code Description"
        value_template: "{{ value_json['output1']['errorcodedescription'] }}"

      #Sensor 2 properties, Omit these if you have a Herpstat 1
      - name: "Herpstat Output 2 Nickname"
        value_template: "{{ value_json['output2']['outputnickname'] }}"
      - name: "Herpstat Output 2 Mode"
        value_template: "{{ value_json['output2']['outputmode'] }}"
      - name: "Herpstat Output 2 Probe Temperature"
        value_template: "{{ value_json['output2']['probereadingTEMP'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 2 Current Setting"
        value_template: "{{ value_json['output2']['currentsetting'] }}"
        device_class: "temperature"
        unit_of_measurement: "°F"
      - name: "Herpstat Output 2 Ramping"
        value_template: "{{ value_json['output2']['ramping'] }}"
      - name: "Herpstat Output 2 Ramp End"
        value_template: "{{ value_json['output2']['endoframpsetting'] }}"
        device_class: "temperature"
        unit_of_measurement: "°F"
      - name: "Herpstat Output 2 Probe Max Reading"
        value_template: "{{ value_json['output2']['probereadingTEMPMAX'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 2 Probe Min Reading"
        value_template: "{{ value_json['output2']['probereadingTEMPMIN'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 2 Relative Humidity"
        value_template: "{{ value_json['output2']['probereadingRH'] }}"
        device_class: "humidity"
      - name: "Herpstat Output 2 Relative Humidity Max Reading"
        value_template: "{{ value_json['output2']['probereadingRHMAX'] }}"
        device_class: "humidity"
      - name: "Herpstat Output 2 Relative Humidity Min Reading"
        value_template: "{{ value_json['output2']['probereadingRHMIN'] }}"
      - name: "Herpstat Output 2 Power Output"
        value_template: "{{ value_json['output2']['poweroutput'] }}"
        unit_of_measurement: "%"
      - name: "Herpstat Output 2 Power Output Limit"
        value_template: "{{ value_json['output2']['poweroutputLIMIT'] }}"
      - name: "Herpstat Output 2 High/Low Alarm Enabled"
        value_template: "{{ value_json['output2']['enablehighlowalarm'] }}"
      - name: "Herpstat Output 2 High Alarm"
        value_template: "{{ value_json['output2']['highalarm'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 2 Low Alarm"
        value_template: "{{ value_json['output2']['lowalarm'] }}"
        unit_of_measurement: "°F"
        device_class: "temperature"
      - name: "Herpstat Output 2 Error Code"
        value_template: "{{ value_json['output2']['errorcode'] }}"
      - name: "Herpstat Output 2 Error Code Description"
        value_template: "{{ value_json['output2']['errorcodedescription'] }}"

After setting this up, you will have entities named like sensor.herpstat_output_1_probe_temperature in your entity list.

I hope this helps someone out there!

1 Like

I was literally just about to embark on this and found this post. Will save me a lot of time! Thanks!