Jump to content
View in the app

A better way to browse. Learn more.

Universal Devices Forum

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

How To: Filtrete 3m-50 wifi thermostat basic program

Featured Replies

Posted

Here is a script I have modified to retrieve data from the thermostat and send the data to variables in the ISY. First I would like to thank 87squirrels for his code for the tstat (http://forum.universal-devices.com/viewtopic.php?f=68&t=6009&p=50006&hilit=filtrete#p50006). This modified script will only retrieve data and send variable updates to ISY. It will not change set points etc. on the tstat. Those can be changed via Network Resources in the ISY itself.

 

This code works on the PogoPlug which is Linux based, so it probably will work on other similar units. It will retrieve the data from the tstat and send the updates to the ISY every two minutes. After the initial data is loaded only changes in the data will get sent to the ISY to save on resources.

 

Here is the disclaimer: I am not a programmer or coder....as such there are probably a lot of things that could be changed to improve the script. If anyone has constructive criticism or suggestions they are welcome.

 

Look thru the script for # and change the following line(s) as needed. I would suggest following the tstat API for a description of terms etc. http://central.isaroach.com/wiki/index.php/Tstat_APIs

 

#!/bin/bash

#Change this next line to your 3M-50 IP address
var_tstat="http://xxx.xxx.x.xxx/tstat"

#Change this next line Name Password to the user name and password for your ISY
var_wgt="/usr/bin/wget -q -O /dev/null --http-user=admin --http-password=admin"

#Change the IP address to your ISY IP address
var_ISY="http://xxx.xxx.x.xxx/rest/vars/set"

#This next line gets the current time provided by Pogoplug and parses it for a usuable number for ISY variables
TIME=`date | cut -c12-19`
var_hb="$(echo "$TIME" | sed "s/[^0-9]//g" | sed 's/0*//')"

STR=`/usr/bin/wget -q $var_tstat -O -`

TEMP=`echo $STR | sed -e 's/.*temp":\([0-9]*\).*/\1/'`
TMODE=`echo $STR | sed -e 's/.*tmode":\([0-9]*\).*/\1/'`
FMODE=`echo $STR | sed -e 's/.*fmode":\([0-9]*\).*/\1/'`
OVERRIDE=`echo $STR | sed -e 's/.*override":\([0-9]*\).*/\1/'`
HOLD=`echo $STR | sed -e 's/.*hold":\([0-9]*\).*/\1/'`
THEAT=`echo $STR | sed -e 's/.*t_heat":\([0-9]*\).*/\1/'`
TCOOL=`echo $STR | sed -e 's/.*t_cool":\([0-9]*\).*/\1/'`
TSTATE=`echo $STR | sed -e 's/.*tstate":\([0-9]*\).*/\1/'`
FSTATE=`echo $STR | sed -e 's/.*fstate":\([0-9]*\).*/\1/'`

#Change the following numbers to match your variable numbers in ISY. ex $var_ISY/2/160/$TEMP change 160 to match which variable you choose for Temp.
$var_wgt $var_ISY/2/160/$TEMP $var_ISY/2/161/$TMODE $var_ISY/2/162/$FMODE $var_ISY/2/163/$OVERRIDE $var_ISY/2/164/$HOLD \
$var_ISY/2/165/0 $var_ISY/2/166/0 $var_ISY/2/165/$THEAT $var_ISY/2/166/$TCOOL $var_ISY/2/167/$TSTATE \
$var_ISY/2/168/$FSTATE $var_ISY/2/169/$var_hb

#This puts the program to sleep for 2 minutes then continues on below.
sleep 120s

while true
do

TIME=`date | cut -c12-19`
data="$var_wgt "
var_hb="$(echo "$TIME" | sed "s/[^0-9]//g" | sed 's/0*//')"

TEMPOLD=$TEMP
TMODEOLD=$TMODE
FMODEOLD=$FMODE
OVERRIDEOLD=$OVERRIDE
HOLDOLD=$HOLD
THEATOLD=$THEAT
TCOOLOLD=$TCOOL
TSTATEOLD=$TSTATE
FSTATEOLD=$FSTATE

STR=`/usr/bin/wget -q $var_tstat -O -`
TEMP=`echo $STR | sed -e 's/.*temp":\([0-9]*\).*/\1/'`
TMODE=`echo $STR | sed -e 's/.*tmode":\([0-9]*\).*/\1/'`
FMODE=`echo $STR | sed -e 's/.*fmode":\([0-9]*\).*/\1/'`
OVERRIDE=`echo $STR | sed -e 's/.*override":\([0-9]*\).*/\1/'`
HOLD=`echo $STR | sed -e 's/.*hold":\([0-9]*\).*/\1/'`
THEAT=`echo $STR | sed -e 's/.*t_heat":\([0-9]*\).*/\1/'`
TCOOL=`echo $STR | sed -e 's/.*t_cool":\([0-9]*\).*/\1/'`
TSTATE=`echo $STR | sed -e 's/.*tstate":\([0-9]*\).*/\1/'`
FSTATE=`echo $STR | sed -e 's/.*fstate":\([0-9]*\).*/\1/'`

#Change the numbers below like you did above to match your ISY variables.
if [ "$TEMP" != "$TEMPOLD" ]; then
data="$data $var_ISY/2/160/$TEMP"
fi
if [ "$TMODE" != "$TMODEOLD" ]; then
data="$data $var_ISY/2/161/$TMODE"
fi
if [ "$FMODE" != "$FMODEOLD" ]; then
data="$data $var_ISY/2/162/$FMODE"
fi
if [ "$OVERRIDE" != "$OVERRIDEOLD" ]; then
data="$data $var_ISY/2/163/$OVERRIDE"
fi
if [ "$HOLD" != "$HOLDOLD" ]; then
data="$data $var_ISY/2/164/$HOLD"
fi
if [[ "$STR" =~ "t_heat" ]] && [[ "$THEAT" != "$THEATOLD" ]]; then
data="$data $var_ISY/2/165/$THEAT $var_ISY/2/166/0"
fi
if [[ "$STR" =~ "t_cool" ]] && [[ "$TCOOL" != "$TCOOLOLD" ]]; then
data="$data $var_ISY/2/166/$TCOOL $var_ISY/2/165/0"
fi
if [ "$TSTATE" != "$TSTATEOLD" ]; then
data="$data $var_ISY/2/167/$TSTATE"
fi
if [ "$FSTATE" != "$FSTATEOLD" ]; then
data="$data $var_ISY/2/168/$FSTATE"
fi
data="$data $var_ISY/2/169/$var_hb"

$data

sleep 120s
done

 

Good luck!

Tim

  • 2 months later...

I would love to add some reasonably priced automated thermostats and this seems like a great way to do it.

 

I just ordered a dd-wrt router to experiment with the Mac id proximity detection discussed in other threads, but haven't had the chance to play with the scipting on it yet. Can anyone tell me if this script can be implemented by a dd-wrt router (instead of the pogo plug)?

Thanks.

Guest
This topic is now closed to further replies.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.