code: def write_data(self, variable_id, value, task):
          
          if variable_id not in self.variables:
              return False
  
          if not self.variables[variable_id].writeable:
              return False
  
          if self.variables[variable_id].modbusvariable.function_code_read == 3:
              # write register
              if 0 <= self.variables[variable_id].modbusvariable.address <= 65535:
  
                  if self._connect():
                      if self.variables[variable_id].get_bits_by_class() / 16 == 1:
                          # just write the value to one register
                          self.slave.write_register(self.variables[variable_id].modbusvariable.address, int(value),
                                                    unit=self._unit_id)
                      else:
                          # encode it first
                          self.slave.write_registers(self.variables[variable_id].modbusvariable.address,
                                                     list(self.variables[variable_id].encode_value(value)),
                                                     unit=self._unit_id)
                      self._disconnect()
                      return True
                  else:
                      logger.info("device with id: %d is now accessible" % self.device.pk)
                      return False
              else:
                  logger.error('Modbus Address %d out of range' % self.variables[variable_id].modbusvariable.address)
                  return False
          elif self.variables[variable_id].modbusvariable.function_code_read == 1:
              # write coil
              if 0 <= self.variables[variable_id].modbusvariable.address <= 65535:
                  if self._connect():
                      self.slave.write_coil(self.variables[variable_id].modbusvariable.address, bool(value),
                                            unit=self._unit_id)
                      self._disconnect()
                      return True
                  else:
                      logger.info("device with id: %d is now accessible" % self.device.pk)
                      return False
              else:
                  logger.error('Modbus Address %d out of range' % self.variables[variable_id].modbusvariable.address)
          else:
              logger.error('wrong type of function code %d' %
                           self.variables[variable_id].modbusvariable.function_code_read)
              return False
docs: write value to single modbus register or coil