Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. General Discussion
  3. Help with script for controlling Wemo bulbs.

Help with script for controlling Wemo bulbs.

Scheduled Pinned Locked Moved General Discussion
8 Posts 3 Posters 3.6k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Cliff KarlssonC Offline
    Cliff KarlssonC Offline
    Cliff Karlsson
    wrote on last edited by
    #1

    I found this script that is supposed to be able to control all Wemo prodcuts including the Wemo bulbs but I can't quite get it to work. I can use LINK LIST and get all connected devices, I can also use GETSTATE and gets the correct state of my bulbs. But I can't toggle or turn any of them on or off. I get "INFO: Connected to 192.168.0.200:49153" -in response and nothing happens.

    Does anyone know how to fix this?
    (I had to replace all "==" with "=" to get the script to work)

    #!/bin/sh
    #
    # WeMo Control Script
    # 
    # Original author: rich@netmagi.com
    #
    # Modified 7/13/2014 by Donald Burr
    # email: <dburr@DonaldBurr.com>
    # web: <http://DonaldBurr.com>
    #
    # Modified 05/12/2014 by Jack Lawry
    # email: <jack@jacklawry.co.uk>
    # web: <http://www.jacklawry.co.uk>
    #
    # Modified 31/05/2015 by Wagner Oliveira
    # * Fixed Port parameter and added Support for WeMo Link LED Bulbs
    # email: <wbbo@hotmail.com>
    # web: <http://guino.home.insightbb.com>
    #
    # Usage: wemo IP_ADDRESS[:PORT] ON|OFF|TOGGLE|GETSTATE|GETSIGNALSTRENGTH|GETFRIENDLYNAME
    #    or: wemo IP_ADDRESS[:PORT] LINK [LIST|NAME ON [0-255]|OFF]
    
    if [ "$1" = "" ]; then
        echo "Usage: wemo IP_ADDRESS[:PORT] ON|OFF|TOGGLE|GETSTATE|GETSIGNALSTRENGTH|GETFRIENDLYNAME"
        echo "   or: wemo IP_ADDRESS[:PORT] LINK [LIST|NAME ON [0-255]|OFF]"
       exit 1
    fi
    
    IP=$1
    CMD=`echo $2 | tr '[a-z]' '[A-Z]'`
    
    PORT=0
    IPHASPORT=$(echo $IP | grep :)
    
    if [ "$IPHASPORT" == "" ]; then
    
       for PTEST in 49154 49152 49153 49155
       do
          PORTTEST=$(curl -s -m 3 $IP:$PTEST | grep "404")
          if [ "$PORTTEST" != "" ]; then
             PORT=$PTEST
             break
          fi
        done
    
       if [ $PORT = 0 ]; then
          echo "Cannot find a port"
          exit
       fi
    
       echo "INFO: Connected to" $1":"$PORT
    
    else
    
        PORT=$(echo $IP | awk -F : '{print $2}')
       IP=$(echo $IP | awk -F : '{print $1}')
       echo "Using provided port: $PORT"
    
    fi
    
    if [ "$CMD" = "GETSTATE" ]; then 
       STATE=`curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#GetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>1</BinaryState></u:GetBinaryState></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 | 
       grep "<BinaryState"  | cut -d">" -f2 | cut -d "<" -f1 | sed 's/0/OFF/g' | sed 's/1/ON/g'`
       echo $STATE
       if [ "$STATE" = "OFF" ]; then
          exit 0
       elif [ "$STATE" = "ON" ]; then
          exit 1
       else
          exit 2
       fi
    elif [ "$CMD" = "TOGGLE" ]; then 
       STATE=`curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#GetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>1</BinaryState></u:GetBinaryState></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 | 
       grep "<BinaryState"  | cut -d">" -f2 | cut -d "<" -f1 | sed 's/0/OFF/g' | sed 's/1/ON/g'`
       echo $STATE
       if [ "$STATE" = "OFF" ]; then
          # echo "ITS OFF - TURNING ON"
          curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#SetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>1</BinaryState></u:SetBinaryState></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 |
          grep "<BinaryState"  | cut -d">" -f2 | cut -d "<" -f1
          exit
       elif [ "$STATE" = "ON" ]; then
          # echo "ITS ON - TURNING OFF"
          curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#SetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 |
          grep "<BinaryState"  | cut -d">" -f2 | cut -d "<" -f1
          exit
       else
          # echo "UNKNOWN"
          exit
       fi
    elif [ "$CMD" = "ON" ]; then
       curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#SetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>1</BinaryState></u:SetBinaryState></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 |
       grep "<BinaryState"  | cut -d">" -f2 | cut -d "<" -f1
    elif [ "$CMD" = "OFF" ]; then
       curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#SetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 |
       grep "<BinaryState"  | cut -d">" -f2 | cut -d "<" -f1
    elif [ "$CMD" = "GETSIGNALSTRENGTH" ]; then
       curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#GetSignalStrength\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetSignalStrength xmlns:u="urn:Belkin:service:basicevent:1"><GetSignalStrength>0</GetSignalStrength></u:GetSignalStrength></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 |
       grep "<SignalStrength"  | cut -d">" -f2 | cut -d "<" -f1
    elif [ "$CMD" = "GETFRIENDLYNAME" ]; then
       curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#GetFriendlyName\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetFriendlyName xmlns:u="urn:Belkin:service:basicevent:1"><FriendlyName></FriendlyName></u:GetFriendlyName></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/basicevent1 |
       grep "<FriendlyName"  | cut -d">" -f2 | cut -d "<" -f1
    elif [ "$CMD" = "LINK" ]; then
       # Get Unique Device Number and List of Devices/IDs
       UDN=$(wget -qO- http://$IP:$PORT/setup.xml | grep UDN | awk -F'>|<' '{print $3}')
       DEVS=$(curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:bridge:1#GetEndDevices\"" --data '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetEndDevices xmlns:u="urn:Belkin:service:bridge:1"><ReqListType>SCAN_LIST</ReqListType><DevUDN>'$UDN'</DevUDN></u:GetEndDevices></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/bridge1 | awk '{ gsub("&gt;", "\n"); print }')
       if [ "$3" == "LIST" ]; then
          echo "$DEVS" | grep "Name" | awk -F "&" '{ print $1 }' | grep -v -e "^$"
       else
          GROUPNAMES=$(echo "$DEVS" | grep -iE '(/GroupID|/GroupName)' | awk -F "&" '{print $1}')
          BULBNAMES=$(echo "$DEVS" | grep -iE '(/FriendlyName|/DeviceID)' | awk -F "&" '{print $1}')
          ID=$(echo "$DEVS" | grep -iE '(/GroupID|/GroupName|/FriendlyName|/DeviceID)' | awk -F "&" '{print $1}' | awk 'NR%2{a=$0;next}{print $0 "@"a;}' | grep "$3" | awk -F @ '{print $2}')
          if [ "$ID" == "" ]; then
             echo "$3 was not found."
             exit 254
          fi
          ISGROUP=$(echo "$GROUPNAMES" | grep "$ID")
           if [ "$ISGROUP" != "" ]; then
             ISGROUP="YES"
          else
             ISGROUP="NO"
          fi
          if [ "$4" == "ON" ]; then
             LEVEL=255
             if [ "$5" != "" ]; then
                LEVEL=$5
             fi
             # Send ON command
             curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:bridge:1#SetDeviceStatus\"" --data '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetDeviceStatus xmlns:u="urn:Belkin:service:bridge:1"><DeviceStatusList>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;DeviceStatus&gt;&lt;DeviceID&gt;'$ID'&lt;/DeviceID&gt;&lt;CapabilityID&gt;10008&lt;/CapabilityID&gt;&lt;CapabilityValue&gt;'$LEVEL':0&lt;/CapabilityValue&gt;&lt;IsGroupAction&gt;'$ISGROUP'&lt;/IsGroupAction&gt;&lt;/DeviceStatus&gt;</DeviceStatusList></u:SetDeviceStatus></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/bridge1 > /dev/null
             UPDATESTATUS=1
          elif [ "$4" == "OFF" ]; then
             # Send OFF Command
             curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:bridge:1#SetDeviceStatus\"" --data '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetDeviceStatus xmlns:u="urn:Belkin:service:bridge:1"><DeviceStatusList>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;DeviceStatus&gt;&lt;DeviceID&gt;'$ID'&lt;/DeviceID&gt;&lt;CapabilityID&gt;10008&lt;/CapabilityID&gt;&lt;CapabilityValue&gt;0:0&lt;/CapabilityValue&gt;&lt;IsGroupAction&gt;'$ISGROUP'&lt;/IsGroupAction&gt;&lt;/DeviceStatus&gt;</DeviceStatusList></u:SetDeviceStatus></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/bridge1 > /dev/null
             UPDATESTATUS=1
          elif [ "$4" == "TOGGLE" ]; then
             # Determine if device IS ON
             ISON=$(echo "$DEVS" | grep -iE '(/GroupCapabilityValues|/GroupName|/CurrentState|/FriendlyName)' | awk -F "&" '{print $1}' | awk 'NR%2{a=$0;next}{print a","$0;}' | grep "$3" | awk -F "," '{print $2}')
             LEVEL=$(echo "$DEVS" | grep -iE '(/GroupCapabilityValues|/GroupName|/CurrentState|/FriendlyName)' | awk -F "&" '{print $1}' | awk 'NR%2{a=$0;next}{print a","$0;}' | grep "$3" | awk -F "," '{print $3}')
             # echo "ISON=$ISON LEVEL=$LEVEL"
             if [ "$ISON" == "1" ]; then
                LEVEL="0"
             fi
             # Send Command to TOGGLE
             curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:bridge:1#SetDeviceStatus\"" --data '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetDeviceStatus xmlns:u="urn:Belkin:service:bridge:1"><DeviceStatusList>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;DeviceStatus&gt;&lt;DeviceID&gt;'$ID'&lt;/DeviceID&gt;&lt;CapabilityID&gt;10008&lt;/CapabilityID&gt;&lt;CapabilityValue&gt;'$LEVEL':0&lt;/CapabilityValue&gt;&lt;IsGroupAction&gt;'$ISGROUP'&lt;/IsGroupAction&gt;&lt;/DeviceStatus&gt;</DeviceStatusList></u:SetDeviceStatus></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/bridge1 > /dev/null
             UPDATESTATUS=1
          elif [ "$4" == "GETSTATE" ]; then
             echo "$DEVS" | grep -iE '(/GroupCapabilityValues|/GroupName|/CurrentState|/FriendlyName)' | awk -F "&" '{print $1}' | awk 'NR%2{a=$0;next}{print a","$0;}' | grep "$3" | awk -F "," '{print "ON: "$2"\nLevel: "$3}'
          else
             SHOWUSAGE=1
          fi
       fi
    else
       SHOWUSAGE=1
    fi
    
    # When you switch LEDs ON/OFF you must request the device status so it will correctly report it later when you use GETSTATE
    if [ "$UPDATESTATUS" == "1" ]; then
       if [ "$ISGROUP" == "YES" ]; then
          GRPIDS=$(echo "$DEVS" | grep -iE '(/GroupID)' | awk -F "&" '{print $1}' | awk '{print}' ORS=',' | awk '{print substr($0, 0, length($0)-1)}')
          DEVIDS=$(echo "$DEVS" | grep -iE '(/DeviceID)' | awk -F "&" '{print $1}' | awk '{print}' ORS=',' | awk '{print substr($0, 0, length($0)-1)}')
          # echo "GRPIDS=$GRPIDS ** DEVIDS=$DEVIDS"
          curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:bridge:1#GetDeviceStatus\"" --data '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetDeviceStatus xmlns:u="urn:Belkin:service:bridge:1"><DeviceIDs>'$GRPIDS'</DeviceIDs></u:GetDeviceStatus></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/bridge1 > /dev/null
          curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:bridge:1#GetDeviceStatus\"" --data '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetDeviceStatus xmlns:u="urn:Belkin:service:bridge:1"><DeviceIDs>'$DEVIDS'</DeviceIDs></u:GetDeviceStatus></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/bridge1 > /dev/null
       else
          curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:bridge:1#GetDeviceStatus\"" --data '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetDeviceStatus xmlns:u="urn:Belkin:service:bridge:1"><DeviceIDs>'$ID'</DeviceIDs></u:GetDeviceStatus></s:Body></s:Envelope>' -s http://$IP:$PORT/upnp/control/bridge1 > /dev/null
       fi
    fi
    
    if [ "$SHOWUSAGE" == "1" ]; then
       echo "COMMAND NOT RECOGNIZED"
       echo ""
       echo "Usage: wemo IP_ADDRESS[:PORT] ON|OFF|TOGGLE|GETSTATE|GETSIGNALSTRENGTH|GETFRIENDLYNAME"
       echo "   or: wemo IP_ADDRESS[:PORT] LINK [LIST|NAME ON [0-255]|OFF|TOGGLE|GETSTATE]"
       exit 255
    fi```
    1 Reply Last reply
    0
    • mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by mfalkvidd
      #2
      (I had to replace all "==" with "=" to get the script to work)
      

      That should really break the sketch.

      == means test
      = means assign/change

      So a==5 means test if a is 5.
      a=5 means set a to 5.

      What prompted you to try replacing?

      1 Reply Last reply
      0
      • Cliff KarlssonC Offline
        Cliff KarlssonC Offline
        Cliff Karlsson
        wrote on last edited by Cliff Karlsson
        #3

        The person who wrote the script on another forum replied earlier to someone else who had problems:

        You should try to download it from this link: http://guino.home.insightbb.com/wemo_control.sh
        The command line format should be: ./wemo_control IP_ADDRESS[:PORT] LINK [LIST|NAME ON [0-255]|OFF]
        But even with your incorrect parameters the errors you're getting suggest some sort of file formatting issue.
        
        Here is what it should look like:
        root@DD-WRT:/jffs/cgi# ./wemo_control.sh 10.10.10.6 LINK LIST
        INFO: Connected to 10.10.10.6:49154
        Master
        Lightbulb 1
        Lightbulb 3
        Lightbulb 4
        Lightbulb 2
        root@DD-WRT:/jffs/cgi# ./wemo_control.sh 10.10.10.6 LINK Master GETSTATE
        INFO: Connected to 10.10.10.6:49154
        ON: 0
        Level: 1:0
        
        Other than that maybe some sort of difference in the OS -- I tested the script on Mageia 4 and on my DD-WRT router (3.10) without any issues.
        Be sure to make the script executable (chmod 777 wemo_control.sh) and execute it with ./wemo_control <params>
        Last resort would be trying to replacing any == in an "if" line (all lines you listed with an error) for just = (a quick search online reveals that some sh versions don't like the ==)
        Let me know if that works...
        
        
        1 Reply Last reply
        0
        • Cliff KarlssonC Offline
          Cliff KarlssonC Offline
          Cliff Karlsson
          wrote on last edited by
          #4

          If I run the script unmodified I get:

          pi@raspberrypi ~ $ ./wemo_control.sh 192.168.0.200 LINK LIST
          ./wemo_control.sh: 35: [: unexpected operator
          Using provided port:
          ./wemo_control.sh: 106: [: LIST: unexpected operator
          ./wemo_control.sh: 112: [: unexpected operator
          ./wemo_control.sh: 122: [: unexpected operator
          ./wemo_control.sh: 130: [: unexpected operator
          ./wemo_control.sh: 134: [: unexpected operator
          ./wemo_control.sh: 145: [: unexpected operator
          ./wemo_control.sh: 156: [: unexpected operator
          ./wemo_control.sh: 168: [: 1: unexpected operator
          
          1 Reply Last reply
          0
          • mfalkviddM Offline
            mfalkviddM Offline
            mfalkvidd
            Mod
            wrote on last edited by
            #5

            Sorry. I didn't realize it was a shell script (was reading on my phone). Using = is correct, that's how strings are compared in sh shell scripts. My bad.

            1 Reply Last reply
            0
            • D Offline
              D Offline
              drock1985
              wrote on last edited by
              #6

              Hi,

              From one Wemo switch user to another, the best luck I had to control them from shell was using Ouimeaux. I would try that and see if that works for you over the .sh scripts.

              My Projects
              2 Door Chime Sensor
              Washing Machine Monitor

              Cliff KarlssonC 1 Reply Last reply
              0
              • D drock1985

                Hi,

                From one Wemo switch user to another, the best luck I had to control them from shell was using Ouimeaux. I would try that and see if that works for you over the .sh scripts.

                Cliff KarlssonC Offline
                Cliff KarlssonC Offline
                Cliff Karlsson
                wrote on last edited by
                #7

                @drock1985
                I have tried Ouimeaux but it was to slow for my liking. I have placed an arduino behind the a wallswitch that controls a wemo led that is alway powered. When I last tried Ouimeaux the reactiontime was around 5 seconds and my kids and wife would have flicked the switch 5-6 times before any reactions was seen.

                I then moved over to installing wemo manager + server on an android witch makes the reaction time go down to about 1-2 sec. But I must say that I would want the reaction time to be under 1 sec.

                1 Reply Last reply
                1
                • D Offline
                  D Offline
                  drock1985
                  wrote on last edited by
                  #8

                  @Cliff-Karlsson

                  I'm not too sure you will get that reaction time from anything but the Wemo app itself, or the mechanical switch on the Wemo. The problem I found out with the Wemo is, it will randomize what port it connects to in a certain range. I can't remember the exact range (maybe 49152-49156?), but I think it's stated in the .sh script. Therefore, the script or whatever program that is doing the switching needs to first find the proper IP/Port, then actually run the command.

                  The one option you may have is setting a static IP to each Wemo switch, then sending it more direct.

                  To be all honest, this is why I switched from Wemo over to MySensors and the Relay sketch. Works much better than the Wemo's do, and haven't had a chance to buy and test any Zigbee wall switches yet.

                  My Projects
                  2 Door Chime Sensor
                  Washing Machine Monitor

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  20

                  Online

                  11.7k

                  Users

                  11.2k

                  Topics

                  113.1k

                  Posts


                  Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • MySensors
                  • OpenHardware.io
                  • Categories
                  • Recent
                  • Tags
                  • Popular