Intertechno gateway scripts (for ITR-1500 and others)

I managed to adapt a python script written for openHAB to HA.
It allows me to control ITR-1500 Intertechno power switches with the old protocol.
Switches based on the new “self-learning” protocol are not supported.
If someone is interested i will post a tutorial on how to set it up.

Hi akappa,

Ich habe daran Interesse.
Würde gerne meine intertrchno Schalter in HA nutzen.

Gruß
Mario

Hi Mario,

It’s been a while since I made this, so maybe I’ll need more posts for complete instructions.

As a prerequisite you need the ITGW bridge and all power sockets already programmed with their remote as in User manual Intertechno IT-1500 (English - 2 pages)
That means that you should be able to control your power sockets with their remote control.

It probably works with other 433Mhz bridges too, but I don’t have any, so I can’t assure you that it works.
You also need the AppDaemon add on which you can find under settings → add on

Next you need some manual configuration.
Using an add on text editor (I use Visual Studio Code Server, but Simple Editor is also fine),
be sure to have it configured as in Configuration — AppDaemon 4.4.3 documentation

Once done, you need to add the senditgw433 app:
Under the folder appdaemon/apps create a new file called senditgw433.py and copy/paste the following code.

import adbase as ad
import appdaemon.plugins.hass.hassapi as hass
import socket
import sys

class send2ITGW433(hass.Hass):
    def initialize(self):
        #self.log("Initialize send2ITGW433")   
        self.listen_state(self.send2ITGWHUB, self.args["outlet"])
        
    def send2ITGWHUB(self, entity, attribute, old, new, kwargs):
        #self.log("event occurred for send2ITGW433")   
        
        UDP_IP		= "192.168.0.27"
        UDP_PORT	= 49880
        
        #################### Basic values ########################
        lo		= "4,"
        hi		= "12,"
        seqLo		= "4,12,4,12,"					# lo + hi + lo + hi	
        seqFl		= "4,12,12,4,"					# lo + hi + hi + lo	
        h		= "4,12,12,4,"					# = seqFl
        l		= "4,12,4,12,"					# = seqLo
        ToggleOn	= "4,12,12,4,4,12,12,4,"				# = h + h
        ToggleOff	= "4,12,12,4,4,12,4,12,"				# = h + l
        additional	= "4,12,4,12,4,12,12,4,"			# = l + h
        headITGW	= "0,0,6,11125,89,26,0,"
        tx433version	= "1,"	
        sPeedITGW	= "125,"
        #tailITGW	= "1,125,0"					# = tx433version + ',' + sPeedITGW + "0"
        tailITGW	= tx433version + sPeedITGW + "0"
        
        self.area_letter = self.args["area_letter"]
        self.outlet_id = self.args["outlet_id"]
        self.command = self.get_state(self.args["outlet"])
        
        #self.log("area_letter=%s, outlet_id=%s, self.command=%s", self.area_letter, self.outlet_id, self.command)
        
        #################### self.area_letter ########################
        if self.area_letter == "A":
        	self.area_letter = l + l + l + l
        elif self.area_letter == "B":
        	self.area_letter = h + l + l + l
        elif self.area_letter == "C":
        	self.area_letter = l + h + l + l
        elif self.area_letter == "D":
        	self.area_letter = h + h + l + l
        elif self.area_letter == "E":
        	self.area_letter = l + l + h + l
        elif self.area_letter == "F":
        	self.area_letter = h + l + h + l
        elif self.area_letter == "G":
        	self.area_letter = l + h + h + l
        elif self.area_letter == "H":
        	self.area_letter = h + h + h + l
        elif self.area_letter == "I":
        	self.area_letter = l + l + l + h
        elif self.area_letter == "J":
        	self.area_letter = h + l + l + h
        elif self.area_letter == "K":
        	self.area_letter = l + h + l + h
        elif self.area_letter == "L":
        	self.area_letter = h + h + l + h
        elif self.area_letter == "M":
        	self.area_letter = l + l + h + h
        elif self.area_letter == "N":
        	self.area_letter = h + l + h + h
        elif self.area_letter == "O":
        	self.area_letter = l + h + h + h
        elif self.area_letter == "P":
        	self.area_letter = h + h + h + h
        
        #################### self.outlet_id ########################
        if self.outlet_id == "1":
        	self.outlet_id = l + l + l + l
        elif self.outlet_id == "2":
        	self.outlet_id = h + l + l + l
        elif self.outlet_id == "3":
        	self.outlet_id = l + h + l + l
        elif self.outlet_id == "4":
        	self.outlet_id = h + h + l + l
        elif self.outlet_id == "5":
        	self.outlet_id = l + l + h + l
        elif self.outlet_id == "6":
        	self.outlet_id = h + l + h + l
        elif self.outlet_id == "7":
        	self.outlet_id = l + h + h + l
        elif self.outlet_id == "8":
        	self.outlet_id = h + h + h + l
        elif self.outlet_id == "9":
        	self.outlet_id = l + l + l + h
        elif self.outlet_id == "10":
        	self.outlet_id = h + l + l + h
        elif self.outlet_id == "11":
        	self.outlet_id = l + h + l + h
        elif self.outlet_id == "12":
        	self.outlet_id = h + h + l + h
        elif self.outlet_id == "13":
        	self.outlet_id = l + l + h + h
        elif self.outlet_id == "14":
        	self.outlet_id = h + l + h + h
        elif self.outlet_id == "15":
        	self.outlet_id = l + h + h + h 
        elif self.outlet_id == "16":
        	self.outlet_id = h + h + h + h
        
        #################### Toggle ########################
        if self.command == "on":
        	Toggle = ToggleOn
        elif self.command == "off":
        	Toggle = ToggleOff
        
        # MESSAGE = headITGW + self.area_letter + self.outlet_id + additional + on/off + tailITGW
        self.MESSAGE = headITGW + self.area_letter + self.outlet_id + additional + Toggle + tailITGW
        
        #self.log(self.MESSAGE)
        
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
        sock.sendto(self.MESSAGE.encode(), (UDP_IP, UDP_PORT))

Change the UDP_IP accordingly to the IP of your ITGW bridge.

Add the file apps.yaml (if not already present) under the same appdaemon/apps folder and copy/paste this code:

senditgw433_a1:
  module: senditgw433
  class: send2ITGW433
  outlet: "input_boolean.itgw_state_flag_a1"
  area_letter: "A"
  outlet_id: "1"
  log: senditgw433
senditgw433_a2:
  module: senditgw433
  class: send2ITGW433
  outlet: "input_boolean.itgw_state_flag_a2"
  area_letter: "A"
  outlet_id: "2"
  log: senditgw433
senditgw433_a3:
  module: senditgw433
  class: send2ITGW433
  outlet: "input_boolean.itgw_state_flag_a3"
  area_letter: "A"
  outlet_id: "3"
  log: senditgw433

That’s just an example. You need a section for each outlet you want to control (senditgw433_a1, senditgw433_a2,…)

Finally create an input_binary helper for each outlet, naming it something like itgw_state_flag_a1. The name must match the outlet parameter in the corresponding section of apps.yaml.

Restart.
Now add a button to your lovelace dashboard and bind it to a input_boolean helper.
You should be able to turn on the outlet.

1 Like

It works great! Thank you very much!

1 Like